Fórum Root.cz
Hlavní témata => Software => Téma založeno: duck.typing 16. 05. 2020, 21:46:57
-
Potřeboval bych zašifrovat pár textových souborů (ideálně UTF-8), aby byl výstupem opět text. Zašifrovaný soubor musí jít zpětně dešifrovat. A pokud možno, aby šlo vše provést z příkazové řádky v Linuxu a bylo proveditelné pomocí věcí, které jsou standardní součástí repozitářů. A (pokud možno) aby se šifrovalo pouze heslem (které si můžu zapamatovat nebo napsat na papírek nebo do mobilu a mít ho všude s sebou) a nemusel jsem řešit přenos klíčů. Na sílu šifrování není zvláštní požadavek, půjde o konfigurační soubory a jednoduché skripty pro automatizaci rutinních úloh, které nebudou obsahovat žádná hesla nebo citlivé údaje. Na druhou stranu aby to nešlo zlomit brute-force za půl minuty ;-)... půl hodiny už je OK. Nasměrujte mě prosím.
-
Tohle by mohlo splnit tve pozadavky na sifrovani:
https://www.root.cz/clanky/encfs-sifrovani-souboru-jinak-a-bez-problemu/
-
Nejjednodušší asi bude použít gpg -c. Binární soubor můžete na text převést pomocí base64.
-
Ano, gpg -c je přesně ono. Přidání -a mi zajistí ASCII výstup. Děkuji.
Ještě mě zarazilo, že při dešifrování zašifrovaných souborů jsem nebyl dotázán na heslo, šlo o různá hesla pro různé soubory. To je však zřejmě z důvodu kešování. Pro účely rychlého otestování jsem použil parametr --no-symkey-cache a vše se poté chovalo podle očekávání. Ještě si pozorování ověřím chování ve výchozím nastavení systému, než to začnu používat naostro.
-
vhodnější může být použít openssl, což je součást snad každého linuxu a nemusíš instalovat gpg.
openssl aes-256-cbc -salt -pbkdf2 -md sha256 -in tajnysoubor.txt -out tajnysoubor.txt.aes
openssl aes-256-cbc -d -salt -pbkdf2 -md sha256 -in tajnysoubor.txt.aes -out stejnytajnysoubor.txt
Na heslo se ptá při šifrování i dešifrování.
-
Tohle by mohlo splnit tve pozadavky na sifrovani:
https://www.root.cz/clanky/encfs-sifrovani-souboru-jinak-a-bez-problemu/
tohle NE, je to 7let stare info z doby kdy se nevedelo ze to neni bezpecne... uz nejakou doby ale primo autori EncFS pred jeho pouzitim varuji (i pri instalaci daneho balicku (https://i.stack.imgur.com/87Kr6.png)), z distribuci bylo EncFS pro sifrovani domaciho adresare odstraneno a nahrazeno LUKS, atd, atd...
-
souhlasim s tim openssl, nasledne pak s gpg.
jeste lepsi je naucit se mluvit/psat nejakym jazykem, ktery uz nikdo neumi, pripadne nejakym mrtvym jazykem.
text muze zustat otevreny a stejne tomu nikdo neporozumi.
viz. navajo, tajny jazyk bene geseritu, tajny jazyk rodiny.
ja jsem zastance vicenasobneho sifrovani.
-
vhodnější může být použít openssl, což je součást snad každého linuxu a nemusíš instalovat gpg.
openssl aes-256-cbc -salt -pbkdf2 -md sha256 -in tajnysoubor.txt -out tajnysoubor.txt.aes
openssl aes-256-cbc -d -salt -pbkdf2 -md sha256 -in tajnysoubor.txt.aes -out stejnytajnysoubor.txt
Na heslo se ptá při šifrování i dešifrování.
To vypadá taky slibně. Hodně parametrů je samovysvětlujících, zeptal bych se jen na -md, tím se specifikuje typ algoritmu pro digest? K čemu se tam ten digest používá? A pak ještě -salt, ten by (pokud to správně chápu) měl zajistit použití náhodně vygenerované soli, půjde mi to potom rozšifrovat na různých strojích/linuxech/účtech? A děkuji za dobrý tip.
-
salt se nekam ulozi ne?
-
...
jeste lepsi je naucit se mluvit/psat nejakym jazykem, ktery uz nikdo neumi, pripadne nejakym mrtvym jazykem.
...
Na mrtvý jazyk bych si musel ještě skoro 1000 počkat. ;-)
https://www.youtube.com/watch?v=pwODwwgE6rA (https://www.youtube.com/watch?v=pwODwwgE6rA)
-
Tohle by mohlo splnit tve pozadavky na sifrovani:
https://www.root.cz/clanky/encfs-sifrovani-souboru-jinak-a-bez-problemu/
tohle NE, je to 7let stare info z doby kdy se nevedelo ze to neni bezpecne... uz nejakou doby ale primo autori EncFS pred jeho pouzitim varuji (i pri instalaci daneho balicku (https://i.stack.imgur.com/87Kr6.png)), z distribuci bylo EncFS pro sifrovani domaciho adresare odstraneno a nahrazeno LUKS, atd, atd...
Diky, to jsem nevedel.
-
vhodnější může být použít openssl, což je součást snad každého linuxu a nemusíš instalovat gpg.
openssl aes-256-cbc -salt -pbkdf2 -md sha256 -in tajnysoubor.txt -out tajnysoubor.txt.aes
openssl aes-256-cbc -d -salt -pbkdf2 -md sha256 -in tajnysoubor.txt.aes -out stejnytajnysoubor.txt
Na heslo se ptá při šifrování i dešifrování.
To vypadá taky slibně. Hodně parametrů je samovysvětlujících, zeptal bych se jen na -md, tím se specifikuje typ algoritmu pro digest? K čemu se tam ten digest používá? A pak ještě -salt, ten by (pokud to správně chápu) měl zajistit použití náhodně vygenerované soli, půjde mi to potom rozšifrovat na různých strojích/linuxech/účtech? A děkuji za dobrý tip.
Význam parametrů zjistíte v man openssl-enc. Plný příkaz pro šifrování (šifrou AES-256 v CBC módu) by totiž byl openssl enc -aes-256-cbc …, ale openssl umožňuje vynechat enc a jako příkaz uvést přímo typ šifry.
Digest se používá pro převod hesla na šifrovací/dešifrovací klíč. To číslo v názvu AES šifry označuje počet bitů klíče – bylo by nepohodlné se do toho trefovat délkou hesla, navíc byste z množiny všech možných 256 znaků nejspíš používal jen ASCII znaky, což by výrazně omezilo množství použitelných klíčů.
Sůl se ukládá jako 8 znaků do výstupního souboru, takže nemusí být uložena nikde mimo. (Což je mimochodem normální přístup, sůl se praktiky vždy ukládá s šifrovaným nebo hashovaným výstupem – účelem soli není to, aby byla tajná, ale aby byla pokaždé jiná.)
-
Ještě můžeš použít ccrypt (http://ccrypt.sourceforge.net/ (http://ccrypt.sourceforge.net/)), ale GnuPG bude jistější a nejspíše i bezpečnější. Podle všeho neimplementuje best-practices (https://crypto.stackexchange.com/questions/24163/ccrypt-and-its-security (https://crypto.stackexchange.com/questions/24163/ccrypt-and-its-security)). Používat čisté OpenSSL mi pro běžného uživatele přijde složité.
-
vhodnější může být použít openssl, což je součást snad každého linuxu a nemusíš instalovat gpg.
openssl aes-256-cbc -salt -pbkdf2 -md sha256 -in tajnysoubor.txt -out tajnysoubor.txt.aes
openssl aes-256-cbc -d -salt -pbkdf2 -md sha256 -in tajnysoubor.txt.aes -out stejnytajnysoubor.txt
Na heslo se ptá při šifrování i dešifrování.
To vypadá taky slibně. Hodně parametrů je samovysvětlujících, zeptal bych se jen na -md, tím se specifikuje typ algoritmu pro digest? K čemu se tam ten digest používá? A pak ještě -salt, ten by (pokud to správně chápu) měl zajistit použití náhodně vygenerované soli, půjde mi to potom rozšifrovat na různých strojích/linuxech/účtech? A děkuji za dobrý tip.
Parametry už pěkně vysvětlil Filip Jirsák. -salt je výchozí přepínač a být tam nemusí, ano je to sůl, která je uložena uvnitř souboru jako obrana proti třeba rainbow table útoku.
-md sha256 je způsob jak z hesla udělat klíč správné délky, uvádím ho proto, že se občas stane, že se výchozí hash změní a pak soubor nelze rozšifrovat, tenhle údaj není uložený uvnitř šifrovaného souboru (stejně jako algoritmus, kterým se šifruje), takže jsem zvyklý ho explicitně uvádět.
-pbkdf2 je algoritmus jak z hesla pomocí hash funkce udělat klíč (zkráceně, mnohokrát opakuje hashování tak, aby to bylo těžké na brute force), do openssl 1.1.0 byla přítomna verze -pbkdf1, která ale již není dnes nevhodnější, proto bych doporučil novou -pbkdf2.
-
Zkousel jsem take sifrovat pomoci GPG, ale nejak se me to nedari. Mohl by mi prosim nekdo ve strucnosti poradit?
Nebo nemate nekdo odkaz, kde by byly vysvetleny jednotlive parametry?
Chtel jsem zasifrovat prosty textovy soubor s nazvem "pokus".
Zadal jsem v terminalu "gpg -c pokus", zeptalo se me to dvakrat na heslo a vytvoril se novy zamknuty soubor "pokus.gpg". Pricemz ten puvodni soubor se neprepsal. Existuje nejaky parametr, aby se me ten puvodni soubor
prepsal tim novym ?
Dale bych potreboval vedet, jestli existuje parametr, kterym bych si nastavil sifrovaci metodu?
A jeste bych se zeptal, jak desifrovat ten zamknuty soubor? Protoze to se mi nepodarilo.
Predem diky
-
Chtel jsem zasifrovat prosty textovy soubor s nazvem "pokus".
Zadal jsem v terminalu "gpg -c pokus", zeptalo se me to dvakrat na heslo a vytvoril se novy zamknuty soubor "pokus.gpg". Pricemz ten puvodni soubor se neprepsal. Existuje nejaky parametr, aby se me ten puvodni soubor
prepsal tim novym ?
Ne. shred starý; mv nový starý. A shred není zaručen na některých souborových systémech nebo diskových zařízeních.
Dale bych potreboval vedet, jestli existuje parametr, kterym bych si nastavil sifrovaci metodu?
man gpg
/cipher
gpg -c --cipher-algo BLOWFISH soubor
A jeste bych se zeptal, jak desifrovat ten zamknuty soubor? Protoze to se mi nepodarilo.
gpg soubor
-
diky za odpovedi, cely vecer zkousim sifrovat, uz se v tom zacinam trochu orientovat. :)
Jeste bych se prosim zeptal, k cemu slouzi ta sul v openssl? Ten parametr nejak vylepsi to sifrovani, nebo k cemu je to dobry?
-
Jeste bych se prosim zeptal, k cemu slouzi ta sul v openssl? Ten parametr nejak vylepsi to sifrovani, nebo k cemu je to dobry?
Normálně když zašifrujete stejný vstup stejným heslem, dostanete vždy stejný výstup. Což může být problém. Např. pokud vám útočník může podstrčit, co budete šifrovat (např. šifrujete zprávy od něj) – nechá vás zašifrovat jím poslanou zprávu, a pak si tu samou zprávu bude zkoušet šifrovat různými hesly. Když mu vyjde stejný zašifrovaný výstup, jako vyšel vám, ví, že to heslo je vaše heslo.
Když se ale při šifrování použije sůl, když stejný vstup zašifrujete dvakrát stejným heslem, výstup bude různý – bude se lišit sůl. Takže odpadne tenhle druh útoků, kdy útočník vytvoří spoustu zašifrovaných výstupů, a pak jen porovná, který výstup je shodný s tím vaším, aby získal vaše heslo.
-
Jeste bych se prosim zeptal, k cemu slouzi ta sul v openssl? Ten parametr nejak vylepsi to sifrovani, nebo k cemu je to dobry?
Normálně když zašifrujete stejný vstup stejným heslem, dostanete vždy stejný výstup. Což může být problém. Např. pokud vám útočník může podstrčit, co budete šifrovat (např. šifrujete zprávy od něj) – nechá vás zašifrovat jím poslanou zprávu, a pak si tu samou zprávu bude zkoušet šifrovat různými hesly. Když mu vyjde stejný zašifrovaný výstup, jako vyšel vám, ví, že to heslo je vaše heslo.
Když se ale při šifrování použije sůl, když stejný vstup zašifrujete dvakrát stejným heslem, výstup bude různý – bude se lišit sůl. Takže odpadne tenhle druh útoků, kdy útočník vytvoří spoustu zašifrovaných výstupů, a pak jen porovná, který výstup je shodný s tím vaším, aby získal vaše heslo.
K vysvětlení od Filipa bych ještě doplnil, že tyhle všechny šifry jsou blokové, vstupní data jsou rozdělena na bloky a ty se šifrují samostatně (jak se pracuje s bloky právě řiká ta zkratka cbc hned za aes), hash předchozího bloku je pak součástí toho dalšího.
Řada datových souborů má shodný začátek (hlavičky), jako např. html, pdf, xls a pravě stačí shodné heslo a shodný první block, aby bylo možné lámat heslo přes rainbow table i přestože je zbytek souboru jiný. To je obrovská zranitelnost, proto tyhle algoritmy používají IV (initialization vector), což je vlastně sůl pro první block. IV v openssl v tomhle případě derivuje z hesla nebo se dá zadat ručně, bohužel se zadává v hex v přesné délce a neplatí pro všechny algoritmy, proto je za mě lepší u openssl používat salt jako sůl, která se dá před daný soubor a tím vlastně odstraní prediktivitu jeho začátku v podobně hlaviček a přidá další úroveň obrany proti útočníkům.
-
V Textosaurovi používám openssl, konkrétně "openssl enc <algoritmus> ...", je to celkem transparentní x-plaftorm způsob.
https://github.com/martinrotter/textosaurus/blob/43efb630bbb61b91a081887bc2ee56af0eb67d92/src/libtextosaurus/common/miscellaneous/cryptofactory.cpp#L111
-
Díky za velmi dobré vysvětlení.
-
Ještě bych se zeptal, jaký máte názor na Truecrypt? Na jejich webu http://truecrypt.sourceforge.net se piše, že už není Truecrypt bezpečný. Je tedy bezpečnější používat místo Truecryptu Openssl?
-
TrueCrypt a OpenSSL jsou každé něco úplně jiného. TrueCrypt poskytoval multiplatformní řešení pro šifrování celého souborového systému. OpenSSL je knihovna pro TLS komunikaci, která se dá také mimochodem použít pro šifrování jednotlivých souborů (šifrovací algoritmy už tam stejně jsou naprogramované, takže přidat tam rozhraní pro šifrování souborů bylo pravděpodobně jednoduché).
O TrueCrypt už se dál nikdo nestará, to je hlavní důvod, proč je nutné jej považovat za nebezpečný. Vzniklo ale několik forků, asi nejznámější je VeraCrypt (https://www.veracrypt.fr/), a tomu pro šifrování souborového systému důvěřuju. Ale pokud chcete šifrovat jenom jeden soubor, je to kanón na vrabce.
-
díky
-
Význam parametrů ... ... ... pokaždé jiná.)
Parametry už ... ... ... novou -pbkdf2.
@Filip Jirsák
@AoK
Díky za pěkné vysvětlení parametrů.