SIP 相关算法总结
对称密码算法
- 对称,即采用这种加密方法的双发使用相同的密钥加密和解密
- 发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,将复杂的加密密文发送出去
- 接收方收到密文,使用加密密钥及相同算法的逆算法解密密文,恢复成可读明文
- 国标要求
- 用于加密任意大小的数据块或数据流的内容,包括消息、文件、加密密钥和口令
- 使用 SM1、SM4 分组密码算法 OFB 模式,用于视频数据的加密保护
- 使用 SM4 分组密码算法 ECB 模式,用于密钥协商数据的加密保护
非对称密码算法
- 需要两个密钥
- 公开密钥(public key,简称公钥),对数据进行加密之后只有对应私钥可以解密
- 私有密钥(private key,简称私钥),对数据进行加密之后只有对应公钥可以解密
- 具体流程
- 乙方生成一对密钥(公钥和私钥),并将公钥公开
- 甲方得到公钥,使用公钥对信息加密后发给乙方
- 乙方用自己的私钥解密密文
- 国标要求
- 用于加密小的数据块,如加密密钥或数字签名中使用的 Hash 函数值
- 使用 SM2 椭圆曲线密码算法,用于身份认证、数字签名、密钥协商等
密码杂凑算法
- 杂凑函数
- 输出串称为消息的杂凑值
- 杂凑函数公开,对处理过程不保密
- 安全的杂凑函数需要满足的条件
- 输入长度任意
- 输出长度固定,根据目前的计算技术应至少取 128 bit 长,以便抵抗生日攻击
- 对每一个给定的输入,计算输出即杂凑值是容易的
- 给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值是计算上不可行的
- 国标要求
- 使用 SM3 密码杂凑算法,用于完整性校验
签名算法
- 数字签名式通过一个单向函数,对要传送的信息进行处理得到的一个字母数字串,用以认证信息来源,并核实信息在传送过程中是否发生变化
- 数字签名功能:
- 保证信息传输的完整性。因为数字签名代表了文件的特征,如果文件改变,数字摘要也会变化
- 确保发送者的身份认证。因为别人不能假冒发送方的签名
- 防止交易中的抵赖发生。在密文背景下,抵赖指的是不承认与消息有关的举动(即声称消息来自第三方)。消息的接收方可通过数字签名来防止所有后续的抵赖行为,因为接收方可以出示签名来证明信息的来源
- 具体流程
- 发送报文时,发送方用一个杂凑函数从报文文本中生成报文摘要
- 将摘要信息用发送者的私钥加密作为报文的数字签名,与原文一起传送给接收者
- 接收者只有用发送者的公钥解密被加密的摘要信息,然后用相同的杂凑函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。相同则说明收到的信息是完整的,否则说明信息被修改过
- 数字签名式加密过程,数字签名验证是解密过程
随机数生成算法
- 随机数:随机数是专门的随机试验的结果
- 随机数发生器:产生随机数的方法
- 随机数的特征:后面产生的随机数和前面生成的随机数没有关系
- 根据密码学原理,随机数的随机性检验可分为三个标准:
- 统计学伪随机性:指的是在给定的随机比特流样本中,1 的数量大致等于 0 的数量
- 密码学安全伪随机性:给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分
- 真随机性:即随机样本不可重现。实际上只要给定边界条件,真随机数并不存在。可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉,可认为用这个方法演算出了真随机数
- 随机数分类:
- 伪随机数:满足第一个条件的随机数
- 密码学安全的伪随机数:同时满足前两个条件的随机数。可以通过密码学安全伪随机数生成器计算得出
- 真随机数:同时满足三个条件的随机数
- 国标要求
- 生成的随机数应能通过 GM/T 0005-2012 中规定的方法进行检测
算法总结对比
算法 | 描述 | 优点 | 缺点 | 常见算法 | 应用 |
---|---|---|---|---|---|
对称加密 | 也称为单密钥加密或密钥加密,同一个密钥可以同时用作信息的加密和解密 | 算法公开、计算量小、加密速度快、加密效率高 | 数据传送前,收发双方需商定好密钥,然后双方需要保存好密钥,否则导致加密信息不安全;每对用户每次使用时需要使用其他人不知道的唯一密钥。使得收发双发拥有的密钥数量巨大,密钥管理成为负担 | DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK | 通常用于发送方需要加密大量数据时使用 |
非对称加密 | 需要两个密钥进行加密和解密,分别是公开密钥和私有密钥 | 安全性高,减轻了密钥管理的负担 | 加密和解密时间长、速度慢 | RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法) | 适合对少量数据进行加密 |
杂凑算法 | 也称为 Hash 函数(杂凑/哈希/消息摘要函数),是把任意长的输入消息串变化成固定长的输出串的一种函数 | 单向过程,逆向操作难以完成,碰撞的几率非常小 | —— | HAVAL、MD2、MD4、MD5、SHA-0、SHA-1、SHA-256/224、SHA-512/384、SM3 | 一般用于产生信息摘要、密钥加密等,用于完整性校验以及提高数字签名的有效性 |
签名算法 | 指数字签名的算法。数字签名,是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串也是对发送的信息真实性的一个有效证明 | —— | —— | Rabin、DSS、RSA | 个人安全邮件证书 |
随机算法 | 产生随机数 | —— | —— | 蒙特卡罗算法、随机 K 选择法、随机快排序、素性判定的随机算法、二阶段随机路由算法 | —— |
算法在国标中的应用
分类 | 算法 | 国标应用 | 长度 |
---|---|---|---|
非对称密码算法 | SM2 椭圆曲线密码算法 | 用于用户身份认证、数字签名、密钥协商 | 公钥至少 256 位 |
对称密码算法 | SM1、SM4 分组密码算法 OFB 模式 | 用于视频数据的加密保护 | |
- | SM4 分组密码算法 ECB 模式 | 用于密钥协商数据的加密保护 | |
密码杂凑算法 | SM3 密码杂凑算法 | 用于完整性校验 | |
随机数生成算法 | 生成随机数,应能通过 GM/T 0005-2012 中规定的方法进行检测 |