crypto调查

cryptographic hash function

是散列函数
cryptographic hash function 被广泛应用于信息完整校验,数字签名,认证以及其他信息安全领域。
接收不定长字符串作为输入,给出定长字符串作为输出(输出有校验和,哈希值等称谓)

  • 与加密的区别:加密后可以解密;而cryptographic hash function 无法解密,只是提取特征。
  • 碰撞:由于散列是多对少的映射,所以存在不同数据对应同一个校验和的情况,这就是碰撞。
  • 特点:
    1. 易于计算
    2. 反解十分困难
    3. 略有不同的输入可以产生十分不同的输出
SHA

SHA,secure hash algorithm —— SHA 是cryptographic hash function的一种。
大多由NSA组织开发,由NIST组织发布。

  • SHA-0是第一个版本,生成的hash value有160-bit,共40-digit
  • SHA-1是用于替代SHA-0的第二个版本,hash value 仍然是160-bit,不过比上一版本安全一些
  • SHA-2替代SHA-2,针对SHA-2的攻击在当前算力下不可能完成。SHA-2包括6中hash函数,每种的digit数量都不同
    • SHA-244、SHA-256、SHA-384、SHA-512(128个字符)、SHA-512/224、SHA-512/256
  • SHA-3不是用来替代SHA-2的,而仅仅是SHA-0、SHA-1、MD5的另一种替代方案
  • 计算过程
    • 填充占位和长度信息,使报文长度值可以被某个值整除
    • 将报文等分为每段固定长度的切片
    • 初始化一个缓存区域
    • 使用缓存区和当前处理的报文进行计算,使用结果来更新缓存区
    • 如上计算,直到所有切片都处理完毕了。
    • 可以看出,计算复杂度是O(n)(待订正)
MD5

Message digest algorithm —— MD 是 cryptographic hash function 的一种。
MD5有一些瑕疵,所以它只被用于检测文件是否发生更改,而不用于加密。
发展历史为:MD2 -> MD4 -> MD5
校验和:长度为128-bit,即32-digit的十六进制数字

应用
  • 密码保护:网站后台通过比较<输入密码的SHA-1的校验和>和<数据库中密码的SHA-1的校验和>来验证身份。
  • 文件验证:通过比较<官方提供的文件SHA-1校验和>和<已下载文件的SHA-1校验和>来确定下载的文件是否完整。
  • 彩虹表:用于破解哈希算法加密的密码。由于hash不可逆,所以思路是存下对应校验和的原文本。彩虹表在时间和空间上进行了平衡。
  • 加盐:复杂密码总是难以记住,可以考虑向用户的简单密码中加入复杂的唯一值来增加密码的复杂性(相当于多重密码什么的。应该有一个对应的salt-table)

加密解密

加密解密如RSA,AES等在算法前后信息是不会丢失的。不是hash function,被广泛用于数据传输。
加密算法的一个重要问题是,密钥分发问题。因此有了对称加密和非对称加密。
对称加密是:加密解密使用同一个密钥。常见的有:DES,AES,3DES等
非对称:加密和解密使用不同的密钥。公钥加密,只有私钥能解开;私钥加密,只有公钥能解开。常见的有:RSA,ECC,DSA等

RSA

RSA不是 cryptographic hash function ,是非对称加密系统。
RSA是三个人的名字缩写
RSA的安全性来源于:大素数乘积因式分解计算困难。
加密解密过程

  • 加密:密文 = encry(明文,私钥/公钥)
  • 解密:明文 = decry(密文,公钥/私钥)

RSA算法非常慢,一般不用于直接加密信息,而是加密用于对称加密的密钥。
密钥生成过程(原理涉及到数论,不表):基于同余定理,大质数分解难题。

n = p * q;(p,q是大质数)
φ(n) = (p - 1)(q - 1);
e与φ(n)互质(这是同余倒数存在的条件);s是e关于模数φ(n)的倒数;
公钥是:(e, n);私钥是:(s, n);
DSA

DSA基于离散对数难题

AES

AES,Advanced Encryption Standard,高级加密标准。AES是对称加密。
AES有多种加密模式,如CFB等
加密解密过程

  • 密文 = encry(明文,密钥)
  • 明文 = decry(密文,密钥)

以AES-128为例。加密过程为:首先对明文进行切分,切分结果是每组16字节。然后将16字节排列为方阵,进行子节代换,行位移,列混淆等操作。解密过程是逆操作。

同余定理

  • 同余定理:两个正数除以另一个正整数得到的余数相同。
有:a, b, m 都是正整数
若:a mod m = b mod m
则称:a与b关于模m同余
记为:a ≡ b (mod m)
  • 同余-倒数
有:a, x, m 是正整数
若:(a * x) ≡ 1 (mod m)
则称:x是a关于模m的同余倒数

x存在的条件是:a要与m互质

  • 同余-相反数
有:a, x, m 是正整数
若:(a + x) ≡ 0 (mod m)
则称:x是a关于模m的同余相反数
且:x = m - a

你可能感兴趣的:(算法与数据结构)