アクセス制御、暗号、SSL、SSH、Webサーバ・アクセスログ

					2018年05月22日
情報科学類 コンピュータリテラシ

                                       筑波大学 システム情報系
                                       新城 靖
                                       <yas@cs.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2018/2018-05-22
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/

■連絡事項

ファイルの属性(4月24日)

ファイルの属性(2)(5月15日)

■アクセス制御

アクセス制御(access control) とは、「主体」が、「オブジェクト」を「操作」する時、どんな操作なら正し いということを定義して、それがきちんと守られていることをということを保 証することである。

図? アクセス制御における主体、オブジェクト、および、操作
図? アクセス制御における主体、オブジェクト、および、操作

Unixでは、アクセス制御の主体は、 プロセス である。 プロセスとは、コンピュータの中で実行中のプログラムのことである。 (プログラムでも、ハードディスクに保存されているものはプロセスではない。) プロセスは、利用者と対応しているので、 アクセス制御では、利用者ごとに許されたアクセスの方法を考えれば良い。

アクセス制御のオブジェクトは、ファイル、または、プロセスである。 操作には、次のようなものがある。

◆ユーザとグループ

Unix (macOS, Linux含む), Windows では、ユーザ(個人)とグルー プを識別したアクセス制御を行うことができる。 オペレーティング・システムごとに、ユーザやそのグループの考え方は、基本 的には似ているが、細かい所で異なる。

図? 実世界のユーザとUNIX中のプロセス・ファイル
図? 実世界のユーザとUNIX中のプロセス・ファイル

◆ユーザ

ユーザ(user, 利用者)とは、Unixの外では、個人(人間)。 Unixの内部では、次のどれかで表現する。
ユーザ名(user name)
文字列
UID(user ID, user identifier)
16ビット-32ビットの整数

Unixでは、全てのファイルやプロセスは、あるユーザの所有物である。 ファイルとプロセスには、UID が付加されている。

◆グループ

グループ(group)とは、Unixの外の世界では、計算機を使う人間の集合。 Unixの内部では、次のどれかで表現する。
グループ名(group name)
文字列
GID(Group ID, group identifier)
16ビット-32ビットの整数

1人のユーザが複数のグループに属することができる。

◆ファイルの属性

ファイルは、属性(ls -l で表示)として、UID と GID を1つずつ持つ。 ファイルの所有者となる個人は、1人。 ファイルが属するグループも1つ。

◆プロセスの属性

プロセスは、UID (1個) と GID を複数個持つ。

◆プロセスのユーザ名とグループ名を調べる

プロセスの所有者のユーザ名を表示するには whoamiコマンドを用いる。
$ whoami [←]
yas
$ []
この例では、この人(のプロセス)のユーザ名は、yas

プロセスが属しているグループのグループ名を調べるには、 groupsコマンドを用いる。

$ groups [←]
ugrad _developer netaccounts everyone com.apple.sharepoint.group.1
$ []
この例では、この人(のプロセス)は、 ugrad, _developer, netaccounts everyone, com.apple.sharepoint.group.1, という5つ のグループに属している。

idコマンドも使える。

$ id [←]
uid=1013(yas) gid=530(ugrad) groups=530(ugrad),204(_developer),62(netaccounts),12(everyone),402(com.apple.sharepoint.group.1)
$ []

◆ファイルの UID・GID 属性を調べる

ファイルの UID 属性(所有者属性)と GID 属性を調べるには、 ls -l (ファイルの場合), ls -ld (ディレクトリの場合) を用いる。
$ ls -l ~/.bashrc [←]
-rw-r--r--  1 yas  prof  450  4  8 16:14 /home/prof/yas/.bashrc
$ ls -ld ~ [←]
drwxr-xr-x  54 yas  prof  7168  5 19 14:12 /home/prof/yas
$ []
この例では、UID 属性が yas、GID 属性が prof である。

◆ファイルに対するアクセス制御

Unixでは、ファイルの「内容」のアクセス制御を次の3段階で行う。
ユーザ
ファイルのUID(所有者)が、プロセスのUIDと同じ
グループ
ファイルのGIDが、プロセスのGIDのリストのどれかと同じ
その他
上の2つに当てはまらない時
これをつかって、モード属性の下位9ビットのうち、どの3ビットを使うかを 決める。そして、そのビットが1になっていれば、その操作が許される。

ファイルの「内容」のアクセス3段階であるが、ファイルの「属性」次の2段 階である。

ユーザ
ファイルのUID(所有者)が、プロセスのUIDと同じ
それ以外
ファイルのUID(所有者)が、プロセスのUIDと異なる
ユーザの権限では、ファイルの属性(モード、グループ、時刻)を変更する ことができる。それ以外の権 限では、属性を読み出すことはできるが、変更は一切できない。 つまり、ファイルの内容がアクセスできなくても、ls -l で 属性を調べることはできる。

◆ディレクトリのxの働き

ディレクトリのモードで x は、そのディレクトリの内容を検索できることを意 味する。ディレクトリの x を落すことで、それ以下の部分木全体のアクセスを 禁止することができる。

(ホームディレクトリ以下の)ディレクトリの x を使ったファイルへの読み込み アクセスの許可と禁止。

図? /home/user2/public_html/htdocs/index.html と /home/user2/Maildir/mail1
図? ディレクトリのxの働き

ファイル /home/user2/public_html/htdocs/index.html を読むには、次のディレクト リとファイルのモードが必要になる。パスの途中で x が1つでも途絶えると、アクセ スできなくなる。
  1. / の x
  2. home の x
  3. user2 の x
  4. public_html の x
  5. htdocs の x
  6. index.html の r
ファイル /home/user2/Maildir/mail1 を読むには、次のディレクト リとファイルのモードが必要になる。パスの途中で x が1つでも途絶えると、アクセ スできなくなる。
  1. / の x
  2. home の x
  3. user2 の x
  4. Maildir の x
  5. mail1 の r

◆プロセスに対するアクセス制御

プロセスのアクセス制御は、次の2段階で行なう。
同一ユーザ
操作対象のプロセスが、操作するプロセスのUIDと一致している。
それ以外
操作対象のプロセスが、操作するプロセスのUIDと一致していない。
プロセスの操作としては、シグナルを送ることができるかどうか (kill() システムコール) と、デバッガで デバッグすることができるとか(ptrace() システムコール)、トレースを調べることができるかなどが ある。それらの操作は、同一ユーザの場合 許され、そうではない場合は、許されない。

◆スーパー・ユーザ

どのようなアクセスも可能な無敵のユーザ。

スーパー・ユーザ(super user) は、UID が 0 。 特権ユーザ(privileged user)ルート(root)su (su コマンド、あるいは super user の略)ともよばれる。 スーパーユーザのユーザ名は、慣例として root という文字列が使われる。

ファイルのバックアップなど、システム管理の作業には スーパー・ユーザの仕組みが必要になる。

ファイルの UID・GID 属性を変更する

ファイルの UID 属性(所有者属性)を変更するには、chown コマ ンドを用いる。ただし、スーパーユーザの権限が必要である。

ファイルをコピーして、元ファイルを消すことはできる。

ファイルの GID 属性を変更するには、chgrp コマンドを使う。 一般ユーザは、自分が属しているグループにのみ変更できる。 任意のグループに変更するには、スーパー・ユーザの権限が必要である。

◆ユーザ名とUID、グループ名とGIDの対応、属性の伝播

■ファイルのモードの変更

◆chmod コマンド

chmodコマンドは、ファイルのモード属性を変更するためのコマンド。
$ ls -l file1.txt  [←]
-rw-r--r--  1 yas  prof  2  5 10 18:59 file1.txt
$ chmod go-r file1.txt  [←]
$ ls -l file1.txt  [←]
-rw-------  1 yas  prof  2  5 10 18:59 file1.txt
$ []
file1に対して、グループ(g)とそれ以外の人(o)に対して「読込み可」の許可を 取り除いている。

chmodは一般的には次の形式で実行する。

