SlideShare a Scribd company logo
1
PARI/GPの話
ytoku
2015-07-09 @ Ph/shh/bin CTF勉強会 LT1
2
Speaker
徳重佑樹 a.k.a. ytoku
● 電気通信大学 M2
● 研究分野: Cryptography
● Team: MMA, Tokyo Westerns
●
Twitter: __ytoku
MMA
Tokyo Westerns
= MMA + tuat_mcc
+ CureSecure
3
PARI/GP?
●
計算機代数システム
●
整数論に強い
– 因数分解
– 代数的数論
– 楕円曲線
– ...
● PARI: 計算ライブラリ
● GP: スクリプト言語
※1
※1: 本当に硬い合成数の素因数分解はGMP-ECMとかに任せたほうが良い
4
Many equations and algorithms...
5
Wonderland
(BkP CTF 2015: Crypto 600)
Serverの挙動:
十分に大きい素数を位数に含む
→楕円曲線上の離散対数問題としては絶望的
として 上で演算
6
Wonderland (解法)
サーバは
上で有効か確認していない.(右辺が平方非剰余なら解なし)
が
存在しない を与えた時に返ってくる値は,実は
上の群における演算結果になっている.
が小さい素数の積
上で離散対数問題が解ける
もし
とは言ったものの……
7
解くためにやる必要のあること
1.楕円曲線上の元の位数を求める
2.位数を素因数分解
3.楕円曲線上の離散対数問題を解く
実装めんどくさい
Schoof's algorithm
Pollard's rho algorithm,
p-1 algorithm, p+1 algorithm...
Baby-step giant-step
8
確かに攻撃できるね!それで、時間内に
お兄ちゃんに実装できるのかな?
司令官、私がいるじゃない!
9
楕円曲線のセットアップ
p = 2^160 + 7;
A = 40638;
E = ellinit([0, -A, 0, 1, 0] * Mod(1, p));
10
楕円曲線の位数
Gx = 5;
G = [Gx, ellordinate(E, Gx)[1]];
orderG = ellorder(E, G)
なる元の
点 の位数を求める
? orderG = ellorder(E, G)
%6 = 730750818665451459101842825589656562369324838380
11
素因数分解
? factor(orderG)
%7 =
[ 2 2]
[ 5 1]
[ 7 1]
[ 31 1]
[ 5857 1]
[ 3280967 1]
[ 68590573243 1]
[308648791439 1]
[413879086189 1]
12
楕円曲線上の離散対数
x = -サーバから帰ってきた値;
Q = [x, ellordinate(E, x)[1]];
r = elllog(E, Q, G, orderG)
ここで をサーバに送信し,
を得る.
elllogの所要時間: 10秒程度
13
lift(chinese(Mod(0, 2), Mod(r, orderG)))
lift(chinese(Mod(0, 2), Mod(-r, orderG)))
フラグを得られるように調整
●
最後に次の二点を調整してフラグが得られる
– Gの位数 が E'の位数/2 だった
– y座標が±yどちらなのかわからない
● サーバからの返答にはy座標が含まれない
Modを外しているだけ Chinese Reminder Theorem
14
攻撃法は知ってるけど
原理は知らないって……
ね、簡単でしょう?
ちゃんとアルゴリズムも勉強しておきましょう
15
PARI/GPにだって……
できないことぐらい……
16
16進数リテラル対応してねぇ!
17
[本題]
PARI/GPに対する
16進数リテラルの実装
ytoku
2015-07-09 @ Ph/shh/bin CTF勉強会 LT1
18
やったこと
● yylex:
– 0xで始まるトークンをKHEXに
● parse.y:
– KHEXトークンを構文木でCSThexに
● compile.c, anal.c:
– CSThexから多倍長整数に読み取り
●
ようするに
– 10進数の処理をコピペして16進数に対応させただけ
19
16進数 入力できます!
? p = 0x100000000
%1 = 4294967296
? p = 0xfffffffffffffffff
%2 = 295147905179352825855
? p = 0 x f f f f
%3 = 65535
実はGPの仕様上変なところにスペースが
入っても大丈夫(10進数も同じ)
20
パッチの入手はこちらから
https://goo.gl/Qab0N0
URLは後でTwitterにでも
PARI/GPで素敵な暗号解読ライフを.
ご清聴ありがとうございました.
逆引き辞典「CTFと現代暗号のためのPARI/GP」もよろしく
https://wiki.mma.club.uec.ac.jp/CTF/Toolkit/PariGP

More Related Content

What's hot

Lispmeetup #39 MGLの紹介: Common Lispによるディープラーニング
Lispmeetup #39 MGLの紹介: Common LispによるディープラーニングLispmeetup #39 MGLの紹介: Common Lispによるディープラーニング
Lispmeetup #39 MGLの紹介: Common Lispによるディープラーニング
Satoshi imai
 
Encoder-decoder 翻訳 (TISハンズオン資料)
Encoder-decoder 翻訳 (TISハンズオン資料)Encoder-decoder 翻訳 (TISハンズオン資料)
Encoder-decoder 翻訳 (TISハンズオン資料)
Yusuke Oda
 
MakeLSI:ないと:Lチカから語るやわらかハードな夜
MakeLSI:ないと:Lチカから語るやわらかハードな夜MakeLSI:ないと:Lチカから語るやわらかハードな夜
MakeLSI:ないと:Lチカから語るやわらかハードな夜
Junichi Akita
 
Rnn+lstmを理解する
Rnn+lstmを理解するRnn+lstmを理解する
Rnn+lstmを理解する
Arata Honda
 
Agdaで回路設計(をしたい)
Agdaで回路設計(をしたい)Agdaで回路設計(をしたい)
Agdaで回路設計(をしたい)
Shunji Nishimura
 
ppOpen-ATによる静的コード生成で実現する 自動チューニング方式の評価
ppOpen-ATによる静的コード生成で実現する自動チューニング方式の評価ppOpen-ATによる静的コード生成で実現する自動チューニング方式の評価
ppOpen-ATによる静的コード生成で実現する 自動チューニング方式の評価
Takahiro Katagiri
 
ppOpen-HPCコードを自動チューニングする言語ppOpen-ATの現状と新展開
ppOpen-HPCコードを自動チューニングする言語ppOpen-ATの現状と新展開ppOpen-HPCコードを自動チューニングする言語ppOpen-ATの現状と新展開
ppOpen-HPCコードを自動チューニングする言語ppOpen-ATの現状と新展開
Takahiro Katagiri
 
TTパラメータの数値について
TTパラメータの数値についてTTパラメータの数値について
TTパラメータの数値について
Tsuyoshi Horigome
 
スパースモデリング入門
スパースモデリング入門スパースモデリング入門
スパースモデリング入門
Hideo Terada
 
KDD 2015勉強会_高橋
KDD 2015勉強会_高橋KDD 2015勉強会_高橋
KDD 2015勉強会_高橋
Ryo Takahashi
 
音声認識と深層学習
音声認識と深層学習音声認識と深層学習
音声認識と深層学習
Preferred Networks
 
kagamicomput201810
kagamicomput201810kagamicomput201810
kagamicomput201810
swkagami
 

What's hot (12)

Lispmeetup #39 MGLの紹介: Common Lispによるディープラーニング
Lispmeetup #39 MGLの紹介: Common LispによるディープラーニングLispmeetup #39 MGLの紹介: Common Lispによるディープラーニング
Lispmeetup #39 MGLの紹介: Common Lispによるディープラーニング
 
Encoder-decoder 翻訳 (TISハンズオン資料)
Encoder-decoder 翻訳 (TISハンズオン資料)Encoder-decoder 翻訳 (TISハンズオン資料)
Encoder-decoder 翻訳 (TISハンズオン資料)
 
MakeLSI:ないと:Lチカから語るやわらかハードな夜
MakeLSI:ないと:Lチカから語るやわらかハードな夜MakeLSI:ないと:Lチカから語るやわらかハードな夜
MakeLSI:ないと:Lチカから語るやわらかハードな夜
 
Rnn+lstmを理解する
Rnn+lstmを理解するRnn+lstmを理解する
Rnn+lstmを理解する
 
Agdaで回路設計(をしたい)
Agdaで回路設計(をしたい)Agdaで回路設計(をしたい)
Agdaで回路設計(をしたい)
 
ppOpen-ATによる静的コード生成で実現する 自動チューニング方式の評価
ppOpen-ATによる静的コード生成で実現する自動チューニング方式の評価ppOpen-ATによる静的コード生成で実現する自動チューニング方式の評価
ppOpen-ATによる静的コード生成で実現する 自動チューニング方式の評価
 
ppOpen-HPCコードを自動チューニングする言語ppOpen-ATの現状と新展開
ppOpen-HPCコードを自動チューニングする言語ppOpen-ATの現状と新展開ppOpen-HPCコードを自動チューニングする言語ppOpen-ATの現状と新展開
ppOpen-HPCコードを自動チューニングする言語ppOpen-ATの現状と新展開
 
TTパラメータの数値について
TTパラメータの数値についてTTパラメータの数値について
TTパラメータの数値について
 
スパースモデリング入門
スパースモデリング入門スパースモデリング入門
スパースモデリング入門
 
KDD 2015勉強会_高橋
KDD 2015勉強会_高橋KDD 2015勉強会_高橋
KDD 2015勉強会_高橋
 
音声認識と深層学習
音声認識と深層学習音声認識と深層学習
音声認識と深層学習
 
kagamicomput201810
kagamicomput201810kagamicomput201810
kagamicomput201810
 

Similar to PARI/GPの話 @ Ph/shh/bin CTF勉強会LT

El text.tokuron a(2019).watanabe190613
El text.tokuron a(2019).watanabe190613El text.tokuron a(2019).watanabe190613
El text.tokuron a(2019).watanabe190613
RCCSRENKEI
 
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
MITSUNARI Shigeo
 
katagaitaictf7_hw_ysk
katagaitaictf7_hw_yskkatagaitaictf7_hw_ysk
katagaitaictf7_hw_ysk
ysk256
 
4bit-CPU : TD4の解説
4bit-CPU : TD4の解説4bit-CPU : TD4の解説
4bit-CPU : TD4の解説
Seong-Hun Choe
 
20220525_kobayashi.pdf
20220525_kobayashi.pdf20220525_kobayashi.pdf
20220525_kobayashi.pdf
直久 住川
 
More modern gpu
More modern gpuMore modern gpu
More modern gpu
Preferred Networks
 
GPUサーバーたくさん使うのいいけど置く場所とかどうするの?的なお話
GPUサーバーたくさん使うのいいけど置く場所とかどうするの?的なお話GPUサーバーたくさん使うのいいけど置く場所とかどうするの?的なお話
GPUサーバーたくさん使うのいいけど置く場所とかどうするの?的なお話
Deep Learning Lab(ディープラーニング・ラボ)
 
Tuning, etc.
Tuning, etc.Tuning, etc.
Tuning, etc.
Hiroshi Watanabe
 
200521material takahashi
200521material takahashi200521material takahashi
200521material takahashi
RCCSRENKEI
 
200528material takahashi
200528material takahashi200528material takahashi
200528material takahashi
RCCSRENKEI
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
Yusuke Fujimoto
 
Lagopusで試すFirewall
Lagopusで試すFirewallLagopusで試すFirewall
Lagopusで試すFirewall
Tomoya Hibi
 
kagamicomput201814
kagamicomput201814kagamicomput201814
kagamicomput201814
swkagami
 
電子動力学アプリケーションの最適化2
電子動力学アプリケーションの最適化2電子動力学アプリケーションの最適化2
電子動力学アプリケーションの最適化2
RCCSRENKEI
 
2019年7月3日 AITCオープンラボ 量子コンピューティング シリーズ第3回 ~日立製作所様における取り組み紹介~
2019年7月3日 AITCオープンラボ 量子コンピューティング シリーズ第3回 ~日立製作所様における取り組み紹介~ 2019年7月3日 AITCオープンラボ 量子コンピューティング シリーズ第3回 ~日立製作所様における取り組み紹介~
2019年7月3日 AITCオープンラボ 量子コンピューティング シリーズ第3回 ~日立製作所様における取り組み紹介~
aitc_jp
 
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
Akira Shibata
 
Robot frontier lesson2 2018
Robot frontier lesson2 2018Robot frontier lesson2 2018
Robot frontier lesson2 2018
Ryuichi Ueda
 
PILCO - 第一回高橋研究室モデルベース強化学習勉強会
PILCO - 第一回高橋研究室モデルベース強化学習勉強会PILCO - 第一回高橋研究室モデルベース強化学習勉強会
PILCO - 第一回高橋研究室モデルベース強化学習勉強会
Shunichi Sekiguchi
 

Similar to PARI/GPの話 @ Ph/shh/bin CTF勉強会LT (20)

El text.tokuron a(2019).watanabe190613
El text.tokuron a(2019).watanabe190613El text.tokuron a(2019).watanabe190613
El text.tokuron a(2019).watanabe190613
 
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
 
katagaitaictf7_hw_ysk
katagaitaictf7_hw_yskkatagaitaictf7_hw_ysk
katagaitaictf7_hw_ysk
 
4bit-CPU : TD4の解説
4bit-CPU : TD4の解説4bit-CPU : TD4の解説
4bit-CPU : TD4の解説
 
20220525_kobayashi.pdf
20220525_kobayashi.pdf20220525_kobayashi.pdf
20220525_kobayashi.pdf
 
More modern gpu
More modern gpuMore modern gpu
More modern gpu
 
GPUサーバーたくさん使うのいいけど置く場所とかどうするの?的なお話
GPUサーバーたくさん使うのいいけど置く場所とかどうするの?的なお話GPUサーバーたくさん使うのいいけど置く場所とかどうするの?的なお話
GPUサーバーたくさん使うのいいけど置く場所とかどうするの?的なお話
 
Tuning, etc.
Tuning, etc.Tuning, etc.
Tuning, etc.
 
200521material takahashi
200521material takahashi200521material takahashi
200521material takahashi
 
CMSI計算科学技術特論B(10) 大規模MD並列化の技術1
CMSI計算科学技術特論B(10) 大規模MD並列化の技術1CMSI計算科学技術特論B(10) 大規模MD並列化の技術1
CMSI計算科学技術特論B(10) 大規模MD並列化の技術1
 
200528material takahashi
200528material takahashi200528material takahashi
200528material takahashi
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
 
Lagopusで試すFirewall
Lagopusで試すFirewallLagopusで試すFirewall
Lagopusで試すFirewall
 
kagamicomput201814
kagamicomput201814kagamicomput201814
kagamicomput201814
 
電子動力学アプリケーションの最適化2
電子動力学アプリケーションの最適化2電子動力学アプリケーションの最適化2
電子動力学アプリケーションの最適化2
 
2019年7月3日 AITCオープンラボ 量子コンピューティング シリーズ第3回 ~日立製作所様における取り組み紹介~
2019年7月3日 AITCオープンラボ 量子コンピューティング シリーズ第3回 ~日立製作所様における取り組み紹介~ 2019年7月3日 AITCオープンラボ 量子コンピューティング シリーズ第3回 ~日立製作所様における取り組み紹介~
2019年7月3日 AITCオープンラボ 量子コンピューティング シリーズ第3回 ~日立製作所様における取り組み紹介~
 
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
 
2016-ShowNet-PTP (Precision Time Protocol)
2016-ShowNet-PTP (Precision Time Protocol)2016-ShowNet-PTP (Precision Time Protocol)
2016-ShowNet-PTP (Precision Time Protocol)
 
Robot frontier lesson2 2018
Robot frontier lesson2 2018Robot frontier lesson2 2018
Robot frontier lesson2 2018
 
PILCO - 第一回高橋研究室モデルベース強化学習勉強会
PILCO - 第一回高橋研究室モデルベース強化学習勉強会PILCO - 第一回高橋研究室モデルベース強化学習勉強会
PILCO - 第一回高橋研究室モデルベース強化学習勉強会
 

Recently uploaded

NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
You&I
 
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
ooishi1
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
fisuda
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
You&I
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
yamamotominami
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
Yoshitaka Kawashima
 
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor
 

Recently uploaded (7)

NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
 
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
 
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
 

PARI/GPの話 @ Ph/shh/bin CTF勉強会LT

Editor's Notes

  1. https://goo.gl/#analytics/goo.gl/Qab0N0/all_time