密码学习和GPG实战

1 基本的概念入门

1.1 对称加密

对称加密是为数据传输和存储提供机密性的一种常见加密方式。两个常见的对称加密算法是(1)DES( Data Encryption Standard);(2)AES(Advanced Encrption Standard)
对称加密算法的安全使用有两个要求:

  1. 对手知道这个加密算法并且能够得到一些密文时,也不能破译密文或者计算出密钥;更强的表述:即使对手拥有一定数量的密文和产生这些密文的明文,也不能破译密文或者计算出密钥。
  2. 双方必须在安全的形式下获得密钥,并保证密钥的安全。

对密码的攻击可以分为密码分析和蛮力攻击
对抗蛮力攻击的方式就是 使用更长的密钥。
3DES对密码分析攻击有很强的免疫力。

1.1.1 分组加密算法

使用最广泛的对称加密算法是分组密码,是将定长的明文转换为与之等长的密文,重要的对称算法,如DES,AES,三重DES都是分组密码。

1.1.2 流密码

分组密码一次处理一个元素分组,每个输入分组产生一个输出分组;流密码持续的处理输入元素,随着他的继续,每次产生一个元素的数据。
典型例子:流密码每次加密一个字节的明文(也可以设计为每次操作一位或者大于一个字节的数据)。

1.2 消息认证

加密可以方式被动攻击(就是被窃听),加密的另一个要求是防止主动攻击(数据伪造和篡改),防止这些主动攻击的方式 叫 消息认证或者数据认证。
消息认证或者数据认证是一种允许通信者验证所接收或者存储的数据是否可信的措施。一方面是验证消息内容没有被篡改,另一方面是验证消息源头是可信的。还希望验证消息的时效性,即我们希望消息没有被认为的延迟后者重放,以及两个实体之间传输消息的相对顺序。–所有这些问题都归入数据的完整性中。

1.2.1 利用对称加密认证

如果只有接收方和发送方共享一个密钥,那么只有发送方才可以加密接收方可以解密的消息,如果在消息中加入时间戳或者校验码,就可以防止数据篡改或者认为的延时或者重放。
但单独的对称加密不是消息认证的有效工具,在EBC(分组密码加密,也叫电子源码书模式)模式下,如果攻击者重组了密文分组,每个分组依然可以正常解密,但是这可能影响了发送者想发送信息的意义。即改变了数据的顺序。

1.2.2 无消息加密的消息认证

就是几种不依赖加密的消息认证,这小节中,几种实现认证的方法都会产生认证标签,并且认证标签附加在消息上用于传输,消息本身不被加密/

  1. 消息认证码
    发送者把发送的消息 M M M和他和消息接收者共同有的密钥 K a b K_{ab} Kab作为一个复杂函数 F F F的输入,产生消息认证码 M A C M = F ( K a b , M ) MAC_M=F(K_{ab},M) MACM=F(Kab,M),并把这个 M A C M MAC_M MACM附加在消息M上进行传输,接收者接收消息后,使用M和自己的密钥 K a b K_{ab} Kab计算自己的消息认证码,如何这个消息认证码和 M A C M MAC_M MACM相同,则可以确认消息来自发送者,且消息没有被对手篡改。可以在消息 M M M中加入时间戳,序列号防止认为延时和重放。
  2. 单向散列函数
    单向散列函数是消息认证码的一种变形,它可以接收变长的消息 M M M作为输入,产生固定长度的消息摘要 H ( M ) H(M) H(M)
  • 传统加密:消息 M M M通过单向散列函数 H H H,产生了消息摘要 H ( M ) H(M) H(M),利用密钥 K K K对消息摘要 H ( M ) H(M) H(M)进行加密,得到 E ( H ( M ) ) E(H(M)) E(H(M)),然后把 E ( H ( M ) ) E(H(M)) E(H(M))附加到消息 M M M后,进行传输;接收方得到消息后,对 E ( H ( M ) ) E(H(M)) E(H(M))进行解密,得到 H ( M ) H(M) H(M),然后对消息M进行消息摘要运算,把运算的结果和 H ( M ) H(M) H(M)进行对比,就可以知道消息是否被篡改。
    在这里插入图片描述
  • 利用公钥加密,和传统的加密方式流程一样,区别在于使用的加密密钥和解密密钥不同。
    在这里插入图片描述
  • 利用密钥进行消息认证的流程图
    在这里插入图片描述加密函数让加密软件运行速度变慢,不含加密函数的消息认证比较有吸引力。
  1. 安全散列函数
    散列函数的目的就是要产生文件,消息,或者其他数据块的指纹,一个散列函数 H H H要能用于消息认证,需要有下面的性质
  • H H H可以应用与任意大小数据块
  • H H H产生固定长度的输出
  • 对于任意给定的 X X X,计算 H ( X ) H(X) H(X)比较容易,软硬件都可以实现
  • 对于任意给定的散列码 h h h,找到满足 H ( x ) = h H(x)=h H(x)=h x x x在计算上是不可行的,具有这样性质的散列函数叫 单向的 或者 抗原像的
  • 对于任意给定的分组 x x x,找到满足 y = x y=x y=x H ( y ) = H ( x ) H(y)=H(x) H(y)=H(x)在计算上是不可行的,具有这样性质的散列函数叫 第二抗原象的,也被称为抗弱碰撞的。
  • 找到任何满足 H ( x ) = H ( y ) H(x)=H(y) H(x)=H(y)的偶对 ( x , y ) (x,y) (x,y)在计算上是不可行的,具有这样性质的散列函数称为抗碰撞的,也叫强抗碰撞的。
  1. 安全散列函数算法
    安全散列算法(Secure Hash Algorithm)是使用最广发的散列函数,它有缺点,改进后的散列函数叫SHA-1,2002年,对SHA-1进行了修改,提出了SHA-256,SHA-384,SHA-512.

