情報とコンピュータ

向殿政男

安全の百科,丸善株式会社, pp.81-87, 2002-3, (4.システムと安全, 4-3情報とコンピュータ,の原稿)

 知らず知らずのうちに私達の社会生活は、コンピュータとネットワークから構成される世界的な規模の情報システムに依存して営まれるようになりました。もし、日常生活の大前提であるこの情報システムがダウンしたらまた、もし、情報が正しく伝えられなくなったりしたら、私達の情報化社会が大混乱することは間違いありません。時には、人命が失われる可能性さえありましょう。このように、私達個人の安全はもちろんのこと、社会の安全にとっても、情報システムが、確実に、かつ健全に稼動していることは今後の必須条件なのです。
情報システムを脅かす要因をここではフォールト(fault)と呼ぶことにしよう。フォールトには、コンピュータやネットワークそのものを正常に稼働しなくさせてしまうものと、ハードウエアは正しくても、そこを流れている情報そのものを正しくないものにしてしまうものに大別できます。前者には、地震や台風などの自然災害、コンピュータの機械部品の故障やソフトウエアのバグなどが、そして後者には,悪意による人の不正行為などが有ります。ここでは、前者をコンピュータ安全、後者を情報安全と呼んで簡単にその内容を紹介しましょう。なお、これ以外の重要なフォールトに、悪意ではなく、“うっかり”や不注意、時には善意に基づき発生する人間のエラーやミスなどもあります。


1.コンピュータ安全――コンピュータシステムの安全性
---システム信頼性技術で安全を確保する---
 自然災害のような物理的なフォールトから情報システムを如何に守るかも大事ですが、ここでは、主として内部のフォールトでコンピュータシステムが正しく稼働しない場合を例に考えて見ます。コンピュータシステムは、ハードとソフトから構成されています。ハードに関するフォールトは,主に部品の故障や劣化です。ソフトに関するフォールとは、主にバグです。これらのフォールとが原因で、コンピュータ内を流れる情報が正しくなくなることになります。コンピュータシステムを用いてあるシステムの安全性を確保する場合は,その安全性は、コンピュータシステムの信頼性に依存することになります。この場合、システム信頼性技術に基づいて安全性が確保されています。

1)故障からコンピュータを守る
 部品の故障からコンピュータを守るための最も基本的なアプローチは、当然ですが故障をしないような高信頼度の部品を使用することです。これは初めからフォールの存在を回避することを目指すアプローチで、フォールトアボイダンスと呼ばれます。しかし、現実には、信頼性が高ければ高いほど部品の価格は高くなるし、ある程度以上の高信頼な部品を作ることは不可能です。従って、超高信頼にハードウエアを構成しようとする場合、例えば二重系にすることが考えられます。一つ(時には二つ以上)の部品が故障しても、他の部品がこれに代わって機能を果たす冗長系の考え方です。特に、空間的に同じハードウエアを並列させて信頼度を上げる方法を空間冗長と呼びます。この方法は,部品レベルだけでなく、システムレベルも含めた色々なレベルで用いられています。コンピュータ内の論理回路レベルでは、二重系にすると故障した部品の影響が外に出ないので、フォールトマスキングと呼ばれることが有ります。しかし、何時までも放置しておくと、両方とも故障して外に影響が出て来てしまいます。従って、故障の存在を見出す故障検出や、故障の場所を見つける故障診断等のテストの技術が重要になります。しかし、複雑な論理回路等では外部からテストをするのが極めて困難になりますので、最近は、設計の段階からテストをし易いように設計するテスト容易化設計が用いられるようになりました。

