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