iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
0
Security

無趣的密碼學,有趣的加密!系列 第 28

[Day 28] 028 - 區塊加密法 - Block cipher(二)

  • 分享至 

  • xImage
  •  

區塊加密法 - Block cipher(二)

接下來我們繼續來把其他模式說完吧~

這一次我們會聊到CFB、OFB、CTR這三個,然後提供一些其他的模式訊息。

最後就做整個模式的總結。

這邊再次提醒,我們加密算法用AES做範例,文中提到的AES是可以替換其他加密演算法的。


工作模式

前提

CFB、OFB、CTR都不需要對資料作填充。

為什麼?請繼續看吧~

以下圖片都來自區塊加密法工作模式在此注記。

CFB

密文回饋 - Cipher feedback(CFB)

雖然少見,但卻是一個蠻特殊的方法,一樣我們先看圖一。


圖一

能看到CFB做AES的並不是資料而是VI。

做完AES的VI在跟資料作XOR,接著把這個結果當作下一回。

圖二是解密。


圖二

注意了!

解密的方式是把『密文做加密』,在跟資料作XOR,因此只需要AES加密。

使用的方法其實就是OTP的方式,用VI來做出一次性密碼的方式來加密。

雖然我們提到很多次OTP,但一直都沒機會說,但後面應該……沒時間說,在這邊就簡單帶過。

這種加密方式十分安全,雖然資料沒經過AES,但卻能有效的隱藏資料。

這個加密的優點,就是加密的是VI,這樣資料不一定要填充,不填充不影響加密流程。

缺點來說,同樣就是加密不能並行,同時加密時一位元錯後面也會連續的出錯。

  • 加密:不能並行。
  • 解密:並行。

OFB

輸出回饋模式 - Output feedback(OFB)

這個加密模式跟CFB其實很像,看圖三。


圖三

解密則是圖四。


圖四

跟CFB一樣,解密的方法是用密文做AES加密。

這種方式的好處就是,我能在資料還沒進來之前,就先準備好加密資料的金鑰。

你可以看到圖中假如資料沒進來之前,就能先把VI做加密後傳給下一回。

而資料進來後就把做好的結果跟資料作XOR。

進而模擬出加速加密的模式。

優缺除了跟CFB差不多,但有一項新的擔憂,那就是會不會因為暫存了做好的金鑰,導致暫存器變成了竊取或攻擊的對象。

  • 加密:有條件的能虛擬並行。
  • 解密:並行。

CTR

這個模式蠻多人使用的。

我們先看圖五


圖五

這個模式主要的加密塊是VI進入一個『特別的計數器』,然後生產出來的隨機數或遞增數,跟金鑰進行加密。

圖六是解密


圖六

能看到解密的方是就是把加密的事情再做一次,只是明文換成密文。

而看到著個模式能『並行』加密跟解密,並且也有每一次混亂的功能。

這個方式算是一種中庸的方式。

優點跟OFB差不多,不用填充,而且加密能並行。

缺點的話……可能是因為資料沒經過AES,感覺會覺得不踏實吧。

  • 加密:並行。
  • 解密:並行。

其他工作模式

這邊想提一些其他的模式列表,給大家參考:

  • XTS
  • OCB
  • EtM
  • MtE
  • GCM
  • CCM
  • EME
  • CMC
  • EAX
  • KFM
  • LRW
  • XEX
  • Key Wrap
  • PCBC

上面這幾個不是很少人使用、非主流、不安全、特別專用不然就是有專利等。

這邊就簡單的帶過。


區塊加密法 總結

我們把這些工作模式拿來做個簡單的總結吧~

  1. 如果要使用同一個金鑰的話ECB不適合。

    • 同時不建議使用ECB。
  2. CBC、OFB、CFB其實很相似,但OFB跟CFB只需要加密不需要解密模塊,能解省代碼或電路。

  3. 並行最佳的是CTR。

  4. XTS是用來做隨機訪問的。

  5. 據某篇文章指出『OCB』是最好的模式,據文章指出此模式允許一次通過加密和身份驗證。

而我個人推薦的方式CTR,主要是效能,安全性到目前為止都被證明沒問題,並且十分的主流。

好了我們總結完了,已經把基礎密碼學的一部分略略介紹過了。

我們下一章就來做個期末考吧~


參考資料

區塊加密法工作模式

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

如何選擇AES加密模式( CBC ECB CTR OCB CFB ) ?


上一篇
[Day 27] 027 - 區塊加密法 - Block cipher(一)
下一篇
[Day 29] 029 - 密碼學的實際小測驗
系列文
無趣的密碼學,有趣的加密!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言