如果資料庫裡存有我們的密碼,那麼負責管理資料庫的人不就可以看見嗎?
或者資料庫被入侵,入侵者也可以全部看見。我們費盡心思保護的密碼就這樣輕易被人看光 — 這樣對嗎?
當然不對,這就是為何我們需要「加密」
我們用密碼學,一門在探討資訊保密、傳遞、驗證⋯等的學問,對密碼做一些特殊的處理,將密碼從原本的明文變成大家看不懂的密文,然後才將密碼傳送出去,存入資料庫。
如此一來,就算有辦法查看資料庫,或者是有人在中途攔截我們傳出的資料,也只能看到加密後那一串沒有意義的密文,無法得知真正的密碼。
Or if the database is hacked, the intruder can also see them. The passwords that we tried hard to protect are seen by others so easily. Is that correct?
Of course not. That's why we need "Encryption."
We utilize Cryptography, a knowledge investigating information security, transmission, validation...and so forth, to process the passwords from plaintext to Ciphertext / Cyphertext which no one understands, and then send the passwords out and save into the database.
Therefore, even if some people are able to access to the database, or to intercept the information we delivered, they can only see the meaningless Ciphertext / Cyphertext encrypted, not the real passwords.
Of course not, that's why we need "encryption".
We use cryptography, a knowledge focus on confidentiality, data transmitting, verification, etc. We process our passwords, encrypt it into ciphers which nobody understands before sending them into the database.
Thus, even if there is a way to view our database, or somebody managed to intercept our data during transmission, they can only see meaningless ciphers that were encrypted, and no way to find out the content.
密碼學可分為古典密碼學與現代密碼學,我們先來看看比較平易近人(?)的古典密碼學。
古典密碼學主要採用兩種方式:替換與移項。
替換式密碼又稱取代加密法,是一種按規律將文字加密的方式。
替換式密碼中可以用不同字母數為一單元,例如每一個或兩個字母為一單元,然後再作加密。密文接收者解密時需用原加密方式解碼才可取得原文本。由於拼音文字中字的組成為有限的字母,以英語為例只有26個字母,組成可能的單元數較少,因此使用替換式密碼相對較為容易,而且亦可使用簡單機械進行加密;
Classical Cryptography uses mainly two methods, substitution and transposition.
A substitution cipher is also called substitution encryption, which is a method to encrypt letters systematically.
Different alphabets can be used as a unit In a substitution cipher, for example, each one or two alphabets as a unit, and then encrypt them. Receivers need to decipher the ciphertext with the same encrypting methods to get the original text. Since the alphabets in a phonogram are limited, for example, only 26 alphabets in English, the number of possible combinations is relatively small. Therefore, using a substitution cipher is relatively easy, and it is also possible to use simple machines to encrypt.
相反,非拼音文字如中文則因單元數非常大難以使用一般加密方式,必需建立密碼本,然後逐字替換。更何況某些非拼音文字中字字皆由不同大小的字根來組字,較難轉換,因此使用替換式密碼的示例比較少。
(Wikipedia:替換式密碼)
採用替換的方法中,一個知名的加密法是是以羅馬共和時期的凱薩大帝命名的凱薩加密(Caesar Cipher),當年凱薩曾用此方法與他的將軍們聯繫。
(Wikipedia: Substitution cipher)
On of the famous substitution encryption is Caesar Cipher, named after Julius Caesar in the Roman Republic. Caesar used to use this methods to communicate with his generals.
在密碼學中,愷撒密碼,或稱愷撒加密、愷撒變換、變換加密,是一種最簡單且最廣為人知的加密技術。它是一種替換加密的技術,明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。例如,當偏移量是3的時候,所有的字母A將被替換成D,B變成E,以此類推。
(Wikipedia:凱薩密碼)
偏移量為3的英文字母對應
這是一個很簡單的方法,也非常容易被破解。
凱薩加密破解 — — 窮舉法示例(Wikipedia)
(Wikipedia: Caesar cipher)
The English alphabets with a left shift of 3
It is a simple method, and is easily broken.
Breaking the Caesar cipher, an example of Brute-force attack (Wikipedia)
舉例來說,若我們得到一串密文:「exxegoexsrgi」,就算不曉得其採用的偏移量,我們也可以列出所有可能性。
陳列出所有可能性後,我們就能找出其中有構成意義的那項,得知它的意思。
像這個例子,列出密文以及其二十五個偏移量的結果後,我們可以推出其採用的偏移量為4,原始明文為「attackatonce」,斷字應為attack at once,意即「馬上攻擊」。
After listing all the possible shifts, we can find out the valid one and acquire its meaning.
In this instance, after listing the ciphertext and the 25 possible shifts, we can presume that the shift is four. The original plaintext is "attackatonce," and the word-break should be attack at once.
當密文長度足夠,也可以採用「頻率分析」。先計算密文中每個字母出現的頻率,再將此頻率與正常情況下該語言的字母出現頻率比較。例如,在一般的英文中,E和T出現的頻率特別高,而Q跟Z的出現頻率特別低,我們可以透過計算密文中的字母出現率,推估正確的偏移量。頻率分析不只可應用於字母,也可用在單詞。例如,英文中,出現頻率最高的單詞有the、of、and⋯⋯等等,我們可以將這些單詞的二十五種偏離量的密文編成字典,以此對密文進行分析。
Sherlock Holmes
柯南・道爾所著的知名偵探小說《福爾摩斯》,其主角夏洛克・福爾摩斯曾經在短篇〈跳舞的人〉(The Adventure of the Dancing Men)中使用這個方法。
事件中出現許多用跳舞人的圖畫傳達的訊息,福爾摩斯以英文中使用頻率最高的字母為E推出什麼動作的跳舞人代表E,再以此去推出其它字母,破解了跳舞人的密語。
移項式密碼與替換式不同,字母本身不會變化,但字母順序依循一個規則移動、改變。
In the incident, the message is conveyed by many dancing figures. Holmes determines the dancing figure represents of E by knowing that the most frequently used alphabet in English is E, and then determines other alphabets to crack the code of the dancing men.
Transposition is different from substitution. The alphabets themselves are not changed, but the order of the alphabets is moved and changed according to a regular system.
中國式密碼是一種移項式密碼,將訊息的字母由右而左、上下交替排列,最後將排列出的結果從左到右,一列一列寫出,成為密文。
例如我們現在要來加密「The rabbit is cute.」這個句子,就將句中的字母依序由上寫到下,第二行則由下寫到上,第三行再由上往下寫,以此類推。
— The rabbit is cute.
最後寫出每一列的文字,成為密文「UCBBT TSIAH EITRE」。
絕大多數的移位式密碼都採用與之類似的手法,重新排列字母的行或列,然後有系統地移動字母。
For example, if the message needed to be enciphered is "The rabbit is cute," then we write the alphabets from up to down, and the second column from down to up, the third column from up to down, and so on.
The rabbit is cute.
At last, we write the whole alphabets in each row as "UCBBT TSIAH EITRE."
Most transposition ciphers use similar methods to rearrange the row or column of the alphabets, and the move the alphabet systematically.
在第二次世界大戰結束之前,人們研究的方向是如何以更多的替換以及位移來防止密碼字典或加密機制外洩,但增加更多的替換以及位移勢必會增加進行加密以及解密的難度,也會增加操作員失誤的可能,因此當時的德軍發明了進行加解密專用的機器 — — 「謎」。
「謎」式密碼機,或稱啞謎機、恩尼格瑪密碼機,在1940年代被德軍大量使用。「謎」有著幾個重大的進展,除了用機器來取代人力進行運算以外,另一個重點在於密碼已經沒辦法單純用觀察單字的方法解回來了。(Wikipedia:恩尼格瑪密碼機)
二戰後計算機(也就是電腦)與電子學的發展促成加密方式的改變。由於電腦可以對任何儲存在其中的資料加密,且多數電腦的加密都是在二進位字串上操作,不像古典密碼學是直接作用在原始字母、數字,以語言學為基礎的破密術因此失效。
不使用頻率分析來破解一個訊息需要知道目前是使用何種加密法,因此才會促成了諜報、賄賂、竊盜或背叛等行為。直到十九世紀學者們才體認到加密法的演算法並非理智或實在的防護。