SlideShare a Scribd company logo
1 of 17
Download to read offline
RSA鍵生成脆弱性ROCAの紹介
2017/11/13
光成滋生
• 論文
• The Return of Coppersmith's Attack Practical Factorization of
Widely Used RSA Moduli
• https://acmccs.github.io/papers/p1631-nemecA.pdf
• 主な内容
• 主要な暗号ハードウェアメーカで使われているライブラリ
(RSALib)の鍵生成アルゴリズムの欠陥を見つけた
• そのRSALibで作られた1024~2048bit RSAの公開鍵のみで
復号可能なアルゴリズムの提案
• OpenSSLで作ったものは大丈夫
• RSALibで作られた鍵かどうかを公開鍵のみで高速に判定可能
• TPMやeIDなどで利用されていることを調査
概要
2 / 17
• 今回の手法を適用したときの解読コスト
• p.10 Table 2
• 2048bit RSAの解読が現実的
Nの素因数分解にかかるコスト評価
3 / 17
• 異なる41個のPCのうち6個のTPM製品に脆弱性
• https://www.kb.cert.org/vuls/id/307015
• エストニアeIDのランダムサンプリングの54%に脆弱性
影響を受けるもの
4 / 17
• 異なる2個の素数𝑝と𝑞を選ぶ
• 𝑁 = 𝑝𝑞, 𝜙 𝑁 = (𝑝 − 1)(𝑞 − 1)とする
• 𝜙(𝑁)と互いに素な𝑒 < 𝜙(𝑁)を選ぶ
• 𝑑 = 𝑒−1 mod 𝜙(𝑁)とする
• mod 𝑥は𝑥で割った余り
• (𝑒, 𝑁)が公開鍵
• 𝑑が秘密鍵
RSA暗号
5 / 17
• 素数定理
• 𝑥以下の素数の個数𝜋(𝑥)はおおよそ𝑥/log(𝑥)である
• ガウスが15歳のとき素数を数えてその予想を立てたらしい
• 𝑛 bit素数なら
• 2 𝑛−1 ≤ 𝑝 < 2 𝑛
• この範囲の素数は𝜋 2 𝑛 − 𝜋 2 𝑛−1 =
2 𝑛
0.7𝑛
−
2 𝑛−1
0.7 𝑛−1
~2 𝑛−1/𝑛
• 512-bit RSAなら𝑛 = 256なので2247個程度
• 結構たくさんある
素数の個数
6 / 17
• 𝑝 = 𝑘𝑀 + (65537 𝑎 mod 𝑀)の形をしていた(と推測)
• ここで𝑎, 𝑘が動くパラメータ
• 𝑀はRSA暗号の鍵長のみに依存する定数
• 𝑃𝑛# ≔ 2 ∗ 3 ∗ ⋯ ∗ 𝑃𝑛 ; 素数を小さい順にn個掛けたもの
• 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67,
71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137,
139, 149, 151, 157, 163, 167, ...
• 512bit RSAなら𝑀 = 𝑃39#
• 1024bit RSAなら𝑀 = 𝑃71#
• 2028bit RSAなら𝑀 = 𝑃126#
• 512bit RSAなら𝑘の範囲は37bit, 𝑎は62bitらしい
• エントロピー(自由度は)37+62=99bit
• 本来の素数の個数247bitに比べてずっと少ない
RSALibが生成する素数
7 / 17
• 𝑝 = 𝑘𝑀 + 65537 𝑎 mod 𝑀
• 𝑞 = 𝑙𝑀 + (65537 𝑏 mod 𝑀), 𝑎, 𝑏, 𝑘, 𝑙 ∈ ℤなので
• 𝑝 ≡ 65537 𝑎
(mod 𝑀), 𝑞 ≡ 65537 𝑏
(mod 𝑀)
• よって𝑁 = 𝑝𝑞 ≡ 65537 𝑐(mod 𝑀), 𝑐 = 𝑎 + 𝑏の形となる
• この論文の一つ目の貢献
• 𝑁が与えられたときに
𝐷𝐿𝑃 𝑁 ≔
𝑁 = 65537 𝑐 mod 𝑀となる𝑐
存在しない
を高速に求める方法
• 𝐷𝐿𝑃(𝑁)が求まるなら無視できる確率を除いて
𝑁はRSALibで生成されたもの
• 公開鍵をみて脆弱だと分かってから攻撃可能
RSALibが生成する素数の指紋
8 / 17
• 年齢当てクイズ
• あなたの年齢の3で割った余り、5で割った余り、7で割った余
りを教えてください
• 𝑥 % 3, 𝑦 % 5, 𝑧 % 7から0 ≤ 𝑥 < 3 ∗ 5 ∗ 7 = 105の範囲で求まる
• 105は3と5と7の最小公倍数
• 中国剰余定理(CRT : Chinese Remainder Theorem)
• 𝑛1, … , 𝑛 𝑘を互いに素, 𝑥が未知, 𝑎1, … , 𝑎 𝑘が既知のとき
𝑥 ≡ 𝑎1 mod 𝑛1 ,
...
𝑥 ≡ 𝑎 𝑘 mod 𝑛 𝑘 ,
が与えられると𝑥 mod 𝑛1 ⋯ 𝑛 𝑘 を容易に求められる
百五減算
9 / 17
• 𝑦 = 𝑔 𝑥 mod 𝑀のDLPは𝜙(𝑀)の素因数ごとにDLPを解い
てCRTでくっつければよい
• ElGamal暗号などでは大きな素因数を持たせるため解けない
• 詳細は『クラウドを支えるこれからの暗号技術』をみてね
• 𝑀が𝐵 −smooth(DLPの解きやすさを表す指標)
• ⟺ある定数𝐵に対して𝑀の素因数は全て𝐵より小さい
• 𝑀 = 𝑃𝑛#は素数を小さいものから順に掛けていた
• 𝑀, 𝜙(𝑀)は(その大きさに比べて)とてもsmooth
• 効率よくDLPを求められる
• RSALibが生成した公開鍵である⟹ DLP(𝑁)が容易
Pohlig-Hellmanアルゴリズム
10 / 17
• その逆
一般の𝑁でDLP(𝑁)が容易なのはどれぐらいあるのか?
• (答え)とても少ない
• 𝐺 = {65537𝑖 mod 𝑀|𝑖 = 0,1, … }の大きさ
• 𝑜𝑟𝑑 𝑀 65537 =「65537𝑖 ≡ 1 mod 𝑀 となる最小の𝑖 > 0」
• 512bit RSAで62bit
• 262/2216程度の確率(無視できる)
• RSALibが生成した公開鍵である⟺ DLP(𝑁)が容易
• 𝐷𝐿𝑃(𝑁)を計算することで脆弱だと判定可能
擬陽性
11 / 17
• 鍵が脆弱化かどうかを判定するツール
• https://github.com/crocs-muni/roca
• 肝はhas_fingerprint_moduli()
ROCA detection tool
# modulusが公開鍵N
primes = [3, 5, 7, 11, ...
prints = [6, 30, 126, 1026, ...
def has_fingerprint_moduli(modulus):
for i in range(0, len(primes)):
if (1 << (modulus % primes[i])) & prints[i] == 0:
return False
return True
12 / 17
• 各𝑝に対して𝑔 = 65537 % 𝑝としてG = {𝑔𝑖} を求める
• 𝑁 % 𝑝が𝐺に入っていなければ脆弱でない
• prints[i] = calcG(primes[i])
prints[]は何?
def calcG(p):
g = 65537 % p
y = 1
G = set()
for i in range(p):
y = (y * g) % p
G.add(y)
r = 0
for x in G:
r = r | (1 << x)
return r
13 / 17
• Coppersmith法の応用
• 法つき整数係数1変数多項式𝑓 𝑥 ≡ 0(mod 𝑁)の解法
• Howgrave-Graham, Alexander Mayなどによる様々な改良
• 今回は𝑝 = 𝑘𝑀 + (65537 𝑎 mod 𝑀)の𝑎を固定するごとに決まる
𝑘に関する1変数多項式の求解にCoppersmith法を利用
• ただし𝑎の種類は𝑜𝑟𝑑 = 𝑜𝑟𝑑 𝑀(65537)だけあり、とても無理
• これを減らす手法も提案
• p.5 Table 1
この論文のメインの解読アイデア
提案手法による𝑎の種類の削減
14 / 17
• 𝑥と𝑝|𝑁が未知で多項式𝑓 𝑥 ≡ 0 (mod 𝑝)を解きたい
• 𝑥0 < 𝑋という範囲制約パラメータ𝑋を導入
• 𝑓(𝑥)から𝑥 = 𝑥0を解に含む方程式𝑔 𝑥 = 0を沢山構成
• 𝑓から適切な多項式𝑓𝑖を作り𝐿 = {𝑔 𝑥 = 𝑎𝑖 𝑓𝑖(𝑥)𝑖 }を作る
• 𝑔1, 𝑔2 ∈ 𝐿なら𝑔1 ± 𝑔2 ∈ 𝐿という性質がある
• 𝐿は格子点の集合
• 𝐿の中からLLLアルゴリズムを使ってよい𝑔(𝑥)を見つける
• その𝑔は 𝑔 𝑥0 < 𝑝となるので𝑔 𝑥0 = 0
• 𝑔 𝑥 = 0を解いて𝑥 = 𝑥0を求める
• Berlekamp-Zassenhause法など
この論文のCoppersmith法
15 / 17
• 𝑝 = 𝑘𝑀 + (65537 𝑎 mod 𝑀) ---☆なので
𝑓 𝑥 = 𝑥 + 𝑀−1
mod 𝑀 ∗ (65537 𝑎
mod 𝑀)とすると
𝑘は𝑓 𝑥 = 0(mod 𝑝)の解
• 𝑝, 𝑞は𝑁の半分なので𝛽 = 0.5として𝑝 < 𝑁 𝛽
• ☆の性質を満たす𝑀の小さい約数𝑀′を選ぶ
• 解の上限は𝑋 = 2𝑁 𝛽/𝑀′
• for 𝑎′ ←ある固定範囲
• 𝑘′ ← 𝐶𝑜𝑝𝑝𝑒𝑟𝑠𝑚𝑖𝑡ℎ 𝑓 𝑥 , 𝑁, 𝛽, 𝑋
• 𝑝 ← 𝑘′ 𝑀′ + (65537 𝑎′
mod 𝑀′)
• 𝑁 mod 𝑝 = 0なら見つかった/無ければ次の𝑎′
アルゴリズム
16 / 17
• 総計算時間 𝑇𝑖𝑚𝑒 = 𝑜𝑟𝑑 𝑀′ 65537 ∗ 𝑇(𝑀′)
• 𝑇(𝑀′) : Coppersmithを解く時間
• 𝑀′
が大きいほど速い・log2 𝑀′
> log2(𝑁)/4が必要
• ループ回数𝑜𝑟𝑑 𝑀′(65537)
• 𝑀′が小さいほど速い
• 𝑇𝑖𝑚𝑒が小さくなるように𝑀′を選ぶ
• ヒューリスティック
• 他にも改良パラメータ𝑚, 𝑡(略)
• これらのパラメータは
鍵サイズにのみ依存
• よいところを選んで実際に解く
パラメータの選び方
17 / 17

More Related Content

What's hot

プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造Takuya Akiba
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門Yoichi Iwata
 
暗認本読書会13 advanced
暗認本読書会13 advanced暗認本読書会13 advanced
暗認本読書会13 advancedMITSUNARI Shigeo
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端Takuya Akiba
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~Takuya Akiba
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~Takuya Akiba
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介MITSUNARI Shigeo
 
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明MITSUNARI Shigeo
 
zk-SNARKsの仕組みについて
zk-SNARKsの仕組みについてzk-SNARKsの仕組みについて
zk-SNARKsの仕組みについてts21
 
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)MITSUNARI Shigeo
 
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃trmr
 
差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)Kentaro Minami
 
DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜Jun Okumura
 
技術勉強会(楕円曲線暗号)資料
技術勉強会(楕円曲線暗号)資料技術勉強会(楕円曲線暗号)資料
技術勉強会(楕円曲線暗号)資料Tetsuyuki Oishi
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -MITSUNARI Shigeo
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解くshindannin
 

What's hot (20)

プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
暗認本読書会7
暗認本読書会7暗認本読書会7
暗認本読書会7
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
暗認本読書会13 advanced
暗認本読書会13 advanced暗認本読書会13 advanced
暗認本読書会13 advanced
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
 
暗認本読書会12
暗認本読書会12暗認本読書会12
暗認本読書会12
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介
 
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
 
zk-SNARKsの仕組みについて
zk-SNARKsの仕組みについてzk-SNARKsの仕組みについて
zk-SNARKsの仕組みについて
 
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
 
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
katagaitai workshop #7 crypto ナップサック暗号と低密度攻撃
 
差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)差分プライバシーとは何か? (定義 & 解釈編)
差分プライバシーとは何か? (定義 & 解釈編)
 
DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜
 
技術勉強会(楕円曲線暗号)資料
技術勉強会(楕円曲線暗号)資料技術勉強会(楕円曲線暗号)資料
技術勉強会(楕円曲線暗号)資料
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
 
