Lohkosalauksen toteutuksesta (2-A)

Lohkosalauksessa (block cipher) salattava teksti jaetaan samanmittaisiin pätkiin, lohkoihin, joita muutetaan algoritmin ja sen käyttämän avaimen avulla. Tämä eroaa vuosalauksesta (stream cipher), jossa selvätekstinen merkkijono syötetään algortimille merkki kerrallaan "tasaisena vuona". Yksi ensimmäisistä ja yleisimmin käytössä olleista lohkosalaus algoritmeista on DES, joka perustuu Feistelin periaatteeseen.

Diffuusion ja konfuusion toteuttamiseksi lohkoalgoritmeissa voidaan rakentaa moduuleja, "laatikoita":
  • permutaatio eli järjestyksen vaihto, P-laatikko.
  • substituutio eli korvaus, S-laatikko.
Kuhunkin laatikkoon tulee syötteenä muunnettavan tekstin lisäksi avain tai jokin erikseen laskettu muunnelma avaimesta.

Koko lohkoalgoritmi on tavallaan yksi iso yhdistetty S- ja P-laatikko, mutta jotta laatikot saataisiin käytännöllisen kokoisiksi täytyy niitä soveltaa useita kertoja, iteroida, ja aina muunnella jotain parametreja eri kierroksilla. Tällä tavoin saadaan aikaan ns. SP-verkko, 'substitution-permutation network'. Siinä siis tehdään tekstille vuoronperään avaimesta riippuvia korvauksia ja paikanvaihtoja useita kierroksia. Pienistä yksinkertaisista osista tähän tapaan kokoonpantua mutkikasta salausalgoritmia kutsutaan tuloalgoritmiksi (product cipher).

Keskeinen esimerkki tällaisesta on 1970-luvun alussa kehitetty Feistelin periaate. Useimmat algoritmit pohjautuvat siihen mutta ei enää esim. AES. Feistel-verkossa on jokin kiinteä funktio f, jota sovelletaan avaimeen (tai siitä laskettuun lukuun) ja viestin loppupuolikkaaseen. Tulos XOR-summataan viestin alkupuolikkaan kanssa. Seuraavaa kierrosta varten puolikkaat vaihdetaan, eli loppuun tulee äskeinen summa ja alkuun äskeinen loppupuolikas sellaisenaan. Kierroksia tehdään tietty määrä. Joka kierroksella käytetään avaimesta eri tavalla muodostettua osa-avainta. Salauksen purku ei edellytä funktion f kääntämistä (eikä edes sitä että se olisi kääntyvä), vaan riittää toistaa samat kierrokset ja operaatiot kuin salauksessa, kunhan osa-avainten muodostama jono käydään lopusta alkuun. Tällöin funktio f tulee lasketuksi tarkalleen samoista arvoista kuin salauksessa ja XOR-operaation "käänteisyys" hoitaa loput (siis se, että XOR on idempotentti eli x XOR x = 0).

Valitsemalla erilaisia funktioita f, ja erilaisia osa-avainjonoja (eli avainsekvenssejä), saadaan erilaisia algoritmeja. On myös useita läheisiä muunnoksia Feistel-periaatteesta. Esimerkiksi funktion f ei tarvitse olla kiinteä, vaan se voi vaihtua eri kierroksilla.


-- JukkaKoskinen?

SivuTiedotLaajennettu edit

Vaativuus Jatko
Valmius Kehitteillä
Tyyppi Ydin
Luokitus Krypto
Mitä Luottamuksellisuus
Miltä Tahallinen uhka
Missä Järjestelmä
Kuka Titu-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Print version |  PDF  | History: r4 < r3 < r2 < r1 | 
Topic revision: r4 - 19 Nov 2010 - 16:20:19 - RurikYlaOnnenvuori?
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback