1. 暗号化とは
2006.03.17 株式会社四次元データ 里見玲爾
- 1.1. ストリーム暗号化方式
- 1.2. ブロック暗号化方式
- 1.3. 対称鍵暗号化方式
- 1.4. 非対称鍵暗号化方式
暗号化とは他人に漏らしたくない情報を保護するために使われる技術です。 暗号化には鍵を用い、その鍵を持たないものにはまったく無意味な情報に 書き換えてしまうことで情報の漏洩を防ぎます。 現在インターネット上で情報をやりとりする場面が増えてきたため、 こういった技術はいろいろな場面で使われています。
ひとくちに暗号化とは言っても、どのように情報を書き換えるかについて いろいろな方式に分かれます。 その分け方としてはストリーム暗号化方式とブロック暗号化方式、 対称鍵暗号化方式と非対称鍵暗号化方式があります。
1.1. ストリーム暗号化方式
ストリーム暗号化方式は、もとの情報(クリアテキストと呼ばれる)を符号化したものを1文字ずつ変換していく 方式です。下に簡単な例を挙げます(簡単のため、符号化せずにテキストをそのまま暗号化します)。
"I like an apple"を以下のようなルールで暗号化する。 「各アルファベットを1つ次のアルファベットに置き換える。 a -> b、b -> c … z -> A … Z -> 空白文字、空白文字 -> a のようにする。」 "I like an apple" -> "Jamjlfaboabqqmf"
この暗号化の鍵となるのは「アルファベットを一文字ずらす」ということになります。 この鍵を知らない人が暗号化されたテキストを見ても何を意味するのかわかりません。
1.2. ブロック暗号化方式
ブロック暗号化方式は、クリアテキストをある固定長のブロックごとに分けて暗号化を行います。 下に簡単な例を挙げます(これも簡単のために符号化せずにテキストをそのまま暗号化します)。
"I like an apple"を以下のようなルールで暗号化する。 「テキストを4文字ずつに分け、ブロックの1文字目と3文字目を交換する。」 "I like an apple" -> "l Ii ekaa npelp "
この暗号化の鍵となる部分は「1文字目と3文字目を交換する」ということです。
テキストを何文字ずつに分けるかはアルゴリズムごとに決まっていることが多いため、
鍵に関する情報にはなりません。
上の例のクリアテキストは全部で15文字ですので、4文字ずつ区切ると最後が3文字になってしまいます。
そのため例では最後に空白文字をひとつ付け加えています。
このようにクリアテキストがブロックサイズの倍数にならないときに文字を付け足すことをPadding(パディング)
と言います。
近年の暗号は1.1の例のような換字暗号(字を置き換える暗号)と1.2の例のような転置暗号
(文字の場所を入れ替える暗号)を組み合わせて、暗号を解読されにくくしています。
1.3. 対称鍵暗号化方式
対称鍵暗号化方式は共有鍵暗号化方式や共通鍵暗号化方式とも呼ばれ、 暗号化と暗号解読(復号化とも言う)に同じ鍵を使います。 その鍵が第3者に渡らないようにすることで情報の漏洩を防ぎます。対称鍵暗号化方式で使う鍵は、 秘密鍵(Secret Key)または共通鍵、共有鍵と呼ばれます。
この対称鍵暗号化方式にはDES(Data Encryption Standard)やAES(Advanced Encryption Standard)などがあり、 これらは米国連邦情報処理標準規格(FIPS)として採用されています。 DESは1960年代後半に開発された暗号化アルゴリズムで、 テキストを64ビットずつに分けて56ビットの鍵で暗号化するブロック暗号化方式のひとつです。 コンピュータの性能の向上のため暗号強度が弱くなってきたため、 それに伴って新しい標準となるアルゴリズムを公募から選定したものがAESです。 2000年10月にベルギーの数学者2人によって開発されたRijndael(ラインダール)というアルゴリズムが選ばれました。 AESは128ビットずつに分けるブロック暗号化アルゴリズムで、鍵長は128、192、256ビットをサポートしています。
1.4. 非対称鍵暗号化方式
非対称鍵暗号化方式は公開鍵暗号化方式とも呼ばれ、暗号化と復号化に1組の鍵ペア(KeyPair)を使います。 この鍵は公開鍵(Public Key)と非公開鍵(Private Key)と呼ばれ、公開鍵はその名の通り誰でも取得できるような鍵で、 非公開鍵は外部に漏らさないように保管しておく鍵です。
ある公開鍵で暗号化したものはそのペアである非公開鍵でしか復号化できず、 ある非公開鍵で暗号化したものはそのペアである公開鍵でしか復号化できません。 つまり受信側以外に漏らしたくない情報は受信側の公開鍵で暗号化して送信すれば情報の漏洩を防ぐことができます。
非対称鍵暗号方式にはRSA(Rivest, Shamir, Adleman)、DSA(Digital Signature Algorithm)、 ECDSA(Elliptic Curve Digital Signature Algorithm)などがあり、 米国連邦処理標準は電子署名アルゴリズムとして上の3つを採用しています。