• sip鉴权认证算法详解及python加密


    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"%hash1
    hash2=md5("REGISTER:sip:192.168.10.222")
    print "%s"%hash2
    response=md5(hash1+":449caead:"+hash2)
    print response
  • 相关阅读:
    32位和64位系统区别及int字节数
    c语言指针占几个字节
    可重入和不可重入
    C中的volatile用法
    让你分分钟读懂CPU架构及芯片厂商
    手机CPU知识扫盲:谈谈手机CPU架构与原理 (全
    IO端口、IO内存、IO空间、内存空间的含义和联系
    IO端口和IO内存的区别及分别使用的函数接口
    linux终端下 编译c语言程序
    git各种撤销操作
  • 原文地址:https://www.cnblogs.com/VseYoung/p/sip_python.html
Copyright © 2020-2023  润新知