Cryptology Academy · Les

Tegenmaatregelen: masking, blinding en constant-time code

Implementeer masking, point blinding en vergelijkingen met constante uitvoeringstijd.

Les 4 van 412 stappen

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 leak

Valkuilen 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.

Gratis beginnen

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

  1. Timingaanvallen: sleutels achterhalen uit uitvoeringstijd
  2. Vermogensanalyse: SPA en DPA
  3. Elektromagnetische en akoestische side channels
  4. Tegenmaatregelen: masking, blinding en constant-time code
← Terug naar Cryptology Academy