Cryptology Academy · Oppitunti

Vastatoimet: maskaus, sumentaminen ja vakioaikainen koodi

Toteuttakaa maskaus, pisteen sumentaminen ja vakioaikaiset vertailut.

Oppitunti 4/412 vaihetta

Vastatoimet: maskaus, sumentaminen ja vakioaikainen koodi on ilmainen Cryptology Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cryptology Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cryptology Academy-kurssilla on yhteensä 4 oppituntia.

Vastatoimien kolme pääluokkaa

Sivukanavien vastatoimet jakautuvat kolmeen pääluokkaan: maskaus (väliarvojen satunnaistaminen), blindaus (syötteiden ja tulosteiden satunnaistaminen) ja vakioajan koodi (datasta riippuvan ajoituksen poistaminen).

Boolen maskaus

Suorita XOR jokaiselle väliarvolle uuden satunnaisen maskin r kanssa. Käsittele maskattua arvoa x⊕r ja poista maski lopuksi. Tehojälki riippuu nyt arvosta x⊕r, ei arvosta x.

Aritmeettinen maskaus kertolaskuille

Käytä kertolaskuissa multiplikatiivisia maskeja: korvaa x arvolla x·r mod p. Maskausmenetelmän on oltava yhteensopiva salaimen jokaisen algebrallisen operaation kanssa.

RSA-blindaus

Ennen kuin puratte salatekstin c, valitkaa satunnainen r ja laskekaa c' = c·r^e mod n. Purkakaa c' saadaksenne arvon m·r mod n ja jakakaa sitten r pois. Varsinainen potenssiinkorotus ei koskaan käsittele todellista arvoa c.

ECC-pisteen blindaus

Satunnaistakaa projektiiviset koordinaatit: käyttäkää affiinipisteen (x,y) sijaan satunnaisella λ:lla arvoa (λx : λy : λ). Skalaari kertolasku suoritetaan satunnaistetuilla koordinaateilla, joten tehojälki muuttuu joka kerta.

Vakioajan ohjelmoinnin säännöt

1. Ei salaisuudesta riippuvia haaroja. 2. Ei salaisuudesta riippuvia muistihakemistoja. 3. Ei ennenaikaisia lopetuksia. 4. Käyttäkää alustan vakioajan sisäisiä operaatioita aina, kun niitä on saatavilla (esimerkiksi crypto_verify_32).

Vakioajan vertailu Pythonissa

Älkää koskaan käyttäkö raakatavuihin ==-operaattoria tai hmac.compare_digest-funktiota ajoitusherkissä kohdissa. Käyttäkää:

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

Kääntäjien ja arkkitehtuurien sudenkuopat

Kääntäjät saattavat optimoida vakioajan koodin pois. Käyttäkää volatile-tallennuksia, muistiaitoja tai assemblerin sisäisiä funktioita. C-kääntäjissä on -fno-delete-null-pointer-checks, mutta yleispätevää vakioajan takausta ei ole.

Järjestyksen sekoittaminen ja valetoiminnot

Vaihtakaa S-box-hakujen järjestys satunnaisesti tai lisätkää valetoimintoja, jotka kuluttavat tehoa vaikuttamatta tulokseen. Tämä vaikeuttaa DPA-hyökkäyksiä, mutta ei poista vuotoa.

Laitteistotason vastatoimet

Erilliset kryptografiset kiihdyttimet (ARM TrustZone, STM32 hardware AES) toteuttavat maskauksen piitasolla. ASIC-toteutuksissa käytetään metallisuojausta ja aktiivista suojaverkkoa fyysisen mittauksen havaitsemiseen.

Tietotesti

Mikä vastatoimi estää RSA:n ajoitushyökkäykset satunnaistamalla salatekstin ennen potenssiinkorotusta?

Oppitunnin yhteenveto

Maskaus satunnaistaa väliarvot, blindaus RSA:n ja ECC:n syötteet, ja vakioajan koodi poistaa ajoituksesta riippuvat haarat. Syvyyssuuntainen suojaus yhdistää kaikki kolme menetelmää. Laitteistokiihdyttimet toteuttavat nämä piitasolla ja tarjoavat vahvimman suojan.

Aloita maksutta

Opi Cryptology Academy tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
67
Oppitunnit
261

Usein kysytyt kysymykset

Onko oppitunti ”Vastatoimet: maskaus, sumentaminen ja vakioaikainen koodi” ilmainen?

Kyllä – oppitunnin ”Vastatoimet: maskaus, sumentaminen ja vakioaikainen koodi” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cryptology Academy-kurssin, päivitä CoddyKit PROhon. Cryptology Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Vastatoimet: maskaus, sumentaminen ja vakioaikainen koodi”?

Toteuttakaa maskaus, pisteen sumentaminen ja vakioaikaiset vertailut. Harjoittelet Cryptology Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cryptology Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cryptology Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Vastatoimet: maskaus, sumentaminen ja vakioaikainen koodi”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Cryptology Academy-oppitunnilla?

Kyllä. Jokainen Cryptology Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Ajoitushyökkäykset: avainten erottaminen suoritusajasta
  2. Tehoanalyysi: SPA ja DPA
  3. Sähkömagneettiset ja akustiset sivukanavat
  4. Vastatoimet: maskaus, sumentaminen ja vakioaikainen koodi
← Takaisin: Cryptology Academy