# Full-Domain-Hash

Full-Domain-Hash (Abkürzung FDH) ist ein Signaturverfahren aus dem Bereich der Kryptologie. Der Empfänger einer Nachricht kann damit überprüfen, ob die Nachricht, die der Absender an ihn gesandt hat, durch einen Dritten verändert wurde oder nicht.
Das Prinzip des Verfahrens besteht darin, eine Nachricht zuerst zu hashen und anschließend eine beliebige Trapdoor-Einwegpermutation darauf anzuwenden. Die Hashfunktion wird dabei als Zufallsorakel modelliert, dessen Bildmenge gleich dem Definitionsbereich der Einwegpermutation ist. Daher kommt auch der Name Full-Domain-Hash.

## Beschreibung des Protokolls

Das Full-Domain-Hash-Verfahren ist ein asymmetrisches Signaturverfahren dessen öffentlicher Schlüssel $(f,G)$ aus einer Trapdoor-Einwegpermutation $f\colon \{0,1\}^{k}\rightarrow \{0,1\}^{k}$ und einem Zufallsorakel $G\colon \{0,1\}^{*}\rightarrow \{0,1\}^{k}$ gebildet wird. Der zugehörige geheime Schlüssel ist die Umkehrfunktion $f^{-1}$ der Trapdoor-Einwegpermutation.
Die Signatur einer Nachricht $x$ wird durch folgende Funktion berechnet:
    $\operatorname {sig} (x)=f^{-1}(G(x))$
Die Nachricht wird dann zusammen mit der Signatur an den Empfänger gesandt.
Der Empfänger erhält die Nachricht $x$ zusammen mit der Signatur $y=\operatorname {sig} (x)$. Mit der Verifikationsfunktion
    $\operatorname {ver} (x,y)={\begin{cases}{\text{wahr}}&{\text{wenn }}f(y)=G(x)\\{\text{falsch}}&{\text{sonst}}\end{cases}}$
überprüft er die Nachricht. Diese gibt genau dann wahr aus, wenn die Nachricht nicht verändert wurde.

## RSA-Full-Domain-Hash

Verwendet man als Trapdoor-Einwegpermutation $f$ die RSA-Funktion $f(x)=x^{e}{\bmod {N}}$ mit den von RSA bekannten Parametern, dann spricht man vom RSA-Full-Domain-Hash. Das Verfahren ist nachweislich sicher, das heißt, es kann auch mit einem Angriff mit frei wählbarem Klartext keine existenzielle Fälschung erzeugt werden.

## Sicherheit des RSA-Full-Domain-Hash

Wenn RSA $(t',\epsilon ')$-sicher ist, dann ist das RSA-Full-Domain-Hash-Verfahren auf Basis des Zufallsorakel-Modells $(t,\epsilon )$-sicher mit
    $t=t'-(q_{\mathrm {hash} }+q_{\mathrm {sig} }+1)\cdot {\mathcal {O}}(k^{3})$
    $\epsilon =\left(1+{\frac {1}{q_{\mathrm {sig} }}}\right)^{q_{\mathrm {sig} }+1}\cdot q_{\mathrm {sig} }\cdot \epsilon '$
Beachte, dass der Artikel von Jean-Sébastien Coron offenbar $q_{\mathrm {sig} }>0$ voraussetzt. Für große $q_{\mathrm {sig} }$ läuft dies auf $\epsilon \sim \exp(1)\cdot q_{\mathrm {sig} }\cdot \epsilon '$ hinaus.
Das bedeutet: Wenn es einen Algorithmus gibt, der eine existenzielle Fälschung für das Full-Domain-Hash-Verfahren mit einer Laufzeit von $t$ und Erfolgswahrscheinlichkeit von $\epsilon$ erstellen kann und dabei höchstens $q_{\mathrm {hash} }$ berechnet und höchstens $q_{\mathrm {sig} }$ Unterschriften benötigt, dann gibt es einen Algorithmus, der diskrete Logarithmen von RSA-Modulen mit einer Laufzeit von $t'$ und Erfolgswahrscheinlichkeit von $\epsilon '$ berechnet.

## Relevanz

Die Autoren (Bellare, Rogaway) von Full-Domain-Hash haben ein weiteres Verfahren vorgeschlagen, das Probabilistic Signature Scheme (PSS), welches ihrer Ansicht nach bessere kryptografische Eigenschaften hat. Daher wird FDH praktisch nicht eingesetzt, da PSS im Rahmen von PKCS #1 v2.1 standardisiert wurde.

## Quellen

* Douglas R. Stinson: Cryptography. Theory and Practice. 3. Auflage. Chapman & Hall/CRC, 2005, ISBN 1-58488-508-4, Seiten 304–307
* Jean-Sébastien Coron: On the Exact Security of Full Domain Hash. (PDF; 101 kB) CRYPTO 2000: Seiten 229–235
* Mihir Bellare, Phillip Rogaway: The Exact Security of Digital Signatures – How to Sign with RSA and Rabin. (PDF; 192 kB) EUROCRYPT 1996: Seiten 399–416