Diskuze: Šifrovanie

Tvůrce

Zobrazeno 20 zpráv z 20.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
K čemu case? Můžeš posouvat znaky v asii tabulce, to je jako šifra dostačující, když máš dlouhé heslo - http://www.itnetwork.cz/…namovi-sifry
Když si tvůj program dekompiluju, tak poznám jak to posouvá, takže nic moc. Když budeš sám něco vymýšlet, skončí to nekvalitní šifrou, spíše si najdi něco hotového, algoritmů je plno a i těch, co uspokojí tvé nároky.
Vlastní šifrování je dobré jen jako programátorské cvičení, ale pro reálné použití je vhodnější sáhnout po nějakém hotovém programu.
no len mne islo hlavne o nieco vlastne, nerobim to zase pre adobe zeby som sa bal kadeakej dekompilacie ... prave ma napadlo ze by som kazdy znak teda napr cislo 0 = #48 previedol do binarnej sustavy teda 110000 a otocil ju bud komplet alebo len vymenil prve tri cisla za druhe tri ... je to blbost ?
Opravdu nemá smysl nic vymýšlet, existují hotové a česky popsané
algoritmy, na kterých se vyblbneš víc než dost Sám se v tom vůbec nevyznám, ale
vím, že do toho trochu dělá Martin Dráb.
Zkus invertovat třeba druhý nejméně významný bit a dosáhneš podobného výsledku. Bude to sice připomínat šifru, ale dešifrování bude stejně lehké/obtížné jako u tvého algoritmu.
este raz, ako pisal Kit, to sifrovanie mi treba do mojho smiesneho programu v ktorom mi ide hlavne o precvicovanie programovania a asi to nebude precvicovanie ked okopirujem niekoho algoritmus
Ono implementovat vymyšlený algoritmus není tak lehké jak si myslíš
no toho som si vedomy a prave o to mi ide, pohrat sa s tym
Vlastní šifra má tu výhodu, že jí nikdo nezná, takže má menší
šanci, že ji rozluští, pokud vidí jen zašifrovaná data (pokud je dobře
napsaná ).
Nejlepší je pár šifer zkombinovat - třeba prohazovat pořadí znaků, XORovat celý text s nějakým (třeba i pevně daným klíčem), binární hrátky z bity atd. a nikdo nemá šanci data rozluštit, pokud nemá přístup přímo k algoritmu.
Kvalitní šifry používají veřejné algoritmy. Bezpečnost je tak soustředěna v klíči. Utajovat algoritmy nemá smysl.
Přesně tak, lepší je naučit se kvalitní šifru a pochopit problematiku než patlat něco, co má úroveň spíše táborové hry.
Co se týče tvoření nových šifer, souhlasím s sdracem, popř. s Kitem. Sice se šifrováním nezabývám zas tak aktivně, ale pár semestrů ve škole a jeden online kurz (snad je to tento https://www.coursera.org/course/crypto) za sebou mám. Tudíž se odvážím dát sem svůj názor a svoje pozorování.
Spíš než vymýšlet nové šifry takhle "z fleku" bych doporučoval si udělat třeba ten online kurz (zvláště ty programovací úkoly). Člověk pak zjistí, že vymýšlení nových šifer (a obecně kryptografických primitiv) není vůbec žádná legrace a že to rozhodně dělat nechce. Existuje spousta druhů útoků a navrhnout šifru tak, aby proti nim byla imunní, je hodně těžké.
V základu je třeba nezapomínat na to, že šifrováním musí zmizet pokud možno všechny vlastnosti plantextu (například frekvence výskytu jednotlivých znaků). To znamená, že pokud se rozhodneš šifrovat tak, že budeš třeba plaintext XORovat čtyřbajtovou pevnou hodnotou, tak máš v podstatě ekvivalent Vigenerovy šifry, takže pokud bude nepřítel vědět něco o zašifrovaném plaintextu, může získat klíč celkem snadno. A dobrá šifra by měla zvládat i situace, kdy má útočník k dispozici k některým ciphertextům i plaintexty. Tato znalost mu nesmí umožnit odvodit použitý klíč.
Existují jakési "best-practices", jak nové šifry (a jiná primitiva) navrhovat. Příkladem je třeba Feistalova síť. O takových konceptech jsou dokázána i určitá teoretická tvrzení, která říkají, kdy je šifra na nich založená bezpečná. Ale ne že by to bylo nějak růžové. Obvykle ta tvrzení vypadají třeba takto: pokud je F funkce jistých vlastností, Feistalova síť o třech iteracích postavená na F dává takto bezpečnou šifru. Problém je ověřit, že funkce F má požadované vlastnosti.
Ono totiž vytvořit nějakou totálně zašmodrchanou funkci a prohlásit, že je to bezpečná šifra, není dobré, protože pokud je funkce hodně zašmodrchaná, nelze o ní příliš mnoho říci (nelze ji rozumně analyzovat). Tudíž šifra musí být takovou pseudonáhodnou permutací, jejíž předpis je dost složitý na to, aby se z dvojic (plaintext;ciphertext) nedal vytáhnout klíč, ale dostatečně jednoduchý, aby se o té permutaci dalo alespoň něco říci. Hezkým příkladem na toto je podle mě Rijndael (AES); když se rozebere do detailů, tak to vypadá skoro na samé lineární transformace (které nejsou bezpečné), ale překvapivě stále odolává kryptoanalýze.
A i když používáš nějakou šifru (třeba AES), tak jej musíš používat správně, jinak může dojít k průšvihu, viz například Padding Oracle Attack či "relativně" nedávné problémy s šifrováním v XML. Než hned vymýšlet vlatní šifru, tak mi přijde lepší se naučit nějaké postupy používání šifer, které jsou považovány dnes za bezpečné.
Tajný algoritmus má právě tu nevýhodu, že musíš tajit nejen klíč, ale i tento algoritmus (který navíc může mít chybu) dá více práce. Krom toho pokud se rozhodneš takový algoritmus nějak distribuovat (bez zdrojových kódů), tak přesátá být tajný, protože reverzní inženýři ho zrekonstruují.
Samozřejmě můžeš argumentovat tím, že AES a další kryptografická primitiva jsou již dávno prolomena a muži a ženy z NSA si po večerech čtou tvoje šifrované emaily. Pořád mi ale přijde lepší, když tohle dělají jen v NSA, než aby to dělal "skoro" každý, protože jsem se zrovna špatně vyspal a můj supertajný a bezpečný algoritmus má sílu "šifry" ROT13. Krom toho existují i jiné způsoby, jak získat něčí tajemství. Nežijeme Matrixu, nejsme k počítačům přidrátováni, můžeme se po světě normálně pohybovat a násilnou či nenásilnou formou komunikovat s ostatními.
A víc mě teď nenapadá, co k tomu říci .
Já jsem zkoušel vytvořit vlastní šifru a narazil jsem přesně na ty
problémy, které tu byly zmíněny. Na první pohled všechno v pohodě,
ale když útočník bude mít možnost algoritmus zkoušet a naplní ho
specifickým textem ( samé mezery, jeden znak, heslo stejné jako text.. )
vylezou některé nepříjemné vlastnosti jako houby po dešti.
Díky za skvělou reakci a podklady, myslím, že expoox má nad
čím přemýšlet AES vypadá
určitě zajímavě, mohl bys ještě doporučit něco z těch jednodušších,
co by mělo smysl použít?
Na implementaci mi přišla nejjednodušší RC4, ale to je už taková trochu nebezpečná šifra. Zatím nevím o tom, zda byla úplně prolomena (ale moje nevědění nic neznamená), ale rozhodně k tomu byly udělány velké kroky. Dost je toho na Wikipedii.
Nedávno jsem potřeboval šifrovat a řešil jsem to tím, že jsem si našel Cčkovou implementaci AESu, která se zdá býti blízká referenční implementace (tzn. měla by být dobře). A to prostě používám jako black box. I tak je s tím dost práce; pokud chceš šifrovat symetrickou šifrou plaintexty delší než velikost bloku (128 bitů u AESu), tak se za tímto účelem musí provádět speciální magie s názvem "Mód blokové šifry", což je způsob, jak zajistit, aby použití dané šifry bylo bezpečné i u zpráv delších než jeden blok. Implementace těchto módů je relativně jednoduchá (ale i tak bych doporučil se naučit spíš s nějakou knihovnou, kde už hotové jsou), takže se dá případně zvládnout. Příklady módů: CBC, CFB, OFB, CTR (můj nejoblíbenější). Všechny by měly být rozumně popsané na Wikipedii včetně jejich výhod a nevýhod.
Zobrazeno 20 zpráv z 20.