iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
Software Development

少女人妻在廚房裡想不通的演算法系列 第 24

【在廚房想30天的演算法】Day 24 資訊安全與演算法 : 共用金鑰密碼系統

Aloha!又是我少女人妻 Uerica !最近 KTV 終於解封了,只是戴口罩又只能喝水要怎麼唱,氣氛完全不對啊~,不能喝不能吃少一味,還是居家防疫好了!


還記得昨天提到的加密金鑰嗎~今天就來說明一下金鑰是什麼吧!

共用金鑰密碼系統 shared-key crypto system

共用金鑰密碼系統是一種對稱式加密,加密和解密都使用相同的金鑰,就像前面所說的,交換日記都各有一把鑰匙,上鎖和打開都是同一把。共用金鑰密碼系統的密碼現在大多都是使用 AES ( 進階加密標準 Advanced Encryption Standard )。

在使用金鑰進行加密時,需要加密的明文長度通常會大於金鑰的長度,所以為了讓加密演算法可以加密個整長度的訊息,會將明文切成多個區塊來依序處理,而區塊的大小就是金鑰的長度,而演算法如何處理這些區塊,又分為五種加密模式 mode of operation

  • 金鑰 Key : 是指某個用來完成加密、解密、完整性驗證等密碼學應用的秘密信息

加密模式 mode of operation

電子密碼本模式 ( Electric CodeBook Mode, ECB )

最簡單的加密模式,做法是將需要加密的訊息分成數個區塊,並對每個區塊進行獨立加密,這種做法雖然直觀簡單,但同樣的明文區塊會生成同樣的密文區塊,所以容易從大量的密文回推明文資料,所以不推薦使用此加密模式。
kl3k2MT

密碼分組連結模式 ( Chiper Block Chaining Mode, CBC )

因為 ECB 模式容易被回推,所以 CBC 模式會讓每個加密前的明文區塊與前一個密文區塊做 XOR 運算,之後再進行加密,而第一個區塊因為沒有上一個密文區塊,所以設計了一個叫初始化向量 ( Initial Vector, IV ) 的概念,但因為每個密文區塊需要解密的話,都依賴著上一個密文區塊,雖然資料隱密性比 ECB 更好,但缺點是整個加密過程是串行的,要解密就必須一一推算出之前的密文。

  • 初始化向量 ( Initialization Vector, IV ) :
    又稱起始變數,是一串固定長度的輸入值,通常為隨機數或擬亂數。通常同樣的金鑰不建議一直使用同樣的 IV。

  • XOR 互斥或 : XOR 運算子會將三個值其中兩個無論怎麼替換都可推演出另一個值。例如: a xor b = c,那 b xor c = a 、 a xor c = b。
    gk2OfXq

密文反饋模式 ( Chiper FeedBack Mode, CFB )

CFB 模式與 CBC 模式雷同,只是運算的順序稍微不同,CFB 模式中,前一個密文區塊會先用加密演算法運算過後,再與明文做 XOR 運算。
9shS1YG

輸出反饋模式 ( Output FeedBack Mode, OFB )

與 CBC 、 CFB 模式類似,但 OFB 模式是將上一個區塊的加密演算法與目前區塊的加密演算法一起運算,結果再與明文區塊做 XOR 運算,最後產生出密文區塊,前面提到 CBC 、 CFB 解密都需一個個回推之前的密文,而 OFB 好處是想要解密某區塊,只要從加密演算法慢慢推導到目前的區塊即可。
qrvVHDx

計數器模式模式 ( Counter Mode, CTR )

上一個提到的 OFB 模式需要從第一個 IV 加入演算法慢慢推導到目前區塊,而 CTR 模式是先產生一組亂數,再加上用計數器計算的值,計數器可以是任意保證長時間不產生重複輸出的函式。
MDWH7no

參考資料 :

密碼的加密模式(ECB CBC CFB OFB CTR)

Day 21. 加密演算法要注意的那些毛 (一) - 加密模式

AES-JS:JavaScript 的 AES 對稱式資料加密工具

維基百科 : 區塊加密法工作模式


好的今天就先到這邊啦~感謝閱讀,明天見!掰掰


上一篇
【在廚房想30天的演算法】Day 23 資訊安全與演算法 : 前言
下一篇
【在廚房想30天的演算法】Day 25 資訊安全與演算法 : 公開金鑰密碼系統
系列文
少女人妻在廚房裡想不通的演算法30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言