SlideShare a Scribd company logo
1 of 53
Download to read offline
メールサーバ勉強会 #mailerstudy 02
暗号入門
- アリスとボブの恋の行方 -
株式会社ハートビーツ 滝澤 隆史
私は誰
• 氏名: 滝澤 隆史 @ttkzw
• 所属: 株式会社ハートビーツ
• 何やっている人
 ▫ メーラMuttの国際化や日本語対応パッチ作者
 ▫ SpamAssassinの日本語対応パッチ作者
• メールシステムとの関わり
 ▫ システム管理者として1997年から2006年までメールサー
   バの管理
 ▫ 昔、qmail関連で色々やっていた。2006年にqmail捨て捨
   て。Postfix/Dovecot遣いにクラスチェンジ
 ▫ 現在は個人サーバでメールサーバを運用
   Postfix + Dovecot + Sieve(dovecot-pigeonhole) +
    ClamAV + SpamAssassin + spamass-milter +
    Roundcube
アジェンダ
• メールを利用する上での脅威
• 盗聴を防ぐ暗号技術
• 完全性、メッセージ認証、否認防止を行う暗号
  技術
• 公開鍵が本物であることを証明する暗号技術
参考図書
• 『新版 暗号技術入門 秘密の国のア
  リス』
 ▫ 著者: 結城 浩
 ▫ 出版社:ソフトバンククリエイティブ
• 『暗号技術大全』
 ▫ 著者: ブルース シュナイアー
 ▫ 出版社:ソフトバンククリエイティブ
 ▫ もしかしたら絶版かも
• 各種RFC
• WikiPedia
暗号を利用することで解決できる脅威について学ぼう
メールを利用する上での脅威
• メールを利用する上で様々な脅威がある
• どのような脅威があるかを確認しよう
登場人物
名前     役割
アリス    メッセージの差出人
ボブ     メッセージの受取人
イブ     メッセージを盗聴する人
マロリー   メッセージを改ざんする人
盗聴
• データを盗み見ること
• 盗聴により情報が漏洩する恐れがある

                     イブ

                盗聴

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


アリス                              ボブ
否認
• データを送っているにもかかわらず、送ってい
  ないと否認される
• 受け取った内容を信じて行動すると馬鹿をみる
      好きです       好きです

         否認             ボブ
アリス
      そんなメール   ありがとう。
      送ってないわ   僕も好きです
改ざん
• 受け取ったデータやファイルが改ざんされる

                     マロリー


                    改ざん

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


アリス                                ボブ
詐称
• 送信者が詐称される

               嫌いです


アリス                   ボブ



        嫌いです


偽物アリス    詐称
脅威に対する対策技術
脅威   求めるもの 対策技術
盗聴   機密性    暗号化。
            受信者のみあるいは当事者間のみが復号できるように
            メッセージを暗号化すること。
否認   否認防止   送信者のみが持っている鍵で暗号化すること。
            (受信者が同じ鍵を持っていると否認防止はできない)
改ざん 完全性     完全性の検証。
            送信者および受信者が同じアルゴリズム(一方向ハッ
            シュ関数やメッセージ認証コード)で計算した結果がお
            なじであることを検証すること。
詐称   認証     メッセージ認証。
            送信者のみあるいは当事者間のみが持っている鍵で暗号
            化し、受信者により復号できること。
脅威のまとめ
• 脅威のまとめ
 ▫   盗聴
 ▫   否認
 ▫   改ざん
 ▫   詐称
• 脅威への対策
 ▫ 暗号技術の利用
平文 (plaintext)
• 平文(暗号化されていない文章)は盗聴された
  ら内容がわかる。
                 イブ
 アリス                             ボブ
                      平文であるため、
                      内容がわかる。

            盗聴
好きです         好きです                好きです
(平文)         (平文)                (平文)
暗号文 (ciphertext)
• 暗号文(暗号化された文章)は意味のない文字
  列であるため、盗聴されても内容がわからない。
                  イブ
 アリス                               ボブ
                       暗号文であるため、
                       内容がわからない。

             盗聴
好きです         MIIB2DCCAU            好きです
       暗号化                 復号
(平文)          (暗号文)                (平文)

        鍵                   鍵
暗号の要素
• アルゴリズム
 ▫ 暗号化および復号を行う仕組み
•鍵
 ▫ 暗号化および復号に使用する情報
• 例)シーザー暗号
 ▫ アルゴリズム:アルファベット順に文字をシフト
   する
 ▫ 鍵:3文字
現代の暗号のアルゴリズムと鍵
• 求められていること
▫ 広く公開されていること
  アルゴリズムを秘匿にすることは意味がない。
   たいてい、解読されたり、漏洩されたりする。
▫ 数学的に強度があること
  解読に時間がかかる。
▫ ……
暗号の方法
• 共通鍵暗号
• 公開鍵暗号
共通鍵暗号
• 暗号化と復号に同じ鍵を使う方法
• この鍵を共通鍵あるいは秘密鍵と呼ぶ
• 主なアルゴリズム
▫ RC4、3DES、AES
共通鍵暗号
アリス                   イブ                ボブ
                            共通鍵を持ってい
                            ないので、復号で
                            きないため、内容
                             がわからない。
               盗聴