$ chmod set file1 file2 ... [←]
set の形式
[ugoa][=+-][rwx]
ここの[ugoa]は、誰に対するアクセスの設定を変更するかを対象となる人を以 下の表から選んで並べる(複数可)。
文字 単語 意味
u user ユーザ(利用者,所有者)
g group グループ
o others その他
a all 全員、ugo と同じ
[=+-]の意味
文字 意味
+ 許可を追加する
- 許可を除く
= 指定した許可だけとする
[rwxXst]の部分には次のような指定が可能。
文字 単語 意味
r read 読込み可
w write 書込み可
x execute 実行可
X execute 実行可(所有者に対して「実行可」がある時だけ)
setには[ugoa][=+-][rwx]の指定を「u=rw,og=r」のように「,」で区 切って複数並べることもできる。 setには、8進数を使うこともできる。 練習問題 8進数を利用したchmodコマンド 参照。

chmod には、-R (recursive)オプションがある。 これは、ディレクトリをたぐり全部変更することを意味する。

◆モードの実例

rw-r--r--
誰かでも読めるファイル
rwxr-xr-x
誰かでも読めるアクセスできるディレクトリ。 xもたてる。 (たてる==ビットを1にする。)
rwxr-xr-x
実行可能ファイル
rwx------
電子メール( Maildir, Mail )、 デスクトップ( Desktop )、 ダウンロード( Downloads )、 ライブラリ( Library )、 書類( Documents )等、 他人には見せないファイルを保存するための ディレクトリのモード。
rw-r--r--
WWWページ用のファイル (~/public_html以下のファイル)
rwxr-xr-x
WWWページ用のディレクトリ (public_html以下のディレクトリ)
rwxr-xr-x または rwx--x--x
WWWページを作成する時のホーム・ディレクトリ (~~/public_html の親ディレクトリ)。 x ビットを出す。
rw-rw-r-- または rwxrwxr-x
グループで共同作業するような時には、グループに属する人には書き込みを許す。
r-xr-xr-x, r-x------
読み込み専用のディレクトリ。 その下のファイルを削除することができない。

■ネットワーク上の脅威

悪意を持つ人、プログラムによる脅威。
盗聴
本来の通信相手以外の人が 通信内容のコピーを入手する。例:クレジットカード番号をコピーする(後で使う)。
改ざん
通信内容を書き換える。例:買い物で1個買う所を10個に書き換える。
なりすまし
悪意のある人が、他の人に成り代わる。例: 電子メールの From: を書き換えて送る。
インターネットで流れるデータは、流れるデータを見れば簡単に内容を知るこ とができる。(1つひとつのデータグラムは、はがきと同じ。)

ネットワークには、次のものを含めて考える

■暗号

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

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

図? 暗号化、復号化、平文、暗号文、解読、鍵
図? 暗号の考え方

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

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

◆鍵を使うことの重要性

問: 答え:

暗号化の方法が秘密になっていると、一見、より強そうにみえる。しかし、そ の暗号が、強いのか弱いのか調べる方法がない。攻撃すると、簡単に破られる かもしれない。暗号化の方法を提供している者が信頼できない時には使えない。

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

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

◆暗号の経済学

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

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

図? 指数関数
図? 指数関数

図? 指数関数
図? 指数関数

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

◆暗号の応用

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

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

共通鍵暗号系(対称暗号系、共有鍵暗号系)
暗号化鍵と復号化鍵が同じ(または片方から片方が簡単に計算できる)。 公開鍵暗号系と比較して軽い(処理が高速である)。
公開鍵暗号系(非対称暗号系)
暗号化鍵から復号化鍵を容易に類推できない。 共通鍵暗号系と比較して重たい(処理が低速である)。

普通は、両者を組み合わせて使う。 後述する SSL でも SSH でも組み合わせて使っている。

◆共通鍵暗号系による暗号通信

同じ鍵で暗号化と復号化を行う。

図? 共通鍵で暗号化
図? 共通鍵暗号系による暗号通信

◆公開鍵暗号系

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

これらの鍵は、互いに相手の逆関数になっているものが広く使われている。

◆公開鍵暗号系による暗号通信

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

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

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

◆鍵の管理

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

図? 秘密鍵、8人、各人7つの鍵を管理 図? 公開鍵、8人、各人1組の鍵を管理
共通鍵。各自7つの鍵を管理する。 公開鍵。各自、1組の鍵を管理する。

図? 鍵の管理の例。8人の場合。

◆認証

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

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

◆認証の例

◆man-in-the-middle攻撃

いくら暗号通信をしても、通信相手を認証しないと意味がない。 認証しない場合、man-in-the-middle攻撃に弱い。

A=攻撃者、攻撃者=Bで暗号通信
図? man-in-the-middle攻撃

◆ディジタル署名

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

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

◆公開鍵暗号系によるディジタル署名

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

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

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

メッセージ全体を暗号化する代わりに、メッセージを平文で送り、それにメッ セージを ハッシュ関数 と呼ばれる方法で計算して短くし、その短い結果だけを、 秘密鍵で暗号化したものを送る方法もある。

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

◆一方向関数

y=f(x) で、x から y を計算することは簡単だが、y から x 逆を計算するこ とは非常に難しい関数。

◆ハッシュ関数(メッセージ・ダイジェスト、メッセージ要約関数)

元データからデータの指紋と呼ぶべきような特徴的な数(普通は元データの長 さによらず固定長)を抽出するもの。一方向関数の一種。

チェックサムや CRC (Cyclic Redundancy Check) にも似ているが、暗号やディ ジタル署名で使われるのは、Collision Proof 性が求められる。

ハッシュ関数の結果を、fingerprint というこがある。

よく使われるハッシュ関数

MD5, SHA-1 には、使い方によっては、脆弱性が見つかっている。

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

サーバへのログインを例に、これを説明する。

  1. ユーザは、サーバにログイン・アカウントを登録する時に、公開鍵と秘 密鍵を生成し、公開鍵をサーバに届け、秘密鍵を自分で保持する。
  2. ユーザは、通信回線を通じてサーバにアクセスしてきた時、サーバは乱 数を1つ生成し、その乱数をユーザの「公開鍵」で暗号化し、ユーザに送り返 す。
  3. ユーザは、送られてきた暗号化された乱数を、保持している秘密鍵で復 号化し、サーバに送り返す。
  4. サーバは、ユーザから返された乱数が正しければ、正当なユーザである と判定する。
次回の呼び出しでは、別の乱数を用いることで、通信を記録している傍受者に も対応することができる(challenge-response方式)。

単なる暗証番号の場合、通信を傍受されたら終り。 毎回違う数を使えば、傍受されていても平気。

◆鍵の確認

公開鍵による認証

公開鍵で自由に鍵が得られたとしても、鍵か偽物だと、意味はない。

鍵がが本物であるかをどうやって確認するか。

では、その第三者は、信頼できるのか。

■SSL(Secure Sockets Layer)

SSL は、Netscape 社によって開発された通信路を暗号化する仕組み。認証機能 もある。HTTP に広く使われている(他にも使える)。SSL をインターネットで使 えるさまざまな標準を策定する組織IETF (Internet Engineering Task Force) により標準化したものが、TLS(Transport Layer Security)。

◆SSL が使われる場所

◆SSLで使われる証明書

man-in-the-middle攻撃 に合わないために、 SSL では 証明書を使って通信相手を認証する。

証明書に含まれている重要な情報

証明書の内容の例。coins の Web サーバ www.coins.tsukuba.ac.jp で使われ ているもの。

