Muoto Säilyttää salauksen

Format -preserving encryption ( FPE ) tarkoittaa salausta, jossa tulos ( salausteksti ) on samassa muodossa kuin syöte ( plaintext ) .  Sanan "muoto" merkitys vaihtelee. Yleensä tarkoitetaan vain äärellisiä joukkoja , esimerkiksi:

Tällaisille äärellisille joukoille ja alla olevalle keskustelulle salaus vastaa N kokonaisluvun permutaatiota {0, ... , N −1 }, missä N  on alueen koko.

Miksi tarvitset FPE:tä

Rajoitettu kenttien pituus tai muoto

Ensimmäinen syy FPE:n käyttöön ovat ongelmat, jotka liittyvät salauksen käyttöön olemassa olevissa sovelluksissa, joissa on hyvin määriteltyjä tietomalleja. Tyypillinen esimerkki on esimerkiksi luottokortin numero1234567812345670 (16 tavua, vain numeroita).

Salauksen lisääminen tällaisiin sovelluksiin voi olla hankalaa, jos tietomallia on muutettava, koska se sisältää yleensä muutoksia kentän pituusrajoitukseen tai tietotyyppiin . Esimerkiksi luottokortin numeron lohkosalaus johtaa tulosteen muodossa heksadesimaali ( 0x96a45cbcf9c2a9425cde9e274948cb67, 34 tavua, heksadesimaalilukua) tai Base64 ( lqRcvPnCqUJc3p4nSUjLZw==, 24 tavua, aakkosnumeerisia ja erikoismerkkejä). Tämä rikkoo kaikki olemassa olevat sovellukset, jotka odottavat syötteenä 16-numeroista luottokortin numeroa.

Yksinkertaisten muotoiluongelmien lisäksi AES-128-CBC:tä käyttämällä tämä luottokortin numero voidaan koodata heksadesimaaliarvoon 0xde015724b081ea7003de4593d792fd8b695b39e095c98f3a220ff43522a2df02. Virheellisten merkkien tai koon kasvun aiheuttaman ongelman lisäksi CBC-moodilla salatut tiedot muuttaa arvoa, kun sen salaus puretaan ja salataan uudelleen. Tämä johtuu siitä, että satunnainen siemenarvo , jota käytetään salausalgoritmin alustamiseen ja joka sisältyy salattuun arvoon, on erilainen jokaisessa salausoperaatiossa. Siksi ei ole mahdollista käyttää CBC-moodilla salattuja tietoja yksilöllisenä avaimena tietokannan rivin tunnistamiseen .

FPE on välttämätön siirtymäprosessin yksinkertaistamiseksi säilyttämällä alkuperäisen tiedon muotoilu ja pituus, mikä mahdollistaa puhtaan tekstin korvaamisen sen kryptogrammilla käytetyissä sovelluksissa.

Pseudosatunnaislukujen luominen

Format Preserving Encryption (FPE) pystyy luomaan ainutlaatuisia ja toistamattomia numeroita. FPE:n päätarkoitus on salata tiedosto siten, että sekä alkuperäinen tiedosto että salattu tiedosto ovat samaa muotoa.

Jos esimerkiksi luodaan numerosarja 11111-88888, FPE ottaa ensimmäisen arvon 11111 ja salaa sen toiseksi 5-numeroiseksi numeroksi. Tämä prosessi jatkuu, kunnes viimeinen arvo 88888 on luettu. Kaikki salatut arvot ovat yksilöllisiä ja satunnaisia. Näitä numeroita käytetään tuotteen sarjaavaimena.

Vertailu todella satunnaisiin permutaatioihin

Vaikka todella satunnainen permutaatio on ihanteellinen FPE-salaus, suurille joukoille ei ole mahdollista luoda etukäteen ja muistaa todella satunnaista permutaatiota. FPE-ongelma on siis luoda näennäissatunnainen permutaatio salaisesta avaimesta siten, että yhden arvon laskenta-aika on pieni (ihannetapauksessa vakio, mutta mikä tärkeintä, pienempi kuin O (N)).

Vertailu lohkosalaukseen

N -bittinen lohkosalaus (esim. AES) on teknisesti FPE joukossa {0, ..., 2 n -1 }. Jos FPE tarvitaan johonkin standardijoukkoon (jossa n = 128, 192, 256), voit käyttää vaaditun kokoista lohkosalausta.

Kuitenkin vakiokäytössä lohkosalausta käytetään tilassa , joka sallii mielivaltaisen pitkien viestien salauksen, ja käyttämällä alustusvektoria, kuten edellä on käsitelty. Tässä tilassa lohkosalaus ei ole FPE.

Suojausmääritys FPE:lle

Salauskirjallisuudessa (katso linkit alla) FPE :n "hyvyys" määräytyy sen perusteella, pystyykö hyökkääjä erottamaan FPE:n todella satunnaisesta permutaatiosta. Hyökkääjät vaihtelevat sen mukaan, onko heillä pääsy oraakkeliin vai tietävätkö he salateksti/selkoteksti-parin.

FPE-algoritmit

Useimmissa edellä mainituissa lähestymistavoissa ihanteellisena satunnaisfunktiona käytetään tunnettua lohkosalausta (kuten AES ).

Tällöin salaisen avaimen tuominen algoritmiin on edullisesti helppoa. Edelleen tekstissä mitä tahansa hyvää lohkosalausta voidaan käyttää AES:n sijasta.

FPE-malleja Black and Rogawaylta

Lohkosalauksen taustalla olevaa FPE-toteutusta käyttivät ensin kryptografit John Black ja Phillip Rogaway , [1] , jotka kuvasivat 3 tapaa tehdä tämä. He ovat osoittaneet, että jokainen näistä menetelmistä on yhtä turvallinen kuin niiden luomiseen käytetty lohkosalaus. Tämä tarkoittaa, että vastustaja, joka pystyy purkamaan FPE-algoritmin salauksen, voi myös purkaa AES-algoritmin salauksen. Siksi luotettaville AES-algoritmeille myös niihin rakennetut FPE-algoritmit ovat luotettavia. Tästä eteenpäin E tarkoittaa AES-salausoperaatiota, jota käytetään FPE-algoritmin rakentamiseen, ja P  FPE:tä.

FPE perustuu etuliitesalaukseen

Yksinkertainen tapa luoda FPE-algoritmi joukolle {0,…, N -1} on määrittää jokaiselle kokonaisluvulle näennäissatunnainen paino ja lajitella sitten painon mukaan. Painot määritetään käyttämällä olemassa olevaa lohkosalausta jokaiseen kokonaislukuun. Black ja Rogoway kutsuvat tätä menetelmää "etuliitesalaukseksi".

Joten jos haluat luoda FPE:n joukolle {0,1,2,3} annetulla avaimella K , käytä AES( K ) jokaiseen joukkomme kokonaislukuun, esimerkiksi

weight(0) = 0x56c644080098fc5570f2b329323dbf62
weight(1) = 0x08ee98c0d05e3dad3eb3d6236f23e7b7
weight(2) = 0x47d2e1bf72264fa01fb274465e56ba20
weight(3) = 0x077de40941c93774857961a8a772650d

Lajittelemalla [0,1,2,3] painon mukaan saadaan [3,1,2,0], joten salaus näyttää tältä:

F(0) = 3
F(1) = 1
F(2) = 2
F(3) = 0.

Tätä menetelmää käytetään vain pienille N:n arvoille. Suurille arvoille hakutaulukon koko ja taulukon alustamiseen tarvittava määrä koodauksia tulee liian suureksi.

FPE pyöräilystä

Jos näennäissatunnaisen permutaatioalueen P sisällä on joukko M kelvollisia arvoja (esimerkiksi P voisi olla AES-tyyppinen lohkosalaus), FPE-algoritmi voidaan generoida lohkosalauksesta käyttämällä lohkosalausta toistuvasti. kunnes tulos on yksi kelvollisista arvoista ( M sisällä ).

CycleWalkingFPE(x) { jos "P"(x) on "M":n elementti palauta "P"(x) muu paluu CycleWalkingFPE(''P''(x)) }