好きです               MIIB2DCCAU          好きです
       暗号化                      復号
(平文)                (暗号文)              (平文)

       共通鍵                      共通鍵

                     鍵の盗聴を防ぐために、信頼
             問題点
                     できる方法で同じ鍵を予め渡
                        す必要がある。
共通鍵暗号の問題点
• 共通鍵暗号の問題点
 ▫ 鍵配送問題
   鍵の配送中に鍵そのものが盗聴される恐れがある
 ▫ 鍵管理問題
   人数が増えたら、そのペア分の鍵を管理することになり、非常
    に煩雑になる。
• 解決策
 ▫ ボブが作った共通鍵をアリスに対面で直接渡すなどの信頼
   できる方法を使う
   しかし、人数が増えると破綻する
   鍵管理問題は無くならない
• 根本的な解決策
 ▫ 公開鍵暗号を使う。
 ▫ 共通鍵をさらに公開鍵暗号で暗号化する。
公開鍵暗号
• 一組の公開鍵とプライベート鍵を用いて、暗号
  化と復号を互いに異なる鍵で行う方法
• 公開鍵は公開してもよく、プライベート鍵は本
  人のみが持って秘密にしておく。
• 公開鍵は見られても問題ないため、鍵の配送中
  の盗聴の問題は解決する
• 主なアルゴリズム
▫ RSA
公開鍵暗号
 アリス                 イブ                 ボブ
                          ボブのプライベート
                          鍵を持っていないた
                           め復号できない。

                盗聴
好きです            MIIB2DCCAU             好きです
         暗号化                  復号
(平文)             (暗号文)                 (平文)


                             プライベート鍵
                                        鍵ペア
問題点    ボブの公開鍵                  公開鍵
ボブの公開鍵が本物で
あることを確認する必
   要がある。
公開鍵暗号の問題点
• 公開鍵暗号の問題点
 ▫ 公開鍵の証明問題
   アリスが受け取ったボブの公開鍵が本物であるかわ
    からない
• 対策
 ▫ ボブがアリスに信頼できる方法で公開鍵を渡す。
 ▫ アリスが入手した公開鍵が本物であるかを検証す
   る。
   フィンガープリントの確認
 ▫ 信頼できる第三者にデジタル署名してもらう
   公開鍵証明書
公開鍵暗号の問題点
• 公開鍵暗号の問題点
 ▫ 共通鍵暗号より計算コストが高い。
• 対策
 ▫ 共通鍵暗号と併用し、鍵の配送や(後述する)デ
   ジタル署名などの一部の重要なときのみ公開鍵暗
   号を用いる。
セッション鍵
• 通信のセッション中に一定時間だけ用いる使い
  捨ての共通鍵
• 疑似乱数生成器により生成する
• 公開鍵暗号を使ってセッション鍵を暗号化して
  配送することにより、共通鍵暗号の鍵配送問題
  は解決できる
疑似乱数
• 乱数
 ▫ 予測できない数
• 疑似乱数
 ▫ コンピュータでは真の乱数を生成できない
 ▫ コンピュータで生成できるのは乱数に近い性質を
   持つ疑似乱数
 ▫ エントロピー(乱雑さ)を収集して用いることに
   より真の乱数に近づけることが行われている。
   環境ノイズ(ディスクI/O、キーボード、マウスな
    ど)の利用
疑似乱数生成器
• 疑似乱数生成器
 ▫ 疑似乱数を生成する機能
   Linuxの場合
    /dev/random
    ▫ エントロピーを収集するまでロックする
    /dev/urandom
    ▫ エントロピープールを再利用しロックしない
   他のOSでも同様な機能がある
• 主な用途
 ▫ セッション鍵の生成
 ▫ 公開鍵暗号の鍵の生成
暗号のまとめ
• 暗号を使うことにより、盗聴による情報の漏洩
  を防ぐことができる
• 暗号の要素
 ▫ アルゴリズムと鍵
• 暗号の方式
 ▫ 共通鍵暗号
 ▫ 公開鍵暗号
• 鍵配送問題
• セッション鍵
• 疑似乱数生成器
一方向ハッシュ関数
• 任意の長さのメッセージを固定の長さのハッ
  シュ値に変換する関数
• 暗号学的ハッシュ関数やメッセージ ダイジェス
  トとも呼ばれる
• メッセージが少しでも異なればハッシュ値も変
  わるため、改ざんされたことが検出できる
 ▫ メッセージの完全性の検証
• アルゴリズム
 ▫ MD5、SHA-1、SHA-256、SHA-512
一方向ハッシュ関数の性質
• ハッシュ値から元のメッセージを求めることが
  困難
• あるハッシュ値になる異なるメッセージを見つ
  けることが困難(弱衝突耐性)
• 同じハッシュ値になる異なるメッセージを見つ
  けることが困難(強衝突耐性)
一方向ハッシュ関数の用途
• 改ざんの検出
• チェックサム
• 例)ファイルの完全性の確認
  ▫ 配布ソフトウェア(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
一方向ハッシュ関数の用途
• フィンガープリント
 ▫ メッセージの完全性を確認するために、ユーザーがハッ
   シュ値を確認しやすいように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 foo@example.jp
    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]