$ openssl x509 -text -noout < coins-www.cert[←]
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 7430499864033232533 (0x671e7042034a0695)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=JP, L=Academe, O=National Institute of Informatics, CN=NII Open Domain CA - G4
        Validity
            Not Before: Jun 28 02:03:19 2017 GMT
            Not After : Jul 29 02:03:19 2019 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:da:ed:9a:c8:c2:6a:55:97:ab:92:5f:7b:f0:dd:
                    1a:e3:b7:45:df:06:d0:d6:06:ec:18:b5:80:5e:c4:
                    f2:c4:4d:5d:31:d0:52:44:05:bc:4d:de:dc:50:10:
                    7e:0a:96:e7:82:90:5b:41:f5:bc:bd:95:a6:df:07:
                    58:a4:86:cf:3f:2e:cc:f3:d9:83:80:66:72:09:66:
                    97:b9:b8:6b:2a:bc:5b:90:14:a9:aa:57:47:07:aa:
                    34:04:9b:bb:35:1b:15:39:5b:1c:c2:70:b9:cd:cf:
                    4f:f6:04:4e:a6:c9:f5:58:94:69:73:b2:8b:f2:9c:
                    41:07:4f:1c:b7:4b:e0:e9:c2:dd:c8:d1:bb:34:8a:
                    37:88:ed:4f:6a:5d:30:3d:d5:46:02:2d:c6:32:54:
                    f3:9b:e3:c2:c2:42:17:ac:0b:5b:5b:da:ab:2b:27:
                    eb:39:41:cb:34:d1:3e:60:82:c5:df:16:1e:f0:13:
                    94:1a:f9:ef:4a:ad:7b:89:d3:81:d3:ea:4d:b4:48:
                    00:55:3a:29:62:11:01:48:0d:7a:52:aa:40:02:3a:
                    f2:d8:a9:f5:95:b4:8d:f8:f0:87:10:a4:52:07:46:
                    77:bb:fc:55:7e:11:04:04:18:0e:20:4c:cd:21:8d:
                    c4:07:8d:2b:bd:62:2e:c0:ad:b4:ff:b8:16:18:ad:
                    06:c9
                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: 
                BA:DA:CC:A9:10:6A:67:88:A7:3D:4C:CE:2F:3E:84:94:6E:26:E6:BC
            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
         66:73:33:bc:6c:ba:b9:81:47:41:82:74:64:6c:c7:9a:fa:c6:
         bb:37:72:56:b0:e3:d3:76:70:bf:fb:59:6a:92:9b:dd:4d:5e:
         f7:9c:2b:9c:88:3c:d9:17:3e:20:f7:34:53:0a:6a:5b:a9:4e:
         dc:5f:34:42:3b:65:26:66:14:3b:2e:b2:08:ee:27:98:83:14:
         62:3e:ff:46:e7:b1:76:a8:7a:e5:58:42:ad:6a:ae:fe:9d:7a:
         fc:25:e5:b8:bd:f9:68:32:1c:7e:ba:1f:90:0b:a4:67:e0:7b:
         d2:d7:6f:3e:14:b6:c9:59:fd:4b:59:b8:96:5a:1a:61:77:66:
         ab:f1:6a:07:eb:48:24:24:44:39:1a:c8:b3:2c:6f:4c:39:df:
         90:68:cf:f0:a3:81:b9:5d:1c:7f:44:17:74:13:2c:86:98:52:
         ce:da:23:9e:99:59:20:60:2f:ef:2b:cd:ee:97:72:47:02:0a:
         4b:a2:ba:11:23:1a:bd:12:90:69:c4:7c:fb:e6:eb:8d:60:32:
         cc:73:a0:4f:00:fd:9b:0f:67:a1:d7:61:f9:36:a2:00:df:9d:
         ee:6d:6f:7a:49:36:0d:c1:71:02:57:97:37:e8:d7:98:1b:e7:
         0e:3f:ad:3d:4b:e5:15:e6:f9:38:2d:86:e3:d9:9c:e5:1b:95:
         62:15:19:b6
$ []

◆認証局の階層/信頼の鎖

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

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

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

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

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

ブラウザ、ルート認証局、中間認証局、末端の証明書。ルートは自己署名。
図? ルート認証局から始まる証明書のチェーン

◆SSLでの暗号系の利用

■SSH

SSH (Secure Shell) は、r系コマンドの secure な置き換え。

◆r系コマンド

rlogin
remote login。遠隔ログイン。 (文字端末を使っている状態で)別のコンピュータにネットワーク経由で接続し てログインし、別のコンピュータを(文字端末の状態で)利用可能にする。
rsh
remote shell (sh)。別のコンピュータでプログラムを実行する。
rcp
remote copy (cp)。別のコンピュータとの間でファイルをコピーする。 使い方が cp に似ている。
ftp
file transfer program/protocol。別のコンピュータとの間でファイルをコピーする。 使い方は、rcp とは異なり、対話的。
遠隔(remote)の対になる言葉は、ローカル(local)。

◆r系コマンドの弱点

◆SSHでの解決方法

ssh
secure shell (sh)。 プログラムを指定した時には、別のコンピュータでプログラムを実行する。 プログラムを指定しない時には、 別のコンピュータに遠隔ログインする。 (文字端末を使っている状態で)別のコンピュータにネットワーク経由で接続し てログインし、別のコンピュータを(文字端末の状態で)利用可能にする。
slogin
secure login 。ssh を遠隔ログインのコマンドとしてとして使う。 実際には ssh がよく使われ、slogin は使われない。
scp
secure copy (cp)。SSH の仕組みを使って 別のコンピュータとの間でファイルをコピーする。
sftp
別のコンピュータとの間でファイルをコピーする。 使い方は、ftp コマンドに似ている。

◆クライアントとサーバ

インターネットで通信をプログラムを利用する時、 「クライアント」と「サーバ」という分けて考えることが多い。

例:

コンピュータが1台しかない場合、プログラムは1つでよい。通信をする場合 には、プログラム(コンピュータ)が2つになる。そのうちの1つのプログラ ム(またはコンピュータ)を、「クライアント」、もう1つを「サーバ」とい う。

◆sshにおけるクライアントとサーバ

◆SSHにおけるホストの認証

SSH (scp含む)では、クライアントが接続先のコンピュータ(ホスト)で動いてい るサーバが本物であるかどうかどうかを確認する(ホストを認証する)。ホス トの認証には、公開鍵暗号系を使う。

◆SSHにおけるホストの公開鍵のハッシュ値の確認

ssh (scp, WinSCP, PuTTY, Tera Term含む) で始めてあるホストに接続する時 には、警告が現れる。

ssh コマンド

$ ssh ユーザ名@ホスト名[←]
The authenticity of host 'ホスト名 (IPアドレス)' can't be established.
RSA key fingerprint is SHA256:64進数43桁.
Are you sure you want to continue connecting (yes/no)? yes[←]
Warning: Permanently added 'ホスト名,IPアドレス' (RSA) to the list of known hosts.
ユーザ名@ホスト名's password: (パスワードを打つ。画面には表示されない。)[←]
ホスト名:~ ユーザ名$ []

この 64進数(base64)43桁 256 ビット (または16進数32桁 128ビット) の数は、接続先のホストの公開鍵を、ハッシュ関数 SHA256 (またはMD5) にかけた結果である。この43桁(または32桁)の数を目で確認することに より、 接続先のホストが正しい( man-in-the-middle攻撃 が行われていない)ことがわかる。

ホストの公開鍵は、普通、2048 ビット以上あるが、これを人の目で比較するの はつらい。そこで、ハッシュ関数により、ビット数を減らして、人の目で確認 できるようにしている。SSHのプログラムは、公開鍵全体を保存しているが、人 間に表示する時には、ハッシュ値で表示している。

◆coinsの主なホストの公開鍵のハッシュ値

◆筑波大学全学計算機システムの主なホストの公開鍵のハッシュ値

◆SSHでのユーザの認証

暗号化された通信路が確立された後は、パスワードを流しても安全である。

個人ごとに公開鍵での認証機能を利用したほうがよい。

coins では、学外から SSH で接続する時には、パスワードによる認証が使えな い。外部から、SSH で接続するには、公開鍵を使うしかない。 練習問題 sshにおける公開鍵による認証 参照。

◆sshにおける公開鍵による認証

SSH では、公開鍵暗号を使った利用者認証 が使える。

■Webサーバ・アクセスログ

Web サーバでは、一般に、クライアントからページがアクセスされるごとに、 記録を残している。この記録を アクセスログ(access log) という。アクセスログには、次のような内容が記録される。 以下にログの例を示す。実際には1行。表示のため折り返している。
130.158.86.250 - - [15/May/2018:16:56:25 +0900] "GET /~yas/coins/liter
acy-2018/ HTTP/1.1" 200 5714 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS 
X 10.13; rv:60.0) Gecko/20100101 Firefox/60.0"

130.158.86.250 - - [15/May/2018:16:56:25 +0900] "GET /~yas/coins/liter
acy-2018/coins-literacy-2018.css HTTP/1.1" 200 2417 "http://www.coins.
tsukuba.ac.jp/~yas/coins/literacy-2018/" "Mozilla/5.0 (Macintosh; Inte
l Mac OS X 10.13; rv:60.0) Gecko/20100101 Firefox/60.0"
この例では、一番左に表示されているものは、クライアントの IP アドレスで ある。その他に、日付やどの URL をアクセスしたか、転送したバイト数、 ブラウザの種類も表示されている。

Webブラウザを利用する時には、サーバ側にアクセスログが残されていることを 意識する。

練習問題 学類 Web サーバのアクセス・ログの観察 参照。

■実習

実習時間中には、 以下の課題をできるだけ多く行いなさい。全部を行う必要はない。

★練習問題(1101) whoami,groups,idコマンド

whoami, groups, idコマンドを使って、プロセス(シェル)のUID, GID, groups 属性を表示しなさい。
$ id [←]
$ whoami [←]
$ groups [←]

★練習問題(1102) 他人から読み書き可能な自分のファイル

ルートからホームディレクトリにいたる間でのディレクトリのモードを調べな さい。
$ echo ~ [←]
$ ls -ld / [←]
$ ls -ld /home [←]
$ ls -ld /home/ugrad/ [←]
・・・中略・・・
$ ls -ld  ~ [←]
ディレクトリ ~/public_html, ~/public_html/htdocs や ~/public_html/index.html のモードを調べな さい。
$ ls -ld ~/public_html [←]
$ ls -ld ~/public_html/htdocs [←]
$ ls -l  ~/public_html/htdocs/index.html [←]
他の人(WWWページとして公開するために、WWWサーバ・プロセスからのアクセ スも含む)がアクセスしようとしたらどうなるかを考察しなさい。

その他に、次のファイルやディレクトリのモードを調べなさい。

★練習問題(1103) 自分が読み書き可能な他人のファイル

他人のファイルで、内容を読む事ができるファイルを読みなさい。 たとえば、新城のファイルを読むには次のようにする。
$ cd ~yas [←]
$ ls -l [←]
$ ls -l literacy-a* [←]
$ lv literacy-a2.txt [←]
$ lv literacy-a3.txt [←]
$ []

★練習問題(1104) アクセス不可能な他人のファイル

他人のファイルで、内容を読む事がでないファイルを読もうとしてみなさい。  たとえば、新城のファイルを読もうとするには次のようにする。
$ cd ~yas [←]
$ ls -l [←]
$ ls -l literacy-a* [←]
$ lv literacy-a4.txt [←]
$ lv literacy-a5.txt [←]
$ []

★練習問題(1105) psとkillコマンド復習

ps コマンドと kill コマンド、grep コマンド、lv コマンドの使い方を復習しなさい。

★練習問題(1106) 他人のプロセスのkill

ps コマンド、grep コマンド、lv コマンド等で、他人のプロセスの PID を調 べなさい。その PID を使って、他人のプロセスを kill してみなさい。その結 果、そのプロセスがどうなるかを調べなさい。

★練習問題(1107) chmod コマンド

chmod コマンドで、ファイルやディレクトリのモードを変更しなさい。 以下の例は、file1に対して、グループ(g)とそれ以外の人(o)に対して「読込み 可」の許可を取り除いている。
$ ls -l file1.txt  [←]
-rw-r--r--  1 yas  prof  2  5 10 18:59 file1.txt
$ chmod go-r file1.txt  [←]
$ ls -l file1.txt  [←]
-rw-------  1 yas  prof  2  5 10 18:59 file1.txt
$ []
go-r を含めて、様々なモードの設定方法がある。 次の設定方法の意味を確認しなさい。

★練習問題(1108) WWWページのファイルのモード

WWW ページとして公開するファイルのモードはその他(others)に対するアクセ ス許可で r ビットが立っている必要がある。もし、このビットを chmod o-r で落した場合、Web ブラウザでアクセスできなくなる。このことを確かめなさ い。

$ cp sample1.html sample2.html  [←]
<アクセス制御のテスト用のファイルを cp コマンドで作成する。>
$ ls -l sample2.html  [←]
-rw-r--r--  1 yas  prof  408  5 18 11:11 sample2.html
<Firefoxでアクセス、再読み込み等>
$ chmod o-r sample2.html  [←]
$ ls -l sample2.html  [←]
-rw-r-----  1 yas  prof  408  5 18 11:11 sample2.html
<Firefoxでアクセス、再読み込み等>
$ chmod o+r sample2.html  [←]
$ ls -l sample2.html  [←]
-rw-r--r--  1 yas  prof  408  5 18 11:11 sample2.html
<Firefoxでアクセス、再読み込み等>
$ []

同様に、ディレクトリを作成し、その他(others)に対する x ビットを立てたり 落したりしながら、その効果を確認しなさい。

$ cd ~/public_html/htdocs [←]
$ mkdir dir1 [←]
$ emacs dir1/file1.html [←]
$ ls -ld dir1 [←]
$ ls -l dir1/file1.html [←]
<Firefoxでアクセス、再読み込み等>
$ chmod o-x dir1 [←]
$ ls -ld dir1 [←]
<Firefoxでアクセス、再読み込み等>

★練習問題(1109) sshコマンドによるcoins内のコンピュータへの遠隔ログイン

手引き 9.1.2項 参照手引き 2.13節 参照The Unix Super Text 29.3.1項 参照。 ssh コマンドを利用して、別のコンピュータに遠隔ログインしてみなさい。
host1$ ssh hostname[←]
Password: (パスワードを打つ。画面には表示されない。)[←]
hostname$ []
hostname は、 www など、接続したいコンピュータの名前を入れる。

実習では、別のコンピュータとしては、次のものを利用しなさい。

これらのホスト名には、正確には、coins.tsukuba.ac.jp を付ける。
$ 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 SHA256:SYjMOrBocR7+rK84UwAGBT7lagi0hyQdGVEj45U1w1Q.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'www,130.158.87.1' (RSA) to the list of known hosts.
yas@www's password:
Last login: Sun May 20 20:53:06 2018 from violet-nwa.coins.tsukuba.ac.jp
violet-nwa:~ yas$ []
この fingerprint は、接続先のホストの公開鍵のハッシュ値である。これが次 のリストに含まれているかを確認してから yes と打ち込みなさい。

遠隔ログインが成功すると、ログイン先でシェルが実行される。シェルのプロ ンプトには、(多くの場合)ホスト名が含まれているので、遠隔ログイン後に は、プロンプトが変化する。シェルを終了(exitコマンド)すると、遠隔ログイ ン自身も終了する(ログアウトする)。

ssh で遠隔ログインした後に、シェルのプロンプトが変わることを確認しなさ い。また、exit コマンドを実行すると、ログアウトできることを確認しなさい。

  1. iTerm で端末を開く。シェルが実行される。
  2. プロンプトを観察する
  3. ssh で遠隔ログインする
  4. プロンプトを観察する
  5. exit コマンドで、遠隔ログインのログインシェルを終了する(ログアウトする)
  6. プロンプトを観察する
  7. exit コマンドで、iTerm で最初のシェルを終了する。

★練習問題(1110) 遠隔ログインによるhostnameコマンドの実行

hostnameコマンド コマンドを利用すると、コンピュータのホスト名を調べることができる。 ssh による遠隔ログインの前後で hostname コマンドの結果を比較しなさい。
(sshを実行する前、iTtermを実行した直後。)
$ hostname [←]
(iMac のホスト名が表示される。)
$ ssh www [←]
$ hostname [←]
(www サーバのホスト名が表示される。)
$ exit [←]
$ []

