RSA -salauksen purku

Tyhmä_kysymys

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.

14

391

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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
      • 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

    1. Mitä siellä ABC on tapahtunut

      Tavallista isompi operaatio näkyy olevan kyseessä.
      Alajärvi
      182
      7720
    2. 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ä onnettomuudes
      Nurmijärvi
      92
      3816
    3. Kuvaile elämäsi naista

      Millainen hän on? Mikä tekee hänestä sinulle erityisen?
      Ikävä
      67
      2589
    4. Kolari Klaukkala

      Kaksi teinityttö kuoli. Vastaantulijoille ei käynyt mitenkään. Mikä auto ja malli telineillä oli entä se toinen auto? Se
      Nurmijärvi
      73
      1630
    5. Ukraina ja Zelenskyn ylläpitämä sota tuhoaa Euroopan, ei Venäjä

      Mutta tätä ei YLE eikä Helsingin Sanomat kerto.
      Maailman menoa
      386
      1564
    6. Kuvaile elämäsi miestä

      Millainen hän on? Mikä tekee hänestä sinulle erityisen?
      Ikävä
      64
      1447
    7. 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 l
      Kesämökki
      20
      1436
    8. Toivoisin, 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ä
      Ikävä
      17
      1111
    9. Olisinpa jo siellä, otatkohan minut vastaan

      Olisitpa lähelläni ja antaisit minun maalata sinulle kuvaa siitä kaikesta ikävästä, tuskasta, epävarmuudesta ja mieleni
      Ikävä
      79
      1050
    10. Kevyt on olo

      Tiedättekö, että olo kevenee kummasti, kun päästää turhista asioista tai ihmisistä irti! Tämä on hyvä näin <3
      Ikävä
      84
      1048
    Aihe