一方向ハッシュ関数
アリス                              ボブ

      メッセージ        メッセージ


        一方向          一方向
      ハッシュ関数       ハッシュ関数



                   ハッシュ値
                             比    改竄
                             較    検出
      ハッシュ値        ハッシュ値

          アリスがボブに信頼で   問題点
          きる方法でハッシュ値
          を伝える必要がある。
一方向ハッシュ関数の問題点
• 一方向ハッシュ関数の問題点
 ▫ ハッシュ値そのものが改ざんされる可能性がある
• 対策
 ▫ メッセージを送るたびにアリスがボブに信頼でき
   る方法でハッシュ値を伝える
 ▫ 公開鍵暗号と組み合わせて利用する
   →デジタル署名
• 注意
 ▫ 「改ざんを検出する」技術であって「改ざんを防
   ぐ」技術ではない。
メッセージ認証コード
• 共通鍵とメッセージを使ってメッセージの認証
  のための値(MAC値)を算出する方法
• MAC(Message Authentication Code)と略す
• できること
 ▫ 完全性の検証(改ざんの検出)
 ▫ メッセージの送信者の認証
メッセージ認証コード
• 送信側で計算したMAC値と受信側で計算した
  MAC値が同じであれば、同じ共通鍵と同じメッ
  セージであることが確認できる
• 一方向ハッシュ関数の技術を用いたHMACがよ
  く使われている。
• 主なアルゴリズム
▫ HMAC-MD5, HMAC-SHA-1, HMAC-SHA256
メッセージ認証コード通信を行う2者間 問題点
                で事前に鍵を共有
アリス                           ボブ
                 する必要がある

       メッセージ    メッセージ



 共通鍵                         共通鍵
         MAC      MAC
       アルゴリズム   アルゴリズム



                 MAC値          改竄
                         比     検出
                         較     と
        MAC値     MAC値          認証
メッセージ認証コード
• メッセージ認証コードの問題点
 ▫ 共通鍵を使うため、共通鍵暗号と同じ問題を抱え
   ている。
• 対策
 ▫ ボブがアリスに信頼できる方法で公開鍵を渡す。
 ▫ 公開鍵暗号と組み合わせて利用する
デジタル署名
• 一方向ハッシュ関数と公開鍵暗号を利用した技
  術で、メッセージのハッシュ値をプライベート
  鍵で暗号化したもの
• できること
▫ 改ざんの検出
▫ 送信者の認証
▫ 否認の防止
• 主なアルゴリズム
▫ RSA, DSA
デジタル署名
アリス       メッセージ    メッセージ        ボブ


            一方向      一方向
          ハッシュ関数   ハッシュ関数


          ハッシュ値    ハッシュ値        改竄検出
                            比
                                 認証
                            較
鍵ペア                ハッシュ値        否認防止
 アリスの
 公開鍵                        アリスの
                            公開鍵
  アリスの     暗号化       復号
プライベート鍵

           デジタル     デジタル
            署名       署名
デジタル署名の問題点
• デジタル署名の問題点
 ▫ 公開鍵を使うため、公開鍵暗号と同じ問題を抱え
   ている。
• 対策
 ▫ 公開鍵証明書
   公開鍵基盤(PKI)
 ▫ 信頼の輪(web of trust)
   PGP, OpenPGP
まとめ
             完全性   認証   否認防止
一方向ハッシュ関数     ○
メッセージ認証コード    ○    ○
デジタル署名        ○    ○     ○
公開鍵暗号の問題点
• 問題点
 ▫ 公開鍵暗号やデジタル署名では通信相手の公開鍵
   を入手する必要がある。
 ▫ 入手した公開鍵が本物であるかどうかがわからな
   い。
• 解決策
 ▫ 公開鍵証明書
公開鍵証明書
• 公開鍵証明書は、公開鍵にユーザーやサーバな
  どの識別情報を付加した上で信用できる第三者
  (認証局や知人)がデジタル署名を行ったもの。
• 運転免許書に例えると
▫ 公開鍵証明書:運転免許証
▫ 認証局:運転免許証を発行する公安委員会
• 公開鍵証明書は単に証明書と呼ばれることが多
  い
公開鍵証明書                  トレント(認証局)
               トレントの   トレントの
                公開鍵    プライベート鍵


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

アリス                                        ボブ
      トレントの   トレントの              ボブの
       公開鍵     証明書                CSR

ボブの    署名の                       CSRの
                                        サブジェクト
公開鍵    検証                         生成

       デジタル    ボブの      ボブの      ボブの      ボブの
        署名     証明書      証明書      公開鍵    プライベート鍵
公開鍵証明書と公開鍵基盤
• 疑問
 ▫ ボブの証明書を発行したトレント(認証局)自身
   の証明書は誰が発行するのか?
• 解決策
 ▫ 公開鍵基盤(PKI, Public Key Infrastructure)
公開鍵基盤(PKI)
                  自己署名                ルート認証局
ルート証明書              署名          CSR

                         プライ
         中間証明書      署名   ベート鍵   公開鍵


                                      中間認証局
中間証明書                           CSR

                         プライ
         ボブの証明書     署名   ベート鍵   公開鍵


                                         ボブ
ボブの証明書                          CSR

                         プライ
                         ベート鍵   公開鍵
