
目前,SIP协议RFC3261中关于Authentication一直使用的是RFC2671规范。但是HTTP Digest Access Authentication(RFC7616) 基本上抛弃了旧的RFC2671,增加了新的算法支持,称之为Hash Algorithms for HTTP Digest Authentication。因此,SIP协议也需要对其新的认证方式进行更新来符合RFC7616规范。
通常情况下,选择什么样的算法无非取决于三个方面的因素:
- 计算速度:算法的计算速度取决于算法本身的复杂程度。复杂算法当然会降低计算速度。
- hash值大小:经过计算后生成的hash数值大小。
- 安全性:经过碰撞处理以后,collision的值相对比较高的,安全性则比较好。
根据一些测试的对比数据来看,SHA256在collision方面具有很大优势,安全性相对比较好:

另外,MD5已经使用了将近20年的时间,因为软件技术的发展,硬件技术的发展,加上一定的时间,模拟出基本上一致的MD5 collision已经是完全可能的,所以安全性问题更加严重。一些技术专家认为,从理论上和实际环境中, MD5已经存在问题。Aniruddha Shrotri对此问题发表多一篇非常着名的文章,此文章讨论了MD5从理论上和实际生产过程中,如何模拟出一个假的证书的处理方式。
MD5 – The hash algorithm is now Broken!!!
https://cryptocrats.com/crypto/md5-the-hash-algorithm-is-now-broken/
前几年比较轰动的安全技术事件是中国着名学者王小云破解MD5的算法的新闻。这些技术的突破对MD5本身提出来非常大的考验。
MD5碰撞的演化之路
https://www.freebuf.com/articles/93780.html
因此,因为MD5存在的这种问题,HTTP也准备使用新的认证算法来支持新的互联网技术。前面我们已经说过,因为SIP RFC3261的认证也是借用的HTTP的认证方式,因此,RFC3261也必须需要更新来支持新的认证方式。在准备更新的RFC3261中,为了在SIP中更新Digest Authentication,RFC7616中增加了对SHA-256 和 SHA-512/256 算法的支持,增加了一个“qop”参数设置。
在新更新的RFC3261中,增加了对几个方面的支持:
关于使用多个SIP Authentication时的UAC和UAS对WWW-Authenticate和Proxy-Authenticate 头的处理和处理顺序逻辑。
提供了对Forking处理的指导。
如果有任何的Update,SIP BNF更新处理。
关于最新的RFC3261对Digest Authentication Scheme的支持,读者可以阅读最新状态内容:
The Session Initiation Protocol (SIP) Digest Authentication Scheme draft-ietf-sipcore-digest-scheme-08
https://tools.ietf.org/html/draft-ietf-sipcore-digest-scheme-08?fbclid=IwAR3BVafXLXItktdtV0wR3Zy4SHbjZh1EYbkXK4TsVtqXJc0gJ0L-L1qt2t8#section-2
当然,如果RFC3261更新以后,除了MD5支持向后兼容以外,保证了旧产品的认证兼容方式以外,SIP产品厂家和基于SIP的开发需要增加对最新算法的支持。接下来,就是编写相关的代码模块支持最新的Digest Authentication Scheme。
参考资料:
https://tools.ietf.org/html/draft-ietf-sipcore-digest-scheme-08?fbclid=IwAR3BVafXLXItktdtV0wR3Zy4SHbjZh1EYbkXK4TsVtqXJc0gJ0L-L1qt2t8
http://cseweb.ucsd.edu/~mihir/papers/gb.pdf
https://tools.ietf.org/html/rfc2617
https://tools.ietf.org/html/rfc7616


关注微信公众号:asterisk-cn,获得有价值的Asterisk行业分享
Asterisk freepbx,FreeSBC技术文档: www.freepbx.org.cn
融合通信商业解决方案,协同解决方案首选产品:www.hiastar.com
Asterisk/FreePBX中国合作伙伴,官方qq技术分享群(3000人):589995817