セキュリティと暗号の仕組み

共通科目情報処理(講義)、体育専門学群対象、2002年02月28日

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

このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/ipe/taiiku-kougi-2001/2002-02-28
あるいは、次のページから手繰っていくこともできます。
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/~yshinjo/

■復習

■今日の重要な話

教科書249ページ。

■今日の重要な話

セキュリティ 暗号

■最終発表

■セキュリティ

セキュリティとは、安全や機密を保持すること。

■サーバ上のファイルのセキュリティ

ファイルには、内容と属性がある。

ファイルの属性

サーバにファイルとして保存されている電子メールは、一般には自分でしか読 むことができない。ただし、サーバの管理者ならば、見ようと思えば見える状 態になっている。バックアップ(器機の故障に備えてコピーを作る)のため。

■インターネットのセキュリティ

インターネットの危険性

インターネットでの通信は、暗号化されていない。 (1つひとつのデータグラムは、はがきと同じ。) 流れるデータを見れば簡単に内容を知ることができる。

インターネットで通信する時には、通信相手に IP アドレスが渡されている。 (電子メールを送る時、WWWでページを見る時など)

電話でいうと、発信者番号(caller ID)が相手に伝わっている状態である。

IP アドレスから、コンピュータの名前(ドメイン名)を調べることができる (逆引)。

普通は、利用者の名前までは、わからない。しかし、ユーザ名とパスワードを 打った時にはログと付き合わせると、利用者が特定可能である場合が多い。

◆ログ

コンピュータの内部では、様々な操作のログ(log、航海日誌)が取られている。

◆cookie

cookieは、コンピュータ・サイエンスの専門用語。

協調して動作しているプログラムの間で、ある一連の作業を識別するための数 を意味する。

WWW(World Wide Web)では、1回のデータ転送ごとに通信路が切断される ので、通常はWWWのブラウザ(クライアント)とWWWサーバの間では、途 中経過を保持することができない。

途中経過を保存したい時:

WWWで途中経過を保存するためには、cookie が使われる。

サーバは、その情報を利用して、適切なページ(たとえば前回最後に訪れたペー ジ)を表示させるようにすることができる。

◆cookieとプライバシ

現在の cookie の実現では、利用者のプライバシーを犯す危険性が高いという 問題が指摘されている。

普通のWWWサーバでは、要求を送ってきたコンピュータのIPアドレスを記 録しているので、コンピュータ単位でのアクセス状況を記録することはできる が、個人を特定することはできない。

クッキーを利用することにより、コンピュータではなくどの個人がアクセスし てきたかを記録することができる。

クッキーから電子メールのアドレスや氏名まで調べることはできない。 しかし、インターネットをサーフしている間にどこかでそれを打ち込んだが最 後、クッキーと電子メール・アドレスや氏名との対応が記録されてしまう危険 性がある。

参考 Netscape社によるWWWにおけるクッキー実現の案
http://www.netscape.com/newsref/std/cookie_spec.html

◆身を守る方法

個人で対応するには、まずパスワードが大事になる。

◆防火壁(ファイアウォール(firewall))

防火壁とは、外部のネットワークと内部のネットワークの間に設置し、内部の ネットワークのセキュリティを高めるための仕組み。

インターネットの仕組みの基本:どのコンピュータとコンピュータも通信できる。

防火壁では、そのような本来の仕組みに制限を設け、特定のコンピュータとし か通信できないようにしたり、特定のサービスしかつかえないようにする。

攻撃の対象となるコンピュータの数を減らし、集中的に侵入対策を施すことで、 セキュリティを高める。

防火壁構築は、様々な技術の集合:

パケット・フィルタリング
TCP/IP の特定のサービスを特定の方向について遮断する。
例:ファイアウォールの内側から外側への電子メールの送信は許すが、逆方向 は許さない。
プライベート・アドレスの利用
壁の内側で、プライベート・アドレスと呼ばれる、インターネット上で は決して利用されないことが保証されているIPアドレスを用いる。プライベー ト・アドレスを使うと、インターネットの外から直接攻撃されることはない。 壁の外側をアクセスする時に、「壁の上」で、外でも通じるIPアドレスに付け 変える。
壁の上:壁の内側のコンピュータも壁の外側ののコンピュータも、両方にアクセ スできる場所。

2000年5月1日に、筑波大学の入り口でパケット・フィルタを行うようになった。

壁を越える時には、壁の上で WWW Proxy を動かすことがある。

■コンピュータ・ウイルス

コンピュータ・ウイルスは、プログラムの一種。 トロイの木馬(Trojan Horse)は、他のプログラムに寄生しない。 利用者を騙して実行されるのを待つ。