公開鍵基盤(PKI)                         ルート認証局

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

アリス
          ルート証明書
              公開鍵
                                       中間認証局
        署名の
        検証                    中間証明書

              署名
証明書パス     中間証明書
 の検証          公開鍵
                                         ボブ
        署名の
                              中間証明書
        検証
              署名
  ボブの     ボブの証明書
  公開鍵                         ボブの証明書
              公開鍵
                      一緒に配布
                      ボブが配布
まとめ
• 公開鍵証明書により公開鍵の認証を行うことが
  できる。
• 公開鍵基盤(PKI)により、利用者の公開鍵を
  認証することができる。

More Related Content

What's hot

安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと
shibataka000
 

What's hot (20)

初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
初心者がRSA暗号を教わったら自力でCTFの問題が解けるようになった話
 
Bitcoinを技術的に理解する
Bitcoinを技術的に理解するBitcoinを技術的に理解する
Bitcoinを技術的に理解する
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
 
Post Quantum Cryptography: Technical Overview
Post Quantum Cryptography: Technical OverviewPost Quantum Cryptography: Technical Overview
Post Quantum Cryptography: Technical Overview
 
暗認本読書会10
暗認本読書会10暗認本読書会10
暗認本読書会10
 
The practice of nft+defi ( nft+defiの小さな実践)
The practice of nft+defi ( nft+defiの小さな実践)The practice of nft+defi ( nft+defiの小さな実践)
The practice of nft+defi ( nft+defiの小さな実践)
 
安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと
 
TRITON: The Next Generation of ICS Malware
TRITON: The Next Generation of ICS MalwareTRITON: The Next Generation of ICS Malware
TRITON: The Next Generation of ICS Malware
 
ブロックチェーン系プロジェクトで着目される暗号技術
ブロックチェーン系プロジェクトで着目される暗号技術ブロックチェーン系プロジェクトで着目される暗号技術
ブロックチェーン系プロジェクトで着目される暗号技術
 
CISO Mind Map v10(日本語版)
CISO Mind Map v10(日本語版)CISO Mind Map v10(日本語版)
CISO Mind Map v10(日本語版)
 
フィッシングとドメイン名・DNS
フィッシングとドメイン名・DNSフィッシングとドメイン名・DNS
フィッシングとドメイン名・DNS
 
暗認本読書会11
暗認本読書会11暗認本読書会11
暗認本読書会11
 
Cryptography
CryptographyCryptography
Cryptography
 
Cryptography
CryptographyCryptography
Cryptography
 
Mitre ATT&CK Kullanarak Etkin Saldırı Tespiti
Mitre ATT&CK Kullanarak Etkin Saldırı TespitiMitre ATT&CK Kullanarak Etkin Saldırı Tespiti
Mitre ATT&CK Kullanarak Etkin Saldırı Tespiti
 
No Easy Breach DerbyCon 2016
No Easy Breach DerbyCon 2016No Easy Breach DerbyCon 2016
No Easy Breach DerbyCon 2016
 
Introduction to Corda Blockchain for Developers
Introduction to Corda Blockchain for DevelopersIntroduction to Corda Blockchain for Developers
Introduction to Corda Blockchain for Developers
 
H.264で相互接続 - WebRTC Meetup Tokyo #10
H.264で相互接続 - WebRTC Meetup Tokyo #10H.264で相互接続 - WebRTC Meetup Tokyo #10
H.264で相互接続 - WebRTC Meetup Tokyo #10
 
Hacked? Pray that the Attacker used PowerShell
Hacked? Pray that the Attacker used PowerShellHacked? Pray that the Attacker used PowerShell
Hacked? Pray that the Attacker used PowerShell
 
Verrazzanoご紹介
Verrazzanoご紹介Verrazzanoご紹介
Verrazzanoご紹介
 

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

コンバージョンに効く!?SSLサーバ処方箋
コンバージョンに効く!?SSLサーバ処方箋コンバージョンに効く!?SSLサーバ処方箋
コンバージョンに効く!?SSLサーバ処方箋
Masashi Kawamura
 
人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料
人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料
人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料
matns
 
OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Connect - Nat Sakimura at OpenID TechNight #7OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Foundation Japan
 

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

CRYPT+YOU, UNDERSTAND TODAY!
CRYPT+YOU, UNDERSTAND TODAY!CRYPT+YOU, UNDERSTAND TODAY!
CRYPT+YOU, UNDERSTAND TODAY!
 
犬でもわかる公開鍵暗号
犬でもわかる公開鍵暗号犬でもわかる公開鍵暗号
犬でもわかる公開鍵暗号
 
コンバージョンに効く!?SSLサーバ処方箋
コンバージョンに効く!?SSLサーバ処方箋コンバージョンに効く!?SSLサーバ処方箋
コンバージョンに効く!?SSLサーバ処方箋
 
第5回web技術勉強会 暗号技術編その3
第5回web技術勉強会 暗号技術編その3第5回web技術勉強会 暗号技術編その3
第5回web技術勉強会 暗号技術編その3
 
公開鍵、秘密鍵ってなに?
公開鍵、秘密鍵ってなに?公開鍵、秘密鍵ってなに?
公開鍵、秘密鍵ってなに?
 
