当前位置:  开发笔记 > 运维 > 正文

加密连续/小UDP数据的最佳实践

如何解决《加密连续/小UDP数据的最佳实践》经验,为你挑选了1个好方法。

我有一个应用程序,我必须使用UDP通过网络每秒发送几个小数据.应用程序需要实时发送数据(无需等待).我想加密这些数据并确保我所做的事情尽可能安全.

由于我使用的UDP,没有办法使用SSL/TLS,所以我有,因为协议是无连接/不可靠/不受监管的每个数据包加密孤单.

现在,我使用从用户密码派生的128位密钥,AES CBC模式(PBE使用AES-CBC).我决定使用带密码的随机盐来获取128位密钥(防止对密码短语的字典攻击),当然还要使用IV(以防止对数据包进行统计分析).

不过,我很担心几件事情:每个数据包中含有少量的数据(比如一对夫妇每包的整数值),这将使得加密的数据包受到已知明文攻击(这将导致更容易破解密钥) .此外,由于加密密钥是从口令派生,这将使密钥空间的方式少(​​我知道盐可以帮助,但我通过网络发送一次盐,任何人都可以得到它).鉴于这两件事,任何人都可以嗅探并存储发送的数据,并尝试破解密钥.虽然这个过程可能需要一些时间,但一旦密钥被破解,所有存储的数据都将被解密,这对我的应用程序来说将是一个真正的问题.

所以我的问题是,使用无连接协议(UDP)发送/加密连续小数据的最佳做法是什么?我的方式是最好的方式吗?...流入?...矫枉过正?

请注意,我不是要求100%安全的解决方案,因为没有这样的事情.



1> James Reinst..:

你有几个选择.您可以使用DTLS,它是适用于数据报的TLS版本.它在RFC中指定并在openssl库中实现.您还可以使用IKE/IPsec协议并使用IPsec部分的UDP封装.通常,IPsec在操作系统级别可用.您还可以使用OpenVPN,它看起来是用于密钥交换的TLS和基于UDP的专有数据包加密协议的混合体.


@temp什么是"小数据问题"?如果您的数据包太小而无法限制熵,那么它可能会危及安全性的唯一方法就是您的服务器以一种可以向攻击者提供有关其是否已成功猜出正确值的信息的方式报告.解决方案是永远不会发出响应,向不受信任的客户端提供这种信息,直到始终积累足够的输入.这是困难还是微不足道取决于您的应用程序.Amnon的填充建议也有效; 稍微浪费一点.
推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有