【学习笔记】密码学入门(1)

【学习笔记】密码学入门(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.
【学习笔记】密码学入门(1)_第1张图片
计算性能不高,暂时未被破解

差分分析和线性分析

  • 差分分析:改变一部分明文分析密文如何改变
  • 线性分析:将明文和密文对应比特进行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 87=8+5=1
乘法: 7 ∗ 4 = 28 = 4 7*4=28=4 74=28=4
除法: 1 / 7 1/7 1/7 7 ∗ ( ) = 1 7*()=1 7()=1等于7
乘方: 7 4 = 2401 = 1 7^4=2401=1 74=2401=1
对数:乘方的逆运算 log ⁡ 7 8 \log_78 log78 7 x = 8 7^x=8 7x=8所以 x = 8 x=8 x=8

模的除法需要注意的是:例如在12 为mod的世界里,在0-11的数字中,只要一个数和12 互质, 总有一对数模乘为1,即总存在一对互为倒数的数,所以一个公钥总可以对应一个私钥.

RSA加密

加 密 : 密 文 = 明 文 E m o d N 解 密 : 明 文 = 密 文 D m o d N 加密: 密文=明文^EmodN \\ 解密: 明文=密文^DmodN :=EmodN:=DmodN
RSA的密文对明文的E次方求modN的结果.余数即是密文.
【学习笔记】密码学入门(1)_第2张图片

公钥:E和N的组合,有了E和N就可完成加密.
私钥:D和N的组合,有了D和N就可完成解密.

生成密钥对

  • 求N:
    两个很大的质数p和q,一般用随机数生成器生成,假设为512bit随机数,判断是不是质数,不是的就重新生成.
    N = p ∗ q N=p*q N=pq
  • 求L
    L是(p-1)和(q-1)的最小公倍数(least common multiple,lcm)
  • 求E
    E比1大,比L小,且E和L互质.通过随机数生成1到L的候选数,在判断使得否互质,满足互质是因为要保证一定存在解密时用的数D.
  • 求D
    1 < D < L E ∗ D m o d L = 1 即 E 和 D 在 m o d L 的 世 界 里 互 为 倒 数 11<D<LEDmodL=1EDmodL
    【学习笔记】密码学入门(1)_第3张图片

在mod运算中得知,只要存在E,必存在D. 只要数D满足该条件,就可以通过D和N解密E和N加密的密文.

对RSA的攻击

对于攻击者而言:
已知:密文,公钥E和N
未知:明文,私钥D,p,q,L

如果攻击者想要破解就必须获得D,但是想要获得D必须知道和D互质的L,想要得到L必须给N做指数分解得到两个指数p和q.

如果是暴力破解,随着D长度的变大,暴力破解难度指数增长;现在RSA算法中用的p和q都是1024bit,N长度则在2048bit,E和D也和N是一个数量级,所以破解难度巨大.

如果是指数分解攻击,目前还没有高效的质因数分解的算法,所以RSA还是安全的.

如果是推测p和q进行破解,因为p和q是随机数生成器产生的质数,所以随机数生成器的安全性决定了RSA的保密性.

其他公钥算法

绝大多数公钥算法都是建立在数学难题的基础上实现的,RSA算法是利用大数的质数分解设计.

  • EIGamal方式
    利用mod N 下离散对数的困难度,但是密文长度会是明文的两倍.

  • Rabin方式
    利用mod N下求平方根的困难度, 与质因数分解难度相当.

  • 椭圆曲线方式
    经椭圆曲线上的特定点进行特殊的乘法运算来实现的,利用了乘法运算的逆运算非常困难来实现.特点是密钥长度比RSA要短.

  • 格密码的方式
    某种程度上,格可以理解成系数为整数的向量空间. 格是n维线性空间中离散点的集合,格中的每个元素都是一个向量。在n维线性空间中m(m≤n)个线性无关的向量(b1,b2,…,bm)所生成的向量集合称为格。向量组(b1,b2,…,bm)称为格的一组基;格的基中的向量个数称为格的维数;同一个格可以有多组不同的基,但是基的维数相同。
    L = { a 1 v 1 + a 1 v 1 + a 1 v 1 + . . . + a 1 v 1 + a 1 v 1 + . . . , a n ∈ Z } L= \{ a_1v_1+ a_1v_1+ a_1v_1+...+ a_1v_1+ a_1v_1+..., a_n\in Z \} L={a1v1+a1v1+a1v1+...+a1v1+a1v1+...,anZ}

格密码的主要数学基础是格中的两个困难问题:
(1)格的最短矢量问题(SVP):对于给定的一组基,找出其所生成的格中欧氏距离(两点之间的距离)最小的非零向量。
即在格上找到一个非零向量v,满足对格上的任意非零向量u,均有||v||≤||u||。
(2)格的最近矢量问题(CVP):对于给定的格及任一向量,找出格中与该向量距离最近的向量。
即在格上找到一个向量v,满足对格上的任意非零向量u,均有||v-y||≤||u-y||。
格上的困难问题在代数上是很好解决的,但在几何上是困难的.

基于格难题的密码可用于后量子密码算法.

公钥密码面临的挑战

  • 安全性挑战
    Shor量子分解算法利用量子计算的并行性,可对大数进行快速分解,大大降低RS算法的破解时间,以及基于离散对数的量子求解算法.

  • 效率挑战
    随着传统RSA密钥长度的增加,使用传统公钥密码的效率降低.椭圆曲线算法虽然密钥较短,但是在椭圆曲线加法群上所进行的操作依然很复杂.

密钥强度对比

不同密码算法的强度不能直接通过密钥长度对比.但是在强度相对均衡的情况下:
【学习笔记】密码学入门(1)_第4张图片
并且,公钥密码的处理速度只有对称密码的几百分之一.所以公钥密码不适合对很长的消息进行加密.而且无论公钥算法的N有多长,总有一天会被质因数分解所破解.但是短期内,RSA-2048不会被破解.

混合密码系统

对称加密和公钥密码二者都有各自优缺点:
对称密码:效率高但是存在密钥配送和保存问题.
公钥密码:处理速度慢,无法防止中间人攻击
防止中间人攻击需要验证公钥的正确性,即认证

混合密码系统:将对称密码和公钥密码相结合.

混合密码系统机制:

  • 对称密码加密
  • 随机数生成器生成对称加密的密钥
  • 公钥密码加密对称密码会话密钥
  • 从外部赋予公钥密码加密使用的密钥
    【学习笔记】密码学入门(1)_第5张图片

总结

本篇文章主要总结了密码学的大致要点,以及主要的对称密码和公钥密码算法以及原理.

参考资料

[1] 图解密码技术(第三版)
[2] 简书:Kerwong,密码学入了个门,总结一下
[3] CSDN:中科院大学网安学院五班,格密码学习笔记(一)

你可能感兴趣的:(密码学)