Egyszerű fájltitkosítás OpenSSL-el

RoliSoft
2009 August 29, Saturday 18:32

Linuxra (vagy bármelyik más operációs rendszerre) sokféle fájltitkosító szoftver létezik. De mi van akkor ha gyorsan kell fájlt titkosítani?

Az OpenSSL a legtöbb Linux disztribúcióra (pl. Ubuntu) már előre telepítve van. A Windows felhasználók innen tölthetnek le egy win32 binárist.

A legegyszerűbb parancs egy fájl titkosítására:

openssl aes-256-cbc -salt -in titkosFajl.txt -out titkositottFajl.aes

A fenti parancs a következőképpen működik:

  • openssl – az OpenSSL szoftver
  • aes-256-cbc – titkosítási algoritmus, ez esetben egy 256 bites AES CBC módban; a Wikipédia szerint a U.S. kormány ezt az algoritmust használja információk titkosítására.
  • salt – növeli a jelszó biztonságát, használata erősen ajánlott.
  • in titkosFajl.txt – titkosítani kívánt fájl neve.
  • out titkositottFajl.aes – ebbe a fájlba menti el a titkosítást.

Opcionálisan hozzá lehet adni az -a paramétert és akkor a kimenet Base64 kódolt lesz, így megtekinthető lesz bármilyen szövegszerkesztővel, habár nem lesz sok értelme, továbbá a fájl méretét is erősen növeli.

A dekódolás hasonlóképpen történik:

openssl aes-256-cbc -d -in titkositottFajl.aes -out titkosFajl.txt

Ha használtad titkosításkor az -a paramétert, akkor azt most is hozzá kell adni.

Másik módszer a GnuGP használata. Valószínűleg már ez is előre telepítve van a rendszereden, a Windows felhasználók pedig innen tölthetnek le egy win32 binárist.

GPG-vel a fájltitkosítás a következőképpen működik:

gpg --cipher-algo AES256 -o titkositottFajl.gpg -c titkosFajl.txt

A GPG alapból CAST5 algoritmust használ, de ajánlott ezt felülírni AES256-ra. Kimenetet (-o) nem kötelező megadni, ekkor a fájlnévhez hozzácsatol egy .gpg kiterjesztést.

A dekódolás a következőképpen történik:

gpg -o titkosFajl.txt -d titkositottFajl.gpg

A használt algoritmust automatikusan felismeri, így azt nem kell neki megadni. Itt is el lehet hagyni a kimenetet, ekkor kiírja a szöveget a konzolba.

Ha sokszor használsz fájltitkosítást akkor leegyszerűsítheted a folyamatot két bash script írásával. Az első script titkosításra van, tárold el például egy encrypt nevű fájlba:

#!/bin/bash
openssl aes-256-cbc -salt -in $1 -out $1.aes

Használata egyszerűen encrypt fajl.txt, beírod a jelszót, majd a fajl.txt.aes fájlban találod meg a titkosított tartalmat.
A dekódoló script is ilyen egyszerű. Tárold a következőket egy decrypt nevű fájlba:

#!/bin/bash
openssl aes-256-cbc -d -in $1 -out ${1%.aes}

Használata egyszerűen decrypt fajl.txt.aes, beírod a jelszót, majd a dekódolt tartalmat a fajl.txt-ben találod meg.

Hozzászólások
OpenSSL:
[code]rolisoft@ncc1701e:~$ echo "Teszt uzenet." > a.txt
rolisoft@ncc1701e:~$ openssl aes-256-cbc -salt -a -in a.txt -out a.aes
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
rolisoft@ncc1701e:~$ cat a.aes
U2FsdGVkX199KuQG9YnVWEnV3NeXgLNw4flz46IOPLE=
rolisoft@ncc1701e:~$ openssl aes-256-cbc -a -d -in a.aes -out b.txt
rolisoft@ncc1701e:~$ cat b.txt
Teszt uzenet.
rolisoft@ncc1701e:~$ [/code]
GnuGP:
[code]rolisoft@ncc1701e:~$ rm a.aes
rolisoft@ncc1701e:~$ rm b.txt
rolisoft@ncc1701e:~$ gpg --cipher-algo AES256 -o a.gpg -c a.txt
rolisoft@ncc1701e:~$ gpg -o b.txt -d a.gpg
gpg: AES256 encrypted data
gpg: encrypted with 1 passphrase
rolisoft@ncc1701e:~$ cat b.txt
Teszt uzenet.
rolisoft@ncc1701e:~$ [/code]