密碼學

密碼學粵拼mat6 maa5 hok6英文Cryptography / Cryptology)係數學電腦科學嘅一個分支領域,專門研究點樣將數據以安全嘅方式傳達同儲起,通常係用加密等嘅方法,將段數據轉變成淨係得傳訊人同收訊人先解讀到嘅款,等敵人唔能夠知道啲數據嘅內容[1][2]

1917 年嘅詹默曼電報[歐 1];張嘢上面寫嘅符號就噉睇好似語無倫次,但收訊人同傳訊人暗中知段嘢實際上講緊乜。

密碼學最基本嘅概念係加密[歐 2]:加密定義上係指將一段資訊入碼,轉化做第隻表示方式;正常嚟講,收訊人會知段資訊係點加密嘅,所以有能力解讀段資訊,但係收訊人以外嘅人就唔知個加密方案,就算攞到段資訊都解讀唔到段資訊講乜,而只係會得到一段望落完全雜亂無章符號[3]。一段做加密嘅演算法嘥化)大致上可以想像成好似以下噉嘅轉換過程:

  1. 傳訊者想傳一段信息
  2. 用加密演算法,將信息轉做一串望落乜意思都冇嘅符號(例:%&=%&#*(%=#%#?);
  3. 收訊者收到串符號;
  4. 收訊人知解密演算法係乜,有能力將段符號變返做加密前個款。

密碼學知識嘅用途廣泛得好交關,例如軍事銀行電子商業等嘅工作噉,都成日會涉及「有啲資訊要保密」-例如係軍事情報或者啲客嘅信用咭號碼... 呀噉。密碼學專家會用概率論資訊理論嘅知識研究「邊隻加密演算法最難俾敵人拆解」等嘅課題。呢啲研究對廿一世紀初嘅資訊科技嚟講好有用[4][5]

要留意嘅係,密碼學集中研究嘅攞嚟驗證身份嗰啲密碼。為咗避免混亂,呢篇文會用通行碼嚟稱呼驗證身份用嗰啲密碼。

定位

最基本上,密碼學研究嘅係「點樣喺有敵人(指想偷同利用資訊嘅人)嘅環境下安全噉通訊」。英文同好多其他歐洲語言會用嘅 crypto- 詞頭,係源自古希臘文 κρυπτός羅馬字kryptós)嘅,即係隱密、秘密噉嘅意思[6],而 -graphy 就源自古希臘文 γράφειν(羅馬字係 gráphein),係古希臘文書寫噉解,所以密碼學個英文名可以理解做

研究點樣寫低秘密嘢嘅學問

噉解[7][註 1]

舉個例說明,啞謎機[歐 3]係密碼學史上好出名嘅一種機械。啞謎機盛行於廿世紀早期至中期,成日俾人用嚟幫商業政治或者軍事上嘅通訊做加密,用法如下:啞謎機有一個鍵盤,上面有 26 隻字母,而鍵盤對上有 26 個燈膽,每個燈膽又掕住隻字母(下圖),每當用家撳鍵盤上其中一個掣,其中一個燈膽會著;噉一個人想幫佢要傳嘅信息加密嗰時,佢要做嘅係

  • 用鍵盤打想傳嘅信息(明文),例如 meet tonight at eight pm(英文:今晚八點鐘見面);
  • 記低佢打段信息嗰陣有邊啲燈膽著過、啲燈膽以乜次序著、同埋每個燈膽對應嘅字母;
  • 燈膽著嘅規律就係段信息嘅密文,例如 rksxf eqhbj fonil jpsku(一段就噉望落好似係語無倫次嘅羅馬字);
  • 跟住,將段密文傳送去收信息嗰個人手上;
近睇一部啞謎機嘅鍵盤

如果收信息嘅人知道燈膽著嘅規律點對應撳咗嘅鍵盤掣,佢就能夠解讀密文,得知傳訊者想表達啲乜。啞謎機設計到啲內部機制會令打嘅字同密文之間成一段固定(但唔易估)嘅關係,而呢段關係會定時定候更改,確保用家能夠保密啲信息,就算敵人截住咗段信息,佢哋都解讀唔到段信息講乜[8][9]

密碼學就係想研究點樣用各種方法將要傳嘅數據隱藏起嚟,確保就算數據落咗入敵人手上,敵人都無力解讀啲數據嘅內容。密碼學係現代資訊戰[歐 4](喺競爭性質嘅活動當中控制資訊,令自己得到優勢)當中嘅重要一環,喺軍事商業等嘅領域上都廣泛噉受到採用[10][11]

概念化

基本上,密碼學做嘅嘢包含咗編碼加密鑑別呢三個概念[1][12]

  • 編碼[歐 5]:指一系列固定、用嚟將一段資訊嘅內容符號轉化嘅法則,喺電訊等嘅領域上成日都用到;舉個例說明,摩斯碼[歐 6](下圖)指明好嗮邊啲數列排序對應邊個羅馬字母或者阿拉伯數字,例如
    一點()跟一劃()係代表 A、
    一劃後面跟三點(-...)係代表 B、
    一劃一點一劃一點(-.-.)係代表 C
    • ... 如此類推,所以如果一個人想傳一段信息,信息內容係 Wiki(原文),用摩斯碼(法則)做編碼嘅話(轉化)就會變成
    .-- (w), .. (i), -.- (k), .. (i) [註 2]


  • 加密[歐 2]:加密係指用一啲特定嘅編碼方法(即係所謂嘅 cipher)將一段想傳嘅信息(明文[歐 7])轉化做一串串嘅符號(密文[歐 8]),例如係一大串嘅 0 同 1,令到淨係得收信息嘅人能夠解讀(解密[歐 9])嗰段嘢;數學化啲噉講嘅話,加密( )同解密( )可以想像成函數,會各自噉將自己嘅輸入轉化,當中解密係加密嘅反函數
  • Cipher粵拼saai1 faa2粵音假借faa2)係編碼方法嘅一種,同一般嘅編碼方法唔同嘅係,嘥化係唔會俾外人知嘅-摩斯碼嗰啲法則公開,全世界嘅人都有得透過互聯網查到摩斯碼嘅編碼法則係點樣轉換啲符號嘅,所以任何人攞住串摩斯碼喺手都可以輕易噉解讀串碼講乜;相比之下,嘥化正路嚟講淨係得傳信息嘅人同收信息嘅人會知,所以就算其他人-例如黑客-攞到串信息,都唔會識得點樣解讀。好似係以下呢段密文噉,如果一個人唔知段嘥化(每個字母對應啲乜),佢唔會有能力搵得出嗰段信息加密之前嘅樣[14]。想像下圖噉嘅圖解-
    • 最左手邊嗰張白紙代表段明文,呢張紙掕住嗰條「鎖匙」就係嘥化,
    • 中間嗰張白紙代表密文-張紙上面寫咗啲就噉睇好似語無倫次噉嘅字,
    • 右手邊嗰條鎖匙係負責做解密嘅演算法,會將段密文轉化返做原本嗰段信息。

鑑別

鑑別[歐 10]泛指驗證一件資訊「係咪真確」。

舉例說明,想像家陣有兩個人 A 君同 B 君,B 係 A 嘅員工,幫 A 管理佢啲財富,而家 A 想傳信息俾 B,指示佢手上嗰啲股票要點樣處理(繼續揸住啲股票定賣咗佢哋好),而又假想有個黑客想擾亂 A 同 B 之間嘅通訊,但 A 用嘅嘥化好先進,搞到個黑客解讀唔到段密文,但就算係噉,個黑客都大可以截住段密文,然後隨意噉篡改段密文,搞到 B 做解密嗰陣出錯。鑑別就能夠幫手應付呢個問題-假如 B 有能力做鑑別,即係有能力可靠噉知道「段信息係咪真係由 A 傳出嘅」同埋「段信息有冇俾人搞過嚟」,佢哋就能夠阻止黑客靠「隨意篡改段密文」嚟擾亂佢哋之間嘅通訊[15][16]

例如通行碼[歐 11]就係一種常用嘅鑑別方式。有好多廿一世紀初嘅網站都會要求用家入通行碼先至可以簽到,簽到咗先至有得用某啲功能(好似下圖噉)-喺正常情況下,淨係得真正嘅用家先會知段通行碼,所以如果一個用家入到段啱嘅通行碼,佢應該就會係真正嗰位用家[17]

廿一世紀初嘅電腦保安工作者好關注通行碼嘅相關課題。有關密碼學技術可以點樣幫手保密通行碼,可以睇吓通行碼強度雜湊函數等嘅課題。

Info:釐清返啲概念

密文:一段段望落語無倫次嘅符號;
密文碼或者嘥化:將明文轉換成密文嘅演算法
密碼或者通行碼:「入落電腦度,用嚟鑑別身份」嘅符號串;
密碼學:研究點樣寫秘密嘢,成日用到密文碼,而密碼學嘅技術,可以用嚟保密啲人傳嘅資訊,包括佢哋啲通行碼。

Cipher

Cipher粵拼saai1 faa4粵音假借faa2),又或者叫密文碼,係密碼學其中一個最重要嘅概念,指負責「將原先嘅信息加密變做密文」嘅演算法。一段嘥化可以想像成一個函數,會將明文(輸入)轉化做對應嘅密文(輸出),而喺數學上,嘥化主要有以下兩種[14][18]

  • 換位法[歐 12]:將段信息文字嗰啲符號重新排過,但唔會改變啲符號嘅樣;
  • 替代法[歐 13]:將段信息文字入面嗰啲符號兌換做代替文字,但啲符號位置不變,有系統噉將一組字或者字母換做第啲字、字母或符號(例如將啲 A 冚唪唥轉換做 D)。

圍欄密碼法

圍欄密碼法[歐 14]可以話係其中一種最基本最原始嘅嘥化。

圍欄密碼法步驟如下[19][20]

  • 攞段明文上手,例:WE ARE DISCOVERED. RUN AT ONCE.譯:我哋俾人發現咗喇。即刻走佬啦。
  • 將段明文用打斜對角上上落落嘅方法寫低,(如果係好似英文同粵文等由左到右寫嘅文字)將符號 寫喺符號 嘅右下,一路「將下個符號寫喺右下」直至到底(幾多行先算係到底係一個可調節嘅參數 ),跟住就變成將下個符號寫喺打前嗰個嘅右上,到頂就變返「將下個符號寫喺右下」,下面呢個矩陣
 W . . . E . . . C . . . R . . . U . . . O . . .  . E . R . D . S . O . E . E . R . N . T . N . E  . . A . . . I . . . V . . . D . . . A . . . C . 
  • 程式編寫上,個矩陣(計埋啲空格)會係一個 咁大嘅陣列,當中 係串明文嘅長度。跟住,個用家就將段符號打橫噉寫出嚟(加密),即係
 WECRUOERDSOEERNTNEAIVDAC

最後得出一段好似圍欄噉梅花間竹嘅密文[註 3]。圍欄密碼法可以輕易噉解密-收訊人只要知 同「原先個矩陣有幾多打戙行」(呢個數值會等同段密文嘅長度),佢就可以知道例如

段密文嘅符號 係段明文嘅符號
段密文嘅符號 係段明文嘅符號

... 如此類推。圍欄密碼法淨係涉及改變啲符號嘅位置,所以係一種用換位法嘅嘥化[19]

凱撒密碼法

凱撒密碼法[歐 15]係另一種原始嘅嘥化,出名在凱撒大帝[歐 16]鍾意攞佢嚟喺私人書信嗰度用。

用凱撒密碼法會有一個參數( ),假設段明文係用字母式嘅文字嚟寫嘅,凱撒密碼法做嘅係將段明文入面嘅每個字母都轉換成(想像將啲字母打橫 A B C D 噉順序排成一行)移咗 咁多個位嘅字母,即係例如家陣明文用羅馬字母嚟寫,當中 向左(每個字母向左移三格),就會將段明文每個 E 換做 B,每個 D 換做 A,每個 C 換做 Z... 如此類推(下圖)[21]

畫做表嘅話如下:

明文字母 ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文對應 XYZABCDEFGHIJKLMNOPQRSTUVW

設轉換法係 向左,凱撒密碼法步驟如下(段字嘅粵譯:隻好快嘅啡色狐狸喺隻懶狗上面跳過。):

  • 攞段明文上手,英文例子:
 THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
  • 將段明文每個字母轉換,得出密文,例:
 QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD

凱撒密碼法做嘅係按某啲法則將明文嘅每個符號轉換做第個款嘅符號,所以係一種用替代法嘅嘥化[21][22]

凱撒密碼法喺凱撒大帝嗰個時代-好多人都係文盲嘅時代-幾有效,不過到咗廿一世紀初,密碼學研究經已表明,凱撒密碼法查實好易拆解,例如羅馬字母噉,唔同羅馬字母喺英文當中嘅出現頻率都唔同-AE 常見啲,XJ 少見啲呀噉,做密碼拆解嘅人好多時可以齋靠觀察一段密文入面唔同字母嘅出現頻率嚟估到 嘅數值。因為噉,專業做密碼學工作嘅人好少可會用凱撒密碼法,就算用都起碼都會做啲創新,例如係以每兩個字母或者每三個字母做一組,同每組獨立噉做轉換[23]

彼利菲密碼法

彼利菲密碼法[歐 17]係源自 1854 年嘅一種替代法嘥化,可以用嚟將用字母寫嘅明文加密。步驟如下[24][25]

  • 設定一個加密用嘅矩陣
    • 揀一個關鍵字,例:Playfair Example 做關鍵字;
    • 將個關鍵字啲字母排入去一個 5 × 5 格嘅矩陣嗰度,排完就按 A B C D 順序排,途中要揀一個字母(通常係 J)唔填而且重複咗嘅字母唔填,因為羅馬字母有 26 個咁多,所以噉做會得出一個啱啱好 25 格填嗮、冇任何字母重複咗嘅矩陣,例如下圖係將 Playfair Example 填落去個矩陣嗰度得出嘅樣(J 忽略,而紅色嗰啲細字母係因為重複咗而冇填落去嗰啲):
  • 將明文嘅字母分開做一對對,如果明文嘅字母數量係單數,噉最後單丁嗰個字母掕個(例如)Z,例:明文係 instruments,分咗做一對對就變成
    'in' 'st' 'ru' 'me' 'nt' 'sz'
  • 當中一對字母當中嗰兩個字母唔可以同款,如果同款,就插個(例如)X 喺裏面,例:明文係 hello(唔可以俾 ll 呢個組合出現),做咗分對嘅過程之後應該會係[註 4]
    'he' 'lx' 'lo'

做咗分對之後,Foreach 字母對,做以下嘅嘢:

  • 攞個矩陣上手睇,
  • 如果嗰對字母出現喺同一打戙行,將每個字母變成喺嗰個字母對落嗰個字母(最底嗰行對落當係最頂嗰行),例:用返頭先 Playfair Example 做關鍵字嘅矩陣,如果有對字母對係 DE,就將對字母變成 OD
  • 如果嗰對字母出現喺同一打橫行,將每個字母變成喺嗰個字母對右嗰個字母(最右嗰行對右當係最左嗰行),例:用返頭先 Playfair Example 做關鍵字嘅矩陣,如果有對字母對係 EX,就將對字母變成 XM
  • 如果上述兩點都唔成立,噉就喺對字母畫一個長方形,令對字母成為個長方形嘅兩個角,再將每一個字母換做同佢喺同一條橫行嗰個對角,例:繼續用 Playfair Example 做關鍵字嘅矩陣,如果有對字母對係 HI,就將對字母變成 BM

如是者,就會得出一段密文。彼利菲密碼法相當好用,就算到咗廿一世紀初,專業嘅密碼學工作都仲有人用彼利菲密碼法嘅變種[26]

維吉尼密碼法

維吉尼密碼法[歐 18]係一種多表置密碼法[歐 19],即係會用多過一款替代方案嚟幫明文加密,明文唔同部份用唔同嘅替代方案。

維吉尼密碼法會用到一幅表格[歐 20]-喺英文入面,呢幅表格會係一個 26 × 26 格嘅矩陣,每一條橫行都係有齊嗮 26 個英文字母,每一行都係打前嗰後向左移咗 1 格,即係第一行會係 A 開頭跟住出嗮淨低嗰 25 個字母,第二行會係 B 開頭跟住出嗮淨低嗰 25 個字母,第三行會係 C 開頭跟住出嗮淨低嗰 25 個字母... 如此類推,即係好似下面呢幅圖噉[27][28]

攞住幅表格喺手,個傳訊人跟住就要有個關鍵字,例如家陣個關鍵字係 deceptive(英文呃人嘅噉解),傳訊人可以將個關鍵字重複寫無限咁多次,令明文嘅每個字母都有個對應嘅關鍵字字母[29][30]

  • 例如家陣明文係 WE ARE DISCOVERED. SAVE YOURSELF.(粵譯:我哋俾人發現咗喇。你自己保命啦。
  • 將明文(唔包標點符號)同關鍵字對準:
 WE ARE DISCOVERED SAVE YOURSELF DE CEP TIVEDECEPT IVED ECEPTIVE (關鍵字重複無限次,令明文每個字母有個對應嘅關鍵字字母)
  • Foreach 明文字母以及佢對應嗰個關鍵字字母,
    • 攞個明文字母對應嗰一條打戙行;
    • 攞個關鍵字字母對應嗰一條打橫行;
    • 幅表格入面明文字母打戙行同關鍵字字母打橫行相交嗰點,就係對應呢個明文字母嘅密文字母;
    • 例:喺上面嗰幅表格入面,打戙行 W 同打橫行 D 相交嗰點嘅字母係 Z,所以 Z 就係密文第一個字母,打戙行 E 同打橫行 E 相交嗰點嘅字母係 I,所以 I 就係密文第二個字母... 如此類推:
 WE ARE DISCOVERED SAVE YOURSELF DE CEP TIVEDECEPT IVED ECEPTIVE ZI CVT WQNGRZGVTW AVZH CQYGLMGJ

維吉尼密碼法相當有效,能夠好大程度上收埋明文嘅字母頻率:例如凱撒密碼法最大嘅問題就係敵人能夠齋靠觀察密文當中唔同字母嘅出現頻率嚟大致噉估到段嘥化嘅參數(向左定向右、移咗幾多);相比之下,維吉尼密碼法就冇呢個問題-例如 E 係廿一世紀初英文入面最常出現嘅字母,如果用嘅係維吉尼密碼法,篇明文唔同部份嘅 E 會分別被轉換做唔同嘅字母,而唔似得凱撒密碼法噉個個 E 都係轉換做同一個密文字母。事實係,有密碼學專家實際計過條數,發現用維吉尼密碼法嘅話,出嗰段密文嘅字母頻率變異-簡單講指

  • 「出現得最多嘅字母」同
  • 「出現得最少嘅字母」

之間喺出現頻率上嘅差距[註 5]會明顯細咗(講緊同明文比),所以敵人就更加難以齋靠觀察密文嘅字母出現頻率嚟破解嘥化[27][31]

以下圖為例,Y 軸表示出現頻率(以百分比嚟計),X 軸係英文字母,由字母頻率高至低噉排,每個字母都有個冧把(1 到 26)表示佢排第幾。

  • 藍色線係明文嘅字母頻率分佈,
  • 藍色線係密文嘅分佈,
  • 紅色線係一段完全隨機嘅文字嘅分佈。

由幅圖嗰度睇得出,維吉尼密碼法會令出現最多嗰個字母(1)同出現最少嗰個字母(26)之間喺出現頻率上嘅差距縮細。

密碼體制

對稱密匙

對稱密匙嘅圖解:家陣有兩個人-波巴愛麗絲-要通訊,波巴想傳嘅明文係哈佬!,加密同解密都係用同一條匙嚟做。
公開密匙嘅圖解 1:愛麗絲有條公開匙,公開匙個個都睇到,波巴可以用公開匙加密佢段明文,段明文要用愛麗絲條私人匙先解到密。
公開密匙嘅圖解 2:愛麗絲傳信息,用佢條私人匙幫段掕住嘅額外信息加密;任何人都可以用公開匙解讀額外信息,知道傳訊人揸住愛麗絲條私人匙-嗰段額外信息好似個簽名噉。

對稱密匙密碼[歐 21]指一套密碼體制,係傳訊人同收訊人用嘅密匙粵拼ki1)一樣嘅。密匙係指用嚟幫手做加密同解密嘅額外資訊,例如係圍欄密碼法凱撒密碼法當中嘅 或者係彼利菲密碼法維吉尼密碼法用到嗰啲關鍵字。喺實際應用上,用家梗要有啲方法傳達有關密匙係乜嘅資訊,收訊人先至有能力解密,通常係傳訊人同收訊人事先講好個用開嘅密匙,或者係傳訊人要傳信息之前講個密匙俾收訊人知。一路直至 1976 年中為止,世上所有嘅加密方法都係用對稱密匙做嘅[5]

對稱密匙密碼可以分做兩大種:

  • 組密碼法[歐 22]-呢種密碼法會對固定長度嘅位元做加密同解密;即係例如每 2 位元嘅數據做一組,段演算法會對每組分別做加密,如果手上淨係得其中一個位元嘅數據(另外嗰個位元仲未傳到過嚟),部機就會企咗喺度乜嘢都唔做[32];例子可以睇吓數據加密標準[歐 23]進階加密標準[歐 24][33]
  • 流密碼法[歐 25]-呢種密碼法會對段密文嘅每個位元獨立噉做加密同解密;即係每次收到一個位元就會即場做加密或者解密,就算收唔到下一個位元嘅數據都唔會企喺度唔郁,頂櫳係將段唔完整嘅密文或者解密輸出傳俾個用家[34]

對稱密匙密碼成日俾人詬病,話佢難以處理大規模組織嘅通訊:對稱密匙密碼要求做通訊嘅人個個手上都有條密匙,而點樣確保「啲成員個個都有密匙得嚟又冇安全漏洞」已經係一條好撈絞嘅問題-大少少嘅組織閒閒地會有成千上萬咁多個成員,「俾個個成員手上都揸住條密匙」就難保唔會有幾個人會口風唔夠密搞到條密匙外泄,但「個個成員手上嘅密匙都唔同」就會搞到有好多條密匙要記-例如個組織有 1,000 個人,每對可能配對之間都有條密匙嘅話,淨係內部通訊就要用到成 499,500 條密匙[註 6]

除此之外,對稱密匙密碼要求通訊雙方信任對方,如果是但一個(因為惡意或者決策上嘅失誤)泄漏咗條密匙,另外嗰方就會跟住失去咗保護,呢樣嘢喺商業應用上係一條大問題[5]

公開密匙

公開密匙密碼[歐 26]係喺 1976 年誕生嘅一種體制,係史上第一款「一條通訊用多過一條密匙」嘅密碼體制。同對稱密匙密碼唔同嘅係,公開密匙密碼會將密匙分做公開[歐 27]私人[歐 28]兩組,當中

  • 前者會攞去周圍派俾啲用家(例如係一間企業啲客),
  • 後者淨係得控制個系統嗰方(例如間企業啲高層)會知。

技術化啲噉講嘅話,想像家陣有套密碼體制 ,個系統會用到兩條唔同嘅密匙[35][36]

  1. 用家一定要能夠輕易噉計得出邊對密匙(加密匙 解密匙 )係相配嘅。
  2. 運算上要簡單,即係用電腦行起上嚟唔使嘥好多系統資源
  3. 最重要點:就算一個嘗試破解密碼嘅人就算清楚知道咗 、任何數量嘅對應明文密文、以及係兩條密匙( )當中其中一條,淨低冇俾佢攞到嗰條密匙依然係喺運算上極難搵得出嚟嘅,即係想像條密匙喺噉嘅情況下要計成 100 年先計到出嚟[37]
  4. 信息 係密匙, ,就算知道咗 都要係難以搵到出嚟嘅。

有咗個噉嘅系統(想像公開密匙圖解 1),一位用家可以將佢手上條解密匙保密-私人匙 ,同時又將自己條加密匙公開-公開匙 ,俾任何人隨意通過互聯網睇到 。想像家陣有班人想同嗰位用家進行私人通訊,例如成千上萬嘅客想向一間企業傳信息,問件產品應該點樣用,佢哋嘅個人電腦可以隨意噉攞到 ,用 將自己嘅信息(可能會包括信用咭冧把等嘅敏感資訊)做加密跟住傳去用家度;位用家可以輕易噉(點 1 同 2)用 嚟解讀呢啲信息[35]

公開密匙密碼解決到對稱密匙密碼嗰啲撈絞問題:喺公開密匙密碼呢種情況下,密匙嘅數量只會係用家數量嘅兩倍,每位用家一條 一條 ;而且因為 公開咗都唔會泄露 (點 3),所以 大可以交俾啲未必靠得住嘅人-例如一間企業唔會預自己啲客識得保護密匙;因為噉,同對稱密匙比起嚟,公開密匙比較適用於大得嚟又要同普羅大眾通訊嘅組織,例如廿一世紀初嗰啲大型企業同埋政府嘅各部門都會遇到「一般市民想用電郵向呢啲組織問嘢」等嘅情況[38][39]

唯一問題係,齋用呢種基本系統嘅話,用家(企業)唔能夠向外界(客)單向噉傳秘密嘅信息。不過亦有進階啲嘅公開密匙系統會用例如噉嘅做法:想像用傳訊方條私人匙做加密,再用收訊方條公開匙做加密,做到(因為用咗傳訊方嗰條私人匙)鑑別傳訊方身份[38]。可以睇吓公開密匙圖解 2

值得一提嘅係,公開密匙密碼做嘅嘢係將保密系統同鑑別系統分開:喺對稱密匙系統當中,一位收訊人能夠由收到嘅信息當中同時知道

  • 段信息嘅內容(保密)同埋
  • 傳訊人嘅身份(鑑別)

-每位傳訊人都有相應嘅一條密匙,所以「對方用咗邊條密匙」能夠向收訊人同時透露傳訊人嘅信息內容同身份;公開密匙就唔同,一位收訊人能夠由收到嘅信息當中知道信息嘅內容,但因為會想向佢傳信息嘅人冚唪唥都會用同一條 ,所以佢唔能夠齋靠「對方用咗邊條密匙」嚟得知對方身份,而係要靠進一步問對方嘅例如電話號碼生日日期,先會知對方身份-保密同鑑別分開咗,做兩個唔同嘅功能[35]

RSA

RSA 密碼系統[歐 29]係一種好出名嘅公開密匙密碼系統,專門攞嚟幫一啲以數字形式存在嘅重要資料(信用咭號碼、電話號碼同埋生日日期呀噉)做加密。RSA 密碼系統建基於一點[40]

將兩個埋一齊係好容易嘅,要搵出『一個數係由邊幾個因數乘埋產生嘅』相比之下就麻煩好多。