#qpstudy 2015.11 20分でわかるPKI
#qpstudy 2015.11 20分でわかるPKI#qpstudy 2015.11 20分でわかるPKI
#qpstudy 2015.11 20分でわかるPKI
 
AWS KMSと鍵の話
AWS KMSと鍵の話AWS KMSと鍵の話
AWS KMSと鍵の話
 
第4回web技術勉強会 暗号技術編その2
第4回web技術勉強会 暗号技術編その2第4回web技術勉強会 暗号技術編その2
第4回web技術勉強会 暗号技術編その2
 
情報セキュリティCAS 第七回放送用スライド
情報セキュリティCAS 第七回放送用スライド情報セキュリティCAS 第七回放送用スライド
情報セキュリティCAS 第七回放送用スライド
 
AWSを学ぶ上で必要となる前提知識(SSL)
AWSを学ぶ上で必要となる前提知識(SSL)AWSを学ぶ上で必要となる前提知識(SSL)
AWSを学ぶ上で必要となる前提知識(SSL)
 
暗号
暗号暗号
暗号
 
人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料
人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料
人生を豊かにするための暗号技術の話 - ネクストスケープ 2014/04/24 パワーランチ資料
 
AWSだけで出来る(たぶん)一番早く構築するセキュアな環境
AWSだけで出来る(たぶん)一番早く構築するセキュアな環境AWSだけで出来る(たぶん)一番早く構築するセキュアな環境
AWSだけで出来る(たぶん)一番早く構築するセキュアな環境
 
第3回web技術勉強会 暗号技術編その1
第3回web技術勉強会 暗号技術編その1第3回web技術勉強会 暗号技術編その1
第3回web技術勉強会 暗号技術編その1
 
CoinOtaku授業用スライド(ビットコインの仕組み)
CoinOtaku授業用スライド(ビットコインの仕組み)CoinOtaku授業用スライド(ビットコインの仕組み)
CoinOtaku授業用スライド(ビットコインの仕組み)
 
自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介
 
OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Connect - Nat Sakimura at OpenID TechNight #7OpenID Connect - Nat Sakimura at OpenID TechNight #7
OpenID Connect - Nat Sakimura at OpenID TechNight #7
 
Cryptography
CryptographyCryptography
Cryptography
 
SSLとは何か?:What's SSL?
SSLとは何か?:What's SSL?SSLとは何か?:What's SSL?
SSLとは何か?:What's SSL?
 
シェルスクリプトでRSA暗号
シェルスクリプトでRSA暗号シェルスクリプトでRSA暗号
シェルスクリプトでRSA暗号
 

More from Takashi Takizawa

BIND of Summer (2017-04-13)
BIND of Summer (2017-04-13)BIND of Summer (2017-04-13)
BIND of Summer (2017-04-13)
Takashi Takizawa
 
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Takashi Takizawa
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
Takashi Takizawa
 
#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門
Takashi Takizawa
 
#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史
Takashi Takizawa
 
#dnstudy 01 Unboundの紹介
#dnstudy 01 Unboundの紹介#dnstudy 01 Unboundの紹介
#dnstudy 01 Unboundの紹介
Takashi Takizawa
 

More from Takashi Takizawa (20)

DNS RFCの歩き方(短縮版)
DNS RFCの歩き方(短縮版)DNS RFCの歩き方(短縮版)
DNS RFCの歩き方(短縮版)
 
サバフェス! 2015 Spring LT資料
サバフェス! 2015 Spring LT資料サバフェス! 2015 Spring LT資料
サバフェス! 2015 Spring LT資料
 
BIND of Summer (2017-04-13)
BIND of Summer (2017-04-13)BIND of Summer (2017-04-13)
BIND of Summer (2017-04-13)
 
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
 
nginx入門
nginx入門nginx入門
nginx入門
 
nginxの紹介
nginxの紹介nginxの紹介
nginxの紹介
 
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
 
RFCについての復習
RFCについての復習RFCについての復習
RFCについての復習
 
DNS RFC系統図
DNS RFC系統図DNS RFC系統図
DNS RFC系統図
 
DNSのRFCの歩き方
DNSのRFCの歩き方DNSのRFCの歩き方
DNSのRFCの歩き方
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門
 
UnboundとDNSSEC(OSC2011 Tokyo/Spring)
UnboundとDNSSEC(OSC2011 Tokyo/Spring)UnboundとDNSSEC(OSC2011 Tokyo/Spring)
UnboundとDNSSEC(OSC2011 Tokyo/Spring)
 
Unboundの最適化(OSC2011 Tokyo/Spring)
Unboundの最適化(OSC2011 Tokyo/Spring)Unboundの最適化(OSC2011 Tokyo/Spring)
Unboundの最適化(OSC2011 Tokyo/Spring)
 
qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証
qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証
qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証
 
#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門
 
#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史
 
DNS再入門
DNS再入門DNS再入門
DNS再入門
 
#dnstudy 01 Unboundの紹介
#dnstudy 01 Unboundの紹介#dnstudy 01 Unboundの紹介
#dnstudy 01 Unboundの紹介
 
