Heslo na kľúč   zodpovězená otázka

VB.NET, Bezpečnost

Dobrý deň,

Robím si šifrovač dát.Chcel by som ale, aby šifrovalo pomocou hesla a nie kombinácie kľúča a IV.Treba teda z hesla tieto dve hodnoty odvodiť.Najprv som rozmýšľal, že heslo zahashujem, ale hash je na to príliš krátky.

Akým spôsobom sa bežne prevádza heslo na AES kľúč a IV?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nejsem expert přes kryptografii, takže asi neodpovím přesně.

Každopádně z hesla stačí odvodit klíč. Iniciační vektor klidně uložte se zašifrovanými daty, ten tajný není.

Vygenerování klíče z hesla není úplně triviální otázka, jediné, co mě napadá, je použít nějakou delší sůl (pevný náhodný řetězec), kterou připojit před nebo za heslo a udělat z toho hash. Hashovací funkce (MD5 nebo SHA*) by se měly chovat rozumně a jejich výsledky by měly být dostatečně "náhodné". Z tohoto hashe pak udělejte klíč např. vybráním jistých bitů nebo nějak sofistikovaněji.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Predtým som písal že to s tým hashom som skúšal, ale napr. SHA512 hash má 64 bajtov a AES kľúč 256 bajtov.

Myslím, že som niekde videl niečo podobné a heslo to robilo cez nejakú inú triedu, ale je to už dávnejšie, takže absolútne neviem čo to bolo za triedu.

Napadlo ma, že k heslu pripojím štyri rôzne soli, všetko zvlášť zahashujem a dám do jedného poľa, ale nebude to bezpečnostné riziko? A keď dám IV pred zašifrované dáta, určite to nie je rizikové?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

AES nemá délku klíče 256 bajtů, ale 256 bitů.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Presne, už som si aj všimol, že som to s tými bitmi a bajtmi úplne poplietol. Tú časť už mám tak, ako som zamýšľal, ale teraz ako z CryptoStreamu (mód read) získať dáta ? Keby mi vyhovovali dáta ako String tak by som mohol použiť StreamReader.ReadToEnd(), lenže zašifrované dáta nemusia byť pekný reťazec, a napríklad by to mohlo urobiť blbosti s hodnotami, ktoré zodpovedajú znakom CR, resp. LF .

Preto by som ocenil tie dáta vo forme poľa bajtov.Skúsil som toto:

Friend Function Encrypt(ByVal data As Byte(), ByVal pass As String) As Byte()
        Dim aes As New AesManaged
        SetPassword(pass, aes)
        Dim src As New MemoryStream(data)
        Dim sec As New CryptoStream(src, aes.CreateEncryptor, CryptoStreamMode.Read)
        Dim b(sec.Length - 1) As Byte
        sec.Read(b, 0, sec.Length)
        sec.Dispose()
        src.Dispose()
        aes.Clear()
        Return b
    End Function

Ale padá to, lebo CryptoStream(podľa znenia výnimky) nepodporuje seeking.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Už som to aj našiel na googli.Treba spraviť MemoryStream a namiesto cieľového poľa buffer.Potom dám prečítať toľko, aká je veľkosť bufferu.(sec.Read(Byte(),Integer,Integer))Vráti mi to, koľko prečítalo, toľko toho zapíšem do MemoryStreamu a ak nezapísalo nič tak vrátim MemoryStream.ToArray() a všetko uvoľním z pamäte pomocou Dispose(), resp. kód uzavriem do Using..End using .

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Symetrické šifrování je vždy rizikové. Pokud chcete dosáhnout vysokého zabezpečení, použijte asymetrickou šifru RSA.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Rizikové ? Možno. Ale asymetrické tiež nie je nepriestrelné.

Koľko % ľudí vie dešifrovať AES bez znalosti kľúča a IV ?

A okrem toho, nechystám sa to použiť pre šifrovanie databázy banky ani ničoho na spôsob Paypal . Myslíte si, že chatovacie aplikácie ako Skype používajú asymetrickú šifru na prenos dát ? To si mám zakúpiť licenciu pre PGP lebo AES je napadnuteľné ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No počkat počkat, to záleží na tom, co potřebujete. Symetrická šifra může být daleko bezpečnější než asymetrická, protože generování klíčů pro asym. šifru je časově dost náročné. Na stejném železe jste schopen udělat daleko bezpečnější symetrickou šifru než asymetrickou.

