暗号や認証,公開鍵(かぎ)方式などネットワーク・セキュリティの基本技術について学びます。第1回目は,セキュリティが脅かされる4つのモデルを紹介します。

 企業からの個人情報漏えいや,偽造されたWebページを使った詐欺事件などが珍しくなくなっています。個人情報保護法や,不正アクセス禁止法などセキュリティに関する法律も整備されてきました。しかし,法律でコンピュータ・セキュリティが保護されたと安心しているユーザーはほとんどいないでしょう。ネットワークを使って安心して買い物や銀行取引をするには,法律のみならず,技術についての理解が欠かせません。

 セキュリティに関する技術というと,SELinuxやファイアウオールの設定,SSHやIPsecなどのプロトコルのことを思い浮かべる人も多いかもしれません。また,セキュリティに関するさまざまな技術について断片的には理解しているが,それがどういう目的でどういう役目を果たしているのかを頭の中で整理できていない人もいるのではないでしょうか。

 そこで本連載は,セキュリティの基本技術である暗号化技術やPKI(公開鍵暗号方式)について,頭の中で整理できるようにその原理を分かりやすく解説します。

 こういった仕組みは,セキュリティを保証してくれるものではありません。例えば,現実の世界でいえば,ピッキングに弱い鍵を万全だと信じて自宅を留守にするように,使い方を誤るとかえって危険な状態になってしまうことすらあります。正しい使い方を学ぶ前に,セキュリティ技術について正しい理解が必要です。

完全なセキュリティは不可能

 セキュリティを保つとは「してほしくないことを,他の誰にもできないような状態にしておくこと」です(図1)。しかし実際には,そのようなことは不可能だと思いませんか?

図1●セキュリティとは
図1●セキュリティとは

 セキュリティは,体の健康に例えられることがあります。どのような病気にもかからないような完全な健康状態にはできないものの,病気にかかりにくい体調を維持することはできます。セキュリティにも度合いがあって,してほしくないことを誰にもできにくい状態に維持することはできます。しかし,「完全にセキュリティが保たれている」という状態を実現することは不可能です。

 また病気の種類や深刻度もさまざまなように,コンピュータ・セキュリティの脅威の種類や深刻さもさまざまです。セキュリティ度合いの高い状態に近づけるための道具は多数用意されています。食べ過ぎに風邪薬が効かないように,セキュリティの道具にも用途があります。まずは,どういう形でセキュリティが破られるのか,パターンを調べてみましょう。

 本連載を通して使用する非常に重要な4種類のモデルがあります。セキュリティが犯されるパターンは,大抵この4つのモデルのうちのどれかに当てはまります。以下,それぞれについて説明します。

進化し続けなけばならない暗号方式

 今,送り手(送信エンティティ)が受け手(受信エンティティ)に,何かしらの大切な情報を送ろうとしています。

 1つ目は,「盗聴」です(図2)。脅威は,通信内容が悪意を持つ者に傍受されて,窃用(せつよう)されることです。知りえた通信の内容を他人に漏らすと法に抵触します。しかし,いくら法律で守られているからといっても,犯罪から身を守ることはできません。ネットワーク上を流れる自分のクレジット・カード番号やログインの暗証番号は,たとえ通信内容を傍受されたとしても容易に理解できないように守っておく必要があります。

