UDP数据包加密

3

如果使用ssl模块进行TCP通信,这似乎是相对简单的,但是如何通过UDP进行加密通信呢?

ssl模块仍然可以使用吗?如果可以,那么客户端和服务器需要执行哪些步骤才能像正常发送数据一样进行通信?

2个回答

4

DTLS 是TLS(也称为SSL)的衍生版本,专门用于数据报传输,如UDP。

OpenSSL 支持DTLS从0.9.8开始,使用DTLSv1_METHOD而不是SSLv23_METHODTLSv1_METHOD或类似方法。


看起来不太乐观,我现在正在研究pyOpenSSL文档,但是DTLSv1_METHOD并没有与SSLv23和TLSv1方法一起列出来。 - undefined
啊,你是对的。ChangeLog 暗示添加了 DTLS 常量,但我现在检查了源代码,DTLSv1_METHOD 并不存在。不过看起来很容易添加。[编辑] https://bugs.launchpad.net/pyopenssl/+bug/454737 - undefined
OpenSSL的DTLS实现目前看起来相当不可靠。我基于它创建了一个项目,但它遭受着无法避免的DTLS会话丢失问题。 - undefined

1

您可以使用pyCrypto或ezPyCrypto手动加密/解密数据包。


3
如何做?每个数据包都这样处理吗?这会带来很大的开销(尤其是考虑到数据报的大小限制),因为每个数据包中都包含公共部分和密钥。将工作放在更高层次上,并将结果分成多个数据包?不行,UDP不可靠,丢失/重新排序会破坏解密流程。 - undefined
不需要在每个数据包中发送密钥...为什么不事先发送公钥呢? - undefined
哎呀,应该只是上面的按键。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接