浅读《图解密码技术》(学习笔记)

一、什么是密码学?

密码学(Cryptography)

Cryptography is about constructing and analyzing protocols that prevent third parties or the public from reading private messages.

①protocol:n. 协议; 议定书;方法;
②private:adj. 私有的; 私人的;
翻译:密码学就是构建和分析一系列方法,这些方法能阻止第三方或公众读取私密信息。

二、历史上的密码

1.凯撒密码

  凯撒加密法的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3):
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
破解该密码最多需要尝试26种可能

2.单表替换密码

  单表替代密码对明文中的所有字母都使用一个固定的映射(明文字母表到密文字母表)。设A={a0, a1,…, an-1}为包含了n个字母的明文字母表;B={b0, b1,…, bn-1} 为包含n个字母的密文字母表,单表替代密码使用了A到B的映射关系:f:A→B, f ( ai )= bj,如下图所示:

  破解该密码最多需要尝试26!种可能
  频率分析攻击

3.多表替换密码

  使用维尔纳密码实现,需要根据明文和索引来找到相对应的密文,维尔纳密码表如下图所示:

①首先将索引(短于明文)复制成若干份,直至同明文长度保持一致
②将索引(增长之后的)与明文对应
如:明文:IJFKSLAIWOOSJWNCBWGEUCNFBEHH
  索引:LSYLSYLSYLSYLSYLSYLSYLSYLSYLSY
 则密文:ABIVJJ……
(明文为横向对应的纵列,索引为纵向对应的横行,交叉点即为密文)
  破解方式:按照索引长度,将明文切片,然后再分别根据每个切片中索引的同一位置的同一字母进行频率分析

4.机械密码:Enigma(谜)

  密码机如下图所示,操作由发报员按动密码机下方的小键盘,则对应上方的小灯泡会亮,亮的小灯泡所对应的字母即为原来输入字母的密文。
  在显示器的上方是三个直径6厘米的转子,它们的主要部分隐藏在面板下,转子才是“恩尼格玛”密码机最核心关键的部分。同一个字母在明文的不同位置时,可以被不同的字母替换,而密文中不同位置的同一个字母,又可以代表明文中的不同字母,字母频率分析法在这里丝毫无用武之地了。这种加密方式在密码学上被称为“复式替换密码”。当第一次键入A,灯泡B亮,转子转动一格,各字母所对应的密码就改变了。第二次再键入A时,它所对应的字母就可能变成了C;同样地,第三次键入A时,又可能是灯泡D亮了。
  使用“恩尼格玛”通讯时,发信人首先要调节三个转子的方向(而这个转子的初始方向就是密匙,是收发双方必须预先约定好的),然后依次键入明文,并把显示器上灯泡闪亮的字母依次记下来,最后把记录下的闪亮字母按照顺序用正常的电报方式发送出去。收信方收到电文后,只要也使用一台“恩尼格玛”,按照原来的约定,把转子的方向调整到和发信方相同的初始方向上,然后依次键入收到的密文,显示器上自动闪亮的字母就是明文了。加密和解密的过程完全一样,这就是反射器的作用,同时反射器的一个副作用就是一个字母永远也不会被加密成它自己,因为反射器中一个字母总是被连接到另一个不同的字母。

  相当于是26×26×26张表的多表替换。
  破译方法:用的也是机器进行破解

三、现代密码学工具

信息安全所面临的威胁 受威胁的特征 用来应对的技术
窃听 机密性 对称密码
公钥密码
篡改 完整性 单项散列函数
消息认证码
数字签名
伪装 认证 消息认证码
数字签名
否认 不可否认性 数字签名

1.信息安全的五大特性:

