1. 认证和加密
认证(Authorization)的作用在于表明自己是谁,即向别人证明自己是谁。而相关的概念是MD5,用于认证安全。注意MD5仅仅是个hash函数而已,并不是用于加密。因为hash函数处理后的数据没法进行反向恢复,这样子的话别人没法盗取你认证身份的口令。
加密(Encryption)的作用在于对想传输的数据进行处理,在网络中即使被窃取也难以破解。加密的信息可以被破解,这需要一把钥匙——“密钥”。通过密钥,我们可以对数据进行加密和解密。最有名的专用密钥加密系统就是数据加密标准(DES), 这个标准现在由美国国家安全局和国家标准与技术局来管理。另一个系统是国际数据加密算法(IDEA), 它比DES的加密性好, 而且需要的计算机功能也不怎么强。
2. SIP认证方式
SIP的认证是继承了HTTP的认证方式。根据RFC2617,HTTP的认证方案主要有Basic Authentication Scheme和Digest Access Authentication Scheme两种。而Basic方法使用的口令原文验证的方式,易被盗取,所以SIP已经摒弃这种方式。
Digest认证方案可以对口令进行MD5包装。一般来说,获取口令有两种方式:1.字典攻击,即使用轮询进行口令猜测的方法,如果口令简单比较危险;另一个方法是攻击服务器来获得口令,如果服务器把密码存储起来那样的话就可能被盗取。所以方法是服务器端不再存储密码原文,而是使用MD5包装起来,这样的话当经过MD5包装的认证信息过来后,比较存储的MD5数据则可知道用户的身份了。
3.Response值算法
1) HASH1=MD5(username:realm:password)
2) HASH2=MD5(method:uri)
3)Response=MD5(HA1:nonce:HA2)
举个例子:
username=‘3502‘
realm=‘OfficeTen‘
password=‘Admin111‘
method=‘REGISTER‘
uri=‘sip:192.168.28.152‘
response=‘ae850ee2184aa88e3b79200f08284095‘
参考文章:http://blog.sina.com.cn/s/blog_4b839a1b01000bqq.html
http://blog.csdn.net/mrshelly/article/details/7535102
http://blog.sina.com.cn/s/blog_737adf5301013f1i.html
附:md5加密python实现
import hashlib#md5加密32位def md5(str): m = hashlib.md5() m.update(str) return m.hexdigest()
hash1=md5("20007:element:20007")print "%s"%hash1hash2=md5("REGISTER:sip:192.168.10.222")print "%s"%hash2response=md5(hash1+":449caead:"+hash2)print response