ワーム(worm)は、他のプログラムに寄生しない。

ウイルスといっているものの中には、ワームやトロイの木馬も含まれる。

ウイルスの潜んでいる場所 注意すべきこと:予防が大事。

■暗号

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

暗号技術を甘く見たグループ

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

暗号とは、情報の意味が当事者以外にはわからないように情報を変 換することである。

図? 暗号の考え方

図? 暗号の考え方

平文
元の情報
暗号文
変換された情報
平文、暗号文といっても、文字だけでなく、画像や音声などコンピュータが扱 えるあらゆるデータが想定されている。

暗号化
平文を暗号文に変換すること。暗号化鍵が必要。
復号化
暗号文を平文にもどすこと。復号化鍵が必要。
暗号化や複合化に必要な(短い)データ。
解読 当事者以外の第三者が、暗号文を元にもどすこと、あるいは、復号化鍵を得る こと。
暗号化や複合化の方法(アルゴリズム)は、何種類もある。

◆鍵を使うことの重要性

問:なぜ鍵が必要な暗号化の手法を使うのか?  鍵が不要な暗号化の手法の方が便利ではないのか?

答え:

暗号化の方法が秘密になっていると、一見、より強そうにみえる。しかし、そ の暗号が、強いのか弱いのか調べる方法がない

◆長い鍵を使うことの重要性

暗号の安全性は、鍵の安全性によっている。

◆暗号の経済学

暗号の安全は、解読にかかるコストを大きくすることで、解読され た平文から得られる利益を相対的に小さくすることに依存している。

鍵を長くするだけで、安全性が指数関数的に高くなる。 鍵を1ビット長くすると、解読時間が2倍になる。 (「鍵の長さを2倍にすると解読時間が2倍になる」は、誤り)。

図? 指数関数

図? 指数関数

図? 指数関数

図? 指数関数

パスワードは、コンピュータの中では、暗号化の鍵として使われる。 長いパスワードは、破られにくい。1文字(大文字小文字数字記号)増やすと、 総当たりで解読に要する時間が、50倍から100倍近くかかるようになる。

暗号の安全にとって、最近のコンピュータの高速化と低下価格下は、 1つの脅威となっている。

SETI (the Search for Extraterrestrial Intelligence)

◆共通鍵暗号系と公開鍵暗号系

暗号の方法は、大きく2つに分類される

共通鍵暗号系(対称暗号系)
暗号化鍵と復号化鍵が同じ(または片方から片方が簡単に計算できる)。
公開鍵暗号系(非対称暗号系)
暗号化鍵から復号化鍵を容易に類推できない。

◆Caesar暗号

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

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

N=2 の時の対応表

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

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

◆乱数(random numbers)

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

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

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

疑似乱数(pseudo random number)。種(seed)と呼ばれる入力ビットパタンを基 に計算された、種よりも長いランダムに見えるビット・パタン。種が決まれば 出力乱数は一意に決まる。

◆乱数を使った暗号

Caesar暗号では、定数だけずらしていた。定数ではなく、文字の長さの乱数の 列を使い、文字ごとに乱数の数だけだけずらす。

例:

乱数表: 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
乱数表そのものや、大きな乱数表の中でどこから使い始めるかを鍵にすること ができる。

真性乱数を使うと、解読する方法は数学的に存在しないことが証明されている。

しかし、真性乱数を使うことはコストが大きい。 送信側と受信側で同じ真性乱数を作るのが大変である。

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

実際には、文字をずらすのではなく、足し算、引き算や、排他的論理和と呼ば れる計算が使われることが多い。

◆公開鍵暗号系

公開鍵暗号系(非対称暗号系)では2つの異なる鍵を用いる。 便宜上、この2つを公開鍵と秘密鍵と呼ぶ。

これらの鍵は、互いに相手の逆関数になっている。

図? 公開鍵暗号を使った暗号通信の手順

図? 公開鍵暗号を使った暗号通信の手順

  1. 受手は、公開鍵と秘密鍵の組を作り、公開鍵を誰でも読めるようにする。
  2. 送手は、受手の公開鍵を暗号化鍵として用いて暗号文を作り、送る。
  3. 送手は、受け取った暗号文を、自分の秘密鍵を復号化鍵として用いて復号化し、 元の平文を得る。

ここで、公開鍵から秘密鍵を計算することは難しい。ある平文を公開鍵で暗号 化してみたところで、秘密鍵を得ることは難しい。

公開鍵暗号の利点は、鍵を管理する手間が掛らないこと。

