信息安全工程师-第三章 密码学基本理论

123456
3
2025-09-05

第三章 密码学基本理论

3.1 密码学基础

3.1.1 密码学概念与法律

密码学主要由密码编码密码分析两个部分组成。

·密码编码学:研究信息的变换处理以实现信息的安全保护

·密码分析学:则研究通过密文获取对应的明文信息

《中华人民共和国密码法》于2020年1月1日起实施。2005年4月1日起国家施行《中华人民共和国电子签名法》。密码学相关概念:

明文:需要采用密码技术进行保护的消息。

密文:用密码技术处理过明文的结果,通常称为加密消息。

加密:将明文变换成密文的过程。

解密:由密文恢复出原明文的过程。

加密算法:加密过程所使用的一组操作运算规则

解密算法:解密过程所使用的一组操作运算规则

密钥:加密和解密算法的操作通常都是在密钥控制下进行的,分别称为加密密钥和解密密钥。

3.1.2 密码安全分析

(1)唯密文攻击:密码分析者只拥有一个或多个用同一个密钥加密的密文,没有其他可利用的信息。 只有密文,别的啥都不知道

(2)已知明文攻击:密码分析者根据已经知道的某些明文-密文对来破译密码。一个密码仅当它能经得起已知明文攻击时才是可取的。 已知某些明文对应的密文

(3)选择明文攻击:指密码分析者能够选择明文并获得相应的密文。 对密码分析者十分有利,适于攻击计算机文件系统和数据库系统

(4)密文验证攻击:密码分析者对于任何选定的密文,能够得到该密文“是否合法”的判断。

(5)选择密文攻击:指密码分析者能够选择密文并获得相应的明文。这也是对密码分析者十分有利的情况。 主要攻击公开密钥密码体制,特别是攻击数字签名

3.1.3 密码体制分类

密码体制分为私钥公钥密码体制两种,而介于私钥和公钥之间的密码体制称为混合密码体制。

私钥密码体制又称对称密码体制,该体制的特点是加密和解密使用相同的密钥。消息的收发双方必须事先通过安全渠道交换密钥。

·优点:加解密速度快、密文紧凑、使用长密钥时的难破解。

·缺点:密钥分配问题、密钥管理问题、无法认证源。

常见的对称密钥加密算法如下:DES、3DES、AES、RC4/5、IDEA.

公钥密码体制又称为非对称加密体制,就是对数据加密和解密的密钥是不同的。

优点:密钥分发方便、密钥保管量少、支持数字签名。

缺点:加密速度慢(计算量大,不适合加密大数据)、数据膨胀率高。

每个实体有两个密钥:公钥公开,私钥自己保存

公钥加密,私钥解密,可实现保密通信

私钥加密,公钥解密,可实现数字签名

常见的非对称加密算法如下:

RSA:512位(或1024位)密钥,计算量极大,难破解。

Elgamal、ECC(椭圆曲线算法)、背包算法、Rabin、DH等。

混合密码体制:发送方用对称密钥加密需要发送的消息,再用接收方的公钥加密对称密钥,然后一起发送给接收方;接收方先用自己的私钥解密得到对称密钥,然后用对称密钥解密得到明文。

image-20250901160302722

3.2 非对称加密算法

3.2.1 非对称加密算法总结

算法

解释

特点

DES

Data encryption Standard,数据加密标准,分组加密算法 采用位移+替换,速度快,密钥易产生

分组长度64位,密钥长度64位,有效密钥长度是56

3DES

三重DES (TDEA),使用DES对明文进行“加密-解密-加密”操作。 加密:K1加密→K2解密→K3加密 -解密:K3解密→K2加密→K1解密 -一般,K1和K3是相同的密钥。

密钥长度112位

IDEA

International Data encryption Algorithm,国际数据加密算法,分组加密算法。设计思想:混合使用来自不同代数群中的运算。

明文和密文分组都是64位,密钥\n长度为128位,用于PGP

AES

Advanced encryption Standard,高级加密标准。可以通过硬件实现,速度快,像3DES一样安全。

分组长度128位,支持128,192和256位三种密钥长度

RC4/5

流加密算法,用于WIFI。加密速度快,可达到DES的10倍。

分组和密钥长度都可变

3.2.2 国产加密算法

国产密码算法:是指由国家密码研究相关机构自主研发,具有相关知识产权的商用密码算法,目前已经公布的国产密码算法如下:

SM1:对称加密,分组长度和密钥长度都为128比特

SM2:非对称加密,用于公钥加密算法、密钥交换协议、数字签名算法(椭圆曲线问题)

SM3;杂凑算法,分组512位,输出杂凑值长度为256位

SM4:对称加密,分组长度和密钥长度都为128比特

SM9:标识密码算法,支持公钥加密、密钥交换、数字签名等安全功能

3.3 非对称加密算法RSA

3.3.1 公钥密码分类

目前公认的比较安全的公钥密码有两类:

基于大素数因子分解困难性:RSA

基于离散对数问题困难性:DH、Elgamal、ECC(椭圆曲线密码)

3.3.2 RSA算法概述

RSA算法是非对称算法,由 Ronald Rivest、Adi Shamir、Leonard Adleman三人发明。RSA算法中,公钥和私钥都可以用于加密消息,用于加密消息的密钥与用于解密消息的密钥相反。

