密码学的主要目的是保持明文的秘密以防止攻击者获知,而密码分析学则是在不知道密钥的情况下,识别出明的科学。所谓明文是指需要采用密码技术进行保护的消息。而密文则是指用密码技术处理过明文的结果,通称为加密消息。将明文变换成密文的过程称作加密,其逆过程,即由密文恢复出原明文的过程称作解密。加究过程所使用的一组操作运算规则称作加密算法,而解密过程所使用的一组操作运算规则称作解密算法。加密口解密算法的操作通常都是在密钥控制下进行的,分别称为加密密钥和解密密钥。
根据密码分析者在破译时已具备的前提条件,人们通常将密码分析攻击类型分为五种,分别叙述如下:
私钥密码体制又称为对称密码体制,指广泛应用的普通密码体制,该体制的特点是加密和解密使用相同的密钥。
私钥密码体制的密钥分配和管理极为重要。密钥分配必须使用安全途径,例如由专门人员负责护送密钥给接收者。在不同的接收者分别进行加密通信或信息交换时,则需要有几个不同的密钥。假设网络中有n 个使用者,使用者之间共享一个密钥,则共有n(n-1) /2 个密钥。
私钥密码体制的缺陷可归结为三点:密钥分配问题、密钥管理问题以及无法认证源。虽然私钥密码体制有不足之处但私钥密码算法处理速度快,人们常常将其用作数据加密处理。
私钥密码典型算法有DES 、3DES、RC4、RC5、IDEA 、AES、SM1、SM4等
公钥密码体制又称为非对称密码体制,其基本原理是在加密和解密的过程中使用不同的密钥处理方式,其中,加密密钥可以公开,而只需要把解密密钥安全存放即可。
公密码体制有以下优点:
公钥密码典型算法有: RSA、圆曲线密码、SM2等
混合密码体制利用公钥密码体制分配私钥密码体制的密钥,消息的收发双方共用这个密钥,然后按照私钥密码体制的方式,进行加密和解密运算。
DES(Data Encryption Standard)是数据加密标准的简称,由IBM 公司研制。DES 是一个分组加密算法,能够支待64 比特的明文块(分组)加密,其密长度为56 比特。DES 是世界上应用最广泛的密码算法。- 随着计算机系统运算速度的增加和网络计算的进行,DES56 比特的密长度已不足以保证密码系统的安全。NIST 于1999年10 月25日采用三重DES (riple Data Encryption Algorithm,TDEA)作为过渡期司的国家标准,以增强DES的安全性,并开始征集AES(Advanced Encryption Standard) 算法。
S盒代替是DES算法的关键步骤,所有的其他的运算都是线性的,易于分析,而S盒是非线性的,相比于其他步骤是供了更好安全性。S盒的功能就是一种简单的”代替“操作。S盒是将48比特压缩成32比特,S盒接受特定数量的输入48比特,经过8个盒将其转换为32比特输出。
一个S盒就是一个4行16列的表,盒中的每一项都是一个4位二进制数表示的十进制数。S盒的6个输入确定了其对应的那个盒。输入的高低两位做为行数H,中间四位做为列数L,在S-BOX中查找第H行L列对应的数据。
IDEA(nternational Data Enryption Algorithm)是国际数据加密算法的简记,是一个分组加密处理算法,其明文和密文分组都是64比特,密钥长度为128 比特。 IDEA 算法能够接受64比特分组加密处理,同一算法既可用于加密又可用于解密,该算法的设计思想是”混合使用来自不同代数群中的运算”。
参与AES 的候选算法中,Rinae 提供了安全性、软件和硬件性能、低内存需求以及灵活性的最好的组合,因此美国国家标准技术研究所(NIST)确定选择Rindael 作为AES。AESAdvanced Encryption Standard)算法必须满足下面的要求
密码必须是没有密级的,绝不能像商业秘密那样来保护它
算法的全部描述必须公开披露
密码必须可以在世界范围内免费使用
密码系统支持至少128 比特长的分组;
密码支持的密钥长度至少为128 、192 和256 比特。
RSA 算法是非对称算法,在RSA 加密算法中,公钥和私钥都可以用于加密消息,用于加密消息的密钥与用于解密消息的密钥相反。RSA 算法提供了一种保护网络通信和数据存储的机密性、完整性、真实性和不可否认性的方法。相关数学名词理解:因数、素数、余数、模运算、逆元、欧拉函数、欧几里得算法( 辗转求余于RSA算法基于大整数因子分解的困难性,该算法的步骤如下
第一步,生成两个大素数p和q
第二步,计算这两个素数的乘积n=pq。
第三步,计算小于n 并且与n 互素的整数的个数,即欧拉函数(n)=(p-1)(g-1)。
第四步,选取一个随机数e,且满足1
第六步,保密d、p 和q,而公开n 和e,即d 作为私钥,而 n和e 作为公钥。
目前,已经公布的国产密码算法主要有SM1分组密码算法、SM2 圆曲线公钥密码算法、SM3密码杂凑算法、SM4分组算法、SM9 标识密码算法。
SM1算法未公开,只能集成在芯片中。
SM2算法基于圆曲线,因1024位的RSA算法面临威胁,我国用SM2替换RSA算法SM3杂凑(哈希)算法主要用于数字签名及验证、消息认证码生成及验证、随机数生成。SM4 无线局域网标准的分组加密算法,对标AES。
SM9是标识密码算法主要用于身份认证,加密强度等同于3072位密钥的RSA加密算法
杂凑函数简称Hash 函数,它能够将任意长度的信息转换成固定长度的哈希值(又称数字摘要或消息摘要 ),并且任意不同消息或文件所生成的哈希值是不一样的。
Hash算法
常见的Hash算法有MD5、SHA和SM3
MD5(Message Digest Algorithm-5)算法以512位数据块为单位来处理输入,产生128 位的消息摘要,即MD5能产生128 比特长度的哈希值。MD5 使用广泛,常用在文件完整性检查。SHA(Secure Hash Algorithm)算法与MD5 的设计原理类似,同样也以512 位数据块为单位来处理输入,产生160位的哈希值,具有比MD5 更强的安全性。
SHA 算法的安全性不断改进,已发布的版本有SHA-2、SHA-3。SHA 算法立生的哈希值长度有SHA-224、SHA-256、SHA-384、SHA-512等
SM3 是国家密码管理局于2010 年公布的商用密码杂凑算法标准。该算法消息分组长度为512 比特,输出HASH值长度为256 比特,采用Merkle-Damgard 结构。
数字签名(Diqital Siqnature)是指签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果。该结果只能用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性。
数字签名至少应满足以下三个条件:
一个数字签名方案一般由签名算法和验证算法组成。签名算法密钥是秘密的,只有签名的人掌握,而验证算法则是公开的,以便他人验证。典型的数字签名方案有RSA 签名体制、Rabin签名体制、EIGamal 签名体制和DSS(DataSignature Standard) 标准。
签名与加密的不同之处在于,加密的目的是保护信息不被非授权用户访问,而签名是使消息接收者确信信息的发送者是谁,信息是否被他人篡改。
推荐文章 必看
https://blog.csdn.net/TheSkyLee/article/details/108699243
Diffie-Hellman 密钥交换协议
Difie-Hellman 密钥交换协议基于求解离散对数问题的困难性。
SSH
SSH 是Secure Shell 的缩写,即安全外壳”,它是基于的安全应用协议,由SSH 传输层协议、SSH 用户认证协议和SSH 连接协议三个子协议组成,各协议分工合作,实现加密、认证、完整性检查等多种安全服务。
用户为了认证服务器的公钥真实性,有三种方法来实现
在实际的应用中,SSH 在端口转发技术的基础上,能够支持远程登录(lelnet)、rsh、rlogin 、文件传输(scp)等多种安全服务。Linux 系统一般提供SSH 服务,SSH的服务进程端口通常为22虽然
SSH是一个安全协议,但是也有可能受到中间人攻击和拒绝服务攻击。