<密码学应用>基础知识

基础概念

  • 消息(明文):Message or Plaintext ——用M或者P表示
  • 密文:Ciphertext——用C表示
  • 加密算法:Encryption——C()
  • 解密算法:Decryption——M()
  • 加密过程:E(M)=C;解密过程:D(C)=M。这个过程一般表示传统的基于算法安全性的加密方法,但是这种方法当今几乎是不可行的,只会用于低密性的应用。
  • 引入密钥K来解决算法必须要保密的特性。这种算法基于密钥的安全性
  • 加密过程:EK(M)=C;解密过程:DK(C)=M。这样基于密钥的安全,密码算法可以公开。
  • 对称算法:加密密钥可以从解密密钥中推算出来,反过来也可以,大多数对称算法的加解密用的同一个密钥。
  • 非对称算法(公开密钥算法):这种算法的加密密钥和解密密钥不相同。
  • 非对称加密的两个密钥,加密密钥叫做公开密钥,解密密钥叫做私人密钥。数字签名中可用私人密钥加密,公钥解密。
  • 序列算法分组算法现代计算机密码学典型分组长度为64位,这个长度长到难以被分析破解但小到方便使用。

密码分析

def:在不知道密钥的情况下恢复明文。

泄露:密钥通过非密码分析方式的丢失。

常用的密码分析攻击方式主要有这4种:

  • 唯密文攻击:
  • 已知明文攻击:
  • 选择明文攻击:
  • 自适应明文攻击:

Kerckhoffs假设:如果新密码系统的强度依赖于攻击者不知道算法的内部机制,那注定会失败。

好的密码算法是经过世界上最好的密码分析家多年的攻击,但还是不能破译的算法。

一次一密乱码本

可以说是一种理想的绝对安全的加密方案。原理很简单,通信双方手中都有一本乱码本,这个密码本就是个大的不重复的真随机密钥字母集,这个密钥字母集被写在数张纸上,粘成一个乱码本。

加密过程就是明文字符和乱码本上的对应字符进行模26加法。每次通信完即销毁对应的乱码页。

只要攻击者没有当时的乱码本,就无法进行攻击。因为这种方式各个字母的出现有均匀的频率分布。

但是这个算法在目前来说,基本是用不上了。用于计算机通信的话,存在很多问题,比如存储这么大的密钥本身很不经济,比如一次一密本身是不提供鉴别的。

计算机算法

目前常用的计算机密码算法很多,最通用的几种:

  • DES:最通用的计算机加密算法,一种对称算法
  • RSA:最流行的公开密钥算法,可以用作加密和数字签名
  • DSA:数字签名算法,也是公开密钥算法,只用做数字签名

单向函数

单向函数的概念是公开密钥密码的中心,是一个基本结构模块。

单向函数就是说,计算起来容易,求逆很难,也就是说已知x,求f(x)很简单,但已知f(x)求x很难。很难就是说在计算上的耗费是非常大的:世界上所有的计算机一起计算要计算数百万年的时间。

单向函数不能用于加密,因为你加密了他之后,对于接收者来说怎么去得到明文呢?比如你在盘子上写上你要说的话,然后把盘子砸个稀烂,把碎片给你朋友,让他读上面的消息。

所以要用到陷门单向函数。这是一个有秘密陷门的特殊单向函数。它在反向上依然是难以计算的,但是如果你知道那个秘密陷门,就能很容易计算出来。比如一个精密器件,拆开来让你去还原,非常困难,但是给你一个组装说明说,就很容易还原了。

单向散列函数

one-way hash function——压缩函数,收缩函数,消息摘要,指纹,密码校验和,信息完整性检验(MIC),操作校验码(MDC)。

它是现代密码学的中心,是许多协议的结构模块。

公开密钥密码系统通信

公开密钥密码系统主要就是基于陷门单向函数,这个陷门就是私人密钥。

在这个系统中,每个人都有自己的公钥和私钥,公钥可以公开,放在公共数据库中都行,任何人需要和你通信,就在数据库中取出公钥,加密消息发给你,而只有你能用私钥解密消息,所以协议大致如下:

  1. Alice从数据库中取得Bob的公钥
  2. Alice用这个公钥加密消息,传送给Bob
  3. Bob接收后用私钥解密消息

在这个过程中,即使Eve从信道中取得了加密后的消息,但是由于没有私钥,所以无法解密。

混合密码系统

公开密钥算法不会代替对称算法,他一般不用来加密消息,一般都是用来加密密钥(对称密码的密钥)的,理由:

  • 公开密钥算法比对称算法慢1000倍。(这个应该主要是说的RSA比DES)
  • 公开密钥密码系统对选择明文攻击是脆弱的。使用公钥加密过程:Ek§=C,因为公钥和算法是公开的,如果P是n个可能的明文集中的一个明文时,攻击者只需要加密这n个明文,对比密文就可以得出P,虽然拿不到私钥,但是能拿到P有时候就够了。对称密码就没这个问题,因为攻击者连密钥都拿不到。

所以如上所说,公开密钥密码一般用来保护和分发会话密钥(Session Key),这个Key用于对称算法,协议:

  1. Bob给Alice发他的公开密钥
  2. Alice那边产生随机会话密钥K,用Bob的公钥加密这个K,把产生的EB(K)发送给Bob
  3. Bob用私钥恢复:DB(EB(K))=K,得到这个会话密钥K。
  4. 这样两个人就都有了密钥K,可以进行基于对称密钥算法的通信会话

这种混合密码系统,解决了对称密钥会话中,密钥分配和管理的问题。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值