密码学的基本概念

时间:2024-05-18 18:30:00

基本概念

密码学(Cryptology)是一个研究信息保密的学科,可分为密码编制学(Cryptography)和密码分析学(Cryptanalysis)

  • 密码编制学:研究密码编制的科学
  • 密码分析学:研究密码破译的科学

密码技术的基本思想:对数据进行伪装以隐蔽信息,使未授权者不能理解它的真实含义。
一些名词定义:

伪装:对数据进行一组可逆的数学变换
密文:伪装后的数据
明文:伪装前的原始数据
加密:伪装的过程,在加***的控制下进行
加密算法:用于对数据加密的一组数学变换
解密:合法收信者接收到密文后,实行与加密变换相逆的变换,去掉伪装恢复明文的过程
解密算法:用于解密的一组数学变换

发展阶段

  • 古代加密方法、古典密码(手工阶段、机械阶段):1949年以前,在这个阶段算法和秘钥都是保密的,秘钥空间较小,信息的安全性主要依赖于对于加密和解密算法的保密。
  • 近代密码(计算机阶段):1949年—1975年
  • 现代密码:1976年至今

密码*

一个密码系统,通常简称为密码*,由五部分组成:

  1. 明文空间M:全体明文的集合
  2. 密文空间C:全体密文的集合
  3. **空间K:全体**的集合。其中每一个**K由加***Ke和解***Kd组成,即K=<Ka,Kb>
  4. 加密算法E:一族由M到C的加密变换
  5. 解密算法D:一族由C到M的解密变换
    密码学的基本概念
    注:解密变换就是加密变换的逆运算

衡量密码*的安全性的基本准则:

  1. 计算是安全的
  2. 可证明是安全的
  3. 无条件安全的

密码*的分类

  • 根据Ke和Kd
    (1) 传统密码/对称密码/单**密码:一个密码*的Ke = Kd,或由其中一个很容易推出另一个
    (2) 公钥密码/非对称密码/双**密码:Ke != Kd,或在计算上Kd不能由Ke推出,这样Ke公开也不会损害Kd的安全
  • 根据明密文的划分和**的使用不同
    (1) 分组密码*
    将明文M分为一系列明文块Mi,i=1,2,…,n,通常每块包含若干位或字符,并且对每一块Mi都用同一个**Ke进行加密。即
    M = (M1,M2,……,Mn
    C = (C1,C2,……,Cn
    其中
    Ci = E(Mi,ke) i == 1,2,…,n
    (2) 序列密码*
    将明文和密文都划分为位或字符,并且对于明文序列中的每一个位或字符都用**序列中的对应分量来加密,即
    M = (M1,M2,……,Mn
    Ke = (Ke1,Ke2,……,Ken
    C = (C1,C2,……,Cn
    其中
    Ci = E(Mi,ke) i == 1,2,…,n

密码分析

如果能够根据密文系统地确定出明文或**,或能够根据明文—密文对来系统地确定出**,则我们说这个密码是可破译的。
密码分析者攻击密码的方法主要有一下三种:

  1. 穷举攻击:暴力**,基本攻击,代价大
  2. 数学攻击:代价小,对技术要求高
  3. 物理攻击:硬件形式,侧信道攻击(旁路攻击)

根据密码分析者可利用的数据资源来分类,可将密码攻击类型分为四种:

  1. 仅知密文攻击(唯密文攻击):根据截取的密文进行破译,对密码分析者最不利根
  2. 已知明文攻击(有内奸):已经知道某些明文—密文对来破译密码,密文中有可推测或已知的部分明文
  3. 选择明文攻击(暂时控制加密机):密码分析者能够选择明文并获得相应的密文,对密码分析者最有利
  4. 选择密文攻击(暂时控制解密机):密码分析者能够选择密文并获得相应的明文,对密码分析者十分有利

理论基础

商农建议采用扩散、混淆和乘积迭代的方法来设计密码。

  • 扩散:将每一位明文和**数字的影响扩散到尽可能多的密文数字中,理论下每一位明文和**数字都是一位密文的函数
  • 混淆:使密文和**之间的关系复杂化。关系越复杂,密文和明文之间、密文和**之间的统计相关性就越小。