hbstudy20100821 SpamAssassin
hbstudy20100821 SpamAssassinhbstudy20100821 SpamAssassin
hbstudy20100821 SpamAssassin
 

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

  • 1. メールサーバ勉強会 #mailerstudy 02 暗号入門 - アリスとボブの恋の行方 - 株式会社ハートビーツ 滝澤 隆史
  • 2. 私は誰 • 氏名: 滝澤 隆史 @ttkzw • 所属: 株式会社ハートビーツ • 何やっている人 ▫ メーラMuttの国際化や日本語対応パッチ作者 ▫ SpamAssassinの日本語対応パッチ作者 • メールシステムとの関わり ▫ システム管理者として1997年から2006年までメールサー バの管理 ▫ 昔、qmail関連で色々やっていた。2006年にqmail捨て捨 て。Postfix/Dovecot遣いにクラスチェンジ ▫ 現在は個人サーバでメールサーバを運用  Postfix + Dovecot + Sieve(dovecot-pigeonhole) + ClamAV + SpamAssassin + spamass-milter + Roundcube
  • 3. アジェンダ • メールを利用する上での脅威 • 盗聴を防ぐ暗号技術 • 完全性、メッセージ認証、否認防止を行う暗号 技術 • 公開鍵が本物であることを証明する暗号技術
  • 4. 参考図書 • 『新版 暗号技術入門 秘密の国のア リス』 ▫ 著者: 結城 浩 ▫ 出版社:ソフトバンククリエイティブ • 『暗号技術大全』 ▫ 著者: ブルース シュナイアー ▫ 出版社:ソフトバンククリエイティブ ▫ もしかしたら絶版かも • 各種RFC • WikiPedia
  • 7. 登場人物 名前 役割 アリス メッセージの差出人 ボブ メッセージの受取人 イブ メッセージを盗聴する人 マロリー メッセージを改ざんする人
  • 8. 盗聴 • データを盗み見ること • 盗聴により情報が漏洩する恐れがある イブ 盗聴 好きです 好きです 好きです アリス ボブ
  • 9. 否認 • データを送っているにもかかわらず、送ってい ないと否認される • 受け取った内容を信じて行動すると馬鹿をみる 好きです 好きです 否認 ボブ アリス そんなメール ありがとう。 送ってないわ 僕も好きです
  • 10. 改ざん • 受け取ったデータやファイルが改ざんされる マロリー 改ざん 好きです 嫌いです 嫌いです アリス ボブ
  • 11. 詐称 • 送信者が詐称される 嫌いです アリス ボブ 嫌いです 偽物アリス 詐称
  • 12. 脅威に対する対策技術 脅威 求めるもの 対策技術 盗聴 機密性 暗号化。 受信者のみあるいは当事者間のみが復号できるように メッセージを暗号化すること。 否認 否認防止 送信者のみが持っている鍵で暗号化すること。 (受信者が同じ鍵を持っていると否認防止はできない) 改ざん 完全性 完全性の検証。 送信者および受信者が同じアルゴリズム(一方向ハッ シュ関数やメッセージ認証コード)で計算した結果がお なじであることを検証すること。 詐称 認証 メッセージ認証。 送信者のみあるいは当事者間のみが持っている鍵で暗号 化し、受信者により復号できること。
  • 13. 脅威のまとめ • 脅威のまとめ ▫ 盗聴 ▫ 否認 ▫ 改ざん ▫ 詐称 • 脅威への対策 ▫ 暗号技術の利用
  • 14.
  • 15. 平文 (plaintext) • 平文(暗号化されていない文章)は盗聴された ら内容がわかる。 イブ アリス ボブ 平文であるため、 内容がわかる。 盗聴 好きです 好きです 好きです (平文) (平文) (平文)
  • 16. 暗号文 (ciphertext) • 暗号文(暗号化された文章)は意味のない文字 列であるため、盗聴されても内容がわからない。 イブ アリス ボブ 暗号文であるため、 内容がわからない。 盗聴 好きです MIIB2DCCAU 好きです 暗号化 復号 (平文) (暗号文) (平文) 鍵 鍵
  • 17. 暗号の要素 • アルゴリズム ▫ 暗号化および復号を行う仕組み •鍵 ▫ 暗号化および復号に使用する情報 • 例)シーザー暗号 ▫ アルゴリズム:アルファベット順に文字をシフト する ▫ 鍵:3文字
  • 18. 現代の暗号のアルゴリズムと鍵 • 求められていること ▫ 広く公開されていること  アルゴリズムを秘匿にすることは意味がない。 たいてい、解読されたり、漏洩されたりする。 ▫ 数学的に強度があること  解読に時間がかかる。 ▫ ……
  • 21. 共通鍵暗号 アリス イブ ボブ 共通鍵を持ってい ないので、復号で きないため、内容 がわからない。 盗聴 好きです MIIB2DCCAU 好きです 暗号化 復号 (平文) (暗号文) (平文) 共通鍵 共通鍵 鍵の盗聴を防ぐために、信頼 問題点 できる方法で同じ鍵を予め渡 す必要がある。
  • 22. 共通鍵暗号の問題点 • 共通鍵暗号の問題点 ▫ 鍵配送問題  鍵の配送中に鍵そのものが盗聴される恐れがある ▫ 鍵管理問題  人数が増えたら、そのペア分の鍵を管理することになり、非常 に煩雑になる。 • 解決策 ▫ ボブが作った共通鍵をアリスに対面で直接渡すなどの信頼 できる方法を使う  しかし、人数が増えると破綻する  鍵管理問題は無くならない • 根本的な解決策 ▫ 公開鍵暗号を使う。 ▫ 共通鍵をさらに公開鍵暗号で暗号化する。
  • 23. 公開鍵暗号 • 一組の公開鍵とプライベート鍵を用いて、暗号 化と復号を互いに異なる鍵で行う方法 • 公開鍵は公開してもよく、プライベート鍵は本 人のみが持って秘密にしておく。 • 公開鍵は見られても問題ないため、鍵の配送中 の盗聴の問題は解決する • 主なアルゴリズム ▫ RSA
  • 24. 公開鍵暗号 アリス イブ ボブ ボブのプライベート 鍵を持っていないた め復号できない。 盗聴 好きです MIIB2DCCAU 好きです 暗号化 復号 (平文) (暗号文) (平文) プライベート鍵 鍵ペア 問題点 ボブの公開鍵 公開鍵 ボブの公開鍵が本物で あることを確認する必 要がある。
  • 25. 公開鍵暗号の問題点 • 公開鍵暗号の問題点 ▫ 公開鍵の証明問題  アリスが受け取ったボブの公開鍵が本物であるかわ からない • 対策 ▫ ボブがアリスに信頼できる方法で公開鍵を渡す。 ▫ アリスが入手した公開鍵が本物であるかを検証す る。  フィンガープリントの確認 ▫ 信頼できる第三者にデジタル署名してもらう  公開鍵証明書
  • 26. 公開鍵暗号の問題点 • 公開鍵暗号の問題点 ▫ 共通鍵暗号より計算コストが高い。 • 対策 ▫ 共通鍵暗号と併用し、鍵の配送や(後述する)デ ジタル署名などの一部の重要なときのみ公開鍵暗 号を用いる。
  • 27. セッション鍵 • 通信のセッション中に一定時間だけ用いる使い 捨ての共通鍵 • 疑似乱数生成器により生成する • 公開鍵暗号を使ってセッション鍵を暗号化して 配送することにより、共通鍵暗号の鍵配送問題 は解決できる
  • 28. 疑似乱数 • 乱数 ▫ 予測できない数 • 疑似乱数 ▫ コンピュータでは真の乱数を生成できない ▫ コンピュータで生成できるのは乱数に近い性質を 持つ疑似乱数 ▫ エントロピー(乱雑さ)を収集して用いることに より真の乱数に近づけることが行われている。  環境ノイズ(ディスクI/O、キーボード、マウスな ど)の利用
  • 29. 疑似乱数生成器 • 疑似乱数生成器 ▫ 疑似乱数を生成する機能  Linuxの場合  /dev/random ▫ エントロピーを収集するまでロックする  /dev/urandom ▫ エントロピープールを再利用しロックしない  他のOSでも同様な機能がある • 主な用途 ▫ セッション鍵の生成 ▫ 公開鍵暗号の鍵の生成
  • 30. 暗号のまとめ • 暗号を使うことにより、盗聴による情報の漏洩 を防ぐことができる • 暗号の要素 ▫ アルゴリズムと鍵 • 暗号の方式 ▫ 共通鍵暗号 ▫ 公開鍵暗号 • 鍵配送問題 • セッション鍵 • 疑似乱数生成器
  • 31.
  • 32. 一方向ハッシュ関数 • 任意の長さのメッセージを固定の長さのハッ シュ値に変換する関数 • 暗号学的ハッシュ関数やメッセージ ダイジェス トとも呼ばれる • メッセージが少しでも異なればハッシュ値も変 わるため、改ざんされたことが検出できる ▫ メッセージの完全性の検証 • アルゴリズム ▫ MD5、SHA-1、SHA-256、SHA-512
  • 33. 一方向ハッシュ関数の性質 • ハッシュ値から元のメッセージを求めることが 困難 • あるハッシュ値になる異なるメッセージを見つ けることが困難(弱衝突耐性) • 同じハッシュ値になる異なるメッセージを見つ けることが困難(強衝突耐性)
  • 34. 一方向ハッシュ関数の用途 • 改ざんの検出 • チェックサム • 例)ファイルの完全性の確認 ▫ 配布ソフトウェア(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
  • 35. 一方向ハッシュ関数の用途 • フィンガープリント ▫ メッセージの完全性を確認するために、ユーザーがハッ シュ値を確認しやすいように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 foo@example.jp 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]
  • 36. 一方向ハッシュ関数 アリス ボブ メッセージ メッセージ 一方向 一方向 ハッシュ関数 ハッシュ関数 ハッシュ値 比 改竄 較 検出 ハッシュ値 ハッシュ値 アリスがボブに信頼で 問題点 きる方法でハッシュ値 を伝える必要がある。
  • 37. 一方向ハッシュ関数の問題点 • 一方向ハッシュ関数の問題点 ▫ ハッシュ値そのものが改ざんされる可能性がある • 対策 ▫ メッセージを送るたびにアリスがボブに信頼でき る方法でハッシュ値を伝える ▫ 公開鍵暗号と組み合わせて利用する  →デジタル署名 • 注意 ▫ 「改ざんを検出する」技術であって「改ざんを防 ぐ」技術ではない。
  • 38. メッセージ認証コード • 共通鍵とメッセージを使ってメッセージの認証 のための値(MAC値)を算出する方法 • MAC(Message Authentication Code)と略す • できること ▫ 完全性の検証(改ざんの検出) ▫ メッセージの送信者の認証
  • 39. メッセージ認証コード • 送信側で計算したMAC値と受信側で計算した MAC値が同じであれば、同じ共通鍵と同じメッ セージであることが確認できる • 一方向ハッシュ関数の技術を用いたHMACがよ く使われている。 • 主なアルゴリズム ▫ HMAC-MD5, HMAC-SHA-1, HMAC-SHA256
  • 40. メッセージ認証コード通信を行う2者間 問題点 で事前に鍵を共有 アリス ボブ する必要がある メッセージ メッセージ 共通鍵 共通鍵 MAC MAC アルゴリズム アルゴリズム MAC値 改竄 比 検出 較 と MAC値 MAC値 認証
  • 41. メッセージ認証コード • メッセージ認証コードの問題点 ▫ 共通鍵を使うため、共通鍵暗号と同じ問題を抱え ている。 • 対策 ▫ ボブがアリスに信頼できる方法で公開鍵を渡す。 ▫ 公開鍵暗号と組み合わせて利用する
  • 42. デジタル署名 • 一方向ハッシュ関数と公開鍵暗号を利用した技 術で、メッセージのハッシュ値をプライベート 鍵で暗号化したもの • できること ▫ 改ざんの検出 ▫ 送信者の認証 ▫ 否認の防止 • 主なアルゴリズム ▫ RSA, DSA
  • 43. デジタル署名 アリス メッセージ メッセージ ボブ 一方向 一方向 ハッシュ関数 ハッシュ関数 ハッシュ値 ハッシュ値 改竄検出 比 認証 較 鍵ペア ハッシュ値 否認防止 アリスの 公開鍵 アリスの 公開鍵 アリスの 暗号化 復号 プライベート鍵 デジタル デジタル 署名 署名
  • 44. デジタル署名の問題点 • デジタル署名の問題点 ▫ 公開鍵を使うため、公開鍵暗号と同じ問題を抱え ている。 • 対策 ▫ 公開鍵証明書  公開鍵基盤(PKI) ▫ 信頼の輪(web of trust)  PGP, OpenPGP
  • 45. まとめ 完全性 認証 否認防止 一方向ハッシュ関数 ○ メッセージ認証コード ○ ○ デジタル署名 ○ ○ ○
  • 46.
  • 47. 公開鍵暗号の問題点 • 問題点 ▫ 公開鍵暗号やデジタル署名では通信相手の公開鍵 を入手する必要がある。 ▫ 入手した公開鍵が本物であるかどうかがわからな い。 • 解決策 ▫ 公開鍵証明書
  • 48. 公開鍵証明書 • 公開鍵証明書は、公開鍵にユーザーやサーバな どの識別情報を付加した上で信用できる第三者 (認証局や知人)がデジタル署名を行ったもの。 • 運転免許書に例えると ▫ 公開鍵証明書:運転免許証 ▫ 認証局:運転免許証を発行する公安委員会 • 公開鍵証明書は単に証明書と呼ばれることが多 い
  • 49. 公開鍵証明書 トレント(認証局) トレントの トレントの 公開鍵 プライベート鍵 ボブの アリスはトレントの証明 署名 CSR 書を適切な方法で事前に 入手する必要がある。 トレントの ボブの 証明書 証明書 CSR: 証明書署名要求 アリス ボブ トレントの トレントの ボブの 公開鍵 証明書 CSR ボブの 署名の CSRの サブジェクト 公開鍵 検証 生成 デジタル ボブの ボブの ボブの ボブの 署名 証明書 証明書 公開鍵 プライベート鍵
  • 50. 公開鍵証明書と公開鍵基盤 • 疑問 ▫ ボブの証明書を発行したトレント(認証局)自身 の証明書は誰が発行するのか? • 解決策 ▫ 公開鍵基盤(PKI, Public Key Infrastructure)
  • 51. 公開鍵基盤(PKI) 自己署名 ルート認証局 ルート証明書 署名 CSR プライ 中間証明書 署名 ベート鍵 公開鍵 中間認証局 中間証明書 CSR プライ ボブの証明書 署名 ベート鍵 公開鍵 ボブ ボブの証明書 CSR プライ ベート鍵 公開鍵
  • 52. 公開鍵基盤(PKI) ルート認証局 OSやソフトウェアに バンドルして配布 ルート証明書 アリス ルート証明書 公開鍵 中間認証局 署名の 検証 中間証明書 署名 証明書パス 中間証明書 の検証 公開鍵 ボブ 署名の 中間証明書 検証 署名 ボブの ボブの証明書 公開鍵 ボブの証明書 公開鍵 一緒に配布 ボブが配布
  • 53. まとめ • 公開鍵証明書により公開鍵の認証を行うことが できる。 • 公開鍵基盤(PKI)により、利用者の公開鍵を 認証することができる。