通过套接字向另一个用户发送 RSA::PublicKey 的安全方法是什么?
是的,如果不担心隐私,您可以发送纯文本。接收者需要验证公钥,这意味着他们需要确保这是您的真实密钥,而不是冒名顶替的密钥。
公钥的认证是密钥分配问题,也是密码学中的一个棘手的难题。如果密钥分发问题能够得到解决,那么很多隐私问题就会消失。
有两种方法可以尝试解决密钥分发问题:信任根和信任网。信任根用于公共和私有 CA 的 PKI;而信任网则由 PGP 和朋友使用。
密钥分发问题已通过 PKI 和公共 CA 在互联网上得到了不同程度的成功“解决”。例如,参见 RFC 5280,互联网 X.509 公钥基础设施证书和证书吊销列表 (CRL) 配置文件 http://www.ietf.org/rfc/rfc5280.txt,关于它应该如何工作;并参见彼得·古特曼的工程安全 http://www.cs.auckland.ac.nz/~pgut001/pubs/book.pdf%E2%80%8E关于它在实践中如何失败(有时以惊人的方式)。
对于不使用“信任根”或 PKI 的点对点应用程序,最新趋势是 (1) 使用短身份验证字符串 (SAS) http://www.iacr.org/archive/crypto2005/36210303/36210303.pdf%E2%80%8E与初始消息,以及(2)将所有后续会话与过去的会话联系起来(本质上从第一个会话形成一个链)。在初始消息期间,接收方使用语音通过读回一个小的摘要(如公钥指纹)来验证发送方的公钥密钥(语音是一种很好的身份验证机制)。
如果您的对等应用程序无法使用 SAS 来验证公钥,那么您应该采用首次使用信任 (TOFU) 策略并实践密钥连续性。古特曼在他的书中详细介绍了安全多元化策略工程安全 http://www.cs.auckland.ac.nz/~pgut001/pubs/book.pdf%E2%80%8E.
将密钥导出到 ByteQueue 并发送字节数组
这只是演示级别的细节。您可以按照自己喜欢的任何方式对其进行编码,包括原始、十六进制、Base32 或 Base64。真正的威胁是确保您的对等方收到您发送的公钥(如ntoskrnl https://stackoverflow.com/users/2424896/ntoskrnl指出)。
还要注意隐私can成为一个令人担忧的问题,就像受压迫国家中的持不同政见者一样。持不同政见者和压迫政权并不是唯一的用例,这可能会引起人们的担忧以及。
我曾经因为泄露了一个电子邮件地址而未能通过美国联邦的审计。在本例中,电子邮件地址与密钥一起位于用户证书中。 (证书所做的就是通过“权威”签名将公钥与身份绑定在一起)。