共通鍵暗号
情報を交換する間で鍵を安全に共有しなければならない。しかも、通信 相手ごとに鍵を変える必要がある。
公開鍵暗号
受手ごとに、1つの暗号化鍵を公開するだけでよい。今までに通信をしたこと がない人からでも、暗号化されたメッセージを受け取ることが可能である。
公開鍵暗号系は、暗号通信だけでなくディジタル署名や利用者認証、電子現金 にも応用される。

◆認証

認証とは、情報の正当性や完全性を確保する技術である。

利用者認証
アクセスしてきた人が正当か否かを判定する。 しばしばパスワードや暗唱番号が用いられる。
ディジタル署名(メッセージ認証、電子署名)
通常の署名とおなじく、送られてきたメッセージが送信者本人のもので あることを識別、確認すること。

◆認証の例

◆ディジタル署名

ディジタル署名では、通常の署名と同様に、次のような性質が必要である。

ディジタル・データでは完全なコピーが簡単に作れるので、紙上の署名や捺印 よりも難しい。

公開鍵暗号系を使ってディジタル署名を行うことができる。

図? 公開鍵暗号を使ったディジタル署名の手順

図? 公開鍵暗号を使ったディジタル署名の手順

  1. (受手ではなく)送手は、公開鍵と秘密鍵の組を作り、公開鍵を誰でも 読めるようにする。
  2. 送手は、自分の秘密鍵を暗号化鍵として用いて暗号文を作り、送る。
  3. 送手は、受け取った暗号文を、送手の秘密鍵を復号化鍵として用いて復 号化し、元の平文を得る。この時、きちんと平文が得られた場合、その平文は、 その公開鍵の持ち主から送られてきたことがわかる。

メッセージ全体を暗号化する代わりに、メッセージを平文で送り、それにメッ セージを一方向関数(ハッシュ関数)と呼ばれる方法で計算した結果だけを、 秘密鍵で暗号化したものを送る方法もある。一方向関数では、計算結果から元 の値(メッセージ)を計算することが難しい。

ディジタル署名や利用者認証は、公開鍵暗号系ではなく、共通鍵暗号系を用い ても可能である。ただし、この場合、鍵を管理する信用できる管理センターが 必要となる。

◆公開鍵暗号を使った利用者認証

利用者認証のために、公開鍵暗号系を用いることができる。銀行の口座を例に、 これを説明する。

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

単なる暗証番号の場合、通信を傍受されたら終り。

■電子現金

電子現金(electronic cash、電子マネー)とは、現金が持っている有用な性 質をディジタル情報を使って実現しようとするもの。

■電子透かしと電子あぶりだし

電子透かしは、暗号化の技術を使って著作権の保護するための技術。 電子あぶりだしは、機密情報がそこに含まれていることまで見えなくする技術。

■通信路の暗号化

◆SSH(Secure Shell)

暗号化された通信路で、次のような機能を提供する。

◆SSHのトンネリング(port forwarding)

暗号化された通信路の中に一般のアプリケーションの通信を通す。

よくつかわれるもの。

◆SSL(Security Session Layer)

Netscape 社によって開発された。主に、WWW (World Widw Web) での暗号通信 に使われている(他にも使える)。

SSL を使っていない時には、そのまま盗聴可能な形でインターネット流れる。

少し前まで、輸出用 WWW ブラウザは、鍵の長さが40ビットに制限されてい た。今は、128ビットまで使える。

◆証明書

SSL では、暗号化機能とともに、「証明書(certificate)」を使って、通信相手が 正しいものであることを調べることができる。

証明書の内容

X.509 形式(バイナリ)を、テキストに変換したものの例:

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number: 0 (0x0)
        Signature Algorithm: md5WithRSAEncryption
        Issuer: C=JP, ST=Ibaraki, L=Tsukuba, O=University of Tsukuba, OU=COINS, 
