密码学入门

  • 主要内容与重点
  • 一、传统密码学
  • 二、现代密码学
  • 三、理论不可破解和计算不可破解的加密算法
    • 密码系统的基本要求和设计原则
    • 一次一密密码系统
      • 一次一密码系统的算法
      • 一次一密密码系统举例
      • 无法破解出明文的原因分析
      • 一次一密密码系统不实用的原因
  • 四、对称加密算法
  • 五、公开加密算法
    • 以 RSA 算法为例
    • 密钥的管理问题
    • 公开加密算法的特点
  • 六、两种加密算法结合使用
  • 七、散列算法

网络信息安全这门课属于 自然科学,自然科学必须有完备的数学理论基础, 密码学就是信息安全的数学理论基础

主要内容与重点

  • 一、传统密码学
  • 二、现代密码学
  • 三、理论不可破解和计算不可破解的加密算法
  • 四、对称加密算法
  • 五、公开加密算法
  • 六、两种加密算法结合使用
  • 七、散列算法

密码学的发展的三个阶段

  • 手工阶段(传统密码学)

    从古代到1949年为密码学诞生的前夜。这一阶段虽然有众多密码实践,比如两次世界大战中通信密码的大规模应用和密码的破译活动,但密码技术不是一种科学,而可称之为一种艺术。
    这一时期的密码专家常常靠直觉、猜测和信念来设计、分析密码,而不是凭借推理和证明。

  • 机械阶段(传统密码学)

    1949年,香农(Claude Shannon)在《贝尔系统技术杂志》上发表论文《保密系统的通信理论》,为对称密码系统奠定了理论基础,从而密码成为一门科学。而从1949年到1975年这段时间内,密码学的理论进展不大。

  • 电子计算机出现以后(现代密码学)

    直到1976年,Diffie和Hellman发表了《密码学的新方向》一文,建立了公钥密码系统,引发了密码学上的一次革命性的变革

密码学的四个空间

  • 待加密的明文空间
  • 加密后得到的密文空间
  • 加密和解密所使用的的算法空间
  • 加密和解密所使用的密钥空间

密码学的三个操作

  • 加密

    明文、加密算法 —— 【加密密钥的作用下】 ——> 密文

  • 解密

    密文、解密算法 —— 【解密密钥的作用下】 ——> 明文

  • 破译

    密文、解密算法 —— 【没有解密密钥的情况下】 ——> 明文

老师手迹~


1、老师提问:上图里对称加密下面的 C、D 的英文全称是什么?

答: 扩散(Diffusion)混淆(Confusion)

2、老师提问:现代密码学为什么N个人两两通讯所需的算法数只有1?

答:算法公开,所有的秘密都在密钥上。

3、老师提问:公开加密 中公开的是什么?

答案 :加密算法,解密算法,一部分密钥都是公开的。私钥是保密的。


密码的安全性取决于以下几点:

  • 密码算法本身的安全性(质变)

  • 密钥的长度(量变)

  • 随机数发生器的随机性(熵)

    熵是不确定性的量度,密钥空间为21282^{128}2128(不完全随机)并不意味着熵就能达到128,声称的熵和实际达到的熵不一样。熵为128只能说明破解密钥的最大工作量,丝毫不能说明最小量。

    随机数完全随机 ——> 密钥出现概率相等 ——> 达到最大熵

一、传统密码学

算法和密钥都必须保密,如模3的恺撒加密算法
缺点是:N个人两两相互通信则需要互不相同的算法太多。

二、现代密码学

  • 算法公开
    公开越久的算法,如一直在使用,有理由相信其加密强度越高,因为经过长时间攻击已完善;反之不公开算法加密强度可能不高。
  • 所有的秘密都在密钥上

三、理论不可破解和计算不可破解的加密算法

理论不可破解的加密算法:一次一密钥(无实用价值,密钥和明文一样长)

计算不可破解的加密算法:如,在现有商用计算机条件下,112 位的 3DES 算法1024 位的 RSA 算法

密码系统的基本要求和设计原则

密码学常见表示:

  • K —— 密钥
  • E —— 加密
  • D —— 解密
  • M ——明文
  • C —— 密文

密码学基本要求:

  1. 知道 K 时,C=E(M,K)C = E(M,K)C=E(M,K) 要容易计算
    在某个加密算法E下,对明文M使用密钥K加密,获得的密文为C

  2. 知道 K 时,M=D(C,K)M = D(C,K)M=D(C,K) 要容易计算
    在某个解密算法D下,对密文C使用密钥K解密,获得的明文为M

  3. 不知道 K 时,由 C 不容易推导出 M(难以破译)

设计原则:

  1. 合法的通信双方来说,加密和解密容易,D、E 公开
  2. 密码分析员来说由密文推导出明文困难,难以破译密码
  3. 衡量密码系统的好坏,应以能否被攻破和易于被攻破为基本标准。

