• 検索結果がありません。

情報セキュリティ 第08回

N/A
N/A
Protected

Academic year: 2021

シェア "情報セキュリティ 第08回"

Copied!
11
0
0

読み込み中.... (全文を見る)

全文

(1)

1

情報セキュリティ 第08回

大久保誠也 静岡県立大学経営情報学部

2/63

はじめに

はじめに

今までの復習

なりすましの防止と電子署名

メールにおけるセキュリティ

演習

3/63

前回の課題の解答と解説

4/63

2進数と10進数

日常、値(数)は10進数で使用している。

一方、計算機の内部では、すべてのデータは

0,1

管理されている。

計算機を理解するときには、この

0,1

がどのようにし て計算されているかは重要。

今から数枚のスライドでは、

 10

進数の値を

"145

10

"

の様に、

 2進数の値を"145

2

"の様に、

右下に小さく値を書いて表現することとする。

5/63

10進数とは(1)

" 1

10

"

を で表すとする。

145

10

を意味している。

"

ブロック

"10

個で、(違う大きさの)

"

ブロック

"

となる。

6/63

10進数とは(2)

145

10は、「1個のブロックが10個集まったブロック」が14個と、

「1個のブロック」が5個。

これは、「10個のブロックが10個集まったもの」が1つと「1個のブ ロックが10個集まったブロック」が4個と「1個のブロック」が5個

(2)

7/63

10進数とは(3)

結局、14510の意味することは、

1 4 5 10

「10個のブロックが

10個集まったもの」が1つ

「10個のブロックが 集まったもの」が4つ

「1個のブロック」

が5つ

1×10 2 10

4×10 1 10 5×10 0 10

8/63

10進数とは(4)

26145

10の意味することは、

4

桁の値の各桁を

x

yのように表現することにすると、

2 6 1 3 2 10

2

×

10

410

+6

×

10

310

+1

×

10

210

+3

×

10

110

+2

×

10

010

x 3 x 2 x 1 x 0 10

x 3

×10310

+ x 2

×10210

+ x 1

×10110

+ x 0

×10010

9/63

2進数とは

"ブロック"2個で、(違う大きさの) "ブロック"となる。

1111

2の意味することは、

1 1 1 1 2

「1個のブロック」

が1つ

1×2 0 10

「1個のブロックが

2個集まった

ブロック」

が1つ

1×2 1 10

「2個のブロック が2個集まった ブロック」が1つ

1×2 2 10

「2個のブロックが

2個集まった

ブロックが

2個集まった

ブロック」が1つ

1×2 3 10

10/63

10進数から2進数へ(1)

27

10は、2進数で表現するとどうなるか?

2で除算をして、余りが各桁の値となる。

1. 27

10は、21個のブロック13個と、1個のブロック1個。

(2710を210 で割ると、13余り1だから)

2. 27

10は、

2

2個のブロック6個と、

2

1個のブロック1個 と、

1

個のブロック

1

個。

(1310を210 で割ると、6余り1だから)

11/63

10進数から2進数へ(2)

27

10は、

2

進数で表現するとどうなるか?

3. 27

10は、

2

3個のブロック3個と、

2

2個のブロック0個 と、

2

1個のブロック

1

個と、

1

個のブロック

1

つ。

(610を210 で割ると、3余り0だから)

4. 27

10は、

2

4個のブロック1個と、

2

3個のブロック1個 と、

2

2個のブロック0個と、

2

1個のブロック1個と、1 個のブロック

1

つ。

12/63

10進数から2進数へ(3)

27

10は、

2

進数で表現するとどうなるか?

5. 27

10は、

2

4個のブロック1個と、

2

3個のブロック

1

個と、

2

2個のブロック0個と、

2

1個のブロック1個と、

1個のブロック1個

なので、答えは

11011

1 1 0 1 1

(3)

13/63 13/63

2進数から10進数へ

4

桁の値の各桁を

x

yのように表現することにすると、

1011なら、

