Jos on tietokoneille vaikeaa selvittää, mistä alkuluvuista on lähdetty, miksei lasketa valmiiksi kaikkia mahdollisia vaihtoehtoja ja sitten vain verrata niitä lopputulokseen?
3x5=15, jos sinulla on 15 valmiiksi laskettuna, ei tarvi ruveta pähkäilemään, mistä se koostuu.
Anteeksi, en ole opiskellut kuin oppikoulumatikkaa 50 vuotta sitten. Hommassa täytyy olla jokin muukin jippo.
RSA -salauksen purku
14
391
Vastaukset
- hmhmhmhm
Nimenomaan lasketaankin, sitä sanotaan brute force, eli raa'alla voimalla murtamiseksi.
Mutta ongelma on se, että niitä vaihtoehtoja on niin käsittämätön määrä, että vaikka kaikki maailman tietokoneet laskisivat niitä 24/7, siltikkään tehokkaimmat salaukset eivät purkautuisi ihan hetkessä.
Salaukset pyritään tekemään siis aina niin vahvalla tekniikalla, että yleisesti käytössä olevalla laskentakapasiteetilla ei pysty kovin lyhyessä ajassa laskemaan kaikkia mahdollisia vaihtoehtoja.- hmhmhm
Valmiiksi laskemisesta, no varmaan sitäkin tehdään, mutta siinä tulee äkkiä vastaan tallennustilan rajoitukset.
Esim MD5 ja SHA tiivisteiksi sanakirjasanoista muunnoksia on laskettu valmiiksi.
Eli monissa vanhemmissa sivustoissa, salasanasi tallennetaan sinne palvelimelle MD5 tiivisteen laskevan algoritmin läpi laitettuna, eikä selväkielisenä.
MD5 luku on aina täysin sama, samalle sanalle. Eli vaikka sanaa kissa vastaa aina täysin sama MD5 tiiviste.
https://fi.wikipedia.org/wiki/MD5
Näitä tiivisteitä on sanakirjasanoille laskettu valmiiksi ja taulukoitu.
Tästäkin syystä turvallisen salasanan valinnassa aina sanotaan, että älkää käyttäkö sanakirjasta tuttuja sanoja.
Toki todellisuudessa ne salasanat tallennetaan ns. suolattuina. Joka tarkoittaa sitä, että palvelimella siihen käyttäjän salasanaan lisätään vielä jotain muuta, jotta juuri esim. kissa sanaa vastaava MD5 tiiviste ei olisi suoraan mistää taulukosta katsottavissa. - HASH_UTF8
hmhmhm kirjoitti:
Valmiiksi laskemisesta, no varmaan sitäkin tehdään, mutta siinä tulee äkkiä vastaan tallennustilan rajoitukset.
Esim MD5 ja SHA tiivisteiksi sanakirjasanoista muunnoksia on laskettu valmiiksi.
Eli monissa vanhemmissa sivustoissa, salasanasi tallennetaan sinne palvelimelle MD5 tiivisteen laskevan algoritmin läpi laitettuna, eikä selväkielisenä.
MD5 luku on aina täysin sama, samalle sanalle. Eli vaikka sanaa kissa vastaa aina täysin sama MD5 tiiviste.
https://fi.wikipedia.org/wiki/MD5
Näitä tiivisteitä on sanakirjasanoille laskettu valmiiksi ja taulukoitu.
Tästäkin syystä turvallisen salasanan valinnassa aina sanotaan, että älkää käyttäkö sanakirjasta tuttuja sanoja.
Toki todellisuudessa ne salasanat tallennetaan ns. suolattuina. Joka tarkoittaa sitä, että palvelimella siihen käyttäjän salasanaan lisätään vielä jotain muuta, jotta juuri esim. kissa sanaa vastaava MD5 tiiviste ei olisi suoraan mistää taulukosta katsottavissa."MD5 luku on aina täysin sama, samalle sanalle. Eli vaikka sanaa kissa vastaa aina täysin sama MD5 tiiviste."
Pitää useimmiten paikkansa (mutta ei tässäkään ihan aina).
MUTTA:
MD5 luku on aina täysin sama, samalle sanalle. Eli vaikka sanaa kärpänen EI vastaa aina täysin sama MD5 tiiviste, vaan sanalle kärpänen on olemassa useita eri tiivisteitä.
Miksi sitten kärpänen on tässä niin erilainen sana kuin kissa ?
Yksinkertaista:
Alla on laitettu koodausmenetelmiä, ja tähdellä merkitty ne, joissa myös sanan kissa MD5 -tiiviste poikkeaa totutusta:
Sensijaan sanalle kärpänen kaikki allaolevat tuottavat keskenään eri arvon:
Windows-1252 (ja sen osajoukko ISO-8859-1)
OEM (eli toisin sanoen alkluperäisen IBM PC:n BIOSissa käytetty merkkikoodaus, sama oli sellaisenaan käytössä ensimäisissä MS-DOS -versioissa, ja hieman muunnettuna myöhemmissäkin MS-DOS -versioissa)
UTF-8
UTF-16LE*
UTF-16BE*
UTF-32LE*
UTF-32BE*
Eli sanalla kissa on keskenään sama MD5 -tiiviste näissä enkoodauksissa: Windows-1252, OEM, UTF-8, US-Ascii (eli lyhyemmin Ascii).
Sensijaan sanalle kärpänen ei ole olemassa US-Ascii -esitysmuotoa johtuen sen sisältämästä ä -kirjaimesta.
Eli lyhyesti:
Sanalla tai merkkijonolla ei ole yksikäsitteisesti määriteltyä MD% tai muutakaan HASHia.
Mutta sanan tai merkkijonon esitysmuodolla on.
Jos yksikäsitteisyyttä halutaan, täytyy lukita esitysmuoto aina yhteen ja samaan esitysmuotoon.
Oma suositukseni: muunna merkkijono AINA ensin UTF-8 -esitysmuotoon ja laske ko. UTF-8 -esitysmuodolle se hash eli esim. MD5.
(MD5:ttä muuten pidetään murrettuna, eli jos HASHin pitää olla oikeasti ns. kryptografisesti turvallinen hash, niin SHA-2 tai SHA-3 eli Kekkac ).
JOS halutaan mahdollistaa HASHin laskeminen myös niistä merkkijonoista, joihin sisältyy 1 tai useampi NUL -merkki (eli merkki, jonka ascii -koodi on nolla), niin silloin kannattaa laatia se merkkijonon käsittely ja laskenta -algoritmi niin, ettei tuo NUL -merkki aiheuta mitään ongelmia. - hmhmhm
HASH_UTF8 kirjoitti:
"MD5 luku on aina täysin sama, samalle sanalle. Eli vaikka sanaa kissa vastaa aina täysin sama MD5 tiiviste."
Pitää useimmiten paikkansa (mutta ei tässäkään ihan aina).
MUTTA:
MD5 luku on aina täysin sama, samalle sanalle. Eli vaikka sanaa kärpänen EI vastaa aina täysin sama MD5 tiiviste, vaan sanalle kärpänen on olemassa useita eri tiivisteitä.
Miksi sitten kärpänen on tässä niin erilainen sana kuin kissa ?
Yksinkertaista:
Alla on laitettu koodausmenetelmiä, ja tähdellä merkitty ne, joissa myös sanan kissa MD5 -tiiviste poikkeaa totutusta:
Sensijaan sanalle kärpänen kaikki allaolevat tuottavat keskenään eri arvon:
Windows-1252 (ja sen osajoukko ISO-8859-1)
OEM (eli toisin sanoen alkluperäisen IBM PC:n BIOSissa käytetty merkkikoodaus, sama oli sellaisenaan käytössä ensimäisissä MS-DOS -versioissa, ja hieman muunnettuna myöhemmissäkin MS-DOS -versioissa)
UTF-8
UTF-16LE*
UTF-16BE*
UTF-32LE*
UTF-32BE*
Eli sanalla kissa on keskenään sama MD5 -tiiviste näissä enkoodauksissa: Windows-1252, OEM, UTF-8, US-Ascii (eli lyhyemmin Ascii).
Sensijaan sanalle kärpänen ei ole olemassa US-Ascii -esitysmuotoa johtuen sen sisältämästä ä -kirjaimesta.
Eli lyhyesti:
Sanalla tai merkkijonolla ei ole yksikäsitteisesti määriteltyä MD% tai muutakaan HASHia.
Mutta sanan tai merkkijonon esitysmuodolla on.
Jos yksikäsitteisyyttä halutaan, täytyy lukita esitysmuoto aina yhteen ja samaan esitysmuotoon.
Oma suositukseni: muunna merkkijono AINA ensin UTF-8 -esitysmuotoon ja laske ko. UTF-8 -esitysmuodolle se hash eli esim. MD5.
(MD5:ttä muuten pidetään murrettuna, eli jos HASHin pitää olla oikeasti ns. kryptografisesti turvallinen hash, niin SHA-2 tai SHA-3 eli Kekkac ).
JOS halutaan mahdollistaa HASHin laskeminen myös niistä merkkijonoista, joihin sisältyy 1 tai useampi NUL -merkki (eli merkki, jonka ascii -koodi on nolla), niin silloin kannattaa laatia se merkkijonon käsittely ja laskenta -algoritmi niin, ettei tuo NUL -merkki aiheuta mitään ongelmia.Kyllä, koodaus merkitsee. Eli MD5:n näkökulmasta kyse on eri syötteestä ei niinkään siitä että samalle syötteelle olisi monta eri tulosta. Periaate siis silti pätee, saman syötteen tarkistussumma on aina sama.
Sanalle kissa on monta summaa vain siksi, että tietokone ei ymmärrä kirjaimia ja kirjaimet on tietokoneella tallennettuna numeroiksi.
Joka tarkoittaa, että eri kirjaimille on sopimuksenvaraisesti sovittu, mitä numeroarvoa se vastaa tietokoneelle tallennettuna. Ja kuten yleensä ihmisten tekemissä sopimuksiin perustusivssa systeemeissä, tietysti näitä systeemejä on monia, eli on monta eri merkistökoodausjärjestelmää joita käytetään. - Anonyymi
Ei tartte kokeilla kaikkia vaihtoehtoja eri alkuluvuilla. Kyllä tämä onnistuu laskemalla lähtöluvusta. Vaatii tämäkin laskentaa, 20 numeroisen luvun alkutekijöiden selvittäminen vie mun läppärillä n. 10 minuuttia, 18 numeroinen aukeaa sekunneissa.
- hmhmhmhm
Löytyi stackexchangesta aika hyvä laskelmakin aiheesta.
512 bittisen RSA salauksen murtaminen siis yksinekertaisella menetelmällä voisi viedä tämän laskun mukaan erittäin paljon pidempään kuin mitä on universumin ikä:
http://crypto.stackexchange.com/questions/3043/how-much-computing-resource-is-required-to-brute-force-rsa
Vaikka tietokoneen prosessoreita olisi yhtä paljon käytettävissä kuin havaittavassa universumissa on atomeita, ja jokainen laskisi laskun millisekunnissa . . .- hmhmhmhm
Korjaus 1024 bittisen.
- Tyhmä_kysymys2
Seuraava kysymys: mitä tarkoittaa 1024 -bittinen? Tarkoittaako se, että salasanassa on 128 merkkiä? Yleensähän ihmisillä pakkaa olla tuollaisia kahdeksanmerkkisiä salasanoja.
- hmhmhmhm
1024 bittiä on binääriluvun pituus.
Esim, 2 bitin binääriluku näyttäisi tältä:
00 tai 01 tai 10 tai 11
Nuo kaikki neljä edellämainittua ovat kahden bitin binäärilukuja. Bittimäärä asettaa ylärajan sille, miten iso luku on mahdollista esittää tietyllä määrällä bittejä. Aivan kuten kymmenjärjestelmässäkin, jos sinulle annettaisiin vain kolme numeroa väliltä 1-9, niin suurin luku minkä niillä voisit esittää olisi 999. :)
1024 bitillä voi esittää sen kokoisen binääriluvun, jonka suuruus on normaali kymmenjärjestelmä lukuna
2 potenssiin 1024 - 1
Tarkalleen ottaen:
1,797693134862315907729305190789 kertaa 10 potenssiin 308
Joka on erittäin suuri luku.
Jos salasanan pituuden haluaa tietää bitteinä, niin täytyy ensin tietää paljonko yksi kirjain on bitteinä. Tietokoneelle kaikki asiat ovat numeroita. Yleensä yksi kirjain tietokoneella vie tavun verran tilaa. Tavu = 8 bittiä.
8 bitillä pystyy tällöin esittämään tietokoneella 256 erilaista kirjainta.
8 bittiä kertaa salasanan pituus, niin siitä saa salasanan bittimäärän.
Tietokoneella kirjaimet ovat binäärilukuina, vasta siinä vaiheessa kun kirjain pitää piirtää koneen näytölle, haetaan jostakin taulukosta, että minkäs näköinen on vaikka a kirjain, ja sytytetään näytöltä vaikka a kirjainta vastaavat pikselit. :) - hmhmhmhm
Tyhmä_kysymys2 kirjoitti:
Seuraava kysymys: mitä tarkoittaa 1024 -bittinen? Tarkoittaako se, että salasanassa on 128 merkkiä? Yleensähän ihmisillä pakkaa olla tuollaisia kahdeksanmerkkisiä salasanoja.
Ja kyllä, se ilmeisesti tarkoittaisi 128 merkkiä pitkää merkkijonoa.
- Tyhmä_kysymys
Kiitos, nyt tajuan, miksei brute force onnistu, ennenkuin kvanttitietokone on todellisuutta. Heaven forbid...
- LusikkaSoppaan
Juu, haluan minäkin kommentoida jotakin.
Kyllä brute force on RSA:ssa aivan realistinen nykyiselläkin kalustolla, vaikkakin työläs. Eli kokeilemalla voi löytyä ratkaisu, mutta se on luultavasti erilainen kuin alkuperäinen, vaikka se avaakin salakirjoituskoodin samalla tavalla. Eli niitä toimivia yhdistelmiä on kuitenkin melko suuri joukko.
RSA:sta vielä kannattaa huomata että ihan perus oppikirja-toteutus on jokseenkin turvaton. Jos haluaa RSA:n toteuttaa niin kannattaa seurata asiantuntijoiden neuvoja yksityiskohtaisesti, sillä "devil is in the details". - Anonyymi
Ensinnäkin:
käytetään hyvin suuria alkulukuja ( ei ole jaollinen muulla luvuilla kuin itsellään ja ykkösellä) eli niistä laskettu tulo ei voi päättyä numeroon 5, koska mikä tahansa numeroa 5 suurempi numeroon p5 päättyvä luku ei ole alkuluku eli on jaollinen 5.
Tulon kumpikin tekijä on hyvin suuri alkuluku
Ei ainakaan vielä ole tiedossa mitään algoritmiä millä selvitetään annetun tulon tekijät jos molemmat ovat alkulukuja eli jää vain ratkaisuksi kokeilla jakaa tulo kaikilla mahdollisilla alkuluvuilla joissa on vähintään esimerkiksi 50 numeroa (yleensä enemmän). Eli tämä on mahdollista vain jos ensinnäkin on tiedossa kaikki alkuluvut.
eli pienenä harjoituksena 624945200692847 on kahden alkuluvun tulo ja tuosta voi päätellä, että toinen niistä päättyy numeroon 7 ja toinen numeroon 1, koska kahden alkuluvun tulona viimeinen numero 7 voi olla vain 1 ja 7 päättyvien lukujen tulon viimeinen numero tai numerot voivat olla 3 ja 9 päättyviä.
Tuo on vain pieni harjoitusnumero todellisissa on vähintään 150 numeroa tai yleensä yli 200 numeroa eli mahdollisten alkulukujen määrä on todella suuri. Koko systeemi perustuu siihen etsittävä alkulukujen määrä on riittävän suuri ja jo aluksi siihen, että on iso työ jo etsiä tarvittavat alkuluvut- Anonyymi
Kehittämälläni systeemillä tulos aukesi alle sekunnissa.
Luvut 24999617 ja 24998191
Vanhalla läppärillä tämmösiä tuloksia
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 1827720
Klaukkalan onnettomuus 4.4
Klaukkalassa oli tänään se kolmen nuoren naisen onnettomuus, onko kellään mitään tietoa mitä kävi tai ketä onnettomuudes923816- 672589
Kolari Klaukkala
Kaksi teinityttö kuoli. Vastaantulijoille ei käynyt mitenkään. Mikä auto ja malli telineillä oli entä se toinen auto? Se731630Ukraina ja Zelenskyn ylläpitämä sota tuhoaa Euroopan, ei Venäjä
Mutta tätä ei YLE eikä Helsingin Sanomat kerto.3861564- 641447
Ooo! Kaija Koo saa kesämökille öky-rempan:jättimäinen terde, poreallas... Katso ennen-jälkeen kuvat!
Wow, nyt on Kaija Koon mökkipihalla kyllä iso muutos! Miltä näyttää, haluaisitko omalle mökillesi vaikkapa samanlaisen l201436Toivoisin, että lähentyisit kanssani
Tänään koin, että välillämme oli enemmän. Kummatkin katsoivat pidempään kuin tavallisesti toista silmiin. En tiedä mistä171111Olisinpa jo siellä, otatkohan minut vastaan
Olisitpa lähelläni ja antaisit minun maalata sinulle kuvaa siitä kaikesta ikävästä, tuskasta, epävarmuudesta ja mieleni791050Kevyt on olo
Tiedättekö, että olo kevenee kummasti, kun päästää turhista asioista tai ihmisistä irti! Tämä on hyvä näin <3841048