iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 27
0
Security

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

[Day 27] 027 - 區塊加密法 - Block cipher(一)

區塊加密法 - Block cipher(一)

區塊加密是目前蠻主流的加密。

區塊加密跟串流加密其實就是差距蠻大的,有一個特點是區塊加密的優勢。

那就是『模式』,為何那麼說?區塊加密提供的是模式。

因為提供的是模式的關係,將『加密』跟『加密模式』分開來。

加密法可以不同、可以替換,而加密模式就能處理更多的資料。

加密法提供了固定的資料加密,加密模式提供了怎麼罷資料分割跟串連。

接下來會將幾個知名的介紹介紹,之後會提幾個有專利的。

但同時也很優秀的區塊加密方法。

那我們就開始來聊聊~


前言

在開始介紹工作模式之前必需要介紹幾個東西。

  1. VI 初始化向量。
  2. 填充。

這兩個是十分重要的,我們先把這兩個簡單的講完。

接著才進入工作模式的介紹。

VI 初始化向量

VI全名為『Initialization Vector』,中文為初始化向量。

主要是提供加密方法時的亂數化,使得相同的『金鑰』跟『資料』加密出來的資料串卻是不同。

這樣就能使同樣加密的資料產生不同的密文,避免了每一次重新生成金鑰的過程。

通常VI無須保密,主要是提供每一次加密的混亂化,同一支金鑰對不同或相同的資料加密時,一定要有不同的VI。

接下來我提供一些WiKi的資訊:

對於CBC和CFB,重用IV會導致泄露明文首個塊的某些資訊,亦包括兩個不同訊息中相同的字首。

對於OFB和CTR而言,重用IV會導致完全失去安全性。

另外,在CBC模式中,IV在加密時必須是無法預測的。

在許多實現中使用的產生IV的方法。

例如SSL2.0使用的,即採用上一個訊息的最後一塊密文作為下一個訊息的IV,是不安全的。

上述來自區塊加密法工作模式

一般VI會串在加密後資料的最前面。

填充

我們之前在說加密時一直都沒有提到,但在Hash中由提到的填充。

於在這裡出現了,想必大家多多少少有意識到這件事情了吧?

沒錯填充是屬於工作模式的範疇了。

加密演算通常都必需要固定的大小才能加密,而在工作模式中的衝就會來處理這喔部分。

主要是ECB和CBC需要最後一塊在加密前進行填充,其他模式有些不一樣後面再說。

填充比較簡單方式就是在資料後面填入加密區塊為倍數的空字元,但一樣必需要確保資料還原時長度要正確(有些資料真的後面會是空字元好幾個,避免混淆)。

還有期他比較複雜的填充方式,但那就是看大家怎麼設計了。

有類似於DES的添加1位元'1'後補'0'到長度符合,還有WiKi介紹的:

布魯斯·施奈爾和尼爾斯·弗格森提出了兩種簡單的可能性:
1. 添加一個值為128的位元組(十六進位的80),再以0位元組填滿最後一個塊。
2. 或向最後一個塊填充n個值均為n的位元組。

上述來自區塊加密法工作模式


工作模式

我們正式來聊經點的幾個工作模式吧~

首先是跟資料有關西的,對資料直接接加密的EBC跟CBC。

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

EBC

電子密碼本 - Electronic codebook(ECB)

這個應該是最簡單的工作模式,先看圖一


圖一

恩……其實就是把資料先切塊,然後把切塊的『個別』加密,圖二是解碼


圖二

其實也就是同樣個別解碼。

這個方式的好處就是能並行處理,因為每一個加解密都是獨立的,能做並行加密跟解密。

但問題也很多,看一下圖三:


圖三

我們對圖三做ECB區塊加密使用的加密是AES來加密後得到圖四:


圖四

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

大家應該知道這種加密方式的缺點吧……

不如說缺點還蠻多的,不只重複使用金鑰,並沒有利用到VI。

因此!同一個金鑰、資料會使結果一樣。

所以我們接下來看CBC吧~

CBC

密碼區塊連結 - Cipher-block chaining(CBC)

先看一下圖五:


圖五

以CBC來說能看到VI先跟資料作XOR然後加密。

加密完後再把結果輸出同時把這資料當成新的VI在跟下一塊的資料作XOR。

這邊先跟大家說一下,我們會先把資料切塊成跟加密算法符合的長度喔。

圖六就是解碼:


圖六

缺點也很簡單,就是只要一位元的資料錯誤後,後續相連的資料都會發生錯誤。

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

工作模式 小結論

這邊介紹了兩個最為基礎的加密區塊工作模式,下一章將會介紹一些比較特別的加密區塊模式。

而這兩個簡單的模式都能做並行,而安全性來說CBC大於EBC但依然不是最安全的。

接下來將會介紹幾個更加有趣的工作模式。

而最後在跟大家討論總結論跟優缺點,以及我推薦的加密工作模式。

那麼大家明天見拉~


參考資料

區塊加密法工作模式

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

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


上一篇
[Day 26] 026 - 串流加密法 - Stream cipher
下一篇
[Day 28] 028 - 區塊加密法 - Block cipher(二)
系列文
無趣的密碼學,有趣的加密!30

尚未有邦友留言

立即登入留言