インターネットでは,メールなどのデータはいくつかのインターネットサーバを経由して送られてきます(第3回参照)。もし,経由したサーバに仕掛けがほどこされていたら,第三者がそのデータを盗み見たり,内容を改ざんして送ることも可能です。
そのような不正行為を防ぐために開発された技術の1つが暗号化です。元のデータ(平文という)の意味が読み取れないように変換することを暗号化,暗号化されたデータ(暗号文)を平文に戻すことを復号といいます。
情報処理試験では,暗号方式をどのように組合せてどんな不正行為を防止しているのか,その仕組みについて出題されています。
共通かぎ暗号方式
暗号化するときには,定められた数式と変数を用いて,データを変換しています。復号するときは,数式を逆に使い,同じ変数を用いて元の平文に戻します。変換のための数式はだれでも知ることができますが,変数はその都度変えながら暗号化しますので,変数がわからなければ暗号文を平文に戻すことは困難です。この変数のことを「かぎ」と呼びます。
共通かぎ暗号方式は,暗号化と復号に同じかぎを用いる方式です。送信者と受信者が同じかぎを保持して,それを暗号化と復号に使います。第三者に知られないようにかぎを保持しておく必要があるため,秘密かぎ暗号方式とも呼ばれます。複数の相手とやりとりする場合,相手の数だけ別々のかぎを保持しなければならず,かぎの管理が煩雑になります。
代表的な共通かぎ暗号方式として,56ビット長のかぎを使い,変換作業を16回繰り返して行うDES(デス;Data Encryption Standard)が広く使われてきました。しかし,コンピュータの処理の高速化に伴って,DESで作成した暗号文が解読される可能性が高くなったため,より長いかぎを使い,変換も複雑なAES(エーイーエス;Advanced Encryption Standard)が開発されました。
図1 共通かぎ暗号方式の仕組み
![図1 共通かぎ暗号方式の仕組み 図1 共通かぎ暗号方式の仕組み]()
公開かぎ暗号方式
暗号化用のかぎと復号用のかぎを別にする方式です。一方のかぎを公開し(公開かぎ),もう一方のかぎは,かぎの作成者本人のみが持つ秘密かぎにしておきます。
この方式の特徴は,「公開かぎで暗号化した暗号文は,対となる秘密かぎでのみ復号が可能」であり,また逆に「秘密かぎで暗号化した暗号文は,対となる公開かぎでのみ復号が可能」という仕組みになっていることです。
よく使われるのは,「送信者が,公開されている受信者の公開かぎを入手し,このかぎでデータを暗号化して送信。受信者は対となる自身の秘密かぎを使って復号」という方法です。
代表的な公開かぎ暗号方式にはRSA(アールエスエー;Rivest Shamir Adleman)があります。
図2 公開かぎ暗号方式の仕組み
![図2 公開かぎ暗号方式の仕組み 図2 公開かぎ暗号方式の仕組み]()
電子署名(ディジタル署名)
公開かぎ暗号方式を逆に使うことで,送信途中でのデータ改ざんがなかったことを確認する方法です。
送信者は,ハッシュ関数(任意の長さのデータから固定長のデータを作り出す関数)を使って平文からメッセージダイジェスト(ハッシュ関数によって作り出された固定長のデータ)を作り出します。これを送信者の秘密かぎで暗号化し,電子署名として平文と一緒に送ります。
受信者は送信者の公開かぎを入手してメッセージダイジェストを復号します。送信者と同じハッシュ関数を使って,送られてきた平文からメッセージダイジェストを作成し,両者を比較します。一致すればデータの改ざんが無かったことが証明されます。
図3 電子署名の仕組み
![図3 電子署名の仕組み 図3 公電子署名の仕組み]()
認証局
公開かぎ暗号方式を使い,山田太郎氏から送られてきた暗号化されたメールを,山田太郎氏の公開かぎで復号できれば,確かに山田太郎氏が送ってきたメールだということがわかります。しかし,山田太郎だと名乗ってメールを送ってきたその人が,本物の山田太郎氏なのかまで確認することはできません。
そこで,Webページや電子メールなどについて,本当に実在する組織や個人が作成したものであることを証明する機関が認証局(CA:シーエー;Certificate Authority)です。
認証局では電子証明書(ディジタル証明書)を発行していますので,証明書に含まれている公開かぎを使えば,本物だと証明された本人からのメールであることを確認できるため,なりすましによる被害を防ぐことができます。