暗号技術と電子貨幣

Class_Page_Header(http://www.hlla.is.tsukuba.ac.jp/~yas/classes/gen/it-1998-01-26/)

■練習問題(3) 暗号

■暗号

  1. 暗号の基礎、公開鍵暗号
  2. 暗号の応用、機密保持、認証、ディジタル署名
  3. クレジットカード番号をインターネット経由で送る
  4. 電子貨幣、ネットワーク型、

■暗号

キーワード

暗号が使われてきたグループの人々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 は、電 子メールやネットワーク・ニュースで「ネタばらし」の部分を書く時に使われ る。

◆コード化

暗号の文脈でコード化とは、可変長の言語単位(単語)などを符号化すること を意味する。普通の暗号では、文字単位など固定長を符号化する。

◆スーパー暗号化

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

第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 ブラウザでも利用されている。

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

◆クリッパー・チップ

クリッパー・チップ(Clipper chip)とは、アメリカ政府がスポン サーとなり開発されている暗号化を行うためのチップ(IC)であ る。これは、1987年から開始された Capstone と呼ばれる長期プロ ジェクトの成果として開発された。チップの内部では、Skipjackと 呼ばれるアルゴリズムが使われている。Skipjack は、80ビットの 鍵を用いる対称暗号系であり、64ビットのブロックについて32 回の転字を行っていることが知られているが、その詳細なアルゴリ ズムは公開されていない。

アメリカでは、このチップが大きな論争の的になっている。まず、 アルゴリズムが公開されていないため、解読に対する安全性の検証 がなされていないという批判がある。アルゴリズムの設計者により 容易に解読できるように設計されているのではないかという疑いも 残っている。ハードウェアしか提供されないという問題もある。そ して、最大の論点は、escrowed key と呼ばれる鍵の存在である。

暗号技術の発達により、麻薬取引などの違法行為を行う側が暗号技 術を用いるようになると、それを取り締まる側の捜査が困難になる と予想される。クリッパー・チップは、そのような捜査とプライバ シーのバランスを取ることを目的としている。その基本的な考え方 は、escrowed エージェントと呼ばれる第三者機関に鍵を保存して おくことである。通常の電話やFaxの通信は、クリッパー・チッ プにより暗号化することで、プライバシーを高める。同時に、捜査 当局は、裁判所の許可を得て、その第三者機関に対して暗号化の鍵 の提出させることができるようにする。

こうした政府の動きに対して、民間で草の根的にプライバシーを守 るための動きも起きている。たとえば、PGP(Pretty Good Privacy)と呼ばれる一連の暗号に関するソフトウェアを発表して いるグループがある。また、公開鍵を用いることで捜査とプライバ シーのバランスをとる研究も発表されている。

■認証

認証とは、情報の正当性や完全性を確保する技術である。利用者認 証とは、アクセスしてきた人が正当か否かを判定する機能である。 これを行うためには、しばしばパスワードや暗唱番号が用いられる。 利用者認証のために、公開鍵暗号系を用いることができる。銀行の 口座を例に、これを説明する。

  1. 口座を開く時に、顧客は、公開鍵と秘密鍵を生成し、公開鍵を銀行に届 け、秘密鍵を自分で保持する。
  2. 顧客が通信回線を通じて銀行にアクセスしてきた時、銀行は乱数を1つ 生成し、顧客の公開鍵でそれを暗号化し、顧客に送り返す。
  3. 顧客は、送られてきた暗号化された乱数を、保持している秘密鍵で復号 化し、銀行に送り返す。
  4. 銀行は、顧客から返された乱数が正しければ、正当な顧客であると判定 する。
次回の呼び出しでは、別の乱数を用いることで、通信を記録している傍受者に も対応することができる。

■ディジタル署名

ディジタル署名とは、通常の署名とおなじく、送られてきたメッセージが送信 者本人のものであることを識別、確認することである。メッセージ認証とも呼 ばれる。

ディジタル署名では、次のようなシステムが必要である。

ディジタル署名もまた、公開鍵暗号系を使って行うことができる。簡単な方法 としては、メッセージの送信者が送りたいメッセージの平文を、秘密鍵を使っ て暗号化する。メッセージの受信者は、送信者の公開鍵を使ってそれを復号化 する。きちんと復号化できれば、確かにそのメッセージがその送信者から送ら れてきたものであると判定することができる。

メッセージ全体を暗号化する代わりに、メッセージを平文で送り、それにメッ セージのある種のチェックサム(一方向関数、ハッシュ関数)を、秘密鍵で暗 号化したものを送る方法もある。

これらの認証は、公開鍵暗号系ではなく、対称暗号系を用いても可能である。 ただし、この場合、鍵を管理する信用できる管理センターが必要となる。

■電子現金(electric cash)

◆電子現金の性質

お金は、情報。ただし、コピーが禁止されている。

電子現金(electric cash)とは、現金が持っている有用な性質を ディジタル情報を使って実現しようとするものである。ここで、電 子現金で実現しようしている現金が持っている性質としては、次の 2つがあげられる。

これに加えてさらに、実際の現金にはないが、インターネット上で の買物などにも利用することを考え、次のような性質が重要となる。

電子現金の目標は、小額の現金にについても遠隔地への支払コストを0に近づ けることである。(クレジット・カードは、小額には不向き。)

現在実験段階にある電子現金は、ICカード型とネットワーク型に 分類される。

ICカード==コンピュータ。

ICカード型の電子現金は、ICカードが持っている耐タンパー性 (内部の情報が不正に読み書きできない性質)を利用して、ネット ワークが使えない環境にあっても利用可能である。この方式により、 1995年7月から、イギリスの National WestMinster 銀行と Midland 銀行が中心になって、Mondex と呼ばれるシステムの実験 が行われている。

ネットワーク型の電子現金は、コンピュータ・ネットワークを利用 することで、大規模な設備を用いることなく利用可能である。この 方式により、94年10月よりオランダの DigiCash 社が ecash と呼 ばれる電子現金の実験を行っている。最近では、米国の Mark Twain 銀行や、フィンランドの Marita 銀行も実験を開始した。

現在、ネットワーク型の電子現金をネットワークが使えないような 環境(オフライン)でも利用するための研究や電子現金を分割して 利用するための研究が行われている。

◆ネットワーク型電子現金の仕組み

ネットワーク型の電子現金は、公開鍵暗号の技術、ディジタル署名 の技術、および、一方向関数(結果から引数の値が推察できないよ うな関数)の技術を用いて実現されている。ここで最も重要な技術 が、ディジタル署名の中でも、「ブラインド署名」と呼ばれている 技術である。普通のディジタル署名では、署名する人が署名される メッセージの内容を目にすることになる。これに対して、ブライン ド署名では、メッセージの内容を見ることなく署名するものである。

客、銀行、店の間の電子現金の引き出しと支払の手順の概要を以下 に示す。

  1. 客が、10の140乗(140桁,480ビットくらい)色ある色紙の中から1色を選 ぶ。複写用のカーボン紙と共に封筒に入れる。(乱数と銀行の公開鍵を使う。)
  2. 客は、銀行に 1.の封筒とIDカード(預金通帳)を銀行に渡す。
  3. 銀行は、IDカードで客を認証して、口座から指定された額面を引き落 とす。そして、1.の封筒の上から銀行の署名を施す。銀行は、封筒の中の色紙 の色を知らない。(ブラインド署名)
  4. 客は、封筒を開封(1.の乱数を使う)して、銀行の署名を確かめる。封 筒の中味が、電子現金となる。
  5. 客は、4. の電子現金を店で使う。
  6. 店は、電子現金の2重使用の有無を銀行に確認する。
  7. 銀行は、電子現金にある銀行の署名を確かめる。また、データベースを 調べて、過去に電子現金が使われていないことを確かめる。店の口座に、電子 現金を預金する。
  8. 店は、預金を確認すると、商品を客に渡す。 ここで、銀行は、店から問い合わされた電子紙幣より元の客を知る ことはできない(ブラインド署名)。この方法の安全性は、公開鍵 暗号系を使ったディジタル署名に依存している。