《中华人民共和国密码法》2020年1月1日开始实施
明文:
密文:
加密:
解密:
加密算法:
解密算法:
密钥:
密码分析攻击类型
典型算法:DES IDEA AES
优点:
三种安全有效的密码体制:
数字信封
DES(Data Encryption Standard)是一个分组加密算法,支持64比特的明文块加密。
TDEA(Triple Data Encryption Algorithm )
TDEA加密解密过程
IDEA(International Data Encryption Algorithm)
密码必须是没有密级的,绝不能像商业秘密那样来保护它:
算法的全部描述必须公开披露;
密码必须可以在世界范围内免费使用:
密码系统支持至少 128 比特长的分组;
密码支持的密钥长度至少为 128、192和256比特。
RSA 算法是非对称算法,由 Ronald Rivest 、Adi Shamir、Leonard Adleman 三人共同在 1977年公开发表。在RSA 加密算法中,公钥和私钥都可以用于加密消息,用于加密消息的密钥与用于解密消息的密钥相反。RSA 算法提供了一种保护网络通信和数据存储的机密性、完整性、真实性和不可否认性的方法。目前,SSH、OpenPGP、S/MIME 和 SSL/TLS 都依赖于 RSA 进行加密和数宇签名功能。RSA 算法在浏览器中使用,能够在不可信任的互联网中建立安全连接。RSA 签名验证是网络连接系统中最常见的执行操作之一,RSA 算法基于大整数因子分解的困难性,该算法的步骤如下:
下面,举一个 RSA 加密的具体实例。设素数 p = 3 , 9 = 17 p=3,9=17 p=3,9=17,并令 e = 13 e=13 e=13,则RSA 的加密操作如下:
第一步,计算 n n n, n = p q = 3 × 17 = 51 n=pq=3×17=51 n=pq=3×17=51,得出公钥 n = 51 , e = 13 n=51,e=13 n=51,e=13
第二步,计算 ϕ \phi ϕ( n n n)和 d d d, ϕ \phi ϕ ( n ) = ( p − 1 ) ( q − 1 ) = 2 × 16 = 32 (n)=(p-1)(q-1)=2×16=32 (n)=(p−1)(q−1)=2×16=32。因为 d d d= e − 1 e^{-1} e−1mod ϕ \phi ϕ( n n n),所以 d = k ϕ ( n ) + 1 e d=\frac{k\phi(n)+1}{e} d=ekϕ(n)+1其中 k k k是 p − 1 p-1 p−1和 q − 1 q-1 q−1 的最大公约数。由此算出 d = ( 2 × 32 + 1 ) / 13 = 5 d=(2×32+1)/13=5 d=(2×32+1)/13=5,即解密密钥 d = 5 d=5 d=5。
第三步,加密和解密处理计算。
假设Bob的公开密钥是 e = 13 、 n = 51 e=13、n=51 e=13、n=51, Alice 需要将明文“2”发送给Bob,则 Alice 首先用Bob 的公开密钥加密明文,即 C C C=$M^e m o d mod modn$ = 2 13 2^{13} 213mod $51=8192 $mod 51 = 32 51=32 51=32 .
然后,Bob 收到 Alice 发来的密文 C C C后,用自己的私钥 d d d解密密文 C C C,即:
M = C d M=C^d M=Cdmod n = 3 2 5 n =32^5 n=325mod 51 = 1024 × 1024 × 32 51=1024×1024×32 51=1024×1024×32mod$ 51=512 m o d mod mod 51=2$
RSA 安全性保证要做到选取的素数 p p p和 q q q足够大,使得给定了它们的乘积 n n n后,在事先不知道 p p p或 q q q的情况下分解 n n n是计算上不可行的。因此,破译RSA 密码体制基本上等价于分解 n n n。基于安全性考虑,要求 n n n长度至少应为 1024 比特,然而从长期的安全性来看, n n n的长度至少应为2048比特,或者是616位的十进制数
已知: p = 3 , q = 17 , e = 13 p =3, q=17 ,e = 13 p=3,q=17,e=13
e e e 是一个满足 1 < e < 1
n = p q = 3 × 17 = 51 n=pq=3×17=51 n=pq=3×17=51
ϕ ( n ) = ( p − 1 ) ( q − 1 ) = 2 × 16 = 32 \phi(n)=(p-1)(q-1)=2×16=32 ϕ(n)=(p−1)(q−1)=2×16=32
k k k 是 ( p − 1 ) ( q − 1 ) (p-1)(q-1) (p−1)(q−1)的最大公约数,所以 k = 2 k=2 k=2
d = e − 1 d=e^{-1} d=e−1mod ϕ \phi ϕ( n n n)= k ϕ ( n ) + 1 e = ( 2 × 32 + 1 ) / 13 = 5 \frac{k\phi(n)+1}{e}=(2×32+1)/13=5 ekϕ(n)+1=(2×32+1)/13=5
消息$ M = 2$
加密过程 密文 C C C
C C C=$M^e m o d mod modn$ = 2 13 2^{13} 213mod $51=8192 $mod 51 = 32 51=32 51=32
解密过程
M = C d M=C^d M=Cdmod n = 3 2 5 n =32^5 n=325mod 51 = 1024 × 1024 × 32 51=1024×1024×32 51=1024×1024×32mod$ 51=512 m o d mod mod 51=2$
其中 d d d 是私钥
国产商用密码算法特性统计表
算法名称 | 算法特性描述 | 备注 |
---|---|---|
SM1 | 对称加密、分组长度和密钥长度为128比特 | |
SM2 | 非对称加密,用于公钥加密算法、密钥交换协议、数字签名算法 | 国家标准推荐使用素数域256位椭圆曲线 |
SM3 | 杂凑算法、杂凑值长度为256比特 | |
SM4 | 对称加密,分组长度和密钥长度为128比特 | |
SM9 | 标识密码算法 |
杂凑函数简称Hash函数,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值,
令 h h h 标识Hash 函数,则 h h h满足一下条件
数字签名(Digital Signature) 是指签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果。
用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性。
特点:是可信的、不可伪造的、不可重用的、不可抵赖的以及不可修改的。
数字签名的三个条件:
典型的数字签名方案有RSA 签名体制、Rabin签名体制、ElGamal 签名体制和DSS (Data Signature Standard) 标准。
数字签名工作的基本流程,Alice向Bob发送签名的电子合同
第一步,Alice 使用 Hash 函数将电子合同文件生成一个个消息摘要;
第二步,Alice 使用自己的私钥,把消息摘要加密处理,形成一个数字签名;
第三步,Alice 把电子合同文件和数字签名一同发送给 Bob。
Bob收到 Alice 发送的电子合同文件及数字签名后,为确信电子合同文件是 Alice 所认可的,验证步骤如下:
第一步,Bob 使用与 Alice 相同的Hash 算法,计算所收到的电子合同文件的消息摘要;
第二步,Bob 使用 Alice 的公钥,解密来自 Alice 的加密消息摘要,恢复 Alice 原来的消息摘要;
第三步,Bob 比较自己产生的消息摘要和恢复出来的消息摘要之间的异同。若两个消息摘要相同,则表明电子合同文件来自 Alice。 如果两个消息摘要的比较结果不一致,则表明电子合同文件已被篡改。
密码测评
商用密码检测中心
数字证书(Digtal Certificate)-公钥证书,是由证书认证机构(CA)签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及扩展信息的一种数据结构。
《信息技术公钥基础设施数字证书格式》征求意见稿
数字证书的基本信息域 (见教材P56)
用户证书的结构实例(见教材P56)
数字证实认证系统构成及部署(见教材P57)
W.Diffie 和M.E. Hellman 于 1976年首次提出一种共享秘密的方案,简称 Diffie-Hellman 密钥交换协议。Diffie-Hellman 密钥交换协议基于求解离散对数问题的困难性,即对于下述等式:
C d = M m o d P C^d= M\mod P Cd=MmodP
其中, d d d称为模 P P P的以 C C C为底数的 M M M的对数,在己知 C C C和 P P P的前提下,由 d d d求 M M M很容易,只相当于进行一次指数计算。而再由 M M M反过来求 d d d,则需要指数级次计算。随着 P P P取得足够大,就能实现足够的安全强度。现在假设 Alice 和Bob 使用 Diffie-Hellman 密钥交换协议,在一个不安全的信道上交换密钥,则其操作步骤如下:
第一步,Alice 和Bob 确定一个适当的素数 P P P和整数 α \alpha α,并使得 α \alpha α是 p p p的原根,其中 α \alpha α和 p p p可以公开。
第二步,Alice秘密选一个整数 a A a_A aA,计算 y A = α a A y_A=\alpha^{a_A} yA=αaAmod p p p,并把 y A y_A yA发送给Bob。
第三步,Bob秘密选取一个整数 a B a_B aB,计算 y B = α a B m o d p y_B=\alpha^{a_B} \mod p yB=αaBmodp,并把 y B y_B yB发送给Alice。 y A y_A yA和 y B y_B yB。就是所说的Diffie-Hellman公开值
第四步,Alice和Bob双方分别计算出共享密钥 K K K,
Alice通过计算 K = ( y B ) a A m o d p K=(y_B)^{a_A}\mod p K=(yB)aAmodp生成密钥 K K K
Bob通过计算 K = ( y A ) a B m o d p K=(y_A)^{a_B}\mod p K=(yA)aBmodp生成密钥 K K K
因为:
K = ( y B ) a A m o d p = ( α a B m o d p ) a A m o d p = ( α a B ) a A m o d p = α a B a A m o d p = ( α a A ) a B m o d p = ( α a A m o d p ) a B m o d p = ( y B ) a B m o d p \begin{aligned} K &=(y_B)^{a_A}\!\mod\!p =(\alpha^{a_B}\!\mod\!p)^{a_A}\mod p\\ &=(\alpha^{a_B})^{a_A}\mod\!p =\alpha^{a_Ba_A}\mod\!p \\ &=(\alpha^{a_A})^{a_B}\mod\!p =(\alpha^{a_A}\mod\!p)^{a_B}\mod\!p\\ &= (y_B)^{a_B}\mod\!p \end{aligned} K=(yB)aAmodp=(αaBmodp)aAmodp=(αaB)aAmodp=αaBaAmodp=(αaA)aBmodp=(αaAmodp)aBmodp=(yB)aBmodp
它是基于公钥的安全应用协议,由SSH 传输层协议、SSH 用户认证协议和SSH 连接协议三个子协议组成。
SSH 传输层协议提供算法协商和密钥交换,并实现服务器的认证,最终形成一个加密的安全连接,该安全连接提供完整性、保密性和压缩选项服务。
SSH 用户认证协议则利用传输层的服务来建立连接,使用传统的口令认证、公钥认证、主机认证等多种机制认证用户。
SSH 连接协议在前面两个协议的基础上,利用已建立的认证连接,并将其分解为多种不同的并发逻辑通道,支持注册会话隧道和TCP 转发(TCP-forwarding) ,而且能为这些通道提供流控服务以及通道参数协商机制。
SSH2协议结构示意图P59
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VgQPUTuU-1654139572282)(/Users/admin/MBP/信息安全工程师/PNG/ssh2协议结构示意图.png)]
SSH工作流程图P59
利用SSL和数字证书确保通信安全
PGP(Pretty Good Privacy)-RSA\IDEA\MD5\RSA