CTF之密碼學筆記

總是習慣性將所有事情拖到ddl前一天晚上......(這是病,得治!!!!)
實在是困得不行了&_&,好多內容還沒寫,回頭再補充。

密碼學

密碼學(Cryptography)一般可分為古典密碼學和現代密碼學。
對密碼系統的攻擊:


mimagongji.png

一、古典密碼
在CTF中,我們經常能看到一些簡單的古典密碼。在古典密碼學中,我們主要介紹單表替代密碼,多表替代密碼,以及一些其它比較有意思的密碼。

1、單表代換密碼:代換是對每個字母逐個進行。

在單表代換中,明密文一一對應。所以說,一般有兩種方式來進行破解:密鑰空間小時可采用暴力破解;密文長度足夠長時,使用詞頻分析(字母:E>T>A>O>I,詞組:the>ing>and>her>e,在線分析:http://quipqiup.com/

(1)凱撒密碼:凱撒密碼(Caesar)加密時會將明文中的 每個字母 都按照其在字母表中的順序向后(或向前)移動固定數目(循環移動)作為密文。

特定的凱撒密碼:
1)偏移量為 13時 ROT13
2)一種基于密鑰的凱撒密碼 Keyed Caesar:利用一個密鑰,將密鑰的每一位轉換為數字(一般轉化為字母表對應順序的數字),分別以這一數字為密鑰加密明文的每一位字母。
破解:遍歷26個偏移量,詞頻分析(密文多時適用)
在線加解密:http://planetcalc.com/1434/

(2)移位密碼:與凱撒密碼類似,區別在于移位密碼不僅會處理字母,還會處理數字和特殊字符,常用 ASCII 碼表進行移位。

破解:遍歷所有的可能性
在線加解密:http://www.practicalcryptography.com/ciphers/classical-era/atbash-cipher/

(3)簡單替換密碼:簡單替換密碼(Simple Substitution Cipher)加密時,將每個明文字母替換為與之唯一對應且不同的字母。它與愷撒密碼之間的區別是其密碼字母表的字母不是簡單的移位,而是完全是混亂的。

破解:由于這種加密方式導致其所有的秘鑰個數是26!,所以幾乎上不可能使用暴力的解決方式。所以我們 一般采用詞頻分析。

(4)仿射密碼:


fangshemima.png

(原理看書??)
破解:可用詞頻分析,也可根據具體情況進行密碼攻擊。

2、多表代換密碼:代換對多個字母同時進行。對于多表替換加密來說,加密后的字母幾乎不再保持原來的頻率,所以我們一般只能通過尋找算法實現對應的弱點進行破解。
(1)Playfair
(2)Polybius
(3)Vigenere
(4)Nihilist
(5)Hill
(6)AutokeyCipher

3、其他古典密碼
(1)培根密碼:培根密碼使用兩種不同的字體,代表 A 和 B,結合加密表進行加解密。

特點:只有兩種字符、每一段的長度為 5、加密內容會有特殊的字體之分,亦或者大小寫之分。
在線加解密:http://rumkin.com/tools/cipher/baconian.php
通常查表直接解:
http://blog.csdn.net/qq_39455664/article/details/78344952

(2)柵欄密碼:柵欄密碼把要加密的明文分成 N 個一組,然后把每組的第 1 個字連起來,形成一段無規律的話。

(3)列移位加密:列移位密碼(Columnar Transposition Cipher)是一種比較簡單,易于實現的換位密碼,通過一個簡單的規則將明文打亂混合成密文。

在線加解密:http://www.practicalcryptography.com/ciphers/classical-era/columnar-transposition/

(4)01248 密碼:該密碼又稱為云影密碼,使用 01248 四個數字,其中 0 用來表示間隔,其他數字以加法可以表示出 如:28=10,124=7,18=9,再用 1->26 表示 A->Z。

特點:只有 01248

(5)摩斯密碼:摩爾斯電碼(又譯為摩斯密碼,Morse code)是一種時通時斷的信號代碼,通過不同的排列順序來表達不同的英文字母、數字和標點符號。

特點:只有.(點)和-(劃)
在線加解密:https://www.bejson.com/enc/morse/

(6)JSFuck:JSFuck 可以只用 6 個字符 !+ 來編寫 JavaScript 程序。
在線加解密:http://www.jsfuck.com/
(7)BrainFuck:

brainfuck.png

(8)豬圈密碼:豬圈密碼是一種以格子為基礎的簡單替代式密碼。
在線加解密:http://www.simonsingh.net/The_Black_Chamber/pigpen.html

二、現代密碼
現代密碼學又可以簡單的分為以下幾個方面:
對稱密碼,以 DES,AES,RC4 為代表
非對稱密碼,以 RSA,橢圓曲線加密為代表
HASH,以 MD5,SHA1,SHA512 等為代表
數字簽名,以 RSA 簽名,ElGamal 簽名,DSA 簽名為代表
其加密方式主要有兩種方式:塊加密、流加密
一般來說,密碼設計者的基本想法是確保密碼框架的保密性、完整性、可用性、不可否認性,其中,前三者又稱為 CIA 三元組。
而對于密碼破解者來說,一般都是要想辦法識別密碼算法,然后利用暴力破解方法或者密碼框架的漏洞進行破解。當然,也有可能是處于希望構造虛假的哈希值或者簽名來繞過相應的檢測。

1、對稱密碼:加密、解密密鑰相同或者很容易從其中一個推出另一個。
(1)DES
(2)AES
(3)RC4
(4)A5

2、非對稱密碼
(1)RSA算法
(2)RSA衍生算法

編碼

1、ASCII編碼


ascii.gif
0~31及127(共33個)是控制字符或通信專用字符(其余為可顯示字符);
32~126(共95個)是字符(32是空格),其中48~57為0到9十個阿拉伯數字;
65~90為26個大寫英文字母,97~122號為26個小寫英文字母,其余為一些標點符號、運算符號等

在線轉換:http://tool.oschina.net/encode?type=3
工具:win下小葵轉換器

2、Base64/32/16編碼

1)Base64:所謂Base64,就是說選出64個字符----小寫字母a-z、大寫字母A-Z、數字0-9、符號"+"、"/"(再加上作為墊字的"=",實際上是65個字符)----作為一個基本字符集。然后,其他所有符號都轉換成這個字符集中的字符。
2)Base32:Base32編碼將二進制文件轉換成由32個ASCII字符(大寫字母A-Z、數字2-7)組成的文本。
3)Base16:Base16編碼則將二進制文件轉換成由16個字符(大寫字母A-F、數字0-9)組成的文本。

3、URL編碼:url編碼又叫百分號編碼,是統一資源定位(URL)編碼方式。
編碼方法很簡單,在該字節ascii碼的的16進制字符前面加%。

4、Unicode編碼

Unicode編碼有以下四種編碼方式:
源文本: The
&#x [Hex]: The
&# [Decimal]: The
\U [Hex]: \U0054\U0068\U0065
\U+ [Hex]: \U+0054\U+0068\U+0065

參考于:https://github.com/ctf-wiki/ctf-wiki

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容