陳曉玉+陳新+高巍
【摘要】密碼在當今社會生活中的作用可以說十分巨大,除了眾所周知的軍事國防方面的應用外,現代金融、貿易、生產等無不在大規模使用密碼.計算機網絡的廣泛應用,使人們對密碼的依賴達到了新的高度,一般密碼編制理論中,稱要傳遞的原文為“明文”,經加密后實際傳遞的是密碼構成的“密文”,收信方則將其解密,恢復為明文使其可理解,就完成了通信任務。
【關鍵詞】密鑰 不可破譯 密碼學
密碼學在公元前400多年就早已經產生了,正如《破譯者》一書中所說“人類使用密碼的歷史幾乎與使用文字的時間一樣長”。密碼學的起源的確要追溯到人類剛剛出現,并且嘗試去學習如何通信的時候,為了確保他們的通信的機密,最先是有意識的使用一些簡單的方法來加密信息,通過一些(密碼)象形文字相互傳達信息。接著由于文字的出現和使用,確保通信的機密性就成為一種藝術,古代發明了不少加密信息和傳達信息的方法。例如我國古代的烽火就是一種傳遞軍情的方法,再如古代的兵符就是用來傳達信息的密令。密碼學真正成為科學是在19世紀末和20世紀初期,由于軍事、數學、通訊等相關技術的發展,特別是兩次世界大戰中對軍事信息保密傳遞和破獲敵方信息的需求,密碼學得到了空前的發展,并廣泛的用于軍事情報部門的決策。例如在希特勒一上臺時,德國就試驗并使用了一種命名為“謎”的密碼機,“謎”型機能產生220億種不同的密鑰組合,假如一個人日夜不停地工作,每分鐘測試一種密鑰的話,需要約4.2萬年才能將所有的密鑰可能組合試完,希特勒完全相信了這種密碼機的安全性。然而,英國獲知了“謎”型機的密碼原理,完成了一部針對“謎”型機的綽號叫“炸彈”的密碼破譯機,每秒鐘可處理2000個字符,它幾乎可以破譯截獲德國的所有情報。后來又研制出一種每秒鐘可處理5000個字符的“巨人”型密碼破譯機并投入使用,至此同盟國幾乎掌握了德國納粹的絕大多數軍事秘密和機密,而德國軍方卻對此一無所知;太平洋戰爭中,美軍成功破譯了日本海軍的密碼機,讀懂了日本艦隊司令官山本五十六發給各指揮官的命令,在中途島徹底擊潰了日本海軍,擊斃了山本五十六,導致了太平洋戰爭的決定性轉折。因此,我們可以說,密碼學為戰爭的勝利立了大功。在當今密碼學不僅用于國家軍事安全上,人們已經將重點更多的集中在實際應用,在你的生活就有很多密碼例如為了防止別人查閱你文件,你可以將你的文件加密;為了防止竊取你錢物,你在銀行賬戶上設臵密碼,等等。隨著科技的發展和信息保密的需求,密碼學的應用將融入了你的日常生活。
密碼在當今社會生活中的作用可以說十分巨大,除了眾所周知的軍事國防方面的應用外,現代金融、貿易、生產等無不在大規模使用密碼.計算機網絡的廣泛應用,使人們對密碼的依賴達到了新的高度,在千百萬臺計算機聯結成的因特網上,用戶的識別基本上是靠密碼.密碼被破譯就會產生危及安全的極嚴重的后果.計算機“黑客”的作為,即為密碼破譯的一例,連美國國防部的計算機都未能幸免,可見密碼編制的難度了。
由大整數因數分解的困難,人們研制成功一種“不可破譯”的密碼:RSA體制密碼.RSA密碼是一種公開密鑰密碼,說它“不可破譯”是形容破譯之難,不過的確至今尚沒找到破譯的理論工具.
一般密碼編制理論中,稱要傳遞的原文為“明文”,經加密后實際傳遞的是密碼構成的“密文”,收信方則將其解密,恢復為明文使其可理解,就完成了通信任務.這其中加密和解密要用通信雙方約定的方法,這一方法就稱為密鑰.更一般地,人們首先給定一個加密算法,不太嚴格地說,可把這一算法視為函數,函數的值就是密鑰,而解密算法可以說是加密算法的一個反函數,使用同一個密鑰(原函數的值)可將密文惟一地譯成明文。
密碼的關鍵就在于通信雙方約定密鑰而不被外界所知,外界對密碼的破譯也就指向密鑰了.而且為了防止外界可能的破譯,就應盡力使外人不可能積累在同一密鑰下的許多密文,否則可用統計分析法等確定出密鑰,世界戰爭史、外交史上有許多破譯成功的例子.這樣就經常變換密鑰,重要的通信要每天一換甚至通一次信換一次。
這么頻繁換的密鑰怎樣送給對方?如果隨其他信息(用無線電或網絡)易于失密,每次派專人送又不可能,怎樣解決這一問題呢?這就是RSA密碼的長處了,它把密鑰分成加密鑰和解密鑰.如A和B通信,A把加密鑰公開送達B(可用明碼電報或與上次通信同時),不怕外人知道,所以叫公開密鑰,而解密鑰留在自己處不送達B,B收到公開密鑰后,用它加密要給A的信息,然后送回A(這也無須特別秘密),則A可用手中的解密密鑰解密。
外人沒有解密密鑰,就無從破譯密碼了,那么加密鑰和解密鑰就沒有關系了嗎?當然不是,否則就無法解密了.不過這種關系正是建立在大整數因數分解困難的基礎上.換句話說,由公開密鑰得出解密鑰要進行一個充分大的整數的因數分解,你無法分解也就無法破譯.
具體的編碼過程是,先找出兩個不同的大素數p和q,再給定一個數r(一般是用計算機產生一個隨機數或至少一個偽隨機數,也可每次一換),使r與數(p-1) (q-1)互素,這三個數p、q、r就是解密密鑰.
再求一個數m,使(rm-1)(-1)能被(p-1)(q-1)整除.嚴格表述為:求m,使rm=1 (mod(p-1)(q-1)).
由于與(p-1)(q-1)互素,所以m是一定可求出來的(有數論定理保證).再求出數n=p q.m、n為加密密鑰,即公開密鑰.
具體的加密方法為,設明文為x,可把x視為(或變為)一個大整數,設x 由于運用現代計算機已可分解100位左右數的因數,因此n要取得相當大,從而p、q也要取得相當大,比如每個數80位以上,再求積,這在技術上是可能的。 是否還應考慮相應計算的復雜性和計算所需要的時間呢?當然有這方面的問題,現在通常用復合編碼法解決,即用其他計算比較簡單、耗時少的編碼方法編碼,而每次編碼所采用的密鑰用RSA密碼來傳遞,這既加強了安全性,又加快了速度。