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

289

    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. Naiset miltä kiihottuminen teissä tuntuu

      Kun miehellä tulee seisokki ja ja sellainen kihmelöinti sinne niin mitä naisessa köy? :)
      Sinkut
      75
      5634
    2. Haistoin ensin tuoksusi

      Käännyin katsomaan oletko se todellakin sinä , otin askeleen taakse ja jähmetyin. Moikattiin naamat peruslukemilla. Tu
      Ikävä
      24
      2496
    3. Olet sä kyllä

      ihme nainen. Mikä on tuo sun viehätysvoiman salaisuus?
      Ikävä
      26
      1977
    4. Teuvo Hakkaraisesta tulee eurovaalien ääniharava

      Persuissa harmitellaan omaa tyhmyyttä
      Maailman menoa
      59
      1725
    5. Hiljaiset hyvästit?

      Vai mikä on :( oonko sanonut jotain vai mitä?
      Ikävä
      12
      1601
    6. Miksi kohtelit minua kuin tyhmää koiraa?

      Rakastin sinua mutta kohtelit huonosti. Tuntuu ala-arvoiselta. Miksi kuvittelin että joku kohtelisi minua reilusti. Hais
      Särkynyt sydän
      5
      1398
    7. Turha mun on yrittää saada yhteyttä

      Oot mikä oot ja se siitä
      Suhteet
      9
      1307
    8. Kyllä poisto toimii

      Esitin illan suussa kysymyksen, joka koska palstalla riehuvaa häirikköä ja tiedustelin, eikö sitä saa julistettua pannaa
      80 plus
      10
      1281
    9. "Joka miekkaan tarttuu, se siihen hukkuu"..

      "Joka miekkaan tarttuu, se siihen hukkuu".. Näin puhui jo aikoinaan Jeesus, kun yksi hänen opetuslapsistaan löi miekalla
      Yhteiskunta
      7
      1239
    10. Näkymätöntä porukkaa vai ei

      Mon asuu yksin. Mitas mieltä ootte ?
      Ikävä
      14
      1193
    Aihe