现代密码学1.3--古典密码/historical cipher

  • Caesar's cipher/凯撒密码
  • The shift cipher/移动密码
  • The mono-alphabetic substitution cipher/单字母替代密码
    • 对于shift cipher的进阶版攻击
  • The Vigenere(poly-alphabetic)cipher/多字母替代密码
    • 密钥长度已知
    • 密钥长度未知
  • 总结

博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。

这一篇讲了一些古典密码,思想是“设计安全的密码方案是很难的”,所有介绍的古典密码都已经被破解了。

Caesar’s cipher/凯撒密码

世界上最古老的有记载的密码之一。
加密方式:将每个字母向前移动三位,如a→D,b→Ea\rightarrow D,b\rightarrow Ea→D,b→E。
攻击方式:没有key,知道加密方式的都能破解。

The shift cipher/移动密码

进阶版Caesar’s cipher,加入key。
加密方式
Gen: Gen key k∈{0,……,25}k\in \{0,……,25\}k∈{0,……,25};
Enc: Enck(m1,……ml)=c1,……,clEnc_k(m_1,……m_l)=c_1,……,c_lEnck​(m1​,……ml​)=c1​,……,cl​, where ci=[(mi+k)c_i=[(m_i+k)ci​=[(mi​+k)mod 26]26]26]
Dec: Deck(c1,……cl)=m1,……,mlDec_k(c_1,……c_l)=m_1,……,m_lDeck​(c1​,……cl​)=m1​,……,ml​, where mi=[(ci−k)m_i=[(c_i-k)mi​=[(ci​−k)mod 26]26]26]
攻击方式:密钥空间=26,密钥空间太小,只要从26种可能明文中找到有意义的即可。至少需要2702^{70}270大小的密钥空间。

The mono-alphabetic substitution cipher/单字母替代密码

进阶版shift cipher,改变map方式。
加密方式:之前的map是将字母向前移x位,现在要求只要满足双射即可。
攻击方式:虽然现在密钥空间(=26!)变大了可以通过英文字母的频率分布来破解,如e是最常见的英文字母,u通常跟在q后面,h通常跟在t、e后面。

对于shift cipher的进阶版攻击

之前对shift cipher攻击是遍历26种可能明文,判断有意义的明文。但是,“有意义”是机器较难判定的。

以频率为启发,对于26个英文字母来说,∑i=025pi2=0.065\sum^{25}_{i=0}p^2_i=0.065∑i=025​pi2​=0.065,pip_ipi​是第iii个英文字母在正常文本段中出现的频率。我们要找移动的位数kkk,假设移完后的频率用字母qqq表示,那么有qi+k=piq_{i+k}=p_iqi+k​=pi​,即∑i=025pi⋅qi+k≈0.065\sum^{25}_{i=0}p_i\cdot q_{i+k}\approx 0.065∑i=025​pi​⋅qi+k​≈0.065,通过这个式子我们可以找到密钥kkk。

The Vigenere(poly-alphabetic)cipher/多字母替代密码

进阶版mono-alphabetic substitution cipher,同时对多个字母进行map。
加密方式:key是字母串,如"cafe",则对于每4个明文字母进行"cafe"
的移位。这样可以使字母频率变得“平滑”,通过频率看不出是哪个字母,如"a"通过"c"移到“c”,通过"f"移到"f"。
攻击方式:这个的攻击比较难,要求足够长的密文长度。

密钥长度已知

这个比较好做一点,比如密钥长度为t,那我们可以把密文分成t块,每一块可以被看作一个mono-alphabetic substitution cipher加密的密文。而且cj,cj+t,cj+2t……c_j,c_{j+t},c_{j+2t}……cj​,cj+t​,cj+2t​……是一个用密钥key=kjk_jkj​加密的shift cipher密文,我们称其为第j个流。

  • 用暴力破解:将每个流按shift cipher遍历,需要26次;遍历t个流,即需要26t26^t26t次。
  • 用频率分布破解:对于每个流,我们通过对频率的计算,得到每个流的明文;共t个流,即需要26⋅t26\cdot t26⋅t次。

密钥长度未知

不知道密钥长度的话,会比较难一点,我们尽量推断出密钥长度。

  • 假设密钥长度最大为T,即密钥长度t∈{1,2,……,T}t\in \{1,2,……,T\}t∈{1,2,……,T},则对上述办法遍历T次。
  • Kasiski’s method:把关注点放在长度为2或3的密文,如"the"、“you"等常见单词。一般是会被映射成不同的结果,比如"the"通过"caf"映射成"vhj”,通过"afe"映射成"tmi",但是一旦某一次"the"对应的密钥仍是"caf",那么还会出现相同的"vhj"。当我们找到两个"vhj",我们可以适当推断这不是巧合,那么这两个"vhj"之间的距离一定是密钥长度的整数倍。
  • index of coincidence method:对于每个流,因为等同于shift cipher,所以字母频率分布是类似的,即qi+j=piq_{i+j}=p_iqi+j​=pi​,也就是说仍有∑i=025qi2=∑i=025qi2≈0.065\sum_{i=0}^{25}q_i^2=\sum_{i=0}^{25}q_i^2\approx 0.065∑i=025​qi2​=∑i=025​qi2​≈0.065。也就是说,如果我们预测的密钥长度是正确的,那么方差也会近似正确。我们令Sα=∑i=025qi2S_\alpha=\sum_{i=0}^{25}q_i^2Sα​=∑i=025​qi2​,如果α=t\alpha=tα=t,那么S≈0.065S\approx 0.065S≈0.065。

总结