一次一密密码系统

  • 属于流密码体系,是对称加密
  • 由美国 AT&T 的 G.W.Vernam 发明
  • 唯一理论上不可攻破的密码系统
  • 计算简单,效率高,但密钥管理困难

一次一密码系统的算法

假定明文是 M=(m0,m1,…,mn−1)M = (m_0,m_1,…,m_{n-1})M=(m0​,m1​,…,mn−1​)
用下述算法 Ci=EKi(mi)=(mi+Ki)(mod26)0≤i<n(1)C_i = E_{Ki}(m_i) = (m_i + K_i)(mod 26) 0\leq i < n(1)Ci​=EKi​(mi​)=(mi​+Ki​)(mod26)0≤i<n(1)
可以得出密文 C=(C0,C1,…,Cn−1)C =(C_0,C_1,…,C_{n-1})C=(C0​,C1​,…,Cn−1​)

明文的每一位(MiM_iMi​)加上密钥的每一位(KiK_iKi​),模上26,得到密文的每一位(CiC_iCi​),这就是流密码体系,明文与密文一一对应。

有以下几点要求:

  1. 密钥 K=(K0,K1,…,Kn−1)K =(K_0,K_1,…,K_{n-1})K=(K0​,K1​,…,Kn−1​)是一个随机序列
  2. 密钥只能使用一次
  3. 密钥长度要等于明文长度,即 ∣K∣=∣M∣\left | K \right | = \left | M\right |∣K∣=∣M∣

一次一密密码系统举例

明文为 send help,由 0-a,1-b,2-c,3-d,4-e … 对应规则可知:

M=(18,4,13,3,7,4,11,5),n=8M = (18,4,13,3,7,4,11,5),n=8M=(18,4,13,3,7,4,11,5),n=8

上面提到,把明文的每一位(MiM_iMi​)加上密钥的每一位(KiK_iKi​),模上26,得到密文的每一位(CiC_iCi​)。

通讯双方在知道密钥(K)的情况下,可以很容易的将密文©还原为明文(M)。


老师提问:一次一密密码例子中,由密文5 - 密钥20,不够减怎么办?
答:由于算法中明文的每一位与密钥相加后会模26,因此解法为:5+26−20=115+26-20 = 115+26−20=11


无法破解出明文的原因分析

不知道 K 无法破解出明文 M:

  1. 密钥序列 26n26^n26n 可能是个天文数字,用穷尽搜索方法工作量大。

  2. 上述例子中 K=(4,3,2,21,22,24,20,20)​时,由同一个密文 C,可生成另一个有意义明文:M =(t,o,m,i,s,i,1,1)。

    “send help” 和 “tom is ill” 作为明文的可能性相同,获悉密文丝毫不能增加破译的可能性。

一次一密密码系统不实用的原因

  1. 很难生成真正随机的密钥序列。
  2. 即使已经生成,很难分发/存储和明文等长的随机密钥序列。
  3. 若有安全信道可传递每次不同、任意长的密钥序列,为何不直接用来传递明文呢?

实际不可攻破的密码系统是指:它们在理论上是可以攻破的,但所需计算资源超出实际的可能性。

四、对称加密算法

对称加密算法的唯一功能:保证机密性的加密和解密(与后面的公开加密算法区分)

特点:加密密钥和解密密钥完全相同,相反过程迭代就可解密。

常见的对称加密:

  • DES(64位,其中56位参与运算,8位是校验位)
  • 3DES(112位、168位)
  • IDEA(最早的128位对称加密算法之一,到目前仍然安全)
  • AES(新的国际标准)

对称加密的优点:

  • 速度快

对称加密的缺点:

  • 密钥分发难(带外发送)
  • 不能进行发送端鉴别(源端抗否认),如发布密钥可能泄露给第三人
  • N 个人两两相互通信只需要 1 个算法,但需要 N(N-1)/2 个密钥

五、公开加密算法

公开加密算法具有难解性(通常是难以解决的数学难题)。

公开加密算法公开了:加密算法,解密算法,一部分密钥

公开加密算法的三个功能:

  1. 保证机密性的加密和解密
  2. 实现不可否认性的数字签名和验证签名
  3. 可以进行密钥的分配和交换

常见的公开加密算法:

  • RSA

    基于大合数分解成大质数的困难。(可用于加密和数字签名)

    公开密钥的三个功能都可以做到,缺点是速度慢

  • D-H

    基于有限域上计算离散对数的难解性。(只用于密钥交换)

  • 椭圆曲线

    基于椭圆曲线点群上计算离散对数的难解性。(可以取代RSA)

    公开密钥的三个功能都可以做到,并且速度比RSA快

    公开加密算法的发展方向

  • DSS(数字签名标准)

    只能进行数字签名

    以 RSA 算法为例

    两个大质数 (1024bi) 相乘容易,但将一个大合数分解成两个大质数难(计算上不可行)。

    1. 一个函数生成两个密钥
    2. 不能由其中一个推导到另外一个
    3. 一个密钥用于加密,另一个用于解密
    4. 哪一个用于加密,哪一个用于解密无所谓
    5. 但用一个加密的密文,肯定能用另一个解密

