导图社区 密码学基本理论
私钥(对称)密码体制 特点:加密和解密使用相同的密钥,当用户应用这种体制时,消息的收发双方必须事先通过安全渠道交换密钥 缺点 密钥分配问题 密钥管理问题 无法认证源 常见对称密钥加密算法 DES:替换+...
编辑于2022-10-11 17:29:15 湖北省3.密码学基本理论
1. 密码学基本理论
1. 密码学发展简况
密码学是一门研究信息安全保护的科学,以实现信息的保密性、完整性、可用性及抗抵赖性。密码学主要由密码编码和密码分析两个部分组成,其中,密码编码学研究信息的变换处理以实现信息的安全保护,而密码分析学则研究通过密文获取对应的明文信息。---简单理解就是加密、解密
密码成为网络与信息安全的核心技术和基础支撑。
2005年4月1日起国家施行《中华人民共和国电子签名法》
2006年我国政府公布了自己的商用密码算法,成为我国密码发展史上的一件大事。
2019年《中华人民共和国密码法》草案已经发布。于2020年1月1日正式实施
2. 密码学基本概念
明文:需要采用密码技术进行保护的消息。
密文:是指用密码技术处理过明文的结果,通常称为加密消息。加密:将明文变换成密文的过程。
加密:将明文变换成密文的过程。
解密:由密文恢复出原明文的过程。
加密算法:加密过程所使用的一组操作运算规则。
解密算法:解密过程所使用的一组操作运算规则。
加密和解密算法的操作通常都是在密钥控制下进行的,分别称为加密密钥和解密密钥。
3. 密码安全性分析
攻击密码的类型
(1)唯密文攻击。密码分析者只拥有一个或多个用同一个密钥加密的密文,没有其他可利用的信息。
(2)已知明文攻击。密码分析者仅知道当前密钥下的一些明文及所对应的密文。
(3)选择明文攻击。密码分析者能够得到当前密钥下自己选定的明文所对应的密文。这是对密码分析者十分有利的情况。
(4)密文验证攻击。密码分析者对于任何选定的密文,能够得到该密文“是否合法”的判断。
(5)选择密文攻击。指密码分析者能够选择密文并获得相应的明文。这也是对密码分析者十分有利的情况。这种攻击主要攻击公开密钥密码体制,特别是攻击其数字签名。
2. 密码学概况密码体制分类
1. 私钥密码体制
私钥密码体制又称为对称密码体制,该体制的特点是加密和解密使用相同的密钥。当用户应用这种体制时,消息的收发双方必须事先通过安全渠道交换密钥。
缺点:密钥分配问题、密钥管理问题、无法认证源。---分配问题,可以理解为“分发问题”,这里是说如果A要把自己的私钥发给B,得需要一个安全的渠道。管理问题,是说如果有n个用户需要互相通信,那么每个人都都要管理n (n-1) /2密钥。
常见的对称密钥加密算法
DES:替换+移位、56位密钥、64位数据块、速度快,密钥易产生。
3DES:三重DES,两个56位密钥K1、K2。---两个56,其实就是112位密钥
AES:是美国联邦政府采用的一种区块加密标准,这个标准用来替代原先的DES。对其的要求是“至少像3DES一样安全”
RC-5: RSA数据安全公司的很多产品都使用了RC-5。
IDEA:128位密钥,64位数据块,比DES的加密性好,对计算机功能要求相对低。
2. 公钥密码体制
公钥密码体制又称为非对称加密体制,就是对数据的加密和解密的密钥是不同的。其缺点是加密速度慢(密钥有1024位,计算量大,不适合加密大数据)。
非对称技术的原理是:发送方甲方和接收方乙方都分别有各自的公钥和私钥,且甲方的公钥加密只能由甲方的私钥解密,乙方同。双方的公钥是可以共享的,但是私钥只能自己保密,此时,甲方要传输数据给乙方,明显应该使用乙方的公钥来加密,这样,只有使用乙方的私钥才能解密,而乙方的私钥只有乙方才有,保证了数据的保密性,也不用分发解密的密钥。
优点:密钥分发方便、密钥保管量少、支持数字签名。
常见的非对称加密算法
RSA:512位(或1024位)密钥,计算机量极大,难破解。
EIgamal、ECC(m圆曲线算法)、背包算法、Rabin、D—H等
3. 混合密码体制
混合密码体制:发送方用对称密钥加密需要发送的消息,再用接收方的公钥加密对称密钥,然后一起发送给接收方;接收方先用自己的私钥解密得到对称密钥,然后用对称密钥解密得到明文。
补充。数字信封,被公钥加密后的对称密码称之为数字信封。见上图,明文先用对称密码加密,然后再用Bob的公钥密码再进行加密
3. 常见密码算法
1. DES
DES是数据加密标准的简称,是一个分组加密算法,能够支持64比特的明文块加密,其密钥长度为56比特。
2. 三重DES(TDEA)
三重DES(TDEA):工作机制是使用DES对明文进行“加密—解密—加密”操作,如下加密:K1加密—>K2解密—>K3加密。解密:K3解密—>K2加密—>K1解密。一般情况下,K1和K3是相同的密钥。----所以说,是112位加密密钥
3. IDEA
IDEA是国际数据加密算法的简单记,是一个分组加密算法,其明文和密文分组都是64比特,密钥长度为128比特。该算法的设计思想是“混合使用来自不同代数群中的运算”。
4. AES
AES算法满足的要求:算法是没有密级的;算法的全部描述必须公开披露;算法必须可以在世界范围内免费使用;密码系统支持至少128比特长的分组;密码支持的密钥长度至少为128/192和256比特。
5. RSA密码
先补充一下数学基础
欧拉函数:对于一个正整数n,小于n且与n互素的正整数的个数,记为φ(n)。对于一个素数n,可知φ(n)=p-1; ------------------- 举例,假设一个素数(正整数)5,小于5的正整数有1,2,3,4,但与n互素的正整数有1,2,3,4这4个,因此φ(n)=p-1=5-1=4,公式是成立的。但如果n为6,因为6不是素数,因此不能按上面的公式计算
对于两个素数p和q,它们的乘积满足n=p*q,则可知φ(n)=(p-1)*(q-1)。 ---------------------------------------- 举例,假设n=6,p=2,q=3,是满足n=p*q的。这个时候φ(2)=n-1=2-1=1;φ(3)=n-1=3-1=2,这个时候发现φ(6)=(2-1)*(3-1)=1*2=2,公式成立
欧几里得算法:gcd(a,b)表示a和b的最大公因数,如gcd(a,b)=1,则表示a,b的最大公因数为1,说明a和b互素。 ------------ 举例,假设a=2,b=3,a,b是互素的,这个时候gcd(2,3)=1,a,b的最大公因数为1
同余:两个整数a,b,若它们除以整数m所得的余数相等,则称a与b对于模m同余,或a同余于b模m,记作a=b(mod m),表示a与b对模m同余。例如:26=2(mod 12)。 --------------- 举例,26 mod 12=2;2 mod 12=2 ,所以说26=2(mod 12)。需要理解一下,2 mod 12=2 ,是这样一种情况:当除数比被除数大时,被除数就是余数。
RSA 算法基于大整数因子分解的困难性。---理解,比如一个大整数9999,有可能分解成1*9999,3*3333,9*1111...等多种结构,作为黑客来说,是很难知道他采用的是那种,这就是“困难性”
RSA算法的步骤
第一步,生成两个大素数P 和 q。---p,q保密
第二步,计算这两个素数的乘积n=p*q 。---将n公开,作为公钥
第三步,计算小于n 并且与n 互素的整数的个数,即欧拉函数φ(n) = (p-1)(q-1) 。
第四步,选取一个随机数e ,且满足l<e< φ(n) ,并且e 和φ(n) 互素,即gcd(e ,φ(n)) = 1 。---将e公开,作为公钥。
第五步,根据e*d=1 mod φ(n),求出d。---对d保密。---d的求法,涉及到“乘法逆元”,见下面讲解。另外,这个e*d=1 mod φ(n)就是一个公式,不要纠结其所以然
第六步,保密d、p 和q,而公开n 和e, 即d 作为私钥,而n 和e 作为公钥。
补充。m为明文,c为密文,则加密公式:m^e mod n = c ;解密公式:c^d mod n = m
乘法逆元求法
举例,比如5*d=1 mod 72,求d。 假设5*d 除以72的商为x,①(商,比如100/9,其商x就是11,余1),那么根据5*d=1 mod 72,②1 mod φ(n)的余数都是1,因此,就可以得到:5*d=72*x+1。继而推出d=(72x+1)/5,从x=1开始取值,<x可以为1,2,3,...>,(72*1+1)/5不能整除,x=2时,(72*2+1)/5即145/5=9可以整除,这个时候d就是29。---原则就是要能整除。
考试中,一般会给你,a,b,m的具体值,让你根据a*d=b mod m求d。---这里涉及到一个“通用公式”。根据第五步公式和“同余”的概率,a*d=b mod m,其本质是b mod m=a*d mod m,<解释:b mod m的余数 = a*d mod m的余数,即上面说的“若它们除以整数m所得的余数相等,则称a与b对于模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密码的安全性
因子分解攻击:小合数的因子分解是容易的,然而大合数(---其实就是n)的因子分解却是十分困难的。要应用RSA密码,应当采用足够大的整数n。只要合理地选择参数,正确地使用,RSA就是安全的。为了确保RSA密码的安全,必须认真选择RSA的密码参数
参数选择如下
一般加密密钥和认证密钥选n为1024位,而平台根密钥和存储根密钥则选n为2048位。
p和q要足够大并且p和q应为强素数。
为了使加密速度快,e的二进制表示中应当含有尽量少的1。---1少,说明e就小,根据RSA加密公式:m^e mod n = c 可知,m^e的值就小,加密量就小了
为了使解密速度快,希望选用小的d,但是d太小也是不好的。当d小于n的1/4时,己有求出d的攻击方法。---理解同上,参考解密公式
不要许多用户共用一个模数n。---n 是大合数,是要公开的,如果多用户共用一个n,当攻击成功其中一个n,那也就可能知道了其他人的n
6. 国产密码算法
SM1和SM4比较像
国产密码算法:是指由国家密码研究相关机构自主研发,具有相关知识产权的商用密码算法
SM1
对称加密,分组长度和密钥长度都为128 比特
SM2
非对称加密,用于公钥加密算法、密钥交换协议、数字签名算法
SM3
杂凑算法,杂凑值长度为256 比特。---杂凑算法,就是哈希算法
SM4
对称加密,分组长度和密钥长度都为128 比特
SM9
标识密码算法
4. Hash函数与数字签名
1. Hash 函数
hash函数,又称为杂凑函数、散列函数,它能够将任意长度的信息转换成固定长度的哈希值(又称数字摘要或信息摘要),并且任意不同消息或文件所生成的哈希值是不一样的。
令h表示hash函数,则h满足下列条件
(1)h 的输入可以是任意长度的消息或文件M;
(2) h 的输出的长度是固定的;
(3)给定h 和M, 计算h(M) 是容易的;
(4)给定h 的描述,找两个不同的消息Ml 和M2, 使得h(M1)=h(M2) 是计算上不可行的。---任意不同消息或文件所生成的哈希值是不一样的,所以计算不可行。其次,hash算法是“单向”的,不可逆
常见的Hash算法有
(1)MD5算法:以512位数据块为单位来处理输入,产生128位的信息摘要。
(2)SHA算法:以512位数据块为单位来处理输入,产生160位的哈希值,具有比MD5更强的安全性。
(3)SM3国产算法:2010年公布,该算法消息分组长度为512比特,输出256比特信息摘要。采用了Merkle-Damgard(M-D结构)结构。
2. 数字签名
数字签名是指签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果。该结果只能用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性。---看到杂凑,就可以知道“数字签名”和“hash函数”可以联合使用了
完善的签名应满足以下三个条件
①非否认:签名者事后不能抵赖自己的签名。
②真实性:接收者能验证签名,而任何其他人不能伪造签名。
③可鉴别性:如果当事的双方关于签名的真伪发生争执,能够在公正的仲裁者面前通过验证签名来确认其真伪。
一个数字签名方案一般由签名算法(---可简单理解为“加密算法”)和验证算法(---“解密算法”)组成。签名算法密钥是秘密的,只有签名的人掌握;而验证算法则是公开的,以便他人验证。典型的数字签名方案有RSA、Rabin、ElGamal签名体制和DSS标准。
签名和加密很相似,一般是签名者利用私钥对需签名的数据进行加密,验证方利用签名者的公钥对签名数据做解密运算。签名与加密的不同之处在于目的不同,签名是为了保证不可抵赖性和完整性(---利用hash算法,可以知道数据有没有被修改),加密是为了保证机密性。
数字签名工作的基本流程
前3个步骤,可以理解为“签名过程”;后3个步骤,可以理解为“验证过程”
假设Alice 需要签名发送一份电子合同文件给Bob 。Alice 的签名步骤如下:
第一步, Alice 使用Hash 函数将电子合同文件生成一个消息摘要;---理解:明文,用hash函数,转换成固定长度的哈希值(消息摘要)
第二步, Alice 使用自己的私钥,把消息摘要加密处理,形成一个数字签名;---理解:用RSA之类的算法再上述对哈希值(消息摘要)在进行加密
第三步, Alice 把电子合同文件和数字签名一同发送给Bob。---注意,这里是发了两个东西,一个是合同文件元件,一个是数字签名
Bob 收到Alice 发送的电子合同文件及数字签名后,为确信电子合同文件是Alice 所认可的,验证步骤如下:
第一步, Bob 使用与Alice 相同的Hash 算法,计算所收到的电子合同文件的消息摘要;---①hash算法就那么几种,且是公开的,比如Alice用MD5算法生成哈希值,那么Bob在验证时当然也要使用MD5算法。如果算法都不一样,那就谈不上验证了。②这里计算的“电子合同文件(原件)”的哈希值,假设为h1
第二步, Bob 使用Alice 的公钥,解密来自Alice 的加密消息摘要,恢复Alice 原来的消息摘要。---这里恢复是Bob数字签名中的加密消息摘要,假设为h2。(---这里对应上面的是“签名过程”中的“第二步”)
第三步, Bob 比较自己产生的消息摘要和恢复出来的消息摘要之间的异同。若两个消息摘要相同,则表明电子合同文件来自Alice 。如果两个消息摘要的比较结果不一致,则表明电子合同文件已被篡改。---这里有几层意思,h1=h2,一方面说明了合同文件没有被篡改(---对应“完整性”),一方面也说明了合同文件来自Alice(---对应了“数字签名”)。h1≠h2,说明了合同文件已被篡改
5. 密码管理与数字证书
1. 密码管理
密码系统的安全性依赖于密码管理。密码管理主要可以分成三个方面内容,即密钥管理、密码管理政策、密码测评。
密钥管理:主要围绕密钥的生命周期进行,包括密钥生成、密钥存储、密钥分发、密钥使用、密钥更新、密钥撤销、密钥备份、密钥恢复、密钥销毁、密钥审计。
密钥管理政策
《商用密码管理条例》:内容主要有商用密码的科研生产管理、销售管理、使用、安全保密管理。
《中华人民共和国密码法》:密码分为核心密码、普通密码和商用密码,实行分类管理。核心密码、普通密码用于保护国家秘密信息,属于国家秘密,由密码管理部门依法实行严格统一管理。商用密码用于保护不属于国家秘密的信息,公民、法人和其他组织均可依法适用商用密码保护网络与信息安全。
密码测评:是指对相关密码产品及系统进行安全性、合规性评估,以确保相关对象的密码安全有效,保障密码系统的安全运行。目前,国家设立了商用密码检测中心。
2. 数字证书
数字证书:也称公钥证书,是由证书认证机构(CA)签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及扩展信息的一种数据结构。
数字证书的基本信息域包括:版本号、序列号、签名算法、须发者、有效日期、主体、主体公钥信息、须发者唯一标识符、主体唯一标识符、扩展项。
数字证书按类别可分为个人证书、机构证书和设备证书,按用途可分为签名证书和加密证书。其中,签名证书是用于证明签名公钥的数字证书。加密证书是用于证明加密公钥的数字证书。
为更好的管理数字证书,一般是基于PKI技术建立数字证书认证系统(简称CA),CA提供数字证书的申请、审核、签发、查询、发布以及证书吊销等全生命周期的管理服务。
数字证书认证系统的构成包括目录服务器、OCSP服务器、注册服务器、签发服务器等。
6. 安全协议
1. Diffie-Hellman密钥交换协议
Dillie-Hellman 密钥交换协议基于求解离散对数问题的困难性,即对千下述等式:Cd=MmodP,其中, d 称为模P 的以C 为底数的M 的对数,在已知C 和P 的前提下,由d 求M 很容易,只相当于进行一次指数计算。而再由M 反过来求d, 则需要指数级次计算。随着P 取得足够大,就能实现足够的安全强度。
2. SSH
SSH 是Secure Shell 的缩写,即“安全外壳”,它是基于公钥的安全应用协议,由SSH 传输层协议、SSH 用户认证协议和SSH 连接协议三个子协议组成,各协议分工合作,实现加密、认证、完整性检查等多种安全服务。
①SSH 传输层协议提供算法协商和密钥交换,并实现服务器的认证,最终形成一个加密的安全连接,该安全连接提供完整性、保密性和压缩选项服务。
②SSH 用户认证协议则利用传输层的服务来建立连接,使用传统的口令认证、公钥认证、主机认证等多种机制认证用户。
③SSH 连接协议在前面两个协议的基础上,利用已建立的认证连接,并将其分解为多种不同的并发逻辑通道,支持注册会话隧道和TCP 转发(TCP-forwarding) ,而且能为这些通道提供流控服务以及通道参数协商机制。---理解:可以认为①②步骤只是建立了一个连接通道,但这个通道可以被多人使用,这种情况下就需要利用③来建立一些逻辑通道,给多人同时使用
SSH 的工作机制共分7 个步骤
目前,用户为了认证服务器的公钥真实性,有三种方法:第一种,用户直接随身携带含有服务器公钥的拷贝,在进行密钥交换协议前,读入客户计算机;第二种,从公开信道下载服务器的公钥和它对应的指纹后,先通过电话验证服务器的公钥指纹的真实性,然后用HASH软件生成服务器的公钥新指纹,比较下载的指纹和新生成的指纹,若相同,则公钥是真实的,否则为虚假。第三种,通过PKI技术来验证服务器。
在实际的应用中,SSH在端口转发技术的基础上,能够支持远程登录(Telnet)、rsh、rlogin、文件传输等多种安全服务。Linux系统一般提供SSH服务,端口号一般为22。
虽然SSH是一个安全协议,但是也有可能受到中间人攻击和拒绝服务攻击。
7. 密码学网络安全应用
略...