2)ソフトウエアバクからコンピュータを守る
 コンピュータのソフトウエアシステムは,現存する人工システムの中で最も複雑なものの代表とされています。大きなソフトウエアシステムに一つもプログラムミス(いわゆるバグ)が無いように開発することは、現実には不可能です。例えば、現在出回っている各種のOSの中には、必ずバグは存在すると言って間違いありません。発見されたバグの数からソフトウエアバグ曲線を描いて残存するバグの数を予測し、ある程度少なくなったと予想された時点で、市場に出荷してしまうのが現実です。ソフトウエアの信頼性を高めることは現実には、極めて困難な課題で、バグが入り込みにくいような設計方法、例えば、構造化設計方法等を用いて開発し、テストでバグを検出・修正していくしか道は一般にはありません。人命を預かるような安全を重視するシステムに使われるコンピュータのソフトウエアは、長時間使用して既に多くのバグが検出・修正されているソフト、いわゆる枯れたソフトを使うことが一般には義務付けられています。また、冗長系の考え方を適用して、同じ仕様に対して、異なったチ−ムが異なった言語で開発したN個のソフトウエアシステムを同時に動かして、出力が異なった場合にはシステムを止めたり、出力を多数決で決めたりするN−バージョンプログラミングが用いられています。

3)コンピュータ内の情報を守る
 ハードウエアの故障、ソフトウエアのバグ等の存在がコンピュータ内部の情報に誤り(エラー)を生じさせます。コンピュータ内の情報はすべて0と1との並び(符号)で表現されています。情報を表現している符号に冗長性を付け加えることで(これを情報冗長と呼びます)、情報が誤ったか否かを検出することが出来ます。パリティチェック符号が有名です。更に、情報に冗長度を増やすことで誤った情報を正しいものに訂正できる可能性も有ります。これは誤り訂正符号と呼ばれます。このような誤り検出・訂正符号の中で良く使われるものに、N桁のうち1の個数が丁度M個(M□N)の符号のみを使うM-out-of N符号が有ります。
 さて、蓄えられているデータにも誤りは発生します。ファイルを二重化することで一方が破壊されても他方でカバーすることが出来ますし、また、一方に誤りが発生した場合には、両者を比較することで誤り検出が出来ます。蓄えられているデータに誤りが無いこと、又はファイル二重化でデータを更新しているときに両者に相異が無いことをデータの完全性,又はデータの一貫性と呼びます。
大型のコンピュータで一般的に良く用いられている誤り回復の技術に付いて紹介しましょう。コンピュータ内部で誤りが発見された場合、もう一度同じことをやってみることをリトライと呼びます。あるタイミングでしか誤りが発生しない場合や、故障が一時的なもので正常に復帰する場合があるから有効な方法なのです。しかし、ファイルの中のデータを書き換えてしまった時は、ファイル復元をして、決められたあるところに戻って再度処理を実行しなければなりません。これをチェックポイントリスタートと言います。このように,同じことを繰り返すのも冗長技術の一種で。時間冗長と呼ばれます。

4)コンピュータで安全を確保する
 コンピュータが誤らない保証は一般にありません。特に、ソフトウエアにバグが存在しない保証が無い以上、安心してコンピュータに安全を任せることは出来ないかもしれません。しかし、コンピュータの持つ高機能性を,安全の実現のため利用しない手は有りません。安全を重視するシステムにコンピュータを組み込む場合には、コンピュータを超高信頼に構成するか、組み込まれたコンピュータに誤りが発見された場合、即座にそのシステムを止めることで安全を確保するかのどちらかです。その為には、自分自身を常にチェックするセルフチェッキングと言う技術が重要になります。食事の時間になると犬が定期的に吼えることになぞらえて、コンピュータが正常に稼働している時のみ、定期的にコンピュータ側から決められた信号を出力するようなウオッチドッグタイマというアイデアは、自己チェックの一つと考えられます。また、異なった種類のコンピュータを多重系にして(これを多様性冗長と呼びます)、組み込むソフトウエアもN-バージョンプログラムを用いて、出力が一致しない場合にはすぐにシステムを止めるように構成されたコンピュータをフェールセーフコンピュータと呼ぶことが有ります。

