Q q 情報セキュリティ 第12回:2006年7月7日(金) q q.

Slides:



Advertisements
Similar presentations
情報セキュリティ 第3回 現代暗号の基礎数理. 脅威と暗号技術 セキュリティに対する脅威 脅かされる特性 暗号技術 機密性 正真性 認証 否認不可能性 盗聴 (秘密が漏れる) 改竄 (情報が書き換えられる) なりすまし (正しい送信者のふりをする) 否認 (後から私じゃないと言う) 共通鍵暗号 公開鍵暗号.
Advertisements

効率的に計算可能な 加法的誤りの訂正可能性 安永 憲司 九州先端科学技術研究所 SITA 2012 @ 別府湾ロイヤルホテル
駒澤大学 経営学部 情報セキュリティ B 公開鍵暗号による 認証つきの秘匿通信 ―― 鍵に注目して ――
情報工学科 06A2055 平塚 翔太 Hiratsuka Shota
データ構造と アルゴリズム 第十二回 知能情報学部 知能情報学科 新田直也.
黒澤 馨 (茨城大学) 情報セキュリティ特論(4) 黒澤 馨 (茨城大学) 2017/3/4 confidential.
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
Q q 情報セキュリティ 第13回:2006年7月14日(金) q q.
Q q 情報セキュリティ 第6回:2005年5月20日(金) q q.
データ構造と アルゴリズム 理工学部 情報システム工学科 新田直也.
5.チューリングマシンと計算.
5.チューリングマシンと計算.
黒澤 馨 (茨城大学) 情報セキュリティ特論(6) 黒澤 馨 (茨城大学) 2017/3/13 confidential.
計算の理論 II NP完全 月曜4校時 大月美佳.
「まめだくん Ver.1.0」 特徴と利用方法.
データ構造と アルゴリズム 第二回 知能情報学部 新田直也.
共通鍵と公開鍵 暗号のしくみ 情報、数学ハイブリッド版.
9.NP完全問題とNP困難問題.
データ構造と アルゴリズム 知能情報学部 新田直也.
数 学 の か た ち 第3講 暗号を作ろう 早苗 雅史 数学とソフトウエア
黒澤 馨 (茨城大学) 情報セキュリティ特論(7) 黒澤 馨 (茨城大学)
7.時間限定チューリングマシンと   クラスP.
暗号技術 ~公開鍵暗号方式の仕組み~ (3週目)
第10回 情報セキュリティ 伊藤 高廣 計算機リテラシーM 第10回 情報セキュリティ 伊藤 高廣
黒澤 馨 (茨城大学) 情報セキュリティ特論(5) 黒澤 馨 (茨城大学)
Q q 情報セキュリティ 第3回:2005年4月28日(金) q q.
Q q 情報セキュリティ 第3回:2005年4月22日(金) q q.
数学のかたち 暗号を作ろう Masashi Sanae.
Q q 情報セキュリティ 第5回:2005年5月13日(金) q q.
情報セキュリティ  第4回 メッセージ認証コード.
第二章 インターネットで やり取りする情報を守る
情報セキュリティ  第11回 デジタル署名.
Linux リテラシ 2006 第5回 SSH と SCP CIS RAT.
情報セキュリティ  第8回 RSA暗号.
第3回 アルゴリズムと計算量 2019/2/24.
2章 暗号技術 FM15002 友池 絲子.
Q q 情報セキュリティ 第11回:2004年6月18日(金) q q.
5.RSA暗号 素因数分解の困難性を利用した暗号.
25. Randomized Algorithms
東北大学大学院情報科学研究科 教授 西関 隆夫
Q q 情報セキュリティ 第12回:2007年7月6日(金) q q.
計算の理論 II 言語とクラス 月曜4校時 大月美佳.
Q q 情報セキュリティ 第8回:2005年6月3日(金) q q.
Q q 情報セキュリティ 第7回:2006年6月2日(金) q q.
暗号技術 ~暗号技術の基本原理~ (1週目) 情報工学科  04A1004 石川 真悟.
Q q 情報セキュリティ 第7回:2007年6月1日(金) q q.
Q q 情報セキュリティ 第6回:2007年5月25日(金) q q.
Q q 情報セキュリティ 第4回:2005年5月12日(金) q q.
プログラミング 4 探索と計算量.
コミュニケーションと ネットワークを探索する
Q q 情報セキュリティ 第9回:2006年6月16日(金) q q.
生物情報ソフトウェア特論 (2)たたみ込みとハッシュに 基づくマッチング
「情報セキュリティ論」 2-4 公開鍵暗号の原理とRSA暗号
Q q 情報セキュリティ 第9回:2007年6月15日(金) q q.
代数体上で定義された楕円曲線の 素因数分解への応用
補講:アルゴリズムと漸近的評価.
Diffie-Hellman 鍵共有 ElGamal 暗号 楕円曲線暗号,量子コンピュータ
5.チューリングマシンと計算.
人工知能特論II 第8回 二宮 崇.
Q q 情報セキュリティ 第5回:2006年5月19日(金) q q.
Q q 情報セキュリティ 第12回:2004年6月25日(金) の補足 q q.
ネット時代のセキュリティ3(暗号化) 2SK 情報機器工学.
黒澤 馨 (茨城大学) 情報セキュリティ特論(8) 黒澤 馨 (茨城大学)
Q q 情報セキュリティ 第6回:2005年5月26日(金) q q.
Q q 情報セキュリティ 第8回:2004年5月28日(金) の補足 q q.
暗号技術・セキュリティ 情報工学科  04A1004 石川 真悟.
参考:大きい要素の処理.
情報生命科学特別講義III (3)たたみ込みとハッシュに 基づくマッチング
Q q 情報セキュリティ 第7回:2005年5月27日(金) q q.
CSS符号を用いた量子鍵配送の安全性についての解析
Presentation transcript:

