应用密码学:协议、算法与C源程序(学习第一章)

第一章:基础知识

明文、密文和加解密函数

明文M或P,密文C,解密函数D,加密函数E。

鉴别、完整性和抗抵赖:

除了提供机密性外,密码学通常还有以下三个作用:
鉴别:消息的接收者应该能够确认消息的来源;入侵者不可能伪装成他人。
完整性:消息的接收者应该能够验证在传送过程中消息没有被修改;入侵者不可能用假消息代替合法消息。
抗抵赖:发送者事后不可能虚假地否认他发送的消息。

现代密码学使用密钥:

基于密钥的算法通常分为两类:对称算法公开密钥算法

  • 对称算法(symmetric algorithm)又称传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数的对称算法中,加密/解密密钥是相同的。这些算法也叫做秘密密钥算法或单密钥算法。它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄露密钥就意味着任何人都能对消息进行加/解密。只要通信需要保密,密钥就必须保密。

对称算法分为两类。一次只对明文中单个位(或字节)运算的算法称为序列算法(stream algorithm)或序列密码。另一类算法是对明文的一组位进行运算,这些位组称为分组,相应的算法称为分组算法(block algorithm)。

  • 公开密钥算法(public-key algorithm,也叫非对称算法):解密密钥不能根据加密密钥计算出来。所以加密密钥能够公开,即陌生人能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。在这些系统中,加密密钥叫做公钥(public-key),解密密钥叫做私钥(private-key)。

衡量攻击方法的复杂性:

  1. 数据复杂性:用于攻击输入所需要的数据量。
  2. 处理复杂性:完成攻击所需要的时间,也经常称作工作因素。
  3. 存储需求:进行攻击所需要的存储量。

代替密码和换位密码

在计算机出现前,密码学由基于字符的密码算法构成。不同的密码算法是字符之间互相代替或互相换位。而现在,重要的变化是算法对位而不是字母进行变换。

代替算法:明文中的每一个字符被替换成密文中的另外一个字符。
比如著名的Caesar(凯撒)密码就是一种简单的代替密码,它的每一个明文字符都由其右边第三个字符代替(A-D…)。ROT13是建立在UNIX系统上的简单加密程序,它也是简单代替密码(A-N…),每一个字母是环移13所对应的字母。

代替密码有四种:
1.简单代替密码 2. 多名码代替密码 3. 多字母代替密码 4. 多表代替密码

  • 其中多表代替密码:由多个简单的代替密码构成。例如,可能使用5个不同的简单代替密码,单独的一个字符用来改变明文每个字符的位置。多表代替密码有多个单字母密钥,每一个密钥用来加密一个明文字母。第一个密钥加密明文的第一个字母,第二个密钥加密明文的第二个字母等。若有20个单个字母密钥,那么每隔20个字母的明文都被同一个密钥加密,这叫做密码的周期。在经典密码学中,密码周期越长越难破译,使用计算机就能轻易破译具有很长周期的代替密码。

换位密码:在换位密码中,明文的字母保持不变,但顺序被打乱了。简单了解就好。

转轮机:挺有意思的。转轮机,有一个键盘和一系列转轮,它是维吉尼亚密码的一种实现。每个转轮是字母的任意组合,有26个位置,并且完成一种简单代替。而且转轮的输出栓连接到相邻的输入栓。最有名的转轮装置是恩尼格马,二战德国人用的。

简单异或(非常容易破译的一个算法)

异或(XOR)常用在一个对称算法中,明文用一个关键字进行异或运算产生密文。因为用相同值异或两次就会恢复原来的值。(原理是a∧b∧b=a)
它易于破译,假设明文是英文,并且假设密钥长度是一个任意小的字节数。下面是它的破译方法:
(1)用重合码计数法找出密钥长度。用密文异或相对其本身的各种字节的位移,统计那些相等的字节数。如果位移是密钥长度的倍数,那么超过6%的字节将是相等的;如果不是,则至多有0.4%的字节是相等的(这里假设用随机密钥来加密标准ASCII文本,其他类型的明文将有不同的数值),这叫做重合指数(index of coincidence)。指出的密钥长度倍数的最小位移就是密钥的长度。
(2)按此长度移动密文,并且与自身进行异或。这样就消除了密钥,留下明文和移动了密钥长度的明文的异或。由于英语每字节有1.3位的实际信息,所以有足够的冗余度确定唯一的解密。

