加密算法——应用密码学基础 - HbnKing/Algorithm GitHub Wiki

密码学:(Cryptology)数学的一个分支,密码编码学+密码分析学的统称,是保障信息安全的核心,信息安全是密码学研究与发展的目的。

密码学的目的包括{证书认证、密钥管理、安全公文交换、电子签章/数字签名法、移动接入、支付密码}

密码学的功用{

保密性:信息不泄露给非授权实体

认证性:信息来源或实体本身被正确标识

完整性:未经授权不能篡改信息

不可否认性:用户不能在事后否认信息的生成行为

可用性:保障资源随时可提供服务

}

密码不是目的是手段。

密码学5元组{明文,密文,密钥,加密算法,解密算法}

密钥:参与密码变换的参数。(解密的前提必须知道密钥)

柯克霍夫原则:对手知道加/解密算法,密码系统中的算法即使被密码分析者所知,也无助于推导出明文或密钥,也就是说,密码系统的安全性不应该取决于不易改变的事物(算法),而应该取决于可随时改变的密钥,密码系统要抵抗攻击只能依赖于对密钥的保密。

破译算法的不同级别

{  全部破译:(Total Break)找出密钥

  全部推导:(Global Deduction)找出替代算法

  实例推导:(Instance Deduction)找出明文

  信息推导:(Information Deduction)获得一些有关密钥或明文的信息

  数据复杂性:(Data Complexity)用于攻击所需要的数据量

  存储需求:(Storage Requirement)进行攻击所需要的数据存储空间大小

  处理复杂性:(Processing Complexity)用于处理输入数据或存储数据所需的操作量,通常用完成攻击所需要的时间来度量 

}

加密方案实际安全准则满足下述二者其一:{ 

1、破译该密码的成本超过被加密信息的本身价值;

2、破译该密码的时间超过该信息有用的生命周期。

}

一个密码系统需实际可用需满足特征:{

1、每一个加密函数和每一个解密函数都能有效的计算。

2、破译者取得密文后将不能在有效的时间或成本范围内破解出密钥或明文。

3、必要条件:穷举密钥搜索将是不可行的,密钥空间非常大

}

加密算法基于两个基本操作:1、代替;2、换位。

密钥数量:1、单密钥密码—发送者和接受者双方使用相同的密钥,也叫对称密码、秘密密钥、常规密码。

     2、双密钥密码—发送者和接受者使用不同密钥,形成一个密钥对,其中一个可以公开,称之为公钥,另一个必须为密钥持有人秘密保管,称之为私钥。也叫非对称密码/公钥密码。

明文处理方式:1、分组密码—明文被分成具有一定大小的若干分组,一个明文分组当成一个整体输入进行加密处理,产生一个密文分组输出。e.g.64位(DES)128位(AES)的分组大小。

       2、流密码—序列密码,连续加密处理输入元素,一次产生一个元素输出,一次加密一个bit或一个字符。

一般而言分组密码应用广泛,绝大部分基于网络的常规加密应用都采用分组密码。