建議先不看解答,每題寫下自己的答案再比對。
在 \(\Zn{26}\)(\(=0\))中計算 \(+\)、\(-\)、\(-\);再計算 \(\ct{10110}\oplus\ct{01101}\)。解釋為何 XOR 的「解密」與「加密」是同一個函數,而 \(\Zn{26}\) 的不是。
\(+\)\(=24+7=31\equiv5=\);\(-\)\(=1-3=-2\equiv24=\);\(-\)\(=-16\equiv10=\)(檢查 \(16+10=26\equiv0\))。 \(\ct{10110}\oplus\ct{01101}=\ct{11011}\)。 在 \(\Zn2\) 中每個元素是自己的反元素(\(1+1=0\)),所以「加 \(k\)」與「減 \(k\)」相同;在 \(\Zn{26}\) 中 \(-\sk\ne\sk\)(除非 \(\sk\in\{0,13\}\)),所以解密要用 \(-\sk\)。ROT13 是 \(\Zn{26}\) 中唯一「加密 \(=\) 解密」的非平凡位移。
用五枚公平硬幣做拒絕抽樣產生 Caesar 金鑰。(a) 期望要擲幾輪?(b) 若改成直接取 \(x\bmod26\),金鑰落在 \(\{0,\dots,5\}\) 的機率是多少?均勻時應是多少?(c) 為什麼不存在「不丟棄任何結果」的均勻方法?
(a) 每輪接受機率 \(26/32\),期望輪數 \(32/26\approx1.23\)(幾何分布)。 (b) \(0,\dots,5\) 各有兩個原像,機率 \(6\times2/32=12/32=37.5\%\);均勻時應為 \(6/26\approx23.1\%\)。 (c) 任何以 \(k\) 枚硬幣決定輸出的確定性方法,每個輸出的機率都是(整數)\(/2^k\);\(1/26\) 不是這種形式,因為 \(26\nmid2^k\)。所以必須允許「重擲」(輪數不固定)。
(a) \(\Perm(\alpha)\) 中把 映到自己的排列有幾個?(b) 若金鑰改成「用一個英文單字生成的關鍵字字母表」,違反了哪條 Kerckhoffs 原則?(c) 寫出一個 IND-EAV 敵手並說明它對每一把金鑰都成功。
(a) 固定 ,其餘 25 個字母任意排列:\(25!\approx1.55\times10^{25}\),佔全部的 \(1/26\)。 (b) / 的精神:有效金鑰空間從 \(26!\) 縮成「英文單字數」(\(\sim10^5\)),敵手知道系統(含「金鑰來自單字」)後就能窮舉;也與 的初衷(好記)互相拉扯。 (c) \(m_0=\ct{aa}\)、\(m_1=\ct{ab}\);收到 \(c=c_1c_2\),若 \(c_1=c_2\) 輸出 0,否則 1。任何排列都是單射:\(\sk(\ct{a})=\sk(\ct{a})\) 恆成立、\(\sk(\ct{a})\ne\sk(\ct{b})\) 恆成立,故 \(\Pr[b'=b]=1\)。
金鑰長度恰為 \(4\)。(a) 給出一對長度 \(5\) 的 \(m_0,m_1\) 區分出 \(b\),並說明為何長度 \(4\) 的訊息辦不到。(b) 證明對任意位置 \(i\),\(c_{i+4}-c_i=m_{i+4}-m_i\)。(c) 若金鑰長度未知但 \(\le4\),給出一對通用的 \(m_0,m_1\)。
(a) \(m_0=\ct{aaaaa}\)、\(m_1=\ct{aaaab}\):位置 1 與 5 都用 \(\sk_1\),\(b=0\) 時 \(c_1=c_5\),\(b=1\) 時 \(c_5=c_1+1\)。長度 \(\le4\) 的訊息每個位置用獨立均勻的位移且各用一次,是完美保密的(§[sec:perfect]),任何 \(m_0,m_1\) 都無法區分。 (b) \(c_{i+4}-c_i=(m_{i+4}+\sk_{r})-(m_i+\sk_{r})=m_{i+4}-m_i\),其中 \(r=((i-1)\bmod4)+1=((i+3)\bmod4)+1\)。 (c) \(L=\operatorname{lcm}(1,2,3,4)=12\):\(m_0=\ct{a}^{13}\)、\(m_1=\ct{a}^{12}\ct{b}\),位置 1 與 13 對任何 \(j\in\{1,2,3,4\}\) 都用 \(\sk_1\)。
(a) 計算 \(\trace(\ct{yes})\)。(b) 可能是 的 Caesar 密文嗎? 呢?若可能,金鑰是多少?(c) 對 Vigenère(長度 \(j\))trace 還成立嗎?什麼東西取而代之?
(a) \(\trace(\ct{yes})=(\ct{e}-\ct{y},\ct{s}-\ct{e})=(4-24,18-4)=(6,14)\)。 (b) \(\trace(\ct{ekx})=(10-4,23-10)=(6,13)\ne(6,14)\),不可能。\(\trace(\ct{eky})=(6,14)\) ✓,\(\sk=\ct{e}-\ct{y}=4-24\equiv6\);檢查 \(\ct{y}+6=30\equiv4=\ct{e}\)、\(\ct{e}+6=\ct{k}\)、\(\ct{s}+6=24=\ct{y}\) ✓。 (c) 相鄰差不再守恆(\(\sk_{i+1}-\sk_i\) 混進來),但相距 \(j\) 的差守恆(第 4 題 (b));替換密碼則只保留「相同字母的位置模式」。
某 IND-CPA 安全的方案以 \(\Enc(\sk,m;\rho)\) 加密,\(\rho\) 是 128 位元隨機數。敵手有 \((m,c)\) 一對,想暴力搜尋 \(\sk\)。(a) 若用「\(\Enc(k,m)\overset?=c\)」檢查,會發生什麼?(b) 改用 \(\Dec\) 為何正確?(c) 唯密文情形下,密文至少要多長才「值得」暴力搜尋替換密碼?
(a) 即使 \(k=\sk\),\(\Enc(k,m)\) 用新的隨機數,與 \(c\) 相等的機率約 \(2^{-128}\);正確金鑰會被誤判為錯,搜尋失敗。 (b) 正確性保證 \(\Dec(\sk,c)=m\) 對任何曾被用的 \(\rho\) 都成立,所以正確金鑰必通過檢查;錯誤金鑰通過的機率由密文長度控制。 (c) 唯一解距離 \(U\approx88.4/3.2\approx28\) 個字母;少於此長度會有多把金鑰都給出「合理英文」。(但 \(26!\) 次嘗試本身不可行——這題的重點是「檢查」的邏輯,不是可行性。)
令 \(\calM=\calC=\alpha\)(單一字母)、\(\calK=\Zn{26}\) 均勻。(a) 證明 Caesar 完美保密。(b) 令 \(\calM=\alpha^2\),給出 \(m,m',c\) 使 \(\Pr[\Enc(K,m)=c]\ne\Pr[\Enc(K,m')=c]\)。
(a) 對任意 \(m,c\in\alpha\),\(\Enc(K,m)=c\iff K=c-m\),機率 \(1/26\),與 \(m\) 無關;由 Lemma 2.4 得證。亦可用 Shannon 定理:\(\abs\calK=\abs\calM=\abs\calC=26\)、金鑰均勻、每對 \((m,c)\) 恰一把金鑰。 (b) \(m=\ct{aa}\)、\(m'=\ct{ab}\)、\(c=\ct{bb}\):\(\Pr[\Enc(K,\ct{aa})=\ct{bb}]=\Pr[K=1]=1/26\),但 \(\Pr[\Enc(K,\ct{ab})=\ct{bb}]=0\)(需要 \(K=1\) 且 \(K=0\))。兩個字母就不完美——金鑰被用了兩次。
OTP 的 \(\KGen\) 改為:以機率 \(\tfrac12\) 輸出 \(0^n\),否則從其餘 \(2^n-1\) 把金鑰中均勻選一把。此方案完美保密嗎?給出一個優勢為正的 IND-EAV 敵手並計算其獲勝機率。
不完美。\(\Pr[\Enc(K,m)=m]=\Pr[K=0^n]=\tfrac12\),而對 \(m'\ne m\),\(\Pr[\Enc(K,m')=m]=\tfrac12\cdot\tfrac1{2^n-1}\)。 敵手:送 \(m_0\ne m_1\);若 \(c=m_0\) 猜 0、若 \(c=m_1\) 猜 1、否則擲硬幣。\(b=0\) 時:\(c=m_0\) 機率 \(\tfrac12\)(猜對)、\(c=m_1\) 機率 \(\tfrac1{2(2^n-1)}\)(猜錯)、其餘擲硬幣。 \(\Pr[\text{贏}]=\tfrac12\cdot1+\tfrac1{2(2^n-1)}\cdot0+\bigl(1-\tfrac12-\tfrac1{2(2^n-1)}\bigr)\tfrac12=\tfrac34-\tfrac1{4(2^n-1)}\),對 \(n\ge2\) 嚴格大於 \(\tfrac12\)(\(n=8\):約 \(0.749\);\(n=1\) 時這個 \(\KGen\) 恰好是均勻的,獲勝機率正是 \(\tfrac12\))。 Shannon 定理的條件 (1)「金鑰均勻」被破壞。
同一把 8 位元金鑰加密兩則訊息得 \(c_1=\ct{00010010}\)、\(c_2=\ct{00010011}\)。已知 \(m_1=\ct{01001000}\)(ASCII )。求 \(m_2\) 與金鑰。若 \(m_1\) 未知,\(c_1\oplus c_2\) 仍透露了什麼?
\(\sk=c_1\oplus m_1=\ct{00010010}\oplus\ct{01001000}=\ct{01011010}\);\(m_2=c_2\oplus\sk=\ct{00010011}\oplus\ct{01011010}=\ct{01001001}\)(ASCII )。 或直接 \(m_2=c_1\oplus c_2\oplus m_1=\ct{00000001}\oplus\ct{01001000}=\ct{01001001}\)。 未知 \(m_1\) 時,\(c_1\oplus c_2=\ct{00000001}\) 告訴敵手「兩則訊息只差最低位元」——若訊息是 ASCII 大寫字母,就是相鄰的兩個字母(H/I、J/K…)。
某人宣稱:\(\calK=\{0,1\}^n\)、\(\calM=\{0,1\}^{n+1}\) 的方案 \(\Pi\) 完美保密。不看 \(\Pi\) 的細節,說明為什麼不可能,並描述一個直接的攻擊思路。
\(\abs\calK=2^n<2^{n+1}=\abs\calM\),違反定理「完美保密 \(\Rightarrow\abs\calK\ge\abs\calM\)」。 攻擊:取任一 \(\Pr[C=c]>0\) 的密文 \(c\),計算 \(\calM(c)=\{\Dec(k,c):k\in\calK\}\),至多 \(2^n\) 個訊息;至少有 \(2^n\) 個訊息不在其中。敵手看到 \(c\) 後就知道這些訊息不可能是明文——後驗與先驗不同。IND-EAV 版本:挑 \(m_0\in\calM(c)\)、\(m_1\notin\calM(c)\)……更簡單地,隨機挑 \(m_0,m_1\),收到 \(c\) 後檢查哪一個在 \(\calM(c)\) 裡(需要無限算力,但完美保密正是對這種敵手的承諾)。
某 Vigenère 密文中,三字母片段 出現在位置 \(5,29,53\)(1 起始)。(a) Kasiski 給出哪些候選金鑰長度?(b) 分流後計算得平均 \(\IC\):\(p=2\colon0.044\)、\(3\colon0.046\)、\(4\colon0.063\)、\(6\colon0.047\)、\(8\colon0.065\)、\(12\colon0.064\)。金鑰長度最可能是多少?為什麼不選 8 或 12?
(a) 距離 \(24,24\),\(\gcd=24\),候選長度為 24 的因數:\(2,3,4,6,8,12,24\)。 (b) \(p=4\) 第一次跳回英文水準(0.063),8 與 12 也高是因為它們是 4 的倍數(分流更細仍是單一 Caesar,只是樣本變少);\(p=2,3,6\) 低,排除。取最小的高 \(\IC\) 週期:\(4\)。確認方式:分成 4 條子密文各做 \(\chi^2\),若都能得到明確的位移且合起來讀得通,即為答案。
蘇聯的電報先用代碼簿把字詞換成數字代碼組,再加上一次性密碼本(模 10)。為何「代碼簿 + OTP」兩層保護在密碼本重用之後仍然被破?這對「完美保密的證明到底證明了什麼」有何啟示?
重用給出 \(c_1-c_2=m_1-m_2\pmod{10}\),其中 \(m_i\) 是代碼組序列。代碼組的分布高度不均(常用詞、固定格式、流水號),所以「差」的分布也不均,可用 crib dragging 逐段還原兩則代碼組序列,再重建代碼簿(Meredith Gardner 的工作)。代碼簿只是另一個確定性替換,並不提供額外的隨機性。 啟示:完美保密的證明是條件式的——「若金鑰均勻、等長、只用一次,則……」。證明沒有錯,錯的是操作違反了前提;安全性論證的前提與實際部署之間的落差,正是講義 p. 29「完美但脆弱」的意思。