一次一密乱码本(one time pad)(第一个对密钥和明文密文有具体概念的可以自己推断的加密方案)

密钥:大的不重复的真随机密钥字母集,这个密钥字母集被写成一个本。发送者用乱码本中的每一个密钥字母准确地加密一个明文字符。
算法:加密是明文字符和乱码本密钥字符的模26加法。(见第11页)
每个密钥仅对一个消息使用一次。用完销毁,用接下来的。
强调:密钥本一定要是随机的。
缺点:传输过程中出现信息失真就完全鉴别不出了。(用在一些军方的高度机密的低带宽信道)

计算机算法(最通用的)

(1)数据加密标准(Date Encryption Standard,DES)是最通用的计算机加密算法。DES是对称算法,加密和解密的密钥是相同的。
(2)RSA(根据发明者命名Rivest\Shamir\Adleman)是最流行的公开密钥算法,它能用作加密和数字签名。
(3)数字签名算法(Digital Signature Algorithm,DSA,用作数字签名标准的一部分)是另一种公开密钥算法,它不能用作加密,只用做数字签名。

大数 见书P13

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《应用密码学协议算法与C源程序》是一本关于密码学的重要著作。该书主要介绍了密码学的基本概念、协议算法以及相关的C语言源代码。 在协议方面,该书详细介绍了一些常见的密码学协议,如RSA、Diffie-Hellman、AES等。这些协议是实现安全通信和数据保护的基础,读者可以通过学习这些协议了解到密码学在实际应用中的工作原理。 在算法方面,该书涵盖了密码学中一些经典的算法,如对称加密算法、非对称加密算法和哈希算法等。对称加密算法包括DES、AES等,非对称加密算法包括RSA等,而哈希算法包括MD5、SHA-1等。这些算法的原理和实现细节都在书中有详细的介绍,读者可以通过学习这些算法了解到密码学在保护数据传输和存储安全方面的作用。 同时,该书还提供了一些相关的C语言源代码示例,以便读者更好地理解协议算法的实现过程。这些源代码可以帮助读者理解密码学在实际编程中的应用方式,有助于读者在自己的项目中使用密码学技术实现安全保护。 总之,《应用密码学协议算法与C源程序》是一本涵盖了密码学基本概念、协议算法和源代码的综合性教材,对于想要深入了解密码学应用到实际项目中的读者来说是一本不可多得的书籍。 ### 回答2: 《应用密码学:协议算法与C源程序》是一本关于密码学领域的书籍,主要介绍密码学在通信安全和数据保护方面的应用。通过该书,读者可以深入了解密码学的理论基础、常用协议算法C语言实现。下面我将简要介绍一些书籍内容。 首先,该书详细介绍了密码学的基本概念和原理。读者可以了解加密算法、解密算法、对称加密和非对称加密等密码学基础知识,理解信息的加密和解密过程。 其次,该书介绍了一些常用的密码协议,如SSL/TLS协议、IPSec协议等。读者可以了解这些协议的原理、安全性和应用场景,深入了解网络通信安全密码学应用。 此外,该书还详细介绍了一些常见的密码算法,如DES、AES、RSA等。读者可以学习这些算法的原理、加密过程和解密过程,并且提供了相应的C语言源代码供读者进行实践。这有助于读者进一步理解密码算法的具体实现和应用。 最后,该书还介绍了一些密码学中的实际应用,如数字签名、数字证书、身份认证等。读者可以了解这些应用的原理和实现方式,进一步了解密码学在实际场景中的应用价值。 总之,《应用密码学:协议算法与C源程序》是一本很好的密码学领域的入门书籍,通过学习该书可以深入了解密码学的基本原理、常用协议算法,并且提供了相关的C语言源代码供读者实践。无论是对于密码学专业人士还是对于对密码学有兴趣的读者,这本书都是一本值得推荐的参考书。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值