以上密码的密钥长度越来越长:

  • Caesar’s cipher:密钥长度为0
  • The shift cipher:密钥长度为t∈{1,2,……26}t\in \{1,2,……26\}t∈{1,2,……26}
  • The mono-alphabetic substitution cipher:密钥长度:密文长度
  • The Vigenere cipher(poly-alphabetic):密钥长度是一个长度不定的字符串,且一直重复

可以看出,密钥长度越长,破解该问题所需要的密文长度也应该更长。

现代密码学1.3--古典密码/historical cipher相关推荐

  1. 1.密码学概念及古典密码

    一.前言 信息安全面临的威胁无处不在,多为人为威胁,也就是对信息的人为攻击,人为攻击可分为被动攻击和主动攻击. 被动攻击:即为窃听,分为两类:一类是消息内容获取:另一类是业务流分析,如获取消息的格式, ...

  2. 实验吧-密码学-传统知识+古典密码(六十甲子年)

    题目信息:小明某一天收到一封密信,信中写了几个不同的年份辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳.信的背面还写有"+甲子",请解出这段密文. 提示了甲子年,于是找到甲子年的表 ...

  3. [古典密码]:Vigenere cipher 维吉尼亚密码

    来源于我的博客 维吉尼亚密码 Casear加密算法的升级版: 将26个Casear密表合成一个,见下表: A B C D E F G H I J K L M N O P Q R S T U V W X ...

  4. 密码学基础知识(三)古典密码

    说完了前面那些,想起个事,本系列依据内容主要来自<现代密码学>马春光编著.我就是学这本书的. 好了,古典密码就是古时候的密码,哈哈,逗你玩的,shannon的保密系统的通信理论发表前的都是 ...

  5. 古典密码的演化 (一)— 密码学复习(二)

    复习完密码学的基本概念后,下面对古典密码进行简单的复习.下图列出的是经典密码体制的框图.(由于比较懒就直接放笔记的照片了⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄) 古典密码学大体上可以分为 代换密码 和 置换密 ...

  6. 有趣的密码学介绍~古典密码之凯撒密码来咯~

    游说万乘苦不早,著鞭跨马涉远道.仰天大笑出门去,我辈岂是蓬蒿人! 文章目录 前言 正文 古典密码 一.古典密码概述介绍 1.置换密码 2.代换密码 二.古典密码分类介绍 1.置换密码 2.编辑本段代换 ...

  7. 【密码学/信息安全】#3 古典密码(含代码)

    密码学的起源: 可以追溯至古埃及时代的象形文字,经过长期的发展演进形成了当前的基于计 算机的密码体制与算法. 密码学所采用的数学工具也由简单的代数逐渐地涵盖到了信息论.数论.概率论.近似代数 等多个学 ...

  8. (密码学实验)两种基本古典密码设计与实现—C语言—随机全排列应用

    目录 一.实验目的 二.实验内容 三.实验过程 1.概要设计 (1)随机全排列生成程序 (2)程序逻辑图 2.详细设计 (1)密钥字法 (2)洗牌法 (3)公式法 (4)自设计随机16全排列 (5)生 ...

  9. 实验吧WP(密码学部分)【变异凯撒,传统知识+古典密码,try them all,trival】

    一. 变异凯撒 找规律找规律,既然说是凯撒那就看看怎么移动才能得到flag. 因为flag{前四个字符是确定的,所以对比下密文和flag{的ascii码. 发现规律是这样,然后写个python脚本 # ...

最新文章

  1. MVC框架浅析(基于PHP)
  2. 模板方法模式(TemplateMethod) 简介
  3. mybatis 查询的时间不对_程序员,Mybatis 你踩过坑吗?
  4. 使用ueditor实现多图片上传案例——Service层(IShoppingService)
  5. 视图机制对于数据库的安全意义
  6. vivo X50系列外观公布:两个版本的区别在这儿
  7. CentOS中nginx负载均衡和反向代理的搭建
  8. 红火七月——安全专家齐聚共讨漏洞分析
  9. SQL注射技术总结文档
  10. python多线程爬取美图录网站图集按模特姓名存储到本地(一)
  11. 《终身成长》读书分享(附思维导图)
  12. proteus各个版本下载
  13. prologue:It's hard to name this article
  14. 大众点评列表页采集思路,破解字体文件反爬(包含项目github 可用时间至2020-01-21)
  15. SDP(Seesion Description Protocol)协议结构
  16. epsxe安卓最新版下载_ePSXe模拟器下载-ePSXe安卓中文版下载-电玩咖
  17. 聊一聊Vector与Stack
  18. android launcher3,Android Launcher3 基本功能分析
  19. java 正则表达式 后缀_Java 正则表达式
  20. Score-based diffusion models for accelerated MRI

热门文章

  1. 计算机网络原理和应用,计算机网络原理与应用
  2. 黑白子交换c语言思路,递归 算法思路和优化和简单实现: 黑白子交换
  3. linux禁止客户端上传文件_实战 FastDFS Java 客户端上传文件
  4. android四大组件 简书,android四大组件
  5. 机房线路老化了会有怎么样的影响?又该如何处理?
  6. python 面试题 博客园_python面试题
  7. DL:深度学习算法(神经网络模型集合)概览之《THE NEURAL NETWORK ZOO》的中文解释和感悟(四)
  8. ML之FE:数据处理—特征工程之稀疏特征的简介、如何处理、案例应用之详细攻略
  9. 成功解决pandas\core\frame.py:2754: SettingWithCopyWarning: A value is trying to be set on a copy of a s
  10. EL之GB(GBR):利用GBR对回归问题(实数值评分预测)建模