Symmetric-Key encryption (AES) fun sencrypt(bitstring, symkey): bitstring. reduc forall x: bitstring, k: symkey; sdecrypt(sencrypt(x, k), k) = x. Key

Similar documents
cpvp_PKM_ProVerif

cpvp_PKMv2_ProVerif

fun H(bitstring): bitstring. (* SHA1 *) fun P_hash(bitstring, bitstring): bitstring. (* P_SHA1 *) reduc forall secret: bitstring, label: bitstring, se

fun sign(bitstring, skey): bitstring. reduc forall m: bitstring, k: skey; getmess(sign(m, k)) = m. reduc forall m: bitstring, k: skey; checksign(sign(

reduc forall k: key, x: bitstring; HMAC_SHA1(k, x) = hmac(k, x). reduc forall k: key, r: nonce; f1(k, r) = hmac(k, nonce_to_bitstring(r)). reduc foral

type nonce. type host. consts const request_id: bitstring [data]. const response_id: bitstring [data]. const start_ttls: bitstring [data]. const succe

cpvp_Kerberos-preauth_ProVerif

cpvp_EAP-TTLS_ProVerif

暗号プロトコル評価結果 独立行政法人情報通信研究機構 1. プロトコル名 :PKMv2 2. 関連する標準 IEEE Std e 使用したツール

暗号プロトコル評価結果 独立行政法人情報通信研究機構 1. プロトコル名 :PKM 2. 関連する標準 IEEE Std e 使用したツール :S

PANA-Msg-Code; protocol pana-auth-aka(i, R) { role I { fresh rand, sqn: Nonce; fresh msgnum: Nonce; fresh PANA-msgnum, PAA-nonce: Nonce; var PaC-nonce

スライド 1

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

cpvp_Kerberos-preauth_Scyther

Microsoft PowerPoint - sakurada3.pptx

cpvp_IKE-PSK_Scyther

2

C02.pdf

無線 LAN セキュリティの基礎 2015 年 4 月 19 日セクタンラボ Copyright (C) 2015 SecTan Lab. All Rights Reserved.

Microsoft PowerPoint SCOPE-presen

<4D F736F F D F81798E518D6C8E9197BF33817A88C38D868B5A8F70834B D31292E646F63>

Microsoft PowerPoint ppt

情報セキュリティ 第 9 回 :2007 年 6 月 15 日 ( 金 )

2ACL DC NTMobile ID ACL(Access Control List) DC Direction Request DC ID Access Check Request DC ACL Access Check Access Check Access Check Response DC

2.SSL/TLS と暗号プロトコルの安全性 恒久的に噴出する脆弱性との戦い クライアント ClientKeyExchange Verify ServerKeyExchange Request Done Request サーバ X Master Secret CCS MAC 図 -1 図

IPSEC(Si-RG)

Microsoft PowerPoint - IPsec徹底入門.ppt

IPSEC(Si-RGX)

LEAP を使用して Cisco ワイヤレス クライアントを認証するための Funk RADIUS の設定

Wi-Fi Wi-Fi Wi-Fi Wi-Fi SAS SAS-2 Wi-Fi i

TFTP serverの実装

bitvisor_summit.pptx

暗号方式委員会報告(CRYPTRECシンポジウム2012)

Lightweight LanguageのIPv6対応PHP5編

PowerPoint プレゼンテーション

Dual Stack Virtual Network Dual Stack Network RS DC Real Network 一般端末 GN NTM 端末 C NTM 端末 B IPv4 Private Network IPv4 Global Network NTM 端末 A NTM 端末 B

Microsoft PowerPoint pptx

東大センターにおけるスーパーコンピューター利用入門

2. 機能 ( 標準サポートプロトコル ) NTT ドコモの Android スマートフォン / タブレットでは標準で対応している VPN プロトコルがあります 本章では 動作確認を実施している PPTP L2TP/IPSec IPSec Xauth について記載します PPTP(Point-to-

資料 5-2 Government 公的個人認証サービスのスマートフォンでの利活用の実現に向けた実証 について iphone に於ける利用者証明書ダウンロードの検証 2016 年 10 月 25 日日本アイ ビー エム株式会社 2016 IBM Corporation

2. 機能 ( 標準サポートプロトコル ) SECURITY for Biz 対応スマートフォンでは標準で対応している VPN プロトコルがあります 本章では NTT ドコモで動作確認を実施している PPTP L2TP/IPSec IPSec Xauth について記載します PPTP(Point-t

FIDO技術のさらなる広がり

AirStationPro初期設定

Juniper Networks Corporate PowerPoint Template

1. PKI (EDB/PKI) (Single Sign On; SSO) (PKI) ( ) Private PKI, Free Software ITRC 20th Meeting (Oct. 5, 2006) T. The University of Tokush

Maser - User Operation Manual

LAN LAN LAN LAN LAN LAN,, i

<4D F736F F D20838A B F955C8E8682A982E796DA8E9F914F5F A815B FD B A5F E646F63>

Win XP SP3 Japanese Ed. NCP IPSec client Hub L3 SW SRX100 Policy base VPN fe-0/0/0 vlan.0 Win 2003 SVR /

サーモモジュール_出力

untitled

dvi

Si-R/Si-R brin シリーズ設定例

日本オラクル株式会社

Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using con

Windows PowerShell 用スクリプト形式編 改版履歴 版数 日付 内容 担当 V /4/1 初版 NII V /2/26 動作環境の変更に伴う修正 NII V /8/21 タイムスタンプ利用手順の追加 NII 目次 1. コード署名用証明





<8B9E8B40925A904D D862E706466>




untitled



LSM-L3-24設定ガイド(初版)

ex04_2012.ppt

Microsoft PowerPoint pptx

ISE の BYOD に使用する Windows サーバ AD 2012 の SCEP RA 証明書を更新する


人間石川馨と品質管理


Contents 1. はじめに 3.GUIからのアクセス方法 4 3. 鍵ペアの生成 5 4. サーバ証明書署名要求 (CSR) の作成 9 5. サーバ証明書のインストール 1 6.ServerIronの設定 17

SecureWare/ 開発キット Ver5.0 セキュリティポリシ 2012 年 5 月 24 日 Version 1.96 日本電気株式会社

Anonymous IPsec with Plug and Play

 

形式手法入門VDM++チュートリアル.key

DNSSECの基礎概要

インターネットVPN_IPoE_IPv6_fqdn

第1回渋谷区基本構想等審議会 議事概要



 

保育の必要性の認定について

今後の予定 第 10 回 :6 月 22 日 暗号化ソフトウェア :SSL,SSH 第 11 回 :6 月 29 日 サーバセキュリティ 第 12 回 :7 月 6 日 理論 : 計算論, 暗号プロトコル 第 13 回 :7 月 13 日 企業 組織のセキュリティ :ISMS, 個人情報保護法 第

目次 1 概要 モジュール概要 暗号モジュールの仕様 暗号境界 物理的暗号境界 論理的暗号境界 動作モードとアルゴリズム ポートとインタフェース 暗号モジュール

スライド 1

antiabuse.gby

ASF-01

2 key. 3

橡Accessテキスト

rndc BIND

TSUBAME利用手引き



FREE

CodeGear Developer Camp

実務に役立つサーバー運用管理の基礎 CompTIA Server+ テキスト SK0-004 対応

Transcription:

暗号プロトコル評価結果 独立行政法人情報通信研究機構 1. プロトコル名 :PKM 2. 関連する標準 IEEE Std 802.16e-2005 http://standards.ieee.org/getieee802/download/802.16e-2005.pdf 3. 使用したツール :Proverif 4. 評価の概要 :Proverif による評価では 端末による基地局の認証において 中間者攻撃の可能性が指摘された また 端末が交換する鍵の秘匿性に関する攻撃の可能性が指摘された 5.ProVerif による評価 5.1. シーケンス記述 set ignoretypes = attacker. free c: channel. type host. type nonce. type pkey. type skey. type symkey. type mackey. RSA-OAEP (?) encryption fun pk(skey): pkey. fun encrypt(bitstring, pkey): bitstring. reduc forall x: bitstring, y: skey; decrypt(encrypt(x, pk(y)), y) = x.

Symmetric-Key encryption (AES) fun sencrypt(bitstring, symkey): bitstring. reduc forall x: bitstring, k: symkey; sdecrypt(sencrypt(x, k), k) = x. Key encryption (AES) fun kencrypt(symkey, symkey): bitstring. reduc forall x: symkey, k: symkey; kdecrypt(kencrypt(x, k), k) = x. RSA-SHA1 signature fun sign(bitstring, skey): bitstring. reduc forall m: bitstring, k: skey; getmess(sign(m, k)) = m. reduc forall m: bitstring, k: skey; checksign(sign(m, k), pk(k)) = m. CMAC/HMAC fun mac(bitstring, mackey): bitstring. reduc forall m: bitstring, k: mackey; getmacmess(mac(m, k)) = m. reduc forall m: bitstring, k: mackey; checkmac(mac(m, k), k) = m. Derivation of AK from prepak and AKID, MAC_KEY_D, MAC_KEY_U, KEK from AK fun d_mac_key_d(bitstring) : mackey. fun d_mac_key_u(bitstring) : mackey. fun d_kek(bitstring): symkey. Type converter fun pkey_to_bitstring(pkey): bitstring [data, typeconverter]. fun nonce_to_bitstring(nonce): bitstring [data, typeconverter]. Honest hosts free OP, CA, honestm, honestss, honestbs: host.

table table keys(host, pkey). Events event tek_issued(host, host, bitstring, symkey). event tek_issued2(host, host, bitstring, symkey). event tek_accepted(host, host, symkey). event ak_accepted(host, host, bitstring). event end(). for testing event tek_request_accepted(). event bs_accept_authentication(). Constants for describing queries free secretsstek, secretbstek: symkey [private]. free secretfortest: bitstring [private]. Queries query attacker(secretfortest). (1) query x: host, y: host, ak: bitstring, k: symkey; inj-event(tek_accepted(x, y, k)) ==> inj-event(tek_issued(x, y, ak, k)).

(2) query x: host, y: host, ak: bitstring, k: symkey; inj-event(tek_issued2(x, y, ak, k)) ==> inj-event(ak_accepted(x, y, ak)). (3) query attacker(secretsstek). (4) query attacker(secretbstek). Protocol let processss(skss: skey, SSCert: bitstring, MCert: bitstring, pkop: pkey) = in(c, (BS: host, Cap: bitstring, Cap2: bitstring, SecNegParam: bitstring, PKMConfSettings: bitstring, BasicCID: bitstring)); Auth Info out(c, MCert); Auth Request let auth_req_text = (SSCert, Cap, BasicCID) in out(c, sign(auth_req_text, skss)); Auth Reply in(c, auth_rep: bitstring); let (encrypted_ak: bitstring, KeyLifetime: bitstring, SeqNumber: bitstring, SAdesc: bitstring) = auth_rep in Deriving Keys let ak = decrypt(encrypted_ak, skss) in let mac_key_d = d_mac_key_d(ak) in let mac_key_u = d_mac_key_u(ak) in let kek = d_kek(ak) in

for security event ak_accepted(bs, honestss, ak); Key Request let SAID = SAdesc in let key_req_text = (SeqNumber, SAID) in out(c, mac(key_req_text, mac_key_u)); Key Response in(c, key_resp: bitstring); let (=SeqNumber, =SAID, encrypted_tek: bitstring) = checkmac(key_resp, mac_key_d) in let tek = kdecrypt(encrypted_tek, kek) in Testing Security if BS = honestbs then event tek_accepted(bs, honestss, tek); out(c, kencrypt(secretsstek, tek)); event end(). let processbs(skbs: skey, BSCert: bitstring, pkca: pkey) = in(c, (KeyLifetime: bitstring, SeqNumber: bitstring, SAdesc: bitstring, SecNegParam': bitstring)); Auth Info in(c, MCert: bitstring); It is important to check honestm here. let (=honestm, pkm: pkey) = checksign(mcert, pkca) in Auth Request in(c, auth_req: bitstring); let (SSCert: bitstring, BasicCID: bitstring) = getmess(auth_req) in let (SS: host, pkss: pkey) = checksign(sscert, pkm) in let auth_req_text = checksign(auth_req, pkss) in Auth Reply

new ak: bitstring; let auth_rep = (encrypt(ak, pkss), KeyLifetime, SeqNumber, SAdesc) in out(c, auth_rep); Deriving Keys let mac_key_d = d_mac_key_d(ak) in let mac_key_u = d_mac_key_u(ak) in let kek = d_kek(ak) in Key Request in(c, key_req: bitstring); let (=SeqNumber, SAID: bitstring) = checkmac(key_req, mac_key_u) in if SAID = SAdesc then!!!!!!!!!!! Key Response new tek: symkey; let key_resp_text = (SeqNumber, SAID, kencrypt(tek, kek)) in event tek_issued(honestbs, SS, ak, tek); out(c, mac(key_resp_text, mac_key_d)); Testing Security if SS = honestss then event tek_issued2(honestbs, SS, ak, tek); out(c, kencrypt(secretbstek, tek)); event end(). Key registration let processcert(cakey: skey) = in(c, (h: host, k: pkey)); if h <> honestm && h <> honestss && h <> honestbs then out(c, sign((h, k), CAkey)). process Operator

new skop: skey; let pkop = pk(skop) in out(c, pkop); insert keys(op, pkop); CA new skca: skey; let pkca = pk(skca) in out(c, pkca); insert keys(ca, pkca); Manufacturer new skm: skey; let pkm = pk(skm) in let MCert = sign((honestm, pkm), skca) in out(c, MCert); SS new skss: skey; let pkss = pk(skss) in let SSCert = sign((honestss, pkss), skm) in out(c, SSCert); BS new skbs: skey; let pkbs = pk(skbs) in let BSCert = sign((honestbs, pkbs), skop) in out(c, BSCert); Corrupted SS new skcss: skey; new CSS: host;

let pkcss = pk(skcss) in let CSSCert = sign((css, pkcss), skm) in out(c, (CSSCert, skcss)); Corrupted BS new CBS: host; new skcbs: skey; let pkcbs = pk(skbs) in let CBSCert = sign((cbs, pkcbs), skop) in out(c, (CBSCert, skcbs)); ( (!processss(skss, SSCert, MCert, pkop)) (!processbs(skbs, BSCert, pkca)) (!processcert(skop)) (!processcert(skca)) (!processcert(skm)) 0 ) PKMv1 の phase1/phase2 を 1 つの暗号プロトコルとし RSA 認証の場合を評価した 5.2. 攻撃者モデル シーケンスの表記に含まれる 5.3. セキュリティプロパティの記述 (1) query x: host, y: host, ak: bitstring, k: symkey; inj-event(tek_accepted(x, y, k)) ==> inj-event(tek_issued(x, y, ak, k)).

(2) query x: host, y: host, ak: bitstring, k: symkey; inj-event(tek_issued2(x, y, ak, k)) ==> inj-event(ak_accepted(x, y, ak)). (3) query attacker(secretsstek). (4) query attacker(secretbstek). (1) ロール SS( 端末 ) によるロール BS( 基地局 ) の認証 ( 鍵 tek の一致 ) (2) ロール BS によるロール SS の認証 ( 鍵 ak の一致 ) (3) ロール SS が交換した鍵の秘匿性 (4) ロール BS が交換した鍵の秘匿性 5.4. 検証結果 評価ツールの出力 RESULT not attacker(secretbstek[]) is true. RESULT not attacker(secretsstek[]) is false. RESULT inj-event(tek_issued2(x_8240,y_8241,ak_8242,k_8243)) ==> inj-event(ak_accepted(x_8240,y_8241,ak_8242)) is true. RESULT inj-event(tek_accepted(x_13543,y_13544,k_13546)) ==> inj-event(tek_issued(x_13543,y_13544,ak_13545,k_13546)) is false. RESULT (even event(tek_accepted(x_17716,y_17717,k_17719)) ==> event(tek_issued(x_17716,y_17717,ak_17718,k_17719)) is false.) (2) 及び (4) は成り立つが (1) 及び (3) は成り立たない 攻撃に関する解説

図 1. 攻撃シーケンス ロール SS が送信するメッセージはロール BS の公開鍵による暗号化を行わず ロール BS から受けとるメッセージにはロール BS の秘密鍵による署名も行われないため ロール SS は相手が攻撃者であっても鍵交換を完了してしまう このため 攻撃者は鍵のシード ak を自由に決めることができ 鍵のシード ak から生成される MAC 鍵を知ることができる これを利用して 攻撃者は自分が決めた鍵 tek に MAC をつけてロール SS に送信することで ロール BS のふりをしつつ ロール SS が使う鍵 tek を知ることができる 5.5 モデル化 モデル化プロセス 特になし 5.6. モデル化の妥当性 特になし 5.7. 評価ツールとの相性

暗号プロトコルの記述可能性 特に制限はなかった セキュリティプロパティの記述可能性 特に制限はなかった 5.8. 評価ツールの性能評価は瞬時に完了した 実行環境は以下のとおり Intel Core i7 L620 2.00HGz Windows7 上の VirtualBox 仮想マシン上の Ubuntu Linux 12.04.1 LTS メモリ 512MB ProVerif 1.86pl3 5.9. 備考 本文書は 総務省 暗号 認証技術等を用いた安全な通信環境推進事業に関する実証実験 の請負成果報告書 からの引用である