ライブ
ハッキング
出演者紹介
satos
hakatashi
ナン
CTFって何?
TSG CTF って?
TSG CTF 2020
- TSGが主催するCTF
- 7月11日~12日に開催
- 今年で2回目
Rubikrypto
ジャンル: Crypto
難易度: Easy
正答チーム数: 12チーム
みなさん、
ルービックキューブは
好きですか?
私は大好きで
す!!!!!!!!!!!
(クソデカ大声)
ルービックキューブ
- 普通に解いたり、
早く解いたりしても楽しい - が、ルービックキューブは
同時に数学者の「おもちゃ」
でもある - 数学的に「群」と呼ばれる
構造で表現できる
どういうこと???
ルービックキューブの「状態」の
足し算を考えてみる
R
U
R U
ルービックキューブの「状態」の
足し算を考えてみる
D B' U D' R L B R D L2 B L2 F R2 U2 F2 L2 F' L2 F2 R2
L' B' U2 R2 B2 D' R2 D' R2 D' L2 B2 D R B2 F2 U2 B' D2 F2
F2 D F2 L2 D' R2 F2 U F2 U' B2 U' R' F L2 B L' U B R' F2
かけ算も考えられる
F
F
F2
かけ算も考えられる
F
F2
出題した問題は
このルービックキューブ群上で
ElGamal暗号を実装したもの
公開鍵 \((G,q,g,h)\)、秘密鍵 \(x\)、\(h=g^x\)
- 暗号化
- \(r:=\text{乱数}\)
- \((c_1,c_2)=(g^r,m\cdot h^r)\)
- 復号化
- \(m=c_2\cdot (c_1^x)^{-1}\)
つまりどういうことか
- 秘密の数 \(x\) がある
- \(x\) の大きさは数千京くらい
-
あるルービックキューブ \(g\) があり、
\(g\) を \(x\) 倍して \(h\) にする - \(g\) と \(h\) から \(x\) を復元できるか?
このような問題は
「離散対数問題」と呼ばれ、
一般には解けない
- 効率的に解くアルゴリズムが知られていない
- え、じゃあ解けないじゃん⋯⋯
実は簡単!
ルービックキューブを触ってみよう
- 揃ったルービックキューブに
「同じ手順」を繰り返し行っていくと、
わりとすぐにもとの揃った状態に戻る- Sexy Move (R U R' U'): 6回
- Sune (R U R' U R U2 R'): 6回
- 実は、この回数はルービックキューブでは
たかだか1260回であることが知られている
つまりどういうことか
- 数千京回も足し算しなくても、
1260回ほど足し算すれば元の値に戻ってくる - 1回のループの中には必ず目的の値が入っている
- \(h=g^x\) を満たす \(x\) (秘密鍵) が求まる
- →解ける!!!!
ポイント
- ルービックキューブ群という未知の対象にも
数学力を駆使して対処できるか - 一般に暗号に使われる「良い性質を持つ群」の
常識にとらわれず柔軟に考えられるか - バグらせずに実装できるか
satos
ナン
ありがとう
ございました!
TSG LIVE! 5 ライブハッキング
By Koki Takahashi
TSG LIVE! 5 ライブハッキング
- 1,250