情報セキュリティ 第07回 はじめに 情報処理演習の復習

はじめに




情報セキュリティ
第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