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
楕円曲線暗号で学ぶ、暗号理論の基礎
Search
mtdkki
June 26, 2018
0
140
楕円曲線暗号で学ぶ、暗号理論の基礎
mtdkki
June 26, 2018
Tweet
Share
Featured
See All Featured
Navigating Team Friction
lara
187
15k
Practical Orchestrator
shlominoach
188
11k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Six Lessons from altMBA
skipperchong
28
3.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Transcript
楕円曲線暗号で学ぶ、暗号理論 の基礎
@mtdkki • 2017/3 一橋大学中退 • 2017/4 〜 一年間ヒモするなどして生き延びる • 2018/6
〜 Gunosyでインターンさせて貰ってます • Zk-SNARKsを含めた暗号理論のリサーチを担当中
プレゼンの目的 • 暗号理論の勉強意義について知ってもらう • 暗号理論に関する基礎知識を知ってもらう • 暗号理論を理解するために必要な知識が何なのかを知ってもらう
結論 ブロックチェーン技術で活用されている暗号化技術を理解するには、 数学的な理論への理解は避けては通れない ...!! 数学 基礎的な暗号技 術 難しめの 暗号技術 ZkSNARKsなど
フロー 1. ブロックチェーンにおける、暗号技術の役割 2. ざっくりと署名アルゴリズムについて 3. 暗号化アルゴリズムと一方向性関数について 4. 楕円曲線暗号について 5.
暗号化技術を理解するためのロードマップ
ブロックチェーン における、 暗号技術の役割
ブロックチェーン を支える基盤的技術として • ECDSA … BTCの送金時の正当性の認証を するデジタル署名アルゴリズム。楕円曲線暗 号を使う。 • ハッシュ関数 … ブロックの改竄を検知するた めに使われている ブロックチェーンにおける、暗号技術の役割
より便利な機能を実装するための技術として • Zk-SNARKS … Z Cashにおける匿名での送 金を実装するために使われている。 Ethereum でも実装された。 • スケーラビリティ問題解決のポテンシャル … より高速・軽量にTxを認証できるようになるか もしれない。 大きく2つ!!
ECDSA(Elliptic Curve Digital Signature Algorithm) Bitcoinなどの暗号通貨の送金時に使われる、送金者の正当性を確かめるた めのアルゴリズム。 ⇒ECDSAが無ければ、安全な送金が出来ず、暗号通貨は成立しない ECDSA =
アドレスに対応する正当な秘密鍵を 持っている人だけが送金できるよって仕組み
楕円曲線暗号とECDSAの関係 ECDSA 署名アルゴリズム:秘密鍵と公開鍵を使った認証を実装 楕円曲線暗号:秘密鍵と公開鍵を作る暗号化アルゴリズム
ざっくり署名アルゴリズム
署名アルゴリズムとは? • 1. 暗号化アルゴリズムを使って、秘密鍵から公開鍵 を作り出す。 • 2. 公開鍵(アドレス)に対応する秘密鍵を含む署名を 正当とする •
公開鍵から秘密鍵を推測出来ないようなアルゴリズ ムが必要(ECDSAの場合は、楕円曲線暗号 ) 秘密鍵 公開鍵 (アドレス) 暗号化アルゴリズム この暗号化アルゴリズムがほし い!!
暗号化アルゴリズムと一方向性関数
現代の暗号化アルゴリズム=数学 現代暗号 • 暗号化アルゴリズムを公開 • 逆算の計算量が安全性を保証 • 必要なのは、逆算困難な数学的問 題 古典暗号
• 暗号化アルゴリズムを秘匿 • アルゴリズムが知られていないこと が安全性を保証 • 必要なのは、バレにくい複雑なアル ゴリズム 逆算が非常に難しい関数を、 一 方向性関数と呼ぶ コンピュータの進 化
一方向性関数 離散対数問題 素因数分解問題 RSA暗号等 剰余系の離散対数 問題 楕円曲線上の離散対 数問題 ElGamal暗号等 楕円曲線暗号等
主要な一方向性関数による現代暗号技術の分類 ポイント • 現代暗号アルゴリズム はどれかの一方向性 関数に属している • 逆に言うと、一方向性 関数があれば、現代暗 号アルゴリズムが作れ る 整数論を使う 群論を使う
楕円曲線暗号における離散対数問題
離散対数問題のざっくりとした定義 y, g を整数とし、* を任意の二項演算子とする。 y = g * g
* g * …… 与えられたyとgに対してこの等式が成り立つ時、演算が何回行われたかを求めることを、離散対数問題と呼び ます。 離散対数問題 比較的簡単な問題 ポイント • 二項演算だけ定義 すれば良いので簡 単そう • 一方向性関数の 性質を満たしてい ることが多い 例: 125 = 5 * 5 * ... ➡ 3回
楕円曲線とは 楕円曲線の便利な性質 • 1 楕円曲線上の二点を通る交線 • 2 楕円曲線上の一点を通る接戦 が、必ず楕円曲線上のもう一点と交わる 楕円曲線上で二項演算が定義できる
y^2 = x^3 + ax + b
楕円曲線における加算 • 右図は、P + Q = Rを示している • PとQを通る直線と楕円曲線との交点 R'を
x軸に対して反転させた点が R • わざわざ反転させているのは、 R'を演算 結果Rとすると、P=Q=Rとなってしまうか ら • 楕円曲線は、x軸に対して線対称なので、 R'が存在するならばRも必ず存在する。
楕円曲線における倍算 加算と同様です。 右図は、2 * P = Rを示しています。
楕円曲線における離散対数問題① R = P + P + … = N
* P PとNが与えられた時、Rを求めるには、 2P = P * 2 4P = 2P * 2 5P = 4P + P ... と言ったように、演算の工夫をすることで、比較的少ない計算量(おおよそlog2N)で求めることが出来る。 離散対数問題と同じ形 N=100の場合は、7回!! ゴールは、秘密 鍵から公開鍵を 一方向に作るア ルゴリズムを作 ること
楕円曲線上の離散対数問題② R = P + P + … = N
* P RとPが与えられた状態でNを求めるには、N回総当たりで調べるしかない (演 算の工夫が出来ないから)。 このことから、Nをものすごく増やした時、楕円曲線上の離散対数問題は、 計 算量的に逆算不可能!! N=100の場合、100回!! 秘密鍵から公開鍵を作れる!!
今までの話をまとめると 楕円曲線暗号で 秘密鍵と公開鍵を 安全に作れる 秘密鍵と公開鍵を 使って、署名アル ゴリズムによる認 証が出来る Bitcoinなどで、安 全な送金を行うこ
とが出来る
暗号理論を理解するためのロードマッ プ
数学 群論 一方向性関数を利用す るために演算や集合を 色々工夫しよう 整数論 素数の性質を利用した りして、一方向性関数 を見つけたりしよう 基礎的な暗号技術
RSA暗号・Elgamal暗号 ・楕円曲線暗号など 難しめの 暗号技術 ZkSNARKsなど
ご静聴ありがとうございました