x 3 x 2 x 1 x 0 2

x 3

×

2

310

+ x 2

×

2

210

+ x 1

×

2

110

+ x 0

×

2

010

1 0 1 1 2

1

×

2

310

+ 0

×

2

210

+ 1

×

2

110

+ 1

×

2

010

=8+0+2+1=11

14/63

その他の k 進数表現

計算機や

C

言語を使用している際、他に出てくる

k

進数 表現は、8進数や16進数があります。

2

進数や

10

進数と同様に考えることができます。

特に、16進数は色々な場面で出てきます。

例1:MD5値を計算したときの値の表現

例2:セキュリティ証明書の各種値

15/63

使用例 3:回答例の一部

#include<stdio.h>

int main(){

int i;

int test;

test=6; // 110 for(i=0;i<=3;i++){

printf("---i=%d ¥n",i);

printf("%d ¥n",test & i );

printf("%d ¥n",test | i );

printf("%d ¥n",test ^ i );

} }

#include<stdio.h>

int main(){

int i;

int test;

test=6; // 110 for(i=0;i<=3;i++){

printf("---i=%d ¥n",i);

printf("%d ¥n",test & i );

printf("%d ¥n",test | i );

printf("%d ¥n",test ^ i );

} }

コンパイルは

として行う。

gcc sample07c.c gcc sample07c.c

i=3

のとき、

3

10

2

進数だと

011

2

6

10

2

進数だと

110

2

110

2

& 011

2

= 010

2

110

2

| 011

2

= 111

2

110

2

xor 011

2

= 101

2 16/63

復習:

公開鍵暗号と 秘密鍵暗号を 組み合わせた通信

17/63

アイデア

秘密鍵暗号は、事前に秘密鍵を受け渡ししておく必 要がある。

どうやって、鍵を受け渡しておくのか?

公開鍵暗号は、処理が重い。

どうやって、大量の平文を通信するのか?

秘密鍵暗号と公開鍵暗号を組み合わせて使う ハイブリッド暗号

1.

平文は秘密鍵暗号で暗号化する。

2.

秘密鍵暗号の秘密鍵(共通鍵)を公開鍵暗号で

暗号化する。 18/63

公開鍵暗号で 共通鍵を 暗号化

通信手順 (8)

平文

秘暗

送信

平文

秘暗

Bob

Alice

公暗 公暗

① Bobの公開鍵を

渡しておく

共通鍵を生成

秘密鍵暗号で 平文を暗号化

平文 平文

送信する

公開鍵暗号で 共通鍵を復号

秘密鍵 暗号で 復号

(4)

19/63

盗聴されても…

Eve

平文

平文

送信

平文

平文

Bobの

Bobの

Bob

Alice

盗聴しても、

復号できな

……

パス

フレーズ

20/63

通信手順

以下のような流れで行われる。

1.AliceがBobにメールを送るとする。

2.Aliceは共通鍵を生成し、平文を暗号化する。

3.Aliceは共通鍵を、Bobの公開鍵で暗号化する。

4.Aliceは2と3で生成したものを、Bobにメールする。

5.Bobは、Bobの秘密鍵とパスフレーズで、Aliceから

送られた『暗号化された共通鍵を復号し、共通鍵 を取り出す。

6.Bobは、取り出した共通鍵で、『暗号化された平

文』から平文を取り出す。

 Eve

は、

Bob

の秘密鍵を知らないため、共通鍵を取り 出せず、結果として平文を入手できない。

21/63

まとめ

秘密鍵暗号と公開鍵暗号を組み合わせて使う

1.

平文は秘密鍵暗号で暗号化する。

2.

秘密鍵暗号の鍵を公開鍵暗号で暗号化する。

秘密鍵暗号は、事前に秘密鍵を受け渡ししておく必 要がある。

どうやって、鍵を受け渡しておくのか?

→ 公開鍵暗号で秘密鍵暗号の鍵を暗号化。

公開鍵暗号は、処理が重い。