Kierros loppuu varmasti. (Koska P kulkee peräkkäin ja joukko on äärellinen, P :n toistuva käyttö muodostaa syklin, joten alkaen pisteestä M :ssä sykli pysähtyy kohtaan M. )

Tämän menetelmän etuna on, että joukon M alkioita ei tarvitse yhdistää kokonaislukujen sekvenssin {0,…, N -1} alkioihin. Haittapuolena on suuri iteraatioiden määrä jokaiselle operaatiolle, jos M on paljon pienempi kuin joukko P . Jos P  on tietyn kokoinen lohkosalaus, kuten AES, M :llä on kova rajoitus , jonka alla tämä menetelmä on tehokas.

Sovelluksen on esimerkiksi salattava 100-bittinen AES-arvo, jotta tulos on erilainen 100-bittinen arvo. Tällä tekniikalla AES-128-ECB-salausta voidaan käyttää, kunnes se saavuttaa arvon, jossa 28 tärkeintä bittiä on yhtä suuri kuin 0, mikä kestää keskimäärin 228 iteraatiota.

FPE perustuu Feistelin verkkoon

Toinen tapa luoda FPE-algoritmi perustuu Feistel-verkon käyttöön . Feistelin verkko tarvitsee näennäissatunnaisten arvojen lähteen jokaisen kierroksen avaimille, ja AES-algoritmin lähtöä voidaan käyttää arvoina. Tuloksena oleva Feistel-rakenne on kestävä, jos käytetään riittävästi patruunoita. [2]

Eräs tapa toteuttaa Feistel-verkkoon ja AES:ään perustuva FPE-algoritmi on käyttää AES-algoritmin lähdössä sitä bittimäärää, joka olisi yhtä suuri kuin Feistel-verkon vasemman tai oikean puoliskon pituus. Esimerkiksi, jos avaimelle tarvitaan 24-bittinen arvo, voidaan käyttää AES-algoritmin lähdön viimeisiä 24 bittiä.

Tämä menetelmä ei välttämättä säilytä muotoa, mutta Feistel-verkkoa on mahdollista käyttää uudelleen samalla tavalla kuin pyöräilymenetelmää, kunnes muoto säilyy. Säätämällä Feistel-verkkoon tulevan tulon kokoa, silmukka saadaan valmiiksi nopeasti. Mahdollisia 16-numeroisia luottokorttinumeroita on esimerkiksi 10 16 (10 16 = 2 53,1 ). 54-bittistä Feistel-verkkoa ja pyöräilyä käyttämällä on mahdollista luoda FPE-algoritmi, joka salaa melko nopeasti.

Muut FPE-mallit

Useat muut FPE-rakenteet luottavat erilaisiin menetelmiin standardinmukaisen salausmoduulin lähdön lisäämiseksi salattavaan dataan. Modulo n:n lisääminen on melko ilmeinen ratkaisu FPE-salausongelmaan.

Kohdassa 8 FIPS 74, Federal Information Processing Standards Publication 1981 Guidelines for Implementing and Use the NBS Data Encryption Standard , [3] kuvaa tapaa käyttää DES-salausalgoritmia, joka säilyttää datamuodon lisäämällä modulo n. Tämä standardi poistettiin 19. toukokuuta 2005, joten menetelmä on vanhentunut standardin kannalta.

Toinen tapa säilyttää muotoa säilyttävä salaus oli Peter Gutmanin "Encrypting data with a range range of value", [4] jossa käsiteltiin algoritmia, joka myös suoritti modulo n -lisäyksen tietyin säädöin.

Michael Brightwellin ja Harry Smithin teos "Using Datatype-Preserving Encryption to Enhance Data Warehouse Security" [5] kuvaa tapaa käyttää DES - salausalgoritmia, joka säilyttää selväkielisen datamuodon. Tämä menetelmä ei käytä modulo n -lisäystä.

Mihir Bellarin ja Thomas Ristenpartin teos "Format-Preserving Encryption" [6] kuvaa "lähes tasapainoisen" Feistel-verkon käyttöä suojatun FPE-algoritmin luomiseksi.

Ulf Mattssonin Format Controlling Encryption using Datatype Preserving Encryption [7] kuvaa muita menetelmiä FPE-algoritmin toteuttamiseksi.

