# cryptography # 目錄 1. [ECB](#ECB) 2. [CBC](#CBC) 3. [CFB](#CFB) 4. [OFB](#OFB) 5. [CTR](#CTR) 6. [RSA](#RSA) 7. [OAEP](#OAEP) 8. [參考資料以及繪圖軟體](#參考資料以及繪圖軟體) ## ECB 說明 : 明文、密文為 1 對 1 **加密(Encrypt) :**  **解密(Decrypt) :**  * block 是個別加密 * 會被重送攻擊 * block 可以被調位置 * **安全等級低** : 因為密文同等同於明文也是相同訊息 ### **補充** -- 重送攻擊 : 中間人攻擊的低階版本 主要是在不同區塊產生分叉之後,因為分開之後 2 方都還擁有分開之前的資料 所以可以在 2 邊做一樣的交易,但因為分開之後各自經營的客戶與交易並不會相互交換訊息,所以可以在 B 處拿到東西並且用一樣的憑證在 C 處拿到東西  另一個簡單的舉例 : Alice 想向 Bob 證明自己的身分所以提供了密碼,但 Eve 竊聽了對話並保留了密碼,之後 Eve(冒充 Alice)連接到 Bob,Eve 可以傳送從 Bob 接受的最後一個對談中讀取的 Alice 的密碼讓 Eve 得到存取權限。  ## CBC 說明 : 在 ECB 加密的基礎上增加 XOR 運算 **加密(Encrypt) :**  **解密(Decrypt) :**  * 一定要上一個 block 加密完成才能加密下一個 block * 當某一個 block 的 bit 出錯時,只會影響該 block 以及下一個 block * 如果 block 被丟失時,則會讓後續所有的 block 都被影響 ### 補充 -- 初始化向量 : 電腦隨機生成相同大小的密文區塊 ## CFB 說明 : 不同順序的 CBC 加密 **加密(Encrypt) :**  **解密(Decrypt) :**  ### 補充 -- CFB 的缺陷 如果想要指定直接加密第 x 個明文,需要從頭開始加密 ## OFB 說明 : 彌補 CFB 加密的缺陷,只需要重複加密 (x - 1) 次初始化向量 **加密(Encrypt) :**  **解密(Decrypt) :**  ## CTR 說明 : 節省 OFB 加密的運算效率,讓加密過程不需重複 (x - 1) 次加密,改成使用 counter(計數器) 取代初始化向量 **加密(Encrypt) :**  **解密(Decrypt) :**  * 可同步加密解密 * 丟失任一 block 均不會影響其他 block ### 補充 -- CTR 小重點 不可忽略區塊加密 ## RSA 說明 : 目前常見的加密方法,運用質因數運算  ### 解密流程 運用蒙哥馬利複除法 以下以 $R = 100$ 為例,$R、N$ 互值 小註解 : $\because N < R \Rightarrow T < N^2 < R^2$ 1. 收到 $c = 16$ 已知 $N = 33, d = 3$ 2. $N^{\prime} = -N^{-1} \bmod R = 3$ 3. $R \cdot c \ \bmod N = 1600 \bmod 33 = 16$ 4. $T_1 = (R \cdot c \ \bmod N)^2 = 256$ 5. $x_1 = N^{\prime} \cdot T_1 \ \bmod R = (T_1 \ \bmod R) \cdot N^{\prime} \ \bmod R = (56) \times 3 \ \bmod 100 =68$ 6. $R \cdot c^2 \ \bmod N = R^{-1} \cdot T_1 \ \bmod N = \cfrac{T_1 + x_1 N}{R} = \cfrac{256+68 \times 33}{100} = 25$ 7. $T_2 = (R \cdot c^2 \ \bmod N)(R \cdot c \ \bmod N) = 25 \times 16 = 400$ 8. $x_2 = N^{\prime} \cdot T_2 \ \bmod R = 0$ 9. $R \cdot c^3 \ \bmod N = R^{-1} \cdot T_2 \ \bmod N = \cfrac{T_2 + x_2 \cdot N}{R} = 4$ 10. $x = N^{\prime}(R \cdot c^3 \ \bmod N) \ \bmod R = 12$ 11. $m = c^3 \ \bmod N = R^{-1}(R \cdot c^3 \ \bmod N) \ \bmod N = \cfrac{(R \cdot c^3 \ \bmod N) + x \cdot N}{R} = 4$ * 各名詞解釋 - $c$ : 密文 - $N$ : RSA 公鑰中的模數 - $d$ : RSA 私鑰中的解密指數 - $R$ : 模數 $N$ 的倍數,用於處理模運算 - $m$ : 明文 ### 補充--更詳盡的資料 https://hackmd.io/@Koios/RSA ## OAEP 說明 : 一般來說會結合 RSA 加密  * $n$ 是 RSA 加密中的位數 * $k_0、k_1$ 是協議中的固定整數 * $m$ 是 $n - k_0 - k_1$ 位長的明文訊息 * $G、H$ 為隨機預言(oracle) * $\oplus$ 是 XOR ### 運作流程(加密) 1. 用 $k_1$ 位長的 $0$ 使消息填滿到 $n-k_0$ 位的長度 2. 隨機生成 $k_0$ 位長的 $r$ 串 3. 用 $G$ 將 $k_0$ 位長的 $r$ 擴展到 $n-k_0$ 位長 4. $x = m000......0 \oplus G(r)$ 5. $H$ 將 $n-k_0$ 位長的 $x$ 縮至 $k_0$ 位長 6. $y = r \oplus H(x)$ 7. $x, y 為輸出$ 之後可以運用 RSA 加密編碼的消息,利用 OAEP 避免 RSA 加密後的確定性 ### 解密流程 1. 恢復 $r$ 為 $y \oplus H(x)$ 2. 恢復消息 $m000......0$ 為 $x \oplus G(r)$ ## 參考資料以及繪圖軟體 * draw.io * https://hackmd.io/@Koios/RSA * 重放攻擊 : https://zh.wikipedia.org/zh-tw/%E9%87%8D%E6%94%BE%E6%94%BB%E5%87%BB
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up