暗号

共通科目情報処理(講義)、社会学類対象、1997年06月06日

                                       電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/ipe/shakai-kougi-1997//1997-06-06
あるいは、次のページから手繰っていくこともできます。
http://www.hlla.is.tsukuba.ac.jp/~yas/ipe/
http://www.hlla.is.tsukuba.ac.jp/~yas/index-j.html
http://www.ipe.tsukuba.ac.jp/

■練習問題(3) 暗号

■復習

◆URL -- 2つの木

よく使われる URL (http) の一般形式
http://hostname/pathname
2つの木が含まれている。
hostname
DNSに登録されたホスト名。電子メールのアドレスの@以下の部分と同じ。
pathname ファイル名。普通、サーバでのファイル名。
最初のhttp は、どんな「方法」で資源をアクセスするかを示してい ます。httpを含めて、次のようなものがよく使われます。
http
Hypertext Transfer Protocol
ftp
File Transfer protocol
gopher
The Gopher protocol
mailto
Electronic mail address
news
Usenet news
nntp
Usenet news for local NNTP access only
telnet , rlogin and tn3270
Reference to interactive sessions
wais
Wide Area Information Servers
file
Local file access 参考

■クライアント・サーバ・モデル

プロセス間通信は、本来自由に行うことができる。どのプロセスも自由にメッ セージを送信する権利があります。プロセス間通信におけるクライアント・サー バ・モデルは、本来対称的なプロセスを最初にメッセージを送る方(クライア ント・プロセス)と受ける方(サーバ・プロセス)に分類することで、プロセ ス間通信を構造化し、わかりやすくするものです。TCP/IPの通信路開設時にお けるクライアントとサーバの役割は、このプロセス間通信におけるクライアン ト・サーバ・モデルの1つの例になっていまします。

プロセス間通信におけるクライアント・サーバ・モデルにおける意味の他に、 クライアントとサーバという言葉は、サービスを受けるプロセスとサービスを 提供するプロセスの意味で使われることがあります。インターネットにおける プロセス間通信では、多くの場合、サービスの授受の関係におけるクライアン トとサーバと、プロセス間通信におけるクライアントとサーバが一致している (稀に一致していないこともあるので、注意しなさい)。

なぜ、クライアント・サーバ・モデルか。 人間は、話を聞きながら話をしながらできるのに。

■防火壁

外からの侵入を防ぐための、いくつかの仕組みの集合。
防火壁(firewall)
フィルタ=ゲートウェー=フィルタから構成される。
フィルタ(スクリーン)
特定のトラフィックを遮断する。
ゲートウェー
1台または複数台のコンピュータで構成され、フィルタの効果を補う 中継サービスを提供する。
ゲートウェーが存在するネットワークは、非武装地帯 DMZ (demilitarized zone)とも呼ばれる。

■キャッシュ

高速化のために、データのコピーを持つ。 空間を犠牲にして時間を得する。 速度の違いを埋める。

■暗号

キーワード

暗号が使われてきたグループの人々4つ

◆暗号に関する基本用語と安全性

暗号とは、情報の意味が当事者以外にはわからないように情報を変 換することである。ここで、元の情報を平文、変換された情報を暗 号文という。平文、暗号文といっても、文字だけでなく、画像や音 声などコンピュータが扱えるあらゆるデータが想定されている。

平文を暗号文に変換することを暗号化、逆に暗号文を平文にもどす ことを復号化という。暗号化と復号化には、それぞれ暗号化鍵、復 号化鍵と呼ばれるパラメタが必要である。当事者以外の第三者が、 暗号文を元にもどすこと、あるいは、復号化鍵を得ることを解読と いう。

暗号の方法は、大きく対称暗号系(慣用暗号系)と、公開鍵暗号系 (非対称暗号系)に分類される。対称暗号系では、暗号化鍵と復号 化鍵の一方から、他方を容易に求めることができる。しばしば暗号 化鍵と復号化鍵は、同じものを用いる。公開鍵暗号系では、暗号化 鍵から復号化鍵を容易に類推できない。対称暗号系の例としては、 DES、公開鍵暗号系の例としては、RSAがあげられる。

暗号の安全性は、鍵の安全性によっている。暗号化のプログラムを 作成した人でも、鍵を知らなければ平文を得ることができない。ま た、鍵の管理が非常に重要となることを意味している。人間を相手 に限り、100%安全な暗号を行うことは不可能である。また、 100%に近くなると急速にコストが上昇する。

