#mailerstudy 02 暗号入門 (2012-02-22更新)

53
メールサーバ勉強会 #mailerstudy 02 暗号入門 - アリスとボブの恋の行方 - 株式会社ハートビーツ 滝澤 隆史

Upload: takashi-takizawa

Post on 24-Jun-2015

4.168 views

Category:

Technology


3 download

DESCRIPTION

#mailerstudy 02 暗号入門 2012-02-22更新しました。

TRANSCRIPT

Page 1: #mailerstudy 02 暗号入門 (2012-02-22更新)

メールサーバ勉強会 #mailerstudy 02

暗号入門 - アリスとボブの恋の行方 -

株式会社ハートビーツ 滝澤 隆史

Page 2: #mailerstudy 02 暗号入門 (2012-02-22更新)

私は誰

• 氏名: 滝澤 隆史 @ttkzw • 所属: 株式会社ハートビーツ • 何やっている人

▫ メーラMuttの国際化や日本語対応パッチ作者 ▫ SpamAssassinの日本語対応パッチ作者

• メールシステムとの関わり ▫ システム管理者として1997年から2006年までメールサーバの管理

▫ 昔、qmail関連で色々やっていた。2006年にqmail捨て捨て。Postfix/Dovecot遣いにクラスチェンジ

▫ 現在は個人サーバでメールサーバを運用 Postfix + Dovecot + Sieve(dovecot-pigeonhole) +

ClamAV + SpamAssassin + spamass-milter + Roundcube

Page 3: #mailerstudy 02 暗号入門 (2012-02-22更新)

アジェンダ

• メールを利用する上での脅威

• 盗聴を防ぐ暗号技術

• 完全性、メッセージ認証、否認防止を行う暗号技術

• 公開鍵が本物であることを証明する暗号技術

Page 4: #mailerstudy 02 暗号入門 (2012-02-22更新)

参考図書

• 『新版 暗号技術入門 秘密の国のアリス』 ▫ 著者: 結城 浩 ▫ 出版社:ソフトバンククリエイティブ

• 『暗号技術大全』 ▫ 著者: ブルース シュナイアー ▫ 出版社:ソフトバンククリエイティブ ▫ もしかしたら絶版かも

• 各種RFC • WikiPedia

Page 5: #mailerstudy 02 暗号入門 (2012-02-22更新)

暗号を利用することで解決できる脅威について学ぼう

Page 6: #mailerstudy 02 暗号入門 (2012-02-22更新)

メールを利用する上での脅威

• メールを利用する上で様々な脅威がある

• どのような脅威があるかを確認しよう

Page 7: #mailerstudy 02 暗号入門 (2012-02-22更新)

登場人物

名前 役割

アリス メッセージの差出人

ボブ メッセージの受取人

イブ メッセージを盗聴する人

マロリー メッセージを改ざんする人

Page 8: #mailerstudy 02 暗号入門 (2012-02-22更新)

盗聴

• データを盗み見ること

• 盗聴により情報が漏洩する恐れがある

好きです 好きです 好きです

アリス

イブ

ボブ

盗聴

Page 9: #mailerstudy 02 暗号入門 (2012-02-22更新)

否認

• データを送っているにもかかわらず、送っていないと否認される

• 受け取った内容を信じて行動すると馬鹿をみる

好きです 好きです

アリス ボブ

そんなメール送ってないわ

ありがとう。 僕も好きです

否認

Page 10: #mailerstudy 02 暗号入門 (2012-02-22更新)

改ざん

• 受け取ったデータやファイルが改ざんされる

好きです 嫌いです 嫌いです

アリス

マロリー

ボブ

改ざん

Page 11: #mailerstudy 02 暗号入門 (2012-02-22更新)

詐称

• 送信者が詐称される

嫌いです

アリス ボブ

偽物アリス

嫌いです

詐称

Page 12: #mailerstudy 02 暗号入門 (2012-02-22更新)

脅威に対する対策技術

脅威 求めるもの 対策技術

盗聴 機密性 暗号化。 受信者のみあるいは当事者間のみが復号できるようにメッセージを暗号化すること。

否認 否認防止 送信者のみが持っている鍵で暗号化すること。 (受信者が同じ鍵を持っていると否認防止はできない)