FHE in Action
FHE in ActionFHE in Action
FHE in Action
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 

Similar to RSA鍵生成脆弱性ROCAの紹介

暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
楕円曲線入門 トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門 トーラスと楕円曲線のつながりMITSUNARI Shigeo
 
今日からはじめる微分方程式
今日からはじめる微分方程式今日からはじめる微分方程式
今日からはじめる微分方程式Ryo Kaji
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageTaku Miyakawa
 
PRML復々習レーン#10 7.1.3-7.1.5
PRML復々習レーン#10 7.1.3-7.1.5PRML復々習レーン#10 7.1.3-7.1.5
PRML復々習レーン#10 7.1.3-7.1.5sleepy_yoshi
 
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説AtCoder Inc.
 
リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道Satoshi Sato
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 TokyoYoshiyuki Asaba
 
第21回アルゴリズム勉強会
第21回アルゴリズム勉強会第21回アルゴリズム勉強会
第21回アルゴリズム勉強会Yuuki Ono
 
Web本文抽出 using crf
Web本文抽出 using crfWeb本文抽出 using crf
Web本文抽出 using crfShuyo Nakatani
 
『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算MITSUNARI Shigeo
 
Approximate Scalable Bounded Space Sketch for Large Data NLP
Approximate Scalable Bounded Space Sketch for Large Data NLPApproximate Scalable Bounded Space Sketch for Large Data NLP
Approximate Scalable Bounded Space Sketch for Large Data NLPKoji Matsuda
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるAtsushi KOMIYA
 
