Kuinka saan salaukseni näyttämään lumivyöryvaikutuksen?

Olen salauksen aloittelija. Suunnittelin salasanapohjaisen salauksen-salauksen purkualgoritmin, joka käyttää satunnaista suolaa ja salasanaa viestin salaamiseen. Käytän SHA-512: tä hajauttamiseen, matriisitoimintoja sekoittamiseen, bittiä XOR: n tietojen sekoittamiseen ja noutamiseen. Suolan ja salatun tekstin pituus on 256 kirjainta.

Tietoni mukaan lumivyöryvaikutus tarkoittaa pientä muutosta jossakin seuraavista:

  • salaus
  • salasana
  • suola

on muutettava lähtöä voimakkaasti.

Jos toteutukseni aikana vaihdan suolaa tai salausta, en näe suuria muutoksia ulostulo. Kuitenkin, kun salasanassa tapahtuu pieni muutos, tulos muuttuu rajusti.

Joten, kysymykseni:

  • Onko käsitykseni lumivyöryvaikutuksesta yleensä oikea? Jos ei, niin mitä sen pitäisi olla?
  • Mitä voin tehdä tuottamaan lumivyöryvaikutuksen (tai millä tahansa) salauksella? Pitäisikö minun vähentää suolan pituutta vähemmän ja luoda pienempi salausteksti lumivyöryvaikutuksen luomiseksi? Jos ei, niin miten voin saavuttaa tämän?

Kommentit

  • Mihin käytät uteliaisuudesta hashia?
  • Tervetuloa kryptografisen pinon vaihtoon. @Avinash, kysymyksesi siirrettiin tänne, koska se on enemmän aiheesta kuin Stack Overflow. Rekisteröi tilisi täällä, jotta voit kommentoida ja hyväksyä vastauksen.
  • Jos haluat rakentavia vastauksia, sinun tulisi näyttää, miten salakirjoituksesi toimii tällä hetkellä (matemaattisissa kaavoissa, mieluiten). Sitten voimme katsoa, kuinka parantaa sitä.
  • Olen ’ poistanut kommentit ” don ’ t suunnittele oma salakirjoituksesi ” – täällä salauksella ’ s täysin hyväksyttävä kokeilla, vaikka sinun pitäisi ymmärtää, että kaikki on tietysti omalla vastuullasi 🙂 Olen myös

muokannut kysymystä hieman keskittyäksesi enemmän lumivyöryvaikutukseen poissa ollessa asiaankuuluvista salausrakenteista. Jos joku katsoo, että se on tarpeetonta, voit vapaasti palata takaisin tai parantaa sitä, mitä olen ’ tehnyt.

Vastaa

Älä vaivaudu muuttamaan varsinaista salausalgoritmia. Lue Kerckhoffs -periaatteesta : sinun pitäisi muuta vain sellaisia asioita kuin avain ja IV, ei varsinaista algoritmia.

Testataksesi lumivyöryäsi, käännä yksi avain bittiin. Tämän pitäisi muuttaa noin puolet bitteistä tuotoksessasi.

Salakoodausta varten on jo ehdotettu Applied Cryptography -ohjelmaa. Sen lisäksi, että sinun on tarkasteltava diffuusion ja sekaannuksen käyttöönottoa algoritmissasi. Lisäksi on syytä tutkia olemassa olevia algoritmeja nähdäksesi, miten ne menevät asioihin. Aloitin suunnittelemalla oman yksinkertaisen Feistel-salakirjoituksen , jolloin suuri osa ympäröivästä rakenteesta on jo tehty sinulle. Se myös yksinkertaistaa suunnittelua siten, että F-funktion ei tarvitse olla käänteinen. Tämä antaa sinulle paljon enemmän joustavuutta tällä alueella.

Varoitus siitä, ettet käytä omaa malliasi mihinkään muuhun kuin oppimisharjoitteluun, on hyvä.

Kommentit

  • Yli paljon ….
  • Salakirjoitus / salaus on Ison-Britannian / Yhdysvaltojen asia.

Vastaa

Mielestäni on mahtavaa, että rakennat oman salauksen / salauksen purkamisalgoritmin. Opit paljon salauksesta tällä tavalla. Toistaiseksi kaikki, jotka rakentavat salauksen salaus-salauksen purkualgoritmi rakentaa jotain kauhistuttavasti virheellistä tavalla tai toisella – hyvin opettavaista – ensimmäistä kertaa.

terminologia

Jos ymmärrän kysymyksesi oikein, sinulla on täysin kohtuullinen kysymys lumivyöryvaikutuksesta, mutta suurin osa tämän sivuston ihmisistä on niin hämmentynyt epätyypillisistä termeistäsi, että he eivät edes ymmärrä mitä kysyt.

