DES(Data Encryption Standard数据加密标准算法 来自TutorialsPoint)

本文介绍了密码学的基础概念,包括加密、数据完整性等四大安全服务,对比了对称密钥与非对称密钥加密的不同特点及应用。同时,详细探讨了传统与现代密码系统的设计与安全性评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

名词:

cryptology:密码学

cryptography:密码术

cryptanalysis:密码分析

encryption:加密

alteration:变更

Data Integrity:数据完整性

Digital signatures:数字签名

Non reputation:不可反悔

Cipher system:密码系统

depicted:描述

intercept:拦截

eavesdropping:窃听

Symmetric key:对称密钥

Asymmetric Key:非对称密钥

salient:突出的

robust:耐用的,强健的

cumbersome:巨大的

embed:嵌入

informed:了解情况的

 repository:储存库

imperative:迫切的,势在必行的

malicious:恶意的

Assumption:假定,假设

prevailing:普遍的

substituted 被取代的,以...取代

 permutation :置换

omitted:删掉

inverse:相反的

rightmost:最右边的

Parity:校验

shift left:左移

密码学的四个安全服务:保密性,数据完整性,身份认证(信息认证,实体认证),不可反悔。

密码学基本:加密,哈希函数,MAC信息认证码,数字签名

以下是四个安全服务和几个基本功能的关系:

这些基本的密码技术一般被结合使用,以应对特定的安全需要.

一个简单的密码系统(cipher system,或者cryptosystem)如下,

发送者(Sender)发送明文(plaintext)给(Receiver),在这个过程中明文被加密算法加密,变为密文(ciphertext),此时密文在网络上可能被拦截(intercept),但拦截者无法分析密文,因此信息是保密的,密文经过解密算法后变为明文,被接收者接收.

在这个过程中,加密算法和解密算法的操作对象除了明文和密文外,还有加密和解密的密钥,它们分别被发送者和接收者拥有.

所有可能的解密密钥的集合,被称为密钥空间

一个拦截者(interceptor)是一个未经身份认证的实体(程序或个人,团体),想要获取明文中的信息,他可以获得密文,也可以知道解密算法,但绝对不能知道密钥

密码系统的类型

基本上,只有2种加密类型:

1.对称密钥加密

2.非对称密钥加密

它们的差异在与加密和解密密钥的异同,从逻辑上说,两种密钥都是紧密相关的,几乎不可能用与加密密钥无关的解密密钥来解密密文.

对称密钥加密(Symmetric key encryption)

对称密钥加密的最主要的特点就是使用相同的密钥加密和解密,有时,对称密码系统也被称作密钥密码系统,常见的对称密钥加密的算法有DES,Triple-DES(3DES)等等。

对称密钥加密曾征服过所有的密码系统,直到今天,他仍然被广泛的适用于很多密码系统中。他相对于非对称密钥加密有着实实在在的优势。对称密钥加密的模型如下:

对称密钥加密的特点:

1,使用对称密钥加密必须事先约定好使用的密钥,定期更换密钥以防备任何可能的攻击

2.需要专门的,耐用的机器来交换密钥,由于定期更换密钥的需要,这种机器很是昂贵.

3.假设一个组有n人,要想在其中的任意2个人进行加密交流,则需要的密钥数量是n*(n-1)/2

4.由于对称密钥的位数少于非对称密钥,因此对称密钥的速度快于非对称密钥。

5.对称密钥加密消耗的计算机资源较少。

对称密钥加密的局限性:

密钥建立:在进行交流前,发送者和接收者必须有统一的密钥,这需要一台建立密钥的机器

信任问题:接收者和发送者无法互信,有可能接收者把密钥泄露给了攻击者,但发送者却毫不知情。

在今天,人们总是需要与不熟悉的和不受信任的组织,团体交换信息,比如,网购的商家和买家,而对称密钥加密的安全性无法完全保证安全,这给非对称密钥加密的崛起创造了机会.

非对称密钥加密

模型如下:

如图,非对称密钥加密的密钥有两个,分别是公钥和私钥,公钥存放于公共的密钥存储库,而私钥是接收者自己拥有的,发送者在密钥存储库找到对应的公钥,将明文经过公钥加密后传输给接收者,而接收者用私钥解密成明文。

公钥和私钥在数学上有联系,但从计算上不可能从公钥找到私钥,这就是非对称密钥加密的强大之处,每个私钥都有对应的公钥存储在密钥存储库,要向哪个接收者发送信息,就要从存储库中找到对应接收者的密钥,非对称密钥的位数大于对称密钥,且消耗的计算机资源大于对称密钥.

公钥和密钥是通过特定算法产生的。

公钥密码系统的挑战

设想以下,发送者A要发信息给接收者B,但发送者A却错误的选中了存储库里攻击者C的公钥,最终这个信息被攻击者C拦截并用他自己的密钥解密了,这种情况下,发送者A由于找错了密钥,将信息发给了未经认证的第三方.

为了解决这个问题,公钥基础设施(PKI)诞生了,这是一个第三方的可靠组织,他们保管并认证公钥,并且能够分发正确的公钥,这个过程最常见的是把公钥放进数字证书中,这个数字证书被可靠的第三方进行过数字签名.

两种密钥加密的关系:

两种密钥系统在实际生产中常被一起使用。

 Kerckhoff的密码系统原则:

密码系统即便落入敌手,只要密钥未泄露,他就该是安全的,这条原则被广泛用于设计各种加密算法,在现代,密码学必须迎合连接到互联网的人,使用秘密算法是不可信

攻击

攻击分为两种,主动攻击和被动攻击。

被动攻击:被动攻击的主要目标是未经认证地访问信息,比如拦截和窃听信道就是一种被动攻击,

被动攻击并不影响获取地信息以及信道,更多的是为了窃取信息,

主动攻击:与被动攻击相反,主动攻击可能修改原有的信道,甚至破坏或篡改原来的信息

 

 对攻击者的假设

密码系统周围的环境:在密码学里,下面的三个假说是根据环境的安全和攻击者的能力提出的。

1.攻击者可能了解系统使用的加密算法。

2.攻击者可能可以获取密文。

3.攻击者可能获取明文和正确对应的密文。

密码学上的攻击

攻击者的基本目的一般是破解密码系统,以及从密文翻译出明文,他只需要找出密钥即可,所以,一旦攻击者能够定位指定的密钥,就说明这个密码系统已经被破解了。

对密码系统的攻击主要分为以下几种:

Ciphertext Only Attacks (COA,仅密文攻击):攻击者仅能获取部分密文,而不知道对应的明文,通常,加密密钥能从这种攻击中确定。

Known Plaintext Attack (KPA,已知明文攻击):攻击者知道部分密文对应的明文,其任务是使用这些已知信息解密剩下的密文。

Chosen Plaintext Attack (CPA,已选明文攻击):攻击者将自己选择的明文加密,所以他有着一对明文和密文,这简化了找出密钥的难度

Dictionary Attack(词典式攻击):攻击者将获得的明文和密文集合起来组成一个词典,当再有密文可破解时,从词典中查找答案。

Brute Force Attack (BFA,暴力攻击):攻击者尝试所有可能的密钥来破解密文,8位的密钥有256个,位数越多,耗费的时间指数级增长。

Man in Middle Attack (MIM,中间人攻击):这种攻击发生在公钥密码系统中,在通讯前需要交换密钥,而攻击者介入到这个过程中,其中发送者A发送给接收者B的密文全部被攻击者拦截,而为了维持通讯,攻击者会给接收者B发送解密过的密文.

传统的密文

历史上的密码系统都是以对称密码体系做规划的,唯一的安全服务便是信息的保密性,以字母为基本单位而非二进制数。

凯撒密码

又被称为替换密码,把明文的字母替换为另一个字母就是密文了.

如果凯撒密码的替换数是3:则所有字母对应的密文是他在密码表里右移三位.

那么此时tutorial一词将变为WXWRULDO

 安全性:凯撒密码的安全性堪忧,因为他只有26个密钥。

简单密文替换

这是凯撒密码的一种改进,不是简单的向右移几位,而是将字母表的字母进行了替换,这种替换是出于随机的,这样,这套加密的密钥空间便急剧扩大了。发送者和接收者都有一张内容相同的替换表. 

安全性:

尽管简单密文替换的密钥空间足够大了,就连现代计算机也未必能破译如此大的密钥空间,但其加密的方法仍然是简单的,它很容易出现明显的替换,利用统计就能轻松的破坏这种密码系统。

Playfair密码

在该密码中,字母以对的形式被加密,在设计之初,发送者和接收者需要确定一张5x5密钥表,假设密钥词为“tutorial”,那么这个词中重复的字母被去掉,字母表剩下的单词以正常顺序排列,最后还要删除一个字母以维持5x5的表(一般是J),最后的表如下:

加密过程:明文被分为两个字母一对,如果单词的字母数是奇数,那最后要加一个Z,比如HIDE MONEY应被写为:HI DE MO NE YZ

加密的规则

 

 

HIDE MONEY 加密完后应该是QC EF NU MF ZV。(以"tutorial"为密钥词)

安全价值:这种密码比简单字母替换更好,但作为一种字母替换密码,密码分析对其仍然是有效的,分析他需要统计625(25x25)个字母对而不是26个基本字母。

Vigenere Cipher

 这种密码使用一个单词作为密钥,用于稍后对明文里的数据进行移动。

假设密钥为point,根据它们在字母表里的位置,应转换为:16 15 9 14 20.

现在,要加密一句“attack from southeast”,则应得出如下一张表

很容易看出这个密码的意图,第一个字母向右移16位,第二个字母向右移动15位..当第五个字母向右移动20位时,新一个循环开始,重新向右移16 15 9 14 20位。

 安全价值:这个算法通过改变传统的凯撒算法来减小密码分析的有效性,并以此来保持密码系统的强大,当然这个密码比凯撒密码安全得多,在历史上,这个密码被视作无敌的密码,出于密码分析其密文的难度.

现代的对称密码加密

现代的对称密码加密一般分为两种:块密码和流密码。

块密码:明文的二进制数以分块的形式进行加密,解密,块的大小是固定的,DES是64bit而AES是128bit.

流密码:明文的二进制数以个的形式进行加密,从技术上说,流密码是块大小为1的块密码。

基本的块密码流程:

加密前后的块大小一般是不变的。块的大小不直接影响加密的强度,加密的强度取决于密钥的长度.

块大小的决定:

避免极小块:块的大小过小时,攻击者更容易采取字典型攻击

避免过大块:块过大时,加密的过程会非常低效

8的倍数:一个好的块大小应该是8bit的倍数,因为计算机通常操作的大小也是8的倍数(1字节)。

块的填充:有时候,数据的大小并不和块的大小契合,比如数据大小150bit,块大小64bit,会有22bit多出来,这22bit应该与42个多余的二进制数组合成一个块以契合块的大小,然而,块太多时这就必然会造成系统的效率变差。

常见的块密码:

数据加密标准DES,三重DES加密,先进加密标准AES。

Feistel 密码

Feistel密码不是一种特定的块密码,这是一种设计模型,后来的很多块密码都衍生于此,

\oplus:相等为0,不相等为1;(L是左,R是右)

明文块被分为2块,称为L和R,在每一轮中,R无改变的通过这一轮,L与函数F通过一轮异或运算,函数F的参数是密钥K以及明文R.

在实现Feistel密码的过程中,像DES一类的算法使用多个密钥(一个大密钥分成多个小密钥),即每一轮是使用不同的密钥进行加密的.

每一轮的最后一步是更换没有运算的R和运算了的L,它们在下一轮的位置互换,就这样经过数轮后产生密文。轮数取决于算法设计。

最后一轮结束后,L和R就保持最后一轮结束的状态链接在一起。

Feistel密码的难点在于选择合适的函数F,它决定了这个密码坚不可摧,当然,这不在我们的讨论范畴。

解密的过程:解密的过程与加密相似却又不尽相同,唯一的差异就是各个子密钥的使用顺序相反。

数据加密标准DES

DES是对Feistel密码的一种实现,它是一种块密码,使用16轮的Feistel结构,块大小64bit,密钥长度也为64bit,DES的有效密钥长度为56bit,剩下的8位为检查位。它们不使用在加密算法中.

 初置换和末置换:

与feistel密码不同的是,DES并不是简单分成两个和合并,他是通过初置换和末置换两个过程来开始和结束的,这个置换的结果遵循P-boxes(P为permutation),如下图:

这个置换在DES中没有密码学上的重要性。

轮函数F:

就像feistel密码,函数F也是DES的心脏:

R的32bit通过拓展P箱变为48位后可以与密钥K进行运算,然后再通过S箱变为32位,最后通过p箱再输出。

拓展P箱的运转逻辑如下:

 

 

S箱:S指的是substitution,即替换。将48bit变为32bit

 

 

 共有8个S箱,最终输出32bit的结果

密钥生成器

这个密钥生成器能从有效位数56的密钥中生成16个48位的密钥

 开始前:丢弃校验位,分为2个28bit。

第一轮,两个28bit分别左移1位,然后进入压缩P箱后得出第一个48位密钥

之后也是左移,进P箱,得出密钥,直到最后一轮结束,区别是1,2,9,16左移的位数为1,其他的为2.

DES分析

DES的两个特性使其十分强大:

雪崩特性:明文的小小改变会导致密文的巨大变化

完整性:每bit的密文依赖于很多bit的明文。

DES被证明是一种非常好的块密码算法,除了穷举攻击之外没有其他的好方法来破解它。

三重DES

到DES的后期,穷举攻击让DES的用户们叫苦不迭,然而,用户们不愿轻易放弃DES,因为在DES里投了太多钱了,只能在DES的基础上进行修改,3DES应运而生.

3TDES(3密钥-三重DES):这种3DES有3个密钥

过程:用K1作为密钥加密明文,用K2作为密钥解密明文,再用K3作为密钥加密明文

 解密过程则与上述过程相反.

由于这种3DES采用加密-解密-加密的过程,有可能用普通的DES实现,只需要设置K1,K2,K3的值相等即可。

此外,还有一种2TDES,和3TDES相同,不过密钥K3被替换为K1.

3DES比DES安全得多,但是运行的比DES慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值