什么是DTLS

来源:互联网 发布:重庆时时彩预测软件 编辑:程序博客网 时间:2024/06/10 15:36
文章参考http://baike.baidu.com/link?url=G_GtVOBVyxBSWWlT2dHCJ8QJrewMjk8uZUhvNTyBmR2kgCzH2VAmfJH8s1oIQRsf0qDqCWSsGBTFue--pTl35K
1.DTLS在webrtc是干嘛的?
答:webrtc默认使用DTLS进行peer间的通讯加密。
2.DTLS能在webrtc的javascript api中关闭吗?
答:据我所知不能。只能在webrtc c++代码中改。
3.还有什么重要的信息?
在2014年版本的webrtc Windows版本的peerconnection demo 中,DTLS是没有打开的,这就导致windows端和web端,android端和ios无法通讯。这个坑了多少同行啊。。。多少人为此放弃了webrtc。



 DTLS(Datagram Transport Layer Security)
1.1 引言
近年来出现了许多实用数据报传输的应用程序。这些应用包括实时视频会议,internet电话和在线游戏,比如Quack和Starcraft。这些应用都是延迟敏感的,并且使用了不可靠的数据报传输。TCP之上的应用可以用TLS来保证安全,但是TLS不能用来保证UDP的安全。Datagram TLS试图在现存的TLS协议架构上提出扩展,使之支持UDP,即成为TLS的一个支持数据报传输的版本。DTLS 1.0 基于 TLS 1.1, DTLS 1.2 基于TLS 1.2.[1] 
1.2 基础: TLS简介
当部署TLS的时候,大家还没有充分认识到这个局限性的严重程度,因为当时大多数应用运行在TCP之上。即使今天也是这样。然而情况正在改变。在过去几年中,不断增长的应用层协议,比如SIP (session initial protocol),RTP (real time protocol), MGCP (the Media Gateway Control Protocol),还有许多游戏协议都基于UDP传输而设计。
目前,这些应用的设计者面对着许多用来保证安全性的选择,但却无法令人满意。首先,他们可以使用IPsec。然而,IPsec不适合于Client-Server应用模型,且难以同应用程序结合,因为IPsec运行在系统内核。有很多文献详细讨论了为什么IPsec为什么不是一个令人满意的选择。其次,他们自己设计一个特有的应用层安全协议。例如,SIP使用了S/MIME的一个变体来保证安全通信。将S/MIME嫁接到SIP中比使用TLS上的TCP版本的SIP变体更费劲。第三,可以把应用移植到TCP之上,然后使用TLS。不幸的是,许多这样的应用依赖于UDP语义,当运行在诸如TCP之类的流协议上性能将无法令人接受。
最为明显的选择是设计一个通用的信道安全协议,它可以使用数据报传输,就像TCP上的TLS。这样一个协议可以在用户空间中实现,这样便于安装,但是要足够灵活和通用,能够许多面向数据报的应用程序提供安全。尽管认为这个方案将是一个巨大和困难的规划项目。但是构造一个可以工作的协议相当直接,尤其是有了TLS的起点和IPsec的参考。本文介绍了这个新的协议,我们称为 “Datagram TLS “, DTLS是TLS的一个修改版本, 这样函数能够运行在数据报通信上。相对于上面的方案,该方法有两个主要优势:首先,既然DTLS非常类似于TLS,可以重用以前的协议架构和实现方法。为了便于展示,我们通过对OpenSSL库的添加实现了DTLS。我们总共添加了7000行代码,其中的60%从OpenSSL剪切和粘贴。其次,既然DTLS向通用安全层提供了相似的接口,就易于调整协议来使用它。TLS的经验显示,这种易于调整性是扩大部署的关键。
总结一下,TLS不能用以保证数据报安全的原因。
(1) TLS纪录层不能处理独立纪录。因为加密的上下文(比如CBC状态,序列密钥流)在记录之间经过链接。如果其中一个记录丢失,则将不能处理其后的所有记录。
(2) TLS握手层消息必须可靠而不能丢失。通过一个MAC字段来提供反重放和信息记录保护,其中,MAC中包含序列号,但是序列号被隐含在记录中。
DTLS的目标应用主要是C/S及其变体。这也是TLS的设计目标并且已很好工作。展示的安全模型中,server通过DNS名称和IP地址被认证,Client是匿名的或者被其他形式认证,典型的是在应用层通过用户名/密码来处理。
这个实现并不真正安全。然而,应用程序的设计者们,向在添加安全性的时候尽量能够维护他们的协议和实现架构。这个实现制造了一个类似于TLS或IPsec的有吸引力的信道安全协议,因为改动之非常小。从这个观点看来,理想的数据报信道安全协议应该取代对Server的DNS和基于IP认证的 强加密认证,而是把client认证留给应用层协议。
0 0