密码,最初的目的就是用于对信息的加密,计算机领域的密码技术种类繁多,但随着密码学的运用,密码还用于身份认证,防止否认等功能上。最基本的,是信息加密解密分为对称加密和非对称加密,这两者的区别在于是否在加密解密时是否使用了相同的密钥。除了信息的加密解密,还有用于确认数据完整性的单向散列技术,又称魏密码检验、指纹、消息摘要。信息的加密解密与信息的单向散列的区别时,加密解密是可以通过密钥来获取其加密的数据信息的,而单向散列则是不可逆的,信息的加密解密,数据信息或者密钥是不定长的,而单向散列可以是定长的。结合加密解密技术和单向散列技术,又有了用于防止篡改的消息认证码技术,防止伪装的数字签名技术以及认证证书。
简介:加密解密的过程中使用的是同一个密钥,也称之为单密钥加密。
密文:加密后的结果。明文:需要被加密的信息。
对称加密的问题:
密钥的配送:接收者a收到b发送来的密文,a想要解密,就必须使用和b进行加密时相同的密钥,因此b必须要把密钥也发送给a,但是这样就产生了一个矛盾,如果有一种方法能将密钥安全的发送出去,那么也可以使用这种方式来发送明文。
对称加密的实例:
1.DES
DES是美国联邦信息处理标准中所采用的一种对称加密算法。是一种将64比特的明文加密成64比特密文的对称密码算法,它的密钥长度是56位,尽管从本质上说它的密钥是64位,但是由于每隔7位会设置一个用于错误检查的比特,奇偶校验位,因此实质上密钥的长度是56比特,DES以64比特明文为一个单位进行加密,DES每次只能加密64比特的数据,如果待加密的明文过长,就需要对DES加密进行迭代,迭代的具体方案称之为模式,具体的迭代模式会在这里讲解:https://mp.csdn.net/postedit/82468369
2.3DES:详解及Go语言实现实例:https://blog.csdn.net/The_Reader/article/details/82502945
三重DES是为了增强DES的强度,将DES重复3次所得到的一种密码算法。
3DES的加密机制为:
说明:1.明文经过三次DES处理才变成最后的密文,由于DES密钥的长度实际上是56比特,因此三重DES的密钥长度就是56*3 = 168 比特,2.三重DES并不是进行三次加密(加密->加密->加密)。而是加密->解密->加密的过程,这种设计是为了让3DES能够兼容普通的des,当三重DES密钥全部相同时,3重DES就相当于普通的DES,这是因为在前两轮加密->解密之后,得到的就是最初的明文,因此之前的des加密的密文,也就可以通过这种方式用三重des来进行解密。
3des解密机制:
3.AES
AES是取代其前任标准DES新的对称加密算法,其是通过公开竞选而指定的,在评选AES的时候不仅考虑到了算法的弱点,还考虑了算法的执行速度和实现的难度。
简介:非对称加密也称之为公钥密码,密钥分为两种分别为加密密钥和解密密钥,发送者使用加密密钥加密数据,消息接收这使用解密密钥解密数据,解密密钥一开始就有接收者自己保管,因此只要将加密密钥发送给对方就可以解决密钥配送问题。由于加密密钥可以任意公开,因此该密钥也被称之为公钥,解密密钥绝对不能公开,只能由自己保管,因此也被称之为私钥,公钥和私钥是一一对应的关系,由公钥加密的文件只能由对应的私钥进行解密。
非对称加密实例:
ECC椭圆曲线算法
椭圆曲线密码学(英语:Elliptic curve cryptography,缩写为ECC),一种建立公开金钥加密的算法,基于椭圆曲线数学,椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。
ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全。ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。
RSA加密算法:概念及实例详解:https://blog.csdn.net/The_Reader/article/details/82503060
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA 的安全性,是基于现阶段对大整数的质因数分解未发现高效的算法。一旦发现,则 RSA 就能够破译。
强度比较:密码强度,默认的 RSA 长度为 2048 bit
AES(bit) | RSA(bit) |
---|---|
128 | 3072 |
192 | 7680 |
256 | 15360 |
存在问题:
单向散列技术是为了保证信息的完整性,防止信息被篡改的一项技术。
特点:
MD(Message Digest)
MD 散列算法分为 MD4, MD5 两套算法,都可计算出 128 bits 的散列。MD 系列算法已经被中国科学家王小云破解(可于有限时间内找出碰撞)。
SHA(Secure Hash Algorithm)
SHA是单向散列算法的一个标砖的统称,其下又分为SHA-1,SHA-2,SHA-3三套算法
其中 SHA-1 可生成 160 bit 散列值,已被攻破(由王小云、姚期智联手破解),不推荐使用。
SHA-2 可生成不同长度的散列,如 256 bits (SHA-256), 384 bits (SHA-384), 512 bits (SHA-512),同时对输入的消息长度存在一定限制,SHA-256 上限接近于 2^{64}-1比特,SHA-384、SHA512 则接近于 2^{128}-1 比特。
SHA-3,是 2012 年被采用的最新标准,采用了 Keccak 算法。
Keccak 算法的优点:
MD4,5, RIPEMD, RIPEMD-160, SHA-1, SHA-2 均采用 MD 结构(Merkle-Damgard construction)
SHA-3 采用海绵结构
算法 | 散列长度,bit | 输入长度 | |
---|---|---|---|
MD4 (Message Digest 4) | 128 | 已破解 | |
MD5 | 128 | 已破解 | |
SHA-1 | 160 | 2^{64} = 2048 \text{ PB} | 谨慎使用,不推荐 |
SHA2 (SHA-224) | 224 (32*8 - 32) | 2^{64} | - 32 表示截去 32 bit,下同 |
SHA2 (SHA-256) | 256 (32*8) | 同上 | |
SHA2 (SHA-512/224) | 224 (64*8 - 288) | 同上 | |
SHA2 (SHA-512/256) | 256 (64*8 - 256) | 同上 | |
SHA2 (SHA-384) | 384 (64*8 - 128) | $2^{128}$ | |
SHA2 (SHA-512) | 512 | 同上 | |
SHA-3 | 无限制 | ||
RIPEMD-128 | 已破解 | ||
RIPEMD-160 | 谨慎使用,是比特币采用的 | ||
RIPEMD-256 | |||
RIPEMD-320 |
对散列的攻击
暴力破解,冗余碰撞
生日攻击,针对强抗碰撞性
采用非对称加密的消息认证码的技术,就是数字签名。
数字签名步骤
由于用于解密的是公钥,是公开的。因此任何人都可以验证数字签名。
数字签名的核心,就是非对称加密,在前文已经介绍了一些非对称加密算法,均可用于数字签名之中。
常见的有如下几种:
数字签名的问题
数字签名由于采用了非对称加密,因此可以防止否认。但发送方怎么能知道所收到的公钥就是接收方私钥所对应的公钥呢?
如果不小心采用了攻击者的公钥,然后接收了攻击者私钥签名的信息,公私钥完全匹配,于是信息就被接受了,那么就 GG 了。
因此,业界便推出了证书。由权威机构颁布,认证公钥的合法性,那么就可以了
对数字签名所发布的公钥进行权威的认证,便是证书。证书可以有效地避免中间人攻击的问题。
PKC
:Public-Key Certificate,公钥证书,简称证书。CA
:Certification Authority,认证机构。对证书进行管理,负责 1.生成密钥对、2. 注册公钥时对身份进行认证、3. 颁发证书、4. 作废证书。其中负责注册公钥和身份认证的,称为 RA(Registration Authority 注册机构)PKI
:Public-Key Infrastructure,公钥基础设施,是为了更高效地运用公钥而制定的一系列规范和规格的总称。比较著名的有PKCS(Public-Key Cryptography Standards,公钥密码标准,由 RSA 公司制定)、X.509
等。PKI 是由使用者、认证机构 CA、仓库(保存证书的数据库)组成。CRL
:Certificate Revocation List 证书作废清单,是 CA 宣布作废的证书一览表,会带有 CA 的数字签名。一般由处理证书的软件更新 CRL 表,并查询证书是否有效。下图比较详细的阐述了证书的使用步骤
对于认证机构的公钥,可以由其它的认证机构施加数字签名,从而对认证机构的公钥进行验证,即生成一张认证机构的公钥证书,这样的关系可以迭代好几层,一直到最高一层的认证机构时该认证机构就称为根CA,根CA会对自己的公钥进行数字签名叫做自签名。