2016-08-28 160 views
-2

我是一个很少有加密经验的开发人员。我正在尝试在业余时间更多地了解加密技术,特别是SSL。使用私钥和公钥加密文件

说一个值得信赖的公司有一个文件(记事本),其中包含大量的个人和机密信息。假设我想让他们将这些信息发给我分析。我将如何做到这一点?

我的研究告诉我,我会:

1)创建一个自签名证书 2)生成公钥和私钥 3)发出公钥给值得信赖的公司,并保持私人密钥 4)请公司使用公钥加密信息,然后将其发送给我 5)使用私钥解密文件

这是正确的吗?我将如何做到这一点?

在这种情况下,证书应由证书颁发机构签名,因为我手动将公钥发给可信任的公司(他们知道它来自我)。

正如我所说我对这个主题相对较新。

+0

SSL/TLS不用于加密文件。它用于建立加密连接。如果您真的想要加密文件以进行存储,那么您无法使用SSL/TLS进行此操作。看来你只是简单地指公共密钥加密。如果是这样,那么是的,这是一个办法。 –

+0

请注意,您可以使用RSA加密的数据大小限制为小于密钥大小。由于参考SSL,请注意数据使用对称密钥(如AES)进行加密,并且使用非对称加密(如RSA)对密钥进行加密。这有时称为混合加密。 – zaph

+0

@Zaph,谢谢你的评论。但是,我不想成为“专家”。我只是想掌握基本知识。 – w0051977

回答

0

SSL是一种加密网络连接的协议。手动加密和解密文件并不相关。 (它也不安全,不推荐使用;应该使用TLS代替)

如果您想手动加密和解密文件,那么可以使用自签名证书,并将公钥发给公司发送文件。但是,您必须确保以无法拦截的方式为其提供公钥 - 例如将其以物理方式交给闪存驱动器,而不是通过电子邮件发送 - 否则您很容易遭到man-in-the-middle attack:某人可以拦截公钥并给公司另一个。 (如果发生这种情况,公司会在不知不觉中加密文件以供攻击者解密,然后攻击者会用公钥对文件进行重新加密并将其发送给您。)

如果您手动执行此操作并以安全的方式交付公钥,则不需要涉及证书颁发机构。证书颁发机构的目的是在证书通过不安全的通道传递时证明证书的真实性。例如,当您访问stackoverflow.com时,浏览器从Web服务器获取证书(使用公钥)。由于这个证书不是由SO员工亲自给你的,你怎么知道web服务器是真正的stackoverflow.com,而不是一个中间人攻击者拦截你的连接以劫持你的帐户?该网站的证书由证书颁发机构 - DigiCert目前 - 签署,该证书称DigiCert已证实它是真实的。您的浏览器被配置为信任来自DigiCert的签名,因为浏览器开发人员已证实该公司是值得信赖的。

PGPGPG是安全交换加密文件的好工具。他们使用基于安全交换证书的“信任网络”模式,而不是依赖证书颁发机构。