软考-信息安全工程师-笔记-第3章-密码学基本理论

第3章 密码学基本理论

3.1 密码学概况

3.1.1 密码学发展情况

《中华人民共和国密码法》2020年1月1日开始实施

3.1.2 密码学基本概念

明文:

密文:

加密:

解密:

加密算法:

解密算法:

密钥:

3.1.3 密码安全性分析

密码分析攻击类型

  1. 唯密文攻击
  2. 已知明文攻击
  3. 选择明文攻击
  4. 密文验证攻击
  5. 选择密文攻击

3.2 密码体制分类

3.2.1 私钥密码体制

在这里插入图片描述

典型算法:DES IDEA AES

3.3.2 公钥密码体制

在这里插入图片描述

优点:

  • 密钥分发方便
  • 密钥保管量少
  • 支持数字签名

三种安全有效的密码体制:

  • RSA 体制
  • ELCamal 体制
  • 椭圆曲线密码体制

3.3.3 混合密码体制

数字信封

在这里插入图片描述

3.3 常见密码算法

3.3.1 DES

DES(Data Encryption Standard)是一个分组加密算法,支持64比特的明文块加密。

TDEA(Triple Data Encryption Algorithm )
TDEA加密解密过程

3.3.2 IDEA

IDEA(International Data Encryption Algorithm)

3.3.3 AES

密码必须是没有密级的,绝不能像商业秘密那样来保护它:
算法的全部描述必须公开披露;
密码必须可以在世界范围内免费使用:
密码系统支持至少 128 比特长的分组;
密码支持的密钥长度至少为 128、192和256比特。

3.3.4 RSA

RSA 算法是非对称算法,由 Ronald Rivest 、Adi Shamir、Leonard Adleman 三人共同在 1977年公开发表。在RSA 加密算法中,公钥和私钥都可以用于加密消息,用于加密消息的密钥与用于解密消息的密钥相反。RSA 算法提供了一种保护网络通信和数据存储的机密性、完整性、真实性和不可否认性的方法。目前,SSH、OpenPGP、S/MIME 和 SSL/TLS 都依赖于 RSA 进行加密和数宇签名功能。RSA 算法在浏览器中使用,能够在不可信任的互联网中建立安全连接。RSA 签名验证是网络连接系统中最常见的执行操作之一,RSA 算法基于大整数因子分解的困难性,该算法的步骤如下:

  • 第一步,生成两个大素数 p p p q q q
  • 第二步,计算这两个素数的乘积 n n n= p q pq pq
  • 第三步,计算小于 n n n并且与 n n n互素的整数的个数,即欧拉函数 ϕ \phi ϕ( n n n)= ( p − 1 ) ( q − 1 ) (p-1)(q-1) (p1)(q1)
  • 第四步,选取一个随机数e,且满足 1 < e < 1<e< 1<e< ϕ \phi ϕ( n n n),并且e和 ϕ \phi ϕ( n n n)互素,即gcd( e e e, ϕ \phi ϕ( n n n))=1
  • 第五步,计算 d d d= e − 1 e^{-1} e1mod ϕ \phi ϕ( n n n).
  • 第六步,保密 d d d p p p g g g,而公开 n n n e e e,即 d d d作为私钥,而 n n n e e e作为公钥。

下面,举一个 RSA 加密的具体实例。设素数 p = 3 , 9 = 17 p=3,9=17 p=39=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)=(p1)(q1)=2×16=32。因为 d d d= e − 1 e^{-1} e1mod ϕ \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 p1 q − 1 q-1 q1 的最大公约数。由此算出 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=13n=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<e< 1<e< ϕ \phi ϕ( n n n),并且e和 ϕ \phi ϕ( n n n)互素的随机数

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)=(p1)(q1)=2×16=32

k k k ( p − 1 ) ( q − 1 ) (p-1)(q-1) (p1)(q1)的最大公约数,所以 k = 2 k=2 k=2

d = e − 1 d=e^{-1} d=e1mod ϕ \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 是私钥

3.3.5 国产密码算法

国产商用密码算法特性统计表