図2●盗聴
図2●盗聴
盗聴に対する防御は,情報の秘匿である。暗号化技術を用いる。丸印で囲んだものは,情報の送り手や受け手を表す。人間の場合もある。コンピュータそのものの場合もある。このような登場人物のことをエンティティと呼ぶ。

 ハード・ディスクなどの記憶媒体に保存された機密情報が漏えいすることも一種の盗聴になります。不正にデータを持ち出されてしまったときに備え,データが容易に読み取れない処理を施しておくことが重要です。それを情報秘匿といいます。秘匿を実現する代表的な手段は「暗号」です。暗号は盗聴モデルの攻撃から防御するための有効な手段として異論はないでしょう。

 暗号の歴史は古く,古代ローマ帝国にはカエサル暗号という暗号方式が使われていたことはご存知でしょうか。カエサル暗号は,ある文字を別の文字に置き換えるものです。2001年宇宙の旅という映画に登場するコンピュータ「HAL」は,「IBM」を一文字ずつずらした暗号文字であったことは有名です。原理は図3のような文字盤を使って,ある文字を他の文字に変換します。今から5年以上前は,インターネットではネット・ニュースという掲示板が有名でした。そこの一部の掲示板ではROT13という暗号方式が使われていました。英文字はAからZまで26文字ありますが,それをアルファベットの順番に13文字ずらして投稿します。例えば,AはN,bはoに変換されます。なぜそんな明らかに解読できる暗号を使うのか?といえば,過激な内容を控えめに投稿したい場合や,クイズの答えのように,読むアクションを起こさなければ読めないようにするためです。一種のお遊びです。

図3●カエサル暗号盤
図3●カエサル暗号盤

 その名残でLinuxのコマンドにもオプションにROT13の機能が残されているものもあります。nkfやtrコマンドを使えばROT13が簡単に実現できます。13文字シフトする意味は,アルファベット26文字の半分シフトさせることで,暗号化と復号化に同じコマンドを使えるからです。

 nkfコマンドを使ったROT13暗号は,


$ echo NikkeiLinux |nkf -r AvxxrvYvahk

のように実行します。trコマンドを使ったROT13暗号は,


$ echo NikkeiLinux|tr A-Za-z N-ZA-Mn-za-m AvxxrvYvahk

のように打ち込みます。

 このROT13の方式は,ある文字を別の文字に変換する方法ですが,このような暗号化方法を換字式(かえじしき)暗号(サイファー暗号)といいます。

 第2次世界大戦まで使われていた暗号方式では,暗号化や復号化の作業に人手やタイプライタのような機械を使っていました。このため,1文字入力すると暗号の1文字が出力されるという換字式暗号が主流でした。さらに複雑に暗号化するため,2文字や3文字を単位として別の文字列に変換する方法もあります。

 旧日本軍の紫暗号やドイツ軍のエニグマ暗号は第2次世界大戦中に用いられた代表的な換字式暗号だったそうです。紫暗号が開戦前の1940年には既に解読されていたことなどは「暗号の天才」(R.W.クラーク著 新潮社)に描かれています。解読者のウィリアム・フリードマンは,戦後設立された米国家安全保障局(NSA)で戦後処理やNATO設立のために各国が利用した暗号についても解読に従事したとのことです。現在インターネットをはじめとするネットワーク通信で使われるDES暗号を標準仕様としたのもNSAです。

 戦後は,暗号化や復号化はコンピュータで処理されることになりました。それにより,複雑な暗号が実現できます。例えばDESでは,平文のデータをある固定長の長さに分割したものを暗号化していきます。これをブロック暗号といいます。

 その変換の過程では,データの並びの入れ替えやデータ同士の演算を何度も繰り返します。これにより,元の平文が少しだけ変化しただけでも,とんでもなく違った暗号文が出力できることになります。紫暗号の解読では暗号文と平文の組み合わせが多数集められ,その相関から解読されたとのことですが,DESでは平文と暗号文の相関がなるべく無くなるように,しつこいまでもデータの変換が行われており,それが強い暗号を生み出す秘密となりました。

 インターネット上で使われるDES暗号では56ビット長の鍵が使用されます。現在のコンピュータ能力では,56ビット長では不足なので,少なくとも2倍の112ビットとするために,DESを繰り返す使う3DES(トリプルデス)暗号が主流です。鍵の長さを2倍にする目的のために,どうしてDESを3回繰り返す必要があるのでしょう。それは次号で解説します。次号では,DESを少し複雑な使い方(モードといいます)をすることでさらに強度を高める工夫も紹介します。