Açıq
Yaxın

Tam disk şifrələməsini dəstəkləyən Linux yükləmə yükləyiciləri? Linux üçün LUKS, EncFS və CryptoFS məlumat şifrələmə sistemləri LUKS istifadə edərək disk bölmələrinin şifrələnməsi

Bu yazıda Linux altında müxtəlif şifrələmə sistemlərinin performansını müqayisə etməyə çalışacağam. Teorik olaraq, təbii ki, hansı sistemin daha məhsuldar olduğu məlumdur və müxtəlif sistemlərin performansını hesablamaq cəhdləri olmuşdur (). Truecrypt hətta daxili etalondan ibarətdir (lakin bu, RAM-da performansı göstərir; yalnız müxtəlif şifrələmə alqoritmlərinin sürətini qiymətləndirmək üçün istifadə edilə bilər). Bir az fərqli bir şey edəcəm - adi şifrələnməmiş fayl sistemi ilə müqayisədə müxtəlif vasitələrlə şifrələnmiş fayl sisteminin sürətini faizlə ölçəcəyəm.


Hər bir konkret vəziyyətdə standart olaraq istifadə olunan alqoritmdən istifadə edərək, kök fayl sistemini ehtiva etməyən ayrı bir HDD-də ayrı bir bölməni şifrələyəcəyik. Adi bir istifadəçi kimi mən şifrələmə standartlarının nüanslarını başa düşmürəm (məsələn, RIPEMD-160 hashing Whirpool-dan nə ilə fərqlənir, bu rejimlərdən hansı daha sürətlidir, hansı daha yüksək qorunma təmin edir), ona görə də sadəcə olaraq etibar edəcəyik ki, hər bir proqram məhsulunun istehsalçıları kifayət qədər kriptoqrafik standart parametrləri seçmişlər. Bu, tamamilə doğru olmaya bilər, çünki müxtəlif şifrələmə alqoritmlərinin performansı eyni deyil. İstəyirsinizsə, əlbəttə ki, şifrələmə növünü dəyişə bilərsiniz, lakin bütün sınaqdan keçirilmiş məhsulların tamamilə eyni alqoritmlər dəstinə malik olduğuna əmin deyiləm. Test edəcəyik:

3) eCryptfs, Ubuntu istifadəçilərinə ev kataloqlarını şifrələmək üçün təklif olunan standart sistemdir, buna görə də bu testə daxil edilmişdir. Mövcud fayl sisteminin üzərində işləyir. Hər bir faylı ayrıca şifrələyir, beləliklə hamı hüquqları, dəyişiklik tarixlərini və şifrələnmiş faylların sayını görə bilsin; Varsayılan olaraq, fayl adları da görünür, baxmayaraq ki, onları şifrələmək imkanı var. Dəstənin ən təsirsiz məhsulu.

4) EncFS eCryptfs-in təxmini analoqudur, lakin FUSE istifadə edir.

Beləliklə, sınaq üçün aşağıdakı konfiqurasiyada kifayət qədər inkişaf etmiş yaşlı bir maşın ayrıldı: CPU - Intel Celeron 2000Mhz, RAM - 512 Mb DDR PC2700, sistem HDD - WD Caviar SE 5400 RPM 80Gb, sınaq HDD - WD Caviar SE RPM 7200 80Gb.
ƏS - Ubuntu 12.04 LTS, yazı zamanı bu ƏS-nin depoları üçün mövcud olan bütün proqram təminatının versiyaları (Truecrypt 7.1a-linux-x86 depolardan deyil).

Əksər paylamalar üçün standart ext4 fayl sistemini sınaqdan keçirəcəyik. Performansı yoxlamaq üçün biz iozone3 yardım proqramından və testlərdəki faiz fərqini ölçmək üçün “diz üzərində” yazılmış qabıq skriptindən istifadə edəcəyik.

Saymaq üçün skript. Kodun təmizliyinə xüsusi diqqət yetirilmədi, yazarkən yeganə meyar düzgün nəticənin olması idi.