1.3 非对称加密

公钥算法基于数学函数,而不是对称加密算法那用基于位模式的简单操作。
公钥密码使用两个密钥,这对于机密性,密钥分发,和认证都有很大影响。
每个用户有一对密钥,分别是公钥和私钥,公钥是其他人可以访问的,私钥只有用户自己掌握。
数据加密可以由公钥加密,也可以由私钥加密。

  1. 公钥加密:如果Bob要发送消息给Alice,他可以使用Alice的公钥加密消息,只有Alice使用她的私钥才可以解密消息。如果有一天,Alice更换了私钥,她可以更新响应的公钥,不耽误通信。这个方案提供了消息的机密性。
  2. 私钥加密:如果Bob用自己的私钥加密消息,把消息发送给Alice,那么Alice使用Bob的公钥进行解密(只有知道Bob公钥的人才能对Bob发送的消息进行解密),那么Alice就可以确信发送消息的人确实是Bob。这提供了消息认证。和数据完整性。

我们可以把公钥密码体制分为三类, 数字签名,对称密钥分发,密钥加密。

公钥密码体制的应用表

算法数字签名对称密钥分发密钥加密
RSA
Diffie-Hellman
DSS
椭圆曲线

公钥加密算法应该满足的条件:

  • B产生一对密钥(公钥 P U b PU_b PUb和私钥 P R b PR_b PRb)在计算上是容易实现的。
  • 已知公钥和要加密的消息M,发送方A产生相应的密文在计算上是容易实现的: C = E ( P U b , M ) C=E(PU_b,M) C=E(PUb,M)
  • 接收方使用其私钥对接收的密文解密,来恢复明文在计算上是容易实现的: M = D ( C , P R b ) = D ( P R b , E ( M , P U b ) ) M=D(C,PR_b)=D(PR_b,E(M,PU_b)) M=D(C,PRb)=D(PRb,E(M,PUb))
  • 已知公钥 P U b PU_b PUb,攻击者确定私钥 P R b PR_b PRb是不可行的。
  • 已知公钥 P U b PU_b PUb和密文C,攻击者要恢复明文M在计算上是不可行的。
  • 加密和解密函数的顺序可以调换(不是所有公钥密码都满足): M = D [ P U b , E ( P R b , M ) ] = D [ P R b , E ( P U b , M ) ] M=D[PU_b,E(PR_b,M)]=D[PR_b,E(PU_b,M)] M=D[PUb,E(PRb,M)]=D[PRb,E(PUb,M)]
1.3.1 非对称加密算法
  1. RSA,它被认为是使用最广泛且被实现的公钥加密算法。
  2. Diffie-Hellman密钥协议,是Diffie-Hellman密钥交换或者密钥协议,目的是使两个用户能够安全的交换密钥,以便在后续的通信中使用该密钥对消息进行加密。
  3. 数字签名标准(Digital Signature Standard),它使用SHA-1给出了一种新的数字签名方法,叫数字签名算法(DSA)
  4. 椭圆密码算法(Elliptic Curve Cryptography,ECC).可以使用比RSA短的多的密钥得到相同的安全性,因此可以减轻计算负荷。
1.3.2 数字签名

使用公钥进行数字签名的过程如下图
在这里插入图片描述

1.3.3 公钥证书

公钥加密的公钥是公开的,其他人可以伪造公钥进行通信,为了防止这个问题,解决的方法是 公钥证书。公钥证书是由公钥、公钥所有者的用户ID以及可信的第三方签名的整个数据块组成,公钥证书还包括第三方信息,并由证书的有效期。第三方就是用户团体都信任的认证机构(Certificate Authoriy,CA),如政府机构或者金融机构,用户可以通过安全渠道将自己的公钥提交给CA并获得证书。
该用户之后可以发布该证书,任何需要该用户公钥的人都可以获取这个证书,并通过附带的第三方CA的签名来验证其有效性。整个过程如下图:
在这里插入图片描述

1.3.4 利用公钥加密实现对称密钥交换
1.3.5 数字信封

公钥加密中用来保护对称密钥的应用是数字信封。数字信封可以用来保护消息而不必事先让发送方和接收方具有相同的密钥。这个技术叫数字信封。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值