★練習問題(1111) 遠隔ログインによるifconfigコマンドの実行

ifconfig コマンドを利用すると、コンピュータの IP アドレスを調べることができる。 ssh による遠隔ログインの前後で ifconfig コマンドの結果を比較しなさい。
(sshを実行する前、iTtermを実行した直後。)
$ ifconfig en0 [←]
(inet の次に iMac の IP アドレスが表示される。)
$ ssh www [←]
$ ifconfig eth0 [←]
(inet の次に www サーバの IP アドレスが表示される。)
$ exit [←]
$ []

★練習問題(1112) 学類 Web サーバのアクセス・ログの観察(http)

次の手順で、学類 Web サーバに保存されている アクセス・ログを観察しなさい。
  1. ssh コマンドで www.coins.tsukuba.ac.jp にログインする。 RSA key fingerprint が、以下のようになっていることを確認してから yes と打つこと。偽物のホストに接続してパスワードを打ってはな らない。
    crocus40:~ yas$ ssh www[←]
    The authenticity of host 'www (130.158.87.1)' can't be established.
    RSA key fingerprint is SHA256:SYjMOrBocR7+rK84UwAGBT7lagi0hyQdGVEj45U1w1Q.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'www,130.158.87.1' (RSA) to the list of known hosts.
    yas@www's password:
    Last login: Sun May 20 20:53:06 2018 from violet-nwa.coins.tsukuba.ac.jp
    violet-nwa:~ yas$ []
    
  2. cd コマンドで、ログがあるディレクトリに移動する。
    violet-nwa:~ yas$ cd /var/log/httpd/http[←]
    violet-nwa:http yas$ pwd[←]
    /var/log/httpd/http
    violet-nwa:http yas$ []
    
  3. このディレクトリで、ls コマンドを実行しなさい。以下の例で、 access* の「*」は、 シェルの ファイル名置換 の意味である。
    violet-nwa:http yas$ ls[←]
    (多くのファイルが表示される)
    violet-nwa:http yas$ ls access*[←]
    (多くのファイルが表示される)
    violet-nwa:http yas$ ls access* | tail -1[←]
    access_log_20180521
    violet-nwa:http yas$ ls -t access* | head -1[←]
    access_log_20180521
    violet-nwa:http yas$ 
    
    この例では、access_log_20180521 が最新のものである。
  4. このファイルを lv コマンドで表示しなさい(スペースキー、bキー、qキーで操作)。
    $ lv access上のlsの結果で置き換える [←]
    
    たとえば、上の例では、次のように打つ。
    $ lv access_log_20180521 [←]
    
  5. このファイルを、tail コマンドで表示しなさい。
    $ tail access上のlsの結果で置き換える [←]
    (表示がなされる。)
    (しばらく待つ。)
    $ tail access上のlsの結果で置き換える [←]
    (表示がなされる。)
    (しばらく待つ。)
    $ tail access上のlsの結果で置き換える [←]
    (表示がなされる。)
    
    (しばらく間隔を空けてから)数回 tail コマンドを実行すると、その度に行 が増えているはずである。 たとえば、上の例では、次のように打つ。
    $ tail access_log_20180521 [←]
    $ tail access_log_20180521 [←]
    $ tail access_log_20180521 [←]
    
Webサーバ・アクセスログ を参考にして、アクセスログの意味を解釈しなさい。

★練習問題(1113) 学類 Web サーバのアクセス・ログの観察(grep)

自分自身で、情報科学類の Web ページをアクセスした時に、自分が使っている iMac の IP アドレスが表示されることを確認しなさい。

  1. まず 練習問題(1111) を参考にして自分自身が使っている iMac の IP アドレスを調べなさい。
  2. 次のように grep コマンドを使って、IP アドレスを検索しなさい。
    $ grep IPアドレス アクセスログのファイル名 [←]
    
    たとえば、IP アドレスが 130.158.86.249 であれば、次のように打つ。
    $ grep 130.158.86.249 アクセスログのファイル名 [←]
    
    ここで「アクセスログのファイル名」は、 練習問題 学類 Web サーバのアクセス・ログの観察 で調べなさい。 たとえば、その練習問題の例では、次のように打つ。
    $ grep 130.158.86.249 access_log_20180521 [←]
    
もし、何も現れなければ、コンピュータ・リテラシの Web ページをアクセスし なさい。

★練習問題(1114) 学類 Web サーバのアクセス・ログの観察(tail-f)

ログのファイルを tail -f で表示してみなさい。
$ tail -f アクセスログのファイル名 [←]
ここで「アクセスログのファイル名」は、 練習問題 学類 Web サーバのアクセス・ログの観察 で調べなさい。 たとえば、その練習問題の例では、次のように打つ。
$ tail -f access_log_20180521 [←]
-f オプションを指定すると、tail コマンドは終了することなく新しく追加さ れた行を表示する。この tail コマンドは、自動的には終了しないので、終わっ たら、 ^C (Control+C) で強制終了させる。

★練習問題(1115) 学類 Web サーバのアクセス・ログの観察(https)

情報科学類では、2つの World Wide Web のサーバを実行している。 練習問題(1112) と同様に、 SSL を用いているサーバについて、アクセスログを観察しなさい。

★練習問題(1116) ~/.ssh/known_hostsの観察

一度遠隔ログインしたホストについては、~/.ssh/known_hosts にそのホストの 公開鍵が保存される。そのことを確認しなさい。
$ cat ~/.ssh/known_hosts [←]
www ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAv2S59b8mM56WSiNtdRr692yi1bxSub+k1WFXZIfK
bxqq5ZaMHEZaPK5nyU8ebekSIAb0oQq+pz2emaugnFMByExheM+Od19r2moXo3w4Qk9VejfhY77eEXNa
DS9ipw0u+MgLYQ1eeaVnsJOZ0Ia7TjUF+zPk25aY5TaLTWTiBWBq1eVIqrH6xieStXHbyDBaSoWU5++V
Cy3zYAhWA5ZG+sBq4wr2RYJhpG5PM/aIrT1RKmL3t+JmDTnBb8vyNyNncWrZfPppvnDFhgNUNObvtylI
O2791lrd211rRc6QEc5MBkSnKAQqpGPyBCe0Y9w96peMMTcUQNgVB8kmDJnOIw==
$ []

★練習問題(1117) ssh -l オプションや user@remotehost の形式によるログイン

ログイン先とログイン元でユーザ名が異なる時には、次のように、-l オプショ ンに続きログイン先のユーザ名を使う。

host1$ ssh remotehost -l user[←]
Password: (パスワードを打つ)[←]
remotehost$ []
または、「@」の前にログイン先のユーザ名を指定する。
host1$ ssh user@remotehost[←]
Password: (パスワードを打つ)[←]
remotehost$ []
この -l オプションを利用する方法や @ を利用する方法で遠隔ログインを行っ てみなさい。(注意:同じ場合でも、あえて指定することもできる。)

★練習問題(1118) 遠隔ログインによるコマンドの実行

遠隔ログインを行い、次のコマンドを実行しなさい。そして、遠隔ログインを 行っていない時(ローカルでの実行結果)と比較しなさい。 この実習では、端末を2枚開き、片方の端末で遠隔ログインを行い、もう片方 ではそのまま実行し、2つの結果を比較する。

★練習問題(1119) ssh、ホストの公開鍵の確認

次のようなコマンドで、そのコンピュータのホストの公開鍵を表示してみなさ い。また、次のようにしてハッシュ値を表示しなさい。

macOS

$ 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 [←]

★練習問題(1120) ssh、known_hosts

ssh コマンドで遠隔ログインをし、ログアウトしなさい。次のようなファイル やディレクトリが作られたこと(存在すること)を確認しなさい。
$ 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 [←]
<結果省略>
$ []

★練習問題(1121) Firefox SSLの証明書の表示

Firefox を使って、Web サーバが提示している証明書を表示してみなさい。
  1. SSL のページを開く。https://www.coins.tsukuba.ac.jp/ce/ 等。
  2. ロケーション・バー(ウィンドウの上部のURL が表示されている部分)の 「https」の左側に表示されている錠のアイコンをクリックする。
    Firefox、ロケーション・バー、錠、安全な接続
(クリックで拡大)
  3. 「>」をクリックする。
    Firefox、ロケーション・バー、錠、安全な接続、「>」
(クリックで拡大)
  4. 「詳細を表示」ボタンを押す。
    Firefox、安全な接続、詳細
(クリックで拡大)
  5. 開かれたウインドで、「セキュリティ」タブを選ぶ。
  6. 「証明書を表示」ボタンを押す。 「証明書ビューア」のウィンドウが開く。
    Firefox、安全な接続、証明書を表示
(クリックで拡大)
  7. 「詳細」を開く。
    Firefox、証明書ビューア、詳細
(クリックで拡大)
次の項目を調べなさい。

★練習問題(1122) Firefoxのルート認証局

Firefoxが保持しているルート認証局のリストを表示しなさい。
  1. 「Firefox」メニューの「環境設定」を選ぶ
  2. 「詳細」ボタンを表示する。
  3. 「証明書」タブを開く
  4. 「証明書を表示」ボタンを押す
  5. 「認証局証明書」タブを選ぶ
このリストの中に 練習問題(1121) SSLの証明書の表示 で表示したルート認証局が含まれているか確認しなさい。

★練習問題(1123) sshにおける公開鍵による認証

coins では、学外からの SSH での接続で、パスワードによる認証が使えない。 外部から、SSH で接続するには、公開鍵を使う必要がある。coins のコンピュー タで、以下の手順で公開鍵と秘密鍵の組を作成したら、秘密鍵を ssh のクライ アントにコピーして利用する。

ssh で、 公開鍵暗号を使った利用者認証 を利用しなさい。

まず、ssh-keygen コマンドを使って、公開鍵と秘密鍵の組を生成しなさい。

$ 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 つのファイルが作られる。 前者に、秘密鍵、後者に公開鍵が保存される。秘密鍵の方は、パスフレーズを 鍵とした「対称暗合系」で暗号化されて保護される。パスフレーズは、長く (10-30文字)にする。(この課 題で、うまく動作していることを確認するためには、通常のログインのパスワー ドとは必ず違うものにしなさい。)

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': 
macOS では、次のように、ウインドウが表示されることがある。


図? macOS で ssh 公開秘密鍵のパスフレーズの打ち込み(ssh-agentとキーチェーンアクセスの機能)

これに対して、ssh-keygen でパスフレーズを打ち込む。(公開鍵による認証に 失敗すると、通常のパスワードによる認証に落ちるのが一般的である。システ ムによっては、認証方式に制限を加えていることがある。)

★練習問題(1124) ssh-agentの実行(coins macOS)

秘密鍵を管理するプロセス ssh-agent を使えば、一度だけパスフレーズを打ち、 それに登録すれば、ssh でログイン時の度にパスフレーズを打たないよくなる。 さらに、macOS では、ssh 秘密鍵のパスフレーズを Keychain Access に登録 することもできる。

coins の iMac で macOS が動作している時には、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.
$ []

★練習問題(1125) ssh-agentの実行(手動)

Linux 等、ssh-agent が動いていない場合、手動で実行することも できる。 まず、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.
$ []
次に、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 [←]

★練習問題(1126) ssh-agentの利用

ssh-agent を実行したら、次のように利用できる。
$ 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 [←]
	        鍵の利用
$ []

★練習問題(1127) macOS キーチェーンアクセス(Keychain Access.app)

キーチェーンアクセスは、macOS に付属している、パスワード等の機密情報を 暗号化して保存するプログラムである。 暗号化には、利用者が指定したパスワードを鍵として使う。 標準では、次のファイルに、暗号化された機密情報を保存している。 このファイルが存在することを ls -l や Finder で確認しなさい。

「キーチェーンアクセス.app」のパスワードとログインの時に打つパスワード を同じにしていると、自動的に機密データの暗号を解いてアプリケーションに 渡す機能がある。注意すべきことは、ログイン・パスワードを変更しても、 「キーチェーンアクセス.app」のパスワードは変更されないことである。 活用するには、ログイン・パスワードを変更したら、 「キーチェーンアクセス.app」のパスワードも変更するとよい。

何も使っていなければ、「キーチェーンアクセス.app」のパスワードは、初期 パスワードのままになっている。重要な情報を保存していなければ、上記のファ イルを削除し、ログインしなおすことで、リセットするとよい。

次のような macOS のアプリケーションが、「キーチェーンアクセス.app」を 使って機密情報を暗号化して保存することができる。

「キーチェーンアクセス.app」を実行して、どのような機密データが保持され てるかを見てみなさい。

次の手順でパスワードを暗号化して保存しなさい。

  1. 保存前に最終更新時刻を調べる。
    $ ls -l ~/Library/Keychains/login.keychain [←]
    
  2. キーチェーンアクセスを実行する。
    $ open "/Applications/Utilities/Keychain Access.app" [←]
    
  3. 「ファイル」メニューから「新規パスワード項目」を選ぶ。
  4. 開かれたウィンドウで、次の項目を埋める。
  5. 項目を埋めたら、「追加」ボタンを押す。
  6. 先ほど追加した項目が、表示される。
  7. ダブルクリックすると、ウィンドウが開かれ、「キーチェーン項目」と 「アカウント名」が表示される。
  8. さらに、「パスワードを表示」のチェックボックスを押すと、パスワード が表示される。この時、必要ならばログインのパスワードを打ち、「常に許 可」、「拒否」、「許可」から選ぶ。
  9. 保存後に最終更新時刻を調べる。
    $ ls -l ~/Library/Keychains/login.keychain [←]
    

★練習問題(1128) opensslコマンドによるハッシュ値の計算

次の手順で、SHA-1 によりハッシュ値を計算してみなさい。 引数として、sha1 の代わり, sha224, sha256, sha384, sha512, md5 と指定し て、それぞれハッシュ値を計算しなさい。

★練習問題(1129) Tera Term、その他のプログラムの利用

手引き 9.1.2節 参照。 Tera Termや PuTTYは、Windows で動作するssh のクライアントである。これら のプログラム、または、類似のプログラムを用いて、coins の外部からcoins 内のコンピュータに接続しなさい。

★練習問題(1130) VPNの利用

VPN (Virtual Private Network) とは、 インターネットという誰もがアクセス可能なネットワークを利用しながら、 事実上専用線(private network) を使っているように安全な通信路を 提供する事実である。VPN を実現するためには、暗号化の技術が使われている。

coins でも、VPN 機能を提供している。 手引き 9.3節 参照。 この機能を利用しなさい。

★練習問題(1131) 8進数を利用したchmodコマンド

chmod コマンドは、モードを8進数で与えることもできる。 新Linux/UNIX入門 09章 056節、059節 参照The Unix Super Text 21.5節 参照。 また、利用してみなさい。 8進数で指定することの利点を考えなさい。

★練習問題(1132) umaskの影響調査

新しく生成されるファイルは、マスク、または、umask の影響を受ける。 新Linux/UNIX入門 09-058節 参照The Unix Super Text 21.5節 参照。 このことを確認しなさい。

★練習問題(1133) chgrp コマンド

chgrp コマンドで、ファイルやディレクトリのGID属性を変更しなさい。
$ ls -l file1.txt [←]
(ファイルのグループの表示)
$ id [←]
(自分(プロセス)が属しているグループの表示)
$ chgrp グループ file1.txt [←]
$ ls -l file1.txt [←]
(ファイルのグループの表示)
$ []
まず、適当な内容を持つテキスト・ファイルを作成しなさい。
$ echo hello > file1 [←]
$ ls -l file1 [←]
-rw-r--r--  1 yas  prof  6  5 23 22:28 file1
$ cat file1 [←]
hello
$ []
そして、次のような要求を満たすように chmod コマンドを使ってモードを変更 しなさい。提出するファイルには、chmod コマンドをどのように利用したか、 また、その結果 ls -l の表示がどのようになったかを含めなさい。