CN=Distributed Systems/Email=yas@is.tsukuba.ac.jp
        Validity
            Not Before: Feb 18 14:42:56 2002 GMT
            Not After : Feb 18 14:42:56 2003 GMT
        Subject: C=JP, ST=Ibaraki, L=Tsukuba, O=University of Tsukuba, OU=COINS,
 CN=Distributed Systems/Email=yas@is.tsukuba.ac.jp
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:d0:94:49:23:dd:29:10:f4:c5:d9:df:07:72:07:
                    91:14:5c:a7:2a:0c:96:51:b5:93:31:a9:09:c0:1d:
                    f0:3f:5b:61:3f:bc:75:14:b8:54:49:f6:e7:db:a6:
                    9f:22:0c:af:23:a4:8a:70:fb:96:56:cc:26:fa:f8:
                    ce:47:32:2a:ea:f6:12:64:96:4a:73:11:52:f7:fa:
                    15:2a:6f:8a:60:f4:77:f5:e9:dc:cc:2f:37:bc:a5:
                    ef:7a:a5:13:48:73:ad:c3:a5:90:15:9b:c8:94:f0:
                    9b:33:39:2f:a4:6e:8d:61:c0:54:3f:5b:5f:4e:a9:
                    30:a6:a3:cd:a0:e8:2b:80:89
                Exponent: 65537 (0x10001)
    Signature Algorithm: md5WithRSAEncryption
        a4:eb:18:03:f4:0a:93:cc:ad:fd:75:5b:60:b0:5c:ec:3f:2e:
        d5:fc:92:cc:41:d4:69:66:5b:5b:19:16:8f:e9:35:78:2d:1d:
        ad:c2:81:79:d8:7f:6d:68:8f:a5:5a:7c:f7:22:1f:69:a6:66:
        28:c6:3a:59:26:c2:57:92:c6:8d:8c:94:75:5e:4c:33:af:17:
        e7:d2:28:9a:06:f8:c6:86:5c:67:8b:e2:f9:fc:c9:d6:b6:f7:
        b3:8b:3d:0f:cd:c3:b5:a9:f8:bd:41:88:27:2e:35:fb:93:fb:
        e9:93:f4:ae:b3:49:1e:b9:db:c5:16:a6:38:b0:7e:ef:ce:a9:
        17:fd
この例は、自分の秘密鍵で自分を公開鍵を署名したものなので、何の証明にも なっていない。

◆認証局の階層

証明書がついていたとして、それが本物であるかをどうやって確認するか。

認証局(CA, Certificate Authority)に、証明書を発行してもらう。(認証局の 秘密鍵でディジタル署名をしてもらう)

その認証局は、信頼できるか?

WWWブラウザには、ルート認証局の証明書が予め含まれている。

末端のWWWサイトは、ルート認証局、または、中間認証局から発行された証 明書を提示する。

◆ハンドシェーク

接続時に、乱数(共通鍵暗号に基づく暗号化の鍵を生成するため)を交換する。 その乱数は、普通、サーバ側が提示した証明書に含まれている公開鍵で暗号化 される。

ハンドシェークで使われる公開鍵暗号系

データを暗号化するために使われる共通鍵暗号系

■実習

◆メールボックスのモード

サーバにあるメール・ボックスが、自分だけが読み書きでき、 他人が読み書きできないように設定されていることを確認しなさい。

◆サーバ上のメールボックスの観察

まず、 2月8日に行ったサーバ上のメールボックスの観察 と 同じ方法で、サーバにログインして、~/Mailbox があることを確認する。

次に、ls -ld というコマンドを使い、一番左の表示が -rw------- になっていることを確認する。


% ls -ld ~/Mailbox  [←]
-rw-------   1 yshinjo  teacher     5438 Feb 20 16:53 /home1/yshinjo/Mailbox
% []

同様の手順で、次のようなファイルやディレクトリの状態を調べなさい。

~
ホーム・ディレクトリ
~/www/
個人の WWW ホーム・ページを置くディレクトリ
~/www/index.html
個人の WWW ホーム・ページのファイル
詳しくは、 許可された操作、ファイルのモード、ls -l と chmod を参照する。ファイルの場合は、ls -ld ではなくて ls -l でもよい。

Windows 2000 で、z:\Mailbox というファイルのアクセス許可を調べる。

同様の手順で、次のようなファイルやディレクトリの状態を調べなさい。
z:\
ホーム・ディレクトリ
z:\www
個人の WWW ホーム・ページを置くディレクトリ
z:\www\index.html
個人の WWW ホーム・ページのファイル

◆Tera Term の接続方法

Tera Term (Windows 2000 用のTelnetプログラム)で接続する方法として、次 の2種類があることを確認しなさい(他にもある)。

◆WWW ブラウザの cookie の状態

WWW ブラウザが、cookie をどのように扱う状態になっているかを調べなさい。

◆SSL 暗号化のビット数

SSL で暗号化されたページを表示してみなさい。 暗号化のために、何ビット鍵が使われているかを確認しなさい。

Netscape

◆SSLの証明書の表示

SSL で暗号化されたページを表示してみなさい。 そこで使われている証明書を表示してみなさい。

◆宿題一掃

まだ残っている宿題を一掃しなさい。
↑[もどる] ←[2月15日] ・[2月28日]
Last updated: 2002/02/27 23:34:04
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>