はじめに 情報セキュリティ 第07回 大久保誠也 はじめに 情報処理演習の復習 いままでの復習 RSA暗号の特徴 一方向関数とハッシュ値 演習:ハッシュ値 静岡県立大学経営情報学部 1/41 2/41 復習の内容 情報処理演習の復習 リモートへの接続とteraterm teratermの使い方 シェル 基本的なコマンド emacsの使い方 コンパイルとgccの使い方 計算機と機械語 計算機言語とコンパイラ 3/41 4/41 リモートへの接続 windows シェル UNIX EDxxxx smax teraterm リモートとやり取りする ターミナルソフトウェア UNIXでコマンドを入力したりするところ smaxのデフォルトは sh (ボーンシェル) シェルの種類によって、操作方法が異なります。 今日はtcshを使ってみましょう。シェルで %/> %/> tcsh tcsh キーボードからの入力を送り、 UNIXの応答を表示する 5/41 と入力。 他にも、代表的なシェルとして、bash や zsh とかがあ ります。 6/41 tcshの便利な機能 alias の利用 ファイル名、ディレクトリ名の補完 ファイル名やディレクトリ名は、途中まで入力した状 態で、タブを押すと補完できます。 候補が複数ある場合、候補の一覧が出てきます。 コマンドのヒストリ 上を押すと、過去に入力したコマンドが出てきます。 history コマンドで過去に入力したコマンドの一覧が でます。 %/> %/> alias alias dir dir ls ls -Fs -Fs 7/41 dir により、ls –Fs が実行できるようになります。 ls –Fs の F はディレクトリ名末尾に / をつけるオプション。 s はファイルの容量を表示するオプション。 8/41 emacs 基本的なコマンド alias 機能を使うと、コマンドに別名をつけることができ ます。 %/> %/> alias alias [別名] [別名] [コマンド] [コマンド] ためしに、以下のコマンドを実行してみましょう。 ls:ファイルの一覧の取得 (list) mkdir:ディレクトリの作成 (make directory) cd:カレントディレクトリの変更 (change directory) rm:ファイルの削除 (remove ) rmdir:ディレクトリの削除 (remove directory) mv:ファイルの移動 (move) UNIXでよく利用されるエディタ。 起動方法: %/> %/> emacs emacs ファイル名 ファイル名 ファイル名を打たないと *scratch* が開きます。 *scratch* に直にテ キストやCのプログ ラムを書かない 9/41 10/41 emacs の基本的なコマンド(1) C-x C-x C-x C-x C-f C-s C-w C-c : : : : C-[space]: C-w : C-y : C-k : ファイルのオープン ファイルの上書き保存 ファイルを名前をつけて保存 emacs の終了 emacs の基本的なコマンド(2) C-a C-e C-g : カーソルを行頭に移動 : カーソルを行末に移動 : キャンセル C-_ : アンドゥ 選択の開始 選択範囲からのカット ペースト 行末まで削除 11/41 12/41 計算機とは ビットとバイト 計算機は、ざっくりと言って、CPUとメモリ、 入出力装置からなる。 計算機 入出力 装置 CPU メモリ 外部と データを やりとりする データを 処理する データを 保存する 日常、人は、値(数)は10進数で、文字は文字として使 用している。 一方、計算機の内部では、すべてのデータは 0,1 で管 理されている。0,1 しか取り扱うことができない! また、計算機は、メモリにデータを蓄えている。 単位は、 bit 1bit 0 もしくは 1 のどちらかを保存。 byte 1bitが8つ集まっている。 1byte 上級言語 昔のプログラミング 人間は、曰く "人間語" を話す。 計算機は2進数しか理解できない! 昔は、人間が計算機に合わせて、2進数を話していた。 こういう処理 をやりたい なぁ 計算機 了解。 理解した。 0000 0001 0002 0003 0004 人 処理 10001001 01101010 10111010 11011011 人間は、2進数を会話するようにできていない! 人間が計算機に指示しやすく、つまり、プログラミング しやすくしたものが、上級言語。 こういう処理 をやりたい なぁ 計算機 0000 0001 0002 0003 0004 了解。 理解した。 処理 人 10001001 01101010 10111010 11011011 変換 printf() get() put() while() gcc Gnu Compiler Collection。 Cコンパイラの実行ファイル名でもある。 Cのソースファイル sample.c 前回までの復習 gcc gcc sample.c sample.c 実行ファイル a.out 18/41 Aliceから データが来た。 復習:盗聴 送信 復習:暗号の目的 送信 Bob Hello World Hello World 平文(送りたい文)を暗号化し、暗号文にする。 この際、鍵を使用する。 Hello World Hello World 平文で送信した情 報は、基本的に 盗聴し放題! 盗聴 Hello World Alice 平文 This is a pen. (二進数表記) 5468697320697320612070656E2E0A 鍵 test A:> 覗き見して やろう 重要な情報は 送らない or 暗号化19/41 Hello World Eve 共 平文から暗号文を生成するとき、鍵を使用する。 鍵を利用して暗号化 暗号文 復号するときも鍵を使用する。 適切な鍵を利用しないと、平文に戻せない。 正しい鍵で 復号 平文 暗号文 秘密鍵方式 暗号化も復号も、同じ鍵を使用する。 秘密鍵を使用する。鍵は秘匿しておく必要がある。 一般的に、処理が軽い。 公 正しい鍵以外では 復号できない 暗号文 (二進数表記) 883BC0A17AA746D3DCADCE425C6A10AC 20/41 復習:2種類の暗号方式 復習:暗号と鍵 平文 暗号化されていると、 元の文章がわからない。 暗号文 ;zB¥j 変な 21/63 21/41 文 復習:暗号による通信 22/41 秘密鍵暗号による通信 ③ 暗号文を「鍵」で 復号 Bob ③ 「秘密鍵」で復号 共 ID PASSWD ① 平文を「鍵」で 暗号化 ID あsdふぁsd Jlkjぇwkf Alice あsdふぁsd Jlkjぇwkf ② 送信 PASSWD あsdふぁsd Jlkjぇwkf 共 盗聴しても、 復号できな い……。 23/41 Bob ID PASSWD ① 「秘密鍵」で 暗号化 ID ② 送信 PASSWD 秘 公開鍵方式 暗号化と復号で、異なる鍵を使用する。 公開鍵と秘密鍵があり、秘密鍵は秘匿し、公開鍵 は公開しておく。 一般的に、処理が重い。 Alice あsdふぁsd Jlkjぇwkf 盗聴しても、 復号できな い……。 24/41 公開鍵暗号による通信 今回の内容 公 ① 送信 ④ 「秘密鍵」で復号 公 秘 Bob ID PASSWD ② 「公開鍵」で 暗号化 ID あsdふぁsd Jlkjぇwkf ③ 送信 PASSWD あsdふぁsd Jlkjぇwkf 公 Alice 盗聴しても、 復号できな い……。 25/41 基礎技術: 秘密鍵暗号方式 暗号化 ブロック暗号とストリーム暗号 公開鍵暗号方式 暗号化と認証 ハッシュ値と一方向関数 乱数 実際の実装: RSA暗号の仕組み 26/41 一方向関数とは ある関数 f が、 任意の x が与えられたとき、f(x)の値を求めること は簡単、 任意の y が与えられたとき、y=f(x) となる x を求 めることは難しい とき、この関数は一方向関数であるという。 一方向関数と メッセージダイジェスト 27/41 メッセージダイジェストとは ファイルの中身に対応して生成した固定長のbit列を メッセージダイジェストという。フィンガープリント、ファ イルの指紋、ハッシュ値とも呼ばれる。 異なる中身の場合、同じメッセージダイジェストになる 可能性は低い(ゼロではない)。 一方向関数である。 暗号と違い、復号はできない。 平文 This is a pen. eee0ca57643e4b59 フィンガープリント 815847fdd152cd5c This is a book. 639c7143c6937907 ef3bfbed7501d898 29/41 28/41 メッセージダイジェストの利用(1) 文章のテキストファイルから生成できるビット列 平文 フィンガー プリント 異なる平文が、同じ指紋を生成する確率は低い。 平文 A フィンガー プリント A 違う指紋に フィンガー プリント B 平文 B 平文と指紋を受け取り、比較することで、平文が正し いか否かを判定できる。 30/41 メッセージダイジェストの利用(2) メッセージダイジェストの利用(2) Bob 送信 Hellow World Hello World Hellow World 1)送信 Bob Hello World メッセージ ダイジェスト A ファイルをダウンロードしてき たけど、正しくダウンロードで きたかなぁ Hellow World メッセージ ダイジェスト A Hellow World メッセージ ダイジェスト B 2)メッセージ ダイジェストを 計算 31/41 メッセージダイジェストの利用(3) メッセージ ダイジェスト A 3)比較したら 違う値に! 失敗 している! 32/41 メッセージダイジェストの利用(4) httpsでも使用されています。 Firefox では、httpsでの通信 を行っているサイトで、 1. 上の青い部分を押す。 2. 詳細を表示を押す。 3. 証明書を表示を押す ことで確認できます。 多くのサイトで、 ファイルの 検証用に MD5値が 置かれています。 33/41 メッセージダイジェストの利用(5) UNIXのパスワード認証は、実際にはパスワードは 保存されていません。 保存されているのは、パスワードのハッシュ値を保 存しています。 パスワードを入力すると、 1. 入力されたパスワードのハッシュ値を計算。 2. 保存してあるハッシュ値と一致するか検証。 3. 一致していたら認証を通過。 となります。 ようするに、ハッシュ値が同じになるパスワードなら、 パスワードが異なっていても、認証を通ります。 35/41 34/41 広く使われている メッセージダイジェスト メッセージダイジェストの代表的なものとして、MD5や SHA等があります。 メッセージダイジェストは、いろいろなところで使用さ れています。 OpenOffice.org のような、ファイルのダウンロード の検証のため。 WindowsやUNIXにおけるパスワード認証。 https等の暗号化プロトコル。 メールの暗号化プロトコルである PGP。 メールの認証プロトコルである apop。 36/41 強衝突耐性と弱衝突耐性 弱衝突耐性: x が与えられたとき、 f(x) = f(y)なるy (ただし y ≠x) を発見することは難しい。 強衝突耐性: f(x) = f(y)なる x と y (ただし x≠y) を発見すること は難しい。 演習:一方向関数とハッシュ値 MD5は強衝突耐性は無いことが知られている。 37/41 smaxでのフィンガープリント 課題でやること 1. smaxにログインする。 2. Solaris では digest コマンドでMD5の値を求めること ができる。 %/> %/> digest digest –a –a md5 md5 ファイル名 ファイル名 として、ファイルのMD5の値を出力してみましょう。 3. 38/41 %/> %/> digest digest –a –a sha1 sha1 ファイル名 ファイル名 とすることで、ファイルのsha1の値を出力してみまし ょう。 1. テキストファイルを作成する。中身は以下の通り。 cat cat 2. md5とsha1のハッシュ値を計算する。 3. テキストファイルを作成する。中身は以下の通り。 cut cut 4. md5とsha1のハッシュ値を計算する。 5. 中身が異なっていることを確認する。 39/41 Windowsで行うMD5:入手 課題の提出 40/41 ファイルをマイクロソフト 先週のが終わってない人は、続きをやる。 ファイル名は学籍番号の末尾にfをつけたもの。 http://support.microsoft.com/default.aspx?scid=kb;en-us;841290 からダウンロードしてくる必要があります。 ハッシュ値を求めた結果をテキストファイルに貼り付け 、経情グループウェアから提出しなさい。 ファイル名は学籍番号の末尾にgをつけたものとする。 グループ名は『H25_情報セキュリティ』です。 41/41 ダウンロードして、 デスクトップに保存 42/41 Windowsで行うMD5:展開 Windowsで行うMD5:実行(1) ダウンロードしてきたファイルをダブルクリックして、 ファイルを展開します。 このツールはGUIがないので、コマンドプロンプトで実 行します。コマンドプロンプトを立ち上げます。 すべての プログラム 「アクセサリ」 の中の 「コマンドプロンプト」 ファイルを置く場所 を聞いてくるので、 デスクトップを指定 43/41 Windowsで行うMD5:実行(2) 44/41 Windowsで行うMD5:実行(3) 実行ファイルのフルパスを、プロンプトに貼り付けま しょう。 同様にして、どこかのディレクトリを指定します。 実行すると、すべてのファイルのMD5値が出ます。 Shiftを押しながら 右クリックして、 「パスとしてコピー」 を選択 スペースを一つ空けて、 ディレクトリを指定。 左上のアイコンをクリックして、 「編集」→「貼り付け」を選択 45/41 使い方まとめ オプション オプション 46/41 コマンドプロンプトからのコピー ハッシュ値を求めるのに使用すつfcivというツールは、 以下のように使用します。 fciv fciv MD5値が表示される フォルダ名 フォルダ名 指定したフォルダにある全てのファイルのハッシュ値を 出力します。 オプションには、 -both –sha1 –md5 等があり、それぞれ 出力するハッシュ値の種類が変わります。 47/41 ① 左上を クリック ② 『編集』 を選択 ③ 『範囲指定』 『コピー』等を 利用 48/41
© Copyright 2024 Paperzz