Esimerkki FPE-algoritmista on FNR ( Flexible Naor and Reingold ). [kahdeksan]

FPE-algoritmien hyväksyminen valtion standardien mukaan

NIST on julkaissut erikoisjulkaisun 800-38G, DRAFT Recommendation for Block Cipher Modes of Operation: Methods for Format-Preserving Encryption. [9] Tässä julkaisussa määritellään kolme menetelmää FF1, FF2 ja FF3. Yksityiskohdat näistä sekä patentti- ja testipakkaustiedot löytyvät NIST Block Cipher Modes Development -verkkosivustolta. [kymmenen]

  • FF1 on FFX "Format-preserving Feistel-based Encryption Mode". Sen toimittivat NIST:lle Mihir Ballar UC San Diegosta , Philip Rogaway UC Davisista ja Terence Spice of Voltage Security Inc. Testisarja toimitetaan ja osa siitä on patentoitu.
  • FF2 on VAES3-skeema FFX:lle: Lisäys artikkeliin "FFX-toimintatila salauksen säilyttämiseksi." Sen esitteli NIST:ssä VeriFone Systems Inc:n Joachim Vance. Toisin kuin FF1, testipakettia ei toimiteta, ja osa siitä on patentoitu.
  • FF3 on kirjoittajiensa mukaan nimetty BPS. Sen esittelivät NIST:ssä Eric Braer, Thomas Pyrin ja Jacques Stern, Ingenico, Ranska. Testisarjaa ei toimiteta tai patentoitu.

Muistiinpanot

  1. John Black ja Phillip Rogaway, Ciphers with Arbitrary Domains, Proceedings RSA-CT, 2002, pp. 114-130. http://citeseer.ist.psu.edu/old/black00ciphers.html ( http://www.cs.ucdavis.edu/~rogaway/papers/subset.pdf )
  2. Jacques Patarin, Luby-Rackoff: 7 kierrosta riittää 2 n (1-epsilonin) turvaan , Proceedings of CRYPTO 2003, Lecture Notes in Computer Science, Volume 2729, lokakuu 2003, s. 513-529. http://www.iacr.org/archive/crypto2003/27290510/27290510.pdf ; myös Jaques Patrin: Satunnaisten Feistel-järjestelmien turvallisuus viidellä tai useammalla kierroksella. http://www.iacr.org/archive/crypto2004/31520105/Version%20courte%20Format%20Springer.pdf
  3. FIPS 74, Federal Information Processing Standards Publication 1981 Guidelines for Implementing and use NBS Data Encryption Standard Arkistoitu kopio (linkki ei ole käytettävissä) . Haettu 14. kesäkuuta 2009. Arkistoitu alkuperäisestä 3. tammikuuta 2014. 
  4. Peter Gutmann, "Tietojen salaus rajoitetulla arvoalueella", 23. tammikuuta 1997, http://groups.google.com/group/sci.crypt/browse_thread/thread/6caf26496782e359/e576d7196b6cdb48
  5. Michael Brightwell ja Harry Smith, "Using Datatype-Preserving Encryption to Enhance Data Warehouse Security", Proceedings of the 1997 National Information Systems Security Conference Arkistoitu kopio . Haettu 7. heinäkuuta 2009. Arkistoitu alkuperäisestä 19. heinäkuuta 2011.
  6. Mihir Bellare ja Thomas Ristenpart, Format-Preserving Encryption http://eprint.iacr.org/2009/251
  7. Ulf Mattsson, Format Controlling Encryption using Datatype Preserving Encryption http://eprint.iacr.org/2009/257
  8. Sashank Dara, Scott Fluhrer. Joustava Naor ja Reingold . Cisco Systems Inc.
  9. Erikoisjulkaisu 800-38G, LUONNOS Suositus lohkosalauskäyttötapoja varten: Methods for Format-Preserving Encryption , < http://csrc.nist.gov/publications/PubsDrafts.html#SP-800-38-G > 
  10. NIST Block Cipher Modes Development , < http://csrc.nist.gov/groups/ST/toolkit/BCM/modes_development.html >