Panama [1] on kryptografinen primitiivi, jota voidaan käyttää joko kryptografisena hash-funktiona tai virtasalauksena. Joan Dymen ja Craig Klep kehittivät sen vuonna 1998 parantamaan ohjelmistojen tehokkuutta 32-bittisille arkkitehtuureille. Se on yksi Keccak- hajautusalgoritmin edeltäjistä, josta tuli US National Institute of Standards and Technology -instituutin [2] kryptografisten primitiivien kilpailun voittaja . Luottaa voimakkaasti StepRightUp-suoratoiston hash-moduuliin. [3]
Kehittäjien mukaan "Panamalla" oli kehityshetkellä korkea turvallisuustaso, mutta tämä saavutettiin valtavan laskentakuorman kustannuksella. Siksi, kuten kävi ilmi, "Panama" hash-funktiona osoittautui vähemmän sopivaksi viestien hajauttamiseen kuin sen kilpailijat. Jos puhumme "Panamasta" stream-salauksena, niin pitkä alustusmenettely osoittautui sen käytön erottuvaksi piirteeksi. Siksi, kun sitä käytetään tehtävissä, jotka vaativat suuria nopeuksia, on välttämätöntä tarjota kaikki olosuhteet, joilla pyritään vähentämään synkronoinnin määrää. [neljä]
Oletettiin, että "Panamaa" käytettäisiin videon salaamiseen tai salauksen purkamiseen päästäkseen joihinkin sovelluksiin, erityisesti "maksutelevisioon". [5] Kehittäjien logiikka oli, että digisovittimet ja digitelevisiot käyttäisivät nopeita prosessoreita, ja Panama ei kuormittaisi näitä prosessoreita liikaa salauksen purkamisen aikana.
"Panama" perustuu äärelliseen tilakoneeseen, joka koostuu kahdesta suuresta lohkosta: 544 tilabitistä ja 8192-bittisestä puskurista, joka toimii palautesiirtorekisterin periaatteella . Takaisinkytkentä varmistaa, että tulobitit käyvät läpi useita iteraatioita tulon jälkeen, mikä puolestaan varmistaa bittittäisen diffuusion. Minun on sanottava, että samanlaista puskuria käytetään SHA-pakkaustoiminnossa. [6] Panaman työobjekti on 32-bittinen sana ja tila koostuu 17 tällaisesta sanasta, kun taas puskurissa on 32 solua, joista jokainen sisältää 8 tällaista sanaa. [7]
Panama voi päivittää puskurin ja tilat iteroimalla. Ja iteratiiviselle toiminnolle on toteutettu kolme tilaa: "Reset", "Push" ja "Pull". "Push"-tilassa kone vastaanottaa jonkin verran syötettä, mutta ei tulosta mitään. "Pull"-tilassa päinvastoin lähtötiedot muodostetaan, mutta mitään ei oteta syötteeksi. Myös "tyhjä vetoiteraatio" tarkoittaa, että iteroinnin tulos hylätään. "Reset"-tilassa tila ja puskuri nollataan. [kahdeksan]
Tilamuutokselle on ominaista korkea diffuusio ja hajautunut epälineaarisuus. [9] Tämä tarkoittaa, että pieni iteraatioiden määrä riittää hyvän dispersion saavuttamiseen. Tämä tehdään käyttämällä 4 lohkoa, joista jokainen ratkaisee oman tehtävänsä.
Jos pidämme "Panamaa" hash-funktiona, sen toiminnan algoritmi on seuraava. Aluksi hash-funktio hyväksyy kaikki viestilohkot. Tämän jälkeen suoritetaan vielä useita "Push" iteraatioita, jotka mahdollistavat viimeisten vastaanotettujen viestilohkojen sirottamisen puskurin ja tilan sisään. Sen jälkeen suoritetaan viimeinen "Pull" iteraatio, jonka avulla voit saada hash-tuloksen. Suoratoiston salausmenetelmä alustetaan seuraavasti: ensin suoritetaan kaksi "Push"-iteraatiota avaimen ja hajautusparametrin saamiseksi. Sen jälkeen tapahtuu useita "Pull"-iteraatioita avaimen ja parametrin hajauttamiseksi puskurin ja tilojen sisällä. Tämä viimeistelee alustuksen ja Panama on valmis luomaan bittejä lähtösekvenssistä suorittamalla "Pull" iteraatioita. [3]
Voit määrittää tilan muotoon , ja 17 sanaa, jotka määrittelevät tilat, voidaan nimetä nimellä . Puskuri on merkitty nimellä , sen solun -th - as , ja yksi tämän solun sisällä olevista sanoista - as . Aluksi sekä tila että puskuri täytetään vain nolilla. "Push"-tilassa "Panama" vastaanottaa 8-bittisen sanan tulona, "Pull"-tilassa 8-bittinen sana muodostetaan ulostulona. [7]
Jos määritämme puskurin päivittävän toiminnon nimellä , jos hyväksymme sen , voimme saada seuraavat säännöt puskurin päivittämiseen:
klo , , vartenjossa "Push"-tilassa on syöttölohko ja "Pull"-tilassa se on osa tilaa , eli 8 sen komponentteja, jotka määritellään
vartenTila päivitetään seuraavan säännön mukaan, joka on 4 eri muunnoksen superpositio:
jossa on käänteinen lineaarinen muunnos, on jälleen käänteinen lineaarinen muunnos, on yhdistelmä sanabittien kiertoa ja sanan sijainnin sekoitusta, ja muunnos on puskurin ja syöttösanan bittikohtainen lisäys.
В данном случае будет определять сумму операций, где сначала выполняется та, что стоит правее.
Nyt voimme harkita jokaista näistä toiminnoista. määritellään seuraavasti:
varten ,jossa kaikki indeksit otetaan modulo . Huomaa, että tämän muunnoksen palautuvuus johtuu siitä tosiasiasta, että on koprime kanssa .
voidaan määritellä seuraavasti:
varten ,jossa kaikki indeksit otetaan modulo .
Jos muunnokselle määritetään, että paikoissa on siirtymä vähiten merkitsevästä bitistä merkittävimpään, niin:
,ja , ja
Jos muunnos suoritetaan , niin
, varten , varten"Push"-tilassa on syöttöviesti ja "Pull"-tilassa - .
Ulostulosana "Pull"-tilassa määritellään seuraavasti:
. [yksitoista]"Panama" hash-funktiona kartoittaa 256 bitin hash-tuloksen mielivaltaisen pituiseksi viestiksi. [11] Tässä tapauksessa hajautus tapahtuu kahdessa vaiheessa
Voidaan merkitä syöttölohkojen sarjana . Sitten nollahetkellä generoidaan Reset-tila, jonka jälkeen jaksojen aikana syöttölohkot ladataan. Sen jälkeen suoritetaan 32 tyhjää "Pull" iteraatiota. Ja sitten 33. "Pull"-iteraatiossa hajautustulos palautetaan .
Panama-hajautusfunktion kehittämisen päätehtävänä oli löytää "hermeettinen" hash-funktio [11] eli funktio, jolle (jos hash-tulos koostuu bitteistä):
Lisäksi ei ole mahdollista havaita systemaattisia korrelaatioita minkään tulobittien lineaarisen yhdistelmän ja minkään hajautustulosbittien lineaarisen yhdistelmän välillä. [yksitoista]
Tätä hash-toimintoa on hyökätty onnistuneesti kahdesti. Jo vuonna 2001 osoitettiin, että tämä hash-toiminto ei ole kryptografisesti turvallinen, koska toimintojen törmäyksiä löydettiin. Lisäksi Joan Dymen osoitti, että törmäykset on mahdollista löytää jo operaatioita varten, ja luotettavuusparametrien täyttämiseksi on välttämätöntä, että törmäykset paikannetaan ainakin operaatioita varten. [12]
Hash-funktiot | |
---|---|
yleinen tarkoitus | |
Kryptografinen | |
Avainten luontitoiminnot | |
Tarkista numero ( vertailu ) | |
Hashes |
|