傳統密碼
p→16,o→15,i→9,n→14,t→20.
簡單的替代密碼
簡單的替代密碼是一個已經使用了數百年的密碼(在西蒙·辛格斯(Simon Singhs)的“代碼書”中給出了一個很棒的歷史). 它基本上包括將每個明文字符替換為不同的密文字符. 它與凱撒密碼的不同之處在於,密碼字母不僅是字母移動,還完全混亂.
簡單的替代密碼幾乎沒有通信安全性,並且可以證明它甚至可以手動破碎,尤其是隨著消息變長(超過數百個密文字符).
例子 §
這是簡單替換密碼所涉及的加密和解密步驟的快速示例. 我們將加密的文字是“捍衛城堡的東牆”.
簡單替代密碼的鍵通常由26個字母組成(與Caeser Cipher的單個數字相比). 一個示例鍵是:
普通字母:abcdefghijklmnopqrstuvwxyz密碼字母:phqggiumeeaylnofdxjkrcvstzwb
使用上述密鑰的示例加密:
明文:捍衛城堡密文的東牆:Giuifg CEI IPRC tpnn du du cprcni
很容易看出如何用密碼字母中的相應字母代替了明文中的每個字符. 通過從密碼字母回到普通字母的情況下,解密同樣容易. 生成密鑰時,使用關鍵詞很受歡迎,E.G. “斑馬”生成它,因為與26個字符的隨機混雜相比,記住關鍵詞要容易得多. 使用關鍵字“斑馬”,鑰匙將成為:
密碼字母:Zebracdfghijklmnopqstuvwxy
然後,此鍵與上面的示例相同. 如果您的關鍵詞具有重複的字符e.G. “猛mm象”,請注意不要將重複的字符包含在密碼字母中.
JavaScript示例§
其他實施§
要在Python中加入您自己的消息,您可以使用Pycipher模塊. 要安裝它,請使用 PIP安裝Pycipher. 要使用替換密碼(或其他密碼,請參見此處):
>>>來自Pycipher Import simpleSubstitution >>> ss = simpleSubstitution('phqggiumeaylnofdxjkrcvstzwb')>>> ss.codipher(“捍衛城堡的東牆”)'giuifgceiiprctpnnduceiqprcni'>>> ss.decipher('giuifgceiiprctpnnduceiqprcni')
密碼分析§
有關如何自動打破此密碼的指南,請參見替代密碼的隱式分析.
簡單的替代密碼很容易破裂. 即使鍵的數量約為2 88.4(數字非常大),英語文本有很多冗餘和其他統計特性,使確定一個相當好的鑰匙變得非常容易. 第一步是計算密碼文本中字母的頻率分佈. 這包括計算每個字母出現多少次. 天然英語文本具有非常獨特的分佈,可以使用幫助破解代碼. 此分佈如下:
這意味著字母“ e”是最常見的,幾乎是13%. Application of the simple substitution cipher does not change these letter frequncies, it merely jumbles them up a bit (in the example above, ‘e’ is enciphered as ‘i’, which means ‘i’ will be the most common character in the cipher文字). 一個隱性藥物必須找到用於加密消息的密鑰,這意味著找到每個字符的映射. 對於相當大的文本(幾百個字符),可以將最常見的密文字符替換為“ e”,第二個最常見的密文字符,帶有’t’等. 對於每個字符(根據右圖中圖像中的順序替換). 這將導致原始明文的近似值,但僅適用於具有統計屬性接近英語的文本的部分,這僅適用於長長的文本.
簡短的文字通常需要更多的專業知識才能破解. 如果消息中存在原始標點符號,則.G. ‘giuifg cei iprc tpnn du du cprcni’,然後可以使用以下規則猜測一些單詞,然後,使用此信息,已知Cipher Alphabet中的某些字母.
一個字母的單詞 | 人工智慧. |
頻繁的兩個字母單詞 | 在,在,即我們,他,他,或,如果是, |
經常使用三個字母的單詞 | 而不是,而不是,而不是,你們所有人,所有人,她,她,一個,我們,外出,一天,擁有,他,他,他,如何,男人,新的,現在,現在,現在舊,看到,兩個,男孩,男孩,讓,讓,說,她也使用 |
頻繁的四個字母單詞 | 那,帶有,將其,您,您的,他們,他們,知道,想要,善良,很多,有些時間,時間,時間 |
*上表中的信息是從西蒙·辛格斯(Simon Singhs)網站借來的,http:// www.Simonsingh.net/the_black_chamber/mindsandtips.htm
通常,刪除了密文中的標點符號,並將密碼放入諸如“ Giuif Gceii prctp nnduc nnduc eiqpr cnizz”之類的塊中,從而阻止了以前的技巧. 但是,還有許多其他可以利用的英語特徵. 下表列出了可以用來確定正確鍵的其他一些事實. 每個規則只給出最常見的示例.
有關其他語言的信息,請參見各種語言的字母頻率.
最常見的單字母 | E T A O I N S H R D L U |
最常見的挖掘圖 | 在一個或nt ea ti of nt ea ti of to to to n e nd ha中 |
最常見的三角圖 | NDE的tio和tha int tio具有nce tis oft sth Men |
最常見的雙打 | SS EE TT ff ll mm oo oo |
最常見的首字母 | T O A W B C C D S F M R H I E G L N P U J K |
最常見的最後一封信 | E S T D N R Y F L O G H A K M P U W |
*上表中的信息是從西蒙·辛格斯(Simon Singhs)網站借來的,http:// www.Simonsingh.net/the_black_chamber/mindsandtips.htm
除此處列出的技巧外,還有更多的技巧,也許有一天將在此處包含. 同時,使用您喜歡的搜索引擎查找更多信息.
參考 §
- Wikipedia很好地描述了該算法的加密/解密過程,歷史和密碼分析
- 西蒙·辛格(Simon Singh)的“代碼簿”是對密碼和代碼的絕佳介紹,其中包括一個替代密碼的部分.
- 辛格,西蒙(2000). 代碼書:從古埃及到量子密碼學的保密科學 . ISBN 0-385-49532-3.
西蒙·辛格(Simon Singh)的網站有一些很好的替代密碼求解工具:
- http:// www.Simonsingh.NET/THE_BLACK_CHAMBER/頻率分析.html
- http:// www.Simonsingh.net/the_black_chamber/頻率鍵盤.htm
- http:// www.Simonsingh.net/the_black_chamber/mindsandtips.htm
傳統密碼
在第二章中,我們討論了現代密碼學的基本原理. 我們將密碼學等同於工具包,其中各種加密技術被視為基本工具. 這些工具之一是對稱密鑰加密,其中用於加密和解密的密鑰相同.
在本章中,我們將進一步討論此技術及其用於開發各種密碼系統的應用.
較早的加密系統
在進一步進行之前,您需要了解有關歷史密碼系統的一些事實 –
- 所有這些系統都是 基於對稱密鑰加密 方案.
- 這些系統提供的唯一安全服務是信息的機密性.
- 與數字化並將數據視為二進制數字的現代系統不同,較早的系統在字母內作為基本元素工作.
這些早期的加密系統也稱為密碼. 通常,密碼只是用於執行加密和相應解密的一組步驟(算法).
凱撒密封件
這是一個單字母的密碼,其中明文的每個字母都用另一個字母代替,以形成ciphertext. 這是最簡單的替代密碼方案的形式.
該密碼系統通常稱為 移動密碼. 這個概念是將每個字母替換為另一個字母,該字母被“移動”在0到25之間。.
對於這種類型的方案,發件人和接收者都同意移動字母的“秘密班次”. 這個數字在0到25之間成為加密的關鍵.
當使用“三個移位”時.
移動密碼的過程
- 為了加密宣傳字母,發件人將滑動標尺定位在第一組違法的字母下方,並將其滑到秘密偏移位置的數量向左.
- 然後將純字母加密到下面的滑動標尺上的密文字母. 以下圖表中描述了此過程的結果,以換取三個職位的商定轉變. 在這種情況下,將“教程”加密到Ciphertext“ wxwruldo”. 這是偏移3-的密文字母
- 接收密文時,也知道秘密偏移的接收者將其滑動標尺定位在密文字母下方,然後按照約定的移位號將其滑到右邊,3在這種情況下為3.
- 然後,他用在下面的滑動尺子上的明文字母代替了密文字母. 因此,密文的“ wxwruldo”被解釋為“教程”. 要解密以3個偏移編碼的消息,請使用“ -3”的偏移生成明文字母,如下所示 –
安全價值
Caesar Cipher是 不是安全的 加密系統,因為只有26個可能的鑰匙可以嘗試. 攻擊者可以使用可用的有限計算資源進行詳盡的鑰匙搜索.
簡單的替代密碼
這是凱撒密碼的改進. 該方案沒有將字母置於字母中,而不是按某個數字移動字母.
例如,.B…..y.Z和Z.是的……b.A是字母中所有字母的兩個明顯置換. 排列不過是一組混亂的字母集.
在字母內有26個字母,可能的排列為26! (26的階乘)等於4×10 26 . 發件人和接收器可以選擇這些可能的排列中的任何一個作為密文字母. 此排列是該計劃的秘密鑰匙.
簡單替代密碼的過程
- 寫字母A,B,C. z以自然順序.
- 發件人和接收器決定字母的隨機選擇的置換.
- 在自然秩序字母的下方,寫出字母的字母所選排列. 為了加密,發件人通過用直接在桌子下方的置換字母代替每個明文字母. 此過程如下圖所示. 在此示例中,選擇的排列為k,d,g, . o. 明文“點”被加密到“ mjbxz”.
這是一個混亂的密文字母,其中密文字母的順序是關鍵.
- 在接收密文時,也知道隨機選擇的排列的接收器將底部排在底部排的每個密文字母替換為頂行中的相應的明文字母. 密文的“ mjbxz”被解密為“點”.
安全價值
簡單的替換密碼比凱撒密碼有很大的改進. 鍵的可能數量很大(26!)甚至現代計算系統還不夠強大,無法舒適地發起蠻力攻擊以破壞系統. 但是,簡單的替代密碼具有簡單的設計,並且很容易設計缺陷,例如選擇明顯的排列,該加密系統很容易被破壞.
單足字符和多性密碼
單足字符密碼是一個替代密碼,在該密碼中,對於給定的鍵,每個普通字母的密碼在整個加密過程中都是固定的. 例如,如果將“ A”加密為“ D”,則對於該宣傳中的任何數量的出現,“ A”將始終被加密到“ D”.
我們本章前面討論過的所有替代密碼都是單一的。這些密碼非常容易受到密碼分析.
多YABLAPETIC CIPHER是一個替代密碼,在該密碼中,普通字母的密碼字母在加密過程中的不同位置可能有所不同. 接下來的兩個示例, Playfair和Vigenere密碼是多YASTABECETIC CIPHER.
Playfair密碼
在此方案中,對字母對被加密,而不是單個字母,例如簡單替代密碼.
在Playfair Cipher中,最初創建了一個鑰匙表. 鑰匙表是一個5×5的字母網格,可作為加密純文本的關鍵. 25個字母中的每一個都必須是唯一的,並且字母的一個字母(通常是j)是從桌子上省略的,因為我們只需要25個字母而不是26個字母. 如果明文包含j,則由i代替.
發件人和接收器在特定鍵上,說“教程”. 在鑰匙表中,表中的第一個字符(向左向右)是短語,不包括重複字母. 桌子的其餘部分將以自然順序填充字母的其餘字母. 鑰匙桌是 –
Playfair密碼的過程
- 首先,將一個明文消息分成兩個字母(Digraphs)對. 如果有奇數的字母,則將Z添加到最後一個字母中. 讓我們說我們想加密“隱藏金錢”的信息. 它將寫為 – hi de mo ne yz
- 加密規則是 –
- 如果兩個字母都在同一列中,請按下面的字母(如果在底部,則回到頂部)
t 你 o r 我 “ H”和“我”在同一專欄中,因此在下面取字母以替換. 嗨→QC A l s b C d e F G H k m n p 問 v w X y z t 你 o r 我 “ D”和“ e”在同一行中,因此請給他們右邊的信件替換. de→ef A l s b C d e F G H k m n p 問 v w X y z
- 如果前兩個規則都不正確,請與兩個字母形成一個矩形,然後在矩形的水平面上取字母.
使用這些規則,“隱藏貨幣”加密使用“教程”的結果將是 –
解密Playfair Cipher就像反向進行相同的過程一樣簡單. 接收器具有相同的鍵,可以創建相同的鍵表,然後解密使用該密鑰發出的任何消息.
安全價值
與簡單的替代密碼相比,它也是一個替代密碼,很難中斷. 在替換密碼的情況下,Playfair密碼也可以進行隱式分析,但是它可能與625對可能的字母(25×25個字母),而不是26個不同的字母.
Playfair密碼主要用於保護重要但非關鍵的秘密,因為它很快使用,不需要特殊設備.
維吉尼爾密碼
這種密碼方案使用文本字符串(例如一個單詞)作為鍵.
例如,假設關鍵是“點”. 鍵的每個字母都將其轉換為其各自的數值:在這種情況下,
p→16,o→15,i→9,n→14,t→20.
因此,關鍵是:16 15 9 14 20.
vigenere密碼的過程
- 發件人和接收器決定鑰匙. 說“點”是關鍵. 該鍵的數字表示為’16 15 9 14 20′.
- 發件人想加密信息,說“來自東南的攻擊”. 他將按照以下方式安排明文和數字鍵。
- 現在,他將每個明文字母移動到其下面寫的數字以創建密文,如下所示 –
- 在這裡,每個明文字符都被不同的數量轉移 – 該金額由鑰匙決定. 密鑰必須小於或等於消息的大小.
- 為了解密,接收器使用相同的鍵,而移動接收到相反順序的密文來獲得明文.
安全價值
Vigenere密碼是通過調整標準凱撒密碼來設計的,以降低密碼分析對密文的有效性,並使密碼系統更強大. 這是顯著的 比普通的凱撒密碼更安全.
在歷史上,它經常用於保護敏感的政治和軍事信息. 它被稱為 牢不可破的密碼 由於難以進行密碼分析.
vigenere密碼的變體
有兩種特殊案例的vigenere密碼 –
- 關鍵字長度與原始消息相同. 這個案件稱為 Vernam Cipher. 它比典型的Vigenere密碼更安全.
- Vigenere Cipher成為一個具有完美保密的加密系統,稱為 一次性墊.
一次性墊
情況是 –
- 關鍵字的長度與明文的長度相同.
- 關鍵字是隨機生成的字母字符串.
- 關鍵字僅使用一次.
安全價值
讓我們將Shift Cipher與一次性墊進行比較.
移動密碼 – 易於破裂
如果換檔密碼,整個消息本來可以在1到25之間的變化. 這是一個很小的尺寸,很容易蠻力. 但是,現在每個角色都有自己的個人轉移1到26之間,可能的鍵呈指數增長.
一次性墊 – 不可能打破
讓我們說,我們用一次性墊加密“點”名稱. 這是一個5個字母的文字. 要通過蠻力打破密文,您需要嘗試鍵的所有可能性並進行計算(26 x 26 x 26 x 26 x 26 x 26)= 26 5 = 11881376次. 那是一個帶有5個字母的消息. 因此,對於更長的消息,計算隨著每個其他字母的成倍增長而增長. 這使得在計算上不可能通過蠻力破壞密文.
轉置密碼
這是另一種類型的密碼,在該密碼中,對明文中的字母順序重新排列以創建密文. 實際的明文字母未更換.
一個示例是“簡單的柱狀換位”密碼,其中明文水平寫入特定字母寬度. 然後,垂直讀取密文,如圖所示.
例如,宣傳是“黃金雕像在第十一洞穴”,而選擇的秘密隨機密鑰是“五”. 我們將此文本水平排列在表格中,列數等於鑰匙值. 結果文字如下所示.
密文是通過從第一到最後一列垂直向下讀取列獲得的. 密文是“ gnuneaoseenvltiltletashetivc”.
要解密,接收器準備了相似的表格. 列的數量等於密鑰編號. 行數是通過將總密碼字母的總數除以鍵值和圓形的下一個整數值來獲得的。.
然後,接收器將接收到的密文垂直向下和從左到右寫. 為了獲得文本,他從頂部向右讀取.
啟動您的職業
通過完成課程獲得認證
凱撒密碼中的密碼學
(帶有偏移n的加密階段)
(偏移n的解密階段)
例子 :
文字 :abcdefghijklmnopqrstuvwxyz 轉移:23 密碼:xyzabcdefghijklmnopqrstuvw 文字 :Attackatonce 轉移:4 密碼:exxegoexsrgi
優點:
- 易於實施和使用,因此適合初學者學習加密.
- 可以進行物理實現,例如使用一組旋轉磁盤或一組稱為Scytale的卡片,在某些情況下可能很有用.
- 僅需要一小部分預共享信息.
- 可以輕鬆修改以創建更安全的變體,例如使用多個移位值或關鍵字.
缺點:
- 它不受現代解密方法的安全.
- 容易受到已知plaintext攻擊的攻擊,攻擊者可以訪問同一消息的加密版本和未加密版本.
- 少數可能的鑰匙意味著攻擊者可以輕鬆嘗試所有可能的鍵,直到找到正確的鍵,使其容易受到蠻力攻擊.
- 它不適合長文本加密,因為很容易破解.
- 它不適合安全通信,因為它容易斷裂.
- 在消息中不提供機密性,完整性和真實性.
凱撒密碼的功能:
- 替代密碼:凱撒密碼是一種替代密碼,在授權中,每個字母都被字母代替了一些固定數量的字母位置.
- 固定鍵:凱撒密碼使用固定鍵,即字母移動的位置數量. 發件人和接收器都知道此鍵.
- 對稱加密:Caesar Cipher是一種對稱加密技術,這意味著相同的密鑰用於加密和解密.
- 有限的鑰匙空間:凱撒密碼的密鑰空間僅為26個可能的鑰匙,因為英語字母中只有26個字母.
- 容易受到蠻力攻擊的攻擊:凱撒密封件容易受到蠻力攻擊的攻擊,因為只有26個可能的鑰匙可以嘗試.
- 易於實現:凱撒密碼非常易於實現,只需要簡單的算術操作,這使其成為簡單加密任務的流行選擇.
凱撒密碼的規則:
- 選擇1至25之間的數字. 這將是您的“轉變”價值.
- 按順序寫下字母的字母,從A到Z.
- 將字母的每個字母轉換為“偏移”值. 例如,如果轉移值為3,則A將變為d,b變成e,c將變成f,依此類推.
- 通過用相應的移位字母替換每個字母來加密您的消息. 例如,如果移位值為3,則“ hello”一詞將變成“ khoor”.
- 要解密該消息,只需通過將每個字母移回相同的數量來扭轉過程. 例如,如果移位值為3,則加密的消息“ khoor”將變成“ hello”.
凱撒密碼的算法:
輸入:
- 選擇1至25之間的移位值.
- 按A到Z的順序寫下字母表.
- 通過將原始字母的每個字母移動到移位值來創建一個新的字母. 例如,如果移位值為3,則新的字母將是:
- A B C C D E F G H I J K L M N O P Q R S T U V W X Y Z
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C - 將消息的每個字母替換為新字母的相應字母. 例如,如果移位值為3,則“ hello”一詞將變成“ khoor”.
- 要解密該消息,請將每個字母移回相同的金額. 例如,如果移位值為3,則加密的消息“ khoor”將變成“ hello”.
程式:
- 一次穿越給定的文字一個字符 .
- 對於每個字符,根據規則轉換給定字符,具體取決於我們是加密還是解密文本.
- 返回生成的新字符串.
接收文本(字符串)和移位值(整數)並返回加密文本的程序.