q q 情報セキュリティ 第12回:2006年7月7日(金) q q

本日学ぶこと 暗号の基礎 計算理論 問題とは 計算モデル オーダ 多項式時間 プロトコル プロトコルの諸概念 鍵配布プロトコル(およびその攻撃) RSAを用いた認証プロトコル(およびその攻撃) ゼロ知識対話証明

本日学ぶ内容 現代暗号の安全性を支えているのは「P≠NP」 基礎となる暗号技術が安全であっても,それをもとにした 暗号プロトコルが安全であるとは限らない

計算理論 ハードウェア・ソフトウェアの進歩や,アルゴリズムの発明により,それまで解けなかった問題が解けるようになる? 「問題を解く」とは何をすることか見直す必要がある. 計算理論に関連するその他の問題意識 乱数とは? P=NP問題って? なぜ x=1,2,... と解の候補を試すのが「効率が悪い」のか?

問題と個別問題 素因数分解の個別問題:35を素因数分解せよ 素因数分解問題:正整数nが与えられたときに,その素因数の一つを求めよ 桁数が大きくても,事前に答えを知っていれば,その答えを書き写すだけで「解ける」 素因数分解問題:正整数nが与えられたときに,その素因数の一つを求めよ 計算理論での「問題」は,無限個の「個別問題」を含む. 点…個別問題 領域…問題

問題を解くとは 個別問題が解ける:あるアルゴリズムを適用(実行)すると,有限時間で停止し,正しい解を出す 問題が解ける(決定可能):アルゴリズムが存在して,問題に属するすべての個別問題が解ける ○ ∃アルゴリズム [∀個別問題∈問題 [解ける(アルゴリズム,個別問題)]] × ∀個別問題∈問題 [∃アルゴリズム [解ける(アルゴリズム,個別問題)]] アルゴリズム