暗号の安全は、解読にかかるコストを大きくすることで、解読され た平文から得られる利益を相対的に小さくすることに依存している。 暗号の安全にとって、最近のコンピュータの高速化と低下価格下は、 1つの脅威となっている。たとえば、現在のコンピュータで解読す るのに100年を要するようなものでも、1000台規模の並列コ ンピュータでは、数ヵ月で解読できることを意味する。

----


        暗号化鍵           復号化鍵
           |                  |
           v                  v 
        +------+  暗号文  +------+
平文 -> |暗号化| -------> |復号化| -> 平文
        +------+    |     +------+
                    |
                 +----+
                 |解読|
                 +----+
                   |鍵、平文
                   v

              図 暗号系

◆分類

暗号アルゴリズム

◆Caesar暗号

Caesar暗号は、置換暗号(substitution cipher)の1つ。置換暗号では、各 文字あるいは文字群が、それぞれ別の文字あるいは文字群に置換される。

Caesar暗号は、知れている最後の暗号である。 平文アルファベットをN文字ずらした暗号文アルファベットに変える。

N=2 の時の対応表

abcdefghijklmnopqrstuvwxyz
CDEFGHIJKLMNOPQRSTUVWXYZAB
暗号の説明では、平文を小文字で、暗号文を大文字で書く習慣がある。 カルタゴ人以来騙された人はいない。

N=13 で、大文字小文字を保存する方法を、rot13 暗号という。rot13 は、電 子メールやネットワーク・ニュースで「ネタばらし」の部分を書く時に使われ る。

◆コード化

暗号の文脈でコード化とは、可変長の言語単位(単語)などを符号化すること を意味する。普通の暗号では、文字単位など固定長を符号化http://mech00.mech.ibaraki.ac.jp/~kondo/kaken/k96mac/する。

◆スーパー暗号化

コード化されたメッセージを暗号化する。 うまくつかえば、解読が難しくなる。

第2次世界大戦中、ローマ字でかかれた日本語が解読された。解読されたとい う事実がシカゴの新聞に出たのに、日本政府はそれを信用せず、終戦までその コードを使い続けた。

◆排他的論理和

排他的論理和(exclusive or)は、暗号でよくつかわれる演算。 記号は、+に○。

真理値表

------------------------
入力1	入力2	出力
------------------------
0	0	0
1	0	1
0	1	1
1	1	0
------------------------

AND、OR、NOTで表わすと次の通り

OR(AND(入力1,NOT(入力2)),AND(NOT(入力1),入力2))

次のような性質がある。

◆バーナム暗号

同期式ストリーム暗号。暗号化は、(真性)乱数と平文をビットごとの排他的 論理和をとる。復号化は、暗号文と乱数を排他的論理和をとる。完全な暗号。 メッセージ長と等しい長さの乱数を、暗号化側と復号化側で持つ必要がある。

◆乱数(random numbers)

数の集合から、無作為抽出で抜き出された数。

真性乱数。ビット列にすると、0と1の発生確率がそれぞれ1/2で、各ビッ トは他の部分と独立なiid(independent and identically distributed) である。

物理乱数。量子力学の効果を増幅してディジタル化したもの。 平滑化して0,1のバランスをとれば、真性乱数になる。

疑似乱数(pseudo random number)。種(seed)と呼ばれる入力ビットパタンを基 に計算された、種よりも長いランダムに見えるビット・パタン。決定的 (deterministic)アルゴリズムから生成されるので、種が決まれば出力乱数 は一意に決まる。暗号に使う時には、種を秘密にする。

疑似乱数には、髭と周期がある。

◆バーナム暗号法

Caesar暗号では、定数だけずらしていた。バーナム暗号(Vernam cipher)では、 定数ではなく、乱数ストリーム(無限の長さの乱数表、実際に使うのはメッセー ジの長さだけ)を使い、文字ごとに乱数の数だけだけずらす。

例:

乱数表: 0 18 19 22 22  7  9  4 14  3
 平文: h  e  l  l  o  w  o  r  l  d
        8  5 12 12 15 23 15 18 12  4
暗号文: H  W  E  H  K  D  X  V  Z  G
   : 8 23  5  8 11  4 24 22 26  7
乱数表そのものや、大きな乱数表の中でどこから使い始めるかを鍵にすること ができる。

真性乱数を使うと、解読する方法はない。しかし、使うのが大変。送信側と受 信側で同じ真性乱数を作るのが大変。

乱数表を記憶する変わりに、疑似乱数を使う方法がある。使う疑似乱数の性質 が悪いと解読される。

実際には、文字をずらすのではなく、「排他的論理和」が使われることが多い。

