2 情報通信

2.1 プロトコル

2.1.1 プロトコルの必要性

ネットワークを使って,コンピューター同士が通信を行うときの約束事をプロトコルと言 う.コンピューター同士,融通の利かない機械同士が通信を行うため,双方がプロトコル を守らないと,通信ができなくなってしまう.別の言い方をすれば,プロトコルさえ守っ ていれば,良いと言うことになる.

一般に,プロトコルはプログラムあるいはネットワークのインターフェースで決められる. 例えば,2つのプログラムが通信する場合,それぞれの送信/受信データに約束事が決めら れる.二つのプログラムのインターフェースは,それぞれのデータが担う.

プロトコルをしっかり決めると,入り口と出口を規約通りに作ればよい.中身は設計者の 自由にできる.また,他のプログラムのことに関心を払う必要もない.

2.1.2 アプリケーションとプロトコル

コンピューターを用いて通信を行う場合,普通2つのプログラムを動作せせる.情報を要 求する方をクライアント(プログラム),情報を提供する側をサーバー(プログラム)と言う. これらの2種類のプログラムが相互に通信を行い,情報の受け渡しを行う.

2つのプログラムが協働して情報の伝達を行うことは,人間同士の会話による情報伝達と 似ている.人間同士での会話では,双方が理解できる同じ言語を使って情報伝達を行うの と同様に,コンピューターのプログラム--サーバーとクライアント--も同じ言語で話さ なくてはならない.

その言語の仕様みたいなものが,アプリケーションプロトコルである.インターネットで サービスを行うサーバープログラムでは,このプロトコルがきちんと決められている.例 えば,WEBの文書はW3Cと言う組織が決めている.クライアント,およびサーバーのプログ ラムを開発する場合,このプロトコルを守らなくてはならない.守らないプログラムは, どんなに良くてもだれも使わないだろう.

2.1.3 プロトコルと階層

さまざまな方法でインターネットに接続して,通信することができる.分かりやすい例だ と,いろいろなケーブルを使うことができる.多くの場合ツイストペアが使われているが, 光ファイバーや同軸ケーブルなども使える.ケーブルばかりではなく,通信の機器にはハ ブやルーターなども使っている.ハードウェアーのみならず,ソフトウェアーもいろいろ ある.

これら,さまざまな方法で通信可能な場合,それぞれに合わせて,コンピューター間の接 続方法を決めていては,手間;コストがかかる.たとえば,5種類のケーブル,3種類の通 信機器,8種類のソフトウェアーがあると,合計 $ 5\times3\times8=120$種類の接続の組み 合わせがある.これでは大変である.また,新しい技術が開発される都度,新たに仕組み を考えなくてはならない.

ネットワークの機能をモジュール化することにより,これらの問題が解決できる.それぞ れの階層--ここの例ではケーブル,通信機器,ソフトウェアー--で入り口と出口の規格 を決める.要するに,入り口と出口のみを決め,それを守ればどのような機器,ソフトウェ アーも使えるようにするのである.コンピューターの通信では,通信の入出力は通信のプ ロトコルとして決められている.

ネットワークの機能のモジュール化では,OSI参照モデルがよく引き合いに出される.そ れを表1に示す.ネットワーク必要なものがモジュール化されて いることが分かる.上位と下位の層(モジュール)では,データの受けた渡し方法をきちん と決める.

このOSI参照モデルは,各種の試験によく出題される.「せっかくのプレゼントりがたくない」と覚えるとか [].


表 1: OSI参照モデル.役割は,主に文献 [3]から引用.
層(レイヤ) 役割
第7層 アプリケーション層 プログラムのAPI.アプリケーション間のデータのや りとりを行う.
第6層 プレゼンテーション層 データ翻訳/変換.プロセスで扱うデータの型や符 号を,共通のものに変換あるいは逆変換する.
第5層 セッション層 通信プログラム同士がデータの送受信を行なうための仮想 的な経路(コネクション)の確立や解放を行なう.
第4層 トランスポート層 相手まで確実に効率よくデータを届けるためのデータ 圧縮や誤り訂正,再送制御などを行なう.
第3層 ネットワーク層 相手までデータを届けるための通信経路の選択や,通信 経路内のアドレスの管理を行なう.
第2層 データ層 通信相手との物理的な通信路を確保し,通信路を流れるデータ のエラー検出などを行なう.
第1層 物理層 データを通信回線に送出するための電気的な変換や機械的な作業 を受け持つ.ピンの形状やケーブルの特性,LANカードなども第1層で定められる.

2.2 通信の秘密と相手の認証

途中でデータが盗まれないようにするためには,暗号が必要である.また,本人を証明す るために,デジタル署名が必要である.

2.2.1 共通鍵暗号と公開鍵暗号

共通鍵暗号(common key cryptosystem)方式は,送信者と受信者が同じ鍵を使う方式であ る.送信者が平文を共通鍵で暗号化し,受信者は同じ鍵で復号する.かなり複雑な共通鍵 が使われたりしたが,見破られる可能性が高い.

1975年までの暗号は全て,この共通鍵暗号方式であった.ドイツの有名なエニグマもこの 共通鍵方式であった.ただ,複雑かつ頻繁に鍵を変えていたので,なかなか暗号解読がで きなかったが,第二次大戦末期には解読していたようである.

図 1: 秘密鍵暗号方式.暗号化と復号化には同じ秘密鍵を用いる.
\includegraphics[keepaspectratio, scale=0.7]{figure/common_key_encryption_system.eps}

暗号化と復号で異なる鍵を使う方法が公開鍵暗号(public key encryption system)である. メッセージを受け取りたい方は,公開鍵を公開する.この鍵は誰でも使うことができる. メッセージ(平文)を送る側は,この公開鍵で暗号化して,暗号化されたメッセージを送る. この暗号化されたメッセージは公開鍵では復号することができない.唯一,復号ができるの は受信者が持っている秘密鍵だけである.

このようなことが技術的に可能なのか?--という疑問が湧くだろう.大きな数の因数分解 が困難であることを利用したRSA暗号がこの公開鍵方式となっている.詳細は,省略.興 味のある者は調べよ.

図 2: 公開鍵暗号方式.受信者の公開鍵をもしいて暗号化し,受信者の秘密鍵を用 いて複合化する.
\includegraphics[keepaspectratio, scale=0.7]{figure/Public_key_encryption_system.eps}

2.2.2 デジタル署名

現在,デジタル化されたデータは世界中のコンピューターを伝って,伝達が行われる.そ んため,途中で容易にデータの改ざんができる.そもそも,デジタルデータは容易に改ざ んできるものである.

デジタル署名では,通信の途中でデータの改ざんが分かる.デジタル署名は,次のように する.

2.2.2.1 送信者

本人が確かに書いたと証拠を示して送信する必要がある.

2.2.2.2 受信者

途中で改ざんが行われていないことを確認しなくてはならない.

図 3: デジタル署名.途中でデータが改ざんされると,電子指紋が変化する.
\includegraphics[keepaspectratio, scale=0.7]{figure/digital_signature.eps}

ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年11月8日


no counter