Navíc asymetrický pár klíčů nevygenerujete z hesla, zatímco symetrický klíč ano.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tady jde o princip. U RSA lze rozšifrovat data pouze pomocí kombinace veřejný+soukromý klíč a soukromý klíč se samozřejmě drží na bezpečném místě. Kdežto u asymetrického šifrování může kdokoliv cokoliv zašifrovat nebo rozšifrovat pomocí jediné hodnoty.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Kľúč a IV sú časti SHA512 hashu hesla. SHA512 hash má 512 bitov, t.j. 2 ^ 512 možností. Kľúč má 256 bitov, IV 128 bitov. 2 ^ (256 + 128) možností. Myslíte si, že je to natoľko nebezpečný postup, že nie je použiteľný na šifrovanie bežného rozhovoru ? U asymetrických algoritmoch je nutné si pamätať dve kľúče, teda niekoľko nič nevraviacich čísel - riziko zabudnutia. Vedel by ste si zapamätať napríklad GUID nejakého objektu alebo COM knižnice ? A keby som potreboval spravovať super tajné informácie ako napr. NASA, americký pentagon a pod. tak nerozmýšľam a kupujem PGP licenciu, ale ako som povedal, toto je iný prípad, kde stačí niečo bežné ako napr. AES.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Záleží na konkrétním použití kde má být šifrování nasazeno. U asymetrických algoritmů není potřeba si pamatovat nic, protože klíče se obykle instalují do windowsovského úložiště.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

1.Je možné prihlasovanie asymetrickou šifrou, t.j. podľa úspešnosti dešifrovania?

2.K tomu úložišťu má predsa prístup každý program, bude pár kľúčov chránený pred prístupom inými programami?

3.Keď preinštalujem windows ?To úložište to prežije ?Pochybujem, a tým sa dá vyvrátiť Vaše tvrdenie, že nie je si nutné nič pamätať.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

1. Ano

2. To se řeší oprávněním NTFS.

3. Ano přežije.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Tak to by ma potom zaujímalo akým spôsobom je to uložené, keď to má prežiť naformátovanie systémovej partície.Vy keď preinštalujete windows, tak len tak inštalujete nový cez už existujúci?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Psal jste přeinstalování systému, čímž se běžně myslí přeinstalování bez formátování. Formátování to samozřejmě neustojí, kontejnery jsou normální soubory v určité složce.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

čímž se běžně myslí přeinstalování bez formátování

No ja som ešte nikdy nepreinštaloval počítač tak, že som nechal starý OS na inej partíci.Potom by som akurát bol ukrátený o miesto a ešte by som pri každom zapínaní musel rozmýšlať ktorý "Windows 7" to používam a ktorý je starý.A vybrať ten nový v boot manageri.

A keď to neprežije, to si mám v hlave pamätať svoj súkromný kľúč, alebo ho mám nosiť so sebou na usb kľúči. V prvom prípade by som to zabudol a v druhom by to bolo bezpečnostné riziko.Tak ako sa to potom dá použiť na prihlasovanie ? U symetrických algoritmoch je to jednoduché.Zapamätám si jedno heslo a určite mi uznáte, že je ľahšie si zapamätať 7 až 20 znakov dlhý alfanumerický reťazec ako nejaký sled číslic(kľúč) . A keď ide o bezpečnosť, tak mi povedzte, aká je šanca, že by niekto z komunikácie odhalil AES kľúč a IV ? A aj keď bude niekto hlúpy resp. nepozorný a pustí do svojho počítača keyloggera, ohrozí len jedného, pretože iný užívateľ - iný kľúč.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud vám jde o realizaci původního zadání, tak je použití asymetrické kryptografie naprostá pitomost. Z hesla asymetrické klíče nevygenerujete, zašifrovaná data nedešifrujete na jiném počítači, pokud klíč nevyexportujete, což je zase z uživatelského hlediska komplikace.

Pan Linhart sice tvrdí, že asymetrické šifrování je "bezpečnější" než symetrické, ale to platí jen někdy a zásadně pouze v případě, kdy nejste schopen čifrovací klíč přenést nějakým bezpečným způsobem na druhou stranu. Pokud tomu tak je, je symetrická šifra naprosto v pořádku a s bezpečností nemá problém.

Z hesla vygenerujte klíč pro AES, jak na to, je v této diskusi již vymyšleno, máte tím zaručeno, že ze stejného hesla budete mít vždy stejný klíč na libovolném počítači, takže pokud nezapomenete heslo, data rozšifrujete na jiném počítači, i na stejném po přeinstalaci klidně i s formátováním.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Presne tak. Asymetrické šifrovanie nie je oveľa bezpečnejšie, keď bude niekto chcieť sa do toho nabúrať, tak sa do toho nabúra, aj keď je jeden kľúč na šifrovanie a iný na dešifrovanie. A keď k tomu pridám tie problémy s generáciou vždy rovnakého páru kľúčov z hesla, tak mi je hneď jasné, že stačí symetrické šifrovanie.A keby už trebalo niečo naozaj bezpečné, tak použijem PGP a nie RSA.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A s tým prihlasovaním.Myslíte si, že na webhostingoch typu aspone.cz má užívateľ prístup k tomu úložišťu kľúčov ? A že si môže len tak vyhradiť nejakú časť toho úložišťa pre seba ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback