【发布时间】:2009-10-21 16:01:15
【问题描述】:
我想使用共享密码/密钥来保护基于 TCP 的程序的通信。无需处理块大小、填充等的最简单方法是直接使用stream cipher。这样一来,明文和加密数据之间的数据量不会发生变化,而且修改也很简单。
仅使用流密码意味着没有身份验证,我一直认为/听说没有身份验证的加密不够安全,不应使用。
如果必须向流密码添加身份验证,我们将失去流密码添加的简单性,因为我们必须添加 HMAC 或使用经过身份验证的加密方法(如来自 NaCl 的crypto_secretbox),有最小消息长度,我们必须处理填充,...
你会推荐什么?在某些特定情况下只使用流密码而不进行身份验证是否安全?
【问题讨论】:
-
这有点含糊。您要保护什么,以及针对什么攻击者?关于加密的一般建议:除非您真的必须这样做,并且除非您确切知道自己在做什么,否则不要自己动手。使用标准。在您的情况下,也许您可以使用 TLS (openssl)。甚至使用 SSH 隧道,让你的 TCP 流不加密。
-
我可以推荐阅读 Cryptography for Developers 以了解有关此问题的更多信息:books.google.at/…
标签: authentication encryption stream-cipher