★練習問題(1134) mkdirとchmodによる drop box ディレクトリの実装

同じコンピュータ(ファイルサーバ)を共有しているユーザ間で秘密のファイ ルを受け渡しする方法として、受信側のディレクトリに drop box となる ディレクトリを作成する方法がある。このディレクトリは、 次のようなモードを持つ。
$ ls -ld dropbox [←]
drwx-wx-wx  2 yas  prof  80  5 22 15:28 dropbox
$ []
送信側は、受信者が読めるモードで、ファイルを作成し、受信者の drop box ディレクトリの下にコピーする。
$ emacs file-2018-05-22.text [←]
$ ls -l file-2018-05-22.text  [←]
-rw-r--r--  1 yas  prof  56353  5 22 15:38 file-2018-05-22.text
$ cp file-2018-05-22.text ~user/dropbox [←]
$ []
送信者は、このディレクトリから目的の取り出す。cp コマンド等でファイルを コピーし、元のファイルを rm コマンド等で削除する。

このような drop box を用いて、隣の人、あるいは、その他の友人にファイルを渡しなさい。 同様に、ファイルを受け取りなさい。

$ ls -l file-2018-05-22.text  [←]
-rw-r--r--  1 yas  prof  56353  5 22 15:38 file-2018-05-22.text
$ cp file-2018-05-22.text ~ [←]
$ rm file-2018-05-22.text [←]

注意: macOS では、このディレクトリは標準で ~/Public/Drop Box という名前のディレクトリを用いる。名前に空白が含まれていることに注 意しなさい。このディレクトリの使い方は、次のページに書かれている。

coins では、このディレクトリ~/Public/Drop Box は、自動的には作 成されない。この練習問題では、このディレクトリを用いても良いし、他の名 前のディレクトリでもよい。

注意: この練習問題では、 インターネット上のファイル・サービス https://www.dropbox.com/ を用いない。

★練習問題(1135) mkdirとchmodによる drop box ディレクトリの実装(2)

この drop box の使い方では、ファイル名として予測 可能なものを用いた場合、本来の受信者だけでなく、その他のユーザがファイ ルをアクセスすることも可能である。どのようにすれば、アクセスできるのか を説明しなさい。

他の人へのアクセスを防ぐ方法として、ファイル名に乱数(予測されない文字 列)を含める方法がある。この方法を練習してみなさい。

なお、cp コマンド等でコピーした場合には、ps コマンドで引数が表示される ことがある。このことを確認しなさい。ファイル名を秘匿してdrop box に書き 込む時には、ps で表示されない方法を使う必要がある。その方法を考えなさい。

★練習問題(1136) ディレクトリのGIDの伝播

UIDとGIDの伝播を確認しなさい。 /tmp など、誰でも書き込みできる場所にファイルを作成すると、その ファイルの UID 属性はどうなるか調べなさい。新たに実験用のディレクトリを mkdir コマンドで作成しなさい。そのディレクトリのGID属性を chgrp で変更 し、その中に新たなファイルやディレクトリを作成したら、その GID がどう設 定されるかを確かめなさい。また、既存のファイルをmv コマンドで移動したら どうなるかを調べなさい。

★練習問題(1137) ssh+ps+kill

★練習問題(1138) ssh+ps+kill(2)

次のことを行ってみなさい。

★練習問題(1139) IPアドレスによる ssh コマンドの利用

digコマンドhostコマンド で接続するホストの IP アドレスを調べなさい。 ssh コマンドの引数としてホスト名の代わりに IP アドレスを指定しなさい。
$ host www.coins.tsukuba.ac.jp [←]
www.coins.tsukuba.ac.jp is an alias for violet-nwa.coins.tsukuba.ac.jp.
violet-nwa.coins.tsukuba.ac.jp has address 130.158.87.1
$ ssh 130.158.87.1 [←]
<省略>

★練習問題(1140) ssh、ポート番号の指定

ssh コマンドでは、標準的にはサーバ側(接続を受ける方、遠隔側)では、ポー ト番号 22 が利用される。22 以外のポート番号を利用している時には、-p オ プションによりその番号を指定することができる。-p オプションの動作を確認 しなさい。
$ ssh        www.coins.tsukuba.ac.jp [←]
$ ssh -p  22 www.coins.tsukuba.ac.jp [←]
$ ssh -p 100 www.coins.tsukuba.ac.jp [←]

★練習問題(1141) ssh、random artの表示

ssh でログインする時に、ホストの公開鍵の fingerprint だけでなくrandom art を表示しなさい。fingerprint ではなく、random art でホストの鍵を確認 することの利点を考えなさい。
$ ssh -o VisualHostKey=yes www.coins.tsukuba.ac.jp [←]
Host key fingerprint is 17:1a:63:a8:0d:82:e3:d6:60:f7:fb:28:1a:19:4e:7b
+--[ RSA 2048]----+
|                 |
| .     .         |
|oo... . + .      |
|o.+..+ . + .     |
| = .... S .      |
|+ +   .  .       |
| = E .           |
|  o.  o          |
| .. .. .         |
+-----------------+
<省略>

★練習問題(1142) ディスクユーティリティ.appによるディスクイメージの作成

macOS の「ディスクユーティリティ.app (Disk Utility.app) 」は、ハードディス クを管理するためのアプリケーションである。通常は、実際に対して「フォー マット」という作業を行い、ハードディスクを分割して「ファイル」や「ディ レクトリ」を通じてアクセス可能にする。

急に電源が落ちた時などには、ハードディスクの状態が「ファイル」や「ディ レクトリ」としては正常にアクセスできなくなることがある。「ディスクユー ティリティ.app」は、このような時に不整合を修復する 機能がある。コンピュータの電源を入れた時に自動的に実行されることもある。

「ディスクユーティリティ.app」を使うと、1つの大きなファイルを、1個の ハードディスクのように扱うことができる。このように、ディスクに見立てる ことができるデータのことを「ディスク・イメージ」という。「ディスクユー ティリティ.app」を使うと、ディスク・イメージをファイルに保存することが でき、また、ファイルに保存されたディスク・イメージを、「マウント」とい う操作を行い、通常のアプリケーションからファイルとディレクトリの集合と してアクセス可能にする。

macOS では、ディスク・イメージを含むファイルの拡張子は、「.dmg」である。

自分で CD-R や DVD-R にファイルを保存する時には、まず、 「ディスクユーティリティ.app」を使って ディスク・イメージをファイルに保存する方法が一般的である。

次のような操作を行い、ディスクイメージを作成し、利用してみなさい。

★練習問題(1143) ディスクユーティリティ.appによる暗号化されたディスクイメージの作成

macOS の「ディスクユーティリティ.app (Disk Utility.app) 」を 使って、暗号化されたディスク・イメージを作成しなさい。 暗号化の方式としては、AES が使われることを確認しなさい。

★練習問題(1144) zip,unzip コマンドによる圧縮とアーカイブ

zip コマンドを用いて Zip 形式のアーカイブ(保存や移動のために、複数のファ イルをまとめた1つのファイル)を作成しなさい。unzip コマンドを用いて Zip 形式のアーカイブを展開しなさい。

★練習問題(1145) zip,unzip コマンドによるファイルの暗号化・復号

zip コマンド、および、unzip コマンドは、アーカイブを作成・展開する時に、 暗号化・復号を行うことができる。このことを確認しなさい。

★練習問題(1146) openssl コマンド

openssl コマンドには、次のような機能が含まれている。 man コマンドを用いてこれらの機能を調べなさい。 また、これらの機能を実行してみなさい。

★練習問題(1147) gpg2 コマンド

gpg2 コマンドを使ってみなさい。 くわしくは、man gpg2や gpg2 --help をみなさい。

★練習問題(1148) Thunderbird のディジタル署名と暗号化機能

Thunderbird では、ディジタル署名の機能と暗号化機能を利用することが出来る。 これを動作させてみなさい。

★練習問題(1149) Emacs Mew のディジタル署名と暗号化機能