Graph Clustering on Missing Data
Graph Clustering on Missing DataGraph Clustering on Missing Data
Graph Clustering on Missing DataYuma Inoue
 
Groups-Keeping Solution Path Algorithm For Sparse Regression
Groups-Keeping Solution Path Algorithm For Sparse RegressionGroups-Keeping Solution Path Algorithm For Sparse Regression
Groups-Keeping Solution Path Algorithm For Sparse RegressionTakahiro Yoshinaga
 
並行プログラミングと継続モナド
並行プログラミングと継続モナド並行プログラミングと継続モナド
並行プログラミングと継続モナドKousuke Ruichi
 
岩波データサイエンス_Vol.5_勉強会資料02
岩波データサイエンス_Vol.5_勉強会資料02岩波データサイエンス_Vol.5_勉強会資料02
岩波データサイエンス_Vol.5_勉強会資料02goony0101
 

Similar to RSA鍵生成脆弱性ROCAの紹介 (20)

暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
楕円曲線入門 トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門 トーラスと楕円曲線のつながり
 
今日からはじめる微分方程式
今日からはじめる微分方程式今日からはじめる微分方程式
今日からはじめる微分方程式
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
 
PRML復々習レーン#10 7.1.3-7.1.5
PRML復々習レーン#10 7.1.3-7.1.5PRML復々習レーン#10 7.1.3-7.1.5
PRML復々習レーン#10 7.1.3-7.1.5
 
楕円曲線と暗号
楕円曲線と暗号楕円曲線と暗号
楕円曲線と暗号
 
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説
 
Omega test and beyond
Omega test and beyondOmega test and beyond
Omega test and beyond
 
リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
 
第21回アルゴリズム勉強会
第21回アルゴリズム勉強会第21回アルゴリズム勉強会
第21回アルゴリズム勉強会
 
Web本文抽出 using crf
Web本文抽出 using crfWeb本文抽出 using crf
Web本文抽出 using crf
 
『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算
 
Approximate Scalable Bounded Space Sketch for Large Data NLP
Approximate Scalable Bounded Space Sketch for Large Data NLPApproximate Scalable Bounded Space Sketch for Large Data NLP
Approximate Scalable Bounded Space Sketch for Large Data NLP
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
 
Graph Clustering on Missing Data
Graph Clustering on Missing DataGraph Clustering on Missing Data
Graph Clustering on Missing Data
 
Groups-Keeping Solution Path Algorithm For Sparse Regression
Groups-Keeping Solution Path Algorithm For Sparse RegressionGroups-Keeping Solution Path Algorithm For Sparse Regression
Groups-Keeping Solution Path Algorithm For Sparse Regression
 
並行プログラミングと継続モナド
並行プログラミングと継続モナド並行プログラミングと継続モナド
並行プログラミングと継続モナド
 
岩波データサイエンス_Vol.5_勉強会資料02
岩波データサイエンス_Vol.5_勉強会資料02岩波データサイエンス_Vol.5_勉強会資料02
岩波データサイエンス_Vol.5_勉強会資料02
 
KDD2014 勉強会
KDD2014 勉強会KDD2014 勉強会
KDD2014 勉強会
 

More from MITSUNARI Shigeo

範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコルMITSUNARI Shigeo
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenMITSUNARI Shigeo
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法MITSUNARI Shigeo
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装MITSUNARI Shigeo
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化MITSUNARI Shigeo
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用MITSUNARI Shigeo
 
LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介MITSUNARI Shigeo
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたMITSUNARI Shigeo
 
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用MITSUNARI Shigeo
 

More from MITSUNARI Shigeo (20)

範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
 
暗認本読書会11
暗認本読書会11暗認本読書会11
暗認本読書会11
 
暗認本読書会10
暗認本読書会10暗認本読書会10
暗認本読書会10
 
暗認本読書会9
暗認本読書会9暗認本読書会9
暗認本読書会9
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 
暗認本読書会8
暗認本読書会8暗認本読書会8
暗認本読書会8
 
暗認本読書会6
暗認本読書会6暗認本読書会6
暗認本読書会6
 
暗認本読書会5
暗認本読書会5暗認本読書会5
暗認本読書会5
 
暗認本読書会4
暗認本読書会4暗認本読書会4
暗認本読書会4
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
 
LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
ゆるバグ
ゆるバグゆるバグ
ゆるバグ
 
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
 
集約署名
集約署名集約署名
集約署名
 

Recently uploaded

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Recently uploaded (9)

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

RSA鍵生成脆弱性ROCAの紹介

  • 2. • 論文 • The Return of Coppersmith's Attack Practical Factorization of Widely Used RSA Moduli • https://acmccs.github.io/papers/p1631-nemecA.pdf • 主な内容 • 主要な暗号ハードウェアメーカで使われているライブラリ (RSALib)の鍵生成アルゴリズムの欠陥を見つけた • そのRSALibで作られた1024~2048bit RSAの公開鍵のみで 復号可能なアルゴリズムの提案 • OpenSSLで作ったものは大丈夫 • RSALibで作られた鍵かどうかを公開鍵のみで高速に判定可能 • TPMやeIDなどで利用されていることを調査 概要 2 / 17
  • 3. • 今回の手法を適用したときの解読コスト • p.10 Table 2 • 2048bit RSAの解読が現実的 Nの素因数分解にかかるコスト評価 3 / 17
  • 4. • 異なる41個のPCのうち6個のTPM製品に脆弱性 • https://www.kb.cert.org/vuls/id/307015 • エストニアeIDのランダムサンプリングの54%に脆弱性 影響を受けるもの 4 / 17
  • 5. • 異なる2個の素数𝑝と𝑞を選ぶ • 𝑁 = 𝑝𝑞, 𝜙 𝑁 = (𝑝 − 1)(𝑞 − 1)とする • 𝜙(𝑁)と互いに素な𝑒 < 𝜙(𝑁)を選ぶ • 𝑑 = 𝑒−1 mod 𝜙(𝑁)とする • mod 𝑥は𝑥で割った余り • (𝑒, 𝑁)が公開鍵 • 𝑑が秘密鍵 RSA暗号 5 / 17
  • 6. • 素数定理 • 𝑥以下の素数の個数𝜋(𝑥)はおおよそ𝑥/log(𝑥)である • ガウスが15歳のとき素数を数えてその予想を立てたらしい • 𝑛 bit素数なら • 2 𝑛−1 ≤ 𝑝 < 2 𝑛 • この範囲の素数は𝜋 2 𝑛 − 𝜋 2 𝑛−1 = 2 𝑛 0.7𝑛 − 2 𝑛−1 0.7 𝑛−1 ~2 𝑛−1/𝑛 • 512-bit RSAなら𝑛 = 256なので2247個程度 • 結構たくさんある 素数の個数 6 / 17
  • 7. • 𝑝 = 𝑘𝑀 + (65537 𝑎 mod 𝑀)の形をしていた(と推測) • ここで𝑎, 𝑘が動くパラメータ • 𝑀はRSA暗号の鍵長のみに依存する定数 • 𝑃𝑛# ≔ 2 ∗ 3 ∗ ⋯ ∗ 𝑃𝑛 ; 素数を小さい順にn個掛けたもの • 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, ... • 512bit RSAなら𝑀 = 𝑃39# • 1024bit RSAなら𝑀 = 𝑃71# • 2028bit RSAなら𝑀 = 𝑃126# • 512bit RSAなら𝑘の範囲は37bit, 𝑎は62bitらしい • エントロピー(自由度は)37+62=99bit • 本来の素数の個数247bitに比べてずっと少ない RSALibが生成する素数 7 / 17
  • 8. • 𝑝 = 𝑘𝑀 + 65537 𝑎 mod 𝑀 • 𝑞 = 𝑙𝑀 + (65537 𝑏 mod 𝑀), 𝑎, 𝑏, 𝑘, 𝑙 ∈ ℤなので • 𝑝 ≡ 65537 𝑎 (mod 𝑀), 𝑞 ≡ 65537 𝑏 (mod 𝑀) • よって𝑁 = 𝑝𝑞 ≡ 65537 𝑐(mod 𝑀), 𝑐 = 𝑎 + 𝑏の形となる • この論文の一つ目の貢献 • 𝑁が与えられたときに 𝐷𝐿𝑃 𝑁 ≔ 𝑁 = 65537 𝑐 mod 𝑀となる𝑐 存在しない を高速に求める方法 • 𝐷𝐿𝑃(𝑁)が求まるなら無視できる確率を除いて 𝑁はRSALibで生成されたもの • 公開鍵をみて脆弱だと分かってから攻撃可能 RSALibが生成する素数の指紋 8 / 17
  • 9. • 年齢当てクイズ • あなたの年齢の3で割った余り、5で割った余り、7で割った余 りを教えてください • 𝑥 % 3, 𝑦 % 5, 𝑧 % 7から0 ≤ 𝑥 < 3 ∗ 5 ∗ 7 = 105の範囲で求まる • 105は3と5と7の最小公倍数 • 中国剰余定理(CRT : Chinese Remainder Theorem) • 𝑛1, … , 𝑛 𝑘を互いに素, 𝑥が未知, 𝑎1, … , 𝑎 𝑘が既知のとき 𝑥 ≡ 𝑎1 mod 𝑛1 , ... 𝑥 ≡ 𝑎 𝑘 mod 𝑛 𝑘 , が与えられると𝑥 mod 𝑛1 ⋯ 𝑛 𝑘 を容易に求められる 百五減算 9 / 17
  • 10. • 𝑦 = 𝑔 𝑥 mod 𝑀のDLPは𝜙(𝑀)の素因数ごとにDLPを解い てCRTでくっつければよい • ElGamal暗号などでは大きな素因数を持たせるため解けない • 詳細は『クラウドを支えるこれからの暗号技術』をみてね • 𝑀が𝐵 −smooth(DLPの解きやすさを表す指標) • ⟺ある定数𝐵に対して𝑀の素因数は全て𝐵より小さい • 𝑀 = 𝑃𝑛#は素数を小さいものから順に掛けていた • 𝑀, 𝜙(𝑀)は(その大きさに比べて)とてもsmooth • 効率よくDLPを求められる • RSALibが生成した公開鍵である⟹ DLP(𝑁)が容易 Pohlig-Hellmanアルゴリズム 10 / 17
  • 11. • その逆 一般の𝑁でDLP(𝑁)が容易なのはどれぐらいあるのか? • (答え)とても少ない • 𝐺 = {65537𝑖 mod 𝑀|𝑖 = 0,1, … }の大きさ • 𝑜𝑟𝑑 𝑀 65537 =「65537𝑖 ≡ 1 mod 𝑀 となる最小の𝑖 > 0」 • 512bit RSAで62bit • 262/2216程度の確率(無視できる) • RSALibが生成した公開鍵である⟺ DLP(𝑁)が容易 • 𝐷𝐿𝑃(𝑁)を計算することで脆弱だと判定可能 擬陽性 11 / 17
  • 12. • 鍵が脆弱化かどうかを判定するツール • https://github.com/crocs-muni/roca • 肝はhas_fingerprint_moduli() ROCA detection tool # modulusが公開鍵N primes = [3, 5, 7, 11, ... prints = [6, 30, 126, 1026, ... def has_fingerprint_moduli(modulus): for i in range(0, len(primes)): if (1 << (modulus % primes[i])) & prints[i] == 0: return False return True 12 / 17
  • 13. • 各𝑝に対して𝑔 = 65537 % 𝑝としてG = {𝑔𝑖} を求める • 𝑁 % 𝑝が𝐺に入っていなければ脆弱でない • prints[i] = calcG(primes[i]) prints[]は何? def calcG(p): g = 65537 % p y = 1 G = set() for i in range(p): y = (y * g) % p G.add(y) r = 0 for x in G: r = r | (1 << x) return r 13 / 17
  • 14. • Coppersmith法の応用 • 法つき整数係数1変数多項式𝑓 𝑥 ≡ 0(mod 𝑁)の解法 • Howgrave-Graham, Alexander Mayなどによる様々な改良 • 今回は𝑝 = 𝑘𝑀 + (65537 𝑎 mod 𝑀)の𝑎を固定するごとに決まる 𝑘に関する1変数多項式の求解にCoppersmith法を利用 • ただし𝑎の種類は𝑜𝑟𝑑 = 𝑜𝑟𝑑 𝑀(65537)だけあり、とても無理 • これを減らす手法も提案 • p.5 Table 1 この論文のメインの解読アイデア 提案手法による𝑎の種類の削減 14 / 17
  • 15. • 𝑥と𝑝|𝑁が未知で多項式𝑓 𝑥 ≡ 0 (mod 𝑝)を解きたい • 𝑥0 < 𝑋という範囲制約パラメータ𝑋を導入 • 𝑓(𝑥)から𝑥 = 𝑥0を解に含む方程式𝑔 𝑥 = 0を沢山構成 • 𝑓から適切な多項式𝑓𝑖を作り𝐿 = {𝑔 𝑥 = 𝑎𝑖 𝑓𝑖(𝑥)𝑖 }を作る • 𝑔1, 𝑔2 ∈ 𝐿なら𝑔1 ± 𝑔2 ∈ 𝐿という性質がある • 𝐿は格子点の集合 • 𝐿の中からLLLアルゴリズムを使ってよい𝑔(𝑥)を見つける • その𝑔は 𝑔 𝑥0 < 𝑝となるので𝑔 𝑥0 = 0 • 𝑔 𝑥 = 0を解いて𝑥 = 𝑥0を求める • Berlekamp-Zassenhause法など この論文のCoppersmith法 15 / 17
  • 16. • 𝑝 = 𝑘𝑀 + (65537 𝑎 mod 𝑀) ---☆なので 𝑓 𝑥 = 𝑥 + 𝑀−1 mod 𝑀 ∗ (65537 𝑎 mod 𝑀)とすると 𝑘は𝑓 𝑥 = 0(mod 𝑝)の解 • 𝑝, 𝑞は𝑁の半分なので𝛽 = 0.5として𝑝 < 𝑁 𝛽 • ☆の性質を満たす𝑀の小さい約数𝑀′を選ぶ • 解の上限は𝑋 = 2𝑁 𝛽/𝑀′ • for 𝑎′ ←ある固定範囲 • 𝑘′ ← 𝐶𝑜𝑝𝑝𝑒𝑟𝑠𝑚𝑖𝑡ℎ 𝑓 𝑥 , 𝑁, 𝛽, 𝑋 • 𝑝 ← 𝑘′ 𝑀′ + (65537 𝑎′ mod 𝑀′) • 𝑁 mod 𝑝 = 0なら見つかった/無ければ次の𝑎′ アルゴリズム 16 / 17
  • 17. • 総計算時間 𝑇𝑖𝑚𝑒 = 𝑜𝑟𝑑 𝑀′ 65537 ∗ 𝑇(𝑀′) • 𝑇(𝑀′) : Coppersmithを解く時間 • 𝑀′ が大きいほど速い・log2 𝑀′ > log2(𝑁)/4が必要 • ループ回数𝑜𝑟𝑑 𝑀′(65537) • 𝑀′が小さいほど速い • 𝑇𝑖𝑚𝑒が小さくなるように𝑀′を選ぶ • ヒューリスティック • 他にも改良パラメータ𝑚, 𝑡(略) • これらのパラメータは 鍵サイズにのみ依存 • よいところを選んで実際に解く パラメータの選び方 17 / 17