計算モデル…問題を解く「計算機」の抽象化 1 1 1 テューリング機械(Turing Machine) 1本の記録用テープを持つ…メモリに相当 一つの状態を保存できる…レジスタに相当 テープのある位置を参照している…ポインタに相当 1ステップの計算により,ある時点から,別の時点に遷移する. 状態の遷移の仕方はプログラム, テープの初期状態は入力に相当 「終了状態」と呼ばれる特別な状態に到達すれば,停止する. 現在のコンピュータとどう違う? コンピュータで可能なあらゆる処理をコード化可能 無限サイズのメモリを持っている

計算モデルの種類 決定性(Deterministic)テューリング機械 非決定性(Non-Deterministic)テューリング機械 各時点に対して,次の時点はちょうど1個 非決定性(Non-Deterministic)テューリング機械 次の時点の候補が複数あってもよく,その中で都合のいいものを選ぶ 確率(Probabilistic)テューリング機械 次の時点の候補が複数あってもよく,確率に基づいてどれかを選ぶ 性能は? 「解く」ということなら,どれも同じ 「効率よく解く」となると,違いが あると信じられている …

計算量とオーダ記法 実行時間(時間計算量)を決める要素 c・g(n) 実行時間(時間計算量)を決める要素 アルゴリズム…重要 入力データ…致し方ない 実行環境…重要ではない サイズがnの入力データで実行して f(n) の時間がかかるとき,∃g(x),c,n0 [∀n>n0 [f(n)<c・g(n)]] ならば, 時間計算量は O(g(n)) (g(n)のオーダ)という. 例 f(n)=5n3-2n2+18 ⇒ O(n3) f(n)=2n+100n200 ⇒ O(2n) f(n)=10000n ⇒ O(n) f(n)=137 ⇒ O(1) f(n) n n0 g(n)には簡潔で タイトな関数を選ぶ

オーダで効率を比較 ソートアルゴリズムのオーダは… 2要素の 比較回数 オーダの大小関係 「2要素の比較」をしない 入力サイズは,ソート対象の要素数 バブルソート:平均時で O(n2) 選択ソート:平均時で O(n2) クイックソート:平均時で O(n log n),最悪時で O(n2) 基数ソート:データが入力サイズに依存しなければ,O(n) オーダの大小関係 O(1) < O(log n) < O(n) < O(n log n) < O(n2) < O(n3) < … < O(2n) < O(n!) 2要素の 比較回数 「2要素の比較」をしない

多項式時間 処理時間が,適当な定数 k を用いて O(nk) となるアルゴリズムを,多項式時間(Polynomial-Time)アルゴリズムという. 総当り法で離散対数問題を解くのは,多項式時間アルゴリズムではない. b=1,2,... と解の候補を試すと,解が出るまでのべき剰余計算回数の期待値は,おおよそ p/2.すなわち p に比例する. 離散対数問題の入力サイズは,p のビット長 |p|≒log2p によって決まる. よって,時間計算量は O(p) = O(2|p|) ab mod p = r から b を求める

PとNP P:決定性テューリング機械を用いて多項式時間で計算できる問題の集合 P=NP問題:P=NPかP≠NP(PがNPに真に含まれる)か 多くの計算機科学者はP≠NPであると信じているが,まだその証明はなされていない. 素因数分解や離散対数問題などはNPに属する. もしP=NPならこれらはPに属することになり,暗号理論の常識が崩れてしまう. NP完全問題:NPに属するどの問題も,多項式時間の変換により帰着できるような問題 NP完全問題の一つでもPに属すれば,P=NPと言える

解けない問題 テューリング機械で解けない問題(決定不能) 非決定性では効率よく解けるが,決定性では効率よく解けない(と思われている)問題 例:停止性問題…テューリング機械のプログラムコードと入力が与えられたとき,そのテューリング機械がその入力で計算をしたら停止するか? 非決定性では効率よく解けるが,決定性では効率よく解けない(と思われている)問題 素因数分解,離散対数など

