Kraakmethoden voor versleutelingsalgoritmen

Versleuteling is een van de belangrijkste (en waarschijnlijk de meest effectieve) methoden om de vertrouwelijkheid van gegevens te beschermen, d.w.z. bescherming van gegevens tegen ongeoorloofde toegang. Versleuteling is de transformatie van open data naar gesloten data (volgens een bepaalde versleutelingsalgoritme met een uniek element - coderingssleutel ), genaamd \ encryptie \ ​omgekeerde transformatie - open data ophalen van versleuteld - genaamd \ decoderen \ , is er ook een sleutel bij deze operatie betrokken.

Versleuteling is een van de belangrijkste (en waarschijnlijk de meest effectieve) methoden om de vertrouwelijkheid van gegevens te beschermen, d.w.z. bescherming van gegevens tegen ongeoorloofde toegang. Versleuteling is de transformatie van open data naar gesloten data (volgens een bepaalde versleutelingsalgoritme met een uniek element - coderingssleutel ), genaamd \ encryptie \ ​omgekeerde transformatie - open data ophalen van versleuteld - genaamd \ decryptie \(decodering) , is er ook een sleutel bij deze operatie betrokken.

De coderingssleutel is geassocieerd met een specifieke relatie met de decoderingssleutel; in wat volgt zullen we alleen die coderingsalgoritmen beschouwen waarin de decoderingssleutel en de coderingssleutel samenvallen ( symmetrische versleuteling ).

De coderingssleutel \personaliseert\ het coderingsalgoritme - zonder de vereiste coderingssleutel te kennen, is het vrij moeilijk om de gegevens te decoderen. De moeilijkheidsgraad van het verkrijgen van open gegevens van versleutelde gegevens (en het verkrijgen van een versleutelingssleutel in de aanwezigheid van een bepaalde set gegevens - meer hierover hieronder) is een van de belangrijkste kenmerken van versleutelingsalgoritmen en wordt de cryptografische sterkte .

De wetenschap van het tegengaan van cryptografische beschermingsmethoden (waaronder codering) wordt genoemd cryptanalyse ​In feite is cryptanalyse een verzameling wiskundige technieken voor het kraken van coderingsalgoritmen. Dezelfde evolutionaire oppositie is hier duidelijk terug te vinden als in het geval van bepantsering en een projectiel: steeds hardnekkiger (zonder verlies van andere belangrijke kenmerken - bijvoorbeeld in snelheid) versleutelingsalgoritmen verschijnen, in reactie waarop steeds meer geavanceerde methoden van het breken ervan zijn uitgevonden. P>


Laten we eens kijken naar moderne cryptanalytische methoden, waarvoor we beginnen met het classificeren van aanvallen op coderingsalgoritmen.

Aanvallen op versleutelingsalgoritmen

Bij het uitvoeren van een aanval kan een cryptanalyticus proberen de volgende problemen op te lossen:

1. De platte tekst ophalen uit de versleutelde.

2. Bereken de coderingssleutel.

Over het algemeen is de tweede van de genoemde taken aanzienlijk gecompliceerder dan de eerste. Als een crypto-analist echter een coderingssleutel heeft, kan hij vervolgens alle gegevens decoderen die met de gevonden sleutel zijn gecodeerd. Zo'n aanval (indien succesvol) wordt genoemd volledige openbaarmaking versleutelingsalgoritme.

Aanvallen op versleutelingsalgoritmen worden meestal geclassificeerd op basis van de set informatie die de aanvaller heeft voordat hij zijn aanval uitvoert. Allereerst kunnen cryptanalytische aanvallen worden onderverdeeld in twee categorieën:

Categorie 1. Een cryptoanalyticus kan alleen passief luisteren naar een bepaald kanaal waardoor versleutelde gegevens worden verzonden (zie figuur 1). Het resultaat is dat de aanvaller alleen een reeks cijferteksten heeft die met een specifieke sleutel zijn versleuteld. Dit wordt een -aanval genoemd. bekende cijfertekst ​Dit is het moeilijkst, maar dit type aanval komt het meest voor, aangezien het het meest \essentieel\ is - in de overgrote meerderheid van de echte gevallen kan de crypto-analist niet meer gegevens verkrijgen.

Figuur: 1. Passieve onderschepping van versleutelde gegevens.

Categorie 2. Veronderstelt dat de crypto-analist een soort coderingsapparaat heeft met de coderingssleutel ingebed, dat het doelwit is van de aanval. Zo'n apparaat kan bijvoorbeeld een cryptografische smartcard zijn. Een cryptoanalyticus kan bepaalde acties uitvoeren met de encryptor (toegestaan ​​door de encryptor en zijn technische omgeving, evenals door de tactische voorwaarden voor het uitvoeren van een aanval) om de informatie te verkrijgen die hij nodig heeft, bijvoorbeeld door elke platte tekst door de encryptor om de corresponderende cijferteksten te verkrijgen (zie Fig. 2).

Figuur: 2. Actieve invloed op de encoder.

Afhankelijk van de gegevens die de cryptanalyticus uit de encryptor kan \extraheren\, zijn er de volgende soorten aanvallen:

1. Bekende aanval in platte tekst ​Veronderstelt dat de cryptanalyticus een aantal tekstparen heeft, die elk een platte tekst zijn en de bijbehorende cijfertekst.

2. Geselecteerde aanval in platte tekst ​De cryptanalyticus heeft de mogelijkheid om platte teksten te selecteren om de bijbehorende cijferteksten te verkrijgen (hoe dit nuttig kan zijn voor de cryptanalyticus wordt hieronder besproken).

3 ​Adaptieve selectieaanval in platte tekst ​Een cryptanalyticus kan niet alleen open teksten voor versleuteling kiezen, maar dit ook herhaaldelijk doen, rekening houdend met de resultaten van de analyse van eerder verkregen gegevens.

4. Selecteer cijfertekstaanval ​Een cryptanalyticus kan cijferteksten selecteren en, door ze door een coderingsprogramma te leiden, door decodering de bijbehorende platte tekst verkrijgen.

5. Adaptieve cijfertekstselectie-aanval. Naar analogie met de eerder beschreven aanvallen, is het duidelijk dat een cryptanalyticus herhaaldelijk cijferteksten kan selecteren om ze te ontsleutelen, rekening houdend met eerdere resultaten.

In theorie zijn de mogelijkheden van een cryptanalyticus mogelijk niet beperkt tot de hierboven genoemde; serieuzere opties voor de invloed van een cryptanalyticus op een scrambler zullen in een later deel van dit artikel worden besproken.

Kwantificering van de sterkte van coderingsalgoritmen

Cryptoweerstand is een kwantitatief kenmerk van versleutelingsalgoritmen - er is een bepaald aantal bronnen nodig om onder bepaalde voorwaarden een specifiek versleutelingsalgoritme te openen (inclusief een bepaalde cryptanalytische methode). Bronnen zijn in dit geval de volgende waarden:

1. De hoeveelheid informatie die nodig is om een ​​aanval uit te voeren, bijvoorbeeld hoeveel paren bekende of geselecteerde teksten er nodig zijn.

2. De tijd die nodig is om de aanval uit te voeren. Het wordt meestal gemeten in het aantal testversleutelingsbewerkingen door het aangevallen algoritme, waarvan de uitvoering, als aan andere noodzakelijke voorwaarden is voldaan, bijvoorbeeld de coderingssleutel zal berekenen.

3. Geheugen dat nodig is om informatie op te slaan die tijdens een aanval wordt gebruikt. Het is ook een belangrijk kenmerk, aangezien veel aanvallen zeer aanzienlijke geheugenvereisten kunnen hebben.

De combinatie van deze drie waarden kenmerkt een specifieke aanval op een specifiek versleutelingsalgoritme. En het beste (dat een minimum aan bronnen vereist) van de mogelijke aanvallen op een algoritme kenmerkt zijn cryptografische kracht.

Hierna wordt aangenomen dat de aanvaller het versleutelingsalgoritme zelf kent - alleen de sleutel is onbekend. De overgrote meerderheid van cryptanalytische methoden (die in de volgende delen van het artikel zullen worden besproken) zijn gebaseerd op een grondige kennis van het aangevallen algoritme door de cryptanalyticus. Er is ook nog een belangrijk kenmerk van het versleutelingsalgoritme - hoeveel de cijferteksten die met zijn hulp worden verkregen, verschillen van een willekeurige reeks. Bovendien kan dit kenmerk kwantitatief worden uitgedrukt in dezelfde drie soorten bronnen die hierboven zijn beschreven, maar dit is al een onderwerp voor een apart artikel.

Cryptanalyse van gewijzigde algoritmen

Er zijn veel coderingsalgoritmen die cryptografisch sterk zijn. In een bekend werk wordt het concept van een sterk algoritme als volgt gedefinieerd:

1. Een algoritme is cryptografisch veilig als er geen methoden zijn om het te onderscheiden van de brute force-methode, die in het volgende deel van het artikel wordt besproken.

2. Bovendien is de sleutelgrootte van het algoritme groot genoeg om de brute-force-methode onmogelijk te maken op het huidige niveau van computertechnologie.

Het kan echter nodig zijn om twee of meer cryptografisch sterke versleutelingsalgoritmen met elkaar te vergelijken (zoals bijvoorbeeld in een open competitie voor een nieuwe Amerikaanse versleutelingsstandaard AES). In dit geval wordt een ander kenmerk gebruikt (eerder kwalitatief dan kwantitatief): de veiligheidsmarge.

Het is bekend dat de overgrote meerderheid van moderne versleutelingsalgoritmen bestaat uit een bepaald aantal ronden, waarin dezelfde (of vergelijkbare) transformaties worden herhaald over de versleutelde gegevens. Om de marge van cryptografische sterkte te bepalen, analyseert u het algoritme met afgekapt rondes - d.w.z. wijziging van het algoritme dat wordt bestudeerd, waarbij het aantal rondes wordt verminderd in vergelijking met het specifieke aantal rondes dat in het algoritme is voorzien. De cryptografische sterktemarge kan worden gedefinieerd als de verhouding tussen het aanvankelijke aantal ronden van het bestudeerde algoritme en het maximale aantal ronden van de wijzigingen die niet cryptografisch sterk zijn.

Een andere mogelijkheid om de cryptografische sterkte te bepalen, is het analyseren van modificaties van het onderzochte algoritme met kleine veranderingen in de ronde structuur. Een van de meest opvallende voorbeelden is het kraken van het Skipjack-3XOR-algoritme met slechts 29 geselecteerde platte teksten en hun bijbehorende cijferteksten door slechts ongeveer een miljoen testversleutelingsbewerkingen uit te voeren. Volgens moderne normen kan Skipjack-3XOR dankzij deze aanval als een zeer zwak algoritme worden beschouwd, maar het verschilt van het bekende en vrij wijdverspreide coderingsalgoritme Skipjack doordat slechts 3 specifieke XOR-bewerkingen uit de structuur van de laatste worden verwijderd ( bitsgewijze logische bewerking \exclusief of\) van dergelijke bewerkingen geleverd door het Skipjack-algoritme (!). Dienovereenkomstig waren er (echter onbewezen) aannames over de onvoldoende cryptografische kracht van het Skipjack-algoritme. In het geval van het analyseren van algoritmen met vergelijkbare aanpassingen, kan de cryptografische sterktemarge echter alleen worden beschouwd als een kwalitatief kenmerk dat een nogal indirecte relatie heeft met het versleutelingsalgoritme dat wordt bestudeerd.

1