#!/bin/sh gendifffile () ( #prosedur təhlil etmək üçün əlverişli olan fayl yaradır. Birincisi, #təhlil olunmayan sətirlər kəsilir; ikincisi, #faylın ölçüsünü göstərən hər bir sətirdəki ilk iki rəqəm kəsilir. və müvafiq olaraq qeyd ölçüsü , üçüncüsü, bütün fayl sətir üzrə çıxış edir - hər sətir üçün bir test nəticəsi cat $1 | |. "(i=3;i<=NF;i++) {print $i}}" done > > $2 ) getline () ( #prosedur faylın $2 sətirini çap edir $1 head -n $2 "$1" | tail -n 1 ) müqayisə () ( #prosedur $1 və $2 faylları sətir-sətir müqayisə edir, hər birinin faiz fərqini hesablayır. test cütü #sonra arifmetik orta hesabla #birinci qrup testləri ehtiva edən faylın ikinci qrupu ehtiva edən fayldan neçə faiz daha sürətli və ya yavaş olduğunu hesablayır P=0 MAX=0 L1=`cat "$1" # | fayldakı testlərin sayı L2=`cat "$2" |. wc -l` əgər [ $L1 -ne $L2 ], onda #fayllarda müxtəlif sayda testlər varsa, onda biz onları müqayisə etməyəcəyik =$(($L1*5/100)) `seq 1 $L1` üçün J=0; əgər [ $J -eq $STEP ]; 0 echo "$((100*$I/$ L1))% tamamlandı ($I of $L1)" fi A=`getline "$1" $I` B=`getline "$2" $I` əgər [ `echo $A \> $B|bc -l` - eq 1 ]; sonra D=`echo "100-($B*100/$A)"|bc -l` əgər [ `echo $D \> $MAX| bc -l` -eq "1" ]; MAX=$D yuxu 5 fi else D=`echo "100-($A*100/$B)"|bc -l` əgər [ `echo $D \> $ MAX|.bc -l` -eq "1" ]; sonra MAX=$D yuxu 5 fi D="-$D" #əgər dəyər "-" işarəsi varsa, o zaman bu test daha sürətli #ikinci faylda yerinə yetirilib. , birinci fi P=`echo "$P+ $D"|-də ​​deyil bc -l` edildi P=`echo $P/$L1| bc -l` #arifmetik ortanı hesablayın echo PERCENT=$P MAX_PERCENT=$MAX ) genaverage () ( #hər sətri bütün hesabat fayllarının uyğun sətirlərinin arifmetik ortası olan təhlil üçün hazırlanmış faylın yaradılması proseduru təhlil edilən kataloqda yerləşir AVG=` mktemp` F=`ls "$1"|wc -l` #verilmiş kataloqda hesabatları olan faylların sayı #bir şərtlə ki, orada yalnız belə fayllar saxlanılsın və başqa heç nə #biz yoxlanmayacağıq. bu fərziyyənin düzgünlüyü əgər [ -d " $1" -o $F -lt 2 ] o zaman echo xətası >/dev/stderr #bu prosedurda biz bütün mesajları stderr-ə çıxaracağıq, çünki #stdout başqa bir prosedur rm ilə əvəz olunur - f $AVG exit fi TMP=` mktemp` "$1"-i tapın -f | yazın; müəyyən edilmiş kataloqda yerləşən hər bir iozone hesabat faylı üçün edin. FILE" "$I" #adlar bütün belə faylları "TMP"-yə sətir-sətir əks-səda yazır "$I">>$TMP tamamlandı L=`cat \`getline "$TMP" 1\`|wc -l` cat " $TMP"| LINE oxuyarkən; #bir neçə yoxlamadan keçmək zərər verməz L1=`cat "$LINE"| wc -l` #do bütün fayllar eyni sayda testlərdən ibarətdir, əgər [ $L -ne $L1 ]; sonra əks-səda xətası >/dev/stderr exit fi tamamlandı STEP=$(($L*5/100)) `seq 1 $L`-də I üçün J=0; do J=$(($J+1)) əgər [ $J -eq $STEP ]; sonra J=0 əks-səda "$((100*$I/$L))% tamamlandı ($I of $L)" >/dev/stderr fi SUMFILE=`mktemp` #bu yolla mən SUM dəyişəninin qiymətini alıram yuvalanmış döngədən SUM=0 pişik "$TMP"| LINE oxuyarkən; SUM=$((`getline "$LINE" $I`+$SUM)) echo $SUM > "$SUMFILE" tamamlandı echo `tail -n 1 "$SUMFILE"`/$F|bc -l >> $ AVG #arifmetik orta #alın və onu AVG faylının müvafiq yerinə yazın rm -f "$SUMFILE" yerinə yetirildi cat "$TMP"| LINE oxuyarkən; müvəqqəti faylları #silmək rm -f "$LINE" tamamlandı rm -f "$TMP" echo $AVG ) printf %b "\\033)