問題の分類 全ての問題のクラス 決定可能な問題(時間さえかければ解ける)のクラス NP CoNP P NP完全 点…問題, 領域…問題のクラス

計算理論のまとめ 「問題」を見つけたら 無限個の個別問題が分かるよう,定式化できるか? そもそも解ける(アルゴリズムを考えて,任意の個別問題がそれで解ける)か? 解けないとき,何らかの制限により,解けるようになるか? 解けるとき,推測なしで(決定性で)効率よく解けるか? 解けないとき,NP完全か?あるいは,何らかの制限により,効率よく解けるようになるか? どれくらいの効率か,オーダで表現できないか? 推測(乱数生成)を使って解く場合,成功確率は?試行回数はどれくらいあればいい?

プロトコルとは 2者以上の参加者が関係し,ある課題を達成するための 一連の手順のこと. 一連の手順(シーケンス)…前のステップが終わっていないのに次のステップを始めてはならない. 2者以上の参加者が関係…「ケーキを焼く」はプロトコルではないが,「だれかに食べてもらう」まで含めればプロトコルになる. ある課題を達成…これがなければ時間の無駄 『暗号技術大全』 (Bruce Schneier著,山形浩生監訳)p.23より

プロトコルと関連する話題 アルゴリズムも,複数エンティティで実行するなら「プロトコル」と言える ⇒分散コンピューティング 暗号化した通信に限らず,暗号技術(素因数分解問題や 離散対数問題の困難性なども)を用いた通信方法は 「暗号プロトコル」という ハッシュ値の照合や,ディジタル署名も,暗号プロトコルになり得る.

プロトコルの設計・実行 適切に設計されたプロトコルは,デッドロックなどの通信上の障害を起こさない. 双方が相手の受信待ち状態になってはいけない! 安全に設計された暗号プロトコルは,悪意のある送信を何らかの方法で検出する. 適切な情報を持たない者を誤って認証してはいけない!

暗号プロトコルの具体例 鍵配布センターを利用したセッション鍵共有 RSAの署名を用いた認証プロトコル Feige-Fiat-Shamirの認証プロトコル

対称暗号をどう使う?(復習) これからの議論の仮定:使用する対称暗号は安全である 共通鍵暗号は,暗号化の鍵=復号の鍵 鍵はいくつ必要? n人ならそれぞれn-1個, 全体でn(n-1)/2個

鍵配布センター 鍵配布センターを設置し,各利用者は,ここと 鍵を共有する. 鍵配布センターは,不正や鍵の漏洩などをしないものとする. 鍵の数は,n人ならそれぞれ1個,全体でn個 鍵配布センターは,不正や鍵の漏洩などをしないものとする. 信頼される第三者(Trusted Third Party)と呼ばれる. 利用者の中には,他人の秘密情報を知りたい「悪者」がいるかもしれない. 利用者間の通信には,その場限りの鍵(セッション鍵)を生成して使ってもらう. セッション鍵は,乱数を用いて生成し,各利用者の鍵や,これまで生成したセッション鍵に依存しないものにする. でも,どうすればセッション鍵を 当事者間(のみ)で共有できる?

準備(1):実行環境 k(a) k(b) k(m) 鍵配布センター Trent Bob Alice Mallory 悪者

準備(2):暗号化と復号の記法 鍵 y 平文 x 暗号文 e(y,x) 暗号化 鍵 y 暗号文 e(y,x) 平文 x 復号

セッション鍵の配布案(教科書pp.109-110, p.274) Trent Alice Bob k(a), k(b) はKEK r はCEK (i) a, b (ii) e(k(a),r) (iii) e(k(b),r) Alice Bob (iv) e(r,c) r:セッション鍵(実行のたびに値が変わる) c:AliceがBobに送りたい内容

配布案は安全か? 目標:Malloryが,AliceになりすましてBobと通信できるための情報(セッション鍵 r)を獲得すること Alice

