HMAC, SHA1 (C++/AVX2 VS2022)

alex6bbc

  • *****
  • 1 432
    • Zobrazit profil
    • E-mail
Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #15 kdy: 01. 01. 2023, 16:42:20 »
i kdyby jedno heslo z 62^8 trvalo vypocitat miliontinu sekundy, tak je to vypocet na 7 let behu.


Kevil

Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #16 kdy: 01. 01. 2023, 17:05:22 »
i kdyby jedno heslo z 62^8 trvalo vypocitat miliontinu sekundy, tak je to vypocet na 7 let behu.

Generování jednoho hesla trvá 1,83 E-16 s  8). Nemyslím si, že hashování bude více než miliardkrát pomalejší E-16 vs. E-6;)

Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #17 kdy: 01. 01. 2023, 17:29:47 »

Generování jednoho hesla trvá 1,83 E-16 s  8). Nemyslím si, že hashování bude více než miliardkrát pomalejší E-16 vs. E-6;)

checht. V tom výpočtu bude asi nějaká chyba. Při paralelizaci 10000 by to znamenalo cca 546E9 hesel za sekundu.
Vzhledem k tomu, že GTX 960M jede na cca 1GHz (1E9) to je cca 546 hesel na takt na jednu jednotku, což je evidentní nesmysl.

Jestli on nebude zakopaný pes v tom, že v ukázkovém programu je 6 znaků a ne 8 ... To pak vychází drobet jiná a dokonce i uvěřitelná čísla.

Kevil

Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #18 kdy: 01. 01. 2023, 17:58:52 »

Generování jednoho hesla trvá 1,83 E-16 s  8). Nemyslím si, že hashování bude více než miliardkrát pomalejší E-16 vs. E-6;)

checht. V tom výpočtu bude asi nějaká chyba. Při paralelizaci 10000 by to znamenalo cca 546E9 hesel za sekundu.
Vzhledem k tomu, že GTX 960M jede na cca 1GHz (1E9) to je cca 546 hesel na takt na jednu jednotku, což je evidentní nesmysl.

Jestli on nebude zakopaný pes v tom, že v ukázkovém programu je 6 znaků a ne 8 ... To pak vychází drobet jiná a dokonce i uvěřitelná čísla.

To se omlouvám, přehlédl jsem těch 6 znaků při zkoušení. Pro 8 stačí jen změnit definice na začátku programu na:
Kód: [Vybrat]
# define blocks 4
# define threads 992
# define characters 8

Okomentoval jsem jen test na výpis posledních 3 hesel, přeložil a spustil bez ladění  Ctrl + F5 s časem:
Citace
Time  = 7e072 (HEX)
jde o mikrosekundy tj. 516210 DEC = 516,210 ms (včetně spuštění CUDA jádra cca 500 ms)

Kevil

Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #19 kdy: 01. 01. 2023, 18:33:22 »
Je zajímavé, že pokud odkomentuji výpis posledních tří generovaných hesel, čas výpočtu se zásadně prodlouží. Pro 6 znaků na 21,5 s viz:
Citace
Thread[960] 9 9 9 9 9 7
Thread[960] 9 9 9 9 9 8
Thread[960] 9 9 9 9 9 9

Time  = 148da70 (HEX)

Pro 8 znaků pak myslím až na 35 minut. Musím se na to podívat v CUDA debugeru.


Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #20 kdy: 01. 01. 2023, 18:53:16 »
Je zajímavé, že pokud odkomentuji výpis posledních tří generovaných hesel, čas výpočtu se zásadně prodlouží.

Ale o tom zde už dobrou čtvrthodinu hovoříme, Mlho!

Pokud s těmi vygenerovanými hesly nic neděláš, tak ten program nemá žádný side effect a překladač všechny výpočty vyhodí pryč, protože proč by je tam nechával, když se výsledek na nic nepoužije...

alex6bbc

  • *****
  • 1 432
    • Zobrazit profil
    • E-mail
Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #21 kdy: 01. 01. 2023, 19:13:59 »
Je zajímavé, že pokud odkomentuji výpis posledních tří generovaných hesel, čas výpočtu se zásadně prodlouží.

Ale o tom zde už dobrou čtvrthodinu hovoříme, Mlho!

Pokud s těmi vygenerovanými hesly nic neděláš, tak ten program nemá žádný side effect a překladač všechny výpočty vyhodí pryč, protože proč by je tam nechával, když se výsledek na nic nepoužije...

az budu tesne pred smrti, tak se mozna dozvim vysledek :-D

Kevil

Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #22 kdy: 01. 01. 2023, 19:14:17 »
Je zajímavé, že pokud odkomentuji výpis posledních tří generovaných hesel, čas výpočtu se zásadně prodlouží.

Ale o tom zde už dobrou čtvrthodinu hovoříme, Mlho!

Pokud s těmi vygenerovanými hesly nic neděláš, tak ten program nemá žádný side effect a překladač všechny výpočty vyhodí pryč, protože proč by je tam nechával, když se výsledek na nic nepoužije...

To je nesmysl. Překladač nevyhodí funkční kód  8).

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #23 kdy: 01. 01. 2023, 19:33:24 »
Samozřejmě uvidím, až tam přidám to hashování. Věřím ale, že program ušitý na míru bez jakýchkoliv přesunů dat mezi RAM a GPU, bez zbytečných testování pro "x" různých variant hashe bude podstatně rychlejší.
Trochu jo, ale zejména u pomalých hashovacích funkcí (což 4095krát iterovaná HMAC-SHA je) je ta režie zanedbatelná. Kdyby tomu bylo naopak, tak by rychlé hashovací funkce (třeba čistá MD5) nebyly o moc rychlejší - ale ony jsou, a to skoro tak jak by teoreticky být měly (e.g. zpomaluje se to přesně podle počtu iterací).

Pokud s těmi vygenerovanými hesly nic neděláš, tak ten program nemá žádný side effect a překladač všechny výpočty vyhodí pryč, protože proč by je tam nechával, když se výsledek na nic nepoužije...
+1

Mimochodem tohle je taky divné:
Kód: [Vybrat]
counters[i] = (n * threadIdx.x / (uint64_t)pow(62, characters - 1 - i) % 62);crackujeme hesla s floatovými funkcemi ::). Když potřebuješ rozhodit prohledávaný prostor mezi kernely (nepotřebuješ, dokud si neobenchmarkuješ, že režie na kernel je dost velká na to abys to musel řešit) tak to udělej tak, že kernelu přiřadíš třeba prvních 5 znaků a zbylé 3 znaky se proiterují uvnitř kernelu.
« Poslední změna: 01. 01. 2023, 19:35:24 od _Jenda »

Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #24 kdy: 03. 01. 2023, 03:33:43 »
Ahoj Kevile, matematika ti moc nejde, co? Říkáš, že zvládneš spočítat 62^8 netriviálních operací za 40 ms? To máme 62^8/40 netriviálních operací za ms, neboli 62^8/40/1000 netriviálních operací za μs, neboli 62^8/40/1000/1000 netriviálních operací za ns. Furt je to zhruba 5.5 miliónu netriviálních operací každou nanosekundu. Při rychlosti 5GHz, to je stále milión operací za takt. To asi ne, co?

Kevil

Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #25 kdy: 07. 01. 2023, 14:59:04 »

Mimochodem tohle je taky divné:
Kód: [Vybrat]
counters[i] = (n * threadIdx.x / (uint64_t)pow(62, characters - 1 - i) % 62);crackujeme hesla s floatovými funkcemi ::). Když potřebuješ rozhodit prohledávaný prostor mezi kernely (nepotřebuješ, dokud si neobenchmarkuješ, že režie na kernel je dost velká na to abys to musel řešit) tak to udělej tak, že kernelu přiřadíš třeba prvních 5 znaků a zbylé 3 znaky se proiterují uvnitř kernelu.

Rád si nechám poradit, jak skupiny generovaných hesel rovnoměrně rozložit na jednotlivá vlákna bez floatu  ;). Funkčnost svého kódu jsem si nejdříve otestoval v Excelu.

Programuji mj. také 8 bitové MCU, např. ATtiny202 a tam je nesmysl, že by překladač vyhodil kód, který údajně nic nedělá  8).

S odladěním na GPU mám problém. VS2022 a nejnovější NVIDIA Nsight Visual Studio Edition Debugger (režim Next-Gen) nepodporuje starší grafické karty architektury Maxwell (CUDA verze 5.0) což je má karta NVIDIA GeForce GTX 960M, kterou mám v netebooku. Ladění by mělo jít s Nsight v Legacy režimu ve VS2017. To jsem zkoušel, ale debugger se k aplikaci připojí jen na zlomek sekundy a pak se hned odpojí s chybovou hláškou, že nesouhlasí security nastavení v parametrech laděného programu a Nsight Monitoru. Defaultně je ale u obou nastaveno security False. I když jsem oboje změnil na True nic se nezměnilo. Možná je zádrhelem to, že v seznamu podporovaných grafik je u Nsight Legacy uvedena karta GeForce GTX 960 a ne GeForce GTX 960M (má mobilní). Hlavu si z toho ale moc nedělám a nový notebook s výkonější GPU kartou nebudu kvůli tomu kupovat. Zkusím do programu doplnit to hashování a odzkouším rychlost nalezení hesla měřením času.

Pokud má někdo na svém PC novější GPU může zkusit jak se můj program na generování hesel chová v debuggeru  ;).

Jose D

  • *****
  • 850
    • Zobrazit profil
Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #26 kdy: 07. 01. 2023, 16:10:47 »
To je nesmysl. Překladač nevyhodí funkční kód  8).
stane se... ...jednou jsem taky dal data jako konstanty do programu,. rýpal se v unrollování loopů a pragmách a najednou mi z icc vyšla tak super binárka, že jsem už skoro pálil rachejtle..

No ale bylo to tím, že "výpočet" se provedl už při překladu.. bylo to vidět ve vygenerovaných instrukcích...

co jsem si z toho odnesl.. vstupy brát z externího souboru..

Re:HMAC, SHA1 (C++/AVX2 VS2022)
« Odpověď #27 kdy: 07. 01. 2023, 20:02:54 »
[
Takto jsem posledne vyresil sifrovani ve fotakovem RAWu,
co proboha šifruje foťák? (když nepočítám wpa nebo připojení k internetu)? Nebo je to  nějaký foťák s funkcí content authenticity? (nějaká featura za kterou stojí adobe, že fotky budou podepsané jak vylezou z foťáku a má to dokazovat, že s nimi nrbylo manipulováno)