現代暗号 VOLUME2 t-matsu 暗号アルゴリズムの 高速化 素数判定 暗号の世界では素数が重要である 素数の探し方として以下がある 試し割り エラトステネスのふるい フェルマーテスト 𝑎𝑛−1 ≠ 1 𝑚𝑜𝑑 𝑛 の場合𝑛は合成数と判定 AKS素数判定法 (𝑋 + 𝑎)𝑛 ≠ 𝑋 𝑛 + 𝑎 𝑚𝑜𝑑 𝑛 の場合𝑛は合成数と判定 ユークリッドの互除法 2つの整数𝑎0 , 𝑎1 の最大公約数gcd(𝑎0 , 𝑎1 ) を求めるアルゴリズム 𝑎0 = 21, 𝑎1 = 12とする 𝑎0 > 𝑎1 なので,𝑎0 %𝑎1 = 21%12 = 9 (𝑎0 = 9, 𝑎1 = 12) 𝑎0 < 𝑎1 なので,𝑎1 %𝑎0 = 12%9 = 3 (𝑎0 = 9, 𝑎1 = 3) 𝑎0 > 𝑎1 なので,𝑎0 %𝑎1 = 0 gcd(𝑎0 , 𝑎1 ) = 3 拡張ユークリッドの互除法 整数 𝑚, 𝑛 の最大を gcd 𝑚, 𝑛 と表すときに, 拡張ユークリッドの互除法を用いて, 𝑎𝑚 + 𝑏𝑛 = gcd(𝑚, 𝑛) の解となる整数 𝑎, 𝑏 の組を見つけることができる 特に、𝑚, 𝑛 が互いに素 最大公約数が 1 である場合, 𝑎𝑚 + 𝑏𝑛 = 𝑐 は任意の整数 𝑐 に対して整数解 (𝑎, 𝑏) をもつ 拡張ユークリッドの互除法 gcd(𝑎0, 𝑎1 ) = 𝑎0 𝑥 + 𝑎1 𝑦となる整数𝑥, 𝑦を求めるアルゴリズム 𝑎0 = 10, 𝑎1 = 7とする (𝑥0 , 𝑦0 ) = 1,0 , 𝑥1 , 𝑦1 = 0,1 とする 𝑎0 ÷ 𝑎1 = 1 = 𝑞2 , 𝑎0 %𝑎1 = 3 = 𝑎2 (𝑥2 , 𝑦2 ) = 𝑥0 , 𝑦0 − 𝑞2 × 𝑥1 , 𝑦1 = (1, −1) 𝑎1 ÷ 𝑎2 = 2 = 𝑞3 , 𝑎1 %𝑎2 = 1 = 𝑎3 (𝑥3 , 𝑦3 ) = 𝑥1 , 𝑦1 − 𝑞3 × 𝑥2 , 𝑦2 = (−2,3) 𝑎2 ÷ 𝑎3 = 3 = 𝑞4 , 𝑎2 %𝑎3 = 0 = 𝑎4 (終了条件𝑎𝑖 = 0) gcd 10,7 = 𝑎3 = 1 = 10𝑥2 + 7𝑦2 = 10 × −2 + 7 × 3 𝑒𝑑 = 1 𝑚𝑜𝑑 𝑝への適用 (𝑝, 𝑒)を拡張ユークリッドの互除法に適用すると 𝑝𝑥 + 𝑒𝑦 = 1となる整数 𝑥, 𝑦 が求められる これは𝑒𝑦 = 1 𝑚𝑜𝑑 𝑝となる𝑦である 𝑦 > 0なら𝑦が答え𝑦 < 0なら𝑝 − 𝑦が答えになる 多人数公開鍵暗号 1対𝑛の暗号方式 秘密分散共有法 放送型暗号(ブロードキャスト暗号) 秘密分散共有法 𝑛人のうち,任意の𝑘人が集まると秘密𝑠を復元できるが, どの𝑘 − 1人が集まっても𝑠を復元できない手法 ディーラ𝐷と𝑛人の参加者𝑃𝑖 からなる 𝐷は秘密𝑠を𝑛個のシェア𝑣𝑖 に符号化し,𝑣𝑖 を𝑃𝑖 に与える (分散段階) 𝑛人の参加者のうち𝑘人が集まり𝑠を復元する (再構成段階) (𝑘, 𝑛)閾値秘密分散共有法(閾値法)と呼ぶ (2, 𝑛)閾値秘密分散共有法 𝐷は𝑓 𝑥 = 𝑎𝑥 + 𝑠を決める 𝑓 0 = 𝑠を秘密情報とする 𝐷は𝑛人の参加者𝑃𝑖 に 𝑖, 𝑓 𝑥 の点情報を与える 参加者は2人以上の情報 2点 で 𝑓 𝑥 = 𝑎𝑥 + 𝑠を求める 𝑠 = 𝑓 0 を取り出す (𝑘, 𝑛)閾値秘密分散共有法 𝐷は𝑝 > max(𝑠, 𝑛)となる素数𝑝を決める 𝐷は𝑓 0 = 𝑠となる𝐺𝐹 𝑝 上の高々𝑘 − 1次多項式 𝑓 𝑥 = 𝑠 + 𝑎1 𝑥 + 𝑎2 𝑥 2 + ⋯ + 𝑎𝑘−1 𝑥 𝑘−1 𝑚𝑜𝑑 𝑝を選ぶ 𝐷は𝑣𝑖 = 𝑓 𝑖 𝑚𝑜𝑑 𝑝を計算し,シェア𝑣𝑖 を𝑃𝑖 に与える (分散段階) 参加者は𝑘人以上の情報 𝑘点 で𝑓 𝑥 を求める 𝑠 = 𝑓 0 を取り出す (再構成段階) ラグランジュ補間 𝑘個の点で𝑘 − 1次多項式を復元する手法 𝑓 𝑥 = 𝜆1 𝑥 𝑓 𝑖1 + ⋯ + 𝜆𝑘 𝑥 𝑓 𝑖𝑘 𝑚𝑜𝑑 𝑝 このとき 𝜆𝑗 𝑥 = 𝑥 − 𝑖1 × ⋯ × (𝑥 − 𝑖𝑘 ) 𝑖𝑗 − 𝑖1 × ⋯ × (𝑖𝑗 − 𝑖𝑘 ) 𝑚𝑜𝑑 𝑝 𝑘 ≠ 𝑗 𝑠 = 𝑓 0 = 𝜆1 0 𝑓 𝑖1 + ⋯ + 𝜆𝑘 0 𝑓 𝑖𝑘 で𝑠が求まる ラグランジュ補間を実装してみ る 𝑍23 上の点 0,8 , 1,3 , 5,14 , 8,5 , 11,5 の5点を通る 𝑓 𝑥 = 𝑎0 𝑥 4 + 𝑎1 𝑥 3 + 𝑎2 𝑥 2 + 𝑎3 𝑥 + 𝑎4 を求め,𝑓(2)と𝑓(3)の値を求めよ ラグランジュ補間を実装してみ る 𝑓 𝑥 = 9𝑥 4 + 20𝑥 3 + 20𝑥 2 + 15𝑥 + 8 𝑎0 = 9,𝑎1 = 20, 𝑎2 = 20, 𝑎3 = 15, 𝑎4 = 8 ※係数はガウスの消去法で求められる ラグランジュ補間を使用すると 𝑓(2) = 8 𝑓(3) = 7 が得られる 放送型暗号(ブロードキャスト暗号) 送信者が秘密情報𝑠を暗号化したデータの送信 (同報通信)を1度だけ行う 受信者のうち,復号を許可されている 鍵を持っている 受信者𝑛人のみが復号できる このとき,𝑛人の鍵は皆異なるが復号される𝑠は同一になる ※ B-CASのイメージ (厳密にはB-CASは放送型暗号に含まれない) 代数的な方法 準備 素数𝑝と𝐺𝐹 𝑝 の原始元𝑔を選ぶ (𝑝は公開しておく) 送信者は𝑍𝑝 上の多項式 𝑓 𝑥 = 𝑎0 + 𝑎1 𝑥 + 𝑎2 𝑥 2 + ⋯ + 𝑎𝑘 𝑥 𝑘 を選ぶ. 送信者は以下の値を計算する 𝑦0 = 𝑔𝑎0 , 𝑦1 = 𝑔𝑎1 , … , 𝑦𝑘 = 𝑔𝑎𝑘 受信者𝑈𝑖 に𝑓 𝑥 上の点 𝛼𝑖 , 𝑓 𝛼𝑖 を安全に配布する 𝛼𝑖 , 𝑓 𝛼𝑖 は𝑈𝑖 の復号鍵になる 代数的な方法 暗号化 送信者は𝐺𝐹 𝑝 上のメッセージ𝑀を暗号化する鍵 𝑠 ∈ 𝐺𝐹 𝑝 を選び,𝑀を𝑠で暗号化する 𝐶 = 𝐸𝑛𝑐(𝑠, 𝑀) 以下のヘッダ𝐻を作成する 𝐻 = ℎ 𝑠, 𝑟 = 𝑔𝑟 , 𝑠𝑦0𝑟 , 𝑦1𝑟 , … , 𝑦𝑘𝑟 𝑟 ∈ 𝐺𝐹 𝑝 はランダムに選ぶ 𝐻と𝐶を送信する 代数的な方法 復号化 受信者𝑖は自身の秘密鍵 𝛼𝑖 , 𝑓 𝛼𝑖 を用いて 以下の計算をして𝑠を得る 𝑘 𝑠= 𝑠𝑦0𝑟 𝑗 (𝑦𝑗𝑟 )𝛼𝑖 × /(𝑔𝑟 )𝑓(𝛼𝑖) を計算する 𝑗=1 𝑠で𝐶を復号化して𝑀を得る 代数的な方法 証明 𝑘 𝑠𝑦0𝑟 𝑗 (𝑦𝑗𝑟 )𝛼𝑖 × /(𝑔𝑟 ) 𝑓(𝛼𝑖 ) 𝑗=1 = = 𝑟 𝑎𝑖𝑘 𝑟 𝑟 𝛼𝑖 {𝑠𝑦0 × (𝑦1 ) × ⋯ × (𝑦𝑘 ) }/(𝑔𝑟 ) 𝑓(𝛼𝑖 ) 𝑎0 𝑟 𝑎1 𝑟𝛼𝑖 𝑎𝑘 𝑟𝛼𝑖𝑘 𝑠𝑔 ×𝑔 × ⋯× 𝑔 /(𝑔𝑟 ) 𝑓(𝛼𝑖 ) 𝑟 𝑎0 +𝑎1 𝛼𝑖 +⋯+𝑎𝑘 𝛼𝑖𝑘 = {𝑠𝑔 }/(𝑔𝑟 ) 𝑓(𝛼𝑖 ) = 𝑠(𝑔𝑟 ) 𝑓(𝛼𝑖 ) /(𝑔𝑟 ) 𝑓(𝛼𝑖 ) =𝑠 ブロードキャスト暗号の種類 共通鍵ブロードキャスト暗号 公開鍵ブロードキャスト暗号 公開鍵ブロードキャスト暗号 BGW方式 -2005年 全体を管理するセンタが鍵の生成管理を行う AHBE(Ad Hoc Broadcast Encryption)-2010年 送信者受信者ともにシステム全体の人数とそれぞれ の公開鍵を保持する必要がある CBE(Contributory Broadcast Encryption)-2011年 構成員がかわるたびに秘密鍵と公開鍵を更新する必 要がある IPマルチキャスト暗号の要件 受信できるメッセージは,すべての受信者において同一であ る 受信者は任意のタイミングでグループ参加・離脱を行う グループの構成をリアルタイムにすべて把握できる存在はい ない 受信者同士が信頼できる関係であるとは限らない 送信者指定のグループ以外は,基本的に誰でも送信者になれ るため,送信者認証機能があると望ましい IPマルチキャスト暗号の定義 マルチキャスト暗号は,鍵生成アルゴリズムGen,暗号化アルゴ リズムEnc, 復号化アルゴリズムDec の多項式時間アルゴリズム の組(Gen,Enc,Dec) によって定義される Gen - 鍵生成アルゴリズム Enc - 暗号化アルゴリズム 1𝜆 (λ はセキュリティパラメータ) を入力とし,受信者𝑖 は,自身の公 開鍵𝑃𝐾𝑖 と秘密鍵𝑆𝐾𝑖 を出力する 復号を許可する受信者の公開鍵𝑃𝐾𝑖 の集合と平文𝑀を入力とし,暗 号文𝐶 を出力する Dec - 復号アルゴリズム 送信者に復号を許可された任意の受信者𝑖 の公開鍵𝑃𝐾𝑖 と秘密鍵𝑆𝐾𝑖 と,暗号文𝐶 を入力とし,平文𝑀 あるいは復号不可を表す⊥ を出力 する IPマルチキャスト暗号(図示) Sender Hello How are you? M s 93ea92 3 510de9 2 392a18 e f8c0152 7d23b5 9 PK1 Rec 1 SK1 H PK2 C PK3 Rec 2 SK2 Rec 3 SK3 PKn Rec n SKn IPマルチキャスト暗号(図示) Sender Hello How are you? s 93ea92 3 510de9 2 392a18 e f8c0152 7d23b5 9 PK1 PK2 M PK3 Rec 1 SK1 Rec 2 SK2 Rec 3 SK3 PKn Rec n SKn IPマルチキャスト暗号(図示) 93ea92 3 510de9 2 392a18 e f8c0152 7d23b5 9 PK1 s Rec 1 SK1 Hello How are you? M プロトタイプ 準備 各受信者を1, 2, … , 𝑛 とする 受信者はそれぞれの秘密鍵 𝑝𝑖 , 𝑞𝑖 (𝑖 = 1, 2, … , 𝑛) を大きな素数から選ぶ 公開鍵𝑃𝐾𝑖 = 𝑝𝑖 𝑞𝑖 𝑖 = 1, 2, … , 𝑛 をそれぞれ計算し,公開する プロトタイプ 送信 任意の𝑖 𝑖 = 1, 2, … , 𝑛 において𝑠 < 𝑝𝑖 𝑞𝑖 となる秘密共通鍵𝑠 を決定する 暗号鍵𝑒(素数が望ましい) を決定する 𝑐 = 𝑠 𝑒 𝑚𝑜𝑑 𝑐 と𝑒 をヘッダとして送信する 平文𝑀を𝑠 で暗号化したメッセージを送信する 𝑛 𝑖=1 𝑃𝐾𝑖 を計算する プロトタイプ 受信 復号する受信者𝑖 を例とする 𝑒𝑑𝑖 = 1 𝑚𝑜𝑑 𝑝𝑖 − 1 𝑞𝑖 − 1 となる復号鍵𝑑𝑖 を計算する 𝑠 = 𝑐 𝑑𝑖 𝑚𝑜𝑑 𝑝𝑖 𝑞𝑖 を計算し,秘密共通鍵𝑠 を得る 𝑠 で暗号文を復号して𝑀を得る プロトタイプ 補足 𝑛 𝑒は 𝑖=1 𝑝𝑖 − 1 𝑞𝑖 − 1 と互いに素になる 整数値に するべきであるが,送信者も任意の𝑝𝑖 , 𝑞𝑖 を知らない ため,素数値にする 事前に𝑒 を決めておくと,受信者の秘密鍵生成時に 互いに素になる𝑝𝑖 , 𝑞𝑖 を選べ,𝑑𝑖 も事前に決定できる 𝑠 で平文𝑀を暗号化するアルゴリズムは本手法と 独立で,既存の共通鍵暗号方式などを用いる 安全性 任意の受信者𝑖 の公開鍵𝑃𝐾𝑖 から秘密鍵𝑝𝑖 , 𝑞𝑖 を 導き出すことは,RSA 仮定と同等で困難である 𝑠 を使用した暗号文を少なくとも𝑒 個以上集め た場合,RSA の同一平文問題同様,中国の剰余 定理を用いた方法で𝑠を解読できる グループ内に同じ𝑝𝑖 または𝑞𝑖 をもつ受信者がい た場合,その存在を確認できる その他 RSA署名同様に送信者認証が行える 𝑐の法は 𝑛𝑖=1 𝑃𝐾𝑖 になるため,ヘッダサイズは 𝑂(𝑛) に従って増大する 𝑒の値を調整してサイズ減少も考え中 RSA公開鍵と共用できる 暗号関係のサーベイ 楕円曲線上のペアリング 素因数分解問題 離散対数問題 共通鍵暗号(ブロック暗号)
© Copyright 2024 ExpyDoc