Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Ondřej Novák 01. 02. 2014, 13:01:45
-
Zdar
Potřebuju poradit, ukázat kde hledat následující (bohužel nevím, jak se zeptat googla)
Knihovnu (nějaký libXXX-dev, ještě lépe se zdrojáky) která by realizovala šifrování a dešifrování s tím, že při zadání správného hesla by dešifrování trvalo nějakou významnou dobu, třeba stovky milisekund až sekundy. Ideálně, kdyby se obtížnost zašifrování dalo nastavit při šifrování.
Cílem je významně ztížit offline louskání hesla brutal force. Je mi jasné, že když útočník použije nějaký distribuovaný systém louskání, tak že stejně nemám moc šancí, ale to bych řešil tím, že bych obtížnost nastavoval podle toho, jakou data mají hodnotu. (příklad... zašifrování privátního klíče bitcoinové adresy)
Nějaký nápad?
-
Obecně se to řeší tak, že zprávu zašifrujete mnohokrát dokola (desítky i stovky tisíc průchodů).
-
Tahle predstava mi prijde trochu blazniva. Knihovna implementuje ruzne zname algoritmy. Nehledas tedy knihovnu, ale algoritmus. Jak dlouho bude trvat utok hrubou silou zalezi predevsim na delce klice a pouzitem algoritmu. Dnes je pro symetrickou kryptografie pouzivany Advanced Encryption Standard. Podporuje delky klicu 128, 192 a 256 bitu. Schvalne zkus pohledat, jak by takovy brutte force utok trval (Pokud neznas backdoor - to by te ale IMHO tezko zajimala data pana Novaka)
Samozrejme, daji se delat ruzne veci - napr. sifrovat postupne vice algoritmy, ale hlavni problem je spise sprava klicu nez resit (vicemene nerealny) brutte force utok.
-
Chceš použít nějakou key derivation function, třeba PBKDF2 nebo scrypt. Tyhlety funkce mají jako jeden z parametrů počet iterací. Ten nastavíš tak vysoko, aby operace trvaly (pro tebe) přijatelně dlouho.
-
Nejprve byste měl hledat algoritmus, teprve pak jeho implementaci. Abyste nenašel knihovnu, která implementuje nějaký autorem knihovny vynalezený algoritmus, při zadání správného hesla a použití dané knihovny trvá dešifrování dlouho, ale algoritmus je velmi slabý a snadno rozlousknutelný.
Váš problém se spíš řeší tak, aby útoční po pokusu o rozšifrování nemohl rychle poznat, zda byl úspěšný. Jak ty privátní klíče vypadají? Opravdu jde ode sebe rychle rozeznat, co je privátní klíč a co náhodné číslo?
Jinak pozor na opakované šifrování, je potřeba prověřit, zda se opakovaným šifrováním neoslabuje bezpečnost. Triviální příklad -- XOR s klíčem stejné délky, jako je zpráva, je velice dobrá šifra. Ale pokud jej budete aplikovat opakovaně, budete při lichém počtu opakování dostávat stále stejný výstup, při sudém počtu opakování dokonce původní nešifrovaný vstup.
-
Chceš použít nějakou key derivation function, třeba PBKDF2 nebo scrypt. Tyhlety funkce mají jako jeden z parametrů počet iterací. Ten nastavíš tak vysoko, aby operace trvaly (pro tebe) přijatelně dlouho.
Díky, našel jsem i nějaké zdrojáky, které PBKDF2 počítají, tak si to s tím zkusím.
-
Chceš použít nějakou key derivation function, třeba PBKDF2 nebo scrypt. Tyhlety funkce mají jako jeden z parametrů počet iterací. Ten nastavíš tak vysoko, aby operace trvaly (pro tebe) přijatelně dlouho.
Díky, našel jsem i nějaké zdrojáky, které PBKDF2 počítají, tak si to s tím zkusím.
Ano, to bude nejbezpečnější, kopírovat nějaké zdrojáky z netu…
Když máš špatné heslo, KDF ti moc nepomůže (protože složitost útoku roste s délkou hesla exponenciálně, ale s délkou KDF jen lineárně). Mnohem lepší je heslo prostě prodloužit. Příklad: pokud prodloužíš heslo o pouhé dva znaky, ztížíš útok 4000x. Tedy podobně, jako kdybys aplikoval KDF (předpokládám zpomalení z 1 ms na 4 s).
-
Prakticky každá vlastní knihovna je "nenapadnutelná".
A dokonce i heslo dlouhé na 4 písmekna je NEZLOMITELNÉ!
(To vysvětlím dále.)
Co to znamená?
To znamená, že se nikdo nebude chtít drbat ani s jednoduše XORovaným textem, pokud to nebude dostatečně významné.
Příklad jednoduchého šifrování:
Komprese
Substituuješ písmenka za čísla, tj. nahradíš písmenka pozicí, víš že písmeno A je na pozici 1,20,40,80.
Substituuješ písmenka pomocí vložené tabulky klíčů
Substituuješ v hesle část řetězce
Provedeš XOR o daný počet bitů
Uživatel použil heslo: IVAN
Třeba podle třetího písmenka se rozhodneš že kroky provedeš v tomto pořadí:
Doplnění textu o náhodně vygenerované řetězce, tj. mezi písmena dáváš jiné znaky Ahoj -> Axhioaj
Substituce z tabulky klíčů a to včetně znaků hesla
Substituce písmenek za čísla
XOR
Doplnění hesla o slovo a číslo: Tedy z IVAN uděláš I2007VANTYDLYDUMVYMRDAMTIzadek
Vtip je v tom, abys z primitivního hesla pomocí šifrovací tabulky vždy dokázal udělat to stejné heslo.
Tím výsledným heslem: I2007VANTYDLYDUMVYMRDAMTIzadek tebou zamotaný text zašifruješ.
Při rozšifrování postupuješ stejně.
Uživatel zadá heslo IVAN, z toho ty vygeneruješ doplněk hesla, tedy celý ten hrozně dlouhý klíč, kterým to je zašifrované: I2007VANTYDLYDUMVYMRDAMTIzadek
Tím to rozšifruješ a provedeš inverzi tvých primitivních metod.
Výhoda?
TVŮJ SOFTWARE NIKOHO NEZAJÍMÁ!
Aby to někdo dokázal rozlousknout, tak mu žádný slovník nepomůže, musí přijít na to, jak generuješ doplněk toho hesla a i kdyby se mu nakrásně povedlo to nějak rozšifrovat (třeba závadou v knihovně), substituce dohromady s XORem jsou pro běžné ignoranty dostatečně bezpečná metoda, aby se na to vykašlali.
Navíc ty provádíš substituci podle nějakého náhodného klíče a XORuješ to podle náhodného klíče.
Velmi pochybuji o tom, že budeš mít data natolik zajímavá, aby na to nasadili vlastní tým analytiků CIA.
-
Když máš špatné heslo, KDF ti moc nepomůže (protože složitost útoku roste s délkou hesla exponenciálně, ale s délkou KDF jen lineárně). Mnohem lepší je heslo prostě prodloužit. Příklad: pokud prodloužíš heslo o pouhé dva znaky, ztížíš útok 4000x. Tedy podobně, jako kdybys aplikoval KDF (předpokládám zpomalení z 1 ms na 4 s).
To je sice obecně pravda, prakticky ale je velký problém přimět uživatele, aby to heslo smysluplně prodloužil (tzn. jinak, než že za svoje normální krátké heslo dopíše 12345..., aby dostal potřebnou délku). KDF s mnoha smyčkami zabere i v tomto případě.
-
Prakticky každá vlastní knihovna je "nenapadnutelná".
Naopak.
To znamená, že se nikdo nebude chtít drbat ani s jednoduše XORovaným textem, pokud to nebude dostatečně významné.
A to máte podloženo čím? Naopak, spousta útočníků to zkusí prostě proto, že můžou. Jasně že by bylo lepší prolomit Gmail než stránku s návštěvností 3 UIP denně, ale pokud mám téměř jistotu, že u toho Gmailu neuspěju, je lepší mít úspěch aspoň na té pidistránce.
Substituuješ písmenka za čísla, tj. nahradíš písmenka pozicí, víš že písmeno A je na pozici 1,20,40,80.
Substituuješ písmenka pomocí vložené tabulky klíčů
Substituuješ v hesle část řetězce
Provedeš XOR o daný počet bitů
Toto schéma se používalo už od 16. století, prolomené bylo nejpozději ve století 18.
Doplnění textu o náhodně vygenerované řetězce, tj. mezi písmena dáváš jiné znaky Ahoj -> Axhioaj
To je plně závislé na security by obscurity, tedy na tom, že útočník neví, podle jakého systému se ty jiné znaky doplňují. To nejde dlouhodobě zaručit. Navíc to má i praktické nevýhody, např. příliš velkou redundanci, která nic nepřináší.
-
@Bla - nic tak hloupeho uz jsem dlouho necetl.
Jak uz psali predrecnici. Vzit scrypt, heslo poradne osolit. A uzivatele nutit pouzit netrivialni hesla.
-
Vycházíte z předpokladu, že útočník nemá k dispozici ten šifrovací a dešifrovací kód - tedy že jde o uzavřenou aplikaci, která běží někde na serveru, který je dostatečně zabezpečený. Pak je ale zbytečné dělat ty vaše opičárny, stačí uživatelovo heslo spojit s třeba 40 znakovým heslem "ukrytým" ve zdrojáku a to celé použít jako vstup třeba pro AES. Na rozdíl od vašeho postupu to bude i bezpečné. Váš postup je totiž možné rozlousknout se znalostí několika dvojic vstupní text - šifrovaný text. Stačí tedy, aby se útočník stal uživatelem toho programu a pár svých klíčů tím zašifroval. Analytická práce člověka na tom není potřeba žádná, rozlousknutí substituční šifry zvládne automat.
Pokud útočník ten kód má k dispozici, třeba protože je to program, který běží u uživatele, může mu jednoduše předhazovat jedno heslo za druhým. Protože jste použil čtyřznakové heslo ze slovníku, bude ho mít hrubou silou prolomené za chvilinku. To vaše prokládání hesla jiným známým heslem nemá na výsledek žádný vliv. Heslo nejde automatizovaně prodloužit, pro sílu hesla je podstatné jenom to, kolik bitů neznámého vstupu tam je.
Jediné, co se z vašeho příspěvku dá použít, je to, že ten software může být nezajímavý. Což už si myslelo několik bitcoinových institucí a někdo si na tom pěkně přivydělal. Pak ale stačí ten klíč ukládat třeba pozpátku, aby to nebylo nápadné na první pohled, bude to nesrovnatelně jednodušší, než váš postup, a bezpečnost bude stejná.
-
Vyprdni sa na to, snad si nechces nechat radit od ludi, ktori mali nahodou minuly semester zapisanu kryptografiu.
-
Vyprdni sa na to, snad si nechces nechat radit od ludi, ktori mali nahodou minuly semester zapisanu kryptografiu.
Tak pořád lepší než si nechat radit od někoho, kdo žádnou přednášku nikdy neměl. Ale i to je patrně lepší než si nechat radit od expertů z RSA.
-
Mě tyhlety KDF přijdou jako poměrně zoufalý pokus jak to zaflikovat a ztížit útok, pokud musím vystačit se slabým či krátkým heslem, tj. např. tam kde si hesla volí uživatelé služby, viz nedávný incident u Adobe. Pokud si volím heslo sám, standardní čistý postup je nikoliv nějakými nesmysly uměle zvyšovat výpočetní složitost jednoho pokusu ale zvyšovat počet nutných pokusů, tj. navýšit délku hesla.
Bohužel dotaz je zadán bez zásadních informací o aplikaci toho šifrování, takže těžko radit.
-
Myslím, že už chápu, jak vzniklo šifrování v KeeLoqu nebo v Mifare Classic. Přesně takhle.
-
A uzivatele nutit pouzit netrivialni hesla.
K tomu jsem skeptický. Moje zkušenost je taková, že uživatelé v tom případě vytvoří heslo, aby vypadalo netriviálně, ale přitom stejně bude triviální. Třeba stanovíš požadavek "heslo musí obsahovat aspoň dvě ze čtyř skupin", tak použijí "Heslo" nebo "heslo123". Kupodivu si málokdo řekne, aha, tohle je asi důležité heslo, dám tam "kp",|Ld[d-T]2CHocDq[". A upřímně řečeno, ani se jim nedivím, protože co se adminovi jeví jako super důležité heslo, protože otevře firemní síť do internetu, to se často uživateli jeví jako prkotina, na které nezáleží ("no tak si někdo přečte můj firemní mail, to je toho, stejně tu všichni víme o všech všechno").
-
Asi tak, i když vynutím malé písmeno, velké písmeno, číslo a speciální znak a nutím měnit heslo každý měsíc, tak se dá udělat něco jako Unor2014. a takové heslo je dobré i pro sdílení s kolegy - při dodržení konvence se trefí na druhý pokus, možná nejhůř na třetí i když nevíte kdo a kdy ho naposledy měnil. Akorát někde sem měl problémy s červencem - hlídala se i podobnost hesel :-)
-
Ono popravde je dneska i celkem slusne heslo lousknutelne, pokud se pouzije tradicni (=optimalizovane na rychlost) hashovani, obzvlaste kdyz prijde ke slovu nekolik GPU nebo cluster v Amazonu. Takze - tlacit lepsi hesla urcite ano (ze to nedopadne vzdy dobre tu pekne demonstrovali pepak a Tonda, ale vzdat to nejde), ale to neznamena, ze by se nemel volit vhodny algoritmus. Mozna je to workaround, ale je potreba.
-
něco o ukládání hesel (a hashích) jsem četl nedávno na redditu, třeba to někomu bude užitečné - http://blog.mist.io/post/75060934180/storing-user-passwords-safely-in-the-database (zdroj (http://www.reddit.com/r/programming/comments/1wklvs/storing_user_passwords_safely_in_the_database/))
-
Myslím, že už chápu, jak vzniklo šifrování v KeeLoqu nebo v Mifare Classic. Přesně takhle.
Myslim, ze takymto predlzenim hesla sa nic nepokazi. Samozrejme je treba aj tak pouzit este nieco, co by normalne pouzival na plaintext.
Vyhoda je tam, ze ked niekto ukradne databazu, tak hesla nemusia byt ohrozene.
-
...hlídala se i podobnost hesel :-)
Hlidani podobnosti hesel je prasarna, protoze to znamena, ze provozovatel ma ty hesla nekde v plaintextu :o
-
Byl to login do RHELu, divil bych se, kdyby tam měli takovou blbost.
-
Tou blbostí myslím hesla v plaintextu, proč tu sakra nejdou editovat komentáře.
-
Myslim, ze takymto predlzenim hesla sa nic nepokazi. Samozrejme je treba aj tak pouzit este nieco, co by normalne pouzival na plaintext.
Pokazí. Najde se dost lidí, kteří věří, že tímhle zvýší bezpečnost - a vykašlou se pak na skutečná bezpečnostní opatření. Ten, kdo ví nebo věří, že to bezpečnost nezvyšuje, to do svého systému ani nebude implementovat.
-
Byl to login do RHELu, divil bych se, kdyby tam měli takovou blbost.
Jedine snad, ze by si je ulozili az pri poslednim zadani pri potvrzeni zmeny hesla. I tak by mi to prislo z hlediska bezpecnosti sub-optimalni.
Ale mozna jsou metody, jak pribliznou podobnost srovnat i bez ulozeni samotneho hesla, otazka spolehlivosti asi neni moc palciva... Porad jsou to ale data, ktery by velmi pomohly pri lamani toho hesla.
Nevi nekdo vic, jak se to bezne dela?
-
Jsem rád, že tomu tak rozumíte ;D
Dělám si sradnu, víte úplný hovno ;D
Děti, abych vám přiblížil, jak to funguje, tak například bruteforce funguje následujícím způsobem:
Vezmu zašifrovaný zdroj, odšifruju pomocí hesla A a pak se pokusím v dešifrovaném textu odhalit buď signaturu nebo třeba slova, nejčastěji pak výskyt asci znaků patřících do skupiny písmenek.
Jirsák, vysvětli mi, jak bude dotyčný schopný zjistit, jestli už má správná data, když to nemá s čím porovnat?
Díky prostému XORu jsou ze hry všechny automatizované nástroje, bude muset otestovat XOR pro všechy vzniklé kombinace, čímž se dostáváme do říše pohádek už jen k vůli tomu, že se nikomu normálnímu nebude chtít takový nástroj psát.
Další blbečky chci upozornit, že vygenerování prodloužení hesla dramaticky zvyšuje nároky na výpočetní výkon.
Představte si, že na základě prvních třech znaků z hesla vygeneruji prodloužení hesla.
Tj. z hesla IVAN udělám:
I2584125V145882A2145852288458N211258452588
Ano, můžete na to útočit pomocí brute force útoku, ale bez studia kódu, který prodloužení generuje, zjistíte úplný prd.
Navíc to není běžná sůl, i když zjistíte, že první písmenko se vezme jako číslo, provede se z něj třetí odmocnina, vynásobí 1000000 a odmaže se zbytek, tak to pořád může být třetí odmocnina z 60-ti znaků a to nemluvím o tom, že bych jednotlivé odmocniny nějak kombinoval spolu.
Tedy, jednoduchým trikem jste protáhli i krátké heslo na něco velmi dlouhého, co prostě bruteforcem bez důkladné analýzy kódu nedáte.
Ale těší mě, že tu jsem nejchytřejší ;)
PS: Najdete rozdíl mezi NBuser123 a N12585425B16497979u1649794616419647s16494138e99876116r41166464979711111647231167731646484463 ?
Dali byste to bruteforcem?
-
například bruteforce funguje následujícím způsobem:
Vezmu zašifrovaný zdroj, odšifruju pomocí hesla A a pak se pokusím v dešifrovaném textu odhalit buď signaturu nebo třeba slova, nejčastěji pak výskyt asci znaků patřících do skupiny písmenek.
Já bych tedy vzal známý vstup, nechal ho použitým programem zašifrovat - a takhle bych to zopakoval pro různé vstupy a různá hesla. Po pár vstupech budu znát transformační tabulku i váš supertajný prodlužovací klíč a úloha se zredukovala na prostý útok hrubou silou na 4znakové heslo. Pokud bych tedy měl potřebu tu tabulku a nástavec na heslo znát - daleko jednodušší je prostě použít ten existující kód.
vygenerování prodloužení hesla dramaticky zvyšuje nároky na výpočetní výkon.
Přičemž "dramaticky" má přesnou hodnotu 1, neboli nároky na výpočetní výkon jsou stále stejné.
Ano, můžete na to útočit pomocí brute force útoku, ale bez studia kódu, který prodloužení generuje, zjistíte úplný prd.
Není potřeba ten kód studovat, prostě ho použiju.
Navíc to není běžná sůl
Není to vůbec žádná sůl. Sůl se používá při hashování hesel. Tady se bavíme o šifrování, protože je potřeba získat původní nezašifrovaný vstup.
Děkujeme, že jste potvrdil známé pravidlo, že čím více nadávek příspěvek obsahuje, tím větší je to nesmysl. Plést si hashování a šifrování je pak už jen poslední kapka pro ty, kteří by si třeba stále nebyli jistí.
-
Ono popravde je dneska i celkem slusne heslo lousknutelne, pokud se pouzije tradicni (=optimalizovane na rychlost) hashovani, obzvlaste kdyz prijde ke slovu nekolik GPU nebo cluster v Amazonu.
Asi máš nějakou jinou definici celkem slušného hesla… V silách několika GPU je řádově 64 bitů (záleží na algoritmu, např. 64bit A5/1 se dá dát za pár sekund, 64bit RC-4 by byla na slušný GPU cluster klidně na rok).
-
...
Příklad jednoduchého šifrování:
Komprese
...
Aneb příklad jednoduchého letadla je traktor.
-
Jirsák, Jirsák....i ostatní...neznalost, neznalost, neznalost.
Naprostá většina burteforce útoků funguje s použitím vlastního nástroje, který je vybavený právě standardní knihovnou.
Pokud tyhle nástroje odstavíte, vyžaduje to nasání nástroje nového, což už je právě v té říši pohádek.
Samozřejmě nehájím krátká hesla obecně, ale bez dekompilace původního nástroje to prostě nedáte.
Komprese neslouží k ničemu jinému než ke zmatení detektoru výstupu, detektor výstupu hledá na výstupu slova a známé řetězce, při použití vhodné komprese pak bude nutné detektor upravit, což už vyžaduje značné úsilí, které je ochotná vynaložit maximálně tajná služba, ale ne Pepa z Poličky. Stejnou funkci může udělat i ten XOR resp. bitový posun založený právě na hesle. Neznáš heslo, nevíš o kolik bitový posun uskutečnit.
Pánové, nudíte mě svojí neznalostí a omezeností.
Pokud máte zájem, pokud se mezi Vámi najde někdo dostatečně chytrý, někdo s mozkem větším než zaječí trus, někdo schopný, kdo chce vyvrátit moje tvrzení, no prosím, můžeme se vsadit.
Vsaďme se o 5000,- Kč, to pro Vás snad nic není, dejme tomu, že Vám chci věřit, že nejste jen diskusní kecalové.
Zašifruji soubor svým nástrojem, který použije standardní šifrovací knihovnu a heslo prodloužím pomocí postupů výše uvedených, dále použiju výše uvedené techniky k dalšímu zašifrování textu, ale kromě hesla Vám poskytnu i mojí aplikaci bez zdrojových kódů.
Co tedy budete mít:
- soubor zašifrovaný heslem dlouhým 4 znaky k odšifrování
- soubor zašifrovaný heslem dlouhým 4 znaky s heslem pro ověření funkčnosti
- můj nástroj, který bude sloužit k šifrování i odšifrování, heslo poskytnu po uplynutí termínu výhry
- substituční tabulky pro zmatení vstupů
- jistotu, že heslo je složené pouze z malých a velkých písmen a číslic
- pět dní času na analýzu nástroje, v této době nebudete mít zašifrovaný soubor k dispozici
- tři dny času na zjištění hesla (nejprve Vám poskytnu nástroj s testovacím souborem, abyste se mohli připravit a pak i ten soubor, o který jde)
Co nebudete mít:
- nebudete mít heslo dlouhé 4 znaky, toto heslo je předmětem naší sázky, tedy nebudte ho mít až do chvíle, kdy sázka končí nebo dokud ho nerozlousknete
Jak půjde sázku vyhrát?
Třeba modnout můj nástroj, aby na vstupu bral hesla a podával výsledek.
Nebo jeho zpětnou analýzou zjistit, jak je tvořený.
Sepíšeme smlouvu, každý z Vás, který se semnou vsadí, každý vsází 5000,- Kč, já vsázím svých 5000,- Kč, ty se v případě Vaší výhry rozdělí mezi ty, kteří se semnou vsadili. S počtem lidí, kteří se semnou vsadí, roste Vaše šance a klesá výše odměny, protože ta se spravedlivě rozdělí mezi Vás.A naopak já, pokud vyhraju, čím víc lidí se vsadí, tím větší výhru dostanu v případě mé výhry.
Uvědomte si, že podle Vás jsem omezený primitiv, tak nic neriskujete ne?
Nebo se vy velcí žvanilové bojíte? Popopopodák?
Tak schválně, kdo má pravdu, jestli se pletu, prohraju a vy tvrdíte, že se pletu určitě.
Takže, kdo se připojí k Jirsákovi, aby to nebylo celé na něm?
Bavíme se tu o hesle dlouhém pouhé 4 znaky!
To snad dáte ne?
-
Jirsák, Jirsák....i ostatní...neznalost, neznalost, neznalost.
Co tedy budete mít:
- soubor zašifrovaný heslem dlouhým 4 znaky k odšifrování
- soubor zašifrovaný heslem dlouhým 4 znaky s heslem pro ověření funkčnosti
- můj nástroj, který bude sloužit k šifrování i odšifrování, heslo poskytnu po uplynutí termínu výhry
- substituční tabulky pro zmatení vstupů
- jistotu, že heslo je složené pouze z malých a velkých písmen a číslic
- pět dní času na analýzu nástroje, v této době nebudete mít zašifrovaný soubor k dispozici
- tři dny času na zjištění hesla (nejprve Vám poskytnu nástroj s testovacím souborem, abyste se mohli připravit a pak i ten soubor, o který jde)
Tak to sem posli, na smlouvu se ti kazdej vybodne. Ale jsem si jisty, ze jestli nekdo bude s tebou chtit ztracet cas tak to jednoduse rozlouskne. Jestli si tedy chces opravdu overit svuj software, normalne ho nekam nahraj a uvidis jak neprolomitelny je.
Spise si myslim, ze zustanes u hloupych urazek. Mozna bys mel obcas cist duvody proc to nemuze fungovat. Ty proste jen delas zname "security by obscurity".
-
@Bla
Zapis si nejaky zakladni kurz bezpecnosti na nejake solidni vejsce nebo na Coursere. Nebo, pokud jsi spis ctenar, zkus trebas https://www.schneier.com/book-ce.html
A nikdy, NIKDY, vazne NIKDY krypto neimplementuj natoz navrhuj (coz je rada platna pro vsechny).
-
Knihovnu (nějaký libXXX-dev, ještě lépe se zdrojáky) která by realizovala šifrování a dešifrování s tím, že při zadání správného hesla by dešifrování trvalo nějakou významnou dobu, třeba stovky milisekund až sekundy. Ideálně, kdyby se obtížnost zašifrování dalo nastavit při šifrování.
jak uz tu radili, slo by pouzit PBKDF2 trebas primo v luks2 kontejneru pomoci cryptsetup, nastavis parametr --iter-time=1000 a --hash=whirlpool nebo jinej, sha1 bych se vyhnul
jen ten zadanej --iter-time ne uplne odpovida casu otvirani, nejaka chybka ve vnitrnim benchmarku, je potreba to vyzkouset
taky ruzny backendy ke cryptsetupu jsou ruzne rychly v pocitani hashu, vetsinou rychlejsi nez defaultni gcrypt je openssl
-
Náhodou, tato diskuse je opravdu přínosná.
http://en.wikipedia.org/wiki/Dunning–Kruger_effect
-
http://en.wikipedia.org/wiki/Dunning–Kruger_effect
aha, tak to jsem na tom dobre? ;D
-
Dunning Kruger efekt se v v teto oblasti reprezentuje Schneierovym zakonem: "any person can invent a security system so clever that she or he can't think of how to break it."
https://www.schneier.com/blog/archives/2011/04/schneiers_law.html
-
Bla : Opravdu myslíš, že s tebou bude někdo řešit smlouvu o prachy? Sepsat rozumnou smlouvu bude těžší, než dekompilovat ten zprasek.
Ale čistě sportovně do toho půjdu. Vystav někde ten program, nebo mi to pošli na mail JSH u seznamu.
-
Odpovím na otázku k čemu jsem to chtěl.
Když zašifruju privátní klíč k bitcoinové adrese pomocí passphrase, jakou jistotu mám, že mě to ochrání při zcizení toho klíče. Útočník vesele provede útok offline a pokusí se uhodnout moji passphrase. Bude na to mít ohromné množství času a ohromné množství výpočetního výkonu. Proto jsem hledal způsob, jak udělat, aby dešifrace privátního klíče správným heslem trvala co nejdéle. Klidně i minutu. To chci pak vidět, kolik prostředku bude muset útočník investovat do takového lámání hesla, aby to rozlousknul v reálném čase.
(Nejvíc se mě líbí hláška u NXT - vaše passphrase je moc krátká, úročník ji může lehce ohalit: Napsal jsem tam celé jméno a příjmené své dcery i s datumem narození a místo mezer strčil nějaké ty symboly)
-
Nejprve definujte, čemu říkáte „standardní šifrovací knihovna“ a co přesně jsou ty „výše uvedené postupy“. Pak byste také musel definovat, jaké vstupy a výstupy bude mít ten váš program a jak dlouho trvá jedno dešifrování. Kvůli 5000 Kč totiž ten váš program nikdo zkoumat nebude, takže by musel být použitelný už od vás.
Mimochodem, ten váš algoritmus prodlužující hesla funguje jenom pro čtyřznaková hesla? Nebo i pro hesla tříznaková, jednoznaková a 0znaková?
Jeden z algoritmů, který jste popsal, je doplnit heslo konstantním řetězcem, výsledek použít jako klíč a jím XORovat vstupní text. Takže zkusíme tomu algoritmu předhodit stejný vstup a tři různé hesla:
Hesla:
NBuser123
nbUSER789
aaaaaaaaa
Výstup:
pbcXiXWcXlbYWjZjZjSbYWjZjWYIbYWbjYWZCbYWjWbdiHjjiZYbbYbWbbYYWYWcjZjZbbbbdbYWZcdb
LbcXiXWcX1bYWjZjZjwbYWjZjWYubYWbjYWZgbYWjWbdi-jjiZYbbYZWbbYYWYWijZjZbbbbjbYWZcdb
0bcXiXWcX0bYWjZjZj0bYWjZjWY0bYWbjYWZ0bYWjWbdi0jjiZYbbY0WbbYYWYW0jZjZbbbb0bYWZcdb
Není vám na těch výstupech něco nápadné? Tak zkusíme jako vstup samé nuly:
Hesla:
XXXXXXXXX
xxxxxxxxx
Výstup:
X12585425X16497979X16497946X16419647X16494138X99876116X41166464X97971111X1647231
x12585425x16497979x16497946x16419647x16494138x99876116x41166464x97971111x1647231
Takže máme váš supertajný klíč, ve kterém se na místa X/x postupně doplňují znaky hesla. Hm, to bylo fakt těžké. Ještě že jste se o těch 5000 Kč nevsadil, že? Takže šifry známé a prolomené stovky let asi nebudou to pravé. Můžete zkusit váš algoritmus postupně vylepšovat, třeba se dostanete aspoň na úroveň 18. století. Jenže pokud chcete obstát dnes, budete muset použít nějakou moderní šifru, kterou si jen tak na koleně nesplácáte.
-
..že mě to ochrání při zcizení toho klíče.
Tak ten klíč zkrátka nezcizuj a budeš mít klid. ;)
-
Sepíšeme smlouvu, každý z Vás, který se semnou vsadí, každý vsází 5000,- Kč, já vsázím svých 5000,- Kč, ty se v případě Vaší výhry rozdělí mezi ty, kteří se semnou vsadili.
LOL! :D To jako že když se s pěti lidmi vsadíš o flašku, tak v případě prohry jim dáš jednu dohromady? :D Tak to jsem teda ještě nežral. :D
Uvědomte si, že podle Vás jsem omezený primitiv, tak nic neriskujete ne?
To spíš podle tebe jsou omezení primitivové všichni ti matematikové, co se zabývají kryptografií - když je to celé tak jednoduché.
„Nám starého kozla na tom záleží, kadete Bieglere,“ s výrazem opovržení a nelibosti řekl hejtman Ságner; „je jisto, že systém, o který šla řeč a který jsem vám vysvětloval, je nejen jeden z nejlepších, ale můžeme říct nedostižitelných. Všechna oddělení pro protišpionáž našich nepřátelských štábů mohou jíti na hrnec. Kdyby se rozkrájeli, nepřečtou naše šifry. Jest to něco zcela nového. Tyto šifry nemají předchůdce.“
-
Jestli ho chápu správně, netvrdí, že tím primitivním postupem udělá ze slabé šifry silnou, ale že jednoduchou úpravou podstatně ztíží dešifrování, což je přesně to, o com v tomhle vláknu jde. Mě se ten jeho postup líbí, vezme šifru třeba AES+Twofish a přidáním další vrstvy, bez změny vlastní knihovny, vyřadí ze hry všechny standardní dešifrovací nástroje pro AES+Twofish. Jsem přesvědčený, že to fugovat bude. Krása jeho postupu je v tom, že není nutné upravovat standardní šifrovací knihovnu.
Ovšem ty tvrdíš, že to, co navrhuje, naprosto nefunguje a že je kašpar.
To není o penězích, netvrdil, že ty šifry bude někdo louskat za 5kkč, tvrdí, že to funguje, ty tvrdíš, že ne, sázka je o tom, jestli si dokážete stát za svým slovem. PTÁM SE TEDY, PROČ SE S NÍM NEVSADÍŠ? Pokud se s ním nechceš vsadit, je na místě tuším velmi slušná omluva a pořádná halda popela nasypaná na tvou hlavu. V opačném případě bys tu sázku měl přijít, pokud má tvoje slovo tedy alespoň nějakou cenu.
Bla má u mě bod za odvahu!
Stojí si za svým slovem a je ochotný se za svůj názor i bít.
Bez ohledu na to, jestli má a nebo nemá pravdu, autoritu si u mě vysloužil právě Bla a ještě JSH, který nekecá a maká.
Co na to Filip Jirsák, jaký je to člověk, zbaběle se stáhne nebo se zachová jako chlap?
-
TVŮJ SOFTWARE NIKOHO NEZAJÍMÁ!
Pokud bude můj software spravovat nějaké peníze, cryptoměnu nebo něco jinak hodnotného, tak bude zajímat každého. Tohle je snad největší chyba, kterou člověk může ve svých úvahách udělat!
Hodně právě uvažuji nad tím, jak ochránit dedikovaný počítač proti leaknutím důležitých informací vedoucí k neoprávněnému získání spravovaných hodnot.
Jaké jsou tam rizika?
- Klasické napadení z venku (vlámat se dovnitř skrze známou chybu a plně jej ovládnout)
- Ovládnutí z venku (přesvědčit stroj, aby mne poslouchal)
- Ukrást ho fyzicky
- Ukrást některou HW součást (HW klíč, disk)
- Přinutit provozovatele telehausu, aby udělal kopii stroje + dump paměti
- Riziko že si ho vykrade sám majitel nebo společník
Zatímco první bod jsem schopen řešit třeba tak, že stroj nebude jednat jako server, tedy bude se chovat jako klientský počítač, nebude mít otevřený žádný port například, Druhý bod už je těžší, protože znamená to, že útočník musí získat kontrolu na počítačem, který tenhle stroj poslouchá a věří mu (master). Zabezpečení HTTPS např. nebo vzájemná autentifikace stran, vyhnout se DNS a podobně může pomoci tím, že útočník nebude moci dotazy stroje přesměrovat a vydávat se tak za mastera
No a teď jsem se dostal k bodům, kdy se řeší, že informace uložené na serveru leaknou jinou cestou. Když už se útočník dostane do stroje, tak z něho pouze vytáhne údaje, klíče, hesla, a teď jde o to, aby mu to i přesto bylo k ničemu. Pokud ho ukradne fyzicky (tedy ho bude muset například odpojit) nebo mu ukradne disk, tak je zde možnost snížit riziko ukradení tím, že některá část hesla bude uložena v paměti, zadaná při startu systému a odpojením se ta informace smaže. Pokud ale získá i DUMP paměti, je to víceméně v háji.
Decryptace lze řešit C++ kódem, což je jen o píď lepší, než to když to bude napsané v pythonu nebo v PHP. Záleží, co útočník získá. Například se do stroje vláme jako user s omezenými právy, tak pravděpodobně nezíská binárku (bude spouštěná pod rootem a následně se jí ponízí práva). Skriptovací jazyky zpravidla vyžadují, aby kód byl dostupný pod uživatelem, ve kterém je proces spuštěný (takže je útočník může získat)
Zpět k tématu, nebudu uvažovat plné ovládnutí stroje a získání všech klíčů, včetně zadaných (část klíče může být zasílána z mastera při každém požadavku, takže samotný dump stroje i s paměti nemusí dostačující, bude vyžadovat aby se stroj spojil se svým masterem). Když už útočník získal všechny klíče ale vše má zašifrované, chybí mu jedna část, kterou nezískal, může si jí dopočítat. Proto mi připadá rozumné, aby zde byl i nějaký časový faktor, klidně hodně přehnaný, klidně vytažen i na jednotky sekund, aby útočník nemohl klíče, které nezískal rychle dopočítat.
Jinak ještě k posledním bodům. Předposlední body lze asi řešit diverzifikací... tedy nedržet vše na jednom místě a tím vytvořit single point of failure. Riziko majitele a společníka bude potřeba asi řešit na straně práva.
Cold wallet samozřejmě uvažuju také, pokud jde o cryptoměnu.
-
Jestli ho chápu správně, netvrdí, že tím primitivním postupem udělá ze slabé šifry silnou, ale že jednoduchou úpravou podstatně ztíží dešifrování, což je přesně to, o com v tomhle vláknu jde. Mě se ten jeho postup líbí, vezme šifru třeba AES+Twofish a přidáním
Já tam vidím problém ten, že pokud někdo zjistí, jak se tvoří ty dlouhá hesla, pak nebude pro něj problém nasadit brutalforce attack před jeho úžasný algoritmus a tím smrsknout problém jen na krátké heslo. Proto mi přijde navržené PBKDF2 lepší, protože tam bude proti útočníkovi stát čas a výpočetní výkon. Útočník si tak může vybrat, jestli se mu vyplatí louskat původní heslo, nebo jeho derivovanou podobu. V obou případech to bude mít náročné.
-
To máš pravdu, já ten jeho "MOD" taky nepovažuji za nic zázračného, ale výborných matematiků je málo a pokud z akce vyřadí ty tooly, tak to účel splní. Studium binárky vyžaduje podstateně víc úsilí, tedy určitě v porovnáním se spuštěním už hotového nástroje.
Sám jsi ho citoval:
TVŮJ SOFTWARE NIKOHO NEZAJÍMÁ!
Pokud mám něco zašifrovaného jinak, než tak, aby na to šlo jednoduše uplatnit bruteforce attack a zároveň to je nějaká aplikačka, která nikoho nezajímá, je to jeho řešení naprosto dostačující. Malou změnou odstavíš už hotové tooly a k vůli prdu se s tím nikdo matlat nebude.
Tak jsem ho pochopil já.
Možná jsem vlákno nečetl dostatečně důkladně, tady padlo něco o tom, že šifra má chránit tajemství v hodnotě miliard?
Naprostá většina burteforce útoků funguje s použitím vlastního nástroje, který je vybavený právě standardní knihovnou.
Pokud tyhle nástroje odstavíte, vyžaduje to nasání nástroje nového, což už je právě v té říši pohádek.
Samozřejmě nehájím krátká hesla obecně, ale bez dekompilace původního nástroje to prostě nedáte.
Pokud přejdu ten sebevědomý tón, má pravdu.
Sice použijete standardní knihovnu, ale oproti čistě standardní knihovně budete mít výstup o malilinko bezpečnější.
-
Vsaďme se o 5000,- Kč, ...
Pripada mi, ze v tom, co Bla navrhuje, je jeden zasadni podfuk. Nikde nerika nic o tom, jak vypadaji zasifrovana data. Takze pokud zasifruje neco nahodneho (treba ani ne nahodne znaky, ale vylozene nahodne byty), nemate jak zjistit, ze jste opravdu nasli spravne heslo a rozsifrovali to, nebo to jen "jakorozsifrovali" spatnym heslem.
Pokud je to prave ten pripad, ze se spoleha na tohle, je mozne, ze je to efektivni na nahodna data, ale uplne k nicemu na realna data.
jednoduchy priklad:
Vezmu heslo "blee" a proXORuju jim nahodna data. Diky symetrii XORu se na to ale muzu podivat tak, ze daty bylo ono mnohokrat zretezene "blee" a klicem ta nahodna data => Vernamova šifra...
-
Mě se ten jeho postup líbí, vezme šifru třeba AES+Twofish a přidáním další vrstvy, bez změny vlastní knihovny, vyřadí ze hry všechny standardní dešifrovací nástroje pro AES+Twofish. Jsem přesvědčený, že to fugovat bude.
Nebude. Celé to jeho schéma je přesně tak bezpečné, jak dobře zaobfuskovaný je algoritmus pro prodloužení klíče, nic víc, nic míň. Žádný útočník samozřejmě nebude brute-forcovat prodloužené heslo, on si prostě rozebere algoritmus prodloužení a potom ho bude aplikovat na běžný brute-force generátor hesel. To, že tento postup "vyřadí ze hry všechny standardní dešifrovací nástroje", není žádná skutečná výhoda - každý seriozní útočník si pro *každý* nástroj, který chce prolomit, napíše upravenou verzi dešifrovacího nástroje. Zablokování standardních nástrojů je funkční tak akorát proti script kiddies.
Dalo by se samozřejmě diskutovat o tom jeho zamaskování plaintextu přičtením/přixorováním nějakých dat. Jenže když z toho ořízneme bláboly a přehánění, tak v lepším případě zjistíme, že jsme před použitím AES+Twofish (když už jste s ním začal) data ještě zašifrovali pseudonáhodným "Vernamem" (který ovšem nesmí být pseudonáhodný, že) a tedy jsme přidali složitost odpovídající složitosti seedu použitého PRNG. No a tím jsme zase zpátky na začátku - prodlužujeme heslo, protože uživatel si neumí zapamatovat silné heslo, a k tomu, aby to fungovalo, potřebujeme další heslo, které poslouží jako seed PRNG.
Ovšem ty tvrdíš, že to, co navrhuje, naprosto nefunguje a že je kašpar.
Je to sice trochu tvrdé, ale bohužel to je pravda.
To není o penězích, netvrdil, že ty šifry bude někdo louskat za 5kkč, tvrdí, že to funguje, ty tvrdíš, že ne, sázka je o tom, jestli si dokážete stát za svým slovem. PTÁM SE TEDY, PROČ SE S NÍM NEVSADÍŠ?
Protože podmínky jsou stanoveny krajně nevýhodně pro mě. Totiž ty, které jsou stanoveny a které si tedy nemůže libovolně měnit podle situace. Něco jiného by bylo, kdyby například vystavil ten svůj program a řekl, "prvnímu, kdo to do 30 dnů prolomí, vyplatím 5000 Kč". Pořád by tam byl trochu problém, že někteří z nás mají spoustu práce a 5000 není žádné velké terno, ale přinejmenším by to trochu odpovídalo reálné situaci.
Bla má u mě bod za odvahu!
Za jakou odvahu? Když ti navrhnu sázku o to, že kohokoliv z netu porazím v nějakém sportu s tím, že ten sport si zvolím až poté, co se mnou uzavřeš v tomto smyslu smlouvu, tak budeš chodit kolem a říkat, "Ten pepak má ale odvahu"?
-
Po zvazeni ten jeho software vlastne vubec nic neni. Je to jenom neco co transformuje kratke heslo na dlouhe. Dnes ale neni problem drzet dlouhe heslo pomoci prislusnych nastroju. Problem muze byt, ze nejsou po ruce. Jenze stejny problem je i s tim jeho nastrojem. Pokud ho nemate u sebe tak heslo pro decrypt taky neziskate.
Cili je to vlastne svou funkcionalitou velmi omezene uloziste hesel a s sifrovanim to nema pranic spolecneho.
-
Jestli ho chápu správně, netvrdí, že tím primitivním postupem udělá ze slabé šifry silnou, ale že jednoduchou úpravou podstatně ztíží dešifrování, což je přesně to, o com v tomhle vláknu jde. Mě se ten jeho postup líbí, vezme šifru třeba AES+Twofish a přidáním další vrstvy, bez změny vlastní knihovny, vyřadí ze hry všechny standardní dešifrovací nástroje pro AES+Twofish. Jsem přesvědčený, že to fugovat bude. Krása jeho postupu je v tom, že není nutné upravovat standardní šifrovací knihovnu.
Já to bohužel spíš vidím tak, že ze slabé šifry udělá slabou šifru na které to není tak vidět. Celý ten primitivní postup je mezikus který se dá přidat do jakéhokoliv bruteforce, nebo slovníkového útoku bez jakýchkoliv problémů. Obzvlášť pokud k tomu nabízí i binárku.
Ovšem ty tvrdíš, že to, co navrhuje, naprosto nefunguje a že je kašpar.
To není o penězích, netvrdil, že ty šifry bude někdo louskat za 5kkč, tvrdí, že to funguje, ty tvrdíš, že ne, sázka je o tom, jestli si dokážete stát za svým slovem. PTÁM SE TEDY, PROČ SE S NÍM NEVSADÍŠ? Pokud se s ním nechceš vsadit, je na místě tuším velmi slušná omluva a pořádná halda popela nasypaná na tvou hlavu. V opačném případě bys tu sázku měl přijít, pokud má tvoje slovo tedy alespoň nějakou cenu.
Budu upřímný. Za těchhle podmínek by se o prachy vsadil jen blbec.To zadání je napsané tak vágně, že může klidně vyhrát přes kreativní výklad pravidel.
Bla má u mě bod za odvahu!
Stojí si za svým slovem a je ochotný se za svůj názor i bít.
Bez ohledu na to, jestli má a nebo nemá pravdu, autoritu si u mě vysloužil právě Bla a ještě JSH, který nekecá a maká.
Co na to Filip Jirsák, jaký je to člověk, zbaběle se stáhne nebo se zachová jako chlap?
Docela mě překvapuje, že by měl být můj přístup nějaký lepší. Vždyť jsem zbaběle odmítnul sázku o prachy. Tahle sázka může být daleko náročnější na čas než jakékoliv vysvětlování evidentních chyb ve fóru a nějakých 5k (ještě pro několik lidí) je za to dost málo. Obzvlášť takoví, o jejichž zpětnou vazbu by měl Bla stát nejvíc, na to čas určitě nemají. Ta zásadní chyba navíc není v konkrétní implementaci (kterou může znova a znova flíkovat), ale v Blaově přístupu. Tyhle laické hacky můžou dokonce snižovat bezpečnost těch standardních algoritmů za nimi.
-
To máš pravdu, já ten jeho "MOD" taky nepovažuji za nic zázračného, ale výborných matematiků je málo
Zásadní problém těchto schémat je, že nepotřebují výborného matematika - obvykle jim stačí matematik, který je *lepší* než ten, kdo schéma navrhl. A takových lepších matematiků je obvykle sakra hodně. V případě Bla rozhodně, soudě podle toho, co zatím napsal.
Studium binárky vyžaduje podstateně víc úsilí, tedy určitě v porovnáním se spuštěním už hotového nástroje.
To jistě, ale už hotový nástroj eliminuješ i podstatně jednoduššími technikami. Pokud chceš komplexnější eliminaci, musíš počítat s tím, že na tvoje schéma bude útočit schopnější útočník a pro něj není studium binárky zásadním problémem.
Pokud mám něco zašifrovaného jinak, než tak, aby na to šlo jednoduše uplatnit bruteforce attack a zároveň to je nějaká aplikačka, která nikoho nezajímá, je to jeho řešení naprosto dostačující. Malou změnou odstavíš už hotové tooly a k vůli prdu se s tím nikdo matlat nebude.
Bude. Prolomit aplikaci, kterou používají tři lidí na světě, je větší úspěch než *neprolomit* aplikaci, kterou používá každý. Proto mají útočníci motivaci prolamovat i "nezajímavé" aplikace.
-
Rad bych se vratil k puvodnimu dotazu. Staci trochu pocitat a zjistime, ze nema smysl tim ztracet cas:
- Prodlouzeni desifrovaciho algoritmu je konstantni faktor. Dejme tomu, ze prodlouzime cas desifrovani 16x; o to zpomalime brute force utok.
- Volba hashovaciho algoritmu s delsim klicem je exponencialni faktor. To znamena, ze po pridani pouhych 4 bitu k vyslednemu hashi bude brute force utok trvat 16x dele take.
- Pokud tedy napriklad zvolime SHA512 misto SHA256, je to ekvivalentni tomu, prodlouzit cas desifrovani o 2^256. :-) Pochybuji, ze bude uzivatel ochoten tak dlouho cekat, kdyz zivotnost vesmiru je nekde kolem 2^60.
Jinak receno, zvolte delsi klic, bude to mnohem efektivnejsi, a hlavne (jak uz tu nekdo zminil) nezapomente na salt.
-
A jeste k sifrovacimu algoritmu pana Bla: Legrace nastane, az se vam vyskytnou dva uzivatele s podobnym heslem.
-
- Pokud tedy napriklad zvolime SHA512 misto SHA256, je to ekvivalentni tomu, prodlouzit cas desifrovani o 2^256. :-) Pochybuji, ze bude uzivatel ochoten tak dlouho cekat, kdyz zivotnost vesmiru je nekde kolem 2^60.
Jinak receno, zvolte delsi klic, bude to mnohem efektivnejsi, a hlavne (jak uz tu nekdo zminil) nezapomente na salt.
Pořád je to o tom, že nakonec tam to heslo zadá člověk, který ho musí mít v hlavě, pokud si ho tedy nezapsal na papír (což by neměl). Nebo snad považujete privátní klíč k bitcoinové peněžence uložený v dropboxu zašifrovaný heslem o délce osm znaků i přesto že používá čísla symboly za bezpečné uložení?
Já si nejsem jist (ačkoliv takový klíč tam mám)
-
Zablokování standardních nástrojů je funkční tak akorát proti script kiddies.
Myslím, že tohle je klíčová věc. Jakákoliv samodomo implementace čehokoliv vyřadí ze hry zcela automatické nástroje. Ale nic víc. Ale i to může někomu stačit ke štěstí. Takže v tomhle smyslu to funguje.
Stejně tak jako tady na rootu funguje antispam, který rotuje asi 20 (?) českých otázek. Automatičtí fórum-spammeři jsou ze hry. A je jasné, že kdyby kdokoliv chtě, tak za 30 minut práce naučí svého robota těch 20 otázek a antispam je prolomen. Jenže to zatím zjevně nikomu za těch 30 minut práce nestálo.
Jenže jsou to právě ti automatičtí útočníci, kteří jsou relativně málo nebezpeční, protože jsou obvykle na druhém konci světa a vaše data tam nikoho nezajímají (je jasné, že se nebavíme o žádné větší firmě, nebo někom, kdo spravuje nějaká data větší firmy) a i kdyby nějaké vaše konkurence měla zájem vaše data koupit, tak ten útočník nebude schopen toho kupce vůbec najít.
Rizikem je cílený útok někoho, kdo ví, proč vaše data chce. A právě proti cílenému útoku je celá tahla šaráda úplně na nic - a o to hůře, že ta šaráda vede k tomu, že data jsou pomocí skutečného kryptoalgoritmu zašifrována jenom se slabým heslem.
Takže ono to opravdu funguje. Funguje to tak, že to snižuje riziko málo nebezpečných (automatických) útoků a nepřímo to zvyšuje riziko skutečného nebezpečí (cílené útoky), tím že to vede ke slabým heslům.
-
- Pokud tedy napriklad zvolime SHA512 misto SHA256, je to ekvivalentni tomu, prodlouzit cas desifrovani o 2^256. :-)
To snad nemyslíš vážně!
Jinak receno, zvolte delsi klic, bude to mnohem efektivnejsi
O tom nikdo nepolemizuje. V reálném světě to však má jednu chybu: potřebuješ o tom přesvědčit i uživatele.
-
Nezdá se mi, že by Bla toužil po psaní takových nástrojů.
Prostě si jen stojí za svým.
No a proč by to měl dělat zadarmo?
Dvacet pet tisíc za napsání podobného šifrovacího nástroje mi přijde jako přiměřená odměna, tedy pokud umí. A jestli umí, jestli si ty peníze zaslouží, rozhodnete právě vy. Máte možnost ho zesměšnit a ještě za jeho peníze uspořádat oslavu týmu profíků.
Lousknete mu to, dáte mu pár otcovských rad, poučíte ho, jak je ještě nevyzrálý a uspořádáte párty.
Jak to řekl, když on tak neumí a vy tak umíte, dokažte to!
Proč Vás hecuju?
Zajímá mě výsledek!
Taky je to příležitost, aby se bezcenné kydání hnoje, které tu neustále dokola probíhá, mohlo alespoň jednou změnit v něco zajímavého.
Hééééj, prostě vezměte to.
Hodím k penězům od Bla další litr!
Voe, snad ví, co plácá ;D Ale jo, přidám se k němu!
Čistě pro tu prču, chci vidět, jak z Vás nadělá jelita.
Sám jsem zkoušel lousknout jeden exe a není to žádná zadek.
-
Pripada mi, ze v tom, co Bla navrhuje, je jeden zasadni podfuk. Nikde nerika nic o tom, jak vypadaji zasifrovana data. Takze pokud zasifruje neco nahodneho (treba ani ne nahodne znaky, ale vylozene nahodne byty), nemate jak zjistit, ze jste opravdu nasli spravne heslo a rozsifrovali to, nebo to jen "jakorozsifrovali" spatnym heslem.
Pokud bude algoritmus šifrování vypadat tak, jak Bla popisuje, může klidně zašifrovat náhodná data – a o správnosti rozšifrování nebude pochyb díky tomu, že ten odvozený algoritmus bude dávat stejné výsledky pro jiná vstupní data, jako by dával jeho program. A protože ty jeho algoritmy jsou tak triviální, nemůže existovat jiný algoritmus, který by dával pro testovací data stejné výsledky, ale pro jeho náhodná data jiný výsledek. Samozřejmě pokud by v té aplikaci neměl podfuk a ta by jeho vstup nešifrovala jiným způsobem, než jiné vstupy.
Jinak to, zda vstup do šifrování je náhodný, nebo zda pro pokusu o rozšifrování dokážu určit, zda heslo mohlo být správné, nebo je určitě špatné, je jedno z kritérií pro návrh bezpečnostního modelu. Tohle kritérium je klíčové pro útok hrubou silou. Pokud by útočník nedokázal z rozšifrovaného výstupu poznat, zda může jít o privátní klíč, dostal by po tom útoku hrubou silou na čtyřznaková hesla necelý půl milionu potenciálních klíčů, a musel by všemi podepsat transakci, přičemž jenom jedna z toho půl milion transakcí by prošla – a teprve pak by věděl, který je ten správný klíč. Což by ale zrovna v tomhle případě útočníkovi nevadilo, protože ty transakce by vytvořil prakticky zadarmo. Druhý problém je v tom, že privátní klíč není náhodná směs znaků, naopak musí splňovat určité požadavky. Takže útočník může po rozšifrování otestovat, jestli to, co mu vyšlo, vůbec může být privátní klíč – pro těch půl milionu kandidátů myslím rychle vyloučí všechny až na jeden. Z toho důvodu by ani nebylo potřeba ten Blaův nástavcový algoritmus nijak zkoumat. Prostě by se ten jeho program spustil pro půl milionu různých hesel, a půl milionu výstupů by se otestovalo, zda to může být privátní klíč.
Jestli ho chápu správně, netvrdí, že tím primitivním postupem udělá ze slabé šifry silnou, ale že jednoduchou úpravou podstatně ztíží dešifrování, což je přesně to, o com v tomhle vláknu jde.
Nikoli, v tomhle vlákně jde o řešení případu, když má útočník dostatek výkonu na to, aby zkoušel jedno heslo po druhém. Zatímco u jednoduchého algoritmu s heslem ze čtyř velkých písmen velké abecedy musí útočník vyzkoušet skoro půl milionu různých hesel, s použitím Blaova nástavcového algoritmu musí vyzkoušet skoro půl milionu různých hesel – tedy úplně to samé.
Mě se ten jeho postup líbí, vezme šifru třeba AES+Twofish a přidáním další vrstvy, bez změny vlastní knihovny, vyřadí ze hry všechny standardní dešifrovací nástroje pro AES+Twofish.
Ty nástroje nevyřadí ze hry, jenom bude muset těm nástrojům předhodit jiný slovník. Ještě jednodušší, než řešit nějaké standardní dešifrovací nástroje (nevím, co to je), bude použít přímo ten program, který chce Ondřej napsat. To bylo další kritérium, které jsem napsal – zda ten šifrovací program bude k dispozici uživatelům, nebo zda se počítá s tím, že poběží někde na nedobytném serveru.
To není o penězích, netvrdil, že ty šifry bude někdo louskat za 5kkč, tvrdí, že to funguje, ty tvrdíš, že ne, sázka je o tom, jestli si dokážete stát za svým slovem. PTÁM SE TEDY, PROČ SE S NÍM NEVSADÍŠ? Pokud se s ním nechceš vsadit, je na místě tuším velmi slušná omluva a pořádná halda popela nasypaná na tvou hlavu. V opačném případě bys tu sázku měl přijít, pokud má tvoje slovo tedy alespoň nějakou cenu.
Nevsadím se s ním proto, protože zatím nenavrhl žádné přijatelné podmínky. Zatím navrhl jenom že dodá nějaký blackbox, kde klidně může být
if (muj_tajny_vstup) then {
muj_tajny_vystup
}
Na to, aby se něčím takovým někdo zabýval, je 5 000 Kč slabá motivace. Proč asi Bla nenavrhl, že ten program zveřejní i se zdrojovým kódem?
Bla má u mě bod za odvahu!Ano, když o tématu vůbec nic neví, je odvaha o tom psát a ještě se sázet. Naštěstí měl Bla tolik rozumu, aby podmínky sázky nastavil tak, že on může klidně podvádět. Bohužel je taková sázka nezajímavá.
-
tím že to vede ke slabým heslům.
On se krátkých hesel nezastával, viz:
Samozřejmě nehájím krátká hesla obecně, ale bez dekompilace původního nástroje to prostě nedáte.
To heslo na čtyři písmenka nabídl z toho důvodu, aby dokázal, že po vyřazení už hotových nástrojů, jste bez dekompilace naprosto ze hry. Skoro stejnou funkci by plnil i program, který by za každé heslo přidával telefonní číslo na Billa Gatese.
-
Pořád je to o tom, že nakonec tam to heslo zadá člověk, který ho musí mít v hlavě, pokud si ho tedy nezapsal na papír (což by neměl). Nebo snad považujete privátní klíč k bitcoinové peněžence uložený v dropboxu zašifrovaný heslem o délce osm znaků i přesto že používá čísla symboly za bezpečné uložení?
Proč by ho nemohl zapsat na papír? Pro peněženku s praktickou částkou použiju heslo, které si zapamatuju. Pro peněženku s milionem si můžu heslo zapsat na papír a ten si založit někam do knížky. Podobných cárů papíru mám doma hromady. To heslo můžu nějak rozumně transformovat a zapamatovat si tu transformaci. Dá se to rozdělit na víc cárů, dá se použít neviditelný inkoust, můžu to heslo vypálit na DVD s hromadou porna a schovat do peřiňáku ... Závisí na uživateli a na množství bitcoinů. Heslo pro takovou peněženku nebudu a ani bych neměl zadávat moc často. A vlastně by ani neměla běžně ležet na disku.
-
Rad bych se vratil k puvodnimu dotazu. Staci trochu pocitat a zjistime, ze nema smysl tim ztracet cas:
- Prodlouzeni desifrovaciho algoritmu je konstantni faktor. Dejme tomu, ze prodlouzime cas desifrovani 16x; o to zpomalime brute force utok.
- Volba hashovaciho algoritmu s delsim klicem je exponencialni faktor. To znamena, ze po pridani pouhych 4 bitu k vyslednemu hashi bude brute force utok trvat 16x dele take.
Jinak receno, zvolte delsi klic, bude to mnohem efektivnejsi, a hlavne (jak uz tu nekdo zminil) nezapomente na salt.
Stačí si zjistit úplné základy, a zjistíme, že šifrování a hashování jsou dvě zcela odlišné věci. Vzhledem k tomu, že původní dotaz se ptá na šifrování a dešifrování, jako hashovací algoritmus se klidně může zvolit CRC16, protože se nikde nepoužije.
To samé se týká soli, ta se používá proto, aby když dva uživatelé mají stejné heslo, nebyla stejná i zašifrované nebo zahashovaná podoba hesla (z čehož by uživatelé snadno poznali, že ten druhý má stejné heslo). Pokud by měli dva uživatelé stejný privátní klíč peněženky, nepotřebují privátní klíč toho druhého získávat louskáním nějakého hesla.
To heslo na čtyři písmenka nabídl z toho důvodu, aby dokázal, že po vyřazení už hotových nástrojů, jste bez dekompilace naprosto ze hry.
Za prvé, hotové nástroje nijak nevyřadil. Za druhé, dekompilace vůbec nemusí být potřeba. A za třetí, dekompilací se opravdu nikdo nebude zabývat kvůli 5 000 Kč. 3 BTC už by za to třeba stály.
Skoro stejnou funkci by plnil i program, který by za každé heslo přidával telefonní číslo na Billa Gatese.
Nebo program, který by z toho čtyřznakového hesla tři znaky zahodil a použil jen první.
-
Zkus být místo výmluv konstruktivní.
Tak mu podmínky nabídny ty, mělo by tam třeba být, že zašifrovaný bude ČESKY psaný text o délce půl strany A4 a také, že po skončení sázky zveřejní zdrojový kód svého výtvoru, aby si to mohl každý sestavit a ověřit si, jestli to bylo fair play.
-
HAHAHAHA!
A za třetí, dekompilací se opravdu nikdo nebude zabývat kvůli 5 000 Kč. 3 BTC už by za to třeba stály.
Tím vlastně říkáš, že Bla má pravdu.
Říkáš: Ano, bude to tak těžké, že se tím nemá cenu zabývat za méně než 30 tisíc. ;D
A to je přesně to, co Bla tvrdí ;D ;D ;D ;D ;D ;D ;D
-
Tak já to ještě na závěr shrnu:
Filip Jirsák nakonec uznal, že metoda, kterou bla použil, zvedla cenu prolomení nejméně o 3 BTC.
To v zásadě není špatné ;D
-
Tím vlastně říkáš, že Bla má pravdu.
Říkáš: Ano, bude to tak těžké, že se tím nemá cenu zabývat za méně než 30 tisíc. ;D
A to je přesně to, co Bla tvrdí ;D ;D ;D ;D ;D ;D ;D
Pro program, jehož bezpečnost stojí na tom, že nikomu nebude stát za to, se jím zabývat, je cokoliv složitějšího než
if(!strcmp(heslo, "heslo")) ...
naprostá ztráta času.
A nevím z čeho vyvozuješ to zvednutí ceny prolomení. Bez Blaova nástavce by ta cena mohla být +- podobná. Za pár šušňů prostě nikdo nebude lámat jakýkoliv program, pokud to nebude brát třeba jako výzvu.
-
Zkus být místo výmluv konstruktivní.
Už se stalo. Teď je na tahu Bla.
Ano, bude to tak těžké, že se tím nemá cenu zabývat za méně než 30 tisíc.
Tak těžké? Ne, je to tak nezajímavé, že aby se tomu někdo vůbec věnoval, musel by vidět šanci na aspoň minimální odměnu.
Co tím tedy tazatel chce šifrovat? Privátní klíče k peněženkám s celkovou sumou závratných 5 Kč?
Metoda, kterou použil Bla, nezvedla cenu prolomení ani o chlup. Cenu prolomení v tomto případě zvedá to, že Bla nepopsal žádný algoritmus ani podmínky, a že to chce popsat jedině v binárním programu. Tedy klasický případ security through obscurity. Vzhledem k tomu, že použití nějakého hotového ověřeného bezpečnostního mechanismu je jednodušší a cenu prolomení to zvedne řádově víc, není to pro Bla zas taková výhra.
-
A nevím z čeho vyvozuješ to zvednutí ceny prolomení. Bez Blaova nástavce by ta cena mohla být +- podobná. Za pár šušňů prostě nikdo nebude lámat jakýkoliv program, pokud to nebude brát třeba jako výzvu.
No áááááánnóóóóóó a to je PŘESNĚ to, co Bla tvrdí ;D
Svým MODem vyřadil už hotové nástroje a pokud tam není nic mega cennýho, tak se tím nikdo nebude zabývat, právě protože to nemá cenu. Nikomu to nebude stát za tu námahu.
-
Zkus být místo výmluv konstruktivní.
Tak mu podmínky nabídny ty, mělo by tam třeba být, že zašifrovaný bude ČESKY psaný text o délce půl strany A4 a také, že po skončení sázky zveřejní zdrojový kód svého výtvoru, aby si to mohl každý sestavit a ověřit si, jestli to bylo fair play.
FYI: JSH navrhol, ze to športovne skúsi (bez stávky = zadarmo, zároveň bez rizika). Ale nie je ochotný investovať čas do dohadovania sa o zmluve...
-
Zdá se mi, že už jen dokolečka a zbytečně opakujete to, co už tu Bla napsal.
Jinými slovy, jeho metoda opravdu jistým drobným způsobem zvyšuje bezpečnost standardní knihovny, protože rozlousknutí šifry vyžaduje i rozlousknutí šifrovacího programu PLUS velký výpočetní výkon, tedy oproti standardní knihovně je to o trošičku silnější, právě protože nelze použít už napsané brute-force nástroje.
-
No áááááánnóóóóóó a to je PŘESNĚ to, co Bla tvrdí ;D
Svým MODem vyřadil už hotové nástroje a pokud tam není nic mega cennýho, tak se tím nikdo nebude zabývat, právě protože to nemá cenu. Nikomu to nebude stát za tu námahu.
No ale hotové nástroje pravděpodobně vyřadí už tazatel tím, že ty šifrovací algoritmy použije ve svém vlastním programu. A tazatel řešil, jak to šifrování ještě posílit. To znamená, že se bojí nějakého útočníka, který se tím bude chtít zabývat. Pokud by platily předpoklady, za kterých by Blaovo řešení bylo rozumně bezpečné, tak není třeba snad ani šifrovat.
Zdá se mi, že už jen dokolečka a zbytečně opakujete to, co už tu Bla napsal.
Jinými slovy, jeho metoda opravdu jistým drobným způsobem zvyšuje bezpečnost standardní knihovny, protože rozlousknutí šifry vyžaduje i rozlousknutí šifrovacího programu PLUS velký výpočetní výkon, tedy oproti standardní knihovně je to o trošičku silnější, právě protože nelze použít už napsané brute-force nástroje.
Tak to ani náhodou. Blaova metoda nezvyšuje bezpečnost ani o trochu. Pokud na ten program zaútočí někdo jen trochu kompetentní, tak ty Blaovy blbiny obejde s prstem v nose. Pro někoho, kdo by s nimi měl problém, budou standardní věci naprosto neprůchodné a není třeba je nijak posilovat. Navíc je každá taková samodomo číčovina potenciální průser, který může oslabit to standardní zabezpečení. Pořád to zní jako opakování toho, co Bla napsal?
-
FYI: JSH navrhol, ze to športovne skúsi (bez stávky = zadarmo, zároveň bez rizika). Ale nie je ochotný investovať čas do dohadovania sa o zmluve...
Bla to má programovat zadáčo?
Proč by měl programovat zadarmo pro pár kecalů, kteří nejsou schopni své tvrzení opřít ani o usmolených pár tisíc?
Pravidlo chytrého programátora: Pro debila nikdy zadarmo nepracuj!
Myslím, že existují i zábavnější hry na komunismus ;D
A jestli do toho Bla zadarmo půjde, pak je u mě tydýt.
-
Svým MODem vyřadil už hotové nástroje
Jaké hotové nástroje? Byl by odkaz?
pokud tam není nic mega cennýho
3 BTC je mega cennost?
Jinými slovy, jeho metoda opravdu jistým drobným způsobem zvyšuje bezpečnost
To je zmatení pojmů. Blaova metoda nezvyšuje bezpečnost nijak. V tomto případě zvyšuje bezpečnost pouze metoda security through obscurity. Kdyby napsal, že to šifruje AESem, Blowfishem nebo Ideou, zvýšilo by to bezpečnost úplně stejně – protože útočník by nejprve musel zjistit, kterou z těch šifer tedy doopravdy používá. O „síle“ zabezpečení metodou security through obscurity panuje všeobecné shoda, tedy aspoň mezi lidmi, kteří o bezpečnosti aspoň něco zaslechli.
standardní knihovny
Opět, co je to ta standardní knihovna? Máte na ní odkaz?
-
Tak to ani náhodou. Blaova metoda nezvyšuje bezpečnost ani o trochu. Pokud na ten program zaútočí někdo jen trochu kompetentní, tak ty Blaovy blbiny obejde s prstem v nose. Pro někoho, kdo by s nimi měl problém, budou standardní věci naprosto neprůchodné a není třeba je nijak posilovat. Navíc je každá taková samodomo číčovina potenciální průser, který může oslabit to standardní zabezpečení. Pořád to zní jako opakování toho, co Bla napsal?
Vraž si prst do nosu a dokaž to ;D
Pro takového mága to nemůže být přece problém.
No tak, nekecejte jen a dejte se do toho!
Chci vidět velký souboj Bla vs JSH+Jirsák
-
Na takovouhle diskuzi se můžu vysrat...
Pro Bla : Výzva stále platí, mám chuť si něco zkusit lousknout.
Pro Mirage : Z trollení žlukne semeno.
-
Chci vidět velký souboj Bla vs JSH+Jirsák
Pokud má Bla zájem o souboj i za férových podmínek, určitě sem napíše. Nemusíte ho k tomu vyzývat desetkrát.
-
Jsem jediný komu přijde, že Bla zvolil podmínky sázky úmyslně tak, aby na ni žádný rozumný člověk nepřistoupil a mohl se tak tvářit, že jeho kritici jsou mluvky a/nebo srabové? Nepřijde mi jako kryptograf-amatér, ale jako čistokrevný trol.
-
Pánové, na souboj jste mne vyzvali vy, proto opravdu předpokládám, že si za svým slovem stojíte a že za férových podmínek pro vás nebude sázka o peníze problém. Dokud se mele hubou, je to jen diskusní trollení, přejděme tedy k činnům. Ostatně zadarmo opravdu nepracuji, jak tu bylo někde výše řečeno. Tedy, jestliže moje práce nebude stát za nic, jistě ten program rozlousknete snadno s prstem v nose.
Navrhuji:
Heslo bude psáno Evropskými znaky a číslicemi, čtyři znaky dlouhé, žádné 日本の ani ελληνικά tam nebude, píšu Evropské, tedy bavíme se o všech Evropských znacích vycházejících z latinky, příkladem je písmeno Č nebo š, prostě cokoliv, kde hlavní písmeno pochází z latinky a lze ho napsat pomocí kódů UTF, nebude se jednat o nějaké runové písmo, ale možná si zapnu Německou, Polskou, Španělskou nebo jinou EVROPSKOU klávesnici a nějaké takové znaky tam napíšu, protože takové znaky se v heslech objevují, ale pořád se bavíme o 4 znacích.
Text na vstupu bude pocházet z jedno článku z Rootu, délka bude nejméně 250 znaků.
Vstup do programu bude text, výstup bude zašifrovaný text.
K vylepšení tohoto čtyřpísmenkového hesla použiji všechny techniky, které jsem Vám již popsal a další, které zkusím vymyslet.
Po uplynutí uvedené lhůty Vám poskytnu zdrojové kódy, abyste mohli provést kontrolu, že jsem nepodváděl.
Zdrojové kódy mohu poskytnout rovnou i s binárkou, ale předtím je zašifruji pomocí truecryptu, heslo Vám sdělím spolu s číslem mého účtu pro provedení platby ;)
Lehce bych s Vámi mohl vyběhnout tak, že udělám webovou komponentu, která bude překládat heslo, to neudělám.
Tedy nepoužiji žádný špinavý trik a to ani v kódu, zmatení a obfuskace se za špinavé triky nepovažují, jsou to standardní metody ukrytí citlivého kódu před zraky nepovolaných, ani jiné podobné metody určené k Vašemu zmatení. Buďte si jistí, že omezím počet spuštění programu na jedno zakódování za řekněme XY vteřin, tj. další zakódování/odkódování budete moci provést právě za XY vteřin, ale program cracknout a použít ho k bruteforce útoku, pokud to dokážete.
Po nějaké vhodné a zároveň jednoduše použitelné knihovně se podívám, nejspíš použiji takovou, která bude nejjednodušeji implementovatelná, nechci si s tím hrát příliš dlouho, abyste náhodou na svojí sázku nezapoměli.
Jak říkám, nabízím čistou a poctivou hru, můj jak mě urážíte, prázdný mozek, vůči vašim profesionálním prstům v nose.
Za mých 5000,- Kč máte šanci udělat velkolepou oslavu Vašeho triumfu. Dobrá, za 5000,- Kč až tak velkolepá nebude, ale šetřit taky nebudete muset a ukážete mi, jaká že to jsem nula, že.
Smlouvu, myslím rozumnou a gentlemanskou smlouvu samozřejmě připravím.
-
Jsem jediný komu přijde, že Bla zvolil podmínky sázky úmyslně tak, aby na ni žádný rozumný člověk nepřistoupil a mohl se tak tvářit, že jeho kritici jsou mluvky a/nebo srabové? Nepřijde mi jako kryptograf-amatér, ale jako čistokrevný trol.
Podmínky jsou jasně dané a myslím příznivé, bohužel jsi napsal v době, kdy jsem to smolil.
Máš možnost dokázat, že jsi víc než jen malé písmenko představující roztažené nohy ležící ženy a připojit se k sázce ;)
-
Mé připomínky stále platí, to co jste napsal je nezměnilo, vaše podmínky nejsou podmínky na které by příčetný člověk přistoupil, leccos naznačuje i to, že se od minule výrazně změnily. Jste trol, nic víc a já vás krmím, proto se teď raději odmlčím a dokud neukážete kód, nebudu mít důvod na vás měnit názor.
-
Přijde mi to naopak dobré a v souladu s tím, co tu tvrdil.
Mimo to, tím že vyloučil tu webovou část, nad kódem naprosto ztratil kontrolu.
Ale chtělo by to vyloučit například i časové zámky, tedy že to půjde rozšifrovat pouze od nějakého data a veškerou komunikaci po síti.
Program musí být od svého prvního spuštění naprosto neovlivnitelný, žádné stahování aktualizací nebo tak.
Ale to už vyloučil, když napsal, že nepoužije žádné špinavé triky.
Přijde mi to jako férová sázka.
-
Tak ještě jednou: Nepoužiju žádné špinavé triky, žádný podvod ve smyslu podvodu, jen čtyři písmena na vstupu a veškerá možná kouzla šifrováním.
-
Cílem původního dotazu je ztížit off-line louskání hesla hrubou silou. Původní požadavek byl na dlouhou dobu dešifrování, vy tvrdíte, že to není potřeba, že to lze nahradit nástavcem na heslo. Jako příklad jste uváděl čtyřznakové heslo složené z velkých písmen. Bral bych v úvahu jen malá a velká písmena anglické abecedy, číslice a třeba pomlčku a podtržítko, dohromady tedy kulatých 64 znaků - ať se zbytečně nedohadujeme, co všechno do té sady znaků patří. I kdybyste k té sadě přidal sto dalších znaků, pořád to bude dávat slabší hesla, než když z těch 64 znaků uděláte 5místné heslo.
Když budete takovéhle heslo (4 znaky ze 64znakové sady) louskat tempem 10 hesel za sekundu, získáte heslo průměrně za 10 dní, nejdéle za dvacet dní. Určitě nechcete tvrdit, že váš nástavec na heslo to louskání urychlí, takže byste měl poskytnout minimálně stejný čas - nebo kratší heslo nebo menší sadu znaků.
Šifrování nikoho nezajímá, to si pak řešte s Ondřejem Novákem, že mu ten šifrovací program prodáte. Nebo ho přihlašte do příští soutěže NIST o nástupce AES. Nás zajímá dešifrování, takže byste měl poskytnout program, který bude mít jako vstup zašifrovaný soubor a heslo a na výstupu dá text odšifrovaný tím heslem. Např. zašifrovaná data bude číst ze souboru encrypt.bin, hesla bude přijímat na vstupu (vždy jedno heslo na jednom řádku), a na výstup bude posílat text rozšifrovaný tím heslem -- pro každé zadané heslo jeden řádek, text v kódování UTF-8. Průměrný čas dešifrování nepřekročí 1/10 sekundy.
Součástí zadání budou dva vstupní texty + jejich zašifrovaná varianta, abychom si mohli ověřit, že ten dešifrovací program umí vůbec něco rozšifrovat. A pak třetí soubor encrypt.bin, zašifrovaný jiným heslem - to bude těch minimálně 250 znaků textu z nějakého článku na Rootu.
Takhle nějak bych si představoval férovou výzvu. Se mnou se nevsadíte, protože se nevsázím z principu, ale klidně vám to předvedu i bez té sázky. Akorát bych navrhoval tu sadu znaků v hesle omezit na velká písmena anglické abecedy, ať nečekáme měsíc na výsledek. Je snad každému jasné, že kdyby měl útočník nějakou motivaci, klidně bude místo na jednom počítači louskat na dvaceti a místo dvaceti dnů čekat den (a spíš by těch počítač přidal víc), tady ta motivace jaksi chybí, takže je zbytečné kvůli tomu pálit uhlí.
Buďte si jistí, že omezím počet spuštění programu na jedno zakódování za řekněme XY vteřin, tj. další zakódování/odkódování budete moci provést právě za XY vteřin
Tak jenom kvůli tomuhle bych ten program chtěl vidět. Kdybych ho chtěl spustit na 10 počítačích v 10 městech, které nebudou nijak připojeny do sítě, tak spolu ty instance budou komunikovat ultrazvukem vytvářeným vibracemi procesoru, nebo jak, aby jste zajistil jedno spuštění za XY sekund napříč všemi instancemi? Přidat do programu sleep není problém, ale Ondřej Novák chtěl něco odolného i proti tomu, že útočník ten sleep dokáže odstranit. Ostatně, pokud váš nastavovací algoritmus opravdu dokáže heslo prodloužit, tak nepotřebujete podvádět snadno odstranitelnými zdržovačkami. A vy jste chtěl přece ukázat, že zdržování rozšifrování není potřeba, že je lepší heslo nastavit.
-
Tvrdím jen, přesně a POUZE toto:
Prakticky každá vlastní knihovna je "nenapadnutelná".
A dokonce i heslo dlouhé na 4 písmekna je NEZLOMITELNÉ!
(To vysvětlím dále.)
Co to znamená?
To znamená, že se nikdo nebude chtít drbat ani s jednoduše XORovaným textem, pokud to nebude dostatečně významné.
Příklad jednoduchého šifrování:
Komprese
Substituuješ písmenka za čísla, tj. nahradíš písmenka pozicí, víš že písmeno A je na pozici 1,20,40,80.
Substituuješ písmenka pomocí vložené tabulky klíčů
Substituuješ v hesle část řetězce
Provedeš XOR o daný počet bitů
Uživatel použil heslo: IVAN
Třeba podle třetího písmenka se rozhodneš že kroky provedeš v tomto pořadí:
Doplnění textu o náhodně vygenerované řetězce, tj. mezi písmena dáváš jiné znaky Ahoj -> Axhioaj
Substituce z tabulky klíčů a to včetně znaků hesla
Substituce písmenek za čísla
XOR
Doplnění hesla o slovo a číslo: Tedy z IVAN uděláš I2007VANTYDLYDUMVYMRDAMTIzadek
Vtip je v tom, abys z primitivního hesla pomocí šifrovací tabulky vždy dokázal udělat to stejné heslo.
Tím výsledným heslem: I2007VANTYDLYDUMVYMRDAMTIzadek tebou zamotaný text zašifruješ.
Při rozšifrování postupuješ stejně.
Uživatel zadá heslo IVAN, z toho ty vygeneruješ doplněk hesla, tedy celý ten hrozně dlouhý klíč, kterým to je zašifrované: I2007VANTYDLYDUMVYMRDAMTIzadek
Tím to rozšifruješ a provedeš inverzi tvých primitivních metod.
Výhoda?
TVŮJ SOFTWARE NIKOHO NEZAJÍMÁ!
Aby to někdo dokázal rozlousknout, tak mu žádný slovník nepomůže, musí přijít na to, jak generuješ doplněk toho hesla a i kdyby se mu nakrásně povedlo to nějak rozšifrovat (třeba závadou v knihovně), substituce dohromady s XORem jsou pro běžné ignoranty dostatečně bezpečná metoda, aby se na to vykašlali.
Navíc ty provádíš substituci podle nějakého náhodného klíče a XORuješ to podle náhodného klíče.
Velmi pochybuji o tom, že budeš mít data natolik zajímavá, aby na to nasadili vlastní tým analytiků CIA.
Pokud se vsadíme, tedy dle mého požadavku na odměnu, napíšu to a dokonce se můžeme domluvit pouze na té sadě 64 znaků.
Také ostatní podmínky mi připadají naprosto přijatelné.
Na čem se nemůžeme domluvit je to, že to budu dělat zadarmo.
-
Tak jenom kvůli tomuhle bych ten program chtěl vidět. Kdybych ho chtěl spustit na 10 počítačích v 10 městech, které nebudou nijak připojeny do sítě, tak spolu ty instance budou komunikovat ultrazvukem vytvářeným vibracemi procesoru, nebo jak, aby jste zajistil jedno spuštění za XY sekund napříč všemi instancemi? Přidat do programu sleep není problém, ale Ondřej Novák chtěl něco odolného i proti tomu, že útočník ten sleep dokáže odstranit. Ostatně, pokud váš nastavovací algoritmus opravdu dokáže heslo prodloužit, tak nepotřebujete podvádět snadno odstranitelnými zdržovačkami. A vy jste chtěl přece ukázat, že zdržování rozšifrování není potřeba, že je lepší heslo nastavit.
Já předpokládám, že útočníkovi se dostane do rukou binárka a zašifrované klíče a z mého pohledu (z uživatelského pohledu) téměř nekonečný výpočetní výkon (clustery grafáren v nějaké šílené farmě)
-
Na čem se nemůžeme domluvit je to, že to budu dělat zadarmo.
To si ale musíte najít nějakého hlupáka, který vám zaplatí za algoritmus snadno prolomitelný kryptoanalýzou, když může mít zadarmo slušnou šifru jako AES nebo Blowfish. A před chvílí jste to nechtěl dělat zadarmo, ale chtěl jste ještě 5000 Kč odevzdat.
Že je váš algoritmus snadno prolomitelný kryptoanalýzou a po té se lze k heslům dostat rychleji než hrubou silou, to pro změnu nebudu dokazovat já vám (a pochybuju, že někdo jiný ano), protože to nestojí za tu námahu.
-
Já předpokládám, že útočníkovi se dostane do rukou binárka a zašifrované klíče a z mého pohledu (z uživatelského pohledu) téměř nekonečný výpočetní výkon (clustery grafáren v nějaké šílené farmě)
To je rozumný předpoklad, pokud má jít o systém, ve kterém se budou pohybovat peníze. Akorát Bla to zřejmě nepředpokládal, protože sám navrhoval podmínky, aby takovéhoto útočníka vyloučil.
-
Uzavřeme to, mám pravdu, měl jsem pravdu a vždy jí mít budu.
Vaše váhání a neschopnost se postavit za svá slova, hledání výmluv a tak dále, jen dokreslují charakter Internetového kecala.
Já, na rozdíl od Vás, nabídl, že pokud je to tak špatné, nejen že budu pracovat zadarmo, ale ještě Vám zaplatím, vy dva jste se na nic nezmohli, jen na pár prázdný frází, hromadu plků a žvanění, jaký že to jsem velký hlupák.
No, oba se vraťte, až budete vědět, jak se má chovat chlap.
Já si totiž nic dokazovat nepotřebuju, bezpečně vím, že moje postupy, aplikované jak jsem napsal a proti útokům, které jsem popsal, velmi dobře fungují. Urážky z Vaší strany na mojí adresu budu od teď brát jako dětský křik, mumlání idiotů a závist neschopných outsiderů, tedy jako něco zcela bezcenného. Až budete ochotní se za svá slova postavit ne jen kecy, ale i něčím hmatatelným a nést následky včetně případné prohry, dám vám šanci.
Docela by mě zajímalo, jestli máte otce, jestli s Vámi žil v jedné domácnosti a jaký s nimi máte vztah, přijde mi, že jste otce viděli asi jen občas a buď to byl bábovka, podpantoflák a nebo o Vás neměl nejmenší zájem. Slovo chlapa by mělo něco platit, moje slovo něco platí, zatím se mi nezdá, že to vaše má cenu alespoň elektronů spotřebovaných pro jejich zobrazení. Ve skutečnosti mě to nezajímá, ať tak nebo tak, nejste typ lidí, které bych chtěl mít po svém boku, kdyby šlo do tuhého.
-
Už jste připravil tu smlouvu? Zajímalo by mne, jak tam chcete mít ošetřené, že se sázíte o něco, co zjevně musíte prohrát.
Při 4znakovém hesle ze 64 znaků a tempem louskání 10 hesel za sekundu to dává bez použití vašeho nástavce 64^4 kombinací nutných k vyzkoušení a projít všechny kombinace bude trvat 64^4/10 sekund, tedy skoro 20 dní. Při použití vašeho nástavce to je 64^4 kombinací k vyzkoušení a projít všechny kombinace bude trvat 64^4/10 sekund, tedy skoro 20 dní. Vidíte, že ta čísla jsou stejná?
Vaše slovo platí vždy jen do následujícího komentáře, pak to změníte. Já jsem jasně napsal, jak dlouho bude trvat louskání hesla bez vašeho nástavce i s ním, a je evidentní, že jsou to ty stejné hodnoty. To vy nemáte pro svá tvrzení žádné důkazy a jenom se vymlouváte, že kdyby tohleto a tamhleto, dokážete napsat program, pro který nebudou základní pravidla statistiky platit.
-
Uzavřeme to, mám pravdu, měl jsem pravdu a vždy jí mít budu.
To tezko. Nejsi maminka.
-
Omlouvám se, že se vám pletu do diskuse na kterou si stačíte jistě sami, ale tohle mě dostalo:
Evropské, tedy bavíme se o všech Evropských znacích vycházejících z latinky, příkladem je písmeno Č nebo š, prostě cokoliv, kde hlavní písmeno pochází z latinky a lze ho napsat pomocí kódů UTF
Skoro se mi to chce nechat bez dalšího komentáře a jen bych se zeptal, zda daný text může obsahovat také čísla?
K tomu zbytku. Vycházíte ze špatného předpokladu. Bezpečnost se nedělá tak, že útočník něco neví. Právě naopak, moderní kryptografie se dělá za předpokladu, že útočník ví úplně všechno (kromě soukromého / tajného klíče). Celkem dost algoritmů, které si autor / společnost někde sama pro sebe vymyslela, skončilo velmi neslavně. Proto i NIST dělá veřejné soutěže na nové standardy AES a SHA, do kterých se přihlásí spousta týmů (které už jsou sami o sobě na velmi vysoké úrovni), zveřejní vše, a celý svět se několik let pokouší o útoky. A i v těchto soutěžích spousta algoritmů neobstojí (a teď si představte, že si třeba takový tým najme soukromá firma pro své vnitrofiremní šifrování, bez soutěže je slušná pravděpodobnost, že ten alg je obecně vadný). Po mnoha letech se určí ten nejlepší.
Různé zesložiťování vstupního textu se dělalo před několika stoletími. S příchodem statistické kryptoanalýzy popadaly jako hrušky. Tyhle přístupy prostě nefungují. I mnohem modernější metody, založené nikoliv na práci s textem, ale čistě matematické postupy založené na grupách, také mají své slabiny. Proto se obecně také nedoporučuje skládání šifer (AES+Twofish), protože obecně nikdo neví co se stane. Jedna šifra může částečně dešifrovat druhou. To se stalo u DES. DES byl slabý, ale 2DES ještě slabší. 3DES je v pohodě použítelný dodnes (používá se 3x alg. DES s určitým způsobem upravenými klíči).
Připomínám, že šifra se má za prolomenou ve chvíli, kdy se prokáže její oslabení, tedy např. že místo síly 128b má například 90b; což je samo o sobě stále dost. Ale ta šifra už je nalomená a neměla by se používat -- a to i za stavu, že se nikomu reálně nepodařilo dostat k původním datům, 90b je stále moc. Proč? Protože už se našla cesta. Bylo to krásně vidět na případu md5, kdy se nalezla nějaká zranitelnost, která tu funkci lehce oslabila (celkem nic moc), ale za pár měsíců se na základě tohoto poznatku došlo do stavu, kdy to byla hračka i pro slabý NTB. Bohužel dodnes, po 10 letech, je md5 stále moc oblíbená u vývojárů.
Takže, bezpečnost svého algoritmu vůbec neprokážete tak, že se s někým vsadíte. Naopak tím (že to nikdo v této sázce nelouskne) pouze sám posílíte svůj falešný pocit bezpečí. A to není pro bezpečnost nikdy dobře.
-
4Tomáš Crhonek
To je sice pravda, ale v jeho návrhu šlo o odstavení zmíněných automatizovaných nástrojů, takže ani s nekonečným výpočetním výkonem by se do toho nikdo nedostal. Mě to přišlo dobré. Budu mít botnet 50 000 PC, vezmu si danou standardní knihovnu, připravím nástroj a louskám 5 000 000 hesel za vteřinu (spíš víc). No a co ? K čemu mi to je? Nevím, jak je to dál zašifrované! Nepoznám, jestli mám správné heslo nebo ne. Musím ten jeho kód rozluštit. Krásně odstranil možnost bruteforce útoku pomocí silného botnetu.
Je to krásný příklad kombinace http://cs.wikipedia.org/wiki/Security_through_obscurity a http://cs.wikipedia.org/wiki/Secure_by_design (Secure by design je šifrovací knihovna).
Taky není pravda, že na to potřebuješ pouze o řád schopnějšího programátora-matematika, pochopit přeložený kód je o dost náročnější než se hrabat ve zdrojácích. Zmínil jsi i překonané zesložiťování textu, ano, ale to už vyžaduje odborníka na šifry.
Ať tak, nebo tak, nemohu to posoudit, ale jednoznačně mi je líto, že ten zdroják už asi neuvidíme.
Nojo, taky bych zadarmo neprogramoval, tak to chápu.
Možná zkusím ten jeho postup implementovat a pak Vám pošlu ukázku.
-
Při 4znakovém hesle ze 64 znaků a tempem louskání 10 hesel za sekundu to dává bez použití vašeho nástavce 64^4 kombinací nutných k vyzkoušení a projít všechny kombinace bude trvat 64^4/10 sekund, tedy skoro 20 dní. Při použití vašeho nástavce to je 64^4 kombinací k vyzkoušení a projít všechny kombinace bude trvat 64^4/10 sekund, tedy skoro 20 dní. Vidíte, že ta čísla jsou stejná?
On si myslí, že to ten jeho nástavec nezvládne nikdo reversnout nebo odstranit kontroly jestli už uplynulo x sekund od poslední generace klíče z hesla... Z toho co jsem pochopil, na tom celá ta jeho „bezpečnost“ stojí. :)
-
Co mi brání s nekonečným výpočetním výkonem (tedy libovolně silný problém lousknu okamžitě), vyzkoušet i celou plejádu možných šifer? Ať si ten problém definuji jakkoliv, s nekonečným výkonem to bude hotové za nekonečně malou dobu. ;-)
Jinak, napadl mě další důvod, proč to nefunguje. Je to problém dvojích hesel. Spousta lidí věří, že si ssh zabezpečí tak, že zabrání přístupu rovnou na roota. Nejdřív je heslo na uživatele, potom na roota. Pokud bychom měli heslo (obě z nich) složité 64b, tak jaká bude výsledná síla? Člověk neznalý problematiky odpoví 128b. Ne. Bude pouze 65b. Dvěma hesly jsme problém ztížily pouze 2x. Přitom k heslu stačí přidat jedno písmenko z množiny 64 znaků, a složitost se zvýší 64x, tj na 70b. Přidáním jednoho znaku hesla jsme pro bezpečnost udělali více, než zakázáním přístupu na roota. Pochopitelně, když se vypne přístup hesly a používají se výhradně klíče, jsme opět úplně někde jinde.
Nevím, zda se zrovna tento problém týká zrovna zde navrženého postupu a zkoumat to nehodlám, ale takových podobných pastí je kryptografie plná.
-
4Tomáš Crhonek
Co mi brání s nekonečným výpočetním výkonem (tedy libovolně silný problém lousknu okamžitě), vyzkoušet i celou plejádu možných šifer? Ať si ten problém definuji jakkoliv, s nekonečným výkonem to bude hotové za nekonečně malou dobu. ;-)
S nekonečným výkonem získáš tak leda odpověď "42" ;-)
Odpověď na základní otázku Života, Vesmíru a vůbec - odpověď je 42.
4dan542
On si myslí, že to ten jeho nástavec nezvládne nikdo reversnout nebo odstranit kontroly jestli už uplynulo x sekund od poslední generace klíče z hesla... Z toho co jsem pochopil, na tom celá ta jeho „bezpečnost“ stojí. :)
Vážně by sis měl přečíst ten článek na Wiki.
Máš zloděje, ten zloděj vidí dva baráky nabušený drahejma krámama po střechu, do jednoho se probourá jen bagrem a až poté, co postřílí ostrahu se psi, do druhého vleze nepozorovaně okénkem, který z těch domů si vybere? Třeba ten těžší barák, ale většině zlodějů to nebude stát za to, to je jeden z principů Security through obscurity.
-
Muze admin fora potrvdit, zda Mirage, Bla a Ibrahim maji stejnou zdrojovou IP adresu?
Netreba ji samozrejme zverejnovat, jen pro zajimavost :)
-
Dobrá, jsem Ibrahim. Bla mi ovšem nepřišijete ;D
-
5000 je malo, chalani vravia ze to rozlusknu za 100 000
-
Tak to je super ne?
Kdyby to bylo šifrované nečím, na co jde udělat útok hrubou silou, tak bych to zkusil taky i zadarmo.
Taková drobná úprava a nikomu se do toho nechce.
-
To je sice pravda, ale v jeho návrhu šlo o odstavení zmíněných automatizovaných nástrojů, takže ani s nekonečným výpočetním výkonem by se do toho nikdo nedostal. Mě to přišlo dobré. Budu mít botnet 50 000 PC, vezmu si danou standardní knihovnu, připravím nástroj a louskám 5 000 000 hesel za vteřinu (spíš víc). No a co ? K čemu mi to je? Nevím, jak je to dál zašifrované! Nepoznám, jestli mám správné heslo nebo ne. Musím ten jeho kód rozluštit. Krásně odstranil možnost bruteforce útoku pomocí silného botnetu.
Taky není pravda, že na to potřebuješ pouze o řád schopnějšího programátora-matematika, pochopit přeložený kód je o dost náročnější než se hrabat ve zdrojácích. Zmínil jsi i překonané zesložiťování textu, ano, ale to už vyžaduje odborníka na šifry.
Kdyby to bylo šifrované nečím, na co jde udělat útok hrubou silou, tak bych to zkusil taky i zadarmo.
Vy jste pořád nepochopil princip útoku hrubou silou. Útok hrubou silou jde udělat na cokoli. Útok hrubou silou funguje tak, že vůbec nezkoumám, jak je něco zašifrováno. Prostě vezmu ten zašifrovaný text, vezmu originální program k jeho rozšifrování (třeba ten Blaův nastavovací zázrak), a tomu postupně předhazuju jedno heslo za druhým. Takhle vyzkouším potenciálně všechna hesla ze zvolené množiny. Pokud to chci vylepšit, začnu těmi, která považuju za pravděpodobnější - tedy hesla z nějakého slovníku. Na některých heslech se ten program zhroutí, protože autor nepočítal, že tam někdo zadá špatné heslo a dostane náhodný výstup (v případě dobré šifry). To nejsou ta správná hesla. Z dalších hesel vyleze nějaká změť paznaků, která ani vzdáleně nepřipomíná český text (pokud má být zašifrován článek) nebo privátní klíč bitcoinové peněženky (podle původního zadání). To také nejsou ta správná hesla. No a pak tam zbyde několik hesel v výstupem v podobě českého textu nebo privátního klíče bitcoinové peněženky. Podívám se, kolik jich je, zjistím, že jedno, a to je to hledané šifrovací heslo.
Obrana proti tomu je jediná - počet možných kombinací hesel krát čas potřebný k odšifrování a ověření výstupu musí být nad možnosti útočníka, resp. nad limitem, za kterým se nevyplatí heslo louskat hrubou silou. Počet možných kombinací hesel závisí na tom, jak silné heslo zvolí uživatel. Proto chtěl Ondřej natáhnout ten čas potřebný k dešifrování.
Jedna možnost je samozřejmě přidat do toho oficiálního dešifrovacího nástroje nějaké zdržovačky -- čekání, prázdné smyčky, nesmyslné výpočty. Jenže dostatečně motivovaný útočník by tohle uměl odstranit, proto Ondřej hledal nějaký algoritmus, který by byl pomalý z principu a útočník by tu pomalost nemohl použitelnými prostředky obejít (kvantový počítač zatím nepovažujeme za použitelný prostředek). Zabudování zdržovaček do Blaova programu by tedy byl v rámci tohoto tématu podvod.
Skutečné možnosti, jak Ondřejův problém vyřešit, jsou podle mne čtyři.
Buď použít algoritmus, který by byl záměrně navržen tak, aby dešifrování bylo pomalé. Mám pocit, že nějaké pokusy o vytvoření takových algoritmů existují, ale zatím to rozhodně není nic důvěryhodého a ověřeného. To by bylo ideální řešení.
Na druhé straně je nejčastěji používané řešení - vzít stávající rychlý algoritmus, a ten aplikovat opakovaně, třeba tisíckrát. Nebo několik algoritmů prostřídat. Já v tom vidím ten problém, že žádný z používaných algoritmů nebyl k takovému použití navržen, tudíž není jasné, zda se takhle nevytváří nějaký postranní kanál oslabující šifru.
Další možnost je použít asymetrickou kryptografii, jejíž současné algoritmy jsou pomalejší.
Poslední možnost je využít toho, co zpomaluje algoritmy asymetrické kryptografie, a vrátit se zpět k útoku hrubou silou. Vstupní text zašifrovat náhodným klíčem, tenhle klíč zašifrovat uživatelovým heslem a to celé zašifrovat náhodně zvoleným krátkým klíčem a ten zahodit. Dešifrování by pak probíhalo tak, že by se postupně vyzkoušely všechny přípustné krátké klíče (hledal by se ten, který se po zašifrování zahodil). Délkou toho zahazovaného hesla se nastavuje průměrná doba potřebná pro rozšifrování souboru se známým heslem.
Nevýhodou všech těch zdržovacích metod je, že se dají snadno obejít paralelizací. Oprávněný uživatel bude dešifrovat zpravidla na jednom počítači, motivovaný útočník jich může použít tisíce i víc. Proti tomu je jediná možná obrana - silné heslo uživatele. Protože znalost proti neznalosti hesla je to jediná výhoda, kterou má oprávněný uživatel proti útočníkovi. Ve všem ostatním má navrch útočník.