📑

QR-UOV 理解ログ 1/7

2022/06/07に公開

個人的に気になっている QR-UOV について理解したことをまとめていきます.

H. Furue, Y. Ikematsu, Y. Kiyomura and T. Takagi: "A New Variant of Unbalanced Oil and Vinegar Using Quotient Ring: QR-UOV", Asiacrypt’21, LNCS 13093 (2021), 187–217.

Chapter4の構成までを目標とします.

また,上記の初等的な構成として

H. Yasufumi: "An elementary construction of QR-UOV", Cryptology ePrint Archive, 2022.

も余裕があれば,解説します.

以下では,初めの論文を「QR-UOV 原著論文」・後の論文を「QR-UOV 初等的構成論文」と呼ぶことにします.

大雑把な流れは以下のとおりです:

第1回:QR-UOV 原著論文 2.1 2.2
第2回:QR-UOV 原著論文 2.3 2.4
第3回:QR-UOV 原著論文 3.1
第4回:QR-UOV 原著論文 3.1 3.2
第5回:QR-UOV 原著論文 4.1
第6回:QR-UOV 原著論文 4.2
第7回:QR-UOV 初等的構成論文

突貫で書いてしまった部分もあるので,大いに誤りを含む可能性があります.誤字・脱字レベルでも構いませんので,ご指摘ください.
また,予告なしに内容の加筆や構成の変更を行うことがありますが,読みやすくするためのものですので,ご容赦ください

全7回通しでの目次

第1回

  • 本論文全体の流れ
  • MQ問題
  • 多変数多項式暗号署名方式
  • UOV署名方式

第2回

第3回

第4回

第5回

第6回

第7回

本論文全体の流れ

  • どういう背景や課題・モチベーションがあって,
  • どのようなアイディアのもとで,
  • どのような結果が得られたのか
    を整理します.

背景・課題
耐量子計算機暗号(と考えられている)多変数多項式暗号の署名方式でUOV方式というものがあります.初めて提案されたのは1999年でもう20年以上前のことなのですが,公開鍵のサイズが大きいという課題があります.

アイディア
剰余環の要素を成分とするブロック行列によって,公開鍵のサイズを削減

結果
NIST PQC標準化プロジェクトでの security level3 での公開鍵のサイズが 85.8KB であり,第3Roundに残っている Rainbow と比較しても,1/3程度のサイズになりました

それらを元に各章を整理すると,次のようになります:

1章:イントロ
2章:前提知識
3章:剰余環の多項式行列
4章:QR-UOV 方式の提案
5章:Security Analysis
6章:提案パラメタ
7章:まとめ

つまり,2章と3章までが「準備段階」で,4章が一番言いたいことになります.
5章以降は扱わないので,4章の提案方式までを確認することになります.

MQ問題

何かしらの公開鍵暗号方式・電子署名方式を構成したいなら,NP困難な問題が必要になります.そこで,今回はMQ問題というものを使います.MQとは Multivariate Quadratic の略称で,つまり多変数の連立2次方程式系を考えます.


\underline{\mathrm{Def(MQ問題)}}
n, m, q を正整数として,\mathbb{F}_q なる有限体を考える.
\mathbb{F}_q 上の m 個の n 変数2次多項式系 \mathcal{P} = (p_1(x_1, \cdots, x_n), \cdots, p_m(x_1, \cdots, x_n))y \in \mathbb{F}_q^m が与えられたとき,P(x) = y なる x \in \mathbb{F}_q^n を求めよ.


MQ問題は n \sim m の際にNP困難であることが知られています(どのぐらいの近似を指すのかは要確認).

後で出てきますが,\mathcal{P} とは,\mathcal{P} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m なる写像と見ることができます.
これは,P(x) = y を見ると納得しやすいかと思います.より詳しく,もし,1次方程式系であれば,1 \leq \forall i \leq m に対して,

\begin{align*} p_i(x_1, \cdots, x_n) = p_{i1} x_1 + p_{i2} x_2 + \cdots + p_{in} x_n \hspace{10pt} p_{i1}, p_{i2}, \cdots , p_{in} \in \mathbb{F}_q \end{align*}

なる多項式を考えて,

\begin{align*} p_{i1} x_1 + p_{i2} x_2 + \cdots + p_{in} x_n = y_i \hspace{10pt} y_i \in \mathbb{F}_q \end{align*}

なる方程式を並べることで,

\begin{align*} \begin{cases} p_{11} x_1 + p_{12} x_2 + \cdots + p_{1n} x_n = y_1 \\ p_{21} x_1 + p_{22} x_2 + \cdots + p_{2n} x_n = y_2 \\ \vdots \\ p_{m1} x_1 + p_{m2} x_2 + \cdots + p_{mn} x_n = y_m \\ \end{cases} \end{align*}

を得ます.すると,

\begin{align*} \begin{pmatrix} p_{11} & p_{12} & \cdots & p_{1n} \\ p_{21} & p_{22} & \cdots & p_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ p_{m1} & p_{m2} & \cdots & p_{mn} \\ \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \\ \end{pmatrix} = \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \\ \end{pmatrix} \end{align*}

という表示を得ます.よって,

\begin{align*} \mathcal{P} \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \\ \end{pmatrix} = \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \\ \end{pmatrix} \end{align*}

と考えることで,\mathcal{P} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m とみなすことができます.

以上の議論は2次方程式系でも同じです.

多変数多項式暗号署名方式

初めに電子署名方式の定義を紹介します.

メッセージとは,気持ちとしては暗号文のことです.
メッセージ,なので m という記号を使いたいのですが,\mathcal{F} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m での次数 m と記号がバッティングするので,メッセージは M で表します.


\underline{\mathrm{Def(電子署名方式)}}
電子署名方式とは,次の3つ組のアルゴリズム(KeyGen, Sign, Ver)のこと:

  • 鍵生成アルゴリズム KeyGen (1^n) \mapsto (pk, sk)
    セキュリティパラメタ n を引数にとって,公開鍵 pk とそれに対応する秘密鍵 sk の組を出力する.

  • 署名アルゴリズム Sign (sk, M) \mapsto \sigma
    秘密鍵 sk とメッセージ M を受け取って,署名値 \sigma を出力する.

  • 検証アルゴリズム Ver (pk, \sigma, M) \mapsto b
    公開鍵 pk と署名値 \sigma,メッセージ M を受け取って,b \in \{ 0, 1 \} を返す.b = 1 なら有効な署名であり,b = 0 なら無効な署名とする.


Ver は verify の略です.
また,暗号化のときと同じく,(鍵が適切な定義域であれば)\mathrm{Ver}(pk, \mathrm{Sign}(sk, M), M) = 1 が成り立ちます.これが,電子署名方式が正当であることの定義です(暗号化のときと同じ).

さて,MQ問題に対して,次の写像の3つ組 (\mathcal{F}, \mathcal{S}, \mathcal{T}) を取ります.
\mathcal{F} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m
\mathcal{S} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^n で可逆かつ線型
\mathcal{T} : \mathbb{F}_q^m \rightarrow \mathbb{F}_q^m で可逆かつ線型

そして,これらはMQ問題の \mathcal{P} に対して,\mathcal{P} = \mathcal{T} \circ \mathcal{F} \circ \mathcal{S} とします.
\mathcal{S}, \mathcal{T} が可逆とは,それぞれ n \times n 行列,m \times m 行列として逆行列を持つ,ということです

イメージとしては,\mathcal{P} が公開鍵用の多変数多項式系で,\mathcal{F} が秘密鍵用の多変数多項式系であり,\mathcal{S}, \mathcal{T} でこれらを行き来できる,という感じです.

F の可逆性について

論文では,\mathcal{F} が可逆という条件がついています.n \times m 行列 \mathcal{F} が可逆とは,「ある m \times n 行列 A があって,\mathcal{F} A =I_n かつ A \mathcal{F} =I_m が成り立つ」こと,と考えられます.なんですが,n, m の選び方によっては,このような \mathcal{F} が存在しないこともあります.
なので,以降では,\mathcal{F} の可逆性は仮定せずに議論を進めます.より一般的な形,ということで.

線型性について

\mathcal{S}, \mathcal{T} の線型性はどこに効いてくるかについてです.\mathcal{P} として,

\begin{align*} \begin{pmatrix} p_{11} & p_{12} & \cdots & p_{1n} \\ p_{21} & p_{22} & \cdots & p_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ p_{m1} & p_{m2} & \cdots & p_{mn} \\ \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \\ \end{pmatrix} = \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \\ \end{pmatrix} \end{align*}

のように取るとします.また,\mathcal{F} として,

\begin{align*} \begin{pmatrix} f_{11} & f_{12} & \cdots & f_{1n} \\ f_{21} & f_{22} & \cdots & f_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ f_{m1} & f_{m2} & \cdots & f_{mn} \\ \end{pmatrix} \begin{pmatrix} x^{\prime}_1 \\ x^{\prime}_2 \\ \vdots \\ x^{\prime}_n \\ \end{pmatrix} = \begin{pmatrix} y^{\prime}_1 \\ y^{\prime}_2 \\ \vdots \\ y^{\prime}_m \\ \end{pmatrix} \end{align*}

のように取ります.もちろん,\mathcal{F}\mathbb{F}_q 上の m \times n 行列で,(x^{\prime}_1, x^{\prime}_2, \cdots, x^{\prime}_n)(y^{\prime}_1, y^{\prime}_2, \cdots, y^{\prime}_m) も共に \mathbb{F}_q 上のベクトルです.
すると,

\begin{align*} \mathcal{S} \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \\ \end{pmatrix} = \begin{pmatrix} x^{\prime}_1 \\ x^{\prime}_2 \\ \vdots \\ x^{\prime}_n \\ \end{pmatrix} \end{align*}

\begin{align*} \mathcal{T} \begin{pmatrix} y^{\prime}_1 \\ y^{\prime}_2 \\ \vdots \\ y^{\prime}_m \\ \end{pmatrix} = \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \\ \end{pmatrix} \end{align*}

に注意すると,\mathcal{P}, \mathcal{F} では方程式系が成り立っていないといけないので,線型性が必要となります.

ここで,抽象的に多変数多項式暗号の暗号化方式・署名方式をまとめます.

平文で m という記号を使いたいのですが,\mathcal{F} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m での次数 m と記号がバッティングするので,平文は \mu で表します.


\underline{\mathrm{Def(多変数多項式暗号の暗号化方式)}}

  • 鍵生成アルゴリズム KeyGen (1^n) \mapsto(pk, sk)
    セキュリティパラメタ n を引数として,公開鍵 pk = \mathcal{P} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m と 秘密鍵 sk = (\mathcal{F} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m, \mathcal{S} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^n, \mathcal{T} : \mathbb{F}_q^m \rightarrow \mathbb{F}_q^m) を出力する.

  • 暗号化アルゴリズム Enc (pk, \mu) \mapsto c
    公開鍵 pk と平文 \mu \in \mathbb{F}_q^n を引数として,暗号文 c = \mathcal{P} \mu \in \mathbb{F}_q^m を出力する.

  • 復号化アルゴリズム Dec (sk, c) \mapsto \mu
    秘密鍵 sk と暗号文 c \in \mathbb{F}_q^m を引数として,平文 \mu \in \mathbb{F}_q^m を出力する.
    具体的には,\mathcal{F}(x) = \mathcal{T}^{-1}(c) の解 x \in \mathbb{F}_q^n をとって,\mu = \mathcal{S}^{-1}(x) とする.


*復号化アルゴリズムが必ず成功するとは限らない(必ず \mu を出力するとは限らない,失敗値 \perp を出力することもある)のですが,今回は細かいことは抜きにします.
\mathcal{F}(x) = \mathcal{T}^{-1}(c) の解 x \in \mathbb{F}_q^n が一意に存在すれば,暗号化の正当性が示されます.

解の一意性

異なる x^{\prime}, y^{\prime} \in \mathbb{F}_q^n であって,S(x^{\prime}) = x, S(y^{\prime}) = y \in \mathbb{F}_q^n と置いたとき,\mathcal{F}(x) = \mathcal{F}(y) = \mathcal{T}^{-1}(c) とします.つまり,\mathcal{F}(z) = \mathcal{T}^{-1}(c) なる解 z \in \mathbb{F}_q^n として,x, y の両方がありうるとすると,\mathcal{T} \circ \mathcal{F} \circ \mathcal{S}(x^{\prime}) = c にもかかわらず,復号する際に y に戻ってきて,復号失敗,ということが起こり得ます.よって,\mathcal{F}(x) = \mathcal{T}^{-1}(c) の解 x \in \mathbb{F}_q^n は一意であることが必要条件です.

続いて署名方式です.


\underline{\mathrm{Def(多変数多項式暗号の署名方式)}}

  • 鍵生成アルゴリズム KeyGen (1^n) \mapsto(pk, sk)
    セキュリティパラメタ n を引数として,公開鍵 pk = \mathcal{P} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m と 秘密鍵 sk = \mathcal{F} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m を出力する.

  • 署名アルゴリズム Sign (sk, M) \mapsto \sigma
    秘密鍵 sk とメッセージ M \in \mathbb{F}_q^n を引数として,署名値 \sigma \in \mathbb{F}_q^m を出力する.
    具体的には,\mathcal{F}(y) = \mathcal{T}^{-1}(M) の解 y \in \mathbb{F}_q^n をとって,\sigma = \mathcal{S}^{-1}(y) とする.

  • 検証アルゴリズム Ver (pk, \sigma, M) \mapsto b
    公開鍵 pk と署名値 \sigma,メッセージ M を引数として,P(\sigma) = M が成り立つなら b = 1,そうでないなら b = 0 を出力する.


大雑把に見ると,署名方式は暗号化方式の「逆」をやっていることが分かりますね.

具体例を見ていきましょう.ここでは,q = 3, n = 3, m = 2 とします.
そして,\mathcal{S} = \begin{pmatrix} 0 & 0 & 1 \\ 2 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix}, \ \mathcal{F} = \begin{pmatrix} 0 & 2 & 1 \\ 1 & 1 & 1 \end{pmatrix}, \ \mathcal{T} = \begin{pmatrix} 2 & 1 \\ 0 & 1 \end{pmatrix} とします.このとき,\mathcal{S}^{-1} = \begin{pmatrix} 0 & 2 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{pmatrix} ですし,\displaystyle \mathcal{T}^{-1} = \frac{1}{2} \begin{pmatrix} 1 & 2 \\ 0 & 2 \end{pmatrix} = \begin{pmatrix} 2 & 1 \\ 0 & 1 \end{pmatrix} です(\mathbb{F}_q = \mathbb{F}_3 上の演算であることに注意してください).
よって,

\begin{align*} \mathcal{P} & = \mathcal{T} \circ \mathcal{F} \circ \mathcal{S} \\ & = \begin{pmatrix} 2 & 1 \\ 0 & 1 \end{pmatrix} \begin{pmatrix} 0 & 2 & 1 \\ 1 & 1 & 1 \end{pmatrix} \begin{pmatrix} 0 & 0 & 1 \\ 2 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix} \\ & = \begin{pmatrix} 1 & 2 & 0 \\ 1 & 1 & 1 \end{pmatrix} \begin{pmatrix} 0 & 0 & 1 \\ 2 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix} \\ & = \begin{pmatrix} 1 & 0 & 1 \\ 2 & 1 & 1 \end{pmatrix} \end{align*}

が公開鍵です.

x = (2, 0, 1) \in \mathbb{F}_3 を平文とすると,c = \mathcal{P}(x) = (0, 2) です.
ここから復号を考えると,\mathcal{F}(z) = \mathcal{T}^{-1}(c) = (2, 2)^t を解けばよく,つまり,

\begin{align*} \begin{pmatrix} 0 & 2 & 1 \\ 1 & 1 & 1 \end{pmatrix} \begin{pmatrix} z_1 \\ z_2 \\ z_3 \end{pmatrix} = \begin{pmatrix} 2 \\ 2 \end{pmatrix} \end{align*}

の解 z = (z_1, z_2, z_3) を考えます.(0, 0, 2), (1, 1, 0), (2, 2, 1) が解になります(計算機で回せばOK).このとき何らかの付加情報(トラップドア的な)があって,z= (1, 1, 0) に一意に定まったとします.
すると,\mathcal{S}^{-1}(z) = (2, 0, 1) で,無事に復号できました.
署名についても同様です.

UOV署名方式

さて,ここから具体的なセッティングに入って行きます.


\underline{\mathrm{Def(UOV署名方式)}}
n, m, v, q を正整数として,\mathbb{F}_q なる有限体を考える.ただし,v < n であり,n = v + m を満たすものとする.
x = (x_1, \cdots, x_v, x_{v + 1}, \cdots, x_n) \in \mathbb{F}_q^n をとったとき,x_1, \cdots, x_v を vinegar 変数,x_{v + 1}, \cdots, x_n を oil 変数,という.

鍵生成アルゴリズム KeyGen(1^n) \mapsto (sk, pk)
セキュリティパラメタ n を引数として,秘密鍵 SK = (\mathcal{F} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m, \mathcal{S} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^n) とそれに対応する公開鍵 pk = \mathcal{P} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m を返す関数

具体的には,\mathcal{F} = (f_1, \cdots, f_m) : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m を取る.ここで,1 \leq \forall k \leq n に対して,

\begin{align*} \displaystyle f_k(x_1, \cdots, x_n) = \sum_{i = 1}^n \sum_{j = 1}^v \alpha_{i, j}^{(k)} x_i x_j \end{align*}

を満たすものとする.\alpha_{i, j}^{(k)} \in \mathbb{F}_q である.
\mathcal{S} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^n はそのような可逆写像をランダムに取る.つまり,\mathbb{F}_q 上の n \times n 正則行列全体から \mathcal{S} を一様分布に従って取る.
\mathcal{P} : \mathbb{F}_q^n \rightarrow \mathbb{F}_q^m\mathcal{P} = \mathcal{F} \circ \mathcal{S} として,計算する.

署名アルゴリズム Sign (sk, M) \mapsto \sigma
秘密鍵 sk とメッセージ M \in \mathbb{F}_q^n を引数として,署名値 \sigma = \mathcal{S}^{-1}(x) \in \mathbb{F}_q^m を出力する.ここで,x\mathcal{F}(x) = M の解である.

具体的には,次の手続きで x を得る:

  1. a_1, \cdots, a_v \in \mathbb{F}_q をランダムに取る
  2. x_{v + 1}, \cdots, x_n についての方程式 F(a_1, \cdots, a_v, x_{v + 1}, \cdots, x_n) = M を解く
  3. 2の方程式に解が存在すれば,その1つを x とし,解が存在しなければ,1に戻る

検証アルゴリズム Ver (pk, \sigma, M) \mapsto b
公開鍵 pk と署名値 \sigma,メッセージ M を引数として,P(\sigma) = M が成り立つなら b = 1,そうでないなら b = 0 を出力する.


鍵生成アルゴリズムでの f_k の条件は,2次方程式系を表すけど,全体ではないことを表しています.つまり,2つある変数のうち,前者は x_1, \cdots, x_n 全体を走るけど,後者は vinegar 変数のみ x_1, \cdots, x_v までを走ることを条件としています.

上記でなぜ vinegar 変数のみまでに制限しているのかというと,署名アルゴリズムで F(a_1, \cdots, a_v, x_{v + 1}, \cdots, x_n) とした際に,どちらかの変数は必ず既知になるように調整しているからです.そうすると,実質1変数の方程式になるので,解きやすいからです(たぶん).

ここで,2次形式 \displaystyle f_k(x_1, \cdots, x_n) = \sum_{i = 1}^n \sum_{j = 1}^v \alpha_{i, j}^{(k)} x_i x_j を行列表示します.x = (x_1, \cdots, x_n) とすると,

\begin{align*} \displaystyle f_k(x) & = \sum_{i = 1}^n \sum_{j = 1}^v \alpha_{i, j}^{(k)} x_i x_j \\ & = \begin{pmatrix} x_1 & x_2 & \cdots & x_n \end{pmatrix} \begin{pmatrix} \alpha_{1, 1}^{(k)} & \frac{1}{2} \alpha_{1, 2}^{(k)} & \cdots & \frac{1}{2} \alpha_{1, v}^{(k)} & \frac{1}{2} \alpha_{1, v + 1}^{(k)} & \cdots & \frac{1}{2} \alpha_{1, n}^{(k)} \\ \frac{1}{2} \alpha_{2, 1}^{(k)} & \alpha_{2, 2}^{(k)} & \cdots & \frac{1}{2} \alpha_{2, v}^{(k)} & \frac{1}{2} \alpha_{2, v + 1}^{(k)} & \cdots & \frac{1}{2} \alpha_{2, n}^{(k)} \\ \vdots & \vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\ \frac{1}{2} \alpha_{v, 1}^{(k)} & \frac{1}{2} \alpha_{v, 2}^{(k)} & \cdots & \alpha_{v, v}^{(k)} & \frac{1}{2} \alpha_{v, v + 1}^{(k)} & \cdots & \frac{1}{2} \alpha_{v, n}^{(k)} \\ \frac{1}{2} \alpha_{v + 1, 1}^{(k)} & \frac{1}{2} \alpha_{v + 1, 2}^{(k)} & \cdots & \frac{1}{2} \alpha_{v + 1, v}^{(k)} & 0 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\ \frac{1}{2} \alpha_{n, 1}^{(k)} & \frac{1}{2} \alpha_{n, 2}^{(k)} & \cdots & \frac{1}{2} \alpha_{n, v}^{(k)} & 0 & \cdots & 0 \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{pmatrix} \end{align*}

です.上記の n \times n 対称行列 F_k について解説すると,まず,2つ目の変数については,vinegar 変数のみで制限されているので,右下の m \times m ブロック行列は零行列となります(n = v + m に注意してください).
それ以外の成分については,i \neq j としたときの x_i x_j の係数は F_k[i][j] + F_k[j][i] であり,F_k[i][j] + F_k[j][i] = \alpha_{i, j}^{(k)} が成り立ちます.F_k を対称行列で書こうと思うと,F_k[i][j] = F_k[j][i] なので,F_k[i][j] = F_k[j][i] = \frac{1}{2} \alpha_{i, j}^{(k)} です.
対角成分は,F_k[i][i] = \alpha_{i, i}^{(k)} なので,そのまま入ってきます.

よって,f_iF_i という行列で書くことができました.同様に \mathcal{P} = (p_1(x_1, \cdots, x_n), \cdots, p_m(x_1, \cdots, x_n)) について,p_i(x) = x P_i x^t という対称行列 P_i を使って表すことができます.

polarization

今まで二次形式を考えていましたが,ここでは,双一次形式,つまり,2つの1変数多項式 \sigma_{i, j = 1}^{n} x_i a_{i, j} y_j について考えます.
上記と同様の議論で,対称行列 A を使って,\sigma_{i, j} x_i a_{i, j} y_j = x A y^t と表せます.右辺を内積の形と見ると,x A y^t = (x, A y) = (A x, y) となって,転置を消すことができます.

ここでは,双一次形式と二次形式を結ぶことを考えます.双一次形式から二次形式は簡単で,単に y = x とすればOKです.逆に二次形式 \sigma_{i, j} x_i a_{i, j} x_j = x A x^t = (x, A x) = (A x, x) が与えられたとき,A[x] = (x, A x) = (A x, x) と置くと,双一次形式 \frac{1}{2} (A[x + y] - A[x] - A[y]) = x A y^t を得ます.
(実際,A[x + y] - A[x] - A[y] = (x + y, A (x + y)) - (x, A x) - (y, A y) = (x, A y) + (y, A x) = 2(x, Ay) = 2 x A y^t です)

つまり,ある意味で双一次形式と二次形式は同値になります.上記の操作で,二次形式から双一次形式を得ることを A[x] の polarization と言います.

\mathcal{P} = \mathcal{F} \circ \mathcal{F} で定義しているので,f_i(x) = x F_i x^t\mathcal{S}(x) = S x^t なので,p_i(x) = f_i \circ S(x) = f_i(S x^t) = (S x^t) F_i (S x^t)^t = x S^t F_i S^t x を得ます.
p_i(x) = x P_i x^t から P_i = S F_i S^t となります.


今回の内容はここまでです.ここまでご覧になってくださった方々ありがとうございます!

参考文献

縫田 光司 : "耐量子計算機暗号",森北出版,2020.
D. J. Bernstein, J. Buchmann, and E. Dahmen, editors: "Post-Quantum Cryptography", Springer-Verlag, 2009.
A. Kipnix, J. Patarin, L. Goubin: "Unbalanced oil and vinegar signature schemes", In: International Conference on the Theory and Applications of Cryptographic Techniques. Springer, Berlin, Heidelberg, 1999. p. 206-222.
A. Kipnis, A. Shamir: "Cryptanalysis of the oil and vinegar signature scheme", In: Annual international cryptology conference. Springer, Berlin, Heidelberg, 1998. p. 257-266.
佐竹 一郎 : "線型代数学",裳華房,1958.

Discussion