Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Goでの楕円曲線暗号の実装

matumoto
December 13, 2022

 Goでの楕円曲線暗号の実装

2022/12月に行われたDMM.go #5での発表資料です

イベントレポートはこちら
https://inside.dmm.com/entry/2022/12/23/dmmgo-5

イベントページはこちら
https://dmm.connpass.com/event/267787/

matumoto

December 13, 2022
Tweet

More Decks by matumoto

Other Decks in Technology

Transcript

  1. 楕円曲線暗号とは? • 楕円曲線暗号の説明 楕円曲線暗号(だえんきょくせんあんごう、 Elliptic Curve Cryptography、ECC)とは、楕円曲線上の離散対数問題 (EC-DLP) の困難性を安全性の根拠とする 暗号。

    具体的な暗号方式の名前ではなく、楕円曲線を利用した暗号方式の総称 である。 (楕円曲線暗号 - Wikipediaより) → 楕円曲線は複数ある!
  2. DH鍵共有について • あらかじめ素数pと整数gを決めておく • アリスが秘密の値a, ボブが秘密の値bをもつ • A = g^a

    mod p • B = g^b mod p • を各自計算 • AとBを互いに渡す • A^b mod p ≡ B^a mod p が等しければ鍵共有が成立 • 数式的には g^ab mod p をお互い持っている状態
  3. DH鍵共有について • 秘密の値:a • 素数:p • 整数:g • アリス: •

    ボブ: A,B を計算して互いに共有 • 秘密の値:b • 素数:p • 整数:g • アリス: • ボブ:
  4. DH鍵共有について • 秘密の値:a • 素数:p • 整数:g • アリス: •

    ボブ: を公開鍵として使用できる! • 秘密の値:b • 素数:p • 整数:g • アリス: • ボブ:
  5. DH鍵共有の安全性 • でも、攻撃者が通信を盗聴してp,g,A,Bを持っていれば、g^abを求められそうじゃない? • →困難です • A = g^a から

    a を求めるのは難しい(離散対数問題 (ECDLP)の困難性) • A, B から g^ab を求めるのは難しい(DH問題と呼ばれる困難性) • ただ、掛け算やべき乗を行うこと自体は簡単!(非対称性)
  6. ちなみに... • P+P = 2P • 2P + 2P =

    4P • というのが実は成り立つ • →結合法則が成り立っているため ◦ 証明は難しいので省略 P Q 2P
  7. さらにちなみに... • P, 2P, 3P, … 計算していくと、 nP = 無限遠点

    となる n が現れる nとなるような数はいくつかあるが、その中でも 最小の正整数を位数(Order)と呼ぶ • つまり、点は有限個 P Q 2P
  8. 0との足し算 • P+0 = Pという操作はできるのか? • →無限遠点という概念を導入するとできる • 無限遠点は果てしなく遠い点 •

    Pと無限遠点を結んだ直線がPと同じx座標にあ ればOK P Q はるか遠くにある無限遠点とつながっている
  9. 楕円曲線上の整数倍 • 加法をたくさんすればOK • ただし、実際の実装では計算量を抑えるために、繰り返し 2乗法を応用したものを使用する • 2P = P

    + P • 4P = 2P + 2P • 8P = 4P + 4P • …を利用して nP を素早く計算するというもの • このテクニックにより、nPを求める際は O(log n) 程度の計算回数で求められる
  10. 扱う数について • y^2 = x^3 + ax + b の

    y,x,a,bには実数とかが入るの?
  11. 有限体 • 有限体の定義 ◦ 有限個の数からなる集合と2つの演算+(加法)と・(乗法)が以下を満たす ▪ 集合内のa,bのa+bもa・bも集合内に存在する(閉じている) ▪ a+0=aとなるような、0が存在する(加法単位元) ▪

    a・1=aとなるような、1が存在する(乗法単位元) ▪ a+(-a)=0となるような、-aが存在する(加法逆元) ▪ a・a^(-1)=aとなるような、a^(-1)が存在する(乗法逆元) ◦ 簡単に言うと、四則演算ができる有限個の数の集合 ◦ mod Pの世界とか