改ざん 完全性 完全性の検証。 送信者および受信者が同じアルゴリズム(一方向ハッシュ関数やメッセージ認証コード)で計算した結果がおなじであることを検証すること。

詐称 認証 メッセージ認証。 送信者のみあるいは当事者間のみが持っている鍵で暗号化し、受信者により復号できること。

Page 13: #mailerstudy 02 暗号入門 (2012-02-22更新)

脅威のまとめ

• 脅威のまとめ ▫ 盗聴

▫ 否認

▫ 改ざん

▫ 詐称

• 脅威への対策 ▫ 暗号技術の利用

Page 14: #mailerstudy 02 暗号入門 (2012-02-22更新)
Page 15: #mailerstudy 02 暗号入門 (2012-02-22更新)

平文 (plaintext)

• 平文(暗号化されていない文章)は盗聴されたら内容がわかる。

好きです(平文)

好きです (平文)

好きです (平文)

アリス

イブ

ボブ

盗聴

平文であるため、内容がわかる。

Page 16: #mailerstudy 02 暗号入門 (2012-02-22更新)

暗号文 (ciphertext)

• 暗号文(暗号化された文章)は意味のない文字列であるため、盗聴されても内容がわからない。

MIIB2DCCAU (暗号文)

好きです(平文)

好きです (平文)

アリス

イブ

ボブ

盗聴

暗号文であるため、内容がわからない。

暗号化 復号

鍵 鍵

Page 17: #mailerstudy 02 暗号入門 (2012-02-22更新)

暗号の要素

• アルゴリズム ▫ 暗号化および復号を行う仕組み

• 鍵 ▫ 暗号化および復号に使用する情報

• 例)シーザー暗号

▫ アルゴリズム:アルファベット順に文字をシフトする

▫ 鍵:3文字

Page 18: #mailerstudy 02 暗号入門 (2012-02-22更新)

現代の暗号のアルゴリズムと鍵

• 求められていること ▫ 広く公開されていること アルゴリズムを秘匿にすることは意味がない。 たいてい、解読されたり、漏洩されたりする。

▫ 数学的に強度があること 解読に時間がかかる。

▫ ……

Page 19: #mailerstudy 02 暗号入門 (2012-02-22更新)

暗号の方法

• 共通鍵暗号

• 公開鍵暗号

Page 20: #mailerstudy 02 暗号入門 (2012-02-22更新)

共通鍵暗号

• 暗号化と復号に同じ鍵を使う方法

• この鍵を共通鍵あるいは秘密鍵と呼ぶ

• 主なアルゴリズム ▫ RC4、3DES、AES

Page 21: #mailerstudy 02 暗号入門 (2012-02-22更新)

共通鍵暗号

MIIB2DCCAU (暗号文)

好きです(平文)

好きです (平文)

アリス イブ ボブ

盗聴

共通鍵を持っていないので、復号できないため、内容がわからない。

暗号化 復号

共通鍵 共通鍵

鍵の盗聴を防ぐために、信頼できる方法で同じ鍵を予め渡

す必要がある。

問題点

Page 22: #mailerstudy 02 暗号入門 (2012-02-22更新)

共通鍵暗号の問題点

• 共通鍵暗号の問題点 ▫ 鍵配送問題 鍵の配送中に鍵そのものが盗聴される恐れがある

▫ 鍵管理問題 人数が増えたら、そのペア分の鍵を管理することになり、非常に煩雑になる。

• 解決策 ▫ ボブが作った共通鍵をアリスに対面で直接渡すなどの信頼できる方法を使う しかし、人数が増えると破綻する 鍵管理問題は無くならない

• 根本的な解決策 ▫ 公開鍵暗号を使う。 ▫ 共通鍵をさらに公開鍵暗号で暗号化する。

Page 23: #mailerstudy 02 暗号入門 (2012-02-22更新)

公開鍵暗号

• 一組の公開鍵とプライベート鍵を用いて、暗号化と復号を互いに異なる鍵で行う方法

• 公開鍵は公開してもよく、プライベート鍵は本人のみが持って秘密にしておく。

• 公開鍵は見られても問題ないため、鍵の配送中の盗聴の問題は解決する

• 主なアルゴリズム ▫ RSA

Page 24: #mailerstudy 02 暗号入門 (2012-02-22更新)

公開鍵暗号

MIIB2DCCAU (暗号文)

好きです(平文)

好きです (平文)

アリス イブ ボブ

盗聴

ボブのプライベート鍵を持っていないため復号できない。

暗号化 復号

ボブの公開鍵 公開鍵

プライベート鍵 鍵ペア

ボブの公開鍵が本物であることを確認する必

要がある。

問題点

Page 25: #mailerstudy 02 暗号入門 (2012-02-22更新)

公開鍵暗号の問題点

• 公開鍵暗号の問題点 ▫ 公開鍵の証明問題 アリスが受け取ったボブの公開鍵が本物であるかわからない

• 対策 ▫ ボブがアリスに信頼できる方法で公開鍵を渡す。 ▫ アリスが入手した公開鍵が本物であるかを検証する。 フィンガープリントの確認

▫ 信頼できる第三者にデジタル署名してもらう 公開鍵証明書

Page 26: #mailerstudy 02 暗号入門 (2012-02-22更新)

公開鍵暗号の問題点

• 公開鍵暗号の問題点 ▫ 共通鍵暗号より計算コストが高い。

• 対策 ▫ 共通鍵暗号と併用し、鍵の配送や(後述する)デジタル署名などの一部の重要なときのみ公開鍵暗号を用いる。

Page 27: #mailerstudy 02 暗号入門 (2012-02-22更新)

セッション鍵

• 通信のセッション中に一定時間だけ用いる使い捨ての共通鍵

• 疑似乱数生成器により生成する

• 公開鍵暗号を使ってセッション鍵を暗号化して配送することにより、共通鍵暗号の鍵配送問題は解決できる

Page 28: #mailerstudy 02 暗号入門 (2012-02-22更新)

疑似乱数

• 乱数 ▫ 予測できない数

• 疑似乱数 ▫ コンピュータでは真の乱数を生成できない

▫ コンピュータで生成できるのは乱数に近い性質を持つ疑似乱数

▫ エントロピー(乱雑さ)を収集して用いることにより真の乱数に近づけることが行われている。 環境ノイズ(ディスクI/O、キーボード、マウスなど)の利用

Page 29: #mailerstudy 02 暗号入門 (2012-02-22更新)

疑似乱数生成器

• 疑似乱数生成器 ▫ 疑似乱数を生成する機能 Linuxの場合 /dev/random ▫ エントロピーを収集するまでロックする

/dev/urandom ▫ エントロピープールを再利用しロックしない

他のOSでも同様な機能がある

• 主な用途 ▫ セッション鍵の生成 ▫ 公開鍵暗号の鍵の生成

Page 30: #mailerstudy 02 暗号入門 (2012-02-22更新)

暗号のまとめ

• 暗号を使うことにより、盗聴による情報の漏洩を防ぐことができる

• 暗号の要素 ▫ アルゴリズムと鍵

• 暗号の方式 ▫ 共通鍵暗号 ▫ 公開鍵暗号

• 鍵配送問題 • セッション鍵 • 疑似乱数生成器

Page 31: #mailerstudy 02 暗号入門 (2012-02-22更新)
Page 32: #mailerstudy 02 暗号入門 (2012-02-22更新)

一方向ハッシュ関数

• 任意の長さのメッセージを固定の長さのハッシュ値に変換する関数

• 暗号学的ハッシュ関数やメッセージ ダイジェストとも呼ばれる

• メッセージが少しでも異なればハッシュ値も変わるため、改ざんされたことが検出できる ▫ メッセージの完全性の検証

• アルゴリズム ▫ MD5、SHA-1、SHA-256、SHA-512

Page 33: #mailerstudy 02 暗号入門 (2012-02-22更新)

一方向ハッシュ関数の性質

• ハッシュ値から元のメッセージを求めることが困難

• あるハッシュ値になる異なるメッセージを見つけることが困難(弱衝突耐性)

• 同じハッシュ値になる異なるメッセージを見つけることが困難(強衝突耐性)

Page 34: #mailerstudy 02 暗号入門 (2012-02-22更新)

一方向ハッシュ関数の用途

• 改ざんの検出

• チェックサム

• 例)ファイルの完全性の確認 ▫ 配布ソフトウェア(ISOイメージなど)と共にハッシュ値を計算したファイルも用意する。 ダウンロードの失敗および改ざんの検知

