Tegenmaatregelen: masking, blinding en constant-time code
Implementeer masking, point blinding en vergelijkingen met constante uitvoeringstijd.
Tegenmaatregelen: masking, blinding en constant-time code is een gratis Cryptology Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Cryptology Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Cryptology Academy bevat in totaal 4 lessen.
De drie soorten tegenmaatregelen
Tegenmaatregelen tegen zijkanaalaanvallen vallen in drie soorten uiteen: maskering (tussenwaarden willekeurig maken), blinding (invoer en uitvoer willekeurig maken) en code met constante uitvoeringstijd (gegevensafhankelijke timing elimineren).
Booleaanse maskering
Pas XOR toe op elke tussenwaarde met een nieuw willekeurig masker r. Verwerk de gemaskeerde waarde x⊕r en verwijder het masker aan het einde. Het vermogensprofiel hangt nu af van x⊕r en niet van x.
Rekenkundige maskering voor vermenigvuldigingen
Gebruik voor multiplicatieve bewerkingen multiplicatieve maskers: vervang x door x·r mod p. Het maskeringsschema moet compatibel zijn met elke algebraïsche bewerking in het cijfer.
RSA-blinding
Kies voordat je cijfertekst c ontsleutelt een willekeurige r en bereken c' = c·r^e mod n. Ontsleutel c' om m·r mod n te verkrijgen en deel vervolgens r weg. De echte machtsverheffing krijgt de echte c nooit te zien.
Blinding van ECC-punten
Maak de projectieve coördinaten willekeurig: gebruik in plaats van het affiene punt (x,y) het punt (λx : λy : λ) voor een willekeurige λ. De scalaire vermenigvuldiging werkt met willekeurig gemaakte coördinaten, waardoor het vermogensprofiel telkens verandert.
Programmeeregels voor constante uitvoeringstijd
1. Geen vertakkingen die van geheimen afhangen. 2. Geen geheugenindexen die van geheimen afhangen. 3. Geen voortijdige beëindiging. 4. Gebruik waar beschikbaar platformspecifieke bewerkingen met constante uitvoeringstijd, bijvoorbeeld crypto_verify_32.
Vergelijken met constante uitvoeringstijd in Python
Gebruik nooit == of hmac.compare_digest op onbewerkte bytes in timinggevoelige paden. Gebruik:
import hmac
def constant_time_compare(a: bytes, b: bytes) -> bool:
"""Uses HMAC double-HMAC trick for constant-time equality."""
# hmac.compare_digest is constant-time in CPython
return hmac.compare_digest(a, b)
# Example
secret = b"expected_mac_value"
received = b"attacker_provided__"
print(constant_time_compare(secret, received)) # False, but no timing leakValkuilen van compilers en architecturen
Compilers kunnen code met constante uitvoeringstijd wegoptimaliseren. Gebruik volatile-schrijfbewerkingen, geheugenbarrières of assembly-intrinsics. C-compilers hebben -fno-delete-null-pointer-checks, maar er bestaat geen universele garantie voor constante uitvoeringstijd.
Herschikken en dummybewerkingen
Permuteer de volgorde van S-box-opzoekingen willekeurig of voeg dummybewerkingen toe die vermogen verbruiken zonder het resultaat te beïnvloeden. Dit maakt DPA moeilijker, maar elimineert lekkage niet.
Hardwarematige tegenmaatregelen
Speciale cryptoversnellers (ARM TrustZone, STM32 hardware-AES) passen maskering toe in silicium. ASIC-implementaties voegen metalen afscherming en een actief raster toe om fysieke sondes te detecteren.
Kennischeck
Welke tegenmaatregel voorkomt RSA-timingaanvallen door de cijfertekst vóór de machtsverheffing willekeurig te maken?
Samenvatting van de les
Maskering maakt tussenwaarden willekeurig; blinding maakt RSA/ECC-invoer willekeurig; code met constante uitvoeringstijd elimineert timingafhankelijke vertakkingen. Diepteverdediging combineert alle drie. Hardwareversnellers passen deze technieken toe in silicium voor de sterkste garanties.
Leer Cryptology Academy met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 67
- Lessen
- 261
Veelgestelde vragen
Is de les “Tegenmaatregelen: masking, blinding en constant-time code” gratis?
Ja — de volledige tekst van “Tegenmaatregelen: masking, blinding en constant-time code” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Cryptology Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Cryptology Academy bevat in totaal 4 lessen.
Wat leer ik in “Tegenmaatregelen: masking, blinding en constant-time code”?
Implementeer masking, point blinding en vergelijkingen met constante uitvoeringstijd. Je oefent met Cryptology Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Cryptology Academy te beginnen?
Ervaring vooraf is niet nodig. Cryptology Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Tegenmaatregelen: masking, blinding en constant-time code”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Cryptology Academy?
Ja. Elke les over Cryptology Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Timingaanvallen: sleutels achterhalen uit uitvoeringstijd
- Vermogensanalyse: SPA en DPA
- Elektromagnetische en akoestische side channels
- Tegenmaatregelen: masking, blinding en constant-time code