每個(gè)不同的密碼都代表著一種加密方法,包括算法和密鑰兩元素,這兩個(gè)元素描述了每種加密的精確細(xì)節(jié)。在上述例子中,將信息中每個(gè)明碼字母用密碼字母來(lái)代替就代表一種算法,而密碼字母表可以是明碼字母表的任一種重排。密鑰則明確了某特定加密過(guò)程中所用的密碼字母表。
一個(gè)敵人在研究一段被截獲的信息時(shí),或許能猜到其所用的算法,卻無(wú)法得知其所用的特定密鑰。例如,他們可能深深地懷疑原始文件中的每一個(gè)字母都根據(jù)某種密碼表被另一個(gè)不同的字母代替,但他們不可能知道哪個(gè)密碼表被使用了。假如密碼表,即密鑰,只是發(fā)送者和接收者之間嚴(yán)守的一個(gè)秘密,那么敵人就不能對(duì)截住的信息進(jìn)行解密。和算法相對(duì)立,密鑰的重要性是密碼術(shù)中永久的一項(xiàng)原則。對(duì)此,1883年,荷蘭語(yǔ)言學(xué)家?jiàn)W古斯特在其所著《密碼學(xué)》一書中作了權(quán)威性的陳述:一個(gè)密碼系統(tǒng)的安全性不在于對(duì)加密算法進(jìn)行保密,而僅在于對(duì)密鑰的保密。
【圖1】發(fā)送人通過(guò)一種加密的算法來(lái)加密明文。算法是最普遍的加密系統(tǒng),并要選擇一種特定的密鑰同時(shí)提供密鑰和算法就會(huì)使密文解密。在密文送到接收者手中的途中可能會(huì)被敵人攔截,所以應(yīng)防止敵人解密。而接收者既知道算法又知道發(fā)送人的密鑰,所以密文能被接收者最終解密。
除了對(duì)密鑰保密外,一個(gè)安全的密碼系統(tǒng)也必須有一個(gè)大范圍的可供選擇的密鑰。在保證密鑰數(shù)量的同時(shí),密鑰的簡(jiǎn)單性也很重要。因?yàn)槊荑€是發(fā)送者和接收者所共知的,密鑰越簡(jiǎn)單,誤解的機(jī)會(huì)就越小??刹煌ㄟ^(guò)隨機(jī)地重排明碼字母表來(lái)得到密碼表,而是選擇一個(gè)關(guān)鍵詞或關(guān)鍵詞組,先將其中的空格和重復(fù)字母去掉,然后將其作為密碼表的前部分密碼字母,至于后部分,先將明碼字母表中在關(guān)鍵詞組出現(xiàn)過(guò)的字母去掉,再按順序接在其后。例如:
【圖2】用JULIUS CAESAR作為一個(gè)關(guān)鍵詞組,先將其中的空格和重復(fù)字母去掉(JULISCAER),然后將其作為密碼表的前部分密碼字母,至于后部分,先將明碼字母表中在關(guān)鍵詞組中出現(xiàn)過(guò)的字母去掉,再按順序接在其后。因而,所得密碼表就是:
替換密碼的簡(jiǎn)單有效使其在公元前一個(gè)千年里在密文技術(shù)領(lǐng)域占盡了優(yōu)勢(shì)。密碼編碼者已經(jīng)建成了一個(gè)系統(tǒng)能夠保證安全的通訊,因此如果沒(méi)有必要,就不必進(jìn)一步發(fā)展,也就無(wú)需更深入研究。因而任務(wù)就落在了密碼破解者的身上,他們要不斷地嘗試破解替換密碼。究竟有沒(méi)有方法能使敵方攔截者復(fù)原一段被加密的信息呢?許多古代學(xué)者認(rèn)為替換密碼是無(wú)法破解的,龐大數(shù)目的可能密鑰的存在,使得幾個(gè)世紀(jì)來(lái)都被認(rèn)為是可靠的。但是,密碼破解者最終發(fā)現(xiàn)了一種捷徑來(lái)窮搜所有可能的密鑰。不用花費(fèi)數(shù)億年的時(shí)間來(lái)破解一個(gè)密碼,通過(guò)捷徑復(fù)原一條信息也就是幾分鐘的事情。這項(xiàng)突破首先發(fā)生在東方,是一次語(yǔ)言學(xué)、統(tǒng)計(jì)學(xué)和宗教信仰之間的卓越的聯(lián)合。