Jos ymmärrän kysymyksesi oikein, olet rakentamassa salauksen / salauksen purkujärjestelmän, joka vie tekstinsyötön syötteeksi, tallentaa tiedot salattuina tiedostoina ja antaa myöhemmin oikean salasanan omaavalle henkilölle mahdollisuuden purkaa tallennettujen tiedostojen purkaminen ja palauttaa purettu selkokielinen bitti-bittiä identtisesti alkuperäisen selkokielisen syötteen kanssa. luultavasti jo tiedämme, tyypillinen salausohjelma luo salatut tiedostot, jotka alkavat alustusvektorilla (IV), joka salatun satunnaislukugeneraattorin äskettäin synnyttäessä salattu tiedosto luotiin.Salausohjelma pilkkoo sitten syötetiedoston kiinteän lohkokoon yksinkertaiseksi tekstilohkoksi, käyttää jonkin verran -lohkotilausta toiminto ”salaustilassa” kunkin lohkon (ja salausavaimen) käsittelemiseksi -lohkosalauksen kautta lopulta salattuun lohkoon sama lohkokoko, joka liitetään salattuun tiedostoon. Usein lopussa on joitain hienoisia bittejä, jotka liittyvät ”täyttöön” ja ”viestin todennukseen”.

Myöhemmin salauksen purkuohjelma pilkkoa salatun tiedoston saman kiinteän lohkokoon salatuiksi lohkoiksi, syöttää jokaisen lohkon ( ja salausavaimen) lohkosalauksen kautta käyttäen samaa lohkosalaustoimintatapaa ”salauksen purkutilassa” selväkielisen lohkon palauttamiseksi, ja ketjuttaa kaikki tekstikoodilohkot yhteen palauttaakseen bittiä bittiä vastaavan tiedoston alkuperäisen tekstitiedoston kanssa .

Käytän hajautuksessa SHA-512: tä

OK, SHA-512 on erinomainen hajautusalgoritmi. Jos käytät tätä osana sisäistä pyöreää toimintoa tai luot aliavaimia salauksen pääavaimesta, se toimisi; se näyttää vain tarpeettoman monimutkaiselta.

Jos käytät SHA-512: tä avaimen johtamisfunktio (KDF) pääsalausavaimen luomiseksi salasanasta, monet ihmiset sanovat, että se ei ole tarpeeksi monimutkainen.

matriisitoiminnot sekoitus

Se on tavallaan epätavallista, mutta se voisi toimia.

bittikohtainen XOR tietojen sekoittamiseen ja noutamiseen.

Käytännössä kaikki modernit salausalgoritmit käyttävät paljon bittikohtaisia XOR-operaatioita. Monet nykyaikaiset salausalgoritmit on suunniteltu käyttämään vain modulaarisia lisäyksiä, kiertoja kiinteillä kierrosmäärillä ja XOR: ia (ARX) sisemmässä silmukassa (pyöreä iterointi).

Olen melko se sisäinen pyöreä toiminto, joka käyttää vain XOR tai vain kierto tai vain modulaarinen lisäys on kohtalokkaasti epävarmaa riippumatta siitä, kuinka monta pyöreää iteraatiota käytetään.

(En tiedä tarpeeksi kertoa mitään tietyn XOR- ja matriisioperaatioiden yhdistelmän turvallisuudesta).

suola ja salausteksti on 256 kirjainta.

Oletan, että tarkoitit sanoa ”Alustusvektorin (IV) ja kunkin salaustekstilohkon pituus on 256 kirjainta . ”

” Suolaa ”käytetään yksisuuntaisessa salauksen hajautuksessa – katso Voitteko auttaa minua ymmärtämään, mikä salaus ” suola ” on? . ”IV”: tä käytetään kaksisuuntaisessa salauksessa – sekä salauksessa että salauksen purkamisessa. Sekä ”suola” että ”IV” ovat juuri luotuja satunnaisia arvoja, joiden oletetaan olevan julkisesti tiedossa, mutta terminologia viittaa siihen, että niitä käytetään erityyppisissä järjestelmissä.

Melkein kaikki asettavat arvon IV on yhtä suuri kuin lohkokoko, joten se on hienoa.

Ymmärrän, että käytännössä kaikissa ennen vuoden 1997 AES-kilpailuilmoitusta kehitetyissä salakirjoissa käytettiin 64 bitin (8 tavua) tai vähemmän lohkokokoa. Jotkut kryptografit ilmeisesti ajatteli, että se ei ollut tarpeeksi, mutta sikäli kuin tiedän kaikki näyttävät nyt ajattelevan, että 128 bitin (16 tavua) suuruus on riittävä.

256 tavun lohkokoko toimisi; se näyttää vain tarpeettoman suurelta.

lumivyöryvaikutus

Kun jokaisen selkokielisen lauseen ajetaan lohkosalauksen läpi (joissakin salaustiloissa), lumivyörytehoste tarkoittaa, että yksi bitti muuttuu jokin seuraavista:

  • selkeän tekstilohkon tiedot
  • salasana
  • IV

