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

ProVerifによる暗号プロトコルの形式的検証

N/A
N/A
Protected

Academic year: 2021

シェア "ProVerifによる暗号プロトコルの形式的検証"

Copied!
20
0
0

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

全文

(1)

◎井上 博之

, 荒井 研一, 金子 敏信

東京理科大学大学院 電気工学専攻

(2)

序論

ProVerifの概要

検証方法

セキュアシンプルペアリングの概要

Passkey Entryモード

形式的な検証

検証結果

新たな

Numeric Comparisonモード

形式的な検証

検証結果

結論

(3)

BluetoothのSSPにおいて中間者攻撃に対する

安全性が謳われている

[1]

ProVerifによるNumeric Comparisonモードに

対する安全性評価

Passkey Entryモードに対する安全性評価

様々な研究

本研究

ProVerifによるPasskey Entryモードに対する安全性評価

ProVerifによる新たなNumeric Comparisonモード[2]に

対する安全性評価

(4)

ProVerifはBlanchetらが開発

形式モデル

(Dolve-Yaoモデル)での暗号プロトコルの

安全性検証ツール

Horn節の原理を用い、攻撃ルールを作成

ProVerifのコード

宣言部

暗号プロトコルに用いられる暗号プリミティブや検証対象の設定

プロセス部

プロトコル全体の流れを参加者

ごとに逐次的に記述

共通鍵暗号,公開鍵暗号 (秘匿,認証)

(5)

完全な暗号

(perfect encryption)を仮定

(例)共通鍵暗号方式

)

,

(

M

K

E

)

,

(

C

K

D

)

),

,

