暗号とは通信するデータを第三者から隠すための方法です。
暗号にはステガノグラフィ(steganography)、コード(code)、サイファ(cipher、cypher)があります。
- ステガノグラフィ(steganography)
通信データを人目に付かないところに隠す(電子透かしなど)
- コード(code)
通信データの名詞や動詞をあらかじめ決めた他の単語に置き換える(コードネーム、符牒、隠語)
- サイファ(cipher、cypher)
通信データを内容に関係なく、決めたアルゴリズムにしたがって変形(置換や転置)する
このうち、情報処理技術者試験で出題される暗号は
サイファになります。
このサイファ(暗号)には、特定のデータ(暗号化鍵)を用いてアルゴリズムの動作を決める方法とそうでないものがあり、さらに鍵を使用する暗号には暗号化と復号で同じ鍵を使用する
共通鍵暗号方式(秘密鍵暗号方式)と、暗号化と復号で異なる鍵を使用する
公開鍵暗号方式があります。
鍵を使用した暗号化方式は暗号アルゴリズムを公開できるため、任意の相手と使用するアルゴリズムを決め、暗号化鍵を交換することで利用できます。(暗号化鍵を使用しない暗号化方式は、暗号アルゴリズムを秘密にする必要があるので、複数の相手と通信することは難しい。)
情報処理技術者試験で出るのはこの暗号化鍵を使う暗号である
共通鍵暗号方式と
公開鍵暗号方式になります。
【暗号化方式の比較】
暗号化方式 |
内容 |
共通鍵暗号方式 (秘密鍵暗号方式) |
暗号化と復号で同じ暗号化鍵を使用する。
同じ暗号化鍵を複数の通信相手と使用することはできず、通信相手の数だけ暗号化鍵を用意する。
暗号化鍵を盗まれると暗号アルゴリズムが公開されているため、通信データを秘密にできなくなるので、暗号化鍵の管理は非常に重要になる。
共通鍵暗号方式の代表例:
- DES(Data Encryption Standard)
56ビットの暗号化鍵で、64ビットのデータ列(ブロック)を暗号化(復号)する
ANSI規格になっている
- AES(Advanced Encryption Standard)
128、192、256ビットの暗号化鍵で、128ビットのデータ列(ブロック)暗号化(復号)する
DESの後継暗号
- KASUMI
128ビットの暗号化鍵で、64ビットのデータ列(ブロック)を暗号化(復号)する
三菱電機が開発し、携帯電話で使用されている
- FEAL(Fast Data Encipherment Algorithm)
NTTが開発した暗号
|
公開鍵暗号方式 |
暗号化と復号で異なる鍵を用いる(暗号化鍵、復号鍵)
2つの鍵は片方からもう一方を推測できないため、一方の鍵(暗号化鍵)を公開し、もう一方の鍵(復号鍵)を秘密にすることで、一組の鍵で複数の相手と通信データの暗号化を行うことができる(暗号化は誰でもできるが、復号できるのは自分だけ。また、逆の方向(暗号化鍵を秘密にし、復号鍵を公開する)にも使用できる。)
公開鍵暗号方式の代表例:
- RSA(RSAは開発者の頭文字)
けた数の多い数の因数分解が難しいことに着目した暗号方式
1024-4096ビット長の鍵が使用される
- 楕円曲線暗号
楕円曲線上の離散対数問題を利用した暗号方式
- ElGamal 暗号
位数が大きな群の離散対数問題を利用した暗号方式
|
公開鍵暗号方式の利用方法にはを、通信データを暗号化することのほかに、鍵の性質を利用して通信相手や通信データを証明するのに使用される。(
デジタル署名)
デジタル署名を利用する場合には、復号鍵を公開し、暗号化鍵を秘密にする。
- 相手認証
自分のことを相手に証明するには、予め決めたデータを自分しか知らない秘密の暗号化鍵で暗号化し相手に送る。暗号文を受け取った相手は公開されている復号鍵で暗号文を復号し正しく復号できれば、通信相手の正しさを証明できる。
- メッセージ認証
通信データを証明するには、通信するデータからハッシュ関数でハッシュ値を求め、ハッシュ値を自分しか知らない秘密の暗号化鍵で暗号化し、通信データと合わせて相手に送る。通信データを受け取った相手は、通信データからハッシュを求め、公開された復号鍵で復号したハッシュ値と比較することで、その通信文が改ざんされていないことを確認できる。
※
ハッシュ関数:もとのデータからある一定の範囲の数値(ハッシュ値)を生成する関数で、もとのデータの一部が変化するとハッシュ値も変化する特徴がある。また、ハッシュ値からもとのデータを予想することは難しい。