5)システムの信頼性を高める
少しぐらいのフォールトが存在しても、それに耐えて正しく機能するように構成したシステムがフォールトトレラントシステムです。特にコンピュータシステムの場合はノンストップコンピュータと呼ぶことが有ります。しかし,実際には、幾つかのフォールトの存在の為に正しい機能を維持することは出来なくなります。その時、突然すべての機能を停止するのではなく、フォールトの増加に従い徐々に機能を落として行き(機能縮退と言う)、大事な機能は最後まで残すように設計されたシステムがフェールソフトシステムです。
 システムの信頼性を挙げる一般的な手法として、システムレベルでの冗長系、すなわち冗長システムを構成する例が有ります。例えば、3台同時に稼働させて多数決で出力を決める三重多数決システム、まったく同じシステムを同時に2台稼働させて出力を照合させるなり、動いている方のシステムを利用するデュアルシステム、1台を稼働させていて、もう一台を予備系として待機、または重要度の低い作業をしながら待機させるデュープレックスシステムなどがあります。また、故障や負荷に応じて柔軟に処理能力を変化させてロバスト性(頑健性)を高めたシステムとして分散システムがあります。これには、機能を分散した機能分散や、負荷を分散した負荷分散、及び災害時などの危機管理を考慮した危険分散等の区別があります。一般には修理されたり必要になったサブシステムを再結合してシステム再構成が出来る能力を有しています。


2.情報安全――情報の機密性
 --情報セキュリティ技術で機密を守る---
 情報安全とは、情報を用いて各種の安全を確保するとも,又,情報そのものの安全を確保するともとれますが、ここでは、後者の意味に用います。通常、情報の機密を守ることを意味する情報セキュリティと呼ばれている分野です。

1)インターネットとセキュリティ
コンピュータネットワークの代表であるインターネットでは、そこを通過する情報は、常に他人に見られる可能性が有ります。それは、インターネットの通信方式が、いわゆるバケツリレー方式であって、幾つもの中継点を通過するという構造的な理由からです。中継点は、ルータと呼ばれる基本的にはコンピュータであって、情報は一端そこに蓄えられるからです。機密の情報も常に覗き見られる可能性が有ります。ネットワーク上を伝送される情報を如何に安全に守るかはネットワークセキュリテの重要な課題の一つです。

2)情報を何から守るか
 今、インターネット経由で電子メイルをやり取りしている相手は、本当に私が思っている、あの本人なのだろうか、と疑いを持ったことは有りませんか? 相手が見えないから、もしかしたら,他の人がなりすましている可能性は、ゼロではないはずです。また、多くの人が、ウィルス入りの電子メイルを貰った経験があると思います。これは、他のコンピュータシステムに侵入して情報を破壊するクラッカーなどと呼ばれる一種の愉快犯と同様に、他人に迷惑をかける事を目的とする行為です。情報に関する安全、ここで言う情報安全を考える場合、フォールトに相当するものは,悪意に基づく人間の行為です。この人為的脅威には,上に述べた“なりすまし”や“ウィルス”以外に、情報の“不正使用“、”盗用”、“改ざん”、“破壊”、“プライバシー侵害”等々、色々なものがあり得ます。

3)情報をどうやって守るか
一種の公道であるインターネット上を、他人に分からないように情報を送るための最も基本的な技術が、暗号技術です。これにも、DES暗号に代表されるような共通鍵暗号方式と、RSA暗号などに代表される公開鍵暗号方式の二つがあります。コンピュータシステムへの他人からの不正な侵入防止に対しては、ファイヤーオールやアクセス制御等の技術が有ります。又、ネットワーク上で本当に本人であることを証明したり認証したりするデジタル署名やバイオメトリックスなどの認証技術は、情報化社会では不可欠なセキュリティ技術と言えます。これ以外にも、不正使用に対する電子透かしや耐タンパー性技術、更に、なりすまし防止、否認防止、改竄防止、ワクチンプログラム等々、情報を守るための各種のセキュリティ技術が開発されています。

4)情報化社会とセキュリティ
警察制度、裁判制度、法律制度等々の現代社会の安全と安心を守るためのシステムは、これまで何百年と掛かって人類が築き上げてきた制度です。情報化社会において、これまでの実際の社会と同じようなウエイトを持つようになると予想され、サイバー社会などとも言われる電子ネットワーク上の社会では、これらの安全で安心な制度はまだ出来上がっているとは言えません。電子政府が実現されようとしている現在、今後、情報化社会におけるセキュリティを守るためのシステムとして、広く認められた認証機関や電子認証制度等が必須となるはずです。