CTF-密码学知识学习笔记

古典密码学

单表替换

简单介绍

  • 特点:明文和密文一一对应。
  • 密钥空间小的情况下,暴力破解。
  • 密文足够长的时候,采用词频分析。
  • 特征:一般只能加密字母,不会加密特殊符号,且不会变换字母顺序,加密过后大概率第四或第五位为“{”。

常见单表替换密码

  1. 凯撒密码(Caesar):按照字母表顺序向前(后)移动固定数目;
    在线加解密:http://planetcalc.com/1434/
  2. ROT13:特殊的凯撒密码;
  3. 埃特巴什码(Atbash Cipher):第一个字母对应最后一个字母,第二个对应倒数第二个;
  4. 简单替换密码:替换密码表没有规律,利用词频分析破解;
  5. 仿射密码:通过数学函数建立字母映射(一元一次函数);
  6. 培根密码 (Baconian Cipher ):每个明文字母被一个由5字符(a,b)组成的序列替换。
    在线加解密:http://rumkin.com/tools/cipher/baconian.php
    通常查表直接解:
    http://blog.csdn.net/qq_39455664/article/details/78344952

多表替换

简单介绍

  • 特点:明文和密文不在一一对应。
  • 基本不能用词频分析。

常见多表替换密码

  1. 维吉尼亚密码(Vigenere) :使用一系列凯撒密码组成密码字母表的加密算法,行对应明文,列对应密钥;
  2. 棋盘密码(Polybius):一般是将给定的明文加密为两两组合的数字(或ADFGX),例,明文HELLO,加密后23 15 31 31 34。

其它密码

  1. 栅栏密码:明文分成n个一组,取每组的第i个字组成第i段密文,最后将多段组合在一起,栅栏的栏数就是分组个数;
  2. 猪圈密码(Pigpen):别称朱高密码、共济会密码、九宫格密码,一格子为基础的简单替代式密码。在线加解密:http://www.simonsingh.net/The_Black_Chamber/pigpen.html
  3. 云影密码:01248密码,用01248四个数字,其中 0 用来表示间隔,其他数字以加法可以表示出 如:28=10,124=7,18=9,再用 1->26 表示 A->Z。
  4. 摩斯密码:摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。只有.(点)和-(划)
    在线加解密:https://www.bejson.com/enc/morse/
  5. JSFuck: JSFuck 可以只用 6 个字符 !+ 来编写 JavaScript 程序。
    在线加解密:http://www.jsfuck.com/
  6. BrainFuck和ook:是一种极小化的计算机语言。
    在线加解密:https://www.splitbrain.org/services/ook

现代密码学

基础

  • 对称加密:加密和解密采用同一密钥。
  • 非对称加密:使用一堆密钥,分为公私钥,公钥加(解)密,私钥解(加)密。

DES加密(对称加密)

简单介绍

  1. 密钥是56比特,明文为64比特。
  2. DES的基本结构是Feistel网络;DES是一种16轮的Feistel网络;子密钥每轮都会变;
  3. Feistel网络特质:
    • 轮数任意增加;
    • 加密解密结构相同;
    • 解密密钥倒着输入即可;
    • 任何函数都可以作为轮函数。

DES攻击

  1. 差分攻击:改变一部分明文并分析密文如何改变。
  2. 线性攻击:将明文和密文的对应比特进行异或并计算结果为0的概率。

RSA加密(非对称加密)

简单介绍

  1. RSA可以被用于加密解密,密钥交换,数字签名;基于大数分解难题;

  2. 生成公私钥的步骤:

    • 随机生成两个素数p,q;
    • 计算N = p·q和欧拉函数φ(N)=(p-1)(q-1);
    • 随机选择一个加密密钥e,这里1<e<φ(N), gcd(e,φ(N)) = 1;
    • 求解e·d=1 mod φ(N) 且 0≤d≤N (乘法逆元);
    • 发布加密密钥公钥KU = {e,N};
    • 保密解密密钥私钥KR = {d,N}。
  3. 加密:

    C=Me(modN);C = M^e(mod N);

  4. 解密:

    M=Cd(modN)M = C^d(modN)

  5. 题型:

    • 直接解密(已知p,q,求d);
    • N相关攻击:
      • 分解N,最大素数公约数;
      • 共模攻击:RSA体系在生成密钥的过程中使用了相同的模数n;
    • e相关攻击:
      • 小指数e攻击:直接爆破;
      • 低加密指数广播攻击;
坚持原创技术分享,您的支持将鼓励我继续创作!