NTRU暗号とは、公開鍵暗号の一つである。 1996年にJeffrey Hoffstein, Jill Pipher, Joseph H. SilvermanがCRYPTO'96のRump Sessionで発表した。2000年にNTRU Cryptosystems社が米国で特許を取得している。 多項式環を用いて定義された格子の最短ベクトル問題が困難と予想されることを基にしているが、実際に帰着出来るか否かは未解決問題である。
N をセキュリティパラメータとする。 Z[X]で整数係数の多項式環を表す。(XN-1)をXN-1が生成するイデアルとする。 環Rを Z[X]/(XN-1) とする。以下、⊗で R の要素の積を表す。 q を O(N) の整数とし、p を環R中の小さい要素とする。(2, 3, 2+X等が用いられる。) また, Lf, Lgを R の係数が小さい部分集合とする。
公開鍵は h、秘密鍵はfである。
平文空間Lm、乱数空間Lrを R の係数が小さい部分集合とする。 Lm中の平文mとLr中の乱数rを用いて、c = h ⊗ r + m mod q を計算し、cを出力する。
cを暗号文とする。 まずa = f ⊗ c mod q を計算する。次に、aの係数を[-q/2,q/2]の範囲に収め、それをa' とする。最後に、m' = Fp ⊗ a' mod p を計算し、m' を出力する。
である。 上手くパラメータを調節すると、Z上で
が高い確率で成立する。 この等式が成立している場合、
となる。
Tで係数が1, 0, -1のN-1次以下の多項式の集合を表す。 T(d)で、係数が1, 0, -1かつ、1と-1の個数がdのN-1次以下の多項式の集合を表す。 IEEE P1361.1/D10では例えば以下のようにパラメータ集合が定められている。
実用の際にはRSA暗号と同様にパディングを行うことが推奨されている。