LoginSignup
0
0

More than 1 year has passed since last update.

ブロック暗号の種類と仕組み

Posted at

共通鍵暗号

暗号化と復号で同じ(共通の)秘密鍵を使う暗号化方式。

公開鍵暗号に比べて高速に暗号化・復号ができるように設計れているため大きなサイズの平文の暗号化に向いている。

秘密鍵暗号、対照鍵暗号とも呼ばれる。

共通鍵暗号のやりとり

  1. 共通鍵を生成。事前に受信者と共有。

  2. 平文と共通鍵で暗号文を作成して送信。

  3. 受信した暗号文と共通鍵で復号。

暗号化と復号で同じ鍵を使うという性質上、安全な方法で鍵を共有して管理する必要がある。

ブロック暗号

ブロックと呼ばれる一定の大きさの平文を同じ長さのブロックに変換する暗号化方式。

ストリーム暗号

平文を小さい単位(ビット、バイト)でデータの流れを順次処理する暗号化方式。

ブロック暗号のモード

ECB

ECB(Electronic CodeBook)mode:電子符号表モード

平文ブロックを単純に暗号化したもの。

同じ平文から同じ暗号文が得られるため機密性が低く推奨されていない。

1920px-ECB_encryption.svg.png

1920px-ECB_decryption.svg.png

CBC

CBC(Cipher Block Chaining)mode :暗号ブロック連鎖モード

一つ前の暗号文ブロックと平文ブロックの XOR(排他的論理和)を取って暗号化する。

最初の平文ブロックは前の暗号文ブロックを持たないので iv(initialization vector、初期化ベクトル)と XOR をとる。

同じ内容の平文ブロックからでも異なる暗号文ブロックを生成できる。

平文ブロックのサイズ(AESは16バイト)が足りない場合パディングという値埋めを行う。

1920px-CBC_encryption.svg (1).png

1920px-CBC_decryption.svg.png

CFB

CFB(Cipher-FeedBack)mode:暗号フィードバックモード

一つ前の暗号文ブロックを暗号化した値と平文の XOR を取って暗号化する。

1920px-CFB_encryption.svg.png

1920px-CFB_decryption.svg.png

OFB

OFB(Output-FeedBack)mode:出力フィードバックモード

暗号アルゴリズムの出力と平文の XOR を取って暗号化する。

一つ前の暗号アルゴリズムの出力を使って次の暗号アルゴリズムを作る。

1920px-OFB_encryption.svg.png

1920px-OFB_decryption.svg.png

CTR

CTR(CounTeR)mode:カウンタモード

一つずつ増加するカウンタを暗号化した値と平文ブロックとの XOR を取って暗号化する。

ランダムな使い捨ての値(ノンス)を元にカウンタを作成する。

暗号化と復号の構造が同じになるのでプログラムの実装が容易になる。

1920px-CTR_encryption_2.svg.png

1920px-CTR_decryption_2.svg.png


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