想像家陣噉樣做:

  • 攞兩個數值有返咁上下大嘅質數
  • 計出 。喺實際應用上, 嘅數值極之大-喺廿一世紀初, 十進制表示嘅話兩個都會有超過 150 個位;所以「要用演算法搵出 嘅因數」要嘥極大量嘅時間[41]
  • 計出
  • 搵一個整數 ,當中 相對質數[歐 30]-即係話 最大公因數 ;而且
  • 計出 ,當中 (可以睇商餘計算[40]
  • 係公開匙, 要保密。

虛擬碼表達嘅話[42]

 int x = 61, int y = 53; // 為咗簡單起見,當住 x 同 y 係 61 同 53 先。 int n = x * y; // 計出 n // n = 3233.  // 計出   int phi = (x-1)*(y-1); // phi = 3120.  int e = findCoprime(phi);  // 計出 e // 喺呢個例子當中,e = 17 滿足到上述嘅條件。  // 搵出滿足到以下條式嘅 d: d = (1 mod (phi))/e; // 喺呢個例子當中,d = 2753  public_key = (e=17, n=3233); private_key = (d=2753, n=3233);  // 想像明文 P = 123, 密文 C 會係: C = (123^17) % 3233 = 855; // 幫密文 C 做解密嘅話: P = (855^2753) % 3233 = 123;

因為 數值極大,難以喺夠短嘅時間內搵出 嘅數值。而且做密碼嗰一方仲有得定時改變呢啲數值嚟加強保安[43][44]

密碼分析

「嗱,家吓有段密文,我哋唔知明文同嘥化係乜,但要郁手破解段嘢。」

密碼分析[歐 31]研究點樣分析系統內部嘅隱藏資訊,包括「喺唔知明文嘥化係乜嘅情況下,諗密文要點拆解」。

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

分析基礎

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

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

進階分析

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

要留意嘅係,做密碼分析好多時比較睇cung5個密碼系統「撐到幾耐」:原則上,廿一世紀初嘅密碼系統絕大多數-除咗一次性密碼本[歐 35]之外-都係有可能拆解嘅,例如攻擊方估密匙嗰陣,查實大可以夾硬嚟-索性逐隻逐隻英文字撞(即係所謂嘅窮舉攻擊),不過用呢種方法拆起密文上嚟會好嘥時間噉解。因為噉,喺實際應用上,密碼學工作者關注嘅好多時都唔係「個密碼系統有冇可能拆解」,而係[49]

喺唔同攻擊模型下,個密碼系統能夠擋住攻擊者擋到幾耐?能唔能夠爭取到足夠時間,俾防守方發覺自己受攻擊並且採取保安行動?

歷史

凱撒大帝嘅胸像

密碼學呢家嘢歷史好悠久:

古典密碼學

古典密碼學最少可以追溯到去公元前一兩個世紀,例如羅馬共和國凱撒大帝[歐 36](公元前 100 年至 44 年)就出咗名鍾意喺私人書信嗰度用凱撒密碼法幫自己嘅信息加密,而且亦有報告話凱撒大帝佢試過用呢種密碼法嚟向自己手下嘅將軍傳達信息,可以話係世上最早嘅密碼學技術(指認真噉為咗想隱藏自己要傳嘅信息嘅內容而做嘅密文)之一[50];而打前少少嘅印度古書《慾經[歐 37]當中亦有提到將一段文字嗰啲字母轉化嚟隱藏想傳嘅信息[51][52]

基本上,古典密碼學一詞可以包嗮電腦出現打前嘅時代嘅密碼學:喺電腦時代嘅密碼技術絕大多數都係古典嘥化-意思即係話家陣唔會再有專業嘅密碼學工作者採用;噉係因為呢啲嘥化實會泄露明文嘅統計特性,例如凱撒密碼法就掩飾唔到啲字母之間喺出現頻率上嘅差異,而 9 世紀嘅阿拉伯數學家肯迪[歐 38]發明咗頻率分析嘅技術,做到分析一段文字當中唔同字母嘅出現頻率[53][54],令到任何有足夠嘅知識同運算能力嘅人都能夠輕易噉破解多表置密碼法以外嘅替代法嘥化產生嘅密文,而且喺有電腦打前嘅時代,都仲話有可能出現「一個人識頻率分析,但唔夠運算能力做所需嘅運算」嘅情況,不過喺廿世紀中後期開始,電腦經已普及化,任何人都可以隨手攞到能夠好快噉解開古典嘥化產生嘅密文嘅架生[55]。因為噉,到咗廿一世紀初,呢啲古代嘥化响專業密碼學工作上經已冇人仲會用,頂嗮櫳係俾人攞嚟做解謎遊戲等消閒用途嘅一部份[56][57]

現代密碼學

廿世紀上半橛至中期出現咗一樣巨大嘅變化-電腦呢種運算機械崛起。電腦最大嘅特徵就係能夠以快過人手好多嘅速度嚟計數,例如好似凱撒密碼法嗰種「同每個明文字母,做轉換」嘅做法用電腦做能夠喺一瞬間搞掂,快過人手好多;除此之外,廿世紀後半橛資訊科技開始成熟,有咗互聯網呢樣嘢,所以出現咗「要點樣喺公用渠道保密信息內容,將密匙交俾一般普羅大眾用」(可以睇返公開密匙密碼)等嘅問題[58]。呢啲巨變引起咗密碼學技術上嘅重大革新,於是數學電腦科學等嘅領域就喺 1970 年中正式開展對密碼學嘅研究[5]

現代密碼學喺著眼點上同古典密碼學有明顯嘅差異:古典密碼學多數時候都淨係考慮加密同解密,頂櫳要諗埋信息嘅傳遞;現代密碼學就仲要考慮埋好多額外嘅嘢-現代密碼學仲包括要驗證一件信息係咪完整(信息驗證碼)、信息係咪無可抵賴由預期嗰位傳訊人發出(數碼簽名)同埋喺分散式運算嘅時候嚟自裏面同外面嘅攻擊嘅相關問題。除此之外,現代密碼學有明顯嘅理論基礎-古典密碼學係一種實用工藝,好多時亦冇對密碼學嗰啲概念有清晰嘅定義,而現代密碼學研究嘅嚴謹性(例如會用數學符號表達啲概念)就令到密碼學成為咗一門嚴格嘅科學[1]

喺技術上,現代密碼學明顯比較睇重運算複雜度[歐 39]方面嘅思考:運算複雜度係指一條運算上嘅問題要用幾多資源(時間記憶體等)先至可以解得到,如果話一條運算問題運算複雜度高,即係話條問題要嘥好多資源先會解得到[59][60];原則上,密碼學工作者正路都會希望「拆解段密文」呢樣工作嘅運算複雜度盡可能有咁高得咁高,噉嘅話嘗試破解密碼嘅人嘅電腦就做唔到喺夠短嘅時間之內破解段密文同嘥化-令到要隱藏嘅信息內容就算喺敵人有先進電腦科技嘅情況下,都一樣係拆解唔到,例如 RSA 密碼系統就係噉[5]

後量子

後量子密碼學[歐 40]係廿一世紀初開始興起嘅一套密碼學。後量子密碼學同打前嘅密碼學技術最大分別,在於想抵抗用量子運算嚟行嘅密碼分析:正如上便提及,廿世紀後期至廿一世紀初嘅電腦保安技術好多時都係靠將啲資料攞去加密,要破解呢啲加咗密嘅資料要做大量運算,而咁大量嘅運算現實電腦根本處理唔掂;但隨住啲人研究量子電腦,佢哋發現行量子運算嘅電腦有可能達致極高嘅運算能力,例如本來要成一百萬年先計到嘅數,量子電腦可以喺一個月內計完,於是好多電腦保安專家就開始擔心,量子運算嘅強勁運算力會畀黑客用嚟輕易破解密碼學符號,於是學界就出咗後量子密碼學呢個諗頭—意思係指「用嚟應對量子運算嘅世界」嘅密碼學[61]

應用

睇埋

註釋

文獻

  • Becket, B (1988). Introduction to Cryptology. Blackwell Scientific Publications. ISBN 978-0-632-01836-9. OCLC 16832704.
  • Bellare, M., & Rogaway, P. (2005). Introduction to modern cryptography. Ucsd Cse, 207, 207.
  • Flannery, S. (2002). In code: A mathematical journey. Algonquin Books.
  • Galbraith, S. D. (2012). Mathematics of public key cryptography. Cambridge University Press.
  • Gannon, J. (2001). Stealing Secrets, Telling Lies: How Spies and Codebreakers Helped Shape the Twentieth Century. Potomac Books, Inc.
  • Hellman, M. E. (2002). An overview of public key cryptography (PDF). IEEE Communications Magazine, 40(5), 42-49.
  • Lee, Tom (August 2000). "Cryptography and the New Economy" (PDF). The Industrial Physicist. 6 (4): 31.
  • Massey, J. L. (1988). An introduction to contemporary cryptology. Proceedings of the IEEE, 76(5), 533-549.
  • Paar, C., & Pelzl, J. (2009). Understanding cryptography: a textbook for students and practitioners. Springer Science & Business Media.

歐詞