担当:横山
目次
- 暗号学者の道具箱
- 暗号技術のフレームワーク化
- 暗号技術は圧縮技術
- ビットコインの例
- 完全な暗号技術を夢見て
暗号学者の道具箱
いくつもの暗号技術が今現在のインターネットの安全性を支えている。
このうち特に重要なのが6つの技術
- メッセージ認証コード
- 一方向ハッシュ関数
- 対象暗号
- デジタル署名
- 公開鍵暗号
- 疑似乱数生成器
各技術の相関図
メッセージ認証コード
Message Authentication Code (略称 MAC)
- メッセージが改ざんされていないことを保証
- メッセージが期待された通信先から来たことを保証
送信者と受信者が共有鍵からMAC値を作成することで、オリジナルメッセージが、鍵を共有している送信者から受信したものであることを確認する。
一方向ハッシュ関数
データの正真性を確保する。
- オリジナルデータを一方向ハッシュ関数にかけると固定長のハッシュ値が生成される。(高速化)
- オリジナルデータが違えばそこから生成されるハッシュ値も異なる
- ハッシュ値からオリジナルデータは算出不可 => 暗号化ではなく、あくまで正真性の確保
- 衝突耐性
- 弱衝突耐性:あるハッシュ値を持つ別のデータを探すのが困難
- 強衝突耐性:ハッシュ値が一致するような異なる2つのデータを探すのが困難
対称暗号
別称:共有鍵暗号、秘密鍵暗号
最初に鍵ペアを作成。(認証局登録・で正当性を証明)
公開鍵暗号方式の通信の流れ
- 送信者は受信者が公開している公開鍵でデータを暗号化して送信
- 受信者は受け取ったデータを秘密鍵で復号化(秘密鍵は受信者が所持)
デジタル署名 (digital signature)
- 送信者はオリジナルデータを秘密鍵で暗号化したものとオリジナルデータをまとめて送信
- 受信者は受信した署名を送信者の公開鍵で復号化し、受信したメッセージと比較
→比較して一致すれば、そのデータが想定する送信者からもらったデータだと判断できる。
※メッセージに一方向ハッシュ関数をかませたものを暗号化するケースもある。
公開鍵暗号
暗号化の鍵と復号化の鍵を別々に管理する。
1. 受信者は公開鍵・秘密鍵を用意しておく
1. 送信者は受信者から公開鍵をもらう
1. 送信者は公開鍵でデータを暗号化して送信
1. 受信者は受信したデータを秘密鍵で復号化
(3)で送信するデータが盗聴されても第三者は復号化用の秘密鍵を持っていないので解読されずに済む。
乱数
鍵・鍵ペア作成等の際に乱数を活用する。
乱数:無作為性・予測不可能性・再現不可能性が必要 → 乱数を生成するソフト「疑似乱数生成器」
※マシンが生成するものは真の意味では乱数ではないので「疑似」が付く。
種を疑似乱数生成器に渡して疑似乱数列を出力する
暗号技術のフレームワーク化
ここまでに紹介したいくつかの技術は役割ごとにブロックになっており、差し替えができる
→ある部分のアルゴリズムがハッカーに突破された場合その1か所のアルゴリズムさえ改めれば、その他の仕組みは変えずに運用継続できる。
暗号技術は圧縮技術
暗号化技術は見方を変えると「圧縮技術」と言える。
=> 長い平文の機密性を保つ・検証するのはコストが高い
技術 | 目的 |
---|---|
鍵 | 機密性 |
ハッシュ値 | 正真性 |
認証子(MAC値やデジタル署名) | 認証 |
乱数 | 予測不可能性 |
ビットコイン
ビットコイン(Bitcoin)という仮想通貨・決済システムを例に暗号化技術が具体的にどのように活用されているかを紹介
中本哲史(なかもとさとし)という人物が投稿した論文をもとに2009年から運用開始。(日本は禁止)
おおまかな仕組み
- ユーザーはウォレットというアプリを介してビットコインに対して通信を行う。
- ビットコイン本体は取引が誰と誰の間で行われているのかを保存する
- ユーザーにはトランザクションごとにアドレスが割り振られる(アドレスはプライバシー確保のために毎回変わる)
単一トランザクションのフロー
ブロックチェーン
ビットコイン上で行われた全トランザクションを記録しておく公開取引簿
ヘッダ
値H?は前回のブロックのヘッダから生成したハッシュ値
T?は自分のブロックのトランザクション群のデータから生成したハッシュ値
ナンス(使い捨てのランダムな値)やタイムスタンプ等も含まれる
ブロックチェーンの分岐
全世界のユーザーがビットコインを使うならばブロックの追加リクエストは
24時間常に同時多発的に存在する。→ P2Pネットワークによる承認
全ての分岐は一時的に保存されるが、一番長く伸びた分岐を正として承認する
採掘 (mining)
前頁までの説明にある「ブロック」の追加は世界中の miner (採掘者)達の手によって行われている。
→ ブロック追加が成功すると報酬(block reward / 2015年時点で75万円)と、含まれるトランザクションの手数料をもらえる。
ブロックチェーンは改ざんされない?
厳密に言えば改ざんされるが、改ざんされたであろう分岐は承認されない仕組み
前頁の例で、たとえばブロック1のトランザクション1-1の金額を書き換える
→ ブロック2のヘッダの内容が変わる
→ ブロック3も変わる・・・
という具合で後ろのブロックを接続していくことが困難になる
→正しい値を積んで伸ばしているノードよりも長い分岐を作れない
→承認されない(承認システムはノードの長さにで正否を判断するため)
単一トランザクションのフロー
完全な暗号技術を夢見て
量子暗号 ( Quantum cryptography)
1980年代にベネットとブラサールによって考案された量子鍵配送を示す。
「暗号」という名称だが、厳密には暗号を直接構成するのではなく、盗聴が不可能な通信を構成する技術。
量子の以下の2つの特性を利用する
1. 光子の変更方向を正確に測定することが原理t系に不可能
1. 測定することで光子の状態が変化する
補足 そもそも量子って何?
原子より大きい世界では、「物質」と「状態」をはっきりと区別できます。
( 「海水」という物質に対する「波」)
しかし原子より小さな世界「電子」には事情が異なる。
電子はエネルギーを持った波動だが、対応する物質がない。
→波動性と粒子性を併せ持っているものを量子と呼ぶ。(電子・光子など
左の図の電子が陽子の中心点から等距離を超高速でグルグル回ると右の図のように見える
→左図のように電子を粒ととらえて位置を決めてしまうと、電子がどのように動いているのかを特定できない
右図のように電子がどのように動いているのかの軌跡を基準に考えると、電子がどこに居るのかを特定できない
ハイゼンベルグの不確定性原理「粒子の位置と運動量を同時に確定することはできない」
量子論を通信技術に応用する
不確定性原理(位置と運動量は同時に確定できない)と、「量子は観測することにより発生する相互作用で状態を変える」という観測不能性を応用して、実際には偏光・スピン・位相等の状態を信号として送り込む。
量子コンピュータ
量子が同時に複数の状態を持つことができる特性を利用した超高速のマシン
2011年5月11日、D-Wave Systemsは「世界初の商用量子コンピュータ」を謳ったD-Wave Oneを発表
→ ブルートフォースアタックに要する時間を大幅に短縮できる!
既存の暗号技術が突破される?
→ 前ページまでで紹介していた量子暗号は、特性上、盗聴自体を検知できるので量子コンピュータを使った不正行為にも耐えられる。
→ 耐量子暗号・ポスト量子暗号と呼ばれる
暗号技術が完全になっても人間は不完全
理論が完全でも現実は不完全
たとえば一般的な公開鍵の認証
認証局の公開鍵に対して「これを信用する」というユーザーの判断が発生する。
防御は完全ではければならないが攻撃は一点を破ればよい
まとめ
暗号化技術が日進月歩で更新されているのと同じように暗号を破る技術も更新されている。
実装者として自分が開発に関わる暗号化・認証のフロー・仕組みに対して興味を持ちセキュリティに対する意識を高く持とう。
参考書籍
結城浩(2015)『暗号技術入門 第3版 秘密の国のアリス』SB Creative 446pp.
ISBN978-4-7973-8222-8
第15章 暗号技術と現実社会(p390-p411)