どうやって、大量の平文を通信するのか?

→ 小さい秘密鍵暗号の鍵のみを暗号化。 22/63

何が守れているのか

盗聴について:

対処されている。間に盗聴者が居ても、内容が 漏れることはない。

なりすましについて:

特に対処されていないが、攻撃者が秘密鍵を 持っていないなら意味のある通信にならない。

改ざんについて:

特に対処されていないが、改ざんされても意味 のある通信にならない。

さらに認証技術等と組み合わせる必要がある

23/63

なりすましの防止と 電子署名

24/63

なりすまし防止の アイディア(1)

なりすましを防止するには、どうすればよいか?

→ ようするに、相手が本当に本人か確認したい!

認証・署名

実世界では、印鑑やサイン、パスワードで本人確認。

本人確認は、「本人しか持っていない情報を持ってい るか」で確認する。

秘密鍵は「本人しか持っていない情報」

(5)

25/63

復習:

公開鍵暗号方式による認証

Alice

の公開鍵」で復号できる暗号文なら、その暗号

文は「

Alice

の秘密鍵」で作成したに違いない。

Alice

の秘密鍵」で暗号化できるのは、秘密鍵を持っ

ている

Alice

だけ。

「Aliceの公開鍵」で復号できるものは、

Aliceのファイルに違いない!

26/63

なりすまし防止の アイディア(1)

Aliceの

Bob

Alice

AliceからBobにファイルを送るので、

BobはAliceからのファイルかを

検証したい

27/63

なりすまし防止の アイディア(2)

送信

Aliceの

Aliceの

Bob

Alice

① Aliceの公開鍵を 事前に渡しておく

28/63

なりすまし防止の アイディア(3)

平文

フィンガー プリント

Aliceの Aliceの

Bob

Alice

ハッシュ値 を計算

公開鍵を 事前に渡しておく

29/63

なりすまし防止の アイディア(4)

平文

フィンガー プリント

Aliceの Aliceの

Bob

Alice

ハッシュ値 を計算

フィンガー プリント 公暗

秘密鍵で 暗号化

公開鍵を

事前に渡しておく 30/63

なりすまし防止の アイディア(5)

平文

フィンガー プリント

Aliceの Aliceの

Bob

Alice

ハッシュ値 を計算

フィンガー プリント 公暗

秘密鍵で 暗号化

公開鍵を 事前に渡しておく

送信

送信 平文

フィンガー プリント

公暗

送信

送信

(6)

31/63

なりすまし防止の アイディア(6)

平文

フィンガー プリント

Aliceの Aliceの

Bob

Alice

ハッシュ値 を計算

フィンガー プリント 公暗

秘密鍵で 暗号化

公開鍵を 事前に渡しておく

送信

送信 平文

フィンガー プリント

公暗

送信

送信

フィンガー

プリント復号する Aliceからの

メールか 検証しよう……

32/63

なりすまし防止の アイディア(7)

平文

フィンガー プリント

Aliceの Aliceの

Bob

Alice

ハッシュ値 を計算

フィンガー プリント 公暗

秘密鍵で 暗号化

公開鍵を 事前に渡しておく

送信

送信 平文

フィンガー プリント

公暗

送信

送信

フィンガー

プリント復号する フィンガー

プリント

ハッシュ値を計算 Aliceからの

メールか 検証しよう……

33/63

なりすまし防止の アイディア(8)

平文

フィンガー プリント

Aliceの Aliceの

Bob

Alice

ハッシュ値 を計算

フィンガー プリント 公暗

秘密鍵で 暗号化

公開鍵を 事前に渡しておく

送信

送信 平文

フィンガー プリント

公暗

送信

送信

フィンガー

プリント復号する フィンガー

プリント

ハッシュ値を計算

⑦ 比較して同じなら

Aliceからの

メールだ!

Aliceからの メールか 検証しよう……

34/63 フィンガー

プリント フィンガー プリント

なりすまされた場合(1)

平文

Eveの

Bob