相互通信的每个用户生成一对密钥(N个人共有2N个密钥),一个可以公开发布(公钥),另一个自己使用,只能自己知道(私钥)

为什么公开加密算法中密钥需要1024 位强度才够,而对称加密只需要100多位?
1)对称密钥是完全保密的,所以短密钥就可以具有高强度;
2)公开密钥算法毕竟公钥已公开公钥和私钥肯定有一定联系(尽管难以推导),所以长密钥才安全。

密钥的管理问题

对称加密系统中,由于加密的密钥就是解密的密钥,因此对称加密担心泄露密钥

公开加密系统中,用户的公钥不担心泄密,但是担心公钥被人篡改,也称为公钥担心被假冒。解决方案是,利用 CA(电子认证服务),由CA这个可信第三方来颁发数字证书,保证公钥数据的真实性。


公开加密算法的两种用法:

情况:A 发送消息给 B

  1. A 用 B 的公钥加密 ——> B 用自己私钥解密

    非 B 不能得到 A 发送的消息(保证了机密性

  2. A 用自己私钥加密 ——> B 用 A 的公钥解密

    别人也不能假冒 A 发送消息(没有 A 的私钥,其他无法用A 的公钥解密开,因此无法假冒 A)

    A 也不能否认发送过该消息(数字签名不可否认

以上用法有两个前提:

  • A 必须得到 正确的 B 的公钥
  • B 必须得到 正确的 A 的公钥

B 要确认自己得到的声称是 A 公钥的密钥确实是 A 的公钥,而不是其他人的公钥(否则别人就可以冒充 A 发送消息, 也可以得到原来是发送给 A 的机密数据)—— 需要从 CA 处得到 A 的公钥CA 以自己的私钥加密 A 的公钥担保,而 CA 的公钥众所周知。

综合上述两种用法:

加密:A 用自己的私钥加密,用 B 的公钥加密

解密:B 用自己的私钥解密,用 A 的公钥解密

公式化描述:

C=EB的公钥(EA的私钥(M))C = E_{B的公钥}(E_{A的私钥}(M))C=EB的公钥​(EA的私钥​(M)) —> M=DA的公钥(DB的私钥(C))M = D_{A的公钥}(D_{B的私钥}(C))M=DA的公钥​(DB的私钥​(C))

以上操作:

  • 确保只有 B 能够接收到消息(机密性
  • B 确认消息是 A 发送的(数字签名
  • 相反顺序加解密不能实现数字签名

老师问题:讨论A发消息给B的所有情况:

(1)A用自己的公钥加密,能否加密,有没有意义?

(2)A用自己的私钥加密,能否加密,有没有意义?

(3)A用B的公钥加密,能否得到B的正确公钥,安全意义?

(4)A用B的私钥加密,有没有意义?


接收端不可否认 —— 数字签名收条(S/MIME v3)

时间不可否认(抗重放)—— 时间戳

公开加密算法的特点

优点:

  • 产生密钥个数少,公开分发密钥

  • 数字签名

  • 适用于互联网环境

缺点:

  • 速度慢(密钥太长),不合适直接加密明文

六、两种加密算法结合使用

公开加密与对称加密结合使用,形成了 PGP 加密算法雏形 (简单了解)

A 发送前

  • A 用自己私钥加密明文散列值
  • 再用随机对称密钥加密明文和散列值
  • 最后用B公开密钥加密该对称密钥

B 接收后:

  • B 用自己私钥解密得到对称密钥
  • 再用对称密钥对密文解密得明文和散列值
  • 最后用A公钥解密明文散列值

七、散列算法

雪崩效应:明文修改一点点,散列函数不变,散列值发生巨大变化

(1)算法公开:MD5、SHA1、…

(2)数字指纹(压缩函数):使得散列算法具有完整性(数据在发送过程中不被破坏,发怎样收怎样)

(3)散列算法与加密算法的区别:

  • 散列过程不可逆,只加密不解密
  • 散列算法无密钥
  • 散列得出的密文与明文长短无关只与散列算法有关

(4)如何用散列算法实现完整性

  • 比较传输得到的散列值计算得到的散列值,如不匹配要求重传
  • 传明文M(长) 和传H(M)信道(短)出错的概率相差很大
  • 直接传明文及其散列值没有任何安全性

(5)冲突(碰撞)

  • 冲突必然存在,只是很难找到。
  • "冲突"与"可逆"的不同,散列不可逆。
  • Hash 值不够安全:不是它们可逆,而是能够比较确定、较快地找到冲突。

【网络信息安全】密码学入门笔记相关推荐

  1. 网络信息安全大赛题目笔记

    第二题 访问网址:http://114.112.74.142:92/13,找到题目中的flag. 你能找到账号密码登陆吗? tips:PS是什么?你知道吗?上度娘问问? 用户名: 密 码: 可以揣测, ...

  2. 网络信息安全软考笔记(1)

    前言

  3. 【网络信息安全】网络信息安全概述

    网络信息安全的原则 网络信息安全概述 网络安全的原则 TCP/IP 概述 OSI 与 TCP/IP 的关系 IP地址和协议端口 为什么Internet不安全 网络信息安全概述 信息安全包括: 信息安全 ...

  4. 《基于张量网络的机器学习入门》学习笔记7

    <基于张量网络的机器学习入门>学习笔记7 量子算法 什么是量子算法 三个经典量子算法 Grover算法 背景 基本原理 例题 量子算法 什么是量子算法 例如我们求解一个问题,一个111千克 ...

  5. 《基于张量网络的机器学习入门》学习笔记6

    <基于张量网络的机器学习入门>学习笔记6 密度算符(密度矩阵) 具体到坐标表象 在纯态上 在混合态上 纯态下的密度算符 混合态下的密度算符 密度算符的性质 量子力学性质的密度算符描述 第一 ...

  6. 《基于张量网络的机器学习入门》学习笔记5

    <基于张量网络的机器学习入门>学习笔记5 量子概率体系 事件 互斥事件 概率与测量 不相容属性对 相容属性对 量子概率与经典概率的区别 量子测量 量子概率体系 我们将经典的实数概率扩展到复 ...

  7. 《基于张量网络的机器学习入门》学习笔记4

    <基于张量网络的机器学习入门>学习笔记4 量子概率 将概率复数化 分布与向量的表示 事件与Hilbert空间 不兼容属性及其复数概率表示 为什么一定要复数概率 量子概率 将概率复数化 在经 ...

  8. 《基于张量网络的学习入门》学习笔记3

    <基于张量网络的机器学习入门>学习笔记3 量子寄存器.量子状态叠加与并行处理的关系 不确定性原理 量子寄存器.量子状态叠加与并行处理的关系 叠加态的数学定义: ∣x⟩=α1∣x1⟩+α2∣ ...

  9. 《基于张量网络的机器学习入门》学习笔记2

    <基于张量网络的学习入门>学习笔记2 量子逻辑门 单量子逻辑门 恒等操作 泡利-X门(Pauli-X gate) 泡利-Y门(Pauli-Y gate) 泡利-Z门(Pauli-Z gat ...

最新文章

  1. 2018年全球自动驾驶法律政策研究 | 附报告下载
  2. js数组去重(多种方法)
  3. smartbits的国产版本minismb-如何测试路由器
  4. 基于 Token 的多平台身份认证架构设计
  5. php生成网页,php – 网页生成(CMS喜欢)
  6. 专门用来显示大量数据的视图:AdapterView(1)
  7. [Java][Liferay] 模拟用户
  8. 盘点:2022年10款比较火的项目管理软件
  9. 联想服务器双系统安装教程,◆【双系统安装教程】小白也能看懂的双系统安装教程♀灰常简单♀(原创)◆...
  10. 密码编码学与网络安全(第五版)答案
  11. Python实现定时发邮件
  12. Android基础之批量发送短信
  13. 云队友丨专访极飞科技彭斌:人的梦想是摁不住的!
  14. 李开复:我要找什么样的人一起创业?
  15. matlab向量殿臣,matlab课后习题答案.doc
  16. 面对区块链,普通人应该做什么?
  17. 华为机试练习(七)书籍叠放问题
  18. itext 导出word
  19. rpc服务器不可用然后无限重启,系统同步更新失败提示RPC服务器不可用怎么办
  20. 深度总结 | 知识蒸馏在推荐系统中的应用

热门文章

  1. C语言常用字符串函数strlen、strcpy、strcat、strcmp、strchr
  2. 用SAX2方式解析XML
  3. 解决正在等待响应_解决一些等待问题
  4. ssis 执行 依赖_从SSIS执行您自己的.NET控制台应用程序
  5. aws rds监控慢sql_使用AWS CLI部署AWS RDS SQL Server
  6. Excel 2007 Open XML文件结构~~~1
  7. JavaScript前端俄罗斯方块小游戏
  8. 线性表顺序表模板 纯本人手工创造
  9. [工具库]JOXMLBuilder工具类——一键把多个bean对象数据转换为XML格式数据
  10. SpringBoot 实现热部署有哪几种方式