Vastatoimet: maskaus, sumentaminen ja vakioaikainen koodi
Toteuttakaa maskaus, pisteen sumentaminen ja vakioaikaiset vertailut.
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 leakKää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.
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
- Ajoitushyökkäykset: avainten erottaminen suoritusajasta
- Tehoanalyysi: SPA ja DPA
- Sähkömagneettiset ja akustiset sivukanavat
- Vastatoimet: maskaus, sumentaminen ja vakioaikainen koodi