VMPC ( Variably Modified Permutation Composition ) er en stream-chiffer [1] der bruges i nogle informationssikkerhedssystemer i computernetværk. Chifferen blev udviklet af kryptografen Bartosz Zultak ( polsk: Bartosz Żółtak , engelsk: Bartosz Zoltak ) som en forbedret version af den populære RC4 -chiffer . VMPC-algoritmen er bygget som enhver stream-chiffer baseret på en nøgleparameteriseret pseudo-tilfældig bitgenerator. De vigtigste fordele ved chifferen, som RC4, er høj hastighed, variabel størrelse på nøglen og initialiseringsvektor (fra 128 til 512 bit inklusive), nem implementering (bogstaveligt talt et par dusin linjer kode). [2]
Grundlaget for chifferen er en pseudo-tilfældig talgenerator [3] , som er baseret på en envejs irreversibel funktion VMPC ( Variably Modified Permutation Composition ):
Algoritme til konvertering af nøglen [2] og (valgfrit) initialiseringsvektoren til en 256-elements permutation P. Initialisering af den globale variabel s.
C : Nøglenængde i bytes
K: Nøgle
z : Længde af initialiseringsvektoren i bytes
V : Initialiseringsvektor
i: 8-bit variabel
j : 16-bit variabel
s : 8-bit global variabel
P : tabel med 256 bytes til lagring af permutationer
1.s = 0 2. for i = 0 til 255: P[i] = i 3. for j = 0 til 767 // udfør trin. 4-6: 4. i = j mod 256 5. s = P[(s + P[i] + K[j mod c]) mod 256] 6. Temp = P[i] P[i] = P[s] P[s] = Temp 7. Hvis initialiseringsvektortransformation anvendes for j = 0 til 767 // udfør trin. 8-10: 8. i = j mod 256 9. s = P[(s + P[i] + V[j mod z]) mod 256] 10. Temp = P[i] P[i] = P[s] P[s] = TempGenerering af outputtastsekvens [2] .
For at generere L bytes af outputnøglestrømmen udføres følgende operationer:
L : længden af tastesekvensen i bytes
1. i = 0 2. Gentag afsnit. 3-6 L gange: 3. s = P[(s + P[i]) mod 256] 4. Output = P[(P[P[s]] + 1) mod 256] 5. Temp = P[i] P[i] = P[s] P[s] = Temp 6. i = (i + 1) mod 256VMPC-funktion [2] af grad k < n over et n-elementsæt x∈A, A = {0,1,…n-1}:
for x = 0 til n-1: Q k (x) = VMPC k (P(x)) = P(P k (P k-1 (…(P 1 (P(x)))...)))Hvor P: A → En en-til-en n-element permutation
Pi (x) n-element permutation, Pi
= fi ( P(x)), Pi ( x) ≠ P(x) ≠ P j (x) , i≠j i,j∈{1,2…k} fi
( x) = (x + i) mod n ,
Funktion VMPC 1 af grad Q 1 (x)= VMPC 1 (P(x) )=P(P(P(x))+1)
Funktion VMPC 2 potenser af Q 2 (x)= VMPC 2 (P(x))=P(P(P(P(x))+1)+2)
Funktion VMPC 3 potenser af Q 3 (x)= VMPC 3 (P(x))=P(P(P(P(P(x))+1)+2)+3)
P(x) er en af varianterne [2] af permutationen {0,1,2,3,4}
x | 0 | en | 2 | 3 | fire |
P(x) | 3 | 0 | fire | en | 2 |
VMPC 1 (P(x)) | fire | 2 | en | 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
At finde den gensidige af VMPC-funktionen er beregningsmæssigt vanskelig [2] .
For eksempel, for n = 256, for at beregne den inverse værdi af VMPC 1 -funktionen, kræves operationer , for VMPC 2 - , for VMPC 3 - .
Gendannelse af n - elementpermutationen P svarende til værdien Q(X)= VMPC k (P(X)).
X, Y er midlertidige variable
For elementet P(x) = y introduceres følgende notation:
X − argument: base eller parameter
Y − værdi: henholdsvis parameter eller base
Eksempel: for element P(0) = 3: hvis argument 0 er parameter , så er værdi 3 base .
Algoritme:
At finde alle mulige elementer af permutationen P givet Q og allerede fundne elementer af permutationen P.
D, C er midlertidige variable
Betegnelser:
sætning y er en sekvens y af k + 2 elementer af permutationen P, der bruges til at beregne Q( y ).
ord x i sekvens y er elementet i sekvens y med nummer x .
Algoritme:
Valget af et sådant nyt permutationselement P, hvis beregning vil gøre det muligt at finde det maksimale antal elementer P ved efterfølgende trin af algoritmen til at finde den inverse værdi af funktionen VMPC k. Som et resultat af udvælgelsesalgoritmen bestemmes bunden af det nye element, og dets parameterværdi er vilkårligt valgt . Denne algoritme er egnet til tilfældet k<4.
B, R er midlertidige variable
T a , T v − midlertidige arrays
W[j] − række af tal
Algoritme:
Sandsynligheden for at opnå to på hinanden følgende identiske resultater ved generering af en nøglesekvens ved hjælp af VMPC-krypteringen er lig med den tilsvarende sandsynlighed for en ideel tilfældig sekvensgenerator [2] . - antallet af bits i den interne tilstand af pseudo-tilfældig sekvensgenerator, normalt lig med . I 2005 viste A. Maksimov, at det, baseret på output-bittene, er muligt at skelne VMPC-generatorsekvensen fra en tilfældig strøm [4]
Eksperimenter udført af B. Zhultak viste, at der ikke er nogen statistisk signifikant afvigelse i sandsynligheden for forekomst i outputsekvensen:
Det hævdes, at stream-chifferet, på grund af den betydelige modifikation af den originale RC4 , under hensyntagen til dens sårbarheder, er mere modstandsdygtig over for eksisterende angreb på stream-ciffer og angreb på RC4-ciffer [2] . Samtidig er sikkerheden for de fleste stream-cifre praktisk talt reduceret til nul, når du bruger den samme nøgle til at kryptere forskellige klartekster. I et sådant tilfælde er stream-chifferet ikke længere en engangs-pad-generator (en strøm af tilfældige bits til at kryptere klarteksten). Dette problem løses i nogen grad af VMPC-chifferet ved at bruge en unik initialiseringsvektor for hver krypteret strøm.
Det hævdes, at kompleksiteten af angrebet på chifferen er operationer [2] . Der er dog en metode, der beskytter algoritmen mod mulige sårbarheder. Denne tilgang består i at gentage den nøgleafhængige permutation to gange: før og efter den initialiseringsvektorafhængige permutation. Denne nøgletidsplan omtales som KSA3.
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |