Mä olen kehitelly amorfista kryptaajaa eli muuttuvaa salaajaa. Mulla on hieman sellainen mielipide että siinä vois olla haastaja kvanttitietokoneelle. Mitä te olette asiasta mieltä ja onko joku jopa ajatellut asiaa enemmänkin?
Voisit alkajaisiksi kertoa lyhyesti, mitä amorfinen kryptaus tarkoittaa, sillä aihe ei ole välttämättä kaikille (esim. minulle) tuttu.
Kun viesti salataan se muuttuu aina tietyllä aikavälillä.
Esim. 5 minuuttia salattu viesti on: 32792373
10 minuuttia salattu viesti on: 10634a11
... (ja niin edespäin)
Purku toimii takaovella jonka toiminta perustuu tiivistefunktiosta kokoajan saatavan avaimen ja salattavan viestin "yhteistyöhön".
Onko salattu viesti jonkinlainen itsenäinen olio vai miten se pystyy muuttumaan? Tuota purkumekanismia en ihan ymmärtänyt, kokonainen esimerkki viestin salauksesta ja purusta voisi selventää asiaa. Kun povaat tätä kvanttitietokoneen haastajaksi, niin onko tällä muita sovelluksia kuin viestin salaaminen? Vai tarkoitatko, että jopa kvanttitietokoneelta jäisi salaus purkamatta?
Salattu viesti olisi itsenäinen olio. Idean sain muuntautuvista tietokoneviruksista ja mä olen jostain lukenut tälläisestä mahdollisuudesta jostain kryptografian artikkelista. (Siis aika kokeiluasteella) Muita sovelluksia kuin viestin salaamiseen ei varmaankaan ole. Ja tuosta kvanttitietokoneen haastamisesta en ole ihan varma, mutta perusjärki sanoo että jos ohjelmasta saatava aineisto muuttuu kokoajan pötkönä niin eihän siitä saa mitään selvää.
Oma ideani perustuu siihen että viestistä irroitetaan tietoja joilla itsessään ei
tee mitään. Ne salataan ja niiden annetaan olla.
Loput viestistä salautuu kokoajan lohkokerrallaan. Dekryptauksessa
luodaan avain tiivistefunktiolla, etsitään takaportin kohta joka on rauhassa olevan salatun viestin perässä, ja ajetaan yksisuuntainen funktio "lohkosalain" takaperin.
Vähäsen vaikea selittää mutta jos mä saan tästä jotakin se tulee eka tänne!
Nykyisillä tietokoneilla jatkuvasti muuttuvan viestin täytyy olla käytännössä suorituksessa oleva ohjelma. Jos viestin tallentaa esim. kiintolevylle, niin ei se enää varmasti pysty muuttumaan. Ohjelmakin on siinä mielessä muiden armoilla, että sen pystyy pysäyttämään ja sen rakennetta pystyy tutkimaan milloin vain. Jos on riittävän taitava ja kärsivällinen, niin ohjelman toimintaperiaatteen saa lopulta selville.
Ajatuksesi on joka tapauksessa kiehtova. Jos saat jotain kiinnostavaa aikaan, niin ilmoittele tosiaan täällä!
Yön mietittyäni mä sain hyvän toimivan idean jolla pystyy salaamaan viestiä kokoajan niin että viestin loppumiskohtia on erittäin vaikea löytää. Sitten mä huomasin että tohon mun ideaan pystyy upottamaan self-healing toiminnon jolla pystyy vaikuttamaan viestin eheyteen eli muuttumattomuuteen tallennuksen ja siirron aikana. Jos esim datasiirrossa tapahtuu virhe, se ei vaikuta kuin muutamaan kirjaimeen viestissä ja näin viesti saattaa pysyä ymmmärrettävänä.
Nyt vaan testaamaan ideaa ja sen turvallisuutta.
saanen tiedustella Darwen, mikä ohjelmointikieli, ja kuinka kauan olet ohjelmoinut? ^^ kuulostaa aika villiltä ohjelmalta tuo mitä väsäät että ei ihan aloittelialta varmaan luonnistuisi?
Visual Basiciä opiskelen itsenäisesti ja C++ :sta jotain on jäänyt päähän, mutta
tarkoitus ei olekaan että mä tätä heti alkaisin vääntään. Eikös ohjelmoinnissa ole puoliruokaa se suunnittelu ja koodaus sitten jälkkäri. Mä en välttämättä tätä koodaakkaan vaan tarkoitus on että jos mä saan systeemin kasaan, mä yritän tehdä
ohjelman vuosia koodanneen kaverin ja täältä saatavien neuvojen avulla.
En kyllä tajunnut, kuinka salaimen on tarkoitus toimia. Olisi hauska lukea tarkka kuvaus toiminnasta. Sen verran haluan varoittaa, että jos ei itse osaa salausta murtaa, se ei tarkoita etteikö joku muu osaisi tehdä sitä helpostikin. (Tosin sen jo varmaan tiedätkin.)
Minkä ihminen on tehnyt, sen voi ihminen murtaa. Eli toisin sanoen jos halutaan murtamaton, pitää ajatella ja tehdä toisin kuin ihminen. Moinen vain vaatinee kaiketi älyä ja mielikuvitusta että kykyä käyttää niitä toteuttamaan asioita tavalla, mikä ylittää ihmisen käsityskyvyn siitä miten jokin tuollainen voi ollenkaan toimia että vielä itse ymmärtää miten se toimii :-P
-Grey-
Murtamaton salaushan on keksitty, nimittäin kerta-avainsalaus. Tarvitaan vain aidosti satunnainen salausavain, joka on yhtä pitkä kuin salattava viesti. Viesti xorataan avaimella. Purku tapahtuu xoraamalla salattuteksti avaimella. Matemaattisesti on mahdotonta selvittää alkuperäistä viestiä: raa'alla voimalla käytäessä läpi kaikki avaimet löytyy kyllä useita avaimia, joilla salatekstistä muodostuu mielekäs viesti (itse asiassa kaikki samanpituiset mielekkäät viestit löytyvät), mutta mistään ei voida tietää, mikä näistä viesteistä on oikea.
Kerta-avainsalaus ei kuitenkaan ole kovin käytänöllinen, sillä samaa avainta ei pidä käyttää kuin kerran, muuten salauksen teho heikkenee. Aina uusien avainten levittäminen salaajalle ja purkajalle ei ole aivan vaivatonta, kun kerran jokaista viestiä varten tarvitaan uusi avain. Sanomattakin on selvää, että avain ei saa paljastua ulkopuolisille tahoille.
Lisäksi salausavaimen tosiaan pitäisi olla aidosti satunnainen, jotta salaus olisi todella murtamaton. Käsittääkseni aidosti satunnaisen datan tuottaminen ei ole aivan yksinkertaista.
Tarkasti katsottuna kerta-avainsalauskaan ei ole murtamaton. Kyse on ihan aina ajasta ja avaimenvaihtojen onnistumisista. One-time-padissä viimeksi mainitusta asiasta.
Ihmiset ei keksi täysin pitävää salausta, koska kryptografialla ja kryptoanalyyseillä on liian läheiset välit. Kvanttitietokoneiden tullessa salausalgoritmien mukana tulee murtoalgoritmit ja niin edespäin.
Ja kyllä mä sen systeemin tänne seikkaperäisesti heitän, kunhan olen tutkinut parannusmahdollisuuksia ja heikkouksia.
Kuinka niin ei ole murtamaton? Siitä salatusta tiedostahan voi luoda ihan minkä tekstin tahansa, koska ei tiedetä sitä avainta, jolloin voidaan väittää että osattiin purkaa se, jos löydettiin avain joka loi siitä salatusta tiedosta jonkin toisen viestin, mutta oikeasti tuo toinen viesti ei olekaan se oikea viesti... Hmm.. tämä taas pistää miettimään, onko tuolla tavalla mahdollista upottaa yhteen salattuun viestiin monta viestiä siten että eri avaimet purkaisivat siitä eri viestin :o
Mistä nimi "amorfinen kryptaaja"? Amorfinenhan tarkoittaa muodotonta, eikä muuttuvaa. Termi amorphous cipher tarkoittaa tietääkseni "arvoitusta, jolla ei ole ratkaisua".
Ainoa viittaus amorfiseen kryptaajaan löytyy netistä mystisesti kadonneen HierocryptX-yhtiön lanseeraaman ohjelman Amorphous Cipher Enginestä. Samaisen yhtiön PMA-algoritmi "on neljä kertaa nopeampi ja avainkooltaan kaksinkertainen perinteisiin salauksiin verrattuna" ja näinollen "luultavasti maailman nopein ja varmin". Yhtiön henkilöstöön kuuluu "maailmankuuluja matemaatikoita, kryptoanalyytikkoja ja ohjelmoijia".
PMA- ja ACE-ohjelmistoja ei enää valitettavasti ole saatavilla.
arctan kirjoitti:
Lisäksi salausavaimen tosiaan pitäisi olla aidosti satunnainen, jotta salaus olisi todella murtamaton. Käsittääkseni aidosti satunnaisen datan tuottaminen ei ole aivan yksinkertaista.
Aitoja satunnaislukuja on mahdoton tuottaa algoritmisesti, koska merkkijonojen sarja, joka voidaan tuottaa (itseään lyhyemmällä) tietokoneohjelmalla ei ole aidosti satunnainen vaan palautuu käytettävään tietokoneohjelmaan (http://en.wikipedia.org/wiki/
Käytännössä kerta-avainsalaus on avaimenvaihdon onnistuessa murtamaton.
darwen -> tuli mieleen, kun sanoit että salattu viesti olisi itsenäinen olio etc. ja antti sanoi että kiintolevyllä se ei pysty enää muuttumaan etc.
siitä tuli mieleen et jos sen viestin ja salaus algoritmin joka muuttaa sitä viestiä tallettaisi itsenäiseen siruun(...?) ja takaisi jotenkin sen virransaannin niin eikö se silloin pyörisi tavallaan ikuisesti(miten mistään ihmisten tekemästä muka voi sanoa 'kestää ikuisesti'??)...?
(toivottavasti ei ollut offtopic...)
PKkrqripyswkmqlss
Tuossa on tämän sivuston nimeen liittyvä sana kryptattuna kovin omintakeisella salaussysteemillä, jota mielestäni ei kukaan pysty murtamaan. Avain liittyy salausohjelmaan ja salattuun viestiin joten erillistä avainta ei tarvi lähettää. Salausohjelma toimii samalla myös purkuohjelmana. Arvata voi monikin mutta epäilen murtoa.
Amorfinen kryptologiassa amorfisuus tarkoittaa salatekstin muuttumista sillälailla että sen sisältämää muotoa ja rakennetta ei voi hahmottaa
sen jatkuvan muuttumisen takia. Jos käsiin saadaan lohko muuttuvaa salaviestiä kuten 18124189428942972987842792829378 niin siitä ei voi hahmottaa mitkä numerot ovat ylimääräisiä ja mitkä tarpeellisia.
Jatkuvan muutoksen takia ei voida tietää onko salaus kesken vai onko salausfunktio aloittamassa uutta kierrosta.
Niin tolla mun edellisen viesti One-time-padin murtautumisella tarkotankin tuota
epäonnistunutta avaimenvaihtoa. Koskaan ei voi tietää onko koodikirjan vaihto-onnistunut. Salauksella on todella pieni osuus tietoturvasta.
Ja en tiedä ByteMan. Saattaisi olla tollanen siru-ratkaisu aika hieno, mutta kuhan ny sais tän salauksen valmiiksi niin sitten on ehkä aika pohtia tollasia asioita :D
Palaan vielä tähän omaan "Amorfiseen kryptaajaani". Tein sen 5 vuotta sitten VB5:llä dll-komponentiksi. Salaus / purku-algoritmi on vaatimattomat 30 riviä yksinkertaisia VB:n metodeja ja funktioita. Sen verran umpikierosti ajateltu algoritmi että pidän sitä murtamattomana ja haluaisin asialle vahvistuksen täältä loistavia ohjelmointiguruja vilisevältä sivustolta. Sama viesti kryptataan aina eri tavalla ja perustuu näennäissatunnaislukugeneraattoriin. Ja kryptattu viesti edellä on tosiaan "Ohjelmointiputka".
Puhutko nyt tiivisteestä vai kryptaajasta jossa viesti salataan ja puretaan? Tiedän, että kryptauksessa voidaan käyttää satunnaislukuja mutta onko tämä sitten sellainen kryptaaja?
Jos sulta liikenisi vähän pidempi salaviestin lohko niin vois yrittää murtaa sitä differentiaalilaskennalla, brute forcella ja toistuvuuksien etsimisellä.
Tässä on tuo jälkimmäinen kappaleesi. en tosin ole varma siirtyvätkö kaikki merkit oikein:
Ýn"dpjau}nkystfoémm^ynsqëkx_fjnpm$�pnovyuiwq!
Kokeilin Copy-Pastettaa tästä editointiruudusta niin ainakin toimi.
Edit: Toimii se tästä näyttötilastakin.
Pystytkö vastaamaan edellisen viestin kysymykseen kun siitä olisi paljon apua murtamisessa?
Osittain vastaus oli jo edellä. Ohjelma salaa ja purkaa viestin. Toiminta perustuu satunnaislukuun siten että joka kerralla salattu viesti on erilainen. Jos annan kovin paljon tietoja ja esimerkkejä salauksesta tulee sen murtaminen tietenkin huomattavasti helpommaksi kuin ilman alkuperäistä tekstiä ja tietoja salauksen periaatteista. Jos murto ei onnistu näillä tiedoilla niin ei ainakaan ilman niitä.
Nyt ymmärtää. Satunnaislukuja käyttäessä kryptauksessa käyttömahdollisuuksia ei ole kovinkaan paljoa, joten tiedän varmaankin missä kohdassa satunnaislukuja on käytetty. Mutta tässä on hieman perustietoja tosta sedän lähettämästä salaviesti lohkosta, jos joku muukin haluaa koittaa murtaa viestiä:
Entropia on 4.54 (max 4.70) Differentiaali laskenta antoi arvoiksi: No. Substring Frequency (in %) Frequency 1 S 6.7797 8 2 N 5.9322 7 3 A 5.0847 6 4 O 5.0847 6 5 T 5.0847 6 6 U 5.0847 6 7 V 5.0847 6 8 D 4.2373 5 9 F 4.2373 5 10 H 4.2373 5 11 I 4.2373 5 12 L 4.2373 5 13 M 4.2373 5 14 P 4.2373 5 15 Q 4.2373 5 16 X 4.2373 5 17 Y 4.2373 5 18 J 3.3898 4 19 K 3.3898 4 20 R 3.3898 4 21 W 3.3898 4 22 G 2.5424 3 23 B 1.6949 2 24 C 0.8475 1 25 E 0.8475 1
setä kirjoitti:
Jos annan kovin paljon tietoja ja esimerkkejä salauksesta tulee sen murtaminen tietenkin huomattavasti helpommaksi kuin ilman alkuperäistä tekstiä ja tietoja salauksen periaatteista.
Eikös murtamaton salaus ole murtamaton jopa silloinkin kun tietää miten se tarkkaan ottaen toimii?
Eihän salaus ole salainen jos algoritmin tietää. Ei ole tarvetta murtamiseen. Jos kirjoitan viestin paperille ja poltan sen niin se on salattu murtamattomaksi vaikka salauksen tietää. Mutta eihän siinä ole mitään mieltä.
setä kirjoitti:
Eihän salaus ole salainen jos algoritmin tietää. Ei ole tarvetta murtamiseen.
Miksi sitten yleisesti käytetään RSA:ta ja muita aivan täysin tunnettuja salauksia ja miksi niitä pidetään niin hyvinä? Kyllä jos mennään sille linjalle, että ettepä varmasti arvaa, mikä kirjain oli aluksi kyseessä, kun muutin sen eräällä algoritmilla Q:ksi, niin "murtamattomia" salauksia on varmasti biljardeja.
Siteeraan T.M:n tueksi pari faktaa kirjasta
"Petteri Järvinen: SALAUSMENETELMÄT" s. 79:
------
Salauksen lakeja
3. Salausmenetelmän on oltava julkinen, mutta avaimen salainen.
4. Vanha salausmenetelmä, jonka heikkoudet tunnetaan, on turvallisempi kuin uusi menetelmä, jota ei ole vielä ehditty analysoida riittävästi. Vasta aika näyttää, kuinka turvalliseksi menetelmä osoittautuu
------
Toisin sanoen jos tosissaan halutaan tutkia salaimen eikä sillä tehdyn
salatekstin turvallisuutta, sun pitäisi setä antaa se salain tarkasteltavaksi. Niin se natsien Enigmakin purettiin, kun viesti laivaston salauskoneen katoamisesta ei saapunut perille :D
En ole salauksen lakeihin perehtynyt enkä tuntenut edes XOR-kryptausta silloin kun kehittelin tuota omaa algoritmia. Kerroinkin että se on hyvin omintakeinen. Salauksessa ei käytetä mitään avainta vaan lähettäjällä ja vastaanottajalla tulee olla sama ohjelma. Jos ohjelma joutuu vääriin käsiin tulee siitä hyödytön. Siksi julkisissa salauksissa käytetään salaista avainta, jota vaihdellaan. Silloin halusin vain kehittää ohjelman, jolla voin salata tekstin niin ettei sitä voi murtaa, ainakaan helposti.
Nuo Darvenin analyysit ovat mielenkiintoisia mutta en ymmärrä kuinka ne auttavat salauksen murrossa. Paljastan tietämättömyyteni ja kysyn, miten entropia ja sen maksimi tässä yhteydessä määrätään? Ja mitä se yleensä on salatussa tekstissä.
Tuo oma algorimini taitaakin olla One-Time-Pad-tyyppinen, josta sanotaan sen olevan murtamaton. Tässä kuitenkin avain ei ole todella satunnainen vaan näennäissatunnainen ja alkuluku on mahdollista löytää. Mutta lisäksi on keksittävä paljon muutakin saadakseen salauksen purettua.
Nykyään ei enää luoteta salauksiin, jotka perustuvat salausmenetelmän tuntemattomuuteen. Menetelmän paljastuessa salaus on hyödytön ja jokainen itsenäinen salausta käyttävä ryhmä tarvitsisi oman salausmenetelmän.
Nykyiset symmetriset salaukset (AES, t-DES ...) pyrkivät olemaan niin vahvoja, ettei käytettävää salausavainta/salasanaa tai jonkin toisen viestin sisältöä saa selville (järkevässä ajassa), vaikka tuntisi salattua viestiä vastaavan selkokielisen viestin tai sen osia sekä tietenkin käytettävän salausmenetelmän.
Esimerkiksi yritys käyttää yksinkertaista rand-funktiota "One-Time-Padin" rakentamiseen kaatuu funktion ennustettavuuteen:
r = salasana; //srand(salasana) for(i=0; i<viestin_pituus; i++) salateksti[i] = viesti[i] ^ (r=(r*A+B)%C) % 256; // viesti[i]^rand()
Jos tiedetään, että viesti alkaa "Ylitämme rajan klo ", saadaan loput viestistä selville XORraamalla selkokielinen viesti salatekstin alun kanssa ja tutkimalla näin saadun rand-jonon arvoja, jolloin alkuperäinen siemenluku, loput salatekstin XOR-maskista ja koko selkokielinen viesti saadaan selville.
salaus: Ylitämme rajan klo 6.00 ... - Selkokielinen teksti ^ cplr9gl320bm,392ogläödföeäöb,rogörägö - "XOR-maski", rand-jono = 6094,np4öb903,asöv,39öbl59öb,bl5694öl - Salateksti (keksitty, ei laskettu) murto: 6094,np4öb903,asöv,39öbl59öb,bl5694öl ^ Ylitämme rajan klo ?????????????????? = cplr9gl320bm,392ogl??????????????????
r0 = "c" (mod 256) ja r1 = "p" (mod 256) ...
siis: (rn) = { cplr9gl320bm,392ogläödföeäöb,rogörägö... }
Eli jos yksi rand-funktion tila tai joitakin arvoja tunnetaan, voidaan helposti laskea kaikki seuraavat arvot. Sama pätee myös monimutkaisempiin satunnaislukugeneraattoreihin eikä tämän ominaisuuden laskennallisesti tehokas kitkeminen ole kovin yksinkertaista.
Epäsymmetriset salaukset, kuten 70-luvulla kehitetty RSA, ovat salauksia, joissa viestin salaus ja purku tehdään eri avaimilla, joilla on matemaattinen yhteys. Näitä menetelmiä käytettäessä avaimia ei tarvitse vaihtaa salassa, vaan toinen (viestin salaukseen käytettävä) avain on julkinen. Menetelmän luotettavuus perustuu siihen, että avainparin luominen on paljon nopeampaa ja helpompaa (matemaattisesti tai laskennallisesti) kuin salaisen avaimen selvittäminen julkisen avaimen perusteella. Esimerkiksi RSA:sa operaatiot ovat avaintenluonnissa kahden alkuluvun etsintä ja kertolasku ja murrossa tekijöihinjako.
http://en.wikipedia.org/wiki/
Yhtenä salauksen vahvuuden mittana käytetään salatekstin satunnaisuutta. Salatekstistä ei säännönmukaisillakaan syötteillä pitäisi löytyä viitteitä selkokielisen viestin rakenteesta. Tähän liittyy käsite entropia (~satunnaisuus).
Voihan salaisen ohjelmankin toisaalta mieltää eräänlaiseksi "One-Time-Padiksi".
Noilla oletuksilla kyllä murto näyttää helpolta. Jään kuitenkin odottamaan sitä ihmettä jos joku tuon oman algoritmini pystyy murtaman.
Käytännössä minkä tahansa salauksen murtaminen on hyvin hidasta ja vaikeaa, mutta kun nykyään pelissä voi olla miljardeja euroja ja gigatavuittain salattua dataa, jota tuhannet yrittävät murtaa pahimmassa tapauksessa miljoonilla tietokoneilla, niin pitää salaustenkin olla sen mukaiset.
Tuo entropia todellakin on tuota mitä os sanoi ja siihen lisäten joissain sivustoissa neuvotaan
(kuten tässä http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=54819
koittamaan salausta jollain hyvin yksinkertaisella ja toistuvalla selvätekstillä. Esim aaa tai abc muutama satatuhatta kertaa ja katsoa sitten entropia salaviestistä.
Kyllä tollaisia sedän tekemiä salaimia tarvitaan joskus
(jos mä oikein ymmärsin ton systeemin)
Sanoisin että kotioloissa riittävällä tarkkuudella satunnaisia lukuja pystyy kehittämään helposti.
Digitoidaan koneelle vaikkapa 8 bitillä radiokohinaa jatkuvasti ja muodostetaan joka näytteen alimmista biteistä satunnaisluku ketjua.
Elektroniikka harrastajana tulee mieleen myös mahdollisuus käyttää ihan tavallisen massavastukset lämpökohinaa samaan käyttötarkoitukseen.
just my 0.0002 cnt
Kuulin että muuttujan arvot ohjelmissa voidaan laittaa privaateiksi ja sitten ne jaetaan eri muistilohkoihin. Miten tuo tehdään ja onko siitä apua jos muuttujan pitäisi pysyä sekunnin murto-osa salaisena?
Darwen kirjoitti:
Kuulin että muuttujan arvot ohjelmissa voidaan laittaa privaateiksi ja sitten ne jaetaan eri muistilohkoihin. Miten tuo tehdään ja onko siitä apua jos muuttujan pitäisi pysyä sekunnin murto-osa salaisena?
Tuosta ei ole mitään apua, sillä ohjelmaa voidaan ns. "oikean" tietokoneen sijaan ajaa simulaattoriympäristössä, jossa koko tietokoneen tila (rekisterit, muistin sisältö jne) on tiedossa kellojakson tarkkuudella.
Aihe on jo aika vanha, joten et voi enää vastata siihen.