0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AES暗号(ECB/CBC/CTR/XTS)

Last updated at Posted at 2024-10-09

ファイルを暗号化した時、AES暗号を使用したのですがECB、CBC、XTSなど複数あり、暗号化の方法など違いが分かっていなかったので、調査しました。

目次

  1. 暗号利用モード
  2. AES暗号
    1. ECB
    2. CBC
    3. CTR
    4. XTS
  3. まとめ
  4. 参考にしたサイト

1. 暗号利用モード

 暗号利用モードとは、ブロック暗号1を利用してブロック長よりもメカニズムのことです。
 暗号利用モードには、秘匿用のモードと、データの秘匿性、完全性および認証制を同時に提供する認証用のモードがあります。
 

2. AES暗号

 AESはAdvanced Encryption Standardの略で、高いセキュリティ性と高速性を備えた暗号化アルゴリズムとして広く知られています。
 AES暗号化は共通鍵暗号方式の一種で、同じ鍵を使用して暗号化と復号を行います。
 鍵の長さを128ビット、192ビット、256ビットの3種類から選択することができます。長いほうが解読される可能性は低くなるというメリットはありますが、その分暗号化と復号の処理にかかる時間が増えるというデメリットもあります。
 今回使用したECB、CBC、CTR、XTSについて暗号化の方法などの違いを調べました。

1. ECB

 ECBはElectronic Codebookの略で、もっとも単純な暗号利用モードです。
 128ビットのデータブロックごとに同じ暗号化キーを使用して暗号化します。
 プレーンテキストと呼ばれる暗号化されていない同じブロックのデータが同じ方法で暗号化されるため、データパターンを隠せず、セキュリティ上の脆弱性があります。

CBC_encryption

画像引用元: wikipedia
https://ja.wikipedia.org/wiki/%E6%9A%97%E5%8F%B7%E5%88%A9%E7%94%A8%E3%83%A2%E3%83%BC%E3%83%89

2. CBC

 CBCはCipher Block Chainingの略で、最も広く用いられている暗号利用モードです。
 ECBの弱点を解決するため、プレーンテキストの各ブロックは前の暗号文とのXORを取ってから暗号化されます。
 各々の暗号文ブロックはそれ以前のすべての平文ブロックに依存することとなり、メッセージごとのユニーク性を確保するため、最初のブロックの暗号化には初期化ベクトル2が用いられます。

暗号化の流れ

CBC_encryption

画像引用元: wikipedia
https://ja.wikipedia.org/wiki/%E6%9A%97%E5%8F%B7%E5%88%A9%E7%94%A8%E3%83%A2%E3%83%BC%E3%83%89

3. CTR

 CTRはブロック暗号を同期型のストリーム暗号3として扱う暗号モードです。
「カウンター」と呼ばれる値を暗号化することで鍵ストリームブロックを生成します。
カウンターは単調増加であり値の重複がなければどのような関数でも用いることができます。1ずつ増加するものがもっとも単純でありもっとも一般的です。

暗号化の流れ

CBC_encryption

画像引用元: Kingston
https://www.kingston.com/jp/blog/data-security/xts-encryption

4. XTS

 XTSは最新のブロック暗号モードで、IronKey ドライブで使用されています。
 2つの独立したAESキーを使うため、2重暗号化と近い状態になります。
 各ブロックが独立していてチェーニングを使用しないため、保存された暗号文が壊れたとき復元不可能になるデータはそのブロックのみに制限されます。

CBC_encryption

画像引用元: Kingston
https://www.kingston.com/jp/blog/data-security/xts-encryption

まとめ

 AES暗号化は複数ありますが、ECBは解読されやすいため使わないほうがよく、CBC/CTRはECBの欠点を解消していて広く使用されていることがわかりました。
 最新のブロック暗号モードはXTSで、CBC/CTRよりも強力な暗号化モードです。
今回調べた以外にも暗号利用モードは種類があるので、必要に応じて使いこなせるようになりたいと思いました。

参考にしたサイト

https://ja.wikipedia.org/wiki/%E6%9A%97%E5%8F%B7%E5%88%A9%E7%94%A8%E3%83%A2%E3%83%BC%E3%83%89
https://study-sec.com/aes/#1-1_AES
https://www.kingston.com/jp/blog/data-security/xts-encryption

  1. 共通鍵暗号の一種。
    固定長のデータ(ブロック)を単位として処理する暗号の総称

  2. ビット列。
    ストリーム暗号またはブロック暗号を任意の暗号利用モードで実行するとき、同じ暗号鍵でストリームを生成しても毎回異なるストリームを生成するのに必要とされる。これにより、毎回暗号鍵を替えるといった時間のかかる作業を省くことができる。

  3. 共通鍵暗号の一種。
    暗号の種類の一つで、データを1ビット単位あるいは1バイト単位で逐次暗号化していく方式

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?