(1)完整性:指信息在传输、交换、存储和处理过程保持非修改、非破坏和非丢失的特性,即保持信息原样性,使信息能正确生成、存储、传输。这是最基本的安全特征。
(2)机密性:指信息按给定要求不泄漏给非授权的个人、实体,即杜绝有用信息泄漏给非授权个人或实体,强调有用信息只被授权使用的特征。
(3)可用性:指网络信息可被授权实体正确访问,并按要求能正常使用或在非正常情况下能恢复使用的特征,即在系统运行时能正确存取所需信息,当系统遭受攻击或破坏时,能迅速恢复并能投入使用。可用性是衡量网络信息系统面向用户的一种安全性能(使信息能够按照用户的要求被正常使用)。
(4)不可否认性:指通信双方在信息交互过程中,确信参与者本身,以及参与者所提供的信息的真实同一性,即所有参与者都不可能否认或抵赖本人的真实身份,以及提供信息的原样性和完成的操作与承诺。
(5)可控性:指对流通在网络系统中的信息传播及具体内容能够实现有效控制的特性,即网络系统中的任何信息要在一定传输范围和存放空间内可控。

2.信息安全存在的威胁

(1)窃听:指的是在发送方A给接收方B发送信息的过程中,第三方X非法读取信息内容,从而对信息安全构成威胁。
(2)篡改:指的是在发送方A给接收方B发送信息的过程中,第三方X非法修改信息内容,从而对信息安全构成威胁。
(3)伪装:指的是第三方X将自己伪装成发送方A,给接收方B发送信息,从而对信息安全构成威胁。
(4)否认:指的是在发送方A给接收方B发送信息之后,发送方A对向接收方B发送信息这件事进行事后否认,从而对信息安全构成威胁。

3.存在的疑惑

(1)表格中“伪装”行为威胁到的是信息安全五大特征中的什么特征?
(2)密钥的读音为(mi yue),口语中也可以读成(mi yao)

4.现代密码学工具

(1)对称密码
  在对称密码中,加密用的密钥和解密用的密钥是相同的,如下图所示。密钥要相对较短。

①代表性的对称密码算法:DES、AES、Blowfish、Twofish…
②对称密码终极版:One-Time Pad,理论上无法破译,但不实用,是量子密钥分发所以来的基本理论;
首先用明文和密钥做异或运算得到密文

明文:01101101
密钥:01101011
密文:00000110

然后用密文和密钥再次做异或运算得到解密后的明文

密文:00000110
密钥:01101011
明文:01101101(解密后的明文)

条件:a)密钥和明文等长;
   b)密钥必须完全随机;
   c)密钥不能重复使用;
(2)公钥密码(非对称密码)
  公钥密码中,加密使用的密钥和解密使用的密钥是不同的,如下图所示。

①代表性的公钥密码算法:RSA、DH、DSA、ECDSA…
②RSA公钥密码算法
  RSA的加密解密过程如下图所示:

  RSA算法的原理:

由于对称密码速度快但密钥难以分发,公钥密码密钥容易分发,但速度慢,所以引入混合密码:
a)用公钥密码来加密和分发对称密码的密钥;
b)用对称密码来加密要传输的消息;
(3)哈希函数(散列函数)
  由于哈希函数具有雪崩效应(原消息中有任何细微变化都会导致经过哈希函数得到的哈希值有巨大变化),所以哈希函数可以用来验证消息的完整性。
  应用:用哈希函数处理用户口令(Password),即将用户口令利用哈希函数,计算哈希值之后,将哈希值存在数据库里面。
(4)消息验证码
  哈希函数+密钥=消息验证码(MAC)
  威胁:重放攻击
  破解方法:采用随机编码的方法,在每个消息中加入一个随机数,每个随机数只能使用一次,然后再经过哈希之后发送给接收者,以此来抵御重放攻击。
(5)数字签名
  数字签名与前面学习过的公钥密码方式类似,公钥密码由一个公钥和一个私钥构成密钥对,公钥进行加密,私钥进行解密,如下图所示。

  数字签名也是由公钥密码由一个公钥和一个私钥构成密钥对,不同的是,此处的公钥用来解密,私钥则是用来加密,如下图所示。用私钥加密相当于生成签名,用公钥解密则相当于验证签名。

  应用:iOS App
  威胁:中间人攻击
  破解方法:数字证书

