Tilføjelse ( eng. padding ) i kryptografi - tilføjelse af meningsløse data til den krypterede information, med det formål at øge kryptografisk styrke . Forskellige polstringsteknikker blev brugt i klassisk kryptografi , polstringsteknikker blev meget brugt i computerkrypteringssystemer.
Formelle beskeder begynder og slutter ofte på forudsigelige måder, såsom " Respektfuldt... ". Hovedformålet med at anvende tilføjelsen på klassiske cifre er at fratage kryptoanalytikeren muligheden for at bruge en sådan forudsigelighed, når han krypterer en kendt tekst [1] . Den tilfældige udfyldningslængde forhindrer også kryptanalytikeren i at kende den nøjagtige længde af beskeden.
Mange klassiske cifre bruger specifikke mønstre (for eksempel firkanter, rektangler og så videre) som klartekst. Hvis beskeden, der sendes, ikke passer til skabelonen, skal den ofte udfyldes for at fuldføre skabelonen. Brugen af meningsløse tegn som et supplement komplicerer i dette tilfælde også kryptanalytikerens arbejde.
De fleste moderne kryptografiske hash-funktioner behandler beskeder i blokke med fast længde, og næsten alle bruger til en vis grad polstring.
Mange udfyldningsskemaer er baseret på at tilføje visse data til den sidste blok. F.eks. kan udfyldningen afledes fra den samlede længde af meddelelsen. Denne form for polstring anvendes normalt til hash-algoritmer baseret på Merkle-Damgor-strukturen .
Elektronisk kodebog (ECB) og cipher-block-chaining (CBC) er eksempler på krypteringstilstande . Krypteringstilstandene for symmetriske nøglealgoritmer kræver, at meddelelseslængden er et multiplum af blokstørrelsen, så meddelelsen skal muligvis udfyldes for at gøre den til en passende længde.
Ulempen ved polstringen er, at den gør teksten sårbar over for angreb fra Oracle . Dette angreb giver en angriber mulighed for at få viden om den besked, der sendes, uden at angribe blokchifferet primitivt; dette angreb kan undgås ved at sikre, at angriberen ikke kan få nogen viden om fjernelse af tilføjede bytes. Dette kan opnås ved at verificere en meddelelsesgodkendelseskode (MAC) eller digital signatur, før du fjerner udfyldningsbytes.
Bit polstringBitpolstring kan anvendes på en besked af enhver længde. Beskeden er polstret med en 1 bit ('1') og et vist antal nul bits ('0'). Antallet af nul-bits, der tilføjes, afhænger af den blokgrænse, som meddelelsen skal udfyldes til. I bit-termer er dette "1000...0000". Denne metode kan bruges til at fylde meddelelser med et hvilket som helst antal bit, det er absolut ikke nødvendigt, at de er et helt antal bytes. For eksempel er en 23-bit besked udfyldt med 9 bit for at udfylde en 32-bit blok:
… | 1011 1001 1101 0100 0010 011 1 0000 0000 |
Denne polstring er det første trin i et to-trins polstringsskema, der bruges i mange hash-funktioner, inklusive MD5 og SHA .
Byte udfyldningByte-udfyldning kan anvendes på meddelelser, der kan kodes som et helt antal bytes.
ANSI X.923I ANSI X.923 er bytes udfyldt med nuller, og den sidste byte angiver udfyldningsgrænsen eller antallet af tilføjede bytes.
Eksempel: I det følgende eksempel har blokken en størrelse på 8 bytes, og en udfyldning på 4 bytes er påkrævet.
... | DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 04 | ISO 10126I ISO 10126 [2] [3] skal polstringen være fyldt med tilfældige bytes, og den sidste byte skal angive antallet af tilføjede bytes.
Eksempel: I det følgende eksempel har blokken en størrelse på 8 bytes, og en udfyldning på 4 bytes er påkrævet.
... | DD DD DD DD DD DD DD DD | DD DD DD DD 81 A6 23 04 | PKCS7PKCS#7 er beskrevet i RFC 5652 .
Polstring i hele bytes. Værdien af hver byte er lig med antallet af tilføjede bytes, dvs. N bytes tilføjes med en værdi på N . Antallet af tilføjede bytes afhænger af den blokgrænse, som meddelelsen skal udvides til. Tilføjelsen vil være en af:
01 02 02 03 03 03 04 04 04 04 05 05 05 05 05 etc.Denne polstringsmetode (såvel som de to foregående) er kun veldefineret, hvis N er mindre end 256.
Eksempel: I det følgende eksempel har blokken en størrelse på 8 bytes og en udfyldning på 4 bytes er påkrævet
... | DD DD DD DD DD DD DD DD | DD DD DD DD 04 04 04 04 | ISO/IEC 7816-4ISO/IEC 7816 -4:2005 [4] er identisk med bitudfyldningsskemaet anvendt på N byte-tekst. I praksis betyder det, at den første ekstra byte nødvendigvis er '80', efterfulgt af 0 til N-1 bytes '00' om nødvendigt, indtil en blokgrænse nås. ISO/IEC 7816-4 er en kommunikationsstandard for smart cards og indeholder ikke i sig selv nogen kryptografiske specifikationer.
Eksempel: I det følgende eksempel har blokken en størrelse på 8 bytes og en udfyldning på 4 bytes er påkrævet
... | DD DD DD DD DD DD DD DD | DD DD DD DD 80 00 00 00 |Følgende eksempel viser udfyldning med kun én byte:
... | DD DD DD DD DD DD DD DD | DD DD DD DD DD DD DD 80 |Alle bytes, der skal udfyldes, er fyldt med nuller. Zero-padding-ordningen er ikke anerkendt af standarden, selvom den er beskrevet som en 1'er-padding-metode for hash-funktioner og MAC'er i ISO/IEC 10118-1 [5] og ISO/IEC 9797-1 . [6]
Eksempel: I det følgende eksempel har blokken en størrelse på 8 bytes og en udfyldning på 4 bytes er påkrævet
... | DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 00 |Zero-padding kan være irreversibel, hvis den oprindelige meddelelse endte med en eller flere null-bytes, hvilket gør det umuligt at skelne almindeligtekst-bytes fra padding-bytes.
I offentlig nøglekryptering er udfyldning den måde, hvorpå en meddelelse forberedes til kryptering eller signering med følgende skemaer: PKCS#1 , OAEP , PSS , PSSR, IEEE P1363 EMSA2 og EMSA5. Den moderne polstringsform for asymmetriske primitiver anvendes på RSA- algoritmen , når den bruges til at kryptere et begrænset antal bytes.
Operationen kaldes "Addition", fordi tilfældigt materiale i første omgang blot tilføjes til beskeden. Denne form for tilsætning er ikke sikker og bruges derfor ikke længere.
Selvom der anvendes perfekte kryptografiske procedurer, kan en angriber få viden om mængden af trafik, der er blevet genereret. Angriberen kan ikke specifikt vide, hvad Alice og Bob transmitterede, men ved muligvis, at beskeden blev transmitteret, og hvor lang tid det tog. I nogle situationer kan dette være meget slemt. For eksempel, når lande organiserer et hemmeligt angreb på et andet land: Dette kan være nok til at advare det land og fortælle det, at der foregår en masse hemmelig aktivitet.
Som et andet eksempel, når der krypteres Voice Over IP- streams , der bruger variabel bithastighedskodning, er antallet af bits pr. tidsenhed ikke skjult, og dette kan tjene til at gætte stemmesætningen. [7]
Tilføjelse af en besked hjælper med at gøre trafikanalyse vanskeligere. Typisk tilføjes tilfældige bits til slutningen af meddelelsen, der angiver, hvor mange sådanne bits der er i alt.
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |
Hash funktioner | |
---|---|
generelle formål | |
Kryptografisk | |
Nøglegenereringsfunktioner | |
Tjek nummer ( sammenligning ) | |
Hashes |
|