Aliceからの メールか 検証しよう……

なりすまし

Eve

パス

フレーズ

公開鍵を 事前に渡しておく

EveがAliceの名前を騙って、

Bobにファイルを送る。

Bob

Alice

のファイルか検証したい

35/63 フィンガー

プリント

フィンガー プリント フィンガー

プリント フィンガー プリント

なりすまされた場合(2)

平文

送信

送信

平文

異なる 何か

Aliceの Eveの

Bob

Aliceからの メールか 検証しよう……

Alice

の公開鍵で 元に戻せない!。

Aliceからの

メールじゃない!

なりすまし

Eve

36/63 フィンガー

プリント

フィンガー プリント フィンガー

プリント フィンガー プリント

なりすまされた場合(3)

平文

送信

送信

平文

異なる 何か

Aliceの Eveの

Bob

Aliceからの メールか 検証しよう……

Aliceの公開鍵で 元に戻せない!。

Aliceからの メールじゃない!

なりすまし

Eve

Eve

Aliceの秘密鍵を

知らないので、

Aliceの公開鍵で

復号できる 暗号化済み指紋を

作れない。

(7)

37/63 フィンガー

プリント フィンガー プリント

改竄された場合(1)

平文

送信

送信

Aliceの

Bob

Aliceからの メールか 検証しよう……

送信中に、

データが変わって しまった!

パス

フレーズ Aliceの

Alice

38/63

異なる フィンガー

プリント

フィンガー プリント フィンガー

プリント フィンガー プリント

改竄された場合(2)

平文

送信

送信

異なる 平文

フィンガー プリント

Aliceの

Bob

Aliceからの メールか 検証しよう……

Alice

の公開鍵で 元に戻せない!。

正常に通信できて ない!

パス

フレーズ Aliceの

Alice

39/63 異なる

フィンガー プリント

フィンガー プリント フィンガー

プリント フィンガー プリント

改竄された場合(3)

平文

送信

送信

平文

フィンガー プリント

Aliceの

Bob

Aliceからの メールか 検証しよう……

Aliceの公開鍵で 元に戻せない!。

正常に通信でき ていない!

Aliceの

Alice

指紋の値が異なるので、

正常に通信できていないことが わかる。

40/63

なりすまし防止のアイディア(4)

以下のような流れで行われる。

1. Aliceは平文のフィンガープリントを作成する。

2. AliceはAliceの秘密鍵とパスフレーズでフィンガープ

リントを暗号化

3. Aliceは、平文と3で生成したものを、Bobにメール 4. Bobは、Aliceの公開鍵でAliceから送られた『暗号化

されたフィンガープリントを復号する。

5. Bobは、『Aliceから送られてきた平文

から作ったフィ ンガープリントと、

4

のフィンガープリントを比較する。

41/63

何が守れているのか

盗聴について:

対処されていない。

なりすましについて:

対処されている。

ただし、改竄と区別は付かない。

改竄について:

対処されている。

ただし、なりすましと区別は付かない。

さらに暗号技術等と組み合わせる必要がある

42/63

次のステップ

暗号技術で盗聴に、認証技術でなりすましや改竄を 防止することができる。

説明のあちこちにある「公開鍵を事前に渡しておく」

の具体的な方法が、今のところノータッチ。

偽物の公開鍵をつかまれれたりしないか?

直に会えば確実だけど、相手が地球の裏側に居 たりするなら、どうするの?

暗号技術と認証技術を組み合わせれば、

これらすべてに対処できる(はず)!

(8)

43/63

電子メールの セキュリティ

44/63

AliceからBobにメールを送る場合、

Alice

のパソコン」→「

Alice

のメールサーバー」

→「Bobのメールサーバー」 → 「Bobのパソコン」

と伝わっていく。

メールの経路の概略図

パソコン サーバー サーバー パソコン

明日、10時

明日、10時

明日、10時

45/63

パスワードやメールの内容が、やりとりされる

やりとりされるデータ

