# 密码学 ## 古典密码 ### 各种相应的密码 - 凯撒 m=c+3(mod 26) - 仿射 加密 m=kc+k(mod 26) 解密c=k^-1*m-k(mod 26) - hill A*M=C A为矩阵 - 维吉利亚 Ci=Mi+Ki(mod 26) Mi=Ci-Ki(mod 26) ### 古典密码的设计缺陷 - 密钥空间通常较小 对应现代密码的密钥须足够长以抵御穷举攻击 - 明文、密文、密钥三者之间只是简单的代数关系 对应现代密码的混淆性 - 明文的统计特性的隐藏并不好 对应现代密码的扩散性 ### 设计方法 - 代换 - 置换 ### 相关的时间节点 - 1949 Shannon 保密系统的通信理论 - 1917 Mauborbne和Vernam 一次一密 - 1976 Diffie和Hellman 公钥密码体制概念 ### 信息安全的目标 - 机密性 通过aes等加密实现 - 完整性 hash函数,mac码校验完整性 - 认证性 消息认证码和数字签名 - 不可否认性 数字签名 - 可用性 不down ### 加密系统的密码分析 - 唯密文分析:密码分析者取得一个或多个用同一密钥加密的密文 - 已知明文分析:除要破译的密文外,密码分析者还取得一些用同一密钥加密的明密文对 - 选择明文分析:密码分析者可取得他所选择的任何明文所对应的密文 - 选择密文分析:密码分析者可取得他所选择的任何密文所对应的明文,它主要应用于公钥密码体制。 ### 常见的攻击 - 被动攻击 对信道的侦听截获然后分析 - 主动攻击 伪造合法的用户,对消息进行篡改、伪造、中断、重放等攻击方式 ## 分组密码(对称密码) ### 密码 #### DES ##### 特点 - Feistel结构 - 密钥有效长度 56位,8位校验码 - 1977确定des,第一个广泛应用于商用数据保密 - mac码不可提供不可否认性,原因在于双方有同样的密钥,导致接收方可以否认接收到的消息,发送方也可以否认发送过某消息,mac码不可提供不可否认性,原因在于双方有同样的密钥,导致接收方可以否认接收到的消息,发送方也可以否认发送过某消息 ##### 安全性分析 - 56位有效密钥太短 - 弱密钥和半弱密钥 - 代数结构存在互补对称性 ##### 流程 1. M=Li+Ri 2. Ri+1=Li xor F(Ri) 3. Li+1=Ri 其中 F函数为扩展置换(E表),代换(s盒),置换(p盒),其中,S盒实现混淆性,P盒跟E表实现扩散性 #### AES ##### 特点 - SP系统 - 轮数为 分组长度/32+密钥长度/32+2,最大为14轮 - 密钥长度为 128bits 192bits 256bits #### 流程 - 字节代换 混淆性 S盒代换 非线性部分 - 行移位 扩散性 行移位操作要求第一行不变,第二行循环左移1个字节;第三行循环左移2个字节;第四行循环左移3个字节。 - 列混淆 扩散性 - 轮密钥加 非线性模块 将128bit的明文转换成4*4的矩阵,元素为字节,并与轮密钥做异或操作,然后经过9轮的4步操作,分别是S盒代换、行移位、列混合、轮密钥加,最后第10轮只3步操作,不做列混合。 S盒操作通过查表运算,对于输入字节,高4bit表示行数,低4比特表示列数 #### 工作模式 - **ECB** 最简单直接分成组然后用原本的方式去加密 - **CBC** 上一组加密完的密文跟本次的明文先进行xor操作后,在进行原本的方式去加密,有初始向量IV - **OFB** 对IV选取64-j bits长度的进行加密,提取加密后的j bits插入原本的最后重新组成下一组的64bits的IV,并将这j bits的与明文进行xor获取输出的密文 - **CFB** 与OFB类似,区别在于提取到下一组的IV的j bits是输出的密文。 ### 序列密码 - 对称密码体系 - m序列---指最大周期的序列密码 n级m序列的周期为2^(n) - 1 - 安全核心问题是序列的产生的设计 - n级线性反馈移位寄存器即an+1与前面n个ai存在关系 #### 与分组密码的区别 - 同属对称密码体系 但序列密码为对字符逐位加密,分组密码为按块加密 #### 工作模式 ###### 同步序列密码 - 密钥流的产生与明密文消息流相互独立,也即是跟输出的密文无关 ###### 自同步密码 - 密钥流的产生与己经产生的一定数量的密文有关 ### HASH函数 #### 性质 - **单向性** 给定散列值H(m),m在计算上不可行 - **弱抗碰撞性** 给定消息m,寻找m'使得在计算上H(m)=H(m')不可行 - **强抗碰撞性** 任意两个m跟m',使得H(m)=H(m')不可行 #### 分组长度与输出长度 - SHA-1 512bits 160bits - SHA-256 512bits 256bits - SHA-384 1024bits 384bits - SHA-512 1024bits 512bits - MD5 512bits 128bits #### MD5 ##### 步骤 1. 填充消息,使得lenbits(m)==448(mod 512),填充的第一个bits为1,其他为0 2. 补足长度,最后填充64bits,其中存储原始消息的长度 3. 初始数据 4. 数据处理,其中是进行4轮主循环操作 #### SHA-1 ##### 步骤 1. 填充消息 2. 补足长度 3. 数据处理 4回合 共计80次 #### 生日攻击 对输出长度为n位,尝试2^(n) + 1个报文必定存在一个冲突,在1/2的概率下,需要的为2^(n/2)个报文//也就是开平方 #### 消息认证码 - 定义 消息认证码是消息被一密钥控制的公开函数作用后产生的、固定长度的数值,用于提供数据原发认证和数据完整性的密码校验值 - 过程 收发双发共享密钥K,在提供认证性的应用中,消息发送者在发送消息m的同时,计算并发送认证符MAC(K,m),接收者利用共享密钥K,计算MAC'与接收到的MAC比较即可得到认证。 - 作用 **验证信息来源的正确性** 和 **验证消息的完整性** - 利用mac码实现 用户首先计算其mac值:MAC(K2,m),并加密并传送E(K1,m|| MAC(K2,m));接收端首先用K1对消息解密,并用K2和相关MAC算法验证m的合法性。实现方式除了对称密码的mac码还可以通过hash函数实现 ### 公钥密码(非对称密码) #### 特点 - 基于数学难题,基于思想为陷门单向函数(即已知x,易求f(x),但已知f(x)不易求x) - 解决了对称密码的**密钥分发问题 、密钥管理问题 和 数字签名问题** #### 与对称密码的区别 - 使用的密钥等不一样 - 对称密码体制包括加密算法实现机密性,公钥多了不可否认性,解决密钥协商,数字签名问题 - 对称密码体制的设计通常基于置换和代换的结合设计;而公钥密码通常基于数学困难问题 #### RSA 基于大整数分解困难 ##### 流程 - 取大素数p跟q,n=pq - 取e,记欧拉函数为f,使得(e,f(n))=1 - 计算d,d=e^-1(mod f(n)) - 加密 C=M^e(mod n) - 解密 M=C^d(mod n) ##### 安全性分析 - |q-p|要大,最好相差几个bits位 Attack:q-p=k,如果k较小,(p+q)^2 = k^2 +4n,容易爆破出k满足k^2+4n为完全平方数。 - 共享模数 在同一个模n的情况下,有(e1,e2)=1,则可有re1+se2=1,则有c1^r * c2^s(mod n)=m(mod n) - e过小 过小直接开方求 - 不同用户生成n时使用同一个素数p (n1,n2)=p - 安全的密钥长度最少1024bits ##### RSA签名算法 - 签名 s=H(m)^d(mod n) - 验证 s^e(mod n)是否是H(m) #### Elgamal 基于离散对数问题 ##### 特点 - 非确定性,加密相同明文会出现不同密文 - 密文空间大于明文空间 - 选择密文可以获取(m*m')(mod p) ##### 流程 - 素数p(至少150位的十进制素数) - g为其中的本原元,共享p g - 用户挑选随机数x作为私钥,计算y=g^x(mod p),y作为自身公钥 - 加密 c1=g^r(mod p) c2=m*y^r(mod p),传递(c1,c2) - 解密 m=c2*(c1^x)^-1(mod p) ##### Elgamal签名 - 签名 选择k,使得(k,p-1)=1,r=g^k(mod p),s=(H(m)-xr)*k^-1(mod p-1),分发(r,s) - 验证 计算H(m),验算y^r * r^s = g^H(m) (mod p)是否成立 - 安全性 重用随机数,对m1跟m2使用同样的k,则s1=(H(m1)-xr)*k^-1(mod p-1) s2=(H(m2)-xr) * k^-1(mod p-1),联立可求私钥x ### 密钥管理 #### 管理的原则 - **全程安全原则** **必须在密钥的产生、存储、备份、分发、组织、使用、更新、终止和销毁等的全过程中对密钥采取妥善的安全管理。** - **最小权利原则** **应当只分发给用户进行某一事务处理所需的最小的密钥集合。** - **责任分离原则** **一个密钥应当专职一种功能** - **密钥分级原则** •**可减少受保护的密钥的数量,又可简化密钥的管理工作。一般划分为三级:主密钥,二级密钥,初级密钥** - **密钥更新原则** - **密钥应当有足够的长度** - **密码体制不同,密钥管理也不相同** **由于传统密码体制与公开密钥密码体制是性质不同的两种密码,因此它们在密钥管理方而有很大的不同。** #### 分发方式 ##### 离线分发方式 - 通过可靠的物理渠道 ##### 在线分发方式 - 建立一个密钥分发中心(kdc)实现。每个用户与kdc共享一个保密的密钥,kdc通过这个密钥来鉴别用户。 #### **Diffie-Hellman** ##### 过程 - 选择素数p,g为p的本原元 - a随机选择a,计算g^a(mod p),发送 - b随机选择b,计算g^b(mod p),发送 - 分别计算获得共享密钥 g^ab(mod p) ##### 安全性分析 - 安全性基于离散对数问题(非对称密码 - 缺少消息认证机制,可被主动攻击(中间人) 可采用端到端的密钥协商协议,在发送时候,对其进行签名 #### Shamir门限方案 ##### 过程 - q为一大素数,满足q>=n+1 - 在GF(q)上构造f(x)=a0+a1 * x+a2 * x^2....+ak-1 * x^k-1 - 分别计算得出f(xi),分发 ##### 秘密重构 看书上公式