密码学(一)—— 背景、常用的密码算法简介,单向散列简介、数字签名简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/The_Reader/article/details/83862204

背景

密码,最初的目的就是用于对信息的加密,计算机领域的密码技术种类繁多,但随着密码学的运用,密码还用于身份认证,防止否认等功能上。最基本的,是信息加密解密分为对称加密和非对称加密,这两者的区别在于是否在加密解密时是否使用了相同的密钥。除了信息的加密解密,还有用于确认数据完整性的单向散列技术,又称魏密码检验、指纹、消息摘要。信息的加密解密与信息的单向散列的区别时,加密解密是可以通过密钥来获取其加密的数据信息的,而单向散列则是不可逆的,信息的加密解密,数据信息或者密钥是不定长的,而单向散列可以是定长的。结合加密解密技术和单向散列技术,又有了用于防止篡改的消息认证码技术,防止伪装的数字签名技术以及认证证书。

常用的密码算法:

  • 对称加密体系

简介:加密解密的过程中使用的是同一个密钥,也称之为单密钥加密。

密文:加密后的结果。明文:需要被加密的信息。

对称加密的问题:

密钥的配送:接收者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的时候不仅考虑到了算法的弱点,还考虑了算法的执行速度和实现的难度。

 

  • 非对称加密体系

简介:非对称加密也称之为公钥密码,密钥分为两种分别为加密密钥和解密密钥,发送者使用加密密钥加密数据,消息接收这使用解密密钥解密数据,解密密钥一开始就有接收者自己保管,因此只要将加密密钥发送给对方就可以解决密钥配送问题。由于加密密钥可以任意公开,因此该密钥也被称之为公钥,解密密钥绝对不能公开,只能由自己保管,因此也被称之为私钥,公钥和私钥是一一对应的关系,由公钥加密的文件只能由对应的私钥进行解密。

总结:

  • 发送者只需要知道加密密钥
  • 接收者只需要知道解密密钥
  • 解密密钥不可以被窃听者获取
  • 加密密钥被窃听者获取也没问题

公钥密码的通信流程:

非对称加密流程:

  1. 接收方生成公私钥对,私钥由接收方保管
  2. 接收方将公钥发送给发送方
  3. 发送方通过公钥对明文加密,得到密文
  4. 发送方向接收方发送密文
  5. 接收方通过私钥解密密文,得到明文

非对称加密实例:

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

 存在问题:

  • 效率慢,因此工业场景下,往往是通过非对称加密配送密钥,对称加密加密明文的混合加密方式,最著名的如 SSL
  • 公钥认证问题难。消息发送方无法确认公钥的身份问题,应该收到甲的公钥,却收到了乙的。
  • 无法避免中间人攻击。可能被人于中间劫持后,发送一个伪造的公钥,此公钥加密后的密文,可以被劫持者解密,之后所有的密文都对劫持者透明了。
  • 选择密文攻击,即通过不断的发送请求,分析请求的反馈,猜测密钥和明文。有改良算法 RSA-OAEP (Optimal Asymmetric Encryption Padding)最优非对称加密填充,该算法是通过对明文前加入认证信息头,若信息头校验失败,则拒绝请求。
  • 密码劣化,随着算力的提升,密码的安全性下降。

单向散列

单向散列技术是为了保证信息的完整性,防止信息被篡改的一项技术。

特点:

  1. 无论消息长度,计算出的长度永远不变
  2. 快速计算
  3. 消息不同,散列值不同,需要具有抗碰撞性 Collision Resistance
    • 弱抗碰撞性:给定散列值,找到和该消息具有相同散列值的另一条消息是困难的
    • 强抗碰撞性:任意散列值,找到散列值相同的两条不同的消息是困难的
  4. 具有单向性 one-way,不可由散列值推出原消息

单向散列算法

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 算法的优点:

  1. 采用与 SHA2 完全不同的结构
  2. 结构清晰,易于分析
  3. 适用于各种硬件,性能优越
  4. 可生成任意长度
  5. 对消息长度无限制
  6. 可采用双工结构,输入同时输出,提升效率

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      

对散列的攻击

暴力破解,冗余碰撞

生日攻击,针对强抗碰撞性

数字签名

采用非对称加密的消息认证码的技术,就是数字签名。

  • 在非对称加密中,私钥用来解密,公钥用来加密
  • 在数字签名技术中,私钥用来加密,公钥用来解密

数字签名步骤

  1. 签名方 A 生成非对称公私钥对 public-key、private-key
  2. A 向消息接收方 B 发送公钥 publi-key
  3. A 采用 private-key 加密(一般是对消息的散列值进行加密),生成数字签名
  4. A 将消息与数字签名发往 B
  5. B 采用 public-key 解密数字签名
  6. B 验证数字签名

由于用于解密的是公钥,是公开的。因此任何人都可以验证数字签名。

数字签名的核心,就是非对称加密,在前文已经介绍了一些非对称加密算法,均可用于数字签名之中。

常见的有如下几种:

  • RSA
  • ElGamal
  • DSA
  • ECDSA(Elliptic Curve Signature Algorithm),结合椭圆曲线算法的数字签名技术
  • Rabin

数字签名的问题

数字签名由于采用了非对称加密,因此可以防止否认。但发送方怎么能知道所收到的公钥就是接收方私钥所对应的公钥呢?

如果不小心采用了攻击者的公钥,然后接收了攻击者私钥签名的信息,公私钥完全匹配,于是信息就被接受了,那么就 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会对自己的公钥进行数字签名叫做自签名

针对证书的问题

  • 公钥注册前进行攻击
  • 注册相似信息进行攻击,例如 Bob 和 BOB,一旦没看清,就会泄露信息
  • 窃取 CA 的私钥进行攻击,CA 的私钥一旦被泄露,需要通过 CRL 通知客户
  • 伪装成 CA 进行攻击,一般证书处理软件只采纳有限的根 CA
  • 利用 CRL 发布时间差,私钥被盗-通知 CA-发布 CRL,均存在时间差,攻击者可以利用此时间差进行攻击
  • 利用 CRL 发布时间差否认信息。发布有害信息-通知 CA 作废证书-发布 CRL,由于存在时间差,恶意消息的发布者完全可以否认恶意消息是由其发出的。

猜你喜欢

转载自blog.csdn.net/The_Reader/article/details/83862204
今日推荐