メールの内容

サーバー サーバー パソコン

明日、10時

明日、10時

明日、10時

パスワード

メールの内容

メールの内容 パスワード

46/63

パスワードやメールの盗聴防止や、

メールの内容の改竄

守りたいもの

メールの内容

サーバー サーバー パソコン

明日、10時

明日、10時

明日、10時

パスワード

メールの内容

メールの内容 パスワード 盗聴防止

改竄防止

盗聴防止 改竄防止

盗聴防止

なりすましを 防止したい

盗聴防止

盗聴防止 改竄防止

47/63

POP

Post Office Protocol

メールをやり取りするプロトコル

POPの概要

メールの内容

サーバー サーバー パソコン

明日、10時

明日、10時

明日、10時

パスワード

メールの内容

メールの内容 パスワード 盗聴可能

改竄可能

盗聴可能 改竄可能

なりすまし可能

盗聴可能 盗聴可能

盗聴可能

改竄可能 48/63

POP

Post Office Protocol

の略。

メールを受信するときに、

「クライアントとサーバー間」で、

メールをやり取りするためのプロトコル。

パスワードで正しいユーザーか認証できる。

メールを送信するときは、

「送信する前に一度POPで認証する」

という形で使用される(POP before SMTP)

パスワード、メールの内容、すべてが平文でやりとりさ れる。

(9)

49/63

APOP:Authenticated Post Office Protocol

パソコンとサーバー間のパスワードのみを暗号化

APOPの概要

メールの内容

サーバー サーバー パソコン

明日、10時

明日、10時

明日、10時

パスワード

メールの内容

メールの内容 パスワード 盗聴可能

改竄可能

盗聴可能 改竄可能

なりすまし可能

盗聴防止

盗聴防止

盗聴可能

改竄可能 50/63

APOP

Authenticated Post Office Protocolの略。

メールを受信するときに、

「クライアントとサーバー間」で、

メールをやり取りするためのプロトコル。

パスワードで正しいユーザーか認証できる。

メールを送信するときは、

「送信する前に一度POPで認証する」

という形でも使用される(POP before SMTP)

パスワードのみ暗号化。メールの内容は平文のまま。

脆弱性が見つかっているので、使用は推奨されない。

51/63

パソコン・サーバー間を暗号化

POP over SSL の概要

メールの内容

サーバー サーバー パソコン

明日、10時

明日、10時

明日、10時

パスワード

メールの内容

メールの内容 パスワード 盗聴防止

改竄防止

盗聴可能 改竄可能

なりすまし可能

盗聴防止

盗聴防止

盗聴防止 改竄防止

さlkdfjl

さlkdfjl

52/63

POP over SSL

メールを送信・受信するときに、

「クライアントとサーバー間」を、

暗号化するためのプロトコル。

パスワードで正しいユーザーか認証できる。

「クライアントとサーバー間」は、パスワードも内容も暗 号化。

「クライアントとサーバー間」は、内容は平文。

GmailをThunderbird等で利用した場合、この方法が利

用できる。

53/63

パソコン・サーバー間を暗号化

https利用の

Webメールの概要

メールの内容

サーバー サーバー パソコン

明日、10時

明日、10時

明日、10時

パスワード

メールの内容

メールの内容 パスワード 盗聴防止

改竄防止

盗聴可能 改竄可能

なりすまし可能

盗聴防止

盗聴防止

盗聴防止 改竄防止

さlkdfjl

さlkdfjl

54/63

https利用のWebメール

https

は、

「クライアントとサーバー間」の、

データを暗号化するためのプロトコル。

Webメールにログインするときのパスワードや、ブラウ

ザから入力した文章内容も暗号化される。

ようするに、「クライアントのサーバー間」は、パスワー ドも内容も暗号化。

「サーバーのサーバー間」は、内容は平文。

GmailやHotMail等でも利用できる。

(10)

55/63

アリスのが送るメールを暗号化。

認証用のデータ付き。

PGP

メールの内容

