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

Mathematics used in cryptography around us

herumi
December 08, 2024

Mathematics used in cryptography around us

東京理科大学 共創の場「数理科学と社会連携」2024/12/7
身の回りの暗号と数学

herumi

December 08, 2024
Tweet

More Decks by herumi

Other Decks in Education

Transcript

  1. 会社紹介 サイボウズ 情報共有を通じてチームワークを促進させる ソフトウェアの開発・クラウドサービスの提供 社員1000人以上 主な製品・サービス kintone : 自分たちで業務アプリが作れるサービス サイボウズOffice/Garoon

    : グループウェア サイボウズ・ラボ 中長期視点で、次世代の製品・サービスの基盤となる 技術の研究開発活動 10名ほど サイボウズの子会社で極めて自由度の高い研究環境 2 / 24
  2. 自己紹介 サイボウズ・ラボで暗号と高速化のR&D 『暗号と認証のしくみと理論がしっかりわかる教科書』 (技術評論社 2021)暗号の入門書 OSS (Open Source Software) 開発

    x86/x64用JITアセンブラ Xbyak ペアリング暗号・BLS署名ライブラリ mcl/bls 受賞など Google Open Source Peer Bonus受賞 (2024/6) Microsoft MVP C++, Developer Seucirty受賞 (2024/7) Ethereum Foundation Grant獲得x2 (2024/8) 3 / 24
  3. 盗聴不可 改竄不可 1000円の⽀払い 1000円の⽀払い 10000円の⽀払い 本物 偽物 身の回りの暗号 ブラウザでの暗号通信 パソコン・スマートフォンからブラウザを使った

    Webサイトへのアクセス 情報収集・SNS・買い物・ビデオ会議など HTTPS(HTTP over TLS)を使った通信 URLが「https://」で始まるもの TLS (Transport Layer Security) 様々な暗号技術の組み合わせ 通信内容が盗聴されない 通信内容が改竄されない 通信相手が本物であることを確認できる 4 / 24
  4. クライアント サーバ 署名の検証 鍵共有開始 鍵共有開始 暗号化開始 / 公開鍵証明書・署名送信 暗号化開始 /

    公開鍵証明書・署名送信 本来の暗号化通信 本来の暗号化通信 クライアント サーバ TLS1.3の大まかな流れ 鍵共有 クライアントとサーバが秘密の鍵を共有する 署名 サーバが本当に正しいサーバであることを示す AEAD 共有した秘密鍵を用いて改竄不可能な暗号通信を行う 5 / 24
  5. クライアント サーバ 秘密鍵 a を⽣成し A = aP とする 秘密鍵

    b を⽣成し B = bP とする 共有鍵 K = aB を計算 共有鍵 K = bA を計算 A を送信 A を送信 B を送信 B を送信 クライアント サーバ 鍵共有 盗聴可能な経路で秘密の情報を共有する 現在、楕円曲線を利用したものが主流 楕円DH (Diffie-Hellman) 鍵共有 セットアップ 有限体 上の楕円曲線 と素数位数 の点 を固定する 共有 クライアントは乱数 を選び を送信 サーバは乱数 を選び を送信 クライアントは を計算, サーバは を計算して同じ値を共有 6 / 24
  6. それで安全なのか? 攻撃者(盗聴者)が持つ情報 楕円曲線と位数 の点 攻撃者が欲しい情報 と から原理的には を求められる( も同様) そうすれば

    も分かってしまう もしかしたら , を求められなくても直接 を求める方法があるかもしれない 7 / 24
  7. 問題の定式化 楕円曲線上の離散対数問題 楕円曲線 とその点 と が与えられたときに を求める問題 ECDLP (Elliptic Curve

    Discrete Logarithm Problem) 楕円DH問題 (ECDHP) が与えられたときに を求める問題 ECDLPとECDHPの関係 ECDLP が解ければ ECDHP は解ける から ECDHP を解いて を求めて を求めればよい 逆は未解決問題 8 / 24
  8. 暗号の安全性評価 困難な問題に帰着する セキュリティパラメータ : 安全性を表すパラメータ に依存するある暗号の問題 と有名で難しい問題 があるとする を破るアルゴリズム があるとして、それを多項式回数呼び出して

    を解けた → が多項式時間アルゴリズムならば も多項式時間で解ける は を解かないといけないぐらい難しいと分かる ビット安全 秘密鍵が ビットならその鍵の種類は 通り 秘密鍵を調べるのに全数探索するしかないならば 回の試行が必要 このとき ビット安全という 現在は ぐらいあれば少なくとも数十年は安全とされる ECDLPは が256ビットあれば128ビットセキュリティと考えられる 10 / 24
  9. 楕円曲線のスカラー倍算 楕円曲線の点 と整数 に対して を求める では永遠に終わらない( は256ビット程度) バイナリ法 を2進数で表現する (

    ) ( を計算する(2倍していくだけなので 回でOK) なので となる だけ を加算する 演算コスト 2倍算(D) : 回 加算(A) : はランダムなので平均的に半分ぐらいが なので 回 合計 11 / 24
  10. GLV法 スカラー倍算における2倍算のコストを約半分にする BLS12-381曲線と呼ばれる楕円曲線を例に説明 定義方程式 . の位数 の部分群を とする は381ビットで ,

    は255ビット素数 を1の原始3乗根( )とし とする は の自己同型写像で、ある128ビット定数 が存在し . GLVによるスカラー倍算 に対して となる , を選ぶ ( ) と に対して同時にバイナリ法を適用する を計算すると は容易に計算できる(2倍算のコストを半分にできる) , の2進数展開 , が1である部分だけ加算する 12 / 24
  11. 鍵⽣成する 署名する 検証する データm 署名鍵s 検証鍵S 署名σ OK or NG

    署名者 検証者 署名 署名の流れ 鍵生成 署名者が署名鍵 と検証鍵 を生成 は誰にも見せてはいけない秘密鍵. は公開鍵 署名 データ から署名鍵 を用いて署名 を作成 検証 検証者は の組の正当性を確認 偽造防止 に対して正当な は署名者しか作れない 正当な署名 は署名者が を承認したことを示す ビットコインは楕円曲線を用いた署名を利用 13 / 24
  12. RSAの落とし戸つき一方向性関数 RSA関数の準備 , を大きな素数で とし , とする RSA関数の定義 に対して ,

    とする RSA関数の性質 が成り立つ(Fermatの小定理) 一方向性 : を知らなければ から を求めるのは困難(という仮定) 落とし戸 : を知っていれば を計算できる RSA関数を使った署名では を署名鍵(秘密鍵), を検証鍵(公開鍵)とする 14 / 24
  13. RSA関数を用いた署名の構成 暗号学的に安全なハッシュ関数 を固定し で次の問題が困難であるもの( は十分大きい) 第二原像計算 : が与えられたとき となる を見つける

    衝突 : となる のペアを見つける 一般に衝突を解くコストは なので、これより効率のよい方法があってはいけない RSASSA-PKCS1-v1_5 署名 メッセージ に対して を計算し を一つの整数とみなして( はある固定バイト列) とする 検証 を計算し、 を に分解して が正しく であることを確認 15 / 24
  14. RSA署名の安全性 RSA仮定 十分大きな素数 , に対してRSA関数の逆関数を求めるのは困難(ほとんどトートロジー) の素因数分解ができればRSA仮定は破れる 一般数体篩法で ( はほぼ1.9の定数) RSA仮定が破れても素因数分解ができるかは未解決問題

    RSASSA-PKCS1-v1_5はRSA仮定が成り立つなら安全と思われているが証明は無い 安全性証明のある RSASSA-PSS という方式もある 注意 数学の応用例としてRSA関数をそのまま公開鍵暗号方式として紹介されることが多いが、 全く安全ではないので使ってはいけない(例 : Enc for ) 一般的なインターネットの暗号通信ではRSA関数は署名アルゴリズムの一部で使われ、 公開鍵暗号方式として使われる場面は殆ど無い 16 / 24
  15. AEAD (Authenticated Encryption with Associated Data) 秘密鍵を使って暗号化と認証を同時に行う仕組み よく知られた暗号化は解読できなくても改竄される可能性がある 暗号化と暗号文が改竄されていないことを検証する認証を同時に行う AES-GCM,

    ChaCha20-Poly1305 などがある 利用される数学 や などの有限体 IntelのCPUには の乗算・除算を効率よくするための専用命令などがある GF2P8MULB : Galois Field Multiply Bytes The instruction multiplies elements in the finite field GF( ). 17 / 24
  16. 耐量子計算機暗号 (PQC : Post-Quantum Cryptography) 量子コンピュータ 古典コンピュータが0 or 1のビットを基本とするのに対して 量子コンピュータはqbitという量子ビットを利用する

    量子の重ね合わせの状態のまま計算し、最後に測定して結果を得る 特定の欲しい状態の確率が高くなるように計算を進める量子アルゴリズムの研究 楕円曲線暗号やRSA暗号に対する脅威 Shorのアルゴリズムを用いるとECDLPの解読が から の多項式時間に減る 素因数分解も同様に多項式時間になることが知られている 128ビットセキュリティを保てない PQC 量子コンピュータが実現しても安全な、古典コンピュータ上で実行できる暗号技術 18 / 24
  17. CRYSTALS-KYBER PQC標準化された公開鍵暗号・鍵交換方式の一つ FIPS 203 Module-Lattice-Based Key-Encapsulation Mechanism Standard 概要(ものすごくざっくりとしたもの) 鍵生成

    : 素数 , , , , , 公開鍵 : , 秘密鍵 : 暗号化 : に対して , , , 復号 : 暗号文 に対して . 元に戻ること ノイズ , , が小さく を適切にエンコードしていれば を取り出せる 19 / 24
  18. KEM (Key Encapsulation Mechanism) DH鍵共有の代わりに使う クライアント : 鍵生成を行い公開鍵をサーバに渡す サーバ :

    乱数 を選び渡された公開鍵で暗号化してクライアントに返す クライアント : 受け取った暗号文を秘密鍵で復号して乱数 を得る アプリやブラウザの対応 Apple iMessageがPQCに対応 2024/2/21 Google Chrome 124からML-KEMに対応 2024/3/23 20 / 24
  19. 安全性の根拠 LWE (Learning With Errors) 問題の困難さ 記号 : を からランダムに

    を選ぶこととする. . 自然数 を固定. を選び , , に対して と ( ) の分布は区別できない は小さい値を取るガウス分布(ノイズ) , とすると で と が既知 が なら が大きくなると逆行列を求めて が求まるので区別できる ノイズが入るとランダムな値と から決まる値を区別できなくなるという意図 効率的な量子アルゴリズムが知られていない 21 / 24
  20. DH鍵共有の一般化 DH鍵共有のポイント でECDH問題が困難 等質空間 : 有限可換群, 容易に計算可能な演算 が定義され の への作用が自由かつ推移的であるとする.

    すなわち for , の単位元 に対して 任意の に対して となる がただ一つ存在 hard等質空間と鍵共有 , から を計算するのが困難な等質空間 DH鍵共有と同様の方法で鍵共有が行える 22 / 24
  21. CSIDH鍵共有 構成法概略 を素数, , をイデアル類群とする を 上の超特異楕円曲線で となるものとする となる 上の楕円曲線

    ( 同型類) に対して , で作用を定義 これらが計算しやすいようにうまくパラメータや曲線を選ぶ 今のところ効率的な量子アルゴリズムは知られていない 23 / 24
  22. その他のトピック ペアリング暗号 楕円曲線のWeilペアリング (の派生写像)を使った暗号技術 双線形 for 高機能な署名 「私がある知識 を持っていることを を教えずに納得させる」ゼロ知識証明

    同種写像 CSIDHに限らず同種写像を用いた署名や公開鍵暗号方式の研究が進められている 格子暗号 LWE問題を使った暗号技術 準同型暗号 , 24 / 24