Man-in-the-middle攻撃(復習) カレーライス ください ハヤシライス お願いします (悪意ある) ウエイター 客 料理人 カレーライス どうぞ ハヤシライス できたよ Malloryがこの方法で盗聴とメッセージの改竄が行えるなら,目標を達成できてしまう.

配布案に対するMan-in-the-middle攻撃 Trent (iii) e(k(m),r1) (iv) e(k(a),r1) (ii) m, a (vi) m, b (vii) e(k(m),r2) (viii) e(k(b),r2) M M (i) a, b (ix) e(k(b),r2) (v) e(k(a),r1) Alice Bob M (x) e(r1,c) (xi) e(r2,c) セッション鍵r1は,AliceとMalloryが共有する. セッション鍵r2は,BobとMalloryが共有する.

RSAの署名を用いた認証プロトコル 証明者 認証者 r Sign(Pri, r) 証明者の公開鍵 Pri 証明者 認証者 r を ランダム に選ぶ r ディジタル署名を 作る 署名文を検証する Sign(Pri, r) 署名文を作ることができるのは,Priを持つ証明者だけなので,一見安全に見える.

RSAの署名を用いた認証プロトコル(攻撃) 証明者宛ての暗号文(過去に盗聴) 証明者の公開鍵 Pri 証明者 攻撃者 認証者 r を ランダム に選ぶ r E(Pub, M) ディジタル署名を 作った はずが… 暗号文に差し替える M 平文を 獲得! RSAは復号と署名の操作が同じなので,上図のような Man-in-the-middle攻撃で,「署名をしたつもりが復号をしてしまった」ということが起こり得る. 教科書pp.232-233も参照

Feige-Fiat-Shamirの認証プロトコル 「FFS方式」「Fiat-Shamir方式」などとも呼ばれる 秘密の情報を持っていれば,プロトコルの実行により間違いなく認証者はそれを確認できる. 秘密の情報は認証者にも知られない…ゼロ知識対話証明(Zero-Knowledge Interactive Proof,ZKIP) 秘密の情報を持っていない者が,なりすましてプロトコルを実行しても,成功する確率はせいぜい1/2 繰り返し実行すると,成功率は指数的に小さくなる. 処理速度はRSAよりも非常に速い. Prover (証明者) Verifier (認証者) ユーザ情報を入力 OK/NG

FFSプロトコルの前提 事前に生成しておく情報 計算の困難さ 素数 p,q は非公開とし,n←pq を公開 証明者は整数 s (1≦s<n)を秘密情報として持つ 整数 v ← s2 mod n も公開する 計算の困難さ 素因数分解は困難 大きな整数 m と整数 a (1≦a<m)が与えられたときに, b2 mod m = a を満たす b (mを法とするaの平方根)を求めるのは m が素数ならば容易(効率のよいアルゴリズムが存在する) m が合成数ならば容易ではない

FFSプロトコル(図) 証明者 認証者 x ← r2 mod n e∈{0,1} y ← r・se mod n n, v(=s2) n, s ランダム に選ぶ r を ランダム に選ぶ e∈{0,1} y を 計算する y ← r・se mod n y2 = x・ve ?

FFSプロトコル(記述) Step 1: 証明者は乱数 r を生成し,x ← r2 mod nを計算して,x を認証者に送る. Step 2: 認証者は e∈{0,1} をランダムに選び,証明者に送る. Step 3: 証明者は y ← r・se mod n を計算して認証者に送る. e=0 ⇒ y ← r mod n e=1 ⇒ y ← rs mod n Step 4: 認証者は y2 mod n = x・ve mod n が成り立つか 確かめ,成り立たなければ認証しない. e=0 ⇒ y2 mod n = r2 mod n ? e=1 ⇒ y2 mod n = r2s2 mod n = (r2 mod n)(s2 mod n) mod n 成り立てば,認証者が納得いくまでStep1~4を行う. ?