$ cat SHA1SUM 0d64f0532316a0a212c5916d997581e72c52ff02 *ubuntu-11.10-desktop-amd64.iso 8492d3daf0c89907c4301cb2c72094fe59037c76 *ubuntu-11.10-desktop-i386.iso $ sha1sum -c SHA1SUM ubuntu-11.10-desktop-amd64.iso: OK ubuntu-11.10-desktop-i386.iso: OK

Page 35: #mailerstudy 02 暗号入門 (2012-02-22更新)

一方向ハッシュ関数の用途

• フィンガープリント ▫ メッセージの完全性を確認するために、ユーザーがハッシュ値を確認しやすいように16進数などで表現したもの CA証明書

Country = US Organization = VeriSign, Inc. Organizational Unit = Class 1 Public Primary Certification Authority Serial Number: 00 cd ba 7f 56 f0 df e4 bc 54 fe 22 ac b3 72 aa 55 Operational Period: Mon Jan 29, 1996 to Tue Aug 01, 2028 Certificate SHA1 Fingerprint: 90ae a269 85ff 1480 4c43 4952 ece9 6084 77af 556f

$ gpg --fingerprint [email protected] pub 1024D/22B8A63A 2010-08-15 [満了: 2020-08-12] 指紋 = C72A 0457 2FA4 0973 21A0 2750 6C19 647E 22B8 A63A uid Foo Bar sub 2048g/D22D0E33 2010-08-15 [満了: 2020-08-12]

Page 36: #mailerstudy 02 暗号入門 (2012-02-22更新)

一方向ハッシュ関数

メッセージ

アリス ボブ

一方向 ハッシュ関数

ハッシュ値

メッセージ

一方向 ハッシュ関数

ハッシュ値

ハッシュ値

比 較

改竄 検出

アリスがボブに信頼できる方法でハッシュ値を伝える必要がある。

問題点

Page 37: #mailerstudy 02 暗号入門 (2012-02-22更新)

一方向ハッシュ関数の問題点

• 一方向ハッシュ関数の問題点 ▫ ハッシュ値そのものが改ざんされる可能性がある

• 対策 ▫ メッセージを送るたびにアリスがボブに信頼できる方法でハッシュ値を伝える

▫ 公開鍵暗号と組み合わせて利用する →デジタル署名

• 注意 ▫ 「改ざんを検出する」技術であって「改ざんを防ぐ」技術ではない。

Page 38: #mailerstudy 02 暗号入門 (2012-02-22更新)

メッセージ認証コード

• 共通鍵とメッセージを使ってメッセージの認証のための値(MAC値)を算出する方法

• MAC(Message Authentication Code)と略す

• できること ▫ 完全性の検証(改ざんの検出)

▫ メッセージの送信者の認証

Page 39: #mailerstudy 02 暗号入門 (2012-02-22更新)

メッセージ認証コード

• 送信側で計算したMAC値と受信側で計算したMAC値が同じであれば、同じ共通鍵と同じメッセージであることが確認できる

• 一方向ハッシュ関数の技術を用いたHMACがよく使われている。

• 主なアルゴリズム ▫ HMAC-MD5, HMAC-SHA-1, HMAC-SHA256

Page 40: #mailerstudy 02 暗号入門 (2012-02-22更新)

メッセージ認証コード

メッセージ

アリス ボブ

MAC アルゴリズム

MAC値

メッセージ

MAC アルゴリズム

MAC値

MAC値

比 較

改竄 検出 と 認証

通信を行う2者間で事前に鍵を共有する必要がある

問題点

共通鍵 共通鍵

Page 41: #mailerstudy 02 暗号入門 (2012-02-22更新)

メッセージ認証コード

• メッセージ認証コードの問題点 ▫ 共通鍵を使うため、共通鍵暗号と同じ問題を抱えている。

• 対策 ▫ ボブがアリスに信頼できる方法で公開鍵を渡す。

▫ 公開鍵暗号と組み合わせて利用する

Page 42: #mailerstudy 02 暗号入門 (2012-02-22更新)

デジタル署名

• 一方向ハッシュ関数と公開鍵暗号を利用した技術で、メッセージのハッシュ値をプライベート鍵で暗号化したもの

• できること ▫ 改ざんの検出

▫ 送信者の認証

