# Cryptography - information theory ###### tags: `Course` `Crypto` ## Information theory ### Computational secure 解決問題最佳的演算法仍需要很久的時間,攻擊者有limited resources(但可能很大) 通常會把問題reduce成某些很難、沒有快速解法的問題,如RSA是立基於質數分解的問題 ### Unconditional secure = perfectly secure 即使攻擊者有一大堆資源,也沒辦法破壞密碼系統 ### Bayes' Theorem $P(X|Y) = \dfrac{P(Y|X)*P(X)}{P(Y)}$ ## cryptography definition ``` P : plaintext C : cipher ek() : encryption with key k dk() : decryption with key k ``` P(C = c ) = $\sum{P(P=m)*P(e_k(m) = c)}$ p(P=m | C=c ) = $\dfrac{p(C=c|P=m)*p(P=m)}{p(C=c)}$ = $\dfrac{p(P=m)*p(d_k(c)=m)}{p(C=c)}$ 因此可以知道看到cipher c,可以推斷出來自plaintext m的機率,等於看到ciphertext後會洩漏一些plaintext的資訊 ### Perfect Secrecy ``` P(P=m|C=c) = P(P=m) P(C=c|P=m) = P(C=c) ``` plaintext,ciphertext是獨立事件,也就是說看到ciphertext不會知道任何plaintext的資訊 ### Shannon's theory 假設(P,C,K,$e_k(.)$,$d_k(.)$) 且 #P = #C = #K, plaintext,ciphertext,key數量一樣 則這個系統是perfect secrecy **iff** 每個key被使用的機率都是$1/#K$,而且每個 m $\in$ P, c $\in$ C,都是透過一個unique的key k, $e_k(m)=c$ #### 正向Proof(perfect secrecy ->) ##### $e_k(m)=c$, k is unique 對任何的一個plaintext m $\in$ P ,每個ciphertext我們都有一把key k 使 $e_k(m) = c$ 故 #C $\leq$ #K 因為題目假設#P = #C = #K 故 #C = #K 所以不可能存在兩把key$k_1,k_2$使 $e_{k1}(m) = e_{k2}(m) = c$ ##### every key has equal probability 1/#K 因Perfect Secrecy p(P=$m_i$|C=c) = p(P=$m_i$) p(P=$m_i$) = p(P=$m_i$|C=c) = $\dfrac{p(C=c|P=m_i)p(P=m_i)}{p(C=c)}$ = $\dfrac{p(K=k_i)p(P=m_i)}{p(C=c)}$ 故得 p(C=c) = p(K=$k_i$),而所有key $k_i \in K$ 都能這樣推倒,所以這樣的證法做n(key的次數)遍,得 np(C=c) = 1, 因$\sum{k_i} = 1$ 得p(C=c) = $\dfrac{1}{n}$ = p($k_i$) #### 反向proof(->perfect secrecy) 在 #K = #C = #P的crypto system中 if每把key被使用的機率都是$\dfrac{1}{K}$且 使$e_k(m) = c$的k都是unique的 則 p(P = m | C = c) = p(P = m) p(C = c ) = $\sum{p(k = K)p(P = d_k(c))}$ 又p(k) = $\dfrac{1}{K}$ p(C = c) = $\sum{p(P=d_k(c))/K}$ 又條件中 對每個m有一個獨特的key k使,所以在知道k,c的時候,只有一個p能符合$d_k(c)$ $e_k(m) = c$ $\sum{p(P=d_k(c))}$ = $\sum{p(P=m)}$ = 1 故 p(C=c) = $\dfrac{1}{K}$ 如果c = $e_k(m)$ 再決定c,m時,只有一把key符合該條件,機率為$\dfrac{1}{K}$ p(C = c | P = m) = p(K = k) = $\dfrac{1}{K}$ = p(C = c) 利用貝氏定理 p( P = m | C = c) = $\dfrac{p(C = c | P = m)p(P = m)}{p(C = c)}$ = p(P = m) ## Sample of perfect Secrecy ### shift cipher P = K = C = 26 $e_k(m) = (m+k)%26$ 如果plaintext只有一個字元,那就是perfect secrecy, p(k = K ) = 1/k ### one-time-pad ### problems: - key cannot be reused - key should have length equals to the plaintext 這些都是要有著一個前提:P = K = M, key長度要跟plaintext依樣,而且還不能重複使用,不然one-time-pad就可以xor密文或密文xor明文,這樣可以得到兩個plaintext的比較或者key。 而這麼長的key,每個plaintext都要用不同的,會造成key distribution的問題 ### Solution - 目前密碼系統都是一把key重複使用 - key space原則上遠小於plaintext space, cipher space, key space能到512 bits就很了不起了,最多也只有到4096 bits - 使用information theory來分析密碼系統的安全性 ## Information theory ### Entropy 令X為事件 X = {$x_1,x_2...x_n$},分別發生機率為P, P={$p_1,p_2...p_n$} H為熵,即亂度,以下為H的特性 - H(X)最大時為 $\forall p_i = p_j = \dfrac{1}{n}$。 - H(X) $\geq$ 0 - H($x_1,x_2...x_n$) $\leq$ H($x_1,x_2...x_{n+1}$) - Let p = $p_1+p_2...+p_n$, q = $q_1+q_2...+q_n$, p+q = 1, 則 - H($p_1,p_2...q_1,q_2..q_n$) = H(p,q)+pH($p_1/p,p_2/p...p_n/p$) + qH($q_1/q,q_2/q...q_n/q$) > H = -$\sum{p_ilog_2p_i}$ 忽略$p_i$ = 0的狀況 ### Information Information I of event E with probability p: > I(E) = $-log_2(p)$ ### Concolusion 從上述公式可得知,H其實就是Information的期望值,所以loss of entropy = gain of information ### Jensen's inequality $a_i$ > 0, $\sum{a_i} = 1$ if $x_i > 0$ then > $\sum{a_ilogx_i} \leq log\sum{a_ix_i}$ > equality holds when $x_1 = x_2... = x_n$ ![](https://i.imgur.com/AlJw0Wm.png) ### Joint Entropy Event X = {$x_1,x_2,x_3...$}, Event Y = {$y_1,y_2,y_3...$} $r_{ij}$ = p($X = x_i, Y = y_j$) > H(X,Y) = $\sum{\sum{r_{ij}log(r_{ij})}}$ #### H(x,y) $\leq$ H(x) + H(y) 等號成立於X,Y event為獨立事件 直覺思考,x,y會互相影響,導致有些事件不可能同時發生,所以亂度降低,反之如果將兩個事件分開,那所有x,y組合的事件就有可能產生 ### Conditional Entropy H(X|$Y=y_j$) = -$\sum{p(X=x_i|y_j)logp(X=x_i|y_j)}$ H(X|Y) = -$\sum{p(Y=y_j)H(X|Y=y_j)}$ H(X,Y) = H(X|Y) + H(Y) H(X|Y) $\leq$ H(X) 等號成立於X,Y為獨立事件 ### Information & Entropy I(X|Y) = 0 iff X,Y是獨立事件 I(X|Y) = I(Y|X) I(X|Y) = H(X) - H(X|Y) 看到Y少掉的X的亂度 = X|Y洩漏的info ## Entropy and Cryptography H(C|P,K) = 0 H(P|C,K) = 0 H(P,K,C) = H(C|P,K) + H(K,P) = H(P,K) = H(P ) + H(K) H(K,C,P) = H(P|C,K) + H(C,K) = H(C ) + H(K) 故H(K) + H(P ) = H(C,K) ### Key Equivocation I(K|C) = H(K) - H(K|C) 看到C少掉的K的亂度 = K|C洩漏的info H(K|C) = H(K,C) - H(C ) = H(P )+H(K)-H(C ) 意義:看到Cipher後的亂度 I(K|C) = H(K) - H(K|C) = H(K) - (H(K,C) - H(C )) = H(C ) - H(P ) ## Reference [H(X,Y) = H(X|Y) + H(Y) proof](https://math.stackexchange.com/questions/1859189/derivation-of-joint-entropy-hx-y-hx-hyx)