(

(

E

M

K

K

D

M

鍵 を知らなければ、平文 に関する情報は

まったく得られない

K

M

における の暗号化

K

M

における の復号

K

C

(6)

秘匿

(Standard Secrecy)

攻撃者が秘匿対象の情報を入手可能か否かを検証

強秘匿

(Strong Secrecy)

攻撃者が、秘匿対象の情報を暗号化した暗号文とその

暗号文とはなんら関係のない乱数との違いを識別可

能か否かを検証

(7)

N

M

N

M

攻撃者 MからNへ到着可能なパスが1つだけ存在 認証用情報を再送(再生攻撃)

•通信のプロセス中で情報が生成された時を

「事前

event」,確認した時を「事後event」

•事後eventが出現した際に、それに対応する事前

eventが出現しているか否かを検証

Non-Injective

経路が唯一なのか、複数あるかに

ついては関知しない

Injective

このとき、経路は唯一なのか

否かについても検証を行う

存在している場合

存在していない場合

なりすましが可能

認証してし まう

(8)

端末間で相互認証し、関連付けを行うこと

2007年に

bluetooth2.1+EDRが策定

セキュアシンプルペアリング(SSP)が追加

Numeric Comparison

Just Works

Out of Band

Passkey Entry

SSP ① 公 開 鍵 交 換 ② 認 証 ス テ ー ジ 1 ③ 認 証 ス テ ー ジ 2 ④ リ ン ク キ ー 計 算 ⑤ 認 証 ・ 暗 号 化 SSPのフェーズ ⑤Tzu-Changらにより[5]提案された新たなNumericComparison

(9)

DeviceA ①(SKa,PKa) DeviceB ①(SKb,PKb) ②A,IOcapA,PKa ③B,IOcapB,PKb ④DHKey=P192(SKa,PKb) ④DHKey=P192(SKb,PKa) 事前共有パスキ-ra=rb(20bit) Cbi=f1(PKb,PKa,Nbi,rbi) ⑧Cbi ⑨Nai ⑪Nbi Cai=f1(PKa,PKb,Nai,rai) フェーズ1 フェーズ2 ra=rb ⑤Naiの生成 ⑤Nbiの生成 ⑦Cai

20回繰り返す

v ra=rb ⑥Caiの生成 ⑥Cbiの生成 Cai’=f1(PKa,PKb,Nai,rbi) Cai=C’aiの時 v Cbi=C’biの時 Cbi’=f1(PKb,PKa,Nbi,rai) ⑩Cai’の生成(ハッシュ値) ⑫Cbi’の生成(ハッシュ値) A,B:BluetoothMac値 IOcapA,IOcapB:I/O情報

ECDHの秘密鍵・公開鍵のペアを生成

A(MAC値),IOcapA(I/O情報),Pka(公開鍵)を送信

③B(MAC値),IOcapB(I/O情報),Pkb(公開鍵)を送信

DH鍵の生成

⑤乱数

N

ai

,N

bi

の生成

⑥ハッシュ値

C

ai

,C

bi

の生成

ai

,r

bi

はパスキーの

1bitを表わしている

(

1 i 20

)

(10)

Eaの生成(ハッシュ値) c ⑭ Ea ⑯Eb LK=f2(DHKey,Na,Nb,”btlk”,A,B) ⑲Kc=E3(LK,EN_RAND,COF) フェーズ3 フェーズ4 フェーズ5 ⑱両デバイスでリンクキー(LK)を計算 Eb=E’bの時 Ea=E’aの時 ⑬Eaの生成(ハッシュ値) Ea=f3(DHKey,Na,Nb,ra,IOcapA,

A,B) Eb=f3(DHKey,Nb,Na,rb,IOcapB, B,A) ⑬Ebの生成(ハッシュ値) Ea’=f3(DHKey,Na,Nb,ra,IOcapA, A,B) ⑮Ea’の生成(ハッシュ値) Eb‘=f3(DHKey,Nb,Na,rb,IOcapB, B,A) ⑰Eb’の生成(ハッシュ値)

共有した

Kcが秘匿性

を満たしているか

⑬ハッシュ値

Ea,Ebの生成

Eaの送信

⑮ハッシュ値

Ea’の生成

Ea=Ea’の時次に進む,Ea

Ea’の時アボートする

Ebの送信

⑰ハッシュ値

Eb’の生成

Eb=Eb’の時次に進む,Eb

Eb’の時アボートする

(11)

event endAparam(G1). event beginAparam(G1). event endBparam(G1). event beginBparam(G1). event endAkey(G1,G1,G1). event beginAkey(G1,G1,G1). event endBkey(G1,G1,G1). event beginBkey(G1,G1,G1).

query x:G1 ; inj-event(endAparam(x)) ==> inj-event(beginAparam(x)). query x:G1 ; inj-event(endBparam(x)) ==> inj-event(beginBparam(x)). query x1:G1,x2:G1 ,x3:G1 ; inj-event(endAkey(x1,x2,x3)) ==> inj-event(beginAkey(x1,x2,x3,x4)). query x1:G1,x2:G1 ,x3:G1 ; inj-event(endBkey(x1,x2,x3)) ==> inj-event(beginBkey(x1,x2,x3)). free secretA,secretB:bitstring[private]. query attacker(secretA); attacker(secretB); secretA,secretBの秘匿性 参加者が誰であるかの認証 秘匿 認証 鍵を誰が作成したかと参加者が誰である かの認証 型宣言 Weak authenticcation strong authenticcation

(12)

離散対数問題(

DLP)

既知の

(g,g

a

)に対して、aを求めること

計算DH問題(CDH)

有限体上で与えられた入力組(g,g

a

,g

b

)に対してg

ab

を求める

こと

楕円曲線上の離散対数問題

(ECDLP)

既知の(P,aP)に対して、aを求めること

楕円曲線上の計算DH問題(ECDH

P)

既知の(

P,aP,bP)に対して、abPを求めること

1. fun P192(scalar,G1):G1.

2. equation forall a:scalar, b: scalar;

P192(a,P192(b,P)) =P192(b,P192(a,P)).

1. fun exp(G2,scalar):G2.

2. equation forall a:scalar, b:scalar;

exp(exp(g,a),b)=exp(exp(g,b),a)

g

ab

=g

ba

(13)

Property Result

A-to-B Non-Injective Weak Authentication False B-to-A non-Injective Weak Authentication False A-to-B Non-Injective Strong Authentication False B-to-A Non-Injective Strong Authentication False

Property Result SecretA False SecretB False

•秘匿の検証結果

•認証の検証結果

AB間で共有したKcについての秘匿性を調査

Kcは秘匿性を満たしていない

中間者攻撃

Weak Authentication

なりすましが可能

認証を満たしていない

Strong Authentication

(14)

DeviceA DeviceB ⑤B,IOcapB,PKb PIN,Cb ①事前にPINを共有 Cb=Cb’の時 ⑧Ca ②(SKa,PKa) ②(SKb,PKb) PIN ③A,IOcapA,PKa ④DHKey=P192(Skb,PKa) フェーズ1,2,3 Cbの生成(ハッシュ値) Cb=f1(DHKey,IOcapB, IOcapA,B,A) ⑥DHKey=P192(Ska,Pkb) Cb’の生成(ハッシュ値) Cb’=f1(DHKey,IOcapB, IOcapA,B,A) ⑦Caの生成(ハッシュ値) Ca=f1(DHKey,IOcapA, IOcapB,A,B)

DH鍵の生成,ハッシュ値Cbの生成

①事前に

PINを共有

ECDHの秘密鍵・公開鍵のペアを生成

(公開鍵は公開しない)

③A(MAC値),IOcapA(I/O情報),PKa

PIN を送信

B(MAC値),IOcapB(I/O情報),Pkb

PINを送信 排他的論理和

(15)

Ca=Ca’の時 ⑨Ca’の生成(ハッシュ値) Ca’=f1(DHKey,IOcapA, IOcapB,A,B) c ⑩LK=f2(DHKey,”btlk”,A,B) ⑪Kc=E3(LK,EN_RAND,COF) フェーズ4 フェーズ5 両デバイスでリンクキー(LK)を計算

共有した

Kcが秘匿性

を満たしているか

(16)

1. fun xor(G1,G1):G1.

2. equation forall x:G1, y: G1; xor(xor(x,y),y)=x.

3. equation forall x:G1, y: G1; xor(y,xor(x,x))=y.

4. equation forall x:G1; xor(x,xor(x,x))=x.

5. equation forall x:G1; xor(xor(x,x),x)=x.

ProVerifでの形式化

((

x

y

)

y

)

x

x

x

x

x

)

(

y

x

x

y

(

)

x

x

x

x

(

)

(17)

Property Result SecretA True SecretB True

•秘匿の検証結果

•認証の検証結果

AB間で共有したKcについての秘匿性を調査

①参加者が誰であるかの認証

②鍵を誰が作成したかと参加者が誰であるか

Property Result

A-to-B Injective Weak Authentication

False

B-to-A Injective Weak Authentication

False

A-to-B Non-Injective Weak Authentication

True

B-to-A non-Injective Weak Authentication

False

A-to-B Injective Strong Authentication

False

B-to-A Injective Strong Authentication

False

A-to-B Non-Injective Strong Authentication True

B-to-A non-Injective Strong Authentication False

共有した

再生攻撃が可能

Kcは秘匿

なりすましが可能

(18)

A

B

⑤B,IOcapB,PKb PIN,Cb ①事前にPINを共有 Cb=Cb’の時 ②(SKa,PKa) ②(SKb,PKb) PIN ③A,IOcapA,PKa ④DHKey=P192(Skb,PKa) Cb=f1(DHKey,IOcapB, IOcapA,B,A) ⑥DHKey=P192(Ska,Pkb) Cb’の生成(ハッシュ値) Cb’=f1(DHKey,IOcapB,IOcapA,B,A) Ca=Ca’の時 ⑨Ca’の生成(ハッシュ値) Ca’=f1(DHKey,IOcapA, IOcapB,A,B) B,IOcapB,mM

M

④DHKey=P192(Skb,PIN mM ) Cb=f1(DHKey,IOcapB, IOcapB,B,B) Cb ⑧Ca Cb PIN A,IOcapA,PKa PIN A,IOcapA,PKa PIN A,IOcapA,PKa PIN A,IOcapA,PKa Ca’=f1(DHKey,IOcapB, IOcapB,B,B)

再生攻撃が可能

なりすましが可能

再生攻撃

なりすまし

前のセッションで送られた情報とかわって いない

(19)

ProVerifによるSSPに対する形式的な安全性検証

PasskeyEntryモードに対して中間者攻撃

(20)

[1]SIMPLE PAIRING WHITEPAPER

[2] Tzu-Chang Yeh,Jian-Ren Peng, Sheng-Shih

Wang,and Jun-Ping Hsu”Securing Bluetooth

Communications”international Journal of Network

Security,July 2012

[3]野村大翼、松尾和人”Bluetoothのセキュアシンプルペアリン

グに対する中間者攻撃

”情報処理学会論文誌(Sep.2012)

[4] Bruno Blanchet,and Ben “Smyth ProVerif 1.86pl4:

Automatic Cryptographic Protocol Verifier,User Manual

and Tutorial

[5]Richard Chang andVitaly Shmatikov”Formal Analysis

参照

関連したドキュメント

3.5 今回工認モデルの妥当性検証 今回工認モデルの妥当性検証として,過去の地震観測記録でベンチマーキングした別の

地震による自動停止等 福島第一原発の原子炉においては、地震発生時点で、1 号機から 3 号機まで は稼働中であり、4 号機から

これらの実証試験等の結果を踏まえて改良を重ね、安全性評価の結果も考慮し、図 4.13 に示すプロ トタイプ タイプ B

FSIS が実施する HACCP の検証には、基本的検証と HACCP 運用に関する検証から構 成されている。基本的検証では、危害分析などの

すべての Web ページで HTTPS でのアクセスを提供することが必要である。サーバー証 明書を使った HTTPS

検証の実施(第 3 章).. 東京都環境局

(近隣の建物等の扱い) (算定ガイドライン

平成 21 年東京都告示第 1234 号別記第8号様式 検証結果報告書 A号様式 検証結果の詳細報告書(モニタリング計画).. B号様式