RSA算法提供了一种保护网络通信和数据存储的机密性、完整性、真实性和不可否认性的方法。

SSH、OpenPGP、S/MIME和SSL/TLS都依赖于RSA进行加密和数字签名功能。

公钥密码思想是将传统密码的密钥K一分为二,分为加密钥Ke和解密钥Kd,用加密钥Ke控制加密,用解密钥Kd控制解密。

每个用户都将自己的姓名、地址和公开的加密钥等信息在KMC(密钥管理中心)登记,将公钥记入共享的公钥数据库PKDB(Public Key Database)。

3.3.3 RSA-三种模式-加密模式

加密模式(确保数据的秘密性)

发方:

·①A首先查PKDB, 查到B的公开的公钥KeB

·②A用KeB加密明文M得到密文(C:C=E(M,KeB)

·③A发密文C给B

收方:

·①B接受C

·②B用自己的私钥KdB解密C,得到明文M=D(C,KdB)

3.3.3 RSA-三种模式-认证模式

认证模式(确保数据的真实性)

发方:

·①A用自己的私钥KdA加密M,得到密文(C:C=E(M,KdA)

·②A发密文C给B

收方:

·①B接受C

·②B查PKDB, 查到A的公开的公钥KeA

·③用KeA解密C得到明文MI:M=D(C,KeA)

3.3.4 RSA-三种模式-混合模式

加密认证混合模式(同时确保数据的秘密性和真实性)

发方:

·①A用自己的私钥KdA加密M,得到中间密文S:S=E(M,KdA)

·②然后A查PKDB, 查到B的公开的公钥KeB

·③A用KeB加密S得到最终的密文(C:C=E(S,KeB)

·④A发密文C给B

收方:

·①B接受C

·②B用自己的私KdB解密C,得到中间密文S=D(C,KdB)

·③B查PKDB, 查到A的公开的公钥KeA。用KeA解密S得到明文M,M=D(S,KeA)

3.3.5 相关数学基础

3.4 Hash算法

3.4.1 哈希算法概念

哈希算法 Hash

HASH函数,又称为杂凑函数、散列函数,它能够将任意长度的信息转换成固定长度的哈希值(数字摘要),并且任意不同消息或文件所生成的哈希值是不一样的。

h表示hash函数,则h满足下列条件:

  • (1) h的输入可以是任意长度的消息或文件M;

  • (2) h的输出的长度是固定的;

  • (3) 给定h和M,计算h(M) 是容易的;

  • (4) 给定h的描述,找两个不同的消息M1和M2,使得h(M1) =h(M2) 是计算上不可行的。

哈希函数特性:不可逆性(单向)、无碰撞性、雪崩效应。

常见的Hash算法有:

  • (1) MD5算法:以512位数据块为单位来处理输入,产生128位的信息摘要。常用于文件校验。

  • (2) SHA算法:以512位数据块为单位来处理输入,产生160位的哈希值,具有比MD5更强的安全性。

  • (3) SM3国产算法:消息分组长度为512比特,输出256位摘要。

3.4.2 hash应用-文件完整性校验

image-20250901170549557

3.4.3 hash应用-账号密码存储

image-20250901170803530

3.4.4 hash应用-用户身份认证

增加一个随机数R做哈希 MAC=Hash(密码+R)

需要双方预先知道这个R

MAC:消除中间人攻击,源认证+完整性校验

image-20250901170913505

3.4.5 MAC

MAC(Message Authentication Code, 消息认证码

MAC消息认证码在加密的过程中有两种方法:

·①用单向散列函数的实现,MAC函数用单向hash函数加密时,MAC被称为HMAC(Hash Message Authentication Code), MAC=Hash (M+key)

·②通过分组密码的实现,比如基于AES的CBC-MAC,

image-20250901171139259

3.4.6 HA5H、MAC和HMAC对比

  • Hash能验证数据完整性,无法进行用户身份认证,计算过程无密钥参与。

  • MAC能保证数据完整性,同时可以进行用户身份验证,有key参与。可以采用Hash或对称加密算法两种技术产生MAC值。

  • HMAC是MAC的一种,可以验证数据完整性,也可以验证数据是由原始发送方发出的,使用hash函数来构造,HMAC输出长度与Hash长度一样。

3.5 数字签名

· 数字签名:签名者使用私钥待签名数据的哈希值做密码运算得到的结果,该结果只能用签名者的公钥进行验证。【私钥签名,公钥验证】

· 数字签名具有如下特点:

非否认:签名者事后不能抵赖自己的签名。(不可否认性)

真实性:接收者能验证签名,而任何其他人不能伪造签名。(解决冒充问题)

可鉴别性:如果当事的双方关于签名的真伪发生争执,能够在公正的仲裁者面前通过验证签名来确认其真伪。

不可篡改:私钥不公开,所以不能篡改签名。

· 数字签名,可以保证数据的完整性和不可否认性。

· 典型数字签名算法(公钥加密算法):RSA、Rabin、ELGamal签名体制和DSS标准。

image-20250902145111811

3.6 PKI与数字证书

3.6.1 数字证书


动物装饰