Jak snadno šifrovat textové soubory v Linuxu?

Jak snadno šifrovat textové soubory v Linuxu?
« kdy: 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.
Provozoval internetový portál, ale chodili mu tam lidi.


Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #1 kdy: 16. 05. 2020, 22:19:05 »
Tohle by mohlo splnit tve pozadavky na sifrovani:

https://www.root.cz/clanky/encfs-sifrovani-souboru-jinak-a-bez-problemu/

Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #2 kdy: 16. 05. 2020, 22:26:16 »
Nejjednodušší asi bude použít gpg -c. Binární soubor můžete na text převést pomocí base64.

Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #3 kdy: 16. 05. 2020, 23:10:12 »
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.
Provozoval internetový portál, ale chodili mu tam lidi.

Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #4 kdy: 16. 05. 2020, 23:20:22 »
vhodnější může být použít openssl, což je součást snad každého linuxu a nemusíš instalovat gpg.

Kód: [Vybrat]
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í.


k3dAR

  • *****
  • 3 102
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #5 kdy: 16. 05. 2020, 23:26:41 »
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), z distribuci bylo EncFS pro sifrovani domaciho adresare odstraneno a nahrazeno LUKS, atd, atd...

alex6bbc

  • *****
  • 1 734
    • Zobrazit profil
    • E-mail
Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #6 kdy: 16. 05. 2020, 23:43:05 »
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.

Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #7 kdy: 16. 05. 2020, 23:51:49 »
vhodnější může být použít openssl, což je součást snad každého linuxu a nemusíš instalovat gpg.

Kód: [Vybrat]
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.
Provozoval internetový portál, ale chodili mu tam lidi.

alex6bbc

  • *****
  • 1 734
    • Zobrazit profil
    • E-mail
Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #8 kdy: 16. 05. 2020, 23:55:42 »
salt se nekam ulozi ne?

Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #9 kdy: 16. 05. 2020, 23:56:37 »
...
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
Provozoval internetový portál, ale chodili mu tam lidi.

Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #10 kdy: 17. 05. 2020, 01:17:41 »
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), z distribuci bylo EncFS pro sifrovani domaciho adresare odstraneno a nahrazeno LUKS, atd, atd...

Diky, to jsem nevedel.

Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #11 kdy: 17. 05. 2020, 09:19:02 »
vhodnější může být použít openssl, což je součást snad každého linuxu a nemusíš instalovat gpg.

Kód: [Vybrat]
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á.)

Džan

Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #12 kdy: 17. 05. 2020, 10:28:59 »
Ještě můžeš použít ccrypt (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). Používat čisté OpenSSL mi pro běžného uživatele přijde složité.

Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #13 kdy: 17. 05. 2020, 11:48:52 »
vhodnější může být použít openssl, což je součást snad každého linuxu a nemusíš instalovat gpg.

Kód: [Vybrat]
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.

Re:Jak snadno šifrovat textové soubory v Linuxu?
« Odpověď #14 kdy: 17. 05. 2020, 21:57:27 »
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