HPC ( Hasty Pudding Cipher ) on lohkosymmetrinen salausalgoritmi , jonka loi kuuluisa amerikkalainen kryptologi ja matemaatikko Richard SchreppelArizona State Universitystä vuonna 1998 . Kryptoalgoritmin nimen kaksi ensimmäistä sanaa voidaan kääntää "jauhoinen vaniljakastike " . HPC sai niin oudon nimen ilmeisesti "ovelien" numeeristen muunnosten runsauden vuoksi, mikä vaikeuttaa merkittävästi sen analysointia .
HPC perustuu Feistel-soluun ja siinä on mielenkiintoinen ominaisuus - sekä salatun lohkon että salausavaimen kokoa ei rajoita mikään. Itse asiassa HPC-algoritmi koostuu viidestä erilaisesta (mutta toisiinsa liittyvästä) alialgoritmista, joista jokainen on suunniteltu salaamaan eripituisia lohkoja:
Nimi | Lohkon koko bitteinä |
---|---|
HPC Tiny | 0-35 |
HPC lyhyt | 36-64 |
HPC Medium | 65-128 |
HPC pitkä | 129-512 |
HPC Extended | 513 ja enemmän |
Salaus suoritetaan 8 kierroksella. Salattu 128 - bittinen lohko kirjoitetaan kahteen 64 - bittiseen rekisteriin , jonka jälkeen niille suoritetaan valtava määrä erilaisia matemaattisia operaatioita:
Nimitys | Operaatio |
---|---|
modulo 2 lisäys | |
modulo lisäys | |
modulo-vähennys | |
kiertää vasemmalle n bittiä | |
Kierrä oikealle n bittiä | |
nollataan 64 - bittisen lohkon alhainen tavu | |
bittain looginen "ja" |
Lisäksi eräät vakiot osallistuvat myös kierrokseen :
Kun 8 muunnoskierrosta on suoritettu, suoritetaan vielä 2 toimintoa:
Salauksen purku suoritetaan suorittamalla käänteiset toiminnot käänteisessä järjestyksessä.
Avaimen laajennusproseduurin tehtävänä on luoda laajennettu avain , joka on 256 64 - bittisen sanan joukko . On selvää, että jokaisella aligoritmilla on oltava oma menettelynsä. Yhden laajennetun avaintaulukon tunteminen ei salli muiden taulukoiden tai itse salausavaimen laskemista . Kuitenkin, kun salattujen lohkojen koko on kiinteä, riittää, että generoidaan laajennettu avain kerran tälle aligoritmille.
Avaimen loput 253 sanaa alustetaan seuraavasti:
Suoritetaan salausavaimen ja alustetun laajennetun avaintaulukon bittikohtainen modulo 2 -lisäys , mutta enintään 128 sanaa.
Laajennetun avaimen datan sekoitustoiminto suoritetaan , mikä varmistaa, että avaimen jokainen bitti vaikuttaa laajennetun avaimen jokaiseen bittiin :
Vaihe 1Rekisterejä alustetaan :
Jokaiselle laajennetun avaimen sanalle suoritetaan kuvassa näkyvä toiminto. Vaikutuksen parantamiseksi algoritmin kirjoittaja suosittelee 3 sekoituskierrosta.
Jos avaimen koko ylittää 128 64 - bittistä sanaa, vaiheet 2 ja 3 toistetaan jokaiselle 128 sanan lohkolle. Näin ollen avainten sekoitusmenettely monimutkaisuusjärjestyksessä on suunnilleen samanlainen kuin itse salausmenettely .
Sen tarkoituksena on muokata salaustulosta samoilla syöttölohkoilla ja avaimilla . Lisäavain voi olla salainen, mikä kasvattaa todellista avaininformaation määrää, mutta rajoittamattoman avaimenpituuden omaavassa algoritmissa tämä mahdollisuus voi olla tarpeeton. Tällaisissa tapauksissa voit yksinkertaisesti nollata lisäavaimen .
David Wagner HPC- salauksessa [7] ja myöhemmin Carl D'Halluin, Gert Bijnens, Bart Presnel ja Vincent Rayman julkaisivat tämän vahvistavan paperin [8] . Kävi ilmi, että suunnilleen joka 256. algoritmin avaimessa on 230 vastaavaa avainta . Tämän puutteen tekijä kuitenkin korjasi viipymättä jo ennen kilpailun ensimmäisen kierroksen tulosten yhteenvetoa.
Tämän tyyppisessä hyökkäyksessä hyökkääjä, jolla on pääsy selkeän tekstin ja salatekstin pareihin, voi manipuloimalla lisäavaimen "Spice" joukkoa tarkkailla, kuinka selväteksti tai salateksti muuttuu myöhemmissä salauksissa . Kirjoittajan mukaan tämän tyyppisiä hyökkäyksiä ei kuitenkaan ole vielä havaittu, ja työ tällä alueella vaatii kryptanalyyttisen yhteisön ponnisteluja. [2]
Symmetriset salausjärjestelmät | |
---|---|
Suoratoista salauksia | |
Feistelin verkko | |
SP verkko | |
Muut |