5.其他

(1)加密与解密
  发送者Alice将发送明文加密之后得到密文,将密文发送给接收者Bob,Bob将接收到的密文解密,从而得到明文,在此过程中,窃听者Eve只能窃听到密文,无法解密得到明文,如下图所示,从而保证了消息的机密性。

(2)随机数生成器
  具有不可预测性,C语言中的rand函数并非密码学领域中可靠的随机数生成函数。

四、密码学应用——SSL/TLS&区块链

1.HTTP+SSL/TLS=HTTPS

2.比特币与区块链

(1)比特币的地址:公钥+哈希函数
(2)比特币钱包:私钥
(3)比特币交易记录:区块链

五、量子时代的密码学

1.量子密码

  量子密码是基于量子理论的通信技术,由Bennett和 Brassard于20世纪80年代提出。尽管带有“密码”这个词,但严格来说它并没有直接构成―种密码体系,而是一种让通信本身不可窃听的技术,也可以理解为是一种利用光子的量子特性来实现通信的方法。

2.量子计算机和量子算法

  Shor量子算法可以再多项式时间内完成质因数分解(RSA公钥密码算法的基础),但是现在没有能够运行Shor算法的实用量子计算机。

3.后量子算法

即便使用量子计算机和量子算法依然难以破解的密码:
(1)基于格理论的密码;
(2)多变量公钥密码;
(3)基于哈希函数的密码;
(4)基于编码的密码;

六、一些小建议

1.不要使用保密的密码算法
  密码算法是公开的,要保密的是密钥;
2.使用低强度的密码还不如不使用密码
  用户对信息安全性的错误依赖;
3.任何密码总有一天都会被破解(处理One-Time Pad)
  权衡信息的重要性和生命周期;
4.密码只是信息安全的一部分
  信息安全最脆弱的环节不是密码,而是人类自身;
5.密码不能解决所有的安全问题
6.密码学的可靠性严重依赖于是否正确实现和使用
  不要认为自己能发明一个可靠的密码学算法;
  即便对于AES、RSA之类的公认算法,也不要尝试自己去实现,而是要使用主流的实现;
7.即使最安全的密码学系统也可能因为一个设计或程序错误而变得毫无用处,做再多单元测试也难以发现密码学系统中的漏洞

Dan Boneh教授的课:https://www.coursera.org/learn/crypto
好好学数学!尤其数论、群论……

