Enkripcija fajlova u Linux-u
Postoji veliki broj komandi pomoću kojih se radi enkripcija fajlova u Linux-u. U ovom tekstu ćemo predstaviti nekoliko jednostavnih primera i pokazati vam kako to da uradite.
Verovatno već znate da svaka enkripcija fajlova znači da su oni izmenjeni na način da je nemoguće pročitati ih bez da ih prethodno dekriptujete. Enkripcija uglavnom neće automatski uticati na veličinu fajla, osim ukoliko ne primenite neku kompresiju. U nekim slučajevima će čak fajl biti i nešto veći od originalne verzije, zbog samog procesa enkripcije. Ipak, neke komande će podrazumevano kompresovati fajl, dok neke druge neće.
Pre svega je bitno da pre same enkripcije znate sledeće:
a) za koju namenu će biti korišćen enkriptovan fajl (da li je u pitanju bekap fajl, fajl koji želite da pošaljete nekome preko javne mreže ili direktno na neki drugi računar…)
b) na koji način i gde čuvate ključeve koji su vam potrebni za dekripciju
c) da li će originalni fajl (onaj koji nije kriptovan) biti čuvan negde na sigurnom mestu, ili će postojati samo njegova enkriptovana verzija.
Sve je ovo bitno da razmotrite pre nego uopšte započnete proces enkripcije.
Napomena: Neke Linux comande za enkripciju fajlova mogu biti korišćene sa javnim/privatnim ključevima, ili sa lozinkom koja se definiše prilikom procesa enkripcije. U ovom tekstu ćemo predstaviti samo načine koji podrazumevaju korišćenje lozinke.
GPG
GPG je jedan od najpoznatijih i najčešće korišćenih alata pomoću kojih se radi enkripcija fajlova u Linux-u. Istovremeno može da obezbedi digitalnu enkripciju i potpisivanje, ali ćemo se mi u ovom tekstu baviti samo enkripcijom uz korišćenje lozinke. Za razliku od nekih drugih alata, GPG ujedno radi i kompresiju pre započinjanja procesa enkripcije.
Ukoliko ukucate komandu kao ovu prikazanu ispod, sadržaj fajla će biti enkriptovan korišćenjem simetričnog ključa. To znači da će ista reč / fraza biti korišćena i za enkripciju i za dekripciju. Enkripcija javnim / privatnim ključem se može obaviti i korišćenjem opcije -e
$ gpg -c NekiFajl
Nakon ovoga ćete biti upitani da dva puta unesete lozinku i originalni fajl će ostati netaknut, kako je prikazano u ovom primeru:
$ ls -l NekiFajl*
-rw-rw-r-- 1 shs shs 107740386 Aug 30 13:21 NekiFajl
-rw-rw-r-- 1 shs shs 32359452 Aug 31 11:00 NekiFajl.gpg
Pored toga možete primetiti da je novi enkriptovani fajl manji od originalnog.
Važno je da napomenemo da GPG radi samo sa jednim po jednim fajlom.
ZIP
ZIP komanda se prevashodno koristi za kompresiju fajlova i njihovo spremanje u arhivu radi lakše organizacije i transporta fajlova. Pored toga, komanda takođe podržava i enkripciju. Potrebno je samo da dodate — encrypt opciju.
$ zip --encrypt NekiFajl.zip NekiFajl
Kao i GPG i ZIP istovremeno enkriptuje i kompresuje fajl, pa će finalni rezultat biti značajno manji fajl koji je pritom i enkriptovan.
$ ls -l NekiFajl*
-rw-rw-r-- 1 shs shs 107740386 Aug 30 13:21 NekiFajl
-rw-rw-r-- 1 shs shs 27587355 Aug 31 14:40 NekiFajl.zip
S obzirom da je ZIP prevashodno namenjen kreiranju arhiva, možete da dodate više fajlova istovremeno, dodajući ih kroz komandnu liniju:
$ zip --encrypt fajlovi.zip fajl1 fajl2Enter password:Verify password: adding: fajl1 (deflated 4%) adding: fajl2 (deflated 10%)$ ls -l fajlovi*
-rw-rw-r-- 1 shs shs 468 Aug 31 09:04 fajlovi.zip
7z
Radi veoma slično kao ZIP, s tim što omogućava bolju kompresiju. Kao i ZIP može da sadrži više fajlova u enkriptovanoj arhivi. Da biste pokrenuli enkripciju, ukucajte i lozinku za enkripciju u komandnu liniju sa prefiksom –p ispred lozinke.
$ 7z a NekiFajl.7z NekiFajl -pNekaLozinka
$ ls -l NekiFajl*
-rw-rw-r-- 1 shs shs 107740386 Aug 30 13:21 NekiFajl
-rw-rw-r-- 1 shs shs 27674 Aug 31 12:37 NekiFajl.7z
ccrypt
Smatra se jednim od alata koji obezbeđuje veoma jaku enkripciju, a kao i sve ostale nabrojane komande jednostavno se pokreće iz komandne linije.
Pre nego inicirate enkripciju uz pomoć ccrypt-a imajte u vidu da on enkriptuje originalni fajl i ujedno uklanja njegovu originalnu verziju. Za razliku od ZIP-a i 7z-a ne menja značajno veličinu fajla.
$ ccrypt -e NekiFajl$ ls -l NekiFajl*
-rw-rw-r-- 1 shs shs 107740418 Aug 29 10:09 NekiFajl.cpt
ccrypt komanda može da enkriptuje više fajlova jednom komandom, ali ih enkriptuje odvojeno.
mcrypt
Za razliku od ccrypt-a, ova komanda zahteva dvostruki unos lozinke, ostavlja originalni fajl netaknutim i menja pristupna prava fajlu, tako da prava izmene ima samo vlasnik fajla. Takođe nudi dosta opcija u odabiru algoritma za enkripciju i nudi opciju kompresije fajla pre samog procesa enkripcije. Kao i ccrypt može da enkriptuje više fajlova jednom komandom, ali ih enkriptuje odvojeno.
Ukoliko koristite -- list
opciju, mcrypt će vam izlistati sve dostupne algoritme za enkripciju:
$ mcrypt --list
cast-128 (16): cbc cfb ctr ecb ncfb nofb ofb
gost (32): cbc cfb ctr ecb ncfb nofb ofb
rijndael-128 (32): cbc cfb ctr ecb ncfb nofb ofb
twofish (32): cbc cfb ctr ecb ncfb nofb ofb
arcfour (256): streamcast-256 (32): cbc cfb ctr ecb ncfb nofb ofb
loki97 (32): cbc cfb ctr ecb ncfb nofb ofb
rijndael-192 (32): cbc cfb ctr ecb ncfb nofb ofb
saferplus (32): cbc cfb ctr ecb ncfb nofb ofb
wake (32): streamblowfish-compat (56): cbc cfb ctr ecb ncfb nofb ofb
des (8): cbc cfb ctr ecb ncfb nofb ofb
rijndael-256 (32): cbc cfb ctr ecb ncfb nofb ofb
serpent (32): cbc cfb ctr ecb ncfb nofb ofb
xtea (16): cbc cfb ctr ecb ncfb nofb ofb
blowfish (56): cbc cfb ctr ecb ncfb nofb ofb
enigma (13): streamrc2 (128): cbc cfb ctr ecb ncfb nofb ofb
tripledes (24): cbc cfb ctr ecb ncfb nofb ofb
Važno je napomenuti da mcrypt za enkripciju podrazumevano koristi rijndael-128 algoritam. Da biste proverili koji je algoritam korišćen ukucajte sledeću komandu:
$ file NekiFajl.bz2.ncNekiFajl.bz2.nc: mcrypt 2.5 encrypted data, algorithm: rijndael-128, keysize: 32 bytes, mode: cbc,
Koje Linux alate / komande za enkripciju vi koristite u svom svakodnevnom radu? Da li je možda u pitanju neki od alata koje nismo pomenuli u ovom tekstu. Možda možete da preporučite čitaocima neke alate koji nisu često u upotrebi. Ukoliko želite da podelite sa nama vaša iskustva, pišite nam u komentare.