瓦哈拉的塗鴉簿 Digital Fortress, or Weakness (Jul 22, 11)
Dan Brown的Digital Fortress最讓我看不下去的地方是劇情設定過於荒謬。如果有一部電影,劇情設定成有個天才發明了一種snake oil,任何人只要塗在手上就能侵入任何接觸到的電腦系統,然後這種snake oil引發各國間諜爭奪,加上暗殺飛車陰謀破壞美女愛情等等橋段,不知道有沒有人想看。我是會看,如果美女夠美。
Dan Brown也許收集了許多古代密碼解碼的資料,但顯然不了解現代電腦密碼與破密碼的方法。現代密碼所根據的數學理論全都是不可逆的編碼,也就是不可能只根據加密後的資料與編碼用的程序(或公開碼,public key)逆運算解回原始資料,這些編碼方式的數學模型都已經被證明過。現代電腦破解密碼其實是用暴力窮盡所有可能的組合,所以在理論上任何使用有限key編碼的都能解出來,只要有足夠的時間。一般用來編碼的「碼」是用bit當單位,現在secured internet / https一般是用128 bit編碼。理論上碼每增加一個bit,用暴力式解碼就要多花一倍的時間。但是一般來說,最常見的public key編碼不如symmetric key(編碼解碼使用相同的key,這個key保密不公開)來得有效,1024 bit public key大概只相當於80 bit symmetric key。(reference: Wiki: Key Size )
當我看到Digital Fortress,做為故事核心設定的那個無法破解的編碼程式,我真是不知該說什麼好。只要把key size增大到一個夠大的值,好比說 1 mega bit,我們可以來看看NSA有沒有辦法破解。
大概在2002年左右,online banking剛剛開始流行,當時Windows Explorer要支援加碼保密通訊需要下載附加元件,我印象很深刻,當時的license agreement清楚標明128 bit (or 64 bit?) encryption元件只能在美國國內使用,禁止輸出到國外,過一陣子才沒再聽說有這禁令,但是symmetric encryption的技術輸出一直還有禁令。很明顯,當時NSA的解碼電腦大概只剛好能在合理時間內破解128 bit PKI 編碼。到了這幾年,據我所知,比較敏感的資料如果非要在一般的internet上傳輸,使用public key的碼至少要1024 to 2048 bit。