Új hozzászólás Aktív témák

  • dqdb

    Topikgazda

    válasz mexel #22024 üzenetére

    Egyáltalán feltörhető könnyen ha valaki hozzáfér a fájlokhoz? ( esetleg szívesen felteszek egy mesterjelszó nélküli és eg aránylag egyszerűen pár karakterrel kódolt próba pass fájlt ha valaki ki akarja próbálni )
    AES -el van alapból kódolva, de lehet mást is választani.

    Igen, de nem könnyen, az ehhez szükséges idő az algoritmustól és a számítási kapacitástól függ. Egy titkosítást kétféle módon lehet feltörni: végigpróbálgatva a lehetőségeket (brute force) vagy a kulcsgenerálás gyengeségeit kihasználva.

    Brute force esetén nemes egyszerűséggel az összes lehetséges esetet végig kell próbálni, ez AES256 esetén 2^256 lehetőség, ami durván 10^77. A lehetőségek számát lehet csökkenteni az algoritmus időközben kiderült (és publikált) gyengeségeit kihasználva, ezzel AES256 esetén "csak" 2^254,4 próbálkozást kell végrehajtani, ami durván 10^76, azaz az algoritmus megjelenése óta eltelt 15 év alatt a szükséges időt csak a tizedére tudták csökkenteni.

    A kulcsgenerálás gyengeségei alatt azt kell érteni, hogy kettő egymáshoz hasonló, nem független kulcsot használsz titkosításhoz. Jelenleg AES256 esetén 2^99,5 próbálkozást kell végrehajtani (ami durván 10^30), ez lényeges gyengítés, de ennek kihasználásához a RoboForm belsejében kell valamit nagyon elszúrni, szóval inkább elméleti, mint gyakorlati jelentőségű.

    Hozáértőktől kérdem, bár itt kicsit off de nem biztos: ha ugyanaza mesterjelszó és van pl 10db pass, de az egyiket sikerül feltörni akkor a mesterjelszó is kiderül és mind törhető, vag a többit ugyanúgy meg kell szenvedni.
    Az, hogy te jelszavakat kódolsz, a titkosítás szempontjából mindegy. A kérdésed leegyszerűsítve így hangzik: ha kódolok 10 szöveget egy jelszóval, és kikerül egyik esetében mind az eredeti szöveg, mind a titkosított, akkor ki lehet-e találni a jelszót könnyen?

    Nem, a jelszó nem derül ki könnyen, ehhez nagyon béna naiv algoritmust kell használni, amelyeket maximum a modern kriptográfia megszületése előtt alkalmaztak. Ha rendelkezel ilyen plain text-encrypted párral, akkor a brute force törés során az ellenőrzés hatékonyságát tudod növelni, ez a töréshez szükséges idő nagyságrendjét nem igazán befolyásolja.

    A mai modern algoritmusoknál a kódolás/dekódolás két lépcsőre bontható: key setup és a titkosítási művelet. Key setup esetén az általad megadott kulcsot fogja az algoritmus, megcsócsálja, S-boxokkal bűvészkedik, és előállít egy olyan állapotot, amellyel a tényleges titkosítás végrehajtható. Ez lassú, nagyon lassú, és brute force törés esetén minden próbálkozás része egy key setup is. Maga a titkosítási művelet ellenben a lehető leggyorsabb, hogy nagy adatmennyiségek esetén is hatékony legyen. Így 100 MB titkosítása 1 kulccsal sokkalta gyorsabb lehet, mind MB-onként külön kulcs használata.

    Hogy ne lógjon a levegőben, íme néhány saját mérés. Mindegyik esetben az OpenSSL implementációját használtam, amelyik algoritmust megírtak assemblyben is, ott azt. A teszteket egy korosabb (P8600) és egy fiatal (4300U) processzoron futtattam le. Az első érték mindig a 4300U eredménye, a második a P8600-é (ahol hiányzik a második adat, ott lusta voltam copy-paste-elni). Key setup során 100000 műveletre értendő a mért idő, titkosítás esetén 25,6 MiB-nyi adatra. Érdekességképpen a végére beraktam az RSA-t is kétféle bithosszal, a ma már nem eléggé biztonságosnak tartott 1024 bittel, és a ma alapnak számító 2048 bittel (a számokból jól látható, hogy miért nem direktben szokás használni az RSA-t, hanem egy szimmetrikus kulcsú titkosítással karöltve).

    ----- AES256 key setup and encryption -----
    key setup = 8.088 ms / 10.199 ms
    encryption = 341.542 ms / 435.906 ms

    key setup = 12363996 tps
    encryption = 75 MiB/s

    ----- RC4 (128 bits) key setup and encryption -----
    key setup = 61.811 ms / 93.996 ms
    encryption = 48.760 ms / 74.061 ms

    key setup = 1617835 tps
    encryption = 525 MiB/s

    ----- RC4 (384 bits) key setup and encryption -----
    key setup = 47.219 ms / 92.647 ms
    encryption = 43.284 ms / 71.051 ms

    key setup = 2117791 tps
    encryption = 591 MiB/s

    ----- RC4 (2048 bits) key setup and encryption -----
    key setup = 54.654 ms / 82.489 ms
    encryption = 45.256 ms / 70.553 ms

    key setup = 1829692 tps
    encryption = 566 MiB/s

    ----- RSA 1024 bits -----
    private encrypt = 841.061 ms
    public decrypt = 43.500 ms
    public encrypt = 44.758 ms
    private decrypt = 828.002 ms

    private encrypt = 1188.975 tps = 0.151 MiB/s
    public decrypt = 22988.703 tps = 29.425 MiB/s
    public encrypt = 22342.396 tps = 28.598 MiB/s
    private decrypt = 1207.727 tps = 0.154 MiB/s

    ----- RSA 2048 bits -----
    private encrypt = 5636.541 ms
    public decrypt = 169.512 ms
    public encrypt = 166.723 ms
    private decrypt = 5345.292 ms

    private encrypt = 177.414 tps = 0.045417 MiB/s
    public decrypt = 5899.272 tps = 1.510213 MiB/s
    public encrypt = 5997.966 tps = 1.535479 MiB/s
    private decrypt = 187.081 tps = 0.047892 MiB/s

    Vagyis a fentiek alapján egy 4300U esetén egy AES256 brute force-hoz csak a key setup idejét számolva 3,09 * 10^69 másodperc kellene, ami kerekítve 10^62 év.

    A blokkos vagy stream működésbe, és esetleges szivárványtáblát firtató kérdésbe nem mennék bele, mert úgyis valamilyen feedback megoldást használnak, mint CBC vagy CFB.

    [ Szerkesztve ]

    tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek

Új hozzászólás Aktív témák