算法名称算法特性描述备注
SM1对称加密、分组长度和密钥长度为128比特
SM2非对称加密,用于公钥加密算法、密钥交换协议、数字签名算法国家标准推荐使用素数域256位椭圆曲线
SM3杂凑算法、杂凑值长度为256比特
SM4对称加密,分组长度和密钥长度为128比特
SM9标识密码算法
  • SM1 算法是一种对称加密算法,分组长度为128 比特,密钥长度为 128 比特•
  • SM2 算法基于椭圆曲线,应用于公钥密码系统。对于一般椭圆曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。与大数分解问题及有限域上离散对数问题相比,椭圆曲线离散对数问题的求解难度要大得多。因此,在相同安全程度的要求下,椭圆曲线密码较其他公钥密码所需的密钥规模要小得多。SM2 算法可以用于数字签名、密钥交换、公钥加空。详见GM/T 0009-2012 《SM2 密码算法使用规范》
  • SM3 杂凑算法对长度为 l ( l < 2 64 ) l(l<2^{64}) l(l<264)比特的消息m,经过填充、迭代压缩,生成杂凑值,杂凑值输出长度为256比特。详见 GM/T0004-2012 《SM3 密码杂凑算法》
  • SM4 密码算法是一个分组算法。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用 32 轮非线性迭代结构。数据解密和数据加密的算法结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。详见 GM/T0002–2012 《SM4分组密码算法》
  • SM9 是标识密码算法。在标识密码系统中,用户的私钥由密钥生成中心(KGC)根据主密钥和用户标识计算得出,用户的公钥由用户标识唯一确定,因而用户不需要通过第三方保证其公钥的真实性。与基于证书的公钥密码系统相比较,标识密码系统中的密钥管理环节可以得到简化。SM9可支持实现公钥加密、密钥交换、数字签名等安全功能,详见 GM/T0044-2016《SM9标识密码算泆》

3.4 Hash 函数与数字签名

3.4.1 Hash 函数

杂凑函数简称Hash函数,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值,

h h h 标识Hash 函数,则 h h h满足一下条件

  1. h h h的输入可以是任意长度的消息或文件 M M M;
  2. h h h的输出长度是固定的;
  3. 给定 h h h M M M,计算 h ( M ) h(M) h(M)是容易的
  4. 给定 h h h的描述,找两个不同的消息 M 1 M_1 M1 M 2 M_2 M2,使得 h ( M 1 ) = h ( M 2 ) h(M_1)=h(M_2) h(M1)=h(M2)是计算上不可行的

3.4.2 Hash 算法

  1. MD5
  2. SHA
  3. SM3

3.4.3 数字签名

数字签名(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。 如果两个消息摘要的比较结果不一致,则表明电子合同文件已被篡改。

3.5 密码管理与数字证书

3.5.1 密码管理

  1. 密钥管理
    • 密钥生成
    • 密钥存储
    • 密钥分发
    • 密钥使用
    • 密钥更新
    • 密钥撤销
    • 密钥备份
    • 密钥恢复
    • 密钥销毁
    • 密钥审计
  2. 密码管理政策
  • 法律:中华人民共和国密码法
  • 标准:电子政务电子认证服务管理办法、行业规范等
  • 《中华人民共和国密码法》明确规定,密码分为核心密码、普通密码和商用密码,实行分类管理。核心密码、普通密码用千保护国家秘密信息,属于国家秘密,由密码管理部门依法实行严格统一管理。商用密码用千保护不属千国家秘密的信息,公民、法人和其他组织均可依法使用商用密码保护网络与信息安全。
  1. 密码测评

    商用密码检测中心

3.5.2 数字证书

  • 数字证书(Digtal Certificate)-公钥证书,是由证书认证机构(CA)签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及扩展信息的一种数据结构。

  • 《信息技术公钥基础设施数字证书格式》征求意见稿

    数字证书的基本信息域 (见教材P56)

    用户证书的结构实例(见教材P56)

    数字证实认证系统构成及部署(见教材P57)

3.6 安全协议

3.6.1 Diffie-Hellman 密钥交换协议

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

3.6.2 SSH

它是基于公钥的安全应用协议,由SSH 传输层协议、SSH 用户认证协议和SSH 连接协议三个子协议组成。

SSH 传输层协议提供算法协商和密钥交换,并实现服务器的认证,最终形成一个加密的安全连接,该安全连接提供完整性、保密性和压缩选项服务。

SSH 用户认证协议则利用传输层的服务来建立连接,使用传统的口令认证、公钥认证、主机认证等多种机制认证用户。

SSH 连接协议在前面两个协议的基础上,利用已建立的认证连接,并将其分解为多种不同的并发逻辑通道,支持注册会话隧道和TCP 转发(TCP-forwarding) ,而且能为这些通道提供流控服务以及通道参数协商机制。

SSH2协议结构示意图P59

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VgQPUTuU-1654139572282)(/Users/admin/MBP/信息安全工程师/PNG/ssh2协议结构示意图.png)]

SSH工作流程图P59

工作机制7个步骤:
在这里插入图片描述

3.7 密码学网络安全应用

3.7.1 密码技术常见应用场景类型

  1. 网络用户安全
  2. 物理环境安全
  3. 网络和通信安全
  4. 设备和计算安全
  5. 应用和数据安全
  6. 业务应用创新

3.7.2 路由器安全应用参考

  1. 路由器口令管理- MD5保存管理员口令
  2. 远程安全访问路由器-用SSH替换Telnet
  3. 路由信息交换认证-路由器之间进行完整性检查- MD5-HMAC

3.7.3 Web网站的安全应用参考

利用SSL和数字证书确保通信安全

3.7.4 电子邮件安全应用参考

PGP(Pretty Good Privacy)-RSA\IDEA\MD5\RSA

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值