ライブ
ハッキング

出演者紹介

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,267