提示:呢篇文講嘅唔係通行碼破解

密碼分析mat6 maa5 fan1 sik1Cryptanalysis)係密碼學上嘅一系列技術,涉及一位分析師研究一個資訊系統內部嘅隱藏資訊,尤其係嘗試拆解個系統傳同收嘅密文

呢種研究係密碼學嘅重要一環:專業做密碼學工作嘅人往往要識唔同類嘅密文碼出嘅密文分別有啲乜特徵;然後佢哋就會睇吓可唔可以由密文嘅特徵嗰度,估傳訊方用咗邊種或者邊啲密文碼呀噉,從而加深自己對「唔同密文碼有乜弱點」嘅理解。好似黑客等會出於惡意嘗試破解密文嘅人會做密碼分析,而密碼學工作者又會嘗試模仿黑客嘅呢啲行為,嘗試用黑客興用嘅技巧嚟拆解自己嘅密文碼-如果結果發現「黑客常用嗰啲技巧拆解唔到佢嘅密文碼」嘅話,一位密碼學工作者就知自己發明咗一種新嘅強力密文碼技術[1][2]

分析基礎

想像家陣分析者手上有段密文,要嘗試齋靠手上揸住嘅密文估明文同密文碼係乜(唯密文攻擊;ciphertext-only attack)。最基本上,佢要做嘅包括咗以下呢啲工序[3]

  • 觀察段密文:原則上,有關明文同密文碼嘅資訊會或多或少噉殘留喺一段密文嗰度,所以分析者有得靠住觀察段密文嘅特徵,嚟大致噉估到傳訊方可能係用咗邊種或者邊啲密文碼,而如果篇密文係用字母嚟寫嘅話,呢種工作中途會涉及對字母頻率分析-例如正話提到,維吉尼密碼法傾向令字母之間喺出現頻率上嘅差異縮細,而基本嘅凱撒密碼法唔會引起呢種差異;如果用電腦計咗吓,發覺段密文喺「字母頻率嘅最大差異」上明顯有別於正常書寫文字嘅話,段密文就唔似係用咗凱撒密碼法。
  • 估密文碼同密匙:想像分析者做咗一啲初步分析,心目中對於「傳訊方用嘅係邊種密文碼」有幾個可能嘅答案。佢跟住就需要估吓密匙係乜(例如維吉尼密碼法當中嘅關鍵字),原則上,呢種方法可以係完全靠撞,但呢種做法就算係用現代電腦都仲係會嘥時間得滯(做唔到喺夠短嘅時間之內破解密文),所以正路嚟講,分析者最起碼會用某啲方法縮窄搜尋嘅範圍,例如係靠傳訊方嘅喜好嚟估邊啲字佢會大機會用嚟做關鍵字,又或者計吓邊啲關鍵字係多人會用嘅。順帶一提,因為呢個緣故,有好多密碼學工作者都想做到完全隨機噉產生密匙,令到密匙最難估(技術性噉講即係資訊熵要有咁大得咁大)。
  • 重複做好多次嘅嘗試拆解:產生「預想中嘅密文碼係乜」同埋一條「估嘅密匙」,嘗試用呢兩樣資訊解讀段密文,睇吓段密文似唔似係明文;如果佢估錯咗密文碼同密匙,解讀過程通常會出一段語無倫次嘅混亂字母,不過如果分析者將呢個過程重複好多次,而且佢對密文碼同密匙嘅估計有返咁上下準嘅話,係有可能做到喺夠短嘅時間之內破解密文嘅。

進階分析

睇埋:攻擊模型

除此之外,密碼分析上會諗嘅攻擊模型(attack model)仲可以按「攻擊者手上有乜資訊」嚟分類-唯密文攻擊只不過係密碼破解上最簡單最基本嗰種情況,除咗唯密文攻擊之外,密碼分析仲成日會思考(例如)已知明文攻擊(known-plaintext attack)嘅情況,即係指攻擊者攞到咗若干段嘅密文同埋相應嘅明文,而且佢知道邊段密文對應邊段明文,喺度嘗試靠噉嚟搵出段密文碼以及破解更多嘅密文。做密碼學工作嘅人會做考慮呢啲咁多唔同嘅情況,攞一隻研究緊嘅密文碼,估吓隻密文碼喺唯密文攻擊之下會撐到幾耐、喺已知明文攻擊之下又會撐到幾耐... 呀噉,靠睇隻密文碼喺唔同情況下嘅表現嚟評估隻密文碼掂唔掂[4]

要留意嘅係,做密碼分析好多時比較睇重分析「個密碼系統撐到幾耐」:原則上,廿一世紀初嘅密碼系統絕大多數-除咗一次性密碼本(OTP)之外-都係有可能拆解得到嘅,例如攻擊方喺估密匙嗰陣,查實大可以夾硬嚟-索性逐隻逐隻英文字撞(即係所謂嘅窮舉攻擊),不過用呢種方法拆起密文上嚟會好嘥時間噉解。因為噉,喺實際應用上,密碼學工作者關注嘅好多時都唔係「個密碼系統有冇可能拆解」,而係「喺唔同嘅攻擊模型之下,個密碼系統能夠擋住個攻擊者擋到幾耐,能唔能夠爭取到足夠嘅時間,俾防守方發覺自己受到攻擊並且採取必要嘅保安行動」[5]

睇埋

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.