导图社区 2023软考信息安全工程师(第四版) 第三章密码学基本理论
2023软考信息安全工程师备考指南,本文整理考点、重点、难点,备考无忧,欢迎大家学习。
编辑于2023-05-03 16:54:47 山东省第三章 密码学基本理论
一、 密码学概况
密码学是一门研究信息安全保护的科学,以实现信息的保密性、完整性、可用性及抗抵赖性。密码学主要由密码编码和密码分析两个部分组成,其中,密码编码学研究信息的变换处理以实现信息的安全保护,而密码分析学则研究通过密文获取对应的明文信息。
目前,密码成为网络与信息安全的核心技术和基础支撑。
2005年4月1日起国家施行《中华人民共和国电子签名法》。
2006年我国政府公布了自己的商用密码算法,成为我国密码发展史上的一件大事。2019年《中华人民共和国密码法》草案已经发布。
密码学相关概念:
明文:需要采用密码技术进行保护的消息。
密文:是指用密码技术处理过明文的结果,通常称为加密消息。
加密:将明文变换成密文的过程。解密:由密文恢复出原明文的过程。
加密算法:加密过程所使用的一组操作运算规则。
解密算法:解密过程所使用的一组操作运算规则。
加密和解密算法的操作通常都是在密钥控制下进行的,分别称为加密密钥和解密密钥。
根据密码分析者在破译时已具备的前提条件,可将攻击密码的类型分为以下五种:
(1)唯密文攻击。密码分析者只拥有一个或多个用同一个密钥加密的密文,没有其他可利用的信息。
(2)已知明文攻击。密码分析者根据已经知道的某些明文-密文对来破译密码。一个密码仅当它能经得起已知明文攻击时才是可取的。
(3)选择明文攻击。指密码分析者能够选择明文并获得相应的密文。这是对密码分析者十分有利的情况。
(4)密文验证攻击。密码分析者对于任何选定的密文,能够得到该密文“是否合法”的判断。
(5)选择密文攻击。指密码分析者能够选择密文并获得相应的明文。这也是对密码分析者十分有利的情况。这种攻击主要攻击公开密钥密码体制,特别是攻击其数字签名。
二、密码体制分类
私钥密码体制
又称为对称密码体制,该体制的特点是加密和解密使用相同的密钥。当用户应用这种体制时,消息的收发双方必须事先通过安全渠道交换密钥。
三个缺点:密钥分配问题、密钥管理问题、无法认证源。
常见的对称密钥加密算法如下:
DES:替换+移位、56位密钥、64位数据块、速度快,密钥易产生。
3DES:三重DES,两个56位密钥K1、K2。
AES:是美国联邦政府采用的一种区块加密标准,这个标准用来替代原先的DES。对其的要求是至少像3DES一样安全”。
RC-5:RSA数据安全公司的很多产品都使用了RC-5。
IDEA:128位密钥,64位数据块,比DES的加密性好,对计算机功能要求相对低。
公钥密码体制
又称为非对称加密体制,就是对数据的加密和解密的密钥是不同的。其缺点是加密速度慢(密钥有1024位,计算量大,不适合加密大数据)。
非对称技术的原理是:发送方甲方和接收方乙方都分别有各自的公钥和私钥,且甲方的公钥加密只能由甲方的私钥解密,乙方同。双方的公钥是可以共享的,但是私钥只能自己保密,此时,甲方要传输数据给乙方,明显应该使用乙方的公钥来加密,这样,只有使用乙方的私钥才能解密,而乙方的私钥只有乙方才有,保证了数据的保密性,也不用分发解密的密钥。
优点:密钥分发方便、密钥保管量少、支持数字签名。
常见的非对称加密算法如下:
RSA:512位(或1024位)密钥,计算机量极大,难破解。
Elgamal、ECC(椭圆曲线算法)、背包算法、Rabin、D-H等。
混合密码体制
发送方用对称密钥加密需发送的消息,在用接收方的公钥加密对称密钥,然后一起发送给接收方;接收方先用自己的私钥解密得到对称密钥,然后用对称密钥解密得到明文。
三、 常见密码算法
DES是数据加密标准的简称,是一个分组加密算法,能够支持64比特的明文块加密,其密钥长度为56比特。
三重DES(TDEA):工作机制是使用DES对明文进行“加密-解密-加密”操作,如下:
加密:K1加密->K2解密->K3加密
解密:K3解密->K2加密->K1解密
一般,K1和K3是相同的密钥。
IDEA是国际数据加密算法的简单记,是一个分组加密算法,其明文和密文分组都是64比特,密文长度为128比特。该算法的设计思想是“混合使用来自不同代数群中的运算”。
AES算法满足的要求:算法是没有密级的;算法的全部描述必须公开披露;算法必须可以在世界范围内免费使用;密码系统支持至少128比特长的分组;密码支持的密钥长度至少为128/192和256比特。
RSA密码
数学基础
欧拉函数:对于一个正整数n,小于n且与n互素的正整数的个数,记为φ(n)。对于一个素数n,可知φ(n)=p-1;
对于两个素数p和q,它们的乘积满足n=p*q,则可知φ(n)=(p-1)*(q-1)。
欧几里得算法:gcd(a,b)表示a和b的最大公因数,如gcd(a,b)=1,则表示a,b的最大公因数为1,说明a和b互素。
同余:两个整数a.b,若它们除以整数m所得的余数相等,则称a与b对于模m同余,或a同余于b模m,记作a≡b(mod m),表示a与b对模m同余。例如:26=2(mod 12)。
RSA算法结构
是一种基于大合数因子分解困难性的公开密钥密码,简称为RSA密码,既可以用于加密,又可以用于数字签名,是目前应用最广泛的公开密钥算法。基本的RSA 密码体制:参数、加密算法、解密算法。
1.参数定义和密钥生成
① 随机地选择两个大素数p 和q,而且保密
②计算n=p*q,将n 公开
③ 计算ф(n)=(p-1)(q-1),对φ(n)保密
④ 随机地选取一个正整数e,1<e<ф(n)且gcd(e,ф(n))=1,将e 公开
⑤ 根据e*d=1 modd(n)时,求出d,并对d 保密
2.加密: C=Me mod n
3.解密:M=Cd mod n
RSA算法实例
1.参数定义和密钥生成
①选取素数p=47,q=71,p和q保密
②计算n=47*71=3337,n公开
③计算φ (n) = 46*70=3220,φ (n)保密
④随机的选取e=79,满足1<79<3220,且gcd (79, 3220)=1,e公开
⑤根据79*d =1 mod 3220,求出d=1019,d保密
2.加密: 设明文M=688 232 687 966 668 3,进行分组,M1=688, M2=232, M3=687,M4=966,M5=668,M6=003。 M1的密文C1=688^79 mod 3337=1570, 继续进行类似计算,可得最终密文C=1570 2756 2091 2276 2423 158
3.解密:计算M1=1570^1019 mod 3337=688,类似地可解密还原出其他明文
乘法逆元求法
例1: 5*d=1 mod 64,求d
本质是5*d mod 64 = 1 mod 64,假设5*d除以64的商为x,就有5*d = 64*x + 1 mod 64,即d = (64*x + 1) / 5,从x=1开始依次取值,发现x=1时,65/5=13可以整除,因此d=13
例2: 5*d=1 mod 72,假设5*d除以72的商为x,就有5*d = 72*x + 1,即d = (72*x + 1) / 5,从x=1开始依次取值,73/5不能整除,x=2时,145/5=29可以整除,因此d=29
通用公式:
a*d=b mod m,已知a,b,m,求d,根据原始定义,本质上就是b mod m = a*d mod m,可以假设a*d除以m的商为x,余数是b mod m,依据乘除法公式有:a*d = m*x +b mod m因此:
私钥d= (m*x + b mod m) / a,其中,只有x是未知数,可从1开始代入,直到右边能整除为止。
RSA密码的安全性
因子分解攻击:小合数的因子分解是容易的,大合数的因子分解却是十分困难的。要应用RSA密码,应当采用足够大的整数n。只要合理地选择参数,正确地使用,RSA就是安全的。为了确保RSA密码的安全,必须认真选择RSA的密码参数,各个参数选择如下:
一般加密密钥和认证密钥选n为1024位,而平台根密钥和存储根密钥则选n为2048位
p和q要足够大并且p和q应为强素数
为了使加密速度快,e的二进制表示中应当含有尽量少的1
为了使解密速度快,d应尽可能小,但也不能太小,当d小于n的1/4 时,已有求出d的攻击方法
不要许多用户共用一个模数n
国产密码算法
是指由国家密码研究相关机构自主研发,具有相关知识产权的商用密码算法,目前已经公布的国产密码算法如下:
SM1
对称加密,分组长度和密钥长度都为128 比特
SM2
非对称加密,用于公钥加密算法、密钥交换协议、数字签名算法
国家标准推荐使用素数域256位椭圆曲线
SM3
杂凑算法,杂凑值长度为256比特(哈希算法)
SM4
对称加密,分组长度和密钥长度都为128比特
SM9
标识密码算法
四、Hash函数与数字签名
Hash函数
hash函数,又称为杂凑函数、散列函数,它能够将任意长度的信息转换成固定长度的哈希值(又称数字摘要或信息摘要),并且任意不同消息或文件所生成的哈希值是不一样的。令h表示hash函数,则h满足下列条件:
(1)h的输入可以是任意长度的消息或文件M
(2)h的输出的长度是固定的
(3)给定h和M,计算h (M)是容易的
(4)给定h的描述,找两个不同的消息M1和M2,使得h (M1)=h (M2)在计算上是不可行的
(5)根据信息摘要无法还原明文
常见的Hash算法
MD5算法:以512位数据块为单位来处理输入,产生128位的信息摘要
SHA算法:以512位数据块为单位处理输入,产生160位的哈希值,具有比MD5更强的安全性
SM3国产算法:2010年公布,该算法消息分组长度为512比特,输出256比特信息摘要。采用了Merkle-Damgard (M-D结构) 结构
数字签名
数字签名指签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果。该结果只能用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性。
完善的签名应满足三个条件
(1)非否认:签名者事后不能抵赖自己的签名
(2)真实性:接收者能验证签名,而任何其他人不能伪造签名
(3)可鉴别性:如果当事的双方关于签名的真伪发生争执,能够在公正的仲裁者面前通过验证签名来确认其真伪
一个数字签名方案一般由签名算法和验证算法组成。签名算法密钥是秘密的,只有签名的人掌握(加密过程);而验证算法密钥是公开的,以便他人验证(解密过程)。典型的数字签名方案有RSA、Rabin、EIGamal 签名体制和DSS标准
签名和加密很相似,一般是签名者利用私钥对需签名的数据进行加密,验证方利用签名者的公钥对签名数据做解密运算。签名与加密的不同之处在于目的不同,签名是为了保证不可抵赖性和完整性,加密是为了保证机密性。
五、密钥管理与数字证书
密钥管理
密码系统的安全性依赖于密码管理。密码管理主要分成三个方面内容,即密钥管理、密钥管理政策、密码测评。
(1)密钥管理:主要围绕密钥的生命周期进行,包括密钥生成、密钥存储、密钥分发、密钥使用、密钥更新、密钥撤销、密钥备份、密钥恢复、密钥销毁、密钥审计。
(2)密钥管理政策:
《商用密码管理条例》:主要有商用密码的科研生产管理、销售管理、使用、安全保密管理。
《中华人民共和国密码法》:密码分为核心密码、普通密码和商用密码,实行分类管理。核心密码、普通密码用于保护国家秘密信息,属于国家秘密,由密码管理部门依法实行严格统一管理。 商用密码用于保护不属于国家秘密的信息,公民、法人和其他组织均可依法适用商用密码保护网络与信息安全。
(3)密码测评:指对相关密码产品及系统进行安全性、合规性评估,以确保相关对象的密码安全有效,保障密码系统的安全运行。目前,国家设立了商用密码检测中心。
数字证书
数字证书也称公钥证书,是由证书认证机构(CA)签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及扩展信息的一种数据结构。
数字证书的基本信息域包含:版本号、序列号、签名算法、颁发者、有效日期、主体、主体公钥信息、颁发者唯一标识符、主体唯一标识符、扩展项。
数字证书分类:
按类别:可分为个人证书、机构证书和设备证书
按用途:可分为签名证书和加密证书
签名证书:用于证明签名公钥的数字证书
加密证书:用于证明加密公钥的数字证书
为更好的管理数字证书,一般是基于PKI技术建立的数字证书认证系统(简称CA),CA提供数字证书的申请、审核、签发、查询、发布以及证书吊销等全生命周期的管理服务。
数字证书认证系统的构成包括目录服务器、0CSP服务器、注册服务器、签发服务器等。
六、安全协议
Diffie-HeIIman密钥交换协议
Diffie-HeIIman密钥交换协议:基于求解离散对数问题的困难性,即对于等式:Cd =M mod P,在已知C和P的前提下,由d求M很容易,只相当于进行一次指数运算。而再由M反过来求d,则需要指数级次计算。随着P取得足够大,就能实现足够的安全强度。
当A和B在一个不安全的信道上交换密钥时,其操作步骤如下:
SSH协议
SSH(安全外壳,Secure Shell):它是基于公钥的安全应用协议。
SSH协议组成:
SSH传输层协议:提供算法协商和密钥交换,并实现服务器的认证,最终形成一个加密的安全连接,该安全连接提供完整性、保密性和压缩选项服务
SSH用户认证协议:利用传输层的服务来建立连接,使用传统的口令认证、公钥认证、主机认证等多种机制认证用户
SSH连接协议:在前面两个协议的基础上,利用已建立的认证连接,并将其分解为多种不同的并发逻辑通道,支持注册会话隧道和TCP转发,而且能为这些通道提供流控服务以及通道参数协商机制。
SSH的工作机制共分7个步骤,如图所示:
步骤[4]中用户认证服务器公钥真实性有三种方法:
第一种,用户直接随身携带含有服务器公钥的拷贝,在进行密钥交换协议前,读入客户计算机。
第二种,从公开信道下载服务器的公钥和它对应的指纹(hash、信息摘要)后,先通过电话验证服务器的公钥指纹的真实性,然后用HASH软件生成服务器的公钥新指纹,比较下载的指纹和新生成的指纹,若相同,则公钥是真实的,否则为虚假。
第三种,通过PKI技术来验证服务器
在实际应用中,SSH在端口转发技术的基础上,能够支持远程登录、rsh、rlogin、文件传输等多种安全服务。Linux系统一般提供SSH服务,端口号一般为22,虽然SSH是一个安全协议,但是也有可能受到中间人攻击和拒绝服务攻击。
七、密码学网络安全应用
密码技术常见应用场景类型
网络用户安全
1.基于公钥密码学技术,把用户实体信息与密码数据绑定,形成数字证书,标识网络用户身份,并提供身份鉴别服务
2.使用加密技术,保护网络用户的个人敏感信息
物理和环境安全
1.对物理区域访问者的身份进行鉴别,保证来访人员的身份真实性
2.保护电子门禁系统进出记录的存储完整性和机密性
3.保证视频监控音像记录的存储完整性和机密性
网络和通信安全
1.对通信实体进行双向身份鉴别,保证通信实体身份的真实性
2.使用数字签名保证通信过程中数据的完整性
3.对通信过程中进出的敏感字段或通信报文进行加密
4.使用密码安全认证协议对网络设备进行接入认证,确保接入的设备身份的真实性
设备和计算安全
1.使用密码安全认证协议对登录设备用户的身份进行鉴别
2.使用Hash函数及密码算法建立可信的计算环境
3.使用数字签名验证重要可执行程序来源的真实性
4.使用加密措施保护设备的重要信息资源,如口令文件
5.用SSH及SSL等密码技术,建立设备远程管理安全信息传输通道
应用和数据安全
1.使用安全协议及数字证书对登录用户进行身份鉴别,保证应用系统用户身份的真实性
2.加密应用系统访问控制信息
3.应用SSH及SSL等密码技术,传输重要数据,保护重要数据的机密性和完整性
4.加密存储重要数据,防止敏感数据泄密
5.使用Hash 函数、数字签名等密码技术,保护应用系统的完整性,防止黑客攻击改
业务应用创新
1.利用数字证书和数字签名等密码技术,构建网络发票
2.使用Hash函数等密码技术,构建区块链
3.利用密码技术,建立电子证照
路由器安全应用参考
1. 路由器口令管理
为了路由器口令的安全存储,路由器先用MD5对管理员口令信息进行Hash计算,然后再保存到路由器配置文件中
2. 远程安全访问路由器
远程访问路由器常用Telnet,但Telnet容易泄露敏感的口令信息,因此,管理员为增强路由器的安全管理,使用SSH替换Telnet
3. 路由信息交换认证
路由器之间需要进行路由信息的交换,以保证网络路由正常进行,因此需要路由器之间发送路由更新包。为了防止路由欺诈,路由器之间对路由更新包都进行完整性检查,以保证路由完整性。目前,路由器常用MDS-HMAC来实现。如果路由信息在传输过程中被篡改了,接收路由器通过重新计算收到路由信息的Hash值,然后与发送路由器的路由信息的Hash值进行比较,如果两个Hash值不相同,则接收路由器拒绝路由更新包
路由器信息交换认证示意图如下
Web网站安全应用参考
Web网站是网络应用的重要组成部分,许多重要的网络应用业务如网络银行、新闻发布、电子商务等都基于Web服务开展,其安全性变得日益重要,Web网站已成为黑客攻击的重点目标。
web网站安全威胁:信息泄露、非授权访问、网站假冒、拒绝服务等。
密码学在Web方面的安全应用:Web用户身份认证、Web 服务信息加密处理以及Web信息完整性检查等。
防护措施:目前,重要信息网站通过数字证书和SSL共同保护Web服务的安全。利用SSL和数字证书,可以防止浏览器和Web服务器间的通信信息泄密或被篡改和伪造。
电子邮件安全应用参考
普通的电子邮件:明文传递,电子邮件的保密性难以得到保证,同时其完整性也存在安全问题。
防护措施:利用PGP(Pretty Good Privacy)来保护电子邮件的安全。PGP是一种加密软件,它能够防止非授权者阅读邮件,并能对用户的邮件加上数字签名,从而使收信人可以确信发信人的身份。PGP应用的密码技术:密钥管理算法选用RSA、数据加密算法IDEA、完整性检测和数字签名算法,采用了MD5和RSA以及随机数生成器,PGP 将这些密码技术有机集成在一起,利用对称和非对称加密算法的各自优点,实现了一个比较完善的密码系统。