Mew は、Emacs で動作するメール・リーダである。 手引き 3.4節 参照

では、ディジタル署名の機能と暗号化機能を利用することが出来る。 これを動作させてみなさい。

★練習問題(1150) macOSの拡張属性

macOS の ls -l では、モードの部分に「@」が表示されることがある。
$ ls -l mypicture.jpg [←]
-rw-r--r--@ 1 yas  prof  169125  5  9 15:36 mypicture.jpg
$ []
これは、拡張属性 (eXtended attribute) と呼ばれているものである。Unix の 実装によって、使い方が異なる。macOS では、次のように ls -l@ や xattr コマンドで内容を表示することができる。
$ ls -l@ mypicture.jpg [←]
-rw-r--r--@ 1 yas  prof  169125  5  9 15:36 mypicture.jpg
	    com.apple.FinderInfo     32 
	    com.apple.quarantine         29 
$ xattr mypicture.jpg [←]
com.apple.FinderInfo
com.apple.quarantine
$ xattr -l mypicture.jpg [←]
com.apple.FinderInfo:
00000000  00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00  |................|
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000020
com.apple.quarantine: 0046;536b1f7b;Photo\x20Booth;
$ []
自分が持っているファイルで、拡張属性を持っているものを調べなさい。また、 その内容を ls -l@ や xattr コマンドで調べなさい。

■課題11 アクセス制御、暗号、SSL、SSH、Webサーバ・アクセスログ

以下の問題、および、回答をテキスト・ファイルに記述し、 レポート提出ページから提出しなさい。

(1) 自分のホーム・ディレクトリとその下にあるファイルについて、次のこと を行いなさい。

  1. ホームディレクトリのモードを ls -ld で表示しなさい。
    $ ls -ld ~ [←]
    
  2. ホーム・ディレクトリの次の属性を示しなさい。
  3. ホームディレクト以下に、次のようなモード rw-r--r-- のファイル file522.txt が存在したとする。(課題のためにこのようなファイルを作成し ても良い。作成しないで考えるだけでも良い。)
    $ cd ~ [←]
    $ ls -l file522.txt [←]
    -rw-r--r--  1 s1854321  ugrad  4  5 20 10:43 file522.txt
    $ []
    
    このファイルを、coins の「他の利用者」が cat コマンドで読み出そうとした 時に何がおきると考えられるか。簡単に答えなさい。(実際に他の利用者に試 してもらって良い。考えるだけで実際には試さなくても良い。)
    (他の人の操作)
    $ cd ~s1854321 [←]
    $ ls -l file522.txt [←]
    -rw-r--r--  1 s1854321  ugrad  4  5 20 10:43 file522.txt
    $ cat file522.txt [←]
    
  4. このファイルを、coins の「他の利用者」が emacs コマンドで内容を修 正して C-x C-s で保存しよとした時に何がおきると考えられるか。簡単に答え なさい。(実際に他の利用者に試してもらって良い。考えるだけで実際には試 さなくても良い。)
    (他の人の操作)
    $ cd ~s1854321 [←]
    $ ls -l file522.txt [←]
    -rw-r--r--  1 s1854321  ugrad  4  5 20 10:43 file522.txt
    $ emacs file522.txt [←]
    
  5. このファイル file522.txt と同じモードのファイルが、自分のホームディ レクトリにあるか ls -l で調べなさい。あれば、その例を1個以上、5個以内で 答えなさい。なければ無いと答えなさい。

    調べるには、ls -l コマンドとlv コマンド、grep コマンドを使う方法もある。

    $ ls -l | lv [←]
    $ ls -l | grep rw-r--r-- [←]
    
  6. このファイル file522.txt のモードを変更して、他のcoins の「他の利用者」 が cat コマンドで読み出そうとしても、エラーになり読めないように変更したい。
    (他の人の操作)
    $ cd ~s1854321 [←]
    $ cat file522.txt [←]
    cat: file522.txt: Permission denied
    $ []
    
    ただし、自分自身は、読み込みもでき、書き込みもできる状態を保ちたい。最 終的には、どのようなモードになるか。ls -l の表示の形式で答えなさい。 (r,w,x,- の9文字で答えなさい。)
  7. このファイル file522.txt のモードを、chmod コマンドを使って 6. の ように変更したい。chmod コマンドをどのように実行すれば良いか答えなさい。
    $ chmod 回答 [←]
    $ ls -l file522.txt [←]
    (確認)
    $ []
    
練習問題 chmod コマンド 参照。

(2) 練習問題(1113) を行いなさい。 Web サーバが生成しているアクセスログから、自分自身がアクセスした記録を 抜き出しなさい。それには、まず自分が利用しているコンピュータの IP アド レスを調べ、アクセスログからその IP アドレスが含まれている行を抜き出す とよい。アクセスログのうち、「数行」をレポートに含めなさい。

注意: 情報科学類の Web サーバは、http でアクセスできるものと https でアクセスできるものの 2 種類がある。

この課題では、どちらを使っても良い。 課題9(1)~/public_html/htdocs/ の下に作成したファイルは、http でアクセスできる。 このページは、http でも https でも両方で同じ内容が表示されるように 設定してある。

(3) coins の Web サーバ www.coins.tsukuba.ac.jp で使われている SSL の証 明書を観察しなさい。この証明書に含まれている重要な項目を2つ選びなさい。 それぞれ、何を意味するのか、簡単に説明しなさい。

SSLで使われる証明書練習問題(1121) SSLの証明書の表示 参照。

(4) 手引きの次の部分を読みなさい。

そして次の次の項目について簡単に説明しなさい。

(5) [加点] 次の課題(a)と(b)の両方を行いなさい。

(a) 次の練習問題を行いなさい。

次の結果をレポートに含めなさい。

注意: この課題で用いるものは、 インターネット上のファイル・サービス https://www.dropbox.com/ を用いるものではない。 (b) 新Linux/UNIX入門の次の部分を読みなさい。

そして、項目について調べて、簡単に説明しなさい。 次の練習問題を行いなさい。 次の結果をレポートに含めなさい。

(6) [加点] 関して、次の課題(a)から(e)のうち、3つ以上行いなさい。

(a) sshコマンド、PuTTY、Tera Term、その他の ssh クライアントを用いて、 用いて「公開鍵を用いた認証」により、coins のコンピュータに接続しなさい。 そのことを示すために、レポートには、どのようなプログラムを使ったのか、 公開鍵の生成手順、クライアント側の設定、サーバ側の設定を含めなさい。

学外から coins のコンピュータに接続できる人は、それを行いなさい。

レポートには、ログイン後のコマンドの実行結果を含め、確かに課題が完了し ていることを示しなさい。 練習問題 遠隔ログインによるコマンドの実行 参照。

(b) 学類外のコンピュータを VPN 機能を使って coins のネットワークに接 続しなさい。VPN を経由して、いくつかのサーバに接続し、利用しなさい。

レポートに次の項目を含めなさい。 (c) gpg2 コマンド、または、openssl コマンドで、ファイルを暗号化し、復号 しなさい。また、そのコマンドで、ファイルのディジタル署名を付け、それを 検証しなさい。レポートには、これらのことが実施できたことを示すような、 端末の表示を含めなさい。

(d) メールリーダ Thunderbird、Mew、または、その他のメール・リーダで、公 開鍵による暗号化されたメールの送受信を行いなさい。また、公開鍵によるディ ジタル署名署名付加と検証を行いなさい。

レポートには、これらのことが実施できたことを示すような、メールの内容(暗 号化された内容等)を含めなさい。また、メールリーダの設定方法の概略、参考 にした資料の出所を含めなさい。

(e) zipコマンド、unzipコマンド、または、macOS の「ディスクユーティリ ティ.app (Disk Utility.app) 」をつかって、ファイルを暗号化しなさい。暗 号化されたファイルを、復号しなさい。レポートには、これらのことが実施で きたことを示すような、端末の表示を含めなさい。


Last updated: 2018/05/25 17:50:39
Yasushi Shinjo / <yas@cs.tsukuba.ac.jp>