サーバー サーバー パソコン

さlkdfjl

さlkdfjl

さlkdfjl

パスワード

メールの内容

メールの内容 パスワード 盗聴防止

改竄防止

盗聴防止 改竄防止

なりすまし防止

盗聴可能

盗聴可能

盗聴防止 改竄防止

明日、10時

明日、10時

56/63

PGP(Pretty Good Privacy)

PGPは、

「クライアントとクライアント間」の、

データを暗号化するための手法。

Aliceが公開鍵暗号方式で暗号化・認証用データ作成

を行う。

Bob

は復号や認証用データの確認を行う。

ようするに、「クライアントとクライアント間」で、内容を 暗号化する。認証もできる。

パスワードについては何もしないので、他の「クライア ントとサーバー間」の暗号化手法を同時に使用する

一般にあまりに普及してない。

57/63

演習:

8

進数と

16

進数

58/63

UNIXにログインする

今回もUNIXで演習を行いますので、smaxにログインし てください。

今回は、UNIX環境におけるC言語で

8進数と16進数

を取り扱います。

16進数は、10~15の値はアルファベットa~fに割り当

てられます。

10→a, 11→b, 12→c, 13→d, 14→e, 15→f

59/63

C言語における k 進数

計算機は、内部では2進数で計算しています。

人間は、通常、

10

進数です。

printf

は、値を表示するときに、

10

進数に変換して表

示する機能があります。

C言語では、8進数表記や16進数表記で、値を表示す

ることも可能です。

なお、2進数で表示する命令はありません。

printf("%d¥n",135) printf("%d¥n",135)

printf("%d %o %x¥n",135,135,135) printf("%d %o %x¥n",135,135,135)

60/63

使用例 1:

#include<stdio.h>

int main(){

int test;

test=12; // 0000000000001100 printf("%d ¥n",test);

printf("%o ¥n",test);

printf("%x ¥n",test);

}

#include<stdio.h>

int main(){

int test;

test=12; // 0000000000001100 printf("%d ¥n",test);

printf("%o ¥n",test);

printf("%x ¥n",test);

}

コンパイルは

として行う。

gcc sample08a.c

gcc sample08a.c

(11)

61/63

#include<stdio.h>

int main(){

int test;

test=12; // 0000000000001100 printf("%d ¥n",test);

printf("%o ¥n",test);

printf("%x ¥n",test);

}

#include<stdio.h>

int main(){

int test;

test=12; // 0000000000001100 printf("%d ¥n",test);

printf("%o ¥n",test);

printf("%x ¥n",test);

}

使用例 1:解説

12は2進数だと 1100

で表される。

%dは10進数で表示。

12と表示される。

%oは8進数で表示。

14

と表示される。

%xは16進数で表示。

c

と表示される。

62/63

使用例 2:

#include<stdio.h>

int main(){

int test;

test=1487;

printf("%d ¥n",test);

printf("%o ¥n",test);

printf("%x ¥n",test);

}

#include<stdio.h>

int main(){

int test;

test=1487;

printf("%d ¥n",test);

printf("%o ¥n",test);

printf("%x ¥n",test);

}

コンパイルは

として行う。

gcc sample08b.c gcc sample08b.c

63/63

課題の提出

以下を提出しなさい、

使用例1~2の実行結果

使用例2において、何故、8進数と16進数だと、

そのような表現になるのか、10進数から変換 する過程と共に説明しなさい。

ファイル名は学籍番号の末尾にhをつけたもの とする。

グループ名は『H24_情報セキュリティ』です。

参照

関連したドキュメント

フィンガー プリント 公暗. ③

フィンガー プリント 公暗. ③

Aliceからの メールか

command を実行したときの、標準出 力への出力を、filename の末尾に追 加書き込みする。. command

Aliceからの メールか 検証しよう …….

Aliceからの メールか 検証しよう …….

POP : Post Office Protocol メールを受信するプロトコル.

公開鍵暗号と 秘密鍵暗号を