Cryptology Academy · Oppitunti

HMAC-rakenne ja turvallisuustodistus

Käykää läpi ipad/opad-rakenne ja sen turvallisuusominaisuudet.

Oppitunti 2/413 vaihetta

HMAC-rakenne ja turvallisuustodistus on ilmainen Cryptology Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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.

Tervetuloa

HMAC on standardoitu avaimellinen MAC-rakenne. Sen kaksinkertainen hajautusrakenne estää pituudenlaajennushyökkäykset, ja muodollinen turvallisuustodistus palauttaa HMACin turvallisuuden taustalla olevan hajautusfunktion turvallisuuteen.

HMAC-rakenne

HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)) Missä: - K' = K, täydennettynä nollilla lohkokokoon B asti (tai H(K), jos |K|>B) - ipad = 0x36 toistettuna B kertaa - opad = 0x5C toistettuna B kertaa

Miksi ipad ja opad?

ipad (0x36) ja opad (0x5C) ovat eri vakioita, jotka varmistavat, että K' ⊕ ipad ≠ K' ⊕ opad. Ne muodostavat käytännössä avaimesta K kaksi eri näennäissatunnaista avainta, joita käytetään sisempään ja ulompaan hajautukseen.

HMAC vaihe vaiheelta

Kun K=secret, M=message ja H=SHA256: 1. K' = K täydennettynä 64 tavuun 2. inner_key = K' XOR ipad 3. inner_hash = SHA256(inner_key || M) 4. outer_key = K' XOR opad 5. result = SHA256(outer_key || inner_hash)

HMAC Pythonissa

import hmac, hashlib key = b'my_secret_key' message = b'Hello, World!' mac = hmac.new(key, message, hashlib.sha256) print(mac.hexdigest()) # 64-char hex string (256 bits)

Miksi pituudenlaajennus ei onnistu HMACissa

Kun HMAC(K,M) = SHA256(outer_key || SHA256(inner_key || M)) Hyökkääjä tietää, että SHA256(inner_key || M) = inner_hash. Hyökkääjä ei kuitenkaan voi jatkaa sitä, koska ulompi hajautusfunktio käyttää syötteenä arvoa (outer_key || inner_hash), ei pelkkää arvoa inner_hash. Hyökkääjä ei tiedä arvoa outer_key.

HMACin turvallisuustodistus (Bellare)

Bellare (1996) osoitti, että jos hajautusfunktio H on näennäissatunnainen funktio (PRF), myös HMAC on PRF. Käytännössä HMAC-SHA256 on aiottujen turvallisuusominaisuuksiensa osalta yhtä turvallinen kuin SHA-256.

HMAC-avaimen pituus

HMAC-avaimen on oltava: - Vähintään L tavua (hajautustuloksen pituus) - Suositus: täsmälleen L tavua satunnaista dataa - Jos avain on pidempi kuin block_size, avain hajautetaan ensin block_size-mittaan - Käyttäkää HMAC-SHA256-avaimille arvoa os.urandom(32)

HMAC-tuloksen katkaisu

HMAC-tulos voidaan katkaista puoleen alkuperäisestä pituudesta ilman merkittävää turvallisuuden heikkenemistä. TOTP ja HOTP katkaisevat tuloksen 4 tavuun. Myös TLS:n MAC-arvot katkaistaan. Älkää koskaan katkaisko tulosta alle 80 bittiin (10 tavuun).

HMAC eri käyttökonteksteissa

HMAC-SHA256:ta käytetään seuraavasti: - TOTP: todennuskoodit (katkaistaan 6 numeroon) - TLS 1.2: istuntojen MAC-arvot (TLS 1.3:ssa ei tarvita AEAD:n kanssa) - JWT:t: HS256-allekirjoitus (symmetrinen) - API-pyyntöjen allekirjoitus: GitHubin webhookit, AWS SigV4

HKDF: HMAC-pohjainen avainten johtaminen

HKDF(IKM, salt, info, L) käyttää HMACia kahdesti: 1. Poiminta: PRK = HMAC-SHA256(salt, IKM) 2. Laajennus: OKM = HMAC-SHA256(PRK, info || counter) Sitä käytetään TLS 1.3:n avainten johtamisessa sekä Signalissa ja WireGuardissa avainten johtamiseen.

Pikatarkistus

Mikä on opadin (0x5C toistettuna) tarkoitus HMACissa?

Kertaus

HMAC-rakenne ja sen todistus ovat nyt hallussa. Seuraavaksi sovellamme HMACia API-pyyntöjen allekirjoittamiseen ja tutustumme toistohyökkäysten estämiseen.
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 ”HMAC-rakenne ja turvallisuustodistus” ilmainen?

Kyllä – oppitunnin ”HMAC-rakenne ja turvallisuustodistus” 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 ”HMAC-rakenne ja turvallisuustodistus”?

Käykää läpi ipad/opad-rakenne ja sen turvallisuusominaisuudet. 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 2/4.

Kuinka kauan ”HMAC-rakenne ja turvallisuustodistus”-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. MAC-käsitteet ja pituudenjatkamishyökkäykset
  2. HMAC-rakenne ja turvallisuustodistus
  3. HMAC-ohjelmointirajapinnoissa: pyyntöjen allekirjoittaminen
  4. CMAC ja Poly1305: lohkosalaimiin perustuvat MAC:t
← Takaisin: Cryptology Academy