◆転置暗号

Caesar暗号やバーナム暗号では、平文の文字の順序を変えずに、文字を置き換 える。これを置換暗号という。これにたいして、転置暗号(transposition cipher)では、平文の文字の順序を入れ替えるが、文字の置き換えは行わない。 (下の例では、大文字小文字が変わっているが、これは暗号化の説明のために 変えて書いているだけである。)

次は、転置暗号の1つ、コラム転置の例である。キーは、同じ文字を含まない 1個の単語や熟語である。このキーでコラムに番号付けをする。たとえばコラ ム1は、アルファベットで先頭に近い文字の下のコラムとなる。

MEGABUCK
--------
74512836
--------
pleasetr
ansferon
emillion
dollarst
omyswiss
bankacco
untsixtw
otwoabcd
 平文: pleasetransferonemilliondollarstomyswissbankaccountsixtwotwo
暗号文: AFLLSKSOSELAWAIATOOSSCTCLNMOMANTESILYNTWRNNTSOWDPAEDOBUOERIRICXB

◆DES

DES(Data Encryption Standard)は、アメリカ商務省標準局 (NBS, National Bureau of Standard, 現在のNIST, National Institute of Standrds and Technology)が1977年に定めた暗 号標準である。IBM社による提案が元になっている。DESは、 アメリカ政府内で、コンピュータ・データのうち、非機密だが取扱 い注意(unclassified but sensitive)のデータを暗号化するため の標準である。DESを一般の商用にも使うことを推奨している。 たとえば、UNIXのパスワード・ファイルは、DESにより暗号 化されている。

DESは、対称暗号系(慣用暗号系)の1つであり、暗号化と復号 化に同一の鍵(56ビット)を用いる。DESは、転時暗号の一種 である。転時暗号では、平文の文字の順序(コンピュータでは、ビッ ト)を入れ替えるものである。DESでは、64ビットの平文につ いて、鍵をもとにビットの入れ替えを16段繰り返す。

アメリカでは、DESを取り扱うチップ(IC)が多く利用されて いる。アメリカは、暗号に関する製品がソフトウェアも含めて輸出 禁止になっており、DESチップもその制約を受けている。DES 暗号化を行うソフトウェアについては、アメリカ以外で開発された ものが広くインターネット上で配布されている。

DESが作られる時、コンピュータ科学者は、56ビットのキーの長さでは短 すぎると主張した。IBMの提案は、128ビットだった。安全保証局の要求 で、56ビットに減らされた。1988年にアメリカ連邦政府は、1988年 にDESの効果を保証しないと決定した。

◆公開鍵暗号系とRSA暗号

公開鍵暗号系では2つの異なる鍵を用いる。これらの鍵は、互いに 相手の逆関数になっている。ある鍵で暗号化した平文は、もう1つ の鍵でのみ復号化することができる。2つの鍵のうちの1つを、暗 号化鍵のとして、公開しておく(公開鍵)。もう1つの方は、復号 化鍵として情報の受け手の手元にのみ保存しておく(秘密鍵)。

情報の送り手は、公開されている暗号化鍵を使って暗号文を作り、 それを情報の受け手に送る。情報の受け手は、受け取った暗号文を、 秘密にしている復号化鍵によって復号化し、元の平文を得る。ここ で、公開されている暗号化鍵から復号化鍵を予測することは難しい。 さらに、ある平文を公開されている暗号化鍵を使って暗号化してみ たところで、復号化鍵を得ることは難しい。

公開鍵暗号系の利点は、鍵を管理する手間が掛からない点にある。 DESのような対称暗号系では、情報を交換する間で鍵を安全に共 有しなければならない。しかも、通信相手ごとに鍵を変える必要が ある。一方、公開鍵の場合、受け手ごとに、1つの暗号化鍵を公開 するだけでよい。鍵を管理する手間が不要である。今までに通信を したことがない人からでも、暗号化されたメッセージを受け取るこ とが可能である。

RSA暗号は、Rivest, Shamir, Adleman の3人によって開発され た公開鍵暗号系である。RSA暗号の安全性は、大きな数を素因数 分解することの難しさに基づく。北米では、RSAは、2000年 まで特許が有効である。RSAの技術は、Netscape社のWorld-Wide Web ブラウザでも利用されている。

公開鍵暗号系は、暗号だけでなく認証やディジタル署名にも利用す ることが可能である。


↑[もどる] ←[5月30日] ・[6月6日] →[6月13日] [練習問題(2)] [練習問題(3)]
Last updated: 1997/06/13 00:54:32
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>