2016年05月27日 情報科学類 コンピュータリテラシ 筑波大学 システム情報系 情報工学域 新城 靖 <yas@cs.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2016/2016-05-27
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
ネットワークには、次のものを含めて考える
暗号とは、情報の意味が当事者以外にはわからないように情報を変 換することである。
図? 暗号の考え方
暗号化の方法が秘密になっていると、一見、より強そうにみえる。しかし、そ の暗号が、強いのか弱いのか調べる方法がない。攻撃すると、簡単に破られる かもしれない。暗号化の方法を提供している者が信頼できない時には使えない。
鍵を長くするだけで、安全性が指数関数的に高くなる。 鍵を1ビット長くすると、解読時間が2倍になる。 (「鍵の長さを2倍にすると解読時間が2倍になる」は、誤り)。
図? 指数関数
図? 指数関数
パスワードは、コンピュータの中では、暗号化の鍵として使われる。 長いパスワードは、破られにくい。1文字(大文字小文字数字記号)増やすと、 総当たりで解読に要する時間が、50倍から100倍近くかかるようになる。
暗号の方法は、大きく2つに分類される
例
図? 共通鍵暗号系による暗号通信
公開鍵暗号系(非対称暗号系)では2つの異なる鍵を用いる。 便宜上、この2つを公開鍵と秘密鍵と呼ぶ。
これらの鍵は、互いに相手の逆関数になっているものが広く使われている。
図? 公開鍵暗号を使った暗号通信の手順
ここで、公開鍵から秘密鍵を計算することは難しい。ある平文を公開鍵で暗号 化してみたところで、秘密鍵を得ることは難しい。
![]() |
![]() |
共通鍵。各自7つの鍵を管理する。 | 公開鍵。各自、1組の鍵を管理する。 |
認証とは、情報の正当性や完全性を確保する技術である。
図? man-in-the-middle攻撃
ディジタル署名では、通常の署名と同様に、次のような性質が必要である。
図? 公開鍵暗号を使ったディジタル署名の手順
メッセージ全体を暗号化する代わりに、メッセージを平文で送り、それにメッ セージを ハッシュ関数 と呼ばれる方法で計算して短くし、その短い結果だけを、 秘密鍵で暗号化したものを送る方法もある。
ディジタル署名や利用者認証は、公開鍵暗号系ではなく、共通鍵暗号系を用い ても可能である。ただし、この場合、鍵を管理する信用できる管理センターが 必要となる。
チェックサムや CRC (Cyclic Redundancy Check) にも似ているが、暗号やディ ジタル署名で使われるのは、Collision Proof 性が求められる。
よく使われるハッシュ関数
MD5, SHA-1 には、使い方によっては、脆弱性が見つかっている。
サーバへのログインを例に、これを説明する。
単なる暗証番号の場合、通信を傍受されたら終り。 毎回違う数を使えば、傍受されていても平気。
公開鍵で自由に鍵が得られたとしても、鍵か偽物だと、意味はない。
鍵がが本物であるかをどうやって確認するか。
証明書に含まれている重要な情報
証明書の内容の例。coins の Web サーバ www.coins.tsukuba.ac.jp で使われ ているもの。
$ openssl x509 -text -noout < coins-www.certCertificate: Data: Version: 3 (0x2) Serial Number: 943716538689393170 (0xd18c131213e1212) Signature Algorithm: sha256WithRSAEncryption Issuer: C=JP, L=Academe, O=National Institute of Informatics, CN=NII Open Domain CA - G4 Validity Not Before: Jun 24 08:48:15 2015 GMT Not After : Jul 24 08:48:15 2017 GMT Subject: C=JP, L=Academe, O=University of Tsukuba, OU=College of Information Science, CN=www.coins.tsukuba.ac.jp Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:ac:c6:73:f4:4f:e6:3f:c2:4b:31:d2:ce:00:df: 7f:33:7e:5d:fd:9b:39:b6:4d:08:e9:99:83:80:58: 24:d2:ee:40:21:12:ae:60:a1:4f:02:99:83:b1:2c: a8:62:b9:81:32:0c:87:ed:b0:ba:f0:ad:c5:f0:0b: 39:66:97:e8:95:27:0d:b7:f7:b3:ea:52:fd:8c:71: b5:ce:3f:23:21:89:9b:a7:f5:01:5e:51:e0:36:c7: 41:5c:86:7d:db:1d:62:a8:98:2a:67:61:65:18:3f: 4a:26:cc:f5:e8:cf:08:ba:6c:78:60:ef:18:96:14: c7:6d:5b:e9:e5:5d:a7:60:4d:e6:64:7e:01:76:f9: 71:0b:98:40:d5:df:d8:7a:e7:d7:14:b2:36:53:a6: 28:8c:7c:76:e1:40:0d:d2:ca:4c:4f:67:32:7b:cb: 83:ae:a9:e9:06:e7:07:80:b8:f2:7b:49:a5:ec:08: 04:da:9d:cf:02:8a:04:0b:4e:55:60:6c:5a:eb:dd: 93:6e:8c:54:e5:8d:66:89:85:0a:1a:d2:d1:75:92: 43:ee:64:30:cd:3a:92:e3:cc:f6:7e:9d:68:0d:d3: 54:71:9a:36:87:62:3a:60:c4:c3:d7:60:f8:f1:25: ff:cd:f8:a6:91:43:4a:75:e9:1b:5b:16:94:63:a4: cd:31 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication X509v3 Authority Key Identifier: keyid:19:0B:6F:39:1F:31:03:34:5F:E4:D2:40:1F:37:E6:8D:E7:62:39:7C X509v3 CRL Distribution Points: Full Name: URI:http://repo1.secomtrust.net/sppca/nii/odca3/fullcrlg4.crl X509v3 Key Usage: critical Digital Signature, Key Encipherment X509v3 Subject Key Identifier: 18:C6:32:E5:21:7B:02:85:75:04:E6:AD:D0:D7:3E:0E:3E:74:BC:E4 X509v3 Certificate Policies: Policy: 1.3.6.1.4.1.32264.3.2.1.1 CPS: https://repo1.secomtrust.net/spcpp/cps/index.html Authority Information Access: OCSP - URI:http://niig4.ocsp.secomtrust.net X509v3 Subject Alternative Name: DNS:www.coins.tsukuba.ac.jp Signature Algorithm: sha256WithRSAEncryption 75:81:d3:d9:fd:63:ed:f6:4e:c4:f0:2c:82:3a:c7:58:b7:34: ad:19:b8:fe:19:56:6e:32:4f:8a:e0:ee:36:63:b9:3d:c2:8b: 1b:2f:74:6b:c5:15:ea:e5:12:e9:51:15:7e:06:75:6f:c6:f4: dc:ce:16:17:e0:a1:ff:ed:dd:a1:c7:9a:40:84:ee:aa:06:c1: ab:03:7e:c9:f8:1f:c7:c2:30:d2:ef:45:15:7f:7d:16:5f:01: 92:21:4c:80:b3:35:40:fe:01:78:d6:7b:0e:58:c4:c7:9f:c2: b5:78:3d:36:f4:34:f1:1c:83:4c:5b:46:48:b4:af:5f:3a:96: a3:bf:e0:67:a9:21:6a:cf:1f:a8:a4:91:15:88:5e:af:c9:96: b4:b6:8b:e6:9c:a1:c4:a0:5f:24:e2:bc:e7:44:f7:23:db:10: 87:45:fa:b4:18:49:92:4a:12:2b:ae:95:a8:bd:9c:07:38:c6: f9:d4:72:93:6d:2d:9d:3b:a0:bc:d9:1a:da:31:40:ac:7a:6f: a0:9b:d0:e6:d5:15:80:67:1e:f4:a2:dd:61:cc:a0:10:b8:eb: e2:d5:38:28:d6:2a:c5:87:35:95:6b:ce:7f:fa:aa:8d:67:e1: 57:53:57:a6:10:30:de:d2:fa:30:c7:40:5e:81:ef:0e:e9:cd: ae:60:25:c3 $
![]()
証明書がついていたとして、それが本物であるかをどうやって確認するか。
認証局(CA, Certificate Authority)に、証明書を発行してもらう。(認証局の 秘密鍵でディジタル署名をしてもらう)
その認証局は、信頼できるか?
WWWブラウザには、ルート認証局の証明書が予め含まれている。
末端のWWWサイトは、ルート認証局、または、中間認証局から発行された証 明書を提示する。
図? ルート認証局から始まる証明書のチェーン
インターネットで通信をプログラムを利用する時、 「クライアント」と「サーバ」という分けて考えることが多い。
例:
コンピュータが1台しかない場合、プログラムは1つでよい。通信をする場合 には、プログラム(コンピュータ)が2つになる。そのうちの1つのプログラ ム(またはコンピュータ)を、「クライアント」、もう1つを「サーバ」とい う。
.pub
が着いているものが公開鍵が入っているファイル、
ついていないものが秘密鍵が入っているファイル。
$ ls -l /etc/ssh_host_rsa_key*
-rw------- 1 root wheel 1675 3 2 15:20 /etc/ssh_host_rsa_key
-rw-r--r-- 1 root wheel 382 3 2 15:20 /etc/ssh_host_rsa_key.pub
$
ssh (scp, WinSCP, PuTTY, Tera Term含む) で始めてあるホストに接続する時 には、警告が現れる。
ssh コマンド
$ ssh ホスト名 -l ユーザ名The authenticity of host 'ホスト名 (IPアドレス)' can't be established. RSA key fingerprint is 16進数32桁. Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ホスト名 (IPアドレス)' (RSA) to the list of known hosts. Password: (パスワードを打つ。画面には表示されない。)
ホスト名$
![]()
この 16進数32桁
(128ビット) の数は、接続先のホストの公開鍵を、ハッ
シュ関数 MD5 にかけた結果である。この32桁の数を目で確認することにより、
接続先のホストが正しい(
man-in-the-middle攻撃
が行われていない)ことがわかる。
ホストの公開鍵は、普通、2048 ビット以上あるが、これを人の目で比較するの はつらい。そこで、ハッシュ関数により、ビット数を減らして、人の目で確認 できるようにしている。SSHのプログラムは、公開鍵全体を保存しているが、人 間に表示する時には、ハッシュ値で表示している。
2048 de:18:ce:85:f0:a5:f3:b0:f7:cc:72:83:c8:1e:94:1b icho.u.tsukuba.ac.jp (RSA) 2048 de:18:ce:85:f0:a5:f3:b0:f7:cc:72:83:c8:1e:94:1b unix01.u.tsukuba.ac.jp (RSA) 2048 19:c2:57:f7:c5:a9:fe:02:46:0b:04:76:3e:e8:9d:3e ubuntu.u.tsukuba.ac.jp (RSA) 2048 19:c2:57:f7:c5:a9:fe:02:46:0b:04:76:3e:e8:9d:3e unix02.u.tsukuba.ac.jp (RSA)
個人ごとに公開鍵での認証機能を利用したほうがよい。
coins では、近日中に外部からの SSH での接続で、パスワードによる認証が使 えなくなる。そうなると、外部から、SSH で接続するには、公開鍵を使うしか なくなる。 練習問題 sshにおける公開鍵による認証 参照。
130.158.86.249 - - [25/May/2016:21:29:38 +0900] "GET /~yas/coins/liter acy-2016/2016-05-27/index.html HTTP/1.1" 200 94415 "-" "Mozilla/5.0 (M acintosh; Intel Mac OS X 10.9; rv:46.0) Gecko/20100101 Firefox/46.0" 130.158.86.249 - - [25/May/2016:21:29:38 +0900] "GET /~yas/coins/liter acy-2016/2016-05-27/images/crypt-idea.png HTTP/1.1" 200 24480 "http:// www.coins.tsukuba.ac.jp/~yas/coins/literacy-2016/2016-05-27/index.html " "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:46.0) Gecko/2010010 1 Firefox/46.0"この例では、一番左に表示されているものは、クライアントの IP アドレスで ある。その他に、日付やどの URL をアクセスしたか、転送したバイト数、 ブラウザの種類も表示されている。
Webブラウザを利用する時には、サーバ側にアクセスログが残されていることを 意識する。
練習問題 学類 Web サーバのアクセス・ログの観察 参照。
host1$ ssh hostname
Password: (パスワードを打つ。画面には表示されない。)
hostname$
hostname
は、
www
など、接続したいコンピュータの名前を入れる。
実習では、別のコンピュータとしては、次のものを利用しなさい。
$ ssh www.coins.tsukuba.ac.jp
$ ssh pentas-compa.coins.tsukuba.ac.jp
実習室内では、coins.tsukuba.ac.jp を省略できる。
$ ssh www
$ ssh pentas-compa
一番最初に接続する時には、次のような警告(Warning:)が表示される。
crocus40:~ yas$ ssh www
The authenticity of host 'www (130.158.87.1)' can't be established.
RSA key fingerprint is 17:1a:63:a8:0d:82:e3:d6:60:f7:fb:28:1a:19:4e:7b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'www' (RSA) to the list of known hosts.
yas@www's password:
Last login: Wed May 20 21:45:51 2015 from violet-nwa.coins.tsukuba.ac.jp
violet-nwa:~ yas$
この fingerprint は、接続先のホストの公開鍵のハッシュ値である。これが次
のリストに含まれているかを確認してから yes と打ち込みなさい。
遠隔ログインが成功すると、ログイン先でシェルが実行される。シェルのプロ ンプトには、(多くの場合)ホスト名が含まれているので、遠隔ログイン後に は、プロンプトが変化する。シェルを終了(exitコマンド)すると、遠隔ログイ ン自身も終了する(ログアウトする)。
ssh で遠隔ログインした後に、シェルのプロンプトが変わることを確認しなさ い。また、exit コマンドを実行すると、ログアウトできることを確認しなさい。
(sshを実行する、iTtermを実行した直後。)
$ ifconfig en0
(inet の次に iMac の IP アドレスが表示される。)
$ ssh www
$ ifconfig eth0
(inet の次に www サーバの IP アドレスが表示される。)
$ exit
$
crocus40:~ yas$ ssh www
The authenticity of host 'www (130.158.87.1)' can't be established.
RSA key fingerprint is 17:1a:63:a8:0d:82:e3:d6:60:f7:fb:28:1a:19:4e:7b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'www' (RSA) to the list of known hosts.
yas@www's password:
Last login: Wed May 20 21:45:51 2015 from violet-nwa.coins.tsukuba.ac.jp
violet-nwa:~ yas$
violet-nwa:~ yas$ cd /var/log/httpd/http
violet-nwa:http yas$ pwd
/var/log/httpd/http
violet-nwa:http yas$
access*
の「*
」は、
シェルの
ファイル名置換
の意味である。
violet-nwa:http yas$ ls
(多くのファイルが表示される)
violet-nwa:http yas$ ls access*
(多くのファイルが表示される)
violet-nwa:http yas$ ls access* | tail -1
access_log_20160526
violet-nwa:http yas$ ls -t access* | head -1
access_log_20160526
violet-nwa:http yas$
この例では、access_log_20160526
が最新のものである。
$ lv access上のlsの結果で置き換える
たとえば、上の例では、次のように打つ。
$ lv access_log_20160526
$ tail access上のlsの結果で置き換える
(表示がなされる。)
(しばらく待つ。)
$ tail access上のlsの結果で置き換える
(表示がなされる。)
(しばらく待つ。)
$ tail access上のlsの結果で置き換える
(表示がなされる。)
(しばらく間隔を空けてから)数回 tail コマンドを実行すると、その度に行
が増えているはずである。
たとえば、上の例では、次のように打つ。
$ tail access_log_20160526
$ tail access_log_20160526
$ tail access_log_20160526
$ grep IPアドレス アクセスログのファイル名
たとえば、IP アドレスが 130.158.86.249 であれば、次のように打つ。
$ grep 130.158.86.249 アクセスログのファイル名
ここで「アクセスログのファイル名」は、
練習問題 学類 Web サーバのアクセス・ログの観察
で調べなさい。
たとえば、その練習問題の例では、次のように打つ。
$ grep 130.158.86.249 access_log_20160526
$ tail -f アクセスログのファイル名
ここで「アクセスログのファイル名」は、
練習問題 学類 Web サーバのアクセス・ログの観察
で調べなさい。
たとえば、その練習問題の例では、次のように打つ。
$ tail -f access_log_20160526
-f オプションを指定すると、tail コマンドは終了することなく新しく追加さ
れた行を表示する。この tail コマンドは、自動的には終了しないので、終わっ
たら、
^C (Control+C) で強制終了させる。
violet-nwa:~ yas$ cd /var/log/httpd/https
ssl_access*
$ ls
(多くのファイルが表示される)
$ ls ssl_access*
(多くのファイルが表示される)
$ ls ssl_access* | tail -1
(1つだけ表示される)
$ ls -t ssl_access* | head -1
(1つだけ表示される)
$
$ cat ~/.ssh/known_hosts
www ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAv2S59b8mM56WSiNtdRr692yi1bxSub+k1WFXZIfK
bxqq5ZaMHEZaPK5nyU8ebekSIAb0oQq+pz2emaugnFMByExheM+Od19r2moXo3w4Qk9VejfhY77eEXNa
DS9ipw0u+MgLYQ1eeaVnsJOZ0Ia7TjUF+zPk25aY5TaLTWTiBWBq1eVIqrH6xieStXHbyDBaSoWU5++V
Cy3zYAhWA5ZG+sBq4wr2RYJhpG5PM/aIrT1RKmL3t+JmDTnBb8vyNyNncWrZfPppvnDFhgNUNObvtylI
O2791lrd211rRc6QEc5MBkSnKAQqpGPyBCe0Y9w96peMMTcUQNgVB8kmDJnOIw==
$
ログイン先とログイン元でユーザ名が異なる時には、次のように、-l オプショ ンに続きログイン先のユーザ名を使う。
host1$ ssh remotehost -l user
Password: (パスワードを打つ)
remotehost$
または、「@」の前にログイン先のユーザ名を指定する。
host1$ ssh user@remotehost
Password: (パスワードを打つ)
remotehost$
この -l オプションを利用する方法や @ を利用する方法で遠隔ログインを行っ
てみなさい。(注意:同じ場合でも、あえて指定することもできる。)
MacOSX
$ ls -l /etc/ssh_host_rsa_key.pub
$ cat /etc/ssh_host_rsa_key.pub
$ ssh-keygen -l -f /etc/ssh_host_rsa_key.pub
Linux (www サーバ等)
$ ls -l /etc/ssh/ssh_host_rsa_key.pub
$ cat /etc/ssh/ssh_host_rsa_key.pub
$ ssh-keygen -l -f /etc/ssh_host_rsa_key.pub
$ ls -ld ~/.ssh
<結果省略>
$ ls -l ~/.ssh
<結果省略>
$ ls -l ~/.ssh/known_hosts
<結果省略>
$
この ~/.ssh/known_hosts
には、接続先のホストの公開鍵が
含まれている。これを表示しなさい。
$ cat ~/.ssh/known_hosts
<結果省略>
$
また、公開鍵のハッシュ値を表示しなさい。
$ ssh-keygen -l -f ~/.ssh/known_hosts
<結果省略>
$
https://www.coins.tsukuba.ac.jp/ce/
等。
coins では、近日中に外部からの SSH での接続で、パスワードによる認証が使 えなくなる。そうなると、外部から、SSH で接続するには、公開鍵を使うしか なくなる。coins のコンピュータで、以下の手順で公開鍵と秘密鍵の組を作成 したら、秘密鍵を ssh のクライアントにコピーして利用する。
ssh で、 公開鍵暗号を使った利用者認証 を利用しなさい。
まず、ssh-keygen コマンドを使って、公開鍵と秘密鍵の組を生成しなさい。
Enter file in which to save the key (ファイル名)
に対して、「ファイル名」を確認し、Enter (Enter passphrase
に対して、パスフレーズ(パス「ワード」より長い秘密の文字列)を打つ。
empty (空)には絶対にしないこと。
確認のために 2 度打つ。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/prof/yas/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): パスフレーズ
Enter same passphrase again: パスフレーズ
Your identification has been saved in /home/prof/yas/.ssh/id_rsa.
Your public key has been saved in /home/prof/yas/.ssh/id_rsa.pub.
The key fingerprint is:
e4:93:eb:30:02:63:a3:73:d9:05:44:81:dc:0c:7e:85 yas@crocus14.coins.tsukuba.ac.jp
The key's randomart image is:
+--[ RSA 2048]----+
| ..*+o. |
| .o.E. |
| . o . |
| . . o . |
| = . S |
| o * . o |
|o o o o . |
| o . + |
| . |
+-----------------+
$
$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/prof/yas/.ssh/id_dsa):
Enter passphrase (empty for no passphrase): パスフレーズ
Enter same passphrase again: パスフレーズ
Your identification has been saved in /home/prof/yas/.ssh/id_dsa.
Your public key has been saved in /home/prof/yas/.ssh/id_dsa.pub.
The key fingerprint is:
65:86:35:fa:6d:12:db:c3:35:20:b2:cf:d5:ad:c9:82 yas@crocus14.coins.tsukuba.ac.jp
The key's randomart image is:
+--[ DSA 1024]----+
| . + . |
| * o o . |
| + = . + .|
| B O o + |
| S E B + |
| o o |
| |
| |
| |
+-----------------+
$
生成に成功すると、標準では、~/.ssh
というディレクトリの下に、2
つのファイルが作られる。
ssh でログインする時に、生成した鍵の組を使って認証を行いなさい。 それには、クライアント側に秘密鍵を置き、サーバ側の ~/.ssh/authorized_keys (OpenSSHの場合)に、公開鍵を設定すればよい。 接続時には、秘密鍵を暗号化するために使ったパス レーズを打つ込む。(通常の通常のログインのパスワードを打つことはない。)
coins 内で実験する時には、クライアントもサーバも同じ ~/.ssh を参照する。 したがって、authorized_keys を作成するには、次のようにする (RSAかDSAのどちらか一方を選んで実施する。 両方行った場合、後から行った設定が有効になる。)。
rsaの場合:
$ cd ~/.ssh
$ ls id_rsa*
id_rsa id_rsa.pub
$ cp id_rsa.pub authorized_keys
dsaの場合:
$ cd ~/.ssh
$ ls id_dsa*
id_dsa id_dsa.pub
$ cp id_dsa.pub authorized_keys
$
authorized_keys を作成する前には、ssh で接続する時に次のように 「パスワード Password 」が聞かれる。
$ ssh crocus10
Password:
authorized_keys を作成した後には、ssh で接続する時に次のように
「パスフレーズ passphrase」が聞かれる。
$ ssh crocus10
Enter passphrase for key '/home/prof/yas/.ssh/id_rsa':
MacOSX では、次のように、ウインドウが表示されることがある。
図? MacOSX で ssh 公開秘密鍵のパスフレーズの打ち込み(ssh-agentとキーチェーンアクセスの機能)
coins の iMac で MacOSX が動作している時には、ssh-agent が利用可能になっ
ている。この事を確認しなさい。
ssh-agent が利用可能な場合、次のようにprintenv SSH_AUTH_SOCK
で
/tmp の下のファイル名が表示される。また、ssh-add -l
で、
ssh-agent と接続できる。
$ printenv SSH_AUTH_SOCK
/tmp/launch-IbzuAT/Listeners
$ ssh-add -l
The agent has no identities.
$
ssh-agent が利用できない場合、次のようにprintenv SSH_AUTH_SOCK
でなにも表示されない。また、ssh-add -l
で、ssh-agent と接続でき
ないというエラー・メッセージが表示される。
$ printenv SSH_AUTH_SOCK
(何も表示されない)
$ ssh-add -l
Could not open a connection to your authentication agent.
$
printenv SSH_AUTH_SOCK
でなにも表示されない。また、ssh-add -l
で、ssh-agent と接続でき
ないというエラー・メッセージが表示される。
$ printenv SSH_AUTH_SOCK
(何も表示されない)
$ ssh-add -l
Could not open a connection to your authentication agent.
$
次に、ssh-agent を実行する。
ssh-agent が利用可能な場合、次のようにprintenv SSH_AUTH_SOCK
で
/tmp の下のファイル名が表示される。また、ssh-add -l
で、
ssh-agent と接続できる。
$ ssh-agent bash
$ printenv SSH_AUTH_SOCK
/tmp/launch-IbzuAT/Listeners
$ ssh-add -l
The agent has no identities.
$
うえの例では、端末で別の bash を実行している。
その他に、次のように、同じ bash を使うこのもできる。
$ eval `ssh-agent`
$ printenv SSH_AUTH_SOCK
/tmp/launch-IbzuAT/Listeners
$ ssh-add -l
The agent has no identities.
$
eval を使う方法ではログアウトした時に ssh-agent のプロセスが残ること
がある。そうならないように ログアウト時に明示的に終了させる
ようにする。
$ ssh-agent -k
$ exit
$ ssh-add
鍵の登録
Enter passphrase for /home/prof/yas/.ssh/id_rsa: パスフレーズ
Identity added: /home/prof/yas/.ssh/id_rsa (/home/prof/yas/.ssh/id_rsa)
$ ssh-add -l
鍵が登録されたことの確認
$ ssh www
鍵の利用
$
~/Library/Keychains/login.keychain
「キーチェーンアクセス.app」のパスワードとログインの時に打つパスワード を同じにしていると、自動的に機密データの暗号を解いてアプリケーションに 渡す機能がある。注意すべきことは、ログイン・パスワードを変更しても、 「キーチェーンアクセス.app」のパスワードは変更されないことである。 活用するには、ログイン・パスワードを変更したら、 「キーチェーンアクセス.app」のパスワードも変更するとよい。
何も使っていなければ、「キーチェーンアクセス.app」のパスワードは、初期 パスワードのままになっている。重要な情報を保存していなければ、上記のファ イルを削除し、ログインしなおすことで、リセットするとよい。
次のような MacOSX のアプリケーションが、「キーチェーンアクセス.app」を 使って機密情報を暗号化して保存することができる。
「キーチェーンアクセス.app」を実行して、どのような機密データが保持され てるかを見てみなさい。
次の手順でパスワードを暗号化して保存しなさい。
$ ls -l ~/Library/Keychains/login.keychain
$ open "/Applications/Utilities/Keychain Access.app"
$ ls -l ~/Library/Keychains/login.keychain
$ emacs file1.txt
$ ls -l file1.txt
-rw-r--r-- 1 yas prof 2 5 20 15:46 file1.txt
$
$ openssl sha1 file1.txt
SHA1(file1.txt)= 3f786850e387550fdab836ed7e6dc881de23001b
$
$ emacs file1.txt
$ ls -l file1.txt
-rw-r--r-- 1 yas prof 2 5 20 15:49 file1.txt
$
$ openssl dgst -sha1 file1.txt
SHA1(file1.txt)= 89e6c98d92887913cadf06b2adb97f26cde4849b
$
coins でも、VPN 機能を提供している。 手引き 9.3節 参照。 この機能を利用しなさい。
(1) 練習問題(1104) を行いなさい。 Web サーバが生成しているアクセスログから、自分自身がアクセスした記録を 抜き出しなさい。それには、まず自分が利用しているコンピュータの IP アド レスを調べ、アクセスログからその IP アドレスが含まれている行を抜き出す とよい。アクセスログのうち、「数行」をレポートに含めなさい。
(2) coins の Web サーバ www.coins.tsukuba.ac.jp で使われている SSL の証 明書を観察しなさい。この証明書に含まれている重要な項目を2つ選びなさい。 それぞれ、何を意味するのか、簡単に説明しなさい。
SSLで使われる証明書、 練習問題(1112) SSLの証明書の表示 参照。
(3) The Unix Super Text の次の部分を読みなさい。
(4) 手引きの次の次の部分を読みなさい。
(5) [加点] ssh で最初にあるホストに接続する時に、次のような表示がなされ ることがある。
RSA key fingerprint is 17:1a:63:a8:0d:82:e3:d6:60:f7:fb:28:1a:19:4e:7b.
Are you sure you want to continue connecting (yes/no)?
この表示の意味を、今日の授業内容の用語を用いて説明しなさい。
また、ssh で以前に接続したことがあるホストに接続すると、「Are you sure you want to continue connecting (yes/no)? 」という表示はなされない。そ の理由を説明しなさい。
(6) [加点] ssh と VPN に関連して、次の課題を「2つ以上」行いなさい。
(6a) [加点] sshコマンド、PuTTY、Tera Term、その他の ssh クライアントを 用いて、「学外」からcoins のコンピュータに接続しなさい。そのことを示す ために、レポートには、どのようなプログラムを使ったのか、ログイン後のコ マンドの実行結果等を含めなさい。
(6b) [加点] sshコマンド、PuTTY、Tera Term、その他の ssh クライアントを 用いて「公開鍵を用いた認証」により、coins のコンピュータに接続しなさい。 そのことを示すために、レポートには、どのようなプログラムを使ったのか、 公開鍵の生成手順、クライアント側の設定、サーバ側の設定を含めなさい。
(6c) [加点] 学類外のコンピュータから VPN 機能を使って coins のコンピュー タに接続して、coins のコンピュータを利用しなさい。利用には、ssh による 接続の他に、World Wide Web、電子メール等を含めてもよい。レポートに次の 項目を含めなさい。