GGH 暗号方式
この項目「GGH 暗号方式」は翻訳されたばかりのものです。不自然あるいは曖昧な表現などが含まれる可能性があり、このままでは読みづらいかもしれません。(原文:en:GGH_encryption_scheme) 修正、加筆に協力し、現在の表現をより自然な表現にして下さる方を求めています。ノートページや履歴も参照してください。(2016年8月) |
Goldreich–Goldwasser–Halevi (GGH) 格子暗号方式とは、格子に基づく非対称方式のひとつである。GGH 署名方式も存在する。
Goldreich–Goldwasser–Halevi (GGH) 暗号方式では、最近ベクトル問題の困難性を利用している。格子基底縮小の難しさに依存する落とし戸付き一方向関数を用いており、1997年に Oded Goldreich, Shafi Goldwasser, Shai Halevi により発表された。この一方向性関数は、格子の基底が与えられたときに格子点の近くのベクトルを生成するのは簡単だが(例えば格子点を選んで小さな誤差ベクトルを足せばよい)、この誤差を含んだベクトルから元の格子点を得るには特別な基底が必要である、というアイデアに基づいている。
GGH 暗号は Phong Q. Nguyen により1999年に暗号解読された。
暗号方式
[編集]鍵生成
[編集]GGH 暗号では、次の秘密鍵と公開鍵を用いる。
秘密鍵は,格子 の"良い性質を持つ"基底 と、ユニモジュラ行列 である。"良い性質"とは、基底が短く、ほとんど直交しているなどの性質である。
公開鍵は、格子 L の別の基底 である。
暗号化
[編集]平文空間は一定の M に対して −M < λi < M を満たす整数ベクトル (λ1, ..., λn) である。
平文が m = (λ1, ..., λn) 、公開鍵が であるとき、まず次のように計算する。
これは行列記法を使えば以下のように書ける。
が整数値からなり、各 が格子点であるから、 も格子点となる。次に、小さな誤差ベクトル を選び、暗号文は次のように計算される。
復号
[編集]暗号文を復号するには、次のように計算する。
が十分に小さいならば、Babai 丸め法を用いることでこの項を除去することができる。最終的に次のように平文を計算できる。
例
[編集]L ⊂ ℝ2 を、以下のような基底 B とその逆 B−1 をもつ格子とする。
- ,
くわえて、
- および
とすると、以下を得る。
平文を m = (3, −7) とし、誤差を e = (1, −1) とすると、以下のように暗号文を得る。
これを復号するには、次の計算を行う。
これを丸めると (−15, −26) が得られ、次のように平文を得ることができる。
方式の安全性
[編集]1999年、Nguyen は国際会議 Crypto にて GGH 暗号方式には方式設計上の欠陥があることを示した。暗号文から平文の一部が漏れること、および、GGH暗号の復号問題が、一般の最近ベクトル問題よりも格段に容易な特別の最近ベクトル問題に帰着できることが示された。
参照文献
[編集]- Oded Goldreich, Shafi Goldwasser, and Shai Halevi. Public-key cryptosystems from lattice reduction problems. In CRYPTO ’97: Proceedings of the 17th Annual International Cryptology Conference on Advances in Cryptology, pages 112–131, London, UK, 1997. Springer-Verlag.
- Phong Q. Nguyen. Cryptanalysis of the Goldreich–Goldwasser–Halevi Cryptosystem from Crypto ’97. In CRYPTO ’99: Proceedings of the 19th Annual International Cryptology Conference on Advances in Cryptology, pages 288–304, London, UK, 1999. Springer-Verlag.