▫ 否認の防止

• 主なアルゴリズム ▫ RSA, DSA

Page 43: #mailerstudy 02 暗号入門 (2012-02-22更新)

デジタル署名

メッセージ アリス ボブ

一方向 ハッシュ関数

ハッシュ値

メッセージ

一方向 ハッシュ関数

ハッシュ値

ハッシュ値

比 較

改竄検出 認証

否認防止

アリスの プライベート鍵

デジタル 署名

デジタル 署名

暗号化 復号

アリスの 公開鍵

アリスの 公開鍵

鍵ペア

Page 44: #mailerstudy 02 暗号入門 (2012-02-22更新)

デジタル署名の問題点

• デジタル署名の問題点 ▫ 公開鍵を使うため、公開鍵暗号と同じ問題を抱えている。

• 対策 ▫ 公開鍵証明書

公開鍵基盤(PKI)

▫ 信頼の輪(web of trust) PGP, OpenPGP

Page 45: #mailerstudy 02 暗号入門 (2012-02-22更新)

まとめ

完全性 認証 否認防止

一方向ハッシュ関数 ○

メッセージ認証コード ○ ○

デジタル署名 ○ ○ ○

Page 46: #mailerstudy 02 暗号入門 (2012-02-22更新)
Page 47: #mailerstudy 02 暗号入門 (2012-02-22更新)

公開鍵暗号の問題点

• 問題点 ▫ 公開鍵暗号やデジタル署名では通信相手の公開鍵を入手する必要がある。

▫ 入手した公開鍵が本物であるかどうかがわからない。

• 解決策 ▫ 公開鍵証明書

Page 48: #mailerstudy 02 暗号入門 (2012-02-22更新)

公開鍵証明書

• 公開鍵証明書は、公開鍵にユーザーやサーバなどの識別情報を付加した上で信用できる第三者(認証局や知人)がデジタル署名を行ったもの。

• 運転免許書に例えると ▫ 公開鍵証明書:運転免許証

▫ 認証局:運転免許証を発行する公安委員会

• 公開鍵証明書は単に証明書と呼ばれることが多い

Page 49: #mailerstudy 02 暗号入門 (2012-02-22更新)

公開鍵証明書

アリス ボブ

署名

ボブのCSR

ボブの 公開鍵

署名の 検証

CSRの 生成

ボブの プライベート鍵

サブジェクト

ボブの 証明書

ボブのCSR

トレントの 公開鍵

トレントの プライベート鍵

ボブの 証明書

ボブの 証明書

トレントの証明書

トレントの証明書

トレント(認証局)

CSR: 証明書署名要求

トレントの 公開鍵

デジタル署名

アリスはトレントの証明書を適切な方法で事前に入手する必要がある。

ボブの 公開鍵

Page 50: #mailerstudy 02 暗号入門 (2012-02-22更新)

公開鍵証明書と公開鍵基盤

• 疑問 ▫ ボブの証明書を発行したトレント(認証局)自身の証明書は誰が発行するのか?

• 解決策 ▫ 公開鍵基盤(PKI, Public Key Infrastructure)

Page 51: #mailerstudy 02 暗号入門 (2012-02-22更新)

公開鍵基盤(PKI)

ボブ

ボブの証明書

中間証明書

中間認証局

ルート認証局

公開鍵

CSR

公開鍵 署名

CSR

署名

プライ ベート鍵

プライ ベート鍵

公開鍵 プライ ベート鍵

CSR 署名

自己署名

ボブの証明書

中間証明書

ルート証明書

Page 52: #mailerstudy 02 暗号入門 (2012-02-22更新)

公開鍵基盤(PKI)

アリス

ボブ

ボブの証明書 ボブの証明書 ボブの 公開鍵

中間証明書

ルート証明書 中間認証局

ルート認証局

中間証明書

中間証明書

ルート証明書

署名の検証

署名の検証

公開鍵

公開鍵

署名

署名

公開鍵 一緒に配布 ボブが配布

OSやソフトウェアに バンドルして配布

証明書パス の検証

Page 53: #mailerstudy 02 暗号入門 (2012-02-22更新)

まとめ

• 公開鍵証明書により公開鍵の認証を行うことができる。

• 公開鍵基盤(PKI)により、利用者の公開鍵を認証することができる。