8.1. Side-Channel Leaks (Seitenkanal-Lecks)
8.1. Side-Channel Leaks (Seitenkanal-Lecks)
Bei Implementierungen, die Signaturen erzeugen, ist die Geheimhaltung des privaten Schlüssels (private key) grundlegend. Ein Schutz vor einigen Seitenkanalangriffen (side-channel attacks) ist möglich, indem sichergestellt wird, dass die Implementierung für jeden Wert des privaten Schlüssels exakt dieselbe Befehlsfolge ausführt und exakt dieselben Speicherzugriffe vornimmt.
Um eine Implementierung auf diese Weise seitenkanal-still (side-channel silent) zu machen, darf die Modulo-p-Arithmetik keine datenabhängigen Verzweigungen verwenden, z. B. im Zusammenhang mit der Übertragungsfortpflanzung (carry propagation). Seitenkanal-stille Punktaddition ist dank der vereinheitlichten Formeln (unified formulas) unkompliziert.
Skalarmultiplikation (scalar multiplication), also die Multiplikation eines Punktes mit einer ganzen Zahl, erfordert zusätzlichen Aufwand für eine seitenkanal-stille Realisierung. Ein einfacher Ansatz ist die Implementierung einer seitenkanal-stillen bedingten Zuweisung (conditional assignment) und ihre Verwendung zusammen mit dem binären Algorithmus, um nacheinander ein Bit der ganzen Zahl zu betrachten.
Im Vergleich zu anderen Signaturverfahren ist das Vermeiden datenabhängiger Verzweigungen einfacher, weil seitenkanal-stille Modulo-p-Arithmetik (bei empfohlenen Kurven) leichter ist und vollständige Additionsformeln (complete addition formulas) statt vieler Sonderfälle vorliegen.
Die Beispielimplementierungen in diesem Dokument versuchen nicht, seitenkanal-still zu sein.