浅读《图解密码技术》--学习笔记相关推荐

  1. 图解密码技术学习笔记

    主题:图解密码技术 简介:密码技术入门学习 参考:译者分享 作者:ybb 时间:2021年12月15日 周自恒直播课学习笔记 4.分组密码的模式 4.1 DES和AES作为对称加密时使用的分组密码只能 ...

  2. 《图解密码技术》笔记3:对称密码(共享密钥密码)-用相同的密钥进行加密和解密

    目录 3.1 炒鸡蛋与对称密码 3.2 本章学习主要内容 3.3 从文字密码到比特序列密码 3.3.1 编码 3.3.2 XOR(异或) 3.4 一次性密码本–绝对不会被破译的密码 3.4.4 一次性 ...

  3. 《图解密码技术》笔记2:历史上的密码-写一篇别人看不懂的文章

    目录 1. 凯撒密码 2. 简单替换密码 3. Enigma(恩尼格玛密码机) 本章主要介绍历史上几种著名的密码.包括以下内容: 1)凯撒密码      2)简单替换密码         3)Enig ...

  4. 《图解密码技术》笔记11:密钥-秘密的精华

    目录 11.1 本章学习的内容 11.2 什么是密钥 11.2.1 密钥就是一个巨大的数字 11.2.2 密钥与明文是等价的 11.2.3 密码算法与密钥 11.3 各种不同的密钥 11.3.1 对称 ...

  5. 《图解密码技术》笔记5:公钥密码-用公钥加密,用私钥解密

    目录 5.1 投币寄物柜的使用方法 5.2 本章学习的内容 5.3 密钥配送问题 5.3.1 什么是密钥配送问题 5.3.2 通过事先共享密钥来解决 5.3.3 通过密钥分配中心来解决 5.3.4 通 ...

  6. 《图解密码技术》笔记13:PGP-密码技术的完美组合

    目录 13.2 PGP简介 13.2.1 什么是PGP 关于GNU Privacy Guard 13.2.2 PGP的功能 13.4  加密与解密 13.4.1 加密 13.4.2 解密 13.5  ...

  7. 《图解密码技术》读后的总结

    <图解密码技术>我认为是一本密码学入门的易读书,身边的几个做密码相关工具的朋友都推荐我看看,这次有时间就看了下. 本书是我11月份开始阅读的,一共用了25天,每天读完后都会把一些我认为是重 ...

  8. SpringBoot整合第三方技术学习笔记(自用)

    SpringBoot整合第三方技术学习笔记 搬运黑马视频配套笔记 KF-4.数据层解决方案 KF-4-1.SQL 回忆一下之前做SSMP整合的时候数据层解决方案涉及到了哪些技术?MySQL数据库与My ...

  9. 密码技术学习一:密码

    0.前言 本文是作者阅读<图解密码技术>时,学习总结的一些知识,在此推荐想要深入学习密码知识的同志,将此书作为入门书来看还是比较适合的. 1.密码技术简介 1.1加密与解密 在两者通信过程 ...

  10. 小五思科技术学习笔记之SSH

    下面介绍一下相关概念: SSH的概念: SSH的英文全称为Secure Shell,SSH使用TCP的22号端口,其目的是要在非安全的网络上提供安全的远程登陆和其他安全的网络服务, 为什么要使用SSH ...

最新文章

  1. 同底数幂比较大小方法_初中数学解题技法19.幂的运算
  2. 360董事长周鸿祎发表全员信:疫情当前,要做好长期在家办公的准备
  3. thinkphp整合系列之phpqrcode生成二维码
  4. RabbitMQ之监控(1)
  5. zuul转发的一些常见异常
  6. james-2.3.2中的配置
  7. Python中xPath技术和BeautifulSoup的使用
  8. 使用TensorFlow.js的AI聊天机器人二:训练Trivia Expert AI
  9. Javascript -- 精通String
  10. [python] linspace():获取等间隔数组
  11. Android异常总结---3.Failed to install *.apk on device 'emulator-5554': timeout 错误提示:
  12. stem函数--Matplotlib
  13. 快速突破面试算法之双指针篇
  14. 移动前端开发一定会遇上的事
  15. 《21天学通Java(第7版)》——VC程序员的学习笔记1
  16. c语言fat文件系统,【操作系统】简单FAT文件系统实现
  17. SPLUS软件授权管理必知
  18. Job for DmServiceDMSERVER.service failed because the control process exited with error code. Se
  19. html水平导航栏代码连接状态,水平导航栏1.html
  20. CAD文字显示号问题原因和解决办法

热门文章

  1. 毕业实习笔记——WRF模式入门(Cygwin版)
  2. linux wrf 系统_WRF在Linux环境下的安装
  3. 想要降低gradle版本时遇到“Minimum supported Gradle version is XXX. Current version is XXX.”
  4. 【牛客刷题-SQL进阶挑战】NO5.窗口函数
  5. 家喻户晓的足力健,凭什么征服中老年人?
  6. 单向链表中的数据排序问题
  7. 【设计模式 三】实战工厂汽车代工之工厂模式-简单模式
  8. 学习要趁早年轻要挣钱
  9. 九鼎无双一面面经【凉】
  10. 贪吃蛇小游戏(HTML+CSS+JS)