Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Crypto講義資料
Search
palloc
March 27, 2016
Technology
2
14k
Crypto講義資料
CpawCTF勉強会のCrypto講義資料です。
palloc
March 27, 2016
Tweet
Share
More Decks by palloc
See All by palloc
スタートアップでAIを使うときの壁
palloc
0
1.5k
異常検知の最新事情と給与の話
palloc
4
4.5k
Other Decks in Technology
See All in Technology
LINEヤフー株式会社における音声言語情報処理AI研究開発@SP/SLP研究会 2024.10.22
lycorptech_jp
PRO
2
230
SREの前に
nwiizo
9
1.3k
生成AIと知識グラフの相互利用に基づく文書解析
koujikozaki
1
150
プロポーザルのつくり方 〜個人技編〜 / How to come up with proposals
ohbarye
4
280
Gradle: The Build System That Loves To Hate You
aurimas
2
170
Shift-from-React-to-Vue
calm1205
4
1.5k
【技術書典17】OpenFOAM(自宅で極める流体解析)2次元円柱まわりの流れ
kamakiri1225
0
250
Forget efficiency – Become more productive without the stress
ufried
0
190
VPC間の接続方法を整理してみた #自治体クラウド勉強会
non97
1
1k
ガバメントクラウド先行事業中間報告を読み解く
sugiim
1
1.9k
軽量DDDはもういらない! スタイルガイド本で OOPの実装パターンを学ぼう
panda_program
21
7.7k
ZOZOTOWNのホーム画面をパーソナライズすることの難しさと裏話を語る
f6wbl6
0
230
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
800
Scaling GitHub
holman
458
140k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
43
6.6k
YesSQL, Process and Tooling at Scale
rocio
167
14k
Unsuck your backbone
ammeep
668
57k
The Cost Of JavaScript in 2023
addyosmani
45
6.6k
A Tale of Four Properties
chriscoyier
156
23k
Producing Creativity
orderedlist
PRO
341
39k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
330
Designing for humans not robots
tammielis
249
25k
A Philosophy of Restraint
colly
203
16k
Transcript
$SZQUPߨٛ ぱろっく 1
ここまで本当にお疲れさまです! 2
Reversingでかなり疲れてると思いま す、難しいですよね。 3
これで最後なので 頑張っていきましょう! 4
講義概要 暗号とは[p5-] 換字式暗号(シーザー暗号)[p23-] 換字式暗号(ヴィジュネル暗号)[p29-] 公開鍵暗号(RSA暗号)[p52-]
参考資料[p73-] 5
暗号とは 通信相手以外の第3者に通信の内容を読まれないように する技術。 6
A君 Bさん 好きです! 付き合ってくださ い! 手 紙 Bさん の下駄 箱
C君 7
A君 Bさん 好きです! 付き合ってくださ い! 手 紙 Bさん の下駄 箱
C君 A君はBさんの ことが好き だったのか! 8
暗号化すると? 9
A君 Bさん 魚けぼすまげあ! ばばぐとろぢざぴむ ん! 手 紙 Bさん の下駄 箱
C君 何言ってんだ こいつ 10
暗号とは 通信相手以外の第3者に通信の内容を読まれないように する技術。 英語では「Cryptograph」「Cipher」。 CTFではよくcrypto(クリプト)と呼ばれています。 11
暗号に似ている技術も紹介 12
ハッシュ関数 入力したデータを表す数値(ハッシュ値)を返す関数。 データ検索の高速化やデータ改ざんの検知に用いられる。 13
暗号学的ハッシュ関数 情報セキュリティで用いるのに適しているハッシュ関数。 同じハッシュ値が事実上生まれない必要がある。 ハッシュ値から元のデータを求められない必要がある。 14
暗号学的ハッシュ関数の例 MD5…128bitのハッシュ値を作る。 「aaa」 47bce5c74f589f4867dbd57e9ca9f808 SHA-1…160bitのハッシュ値をつくる。 「aaa」
7e240de74fb1ed08fa08d38063f6a6a91462a815 15
暗号とハッシュ関数 文章を読めなくするという行為自体は同じ。 暗号は、復号して元のデータをよむのが目的だが、ハッ シュ値は、元のデータに戻せない。 16
では、どんな暗号があるか 見ていきましょう。 17
暗号の種類 古典暗号 換字式暗号 : 別の文字を割り当てる暗号 転置式暗号 :
文字を並び替える暗号 現代暗号 共通鍵暗号 : 一つの鍵で暗号化&復号する暗号 公開鍵暗号 : 暗号化と復号でそれぞれ別の鍵を 使う暗号 18 ※大雑把に分類しています。
暗号の種類 古典暗号 換字式暗号 : 別の文字を割り当てる暗号 転置式暗号 :
文字を並び替える暗号 現代暗号 共通鍵暗号 : 一つの鍵で暗号化&復号する暗号 公開鍵暗号 : 暗号化と復号でそれぞれ別の鍵を 使う暗号 19 ※大雑把に分類しています。
まずは、換字式暗号 20
換字式暗号の種類 単一式換字 シーザー暗号 多表式換字 ヴィジュネル暗号 21
換字式暗号の種類 単一式換字 シーザー暗号 多表式換字 ヴィジュネル暗号 22
シーザー暗号 古代ローマの指導者カエサルが使い始めた。 シンプルなため、軍事目的では使わず、私的な通信で用い られていた。 23
シーザー暗号 それぞれの文字をアルファベット順に従って鍵の数だけず らす暗号。 24 画像引用元:wikipedia 鍵=3
シーザー暗号 flag is simple_crypto synt vf fvzcyr_pelcgb 25 暗号化(鍵=13)
シーザー暗号 アルファベット以外は無視することが多い。 鍵が26通りしかないためブルートフォース(総当り攻撃)が 容易。 26
シーザー暗号 CTFでは、頻度分析ができないくらい短い文字列を見かけ たらシーザー暗号を疑ってみるべき。 ※頻度分析…文章に出てくるアルファベットの出現頻度を調べること。英 語の文章では、出現頻度の高いアルファベットがある程度決まっているの で、頻度分析から暗号を解読する手法がある。 27
換字式暗号 単一式換字 シーザー暗号 多表式換字 ヴィジュネル暗号 28
ヴィジュネル暗号 ヴィジュネルさんが作った暗号。 単一換字式暗号が安全じゃないよって言われ始めたため 開発された。 変換表と鍵を元に、平文を暗号化する。 29
ヴィジュネル暗号 暗号化:ヴィジュネル方陣に鍵と平文を一文字ずつ当ては め、対応する文字を並べたものを暗号文とする。 復号:暗号化の手順を暗号文と鍵を元にたどる。 30
ࢀߟ ϰΟδϡωϧํਞ 31 引用元: wikipedi a
各 行 ー ー 暗 号 ࢀߟ ϰΟδϡωϧํਞ 32
文で説明しても分かりづらいので、具 体例を見ていきましょう。 33
ヴィジュネル暗号 平文 : FLAG 鍵 : TEA とする。 ヴィジュネル方陣を使い暗号化する。 34
1文字目 : 平文 FLAG 鍵 TEA 35
1文字目 平文=「F」 鍵=「T」 36
2文字目 : 平文 FLAG 鍵 TEA 37
2文字目 平文=「L」 鍵=「E」 38
3文字目 : 平文 FLAG 鍵 TEA 39
3文字目 平文=「A」 鍵=「A」 40
4文字目 : 平文 FLAG 鍵 TEA 41
4文字目 平文=「G」 鍵=「T」 42
暗号文:「YPAZ」 43
ヴィジュネル暗号 暗号文と鍵を一文字ずつヴィジュネル方陣に当てはめると、 FLAGという文字列になる。 鍵長を変えれば無限に鍵が存在することになり、解読は難 しいとされていた。 44
暗号の種類 古典暗号 換字式暗号 : 別の文字を割り当てる暗号 転置式暗号 :
文字を並び替える暗号 現代暗号 共通鍵暗号 : 一つの鍵で暗号化&復号する暗号 公開鍵暗号 : 暗号化と復号でそれぞれ別の鍵を 使う暗号 45 ※大雑把に分類しています。
公開鍵暗号 公開鍵、秘密鍵という2種類の鍵を用意する。 暗号化する際は公開鍵、復号する際は秘密鍵で行う。 46
①公開鍵を渡す(他人に見られても問題無い) ②公開鍵で暗号化する ③暗号文を送る(傍受されても読めない) ④秘密鍵で復号する ެ։⓻҉߸ํࣜͷྲྀΕ 47
公開鍵暗号の種類 ElGamal(エルガマル)暗号 RSA暗号 楕円曲線暗号 48
CTFによく出る公開鍵暗号は? 49
公開鍵暗号の種類 ElGamal(エルガマル)暗号 RSA暗号 楕円曲線暗号 50
RSA暗号 公開鍵暗号。 現在バリバリ現役で活躍している暗号。 CTFでよく出題される暗号の一つ。(攻撃手法が沢山ある) 51
ここから数学のお話を少しだけ。 数学が苦手な方もいると思いま すが、頑張って下さい! 52
RSA暗号の仕組み 53
RSA暗号(鍵生成編) ① 素数を2つ用意する。(p,qとする) ② とする。 ③ と互いに素な数(最大公約数が1となる 数)eを決める。 ④ 公開鍵完成。( n
と e の2つ) 54 n = p×q φ(n) = (p−1)(q −1) (p−1)×(q −1) ※よく、いろいろなサイトで と表現 します。これは、オイラーの関数と呼ばれるものです。
RSA暗号(鍵生成編) ⑤ 秘密鍵をdとする。 ⑥ dを以下のように設定する。 ⑦ ↑を式変形して、↓の式を作る。 ⑧ 拡張ユークリッド互除法によりdを求める。 ⑨
秘密鍵完成。 55 ed ≡1(mod(p−1)(q −1)) ed +φ(n)(−x) =1 ※詳細は参考1[p74] ※詳細は参考2,3[p75,76]
RSA暗号(暗号化編) ① 平文をxとし、暗号文をcとする。 ② となる。 ③ おわり。 56 c =
xe modn
RSA暗号(復号編) ① となる。 ②おわり。 57 x = cd modn
RSA暗号 仕組みは以上です。 式だけでは理解しづらいので、具体的な例を見ていきましょ う。 58
RSA暗号 平文c=26とする。 各パラメータを、以下のようにする。 59 p = 5,q =11,e =
3 n = p×q n = 55
RSA暗号 秘密鍵dを求める。 60 ed ≡1(mod(p−1)(q −1)) 3d ≡1(mod40) d =
27
RSA暗号 公開鍵e,nを使い暗号文cを作る。 暗号化完了! 61 c = 263 mod55 c =
31
RSA暗号 次はこれを復号していきます。 といっても、秘密鍵dの数だけ累乗するだけ。 無事復号完了! 62 x = 3127 mod55 x
= 26
なぜRSA暗号は安全なのか 復号するには秘密鍵dが必要。 dを求める式は、 eは公開鍵なので、pとqが必要。 63 ed ≡1(mod(p−1)(q
−1))
なぜRSA暗号は安全なのか p,qはどこで使われているのか→公開鍵n 攻撃者はnを素因数分解できれば解読できる。 64 n = p×q
なぜRSA暗号は安全なのか p,qはどこで使われているのか→公開鍵n 攻撃者はnを素因数分解できれば解読できる。 65 巨大な数の素因数分解は困難! n =
p×q
RSA暗号への攻撃手法 現在512bit程度までなら素因数分解が現実的な時間で可 能。 CTFで512bit以下の公開鍵nがあれば素因数分解がほぼ できる。 66
RSA暗号への攻撃手法 平文xが短く、 のとき、暗号文 のe乗根を求めて あげれば元に戻る。 eが3などの小さい数の時は、試してみるとよい。 67 xe
< n xe
RSA暗号への攻撃手法 攻撃手法は本当に沢山あります。 CTFでよく出題されるので、暗号やりたいなという方は調べ てみてください。 数学の知識が必要となる場合が多いので、先に数学を学 ぶことをお勧めします。 68
おすすめの参考書 情報数学の基礎 サイエンス社 暗号技術入門 SBCreative 暗号理論と楕円曲線 森北出版株式会社 69
以上です。お疲れさまでした! 70
参考資料 71
(参考1)式変形の詳細 (e× d) /φ(n) = x…1 ed ≡1(mod(p−1)(q −1)) e×
d = φ(n)× x +1 これは、eとdを掛け合わせたものをΦ(n)で割った 余りが1という意味なので、以下のようにかける。 φ(n) = (p−1)(q −1) と書くことができる。これを、式変形すると、 ed +φ(n)(−x) =1 72
ed +φ(n)(−x) =1 (参考2)拡張ユークリッド互除法できる? edとΦ(n)はそれぞれ定数なので、例えば以下のよ うな式と同じ形である。 5x + 21y =1
なので、拡張ユークリッド互除法によって、dとxが整 数となる組み合わせを探せばよい。 拡張ユークリッド互除法のやり方については、次頁 を参照。 73
23x + 7y =1 (参考3)拡張ユークリッド互除法の例 上の式を満たす整数の組み合わせ(x,y)を求める。 式の意味などは省略する。 23/ 7 =
3...2 7 / 2 = 3...1 2 /1= 2...0 74 2 = 23− 7×3 1= 7− 2×3 1= 7−(23− 7×3)×3 1= 23×(−3)+ 7×10 23×(−3)+ 7×10 =1 x = −3, y =10 代入
付録 75
擬似乱数のお話 76
擬似乱数 プログラムによる計算などによって求めている擬似乱数列 による乱数。 擬似乱数を作るアルゴリズムを擬似乱数生成法、擬似乱 数を作る機械やプログラムを擬似乱数生成器と呼ぶ。 77
暗号論的擬似乱数 過去の乱数から、次の乱数を予測できないような擬似乱数 列のこと。 暗号で用いる鍵を作成するときは、暗号論的擬似乱数でな くてはならない。 CTFではわざと暗号論的擬似乱数を用いないで、鍵を推測 させる問題が出ることがある。
78
主な古典的擬似乱数生成法 平方採中法(2乗中抜き法) 線形合同法 79
主な古典的擬似乱数生成法 平方採中法(2乗中抜き法) 線形合同法 80
平方採中法 最初の数値を適当に定める。 その値を2乗し、間にある必要な桁数を次の乱数とする。 桁数が足りない時は最上位に0をつける。 81
平方採中法 3桁の乱数を4つ作ってみる。 46212 = 21353641 35362 =
12503296 50322 = 25321024 32102 = 10304100 乱数列[3536, 5032, 3210, 3041] 82
主な古典的擬似乱数生成法 平方採中法(2乗中抜き法) 線形合同法 83
線形合同法 以下の漸化式で与えられる乱数列。 A>0, B≧0, M>A, M>B 84 (A×
X n + B)modM = X n+1
線形合同法 A=13,B=57,M=89とする。 シードX 0 を12とすると、X 1 は、
このようにして、乱数を求めていく。 85 (13×12 + 57)mod89 = X 1 X 1 = 35
近年の擬似乱数 線形合同法などは、周期が短いなどの欠点がある。 そのため、メルセンヌ・ツイスタなど新しい擬似乱数が開発 されている。 86
メルセンヌ・ツイスタ http://www.math.sci.hiroshima-u.ac.jp/~m-mat/ MT/MT2002/CODES/mt19937ar.c メルセンヌ・ツイスタは2種類あって、主に使われているの はmt19937というアルゴリズム。 周期が219937-1ととても長い。
623個の今までに出現した数値があれば予測可能なため、 暗号論的ではない。 開発者のソースコード↑。 興味のある方は読んでみてください。 87