täytyy muuttaa salaustekstilohko lohkeaa voimakkaasti (noin puolet bitistä).

Kun jokainen salaustekstilohko suoritetaan lohkosalauksen läpi (joissakin salauksen purkutilassa), lumivyörytehoste tarkoittaa, että yksi bitti muuttuu missä tahansa seuraavista:

  • salattu tekstilohko
  • salasana
  • IV

täytyy muuttaa lähtötekstin ”selkokielinen” lohko jyrkästi (noin puolet bitistä).

Jos toteutukseni aikana muutan suolaa tai salausta, en näe suuria muutoksia tuotoksessani.

Oletan, että tarkoitit sanoa yhden kahdesta asiasta:

  • ”jos vaihdan yhden bitin alku o Salatun tiedoston (eli IV: ssä tai jossakin varhaisessa salaustekstilohkossa) en näe mitään suuria muutoksia lähdetekstisen tekstitiedostoni loppupuolella.

Tämä puute muutos tapahtuu aina (suojattua) salauslohkoketjua (CBC) tai muita toimintatiloja käytettäessä. Joten se ei välttämättä ole ongelma.

Tämä voi kuitenkin olla ongelma, jos luulit käyttävänsi (suojattua) PCBC (Propagating Cipher Block Chaining) -tilaa, jossa muutoksen puute osoittaa vika toteutuksessa.

Tämä muutoksen puute on myös odotettu tulos käytettäessä (epävarmaa) elektronisen koodikirjan (ECB) tilaa.

Riippumatta valitsemastasi toimintatavasta, salauksen purkuohjelma pitäisi tulostaa isot pelottavat varoitukset siitä, että tiedosto epäonnistui MAC-todennuksen tarkistuksessa aina, kun salattujen tiedostojen yksittäiset bitit ovat vahingoittuneet.

  • ”jos vaihdan yhden bitin yhden salatun salatun tekstilohkon salatussa tiedostossa, en näe suuria muutoksia vastaavassa selkkotekstilohkossa lähdekoodin yksinkertaisessa tekstitiedostossa.

Kyllä, tämä viittaa vakavaan virheeseen – lohkon salausalgoritmilla ei ole hyvää lumivyöryvaikutusta. Tämä on merkki siitä, että algoritmilla ei ole riittävää sekoitusta. Tämä tarkoittaa yleensä, että järjestelmä on haavoittuvainen valittu salausteksti-hyökkäykselle ja vastaaville hyökkäyksille.

Mitä voin tehdä tuottamaan lumivyöryvaikutuksen parhaiten (tai millä tahansa) salakirjalla? pitäisikö minun vähentää suolan pituutta vähemmän ja luoda pienempi salausteksti lumivyöryvaikutuksen luomiseksi?

Oletan, että sinun on tarkoitus kysyä ”Pitäisikö minun pienentää IV ja lohkokoko lumivyöryvaikutuksen luomiseksi? ”

Sitä ei yleensä tarvita.

Yleisimmät lähestymistavat lumivyöryvaikutuksen aikaansaamiseksi on lueteltu Wikipediassa estosalausartikkeli :

En tiedä yhtään lohkosalausta, joka tuottaa täyden lumivyöryn yhden kierroksen jälkeen. Lohkosalauksia suunnittelevat ihmiset yrittävät valita jonkin verran kierroksia, jotka saavat lohkosalauksen vastustamaan kaikkia tavallisia salaushyökkäyksiä , mikä on enemmän kuin riittävä tuottamaan täysi lumivyöry .

Lohkosalausta suunnittelevat ihmiset valitsevat tyypillisesti yhden yleisen salaussalasuunnittelumallin ja saavat lohkosalauksen toistamaan sen valitun kierrosten määrän yli. Joitakin suosituimpia yleisiä lohkosalauksen suunnittelumalleja ovat:

  • korvaus-permutaatioverkko
  • Feistel-salaus
  • Lai-Massey-salaus

Jokainen näistä vaatii sisäisen epälineaarisen funktion. Varhaiset salaussalaajat käyttävät jokaisella kierroksella usein monimutkaista sisäistä toimintoa, joka melkein saavuttaa lumivyöryn yhdellä kierroksella. Nykyaikaiset salakirjoitukset käyttävät usein hyvin yksinkertaista, nopeaa sisäistä toimintoa jokaisella kierroksella (muutama ARX-toiminto), jossa on vain tarpeeksi epälineaarisuus saavuttaakseen lumivyöryn suuren määrän kierroksia.

Kommentit

  • Sivuhuomautus: khazad-salauksella on täydellinen diffuusio yhden kierroksen jälkeen. Olen ’ tehnyt leluja, jotka myös tekevät sen, se on ’ varmasti mahdollista, ja tapojen löytäminen on hauskaa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *