【学习笔记】密码学入门(1)
学习笔记 1 --密码学入门
密码学是研究编制密码和破译密码的技术科学。最初的目的是用于对信息加密,计算机领域的密码技术种类繁多。但随着密码学的运用,密码还被用于身份认证、防止否认等功能上。
密码算法是用于加密和解密的数学函数,密码算法是密码协议的基础。现行的密码算法主要包括序列密码、分组密码、公钥密码、散列函数等,用于保证信息的安全,提供鉴别、完整性、抗抵赖等服务。
计算机安全研究所(Computer Security Institute)报告说,在2007年,接受调查的公司中有71%的公司对传输中的某些数据使用了加密,而53%的公司对存储的某些数据使用了加密。加密可用于保护“静止”数据,例如存储在计算机和存储设备(例如USB闪存驱动器)上的信息)。近年来,有许多关于机密数据的报告,例如客户的个人记录,由于笔记本电脑或备用驱动器的丢失或被盗而暴露;如果物理安全措施失败,则对此类静态文件进行加密有助于保护它们。
常用密码算法分类
常用的密码学技术有:
1.对称加密(Sysmmetric Cryptography)
2.非对称加密(Public-Key Cryptography,Asymmetric Cryptography)
3.单项序列(One-Way Hash Function)
4.消息认证(MAC,Message Authentication Code)
5.数字签名(Digital certificates)
不同应用场景
场景 | 技术 | 特征 |
---|---|---|
防窃听 | 对称加密/非对称加密 | 保密性 |
防篡改 | 单项序列,消息认证码,数字签名 | 完整性 |
防伪装 | 身份认证 ,消息认证,数字签名 | 唯一性 |
防否认 | 数字签名 | 不可否认 |
对称加密
对称算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加/解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加/解密。只要通信需要保密,密钥就必须保密。
对称密码最常用,效率高。
DES (Data Encryption Standard)
DES 算法是把64bit明文加密成64bit密文的算法,密钥长度56bit。以 64 bits 明文为一个单位(每隔 7 bits 会有一个 校验码checksum bit,因此实际有效为 56 bits),分组对明文进行加密的,是一种分组密码(Block Cipher)算法。
DES 算法原理是通过一个称为 Feistel 网络(Feistel网络还在其他算法中也有用到),加密的每个步骤称为轮,整个加密过程是若干轮次的循环,因为XOR的数学特性(相同的数字XOR恒为0),加密解密可以用相同的结构实现,解密过程就是用一样的密钥逆向操作相同轮次就可以获得明文。
具体DES算法参看:学习笔记–DES算法概述
已被破解
三重DES
为了增加DES的强度,将DES重复三次所得到的一种密码算法,也称作3DES。三重DES并不是加密三次,而是加密解密加密的过程,当三次DES的密钥相同时,就是普通的DES,对DES有向下兼容性;如果是三次密钥都不一样,就是成为DES-DES3;如果两次加密密钥一样,解密密钥不一样,就是DES-DES2.
计算性能不高,暂时未被破解
差分分析和线性分析
- 差分分析:改变一部分明文分析密文如何改变
- 线性分析:将明文和密文对应比特进行XOR并计算结果为0的概率;
如果密文完全随机,则线性分析的结果应该为1/2.相反如果能找到偏离1/2最大的部分
AES(Advanced Encryption Standard)
AES 是于 2000 年被采用的最新的对称加密标准,采用了 Rijndael 算法,Rijndael 算法也是一种分组算法,分组长度固定为128bit,密钥长度规定为 128 bits,192 bits, 256 bits 三种规格, 没有采用Feistel网络,采用的是SPN网络.
Rijindael算法原理
加密:
1.Subbytes逐字节替换
2.Shiftrows行平移
3.Mixcolumns混合列
4.AddRoundKey与轮密钥进行XOR
解密: 相反顺序进行
Rijindael 算法,输入的所有比特都被加密,和每一轮只加密一般输入比特的Feistel相比,加密轮数比较少,可以分别以字节,行,列为单位进行运算.
可自由免费使用,安全、快速,暂未被破解, 推荐使用。
对称加密总结
使用一个密码空间巨大的对称密码,目前基本上可以保证安全,但是需要解决的是密钥的安全传输和存储问题,为了解决密钥配送问题,我们需要用到公钥密码.
公钥密码
密钥分为加密密钥和解密密钥两种.公钥和私钥都是一一对应的,成为密钥对.虽然公钥密码解决了密钥配送问题,但是却存在公钥认证问题.
mod运算
假设以12为模
加法: 7 + 20 = 3 7+20=3 7+20=3
减法: 8 − 7 = 8 + 5 = 1 8-7=8+5=1 8−7=8+5=1
乘法: 7 ∗ 4 = 28 = 4 7*4=28=4 7∗4=