Das Oil and Vinegar Signatur-Schema wurde im Jahr 1997 von Jacques
Patarin vorgestellt. Der Name leitet sich von der Idee ab, Variablen in
zwei Kategorien aufzuteilen: Oil und Vinegar. Ähnlich der Zubereitung
eines Salatdressings sollen Öl und Essig, obwohl sie sich nicht mischen,
dennoch zusammenarbeiten, um etwas Neues und Nützliches zu schaffen.
Allerdings wurde das Schema bereits ein Jahr später gebrochen. Als
Reaktion darauf wurde 1999 das Unbalanced Oil and Vinegar Schema als
eine Verallgemeinerung des Originalschemas eingeführt. Hierbei werden
nicht gleichermaßen viele Oil- und Vinegar-Variablen genutzt, sondern
vermehrt Vinegar-Variablen eingesetzt. Dieses Verfahren gilt mit
geeigneten Parametern weiterhin als sicher.
Um dieses Signatur-Schema anzuwenden, müssen im ersten Schritt die
Anzahl an Oil-Variablen \(o\) und die Anzahl an Vinegar-Variablen \(v\)
festgelegt werden. Es wird empfohlen, diese so zu wählen, dass gilt \(v
\geq 2o\). Die Anzahl der Oil-Variablen entspricht der Anzahl der
Gleichungen der quadratischen Polynomsysteme, also ist \(m = o\). Die
Gesamtanzahl der Variablen entspricht der Summe der Oil- und
Vinegar-Variablen, also \(n = o + v\). Die invertierbare affine
Abbildung \(S: K^n \rightarrow K^n\) kann zufällig generiert werden. Auf
eine weitere affine Abbildung \(T\) wird bei diesem Verfahren
verzichtet, da diese weggelassen werden kann, ohne dabei die Sicherheit
zu beeinträchtigen. Da es mehr Variablen als Gleichungen gibt, ist
dieses Verfahren nicht injektiv und daher ausschließlich für die
Erzeugung digitaler Signaturen geeignet.
Die \(m\) Gleichungen des privaten Polynomsystems mit den Koeffizienten
\(a_{i,j,k}, b_{i,j,k}, c_{i,j}, d_{i,j}\) und \(e_i \in K\), den
Oil-Variablen \(O_1,...,O_{o} \in K\) und den Vinegar-Variablen
\(V_1,...,V_v \in K\) haben folgende Form:
\(y_i:= \sum\limits_{j=1}^{o}\sum\limits_{k=1}^{v}a_{i,j,k}O_jV_k\ +
\sum\limits_{j=1}^{v}\sum\limits_{k=1}^{v}b_{i,j,k}V_jV_k\ +
\sum\limits_{j=1}^{o}c_{i,j}O_j + \sum\limits_{j=1}^{v}d_{i,j}V_j +
e_i\) für \(1 \leq i \leq n\)
Anders gesagt: Die Gleichungen des Polynomsystems können zufällig
generiert werden, solange dabei darauf geachtet wird, dass kein Summand
vorkommt, der mehr als eine Oil-Variable als Faktor enthält. Dadurch
wird aus diesen quadratischen Polynomen ein lineares Gleichungssystem,
wenn man alle Vinegar-Variablen substituiert. Dies ist beim öffentlichen
Schlüssel \(P\) nicht möglich, da durch die Verkettung mit \(S\) im
öffentlichen Polynomsystem auch nach der Substitution quadratische
Summanden vorkommen können.
Um eine Signatur zu erstellen, muss nun eine Lösung für \(P'(\vec{x'}) =
\vec{y}\) gefunden werden. Hierfür wird ein zufälliger Vektor
\(\vec{x'_v} \in K^v\) gebildet und alle Vinegar-Variablen in \(P'\)
durch die Komponenten dieses Vektors substituiert. Dies führt zu einem
linearen Gleichungssystem \(Q'(\vec{x'_o})=\vec{y}\) mit \(o\)
Gleichungen und \(o\) Variablen. Es ist möglich, dass dieses
Gleichungssystem nicht lösbar ist. In diesem Fall muss ein anderer
zufälliger Vektor \(\vec{x'_v}\) gewählt werden. Nach der Lösung des
Gleichungssystems erhält man einen Lösungsvektor \(\vec{x'_o} \in K^o\).
Durch aneinanderhängen kann der Lösungsvektor \(\vec{x'} =
\begin{pmatrix} \vec{x'_o} \\ \vec{x'_v}\end{pmatrix}\) gebildet werden.
Abschließend muss lediglich \(S(\vec{x}) = \vec{x'}\) gelöst werden, um
eine Signatur \(\vec{x}\) zu erhalten. Diese kann anschließend mittels
\(P(\vec{x}) = \vec{y}\) verifiziert werden.