应用密码学理论与实践

应用密码学理论与实践

本文主要介绍现代密码学的基础理论知识,供参考。
一、密码学简介
密码学主要分为密码编码学和密码分析学两大部分。密码编码学主要研究对信息进行编码,实现对信息的隐蔽。密码分析学是破译密文的科学和艺术,即揭穿伪装。
密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用,已成为一门综合性的尖端技术科学。它与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。
二、密码学内容
  假设发送者想发送消息给接收者,且想安全地发送信息:她想确信偷听者不能阅读发送的消息。消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密文,而把密文转变为明文的过程称为解密。
  明文用M(消息)表示,它可能是比特流(文本文件、位图、数字化的语音流或数字化的视频图像)。明文可被传送或存储,无论在哪种情况,M指待加密的消息。
  密文用C表示,它也是二进制数据,有时和M一样大,有时稍大。加密函数E作用于M得到密文C,用数学表示为:
  E(M)=C.
  相反地,解密函数D作用于C产生M
  D(C)=M.
  先加密后再解密消息,原始的明文将恢复出来,下面的等式必须成立:
  D(E(M))=M
  密码算法也叫密码,是用于加密和解密的数学函数。如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算法。受限制的算法具有历史意义,但按现在的标准,它们的保密性已远远不够。大的或经常变换的用户组织不能使用它们,因为每有一个用户离开这个组织,其它的用户就必须改换另外不同的算法。如果有人无意暴露了这个秘密,所有人都必须改变他们的算法。更糟的是,受限制的密码算法不可能进行质量控制或标准化。每个用户组织必须有他们自己的唯一算法。这样的组织不可能采用流行的硬件或软件产品。但窃听者却可以买到这些流行产品并学习算法,于是用户不得不自己编写算法并予以实现,如果这个组织中没有好的密码学家,那么他们就无法知道他们是否拥有安全的算法。
  现代密码学用密钥解决了这个问题,密钥用K表示。K可以是很多数值里的任意值。密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥(即运算都依赖于密钥,并用K作为下标表示),这样,加/解密函数现在变成:
  EK(M)=C
  DK©=M.
  这些函数具有下面的特性:
  DK(EK(M))=M.
  有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下:
  EK1(M)=C
  DK2©=M
  DK2 (EK1(M))=M
  所有这些算法的安全性都基于密钥的安全性;而不是基于算法的细节的安全性。这就意味着算法可以公开,也可以被分析,可以大量生产使用算法的产品,即使偷听者知道你的算法也没有关系;如果他不知道你使用的具体密钥,他就不可能阅读你的消息。
  密码系统由算法、以及所有可能的明文、密文和密钥组成的。
  基于密钥的算法通常有两类:对称加密算法和公开密钥算法。
  2.2 对称加密算法
  对称加密算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。在大多数对称算法中,加/解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加/解密。只要通信需要保密,密钥就必须保密。
  对称算法的加密和解密表示为:
  EK(M)=C
  DK(C)=M
对称算法可分为两类。一次只对明文中的单个比特(有时对字节)运算的算法称为序列算法或序列密码。另一类算法是对明文的一组比特亚行运算,这些比特组称为分组,相应的算法称为分组算法或分组密码。现代计算机密码算法的典型分组长度为64比特——这个长度大到足以防止分析破译,但又小到足以方便使用(在计算机出现前,算法普遍地每次只对明文的一个字符运算,可认为是序列密码对字符序列的运算)。
对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。常用算法类别有:DES、3DES、 Blowfish、RC5、AES、SM1算法。
1)DES
DES (Data Encryption Standard)是一种将64bit 的明文加密成64bit的密文的对称密码算法,它的长度是56bit。尽管从规格上来说,DES的密钥长度是64bit,但由于每隔7bit会设置一个用户错误检查的bit,因此实质期密钥长度是56bit。
随着计算机发展,DES已能够被暴力破解,强度得不到保证。1999年的DES Challenge III 比赛中,仅用22H15min即可破译。
2)3DES
3重DES是为了增加DES的强度,将DES重复3次(加密→解密→加密)所得到的一种密码算法,统称为缩写3DES。
由于算法本身受限,其处理能力不强,运算速度低,在安全性方面也逐渐显现一些问题,故规定,在日常数据加密中不推荐大家使用3DES算法。
3)AES
AES(Advanced Encryption Standard)是取代前任标准(DES)而成为的一种新标准对称密码算法。相对前两者,它更具有安全性和快速加解密能力。
常见的分组密码工作模式有ECB、CBC、CFB、OFB、CTR五种
1)ECB
ECB(Electronic Codebook, 电子密码本)模式是最简单的加密模式,明文消息被分成固定大小的块(分组),并且每个块被单独加密。
每个块的加密和解密都是独立的,且使用相同的方法进行加密,所以可以进行并行计算,但是这种方法一旦有一个块被破解,使用相同的方法可以解密所有的明文数据,安全性比较差。
适用于数据较少的情形,加密前需要把明文数据填充到块大小的整倍数。
在这里插入图片描述
在这里插入图片描述

2)CBC
CBC(Cipher Block Chaining, 密码块链)模式中每一个分组要先和前一个分组加密后的数据进行XOR异或操作,然后再进行加密。
这样每个密文块依赖该块之前的所有明文块,为了保持每条消息都具有唯一性,第一个数据块进行加密之前需要用初始化向量IV进行异或操作。
CBC模式是一种最常用的加密模式,它主要缺点是加密是连续的,不能并行处理,并且与ECB一样消息块必须填充到块大小的整倍数。
在这里插入图片描述
在这里插入图片描述

3)CFB
CFB(Cipher Feedback, 密码反馈)模式和CBC模式比较相似,前一个分组的密文加密后和当前分组的明文XOR异或操作生成当前分组的密文。CFB模式的解密和CBC模式的加密在流程上其实是非常相似的。
在这里插入图片描述
在这里插入图片描述

4)OFB
OFB(Output Feedback, 输出反馈)模式将分组密码转换为同步流密码,也就是说可以根据明文长度先独立生成相应长度的流密码。通过流程图可以看出,OFB和CFB非常相似,CFB是前一个分组的密文加密后XOR当前分组明文,OFB是前一个分组与前一个明文块异或之前的流密码XOR当前分组明文。由于异或操作的对称性,OFB模式的解密和加密完全一样的流程。
在这里插入图片描述
在这里插入图片描述

5)CTR
CTR(Counter, 计数器)模式与OFB模式一样,计数器模式将分组密码转换为流密码。它通过加密“计数器”的连续值来产生下一个密钥流块,
在这里插入图片描述
在这里插入图片描述
各分组密码模式对比
在这里插入图片描述

2.3 公开密码算法
  公开密钥算法(也叫非对称算法)是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的长时间内)。之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。在这些系统中,加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。私人密钥有时也叫秘密密钥。为了避免与对称算法混淆,此处不用秘密密钥这个名字。
  用公开密钥K加密表示为
  EK(M)=C.
  虽然公开密钥和私人密钥是不同的,但用相应的私人密钥解密可表示为:
  DK©=M
  有时消息用私人密钥加密而用公开密钥解密,这用于数字签名(后面将详细介绍),尽管可能产生混淆,但这些运算可分别表示为:
  EK(M)=C
  DK©=M
当前的公开密码算法的速度,比起对称密码算法,要慢的多,这使得公开密码算法在大数据量的加密中应用有限。
常用的非对称加密算法主要有RSA、ECC。
1)RSA
目前应用最广泛的非对称加密算法。由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。RSA的速度比对应同样安全级别的对称密码算法要慢1000倍左右。
2)ECC
椭圆曲线密码(Elliptic Curve Cryptosystems,ECC)是最新备受关注的一种公钥加密密码算法。它的特点是所需密钥的长度比RSA短。

2.4 单向散列函数
  单向散列函数 H(M) 作用于一个任意长度的消息 M,它返回一个固定长度的散列值 h,其中 h 的长度为 m 。
  输入为任意长度且输出为固定长度的函数有很多种,但单向散列函数还有使其单向的其它特性:
  (1) 给定 M ,很容易计算 h ;
  (2) 给定 h ,根据 H(M) = h 计算 M 很难 ;
  (3) 给定 M ,要找到另一个消息 M‘ 并满足 H(M) = H(M’) 很难。
  在许多应用中,仅有单向性是不够的,还需要称之为“抗碰撞”的条件:
  要找出两个随机的消息 M 和 M‘,使 H(M) = H(M’) 满足很难。
  由于散列函数的这些特性,由于公开密码算法的计算速度往往很慢,所以,在一些密码协议中,它可以作为一个消息 M 的摘要,代替原始消息 M,让发送者为 H(M) 签名而不是对 M 签名 。
常见的单向散列函数主要有MD4/MD5、SHA1、SHA2。
在这里插入图片描述

2.5 数字签名
  提到数字签名就离不开公开密码系统和散列技术。
  有几种公钥算法能用作数字签名。在一些算法中,例如RSA,公钥或者私钥都可用作加密。用你的私钥加密文件,你就拥有安全的数字签名。在其它情况下,如DSA,算法便区分开来了数字签名算法不能用于加密。这种思想首先由Diffie和Hellman提出 。
  基本协议是简单的 :
  (1) A 用她的私钥对文件加密,从而对文件签名。
  (2) A 将签名的文件传给B。
  (3) B用A的公钥解密文件,从而验证签名。
  这个协议中,只需要证明A的公钥的确是她的。如果B不能完成第(3)步,那么他知道签名是无效的。
  这个协议也满足以下特征:
  (1) 签名是可信的。当B用A的公钥验证信息时,他知道是由A签名的。
  (2) 签名是不可伪造的。只有A知道她的私钥。
  (3) 签名是不可重用的。签名是文件的函数,并且不可能转换成另外的文件。
  (4) 被签名的文件是不可改变的。如果文件有任何改变,文件就不可能用A的公钥验证。
  (5) 签名是不可抵赖的。B不用A的帮助就能验证A的签名。
  在实际应用中,因为公共密码算法的速度太慢,签名者往往是对消息的散列签名而不是对消息本身签名。这样做并不会降低签名的可信性。

三、密码学作用
网络安全四大要素

在这里插入图片描述
•机密性:保护敏感信息免于泄露
对应密码学技术:通过数据加密实现
•完整性:识别信息的错误或者非授权修改
对应密码学技术:通过数据加密、数据散列、数字签名来实现
• 身份认证:确认用户身份,防止伪冒
对应密码学技术:通过数据加密、数据散列、数字签名来实现
• 抗抵赖:不能否认发送过消息或自己所做的操作
对应密码学技术:通过数据加密、数据散列、数字签名来实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值