Ein mit der Designsicherheit sehr verwandtes Problem ist der Schutz von Dienstleistungen. Viele elektronische Geräte sind dafür konzipiert, sichere Transaktionen für bezahlte Dienstleistungen durchzuführen. In vielen Fällen sind es die Einnahmen für den Service, der den Großteil des Gewinns des Anbieters ausmacht. Die Hardware selbst kann zu den Herstellkosten oder darunter verkauft werden. Doch der Verkäufer muss, um sich dauerhaft Einnahmequellen zu erschließen, dafür umso sicherer sein, dass dem Benutzer mit der Hardware verbundene Dienstleistungen nur nach Zahlungseingang zur Verfügung stehen. Wenn ein Benutzer die Zahlungsmechanismen umgeht, kommt es zu einem schweren Verlust bei Umsatz und Profitabilität.
Wenn ein Hacker in der Lage ist, detaillierte Informationen über die Implementierung der Verschlüsselung zu erhalten, ist die Chance, den vom System genutzten Chiffrierschlüssel und damit die Schutzmechanismen zu knacken, sehr viel höher. Die Techniken zum Knacken einer Verschlüsselung sind nicht auf herkömmliches Reverse Engineering beschränkt. Die Analyse von „Seitenkanalinformationen“ – sei es der Energiebedarf oder die durch einen Kühlkörper abgeleitete EMI – kann wichtige Hinweise über die Verarbeitungsschritte einer Krypto-Verarbeitungseinheit liefern. Techniken dieser Art sind bereits sehr verbreitet und mündeten in einen Wettbewerb unter Sicherheitsforschern. Dieser Wettbewerb wurde schon dreimal abgehalten, um denjenigen Forscher zu finden, der am schnellsten einen geschützten Schlüssel auf einem Standardsystem entdeckt.
Schutzmaßnahmen der FPGA-Hersteller
Es dürfte also niemanden überraschen, dass die FPGA-Hersteller eine Reihe von gerätespezifischen Sicherheitsmaßnahmen eingeführt haben, um sich gegen verschiedene Formen von Fälschungen zu schützen und dem unbefugten Entsperren von IP und Dienstleistungen Einhalt zu gebieten.
Die erste Verteidigungslinie für FPGAs liegt bei der Bitstream-Verschlüsselung. Sie enthalten – zusätzlich zum obskuren Konfigurations-Bitstream-Format – eine weitere Schutzebene. Die FPGAs von Altera, Lattice und Xilinx verfügen in diesem Sinne über chipeigene Entschlüsselungs-Hardware für die Konfigurationsdaten. Typischerweise wird der Bitstream durch den Hersteller unter Verwendung des AES-Algorithmus verschlüsselt. Der AES-Algorithmus basiert auf dem Rijndael-Algorithmus und enthält nicht nur ein symmetrisches 128-bit-Datenblockchiffre, sondern auch 128-, 192- und 256-bit-Chiffrierschlüssel. Symmetrisch bedeutet, dass der gleiche Schlüssel für Verschlüsselung und Entschlüsselung verwendet wird. Jeder 128-bit-Eingangsblock (ein zweidimensionales 4×4-Array aus Bytes, auch als Status bezeichnet) geht durch eine Folge von vier Byte-orientierten Blocktransformationen. Wie oft, hängt dabei von der Länge des verwendeten Schlüssels ab; zehn Runden für AES-128, zwölf Runden für AES-192 und 14 Runden für AES-256. Die verwendeten Transformationen sind:
- Byte-Substitution
- Zeilen-Byte-Verschiebung mit einer steigenden Anzahl von 0 bis 3
- Mischung der Spalten innerhalb des Status-Array
- Hinzufügen des jeweiligen Rundenschlüssels zum Status
Während der Board-Montage und Programmierung muss der 256-bit-Schlüssel in das Ziel-FPGA geschrieben werden. Während des Startvorgangs wiederum wird der Bitstream vom AES-Block entschlüsselt und die Konfigurationsdaten werden in die Konfigurationslogik übergeben (Bild 1). Da die Klartext-Konfigurationsdaten nicht auf einem der I/O-Ports sichtbar sind, kann ein „Pirat“ den Stream nicht auslesen. Stattdessen muss er erhebliche Ressourcen für die Bitstream-Entschlüsselung mit leistungsfähigen Computern aufwenden.