VMPC ( Variably Modified Permutation Composition ) on tietovirtasalaus [1] , jota käytetään joissakin tietoturvajärjestelmissä tietokoneverkoissa. Salauksen kehitti kryptografi Bartosz Zultak ( puolaksi: Bartosz Żółtak , englanniksi: Bartosz Zoltak ) parannellun versiona suositusta RC4 -salauksesta . VMPC-algoritmi on rakennettu kuten mikä tahansa virtasalaus, joka perustuu avainparametreihin pseudosatunnaisbittigeneraattoriin. Salauksen, kuten RC4:n, tärkeimmät edut ovat suuri nopeus, muuttuva avaimen ja alustusvektorin koko (128 - 512 bittiä mukaan lukien), toteutuksen helppous (kirjaimellisesti muutama tusina koodiriviä). [2]
Salauksen perusta on näennäissatunnaislukugeneraattori [3] , joka perustuu yksisuuntaiseen irreversiibeliin funktioon VMPC ( Variably Modified Permutation Composition ):
Algoritmi avaimen [2] ja (valinnaisesti) alustusvektorin muuntamiseksi 256 elementin permutaatioksi P. Globaalimuuttujan s alustus.
C: Avaimen pituus tavuina
K: Avain
z : Alustusvektorin pituus tavuina
V: Alustusvektori
i: 8-bittinen muuttuja
j : 16-bittinen muuttuja
s : 8-bittinen globaali muuttuja
P: 256 tavun taulukko permutaatioiden tallentamiseen
1.s = 0 2. i = 0 - 255: P[i] = i 3. j = 0 - 767 // suorita vaiheet. 4-6: 4. i = j mod 256 5. s = P[(s + P[i] + K[j mod c]) mod 256] 6. Lämpötila = P[i] P[i] = P[s] P[s] = Temp 7. Jos käytetään alustusvektorimuunnosta j = 0 - 767 // suorita vaiheet. 8-10: 8. i = j mod 256 9. s = P[(s + P[i] + V[j mod z]) mod 256] 10. Lämpötila = P[i] P[i] = P[s] P[s] = TempLähtönäppäinsarjan luominen [2] .
Luodaksesi L tavua tulosavainvirrasta, suoritetaan seuraavat toiminnot:
L: näppäinsarjan pituus tavuina
1. i = 0 2. Toista kappaleet. 3-6 L kertaa: 3. s = P[(s + P[i]) mod 256] 4. Lähtö = P[(P[P[s]] + 1) mod 256] 5. Lämpötila = P[i] P[i] = P[s] P[s] = Temp 6. i = (i + 1) mod 256VMPC-funktio [2] , jonka aste on k < n n-alkiojoukossa x∈A, A = {0,1,…n-1}:
x = 0 - n-1: Q k (x) = VMPC k (P(x)) = P(P k (P k-1 (…(P 1 (P(x)))…)))Missä P: A → A yksi yhteen n-elementin permutaatio
P i (x) n-elementin permutaatio,
P i = f i (P(x)), P i (x) ≠ P(x) ≠ P j (x) , i≠j i,j∈{1,2…k}
f i (x) = (x + i) mod n ,
Funktio VMPC 1 asteen Q 1 (x)= VMPC 1 (P(x) )=P(P(P(x))+1)
Funktio VMPC 2:n Q 2 potenssit (x)= VMPC 2 (P(x))=P(P(P(P(x))+1)+2)
Funktio VMPC 3:n Q 3 potenssit (x)= VMPC 3 (P(x))=P(P(P(P(P(x))+1)+2)+3)
P(x) on yksi muunnelmista [2] permutaatiosta {0,1,2,3,4}
x | 0 | yksi | 2 | 3 | neljä |
P(x) | 3 | 0 | neljä | yksi | 2 |
VMPC 1 (P(x)) | neljä | 2 | yksi | 0 | 3 |
VMPC 1 (P(x))=P(P(P(x)) + 1)
x=0
P(0) = 3
P(P(0)) = 1
P(P(0)) + 1 = 2
P(P(P(0) + 1)) = 4
VMPC 1 (P(0)) = 4
VMPC-funktion käänteisluvun löytäminen on laskennallisesti vaikeaa [2] .
Esimerkiksi kun n = 256, VMPC 1 -funktion käänteisarvon laskemiseksi tarvitaan operaatioita , VMPC 2 - , VMPC 3 - .
Arvoa Q(X)= VMPC k (P(X)) vastaavan n-elementin permutaatio P palautus .
X, Y ovat väliaikaisia muuttujia
Elementille P(x) = y otetaan käyttöön seuraava merkintä:
X − argumentti: kanta tai parametri
Y − arvo: parametri tai kanta vastaavasti
Esimerkki: elementille P(0) = 3: jos argumentti 0 on parametri , niin arvo 3 on kanta .
Algoritmi:
Löytää kaikki mahdolliset permutaation P elementit, kun on annettu Q ja jo löydetyt permutaatiosta P elementit.
D, C ovat väliaikaisia muuttujia
Nimitykset:
lause y on permutaatio P k + 2 elementin sekvenssi y , jota käytetään Q( y ) -arvon laskemiseen .
sekvenssin y sana x on sekvenssin y alkio numerolla x .
Algoritmi:
Valitaan sellainen uusi permutaatioelementti P, jonka laskeminen mahdollistaa elementtien P maksimimäärän löytämisen funktion VMPC k käänteisarvon löytämiseksi algoritmin myöhemmissä vaiheissa. Valinta-algoritmin tuloksena uuden elementin kanta määritetään ja sen parametriarvo valitaan mielivaltaisesti . Tämä algoritmi sopii tapaukseen k<4.
B, R ovat väliaikaisia muuttujia
T a , T v − väliaikaiset taulukot
W[j] − lukujono
Algoritmi:
Todennäköisyys saada kaksi peräkkäistä identtistä tulosta generoitaessa avainsekvenssiä VMPC-salauksella on yhtä suuri kuin ideaalisen satunnaissekvenssigeneraattorin vastaava todennäköisyys [2] . - näennäissatunnaisen sekvenssigeneraattorin sisäisen tilan bittien lukumäärä, yleensä yhtä suuri kuin . Vuonna 2005 A. Maksimov osoitti, että lähtöbittien perusteella on mahdollista erottaa VMPC-generaattorisekvenssi satunnaisesta virrasta [4]
B. Zhultakin suorittamat kokeet osoittivat, että tulossekvenssin esiintymistodennäköisyydessä ei ole tilastollisesti merkitsevää poikkeamaa:
Väitetään, että stream-salaus alkuperäisen RC4 :n merkittävän muutoksen vuoksi , ottaen huomioon sen haavoittuvuudet, kestää paremmin olemassa olevia tietovirtasalauksia ja RC4-salaukseen kohdistuvia hyökkäyksiä [2] . Samaan aikaan useimpien stream-salausten turvallisuus on käytännössä laskenut nollaan, kun samaa avainta käytetään eri selkeiden tekstien salaamiseen. Tällaisessa tapauksessa virtasalaus ei ole enää kertaluonteinen tyynygeneraattori (satunnaisten bittien virta selkeän tekstin salaamiseksi). Tämä ongelma on jossain määrin ratkaistu VMPC-salauksella käyttämällä ainutlaatuista alustusvektoria jokaiselle salatulle virralle.
Väitetään, että salaukseen kohdistuvan hyökkäyksen monimutkaisuus on operaatioita [2] . On kuitenkin olemassa menetelmä, joka suojaa algoritmia mahdollisilta haavoittuvuuksilta. Tämä lähestymistapa koostuu avaimesta riippuvan permutoinnin toistamisesta kahdesti: ennen alustusvektorista riippuvaa permutaatiota ja sen jälkeen. Tätä avainaikataulua kutsutaan KSA3:ksi.
Symmetriset salausjärjestelmät | |
---|---|
Suoratoista salauksia | |
Feistelin verkko | |
SP verkko | |
Muut |