Ochiq
Yopish

To'liq disk shifrlashni qo'llab-quvvatlaydigan Linux yuklash moslamalari? Linux uchun LUKS, EncFS va CryptoFS ma'lumotlarni shifrlash tizimlari LUKS yordamida disk bo'limlarini shifrlash

Ushbu maqolada men Linux ostida turli shifrlash tizimlarining ishlashini solishtirishga harakat qilaman. Nazariy jihatdan, albatta, qaysi tizim samaraliroq ekanligi ma'lum va turli tizimlarning ishlashini hisoblashga urinishlar bo'lgan (). Truecrypt hatto o'rnatilgan benchmarkni ham o'z ichiga oladi (ammo bu RAMda ishlashni ko'rsatadi; u faqat turli xil shifrlash algoritmlarining tezligini baholash uchun ishlatilishi mumkin). Men biroz boshqacha ish qilaman - har xil vositalar bilan shifrlangan fayl tizimining tezligini oddiy shifrlanmagan fayl tizimiga nisbatan foiz sifatida o'lchayman.


Biz har bir alohida holatda sukut bo'yicha ishlatiladigan algoritmdan foydalanib, ildiz fayl tizimini o'z ichiga olmaydigan alohida HDD-da alohida bo'limni shifrlaymiz. Oddiy foydalanuvchi sifatida men shifrlash standartlarining nuanslarini tushunmayapman (masalan, RIPEMD-160 xeshing Whirpool-dan qanday farq qiladi, ushbu rejimlarning qaysi biri tezroq va yuqori himoyani ta'minlaydi), shuning uchun biz shunchaki haqiqatga tayanamiz. Har bir dasturiy mahsulot ishlab chiqaruvchilari yetarlicha kriptografik standart sozlamalarni tanladilar. Bu mutlaqo to'g'ri bo'lmasligi mumkin, chunki turli xil shifrlash algoritmlarining ishlashi bir xil emas. Agar xohlasangiz, albatta shifrlash turini o'zgartirishingiz mumkin, lekin men barcha sinovdan o'tgan mahsulotlarda mutlaqo bir xil algoritmlar to'plami borligiga ishonchim komil emas. Biz sinovdan o'tkazamiz:

3) eCryptfs - bu Ubuntu foydalanuvchilariga uy kataloglarini shifrlash uchun taqdim etiladigan standart tizim, shuning uchun u ushbu testga kiritilgan. Mavjud fayl tizimi ustida ishlaydi. Har bir faylni alohida shifrlaydi, shuning uchun hamma huquqlarni, o'zgartirish sanalarini va shifrlangan fayllar sonini ko'rishi mumkin; Odatiy bo'lib, fayl nomlari ham ko'rinadi, garchi ularni shifrlash imkoniyati mavjud. To'plamning eng samarasiz mahsuloti.

4) EncFS eCryptfs ning taxminiy analogidir, lekin FUSE dan foydalanadi.

Shunday qilib, sinov uchun quyidagi konfiguratsiyada juda katta yoshdagi alohida mashina ajratildi: CPU - Intel Celeron 2000Mhz, RAM - 512 Mb DDR PC2700, tizim HDD - WD Caviar SE 5400 RPM 80Gb, HDD sinovi - WD Caviar SE RPM 7200 80 Gb.
OS - Ubuntu 12.04 LTS, yozish paytida ushbu OS omborlari uchun joriy barcha dasturiy ta'minot versiyalari (Truecrypt 7.1a-linux-x86 omborlardan emas).

Ko'pgina tarqatishlar uchun standart ext4 fayl tizimini sinab ko'ramiz. Ishlashni sinab ko'rish uchun biz iozone3 yordam dasturidan va testlardagi foiz farqini o'lchash uchun "tizza ustida" yozilgan qobiq skriptidan foydalanamiz.

Hisoblash uchun skript. Kodning tozaligiga alohida e'tibor berilmagan; yozishda yagona mezon to'g'ri natijaning mavjudligi edi.

#!/bin/sh gendifffile () ( #protsedura tahlil qilish uchun qulay bo'lgan faylni hosil qiladi. Birinchidan, #tahlilga tobe bo'lmagan satrlar kesiladi; ikkinchidan, har bir satrdagi birinchi ikkita raqam qisqartiriladi, bu #fayl hajmini ko'rsatadi. va rekord o'lchami, uchinchidan, butun fayl satr bo'yicha chiqariladi - har bir satr uchun #bir test natijasidir cat $1 | |. "(i=3;i. uchun)<=NF;i++) {print $i}}" done > > $2 ) getline () ( #protsedura $1 faylning $2 satr raqamini chop etadi head -n $2 "$1" | tail -n 1 ) solishtiring () ( #procedure $1 va $2 fayllarni satr boʻyicha taqqoslaydi, har bir faylning foiz farqini hisoblab chiqadi. testlar juftligi #keyin o'rtacha arifmetik hisoblaydi #birinchi guruh testlarini o'z ichiga olgan fayl ikkinchi guruhni o'z ichiga olgan faylga qaraganda P=0 MAX=0 L1=`cat "$1" # | fayldagi testlar soni L2=`cat "$2" wc -l` agar [ $L1 -ne $L2 ] keyin #agar fayllarda turli xil testlar boʻlsa, biz ularni echo xatosi bilan solishtirmaymiz =$(($L1*5/100)) `seq 1 $L1`da J=0; agar [ $J -eq $STEP ]; 0 echo "$((100*$I/$ L1))% bajarildi ($I / $L1)" fi A=`getline "$1" $I` B=`getline "$2" $I` agar [ `echo $A \> $B|bc -l` - eq 1 ]; keyin D=`echo "100-($B*100/$A)"|bc -l` agar [ `echo $D \> $MAX| bc -l` -eq "1" ]; MAX=$D uyqu 5 fi else D=`echo "100-($A*100/$B)"|bc -l` agar [ `echo $D \> $ MAX|.bc -l` -eq "1" ]; keyin MAX=$D uyqu 5 fi D="-$D" #agar qiymat "-" belgisiga ega bo'lsa, bu test ikkinchi faylda tezroq bajarilgan. , birinchi fi P=`echo "$P+ $D"|da emas bc -l` bajarildi P=`echo $P/$L1| bc -l` #o'rtacha arifmetikni hisoblash echo PERCENT=$P MAX_PERCENT=$MAX ) genaverage () ( #tahlil uchun tayyorlangan faylni yaratish tartibi, uning har bir satri #barcha hisobot fayllarining tegishli satrlarining o'rtacha arifmetik qiymati hisoblanadi. tahlil qilinayotgan katalogda joylashgan AVG=` mktemp` F=`ls "$1"|wc -l` #ma'lum katalogdagi hisobotlari bo'lgan fayllar soni #shungaki u yerda faqat shunday fayllar va boshqa hech narsa saqlangan bo'lmasa #biz tekshirmaymiz bu taxminning to'g'riligi, agar [ -d " $1" -o $F -lt 2 ] bo'lsa, echo xatosi >/dev/stderr #bu protsedurada biz barcha xabarlarni stderr ga chiqaramiz, chunki #stdout boshqa protseduraga almashtirilgan rm -; f $AVG exit fi TMP=` mktemp` FILE-ni o'qiyotganda "$1"-ni toping -ko'rsatilgan katalogda joylashgan har bir iozone hisobot fayli uchun bajaring. FILE" "$I" #names barcha bunday fayllarni "TMP" ga yozadi "$I">>$TMP bajarildi L=`cat \`getline "$TMP" 1\`|wc -l` cat " $TMP"| LINE o'qiyotganda; #bir nechta tekshirishlar zarar qilmaydi L1=`cat "$LINE"| wc -l` #do barcha fayllar bir xil miqdordagi testlarni o'z ichiga oladi, agar [ $L -ne $L1 ]; keyin echo xatosi >/dev/stderr exit fi bajarildi STEP=$(($L*5/100)) J=0 `seq 1 $L` da I uchun; do J=$(($J+1)) agar [ $J -eq $STEP ]; keyin J=0 echo "$((100*$I/$L))% bajarildi ($I ning $L)" >/dev/stderr fi SUMFILE=`mktemp` #shunday qilib men SUM o'zgaruvchisining qiymatini olaman o'rnatilgan tsikldan SUM=0 mushuk "$TMP"| LINE o'qiyotganda; do SUM=$((`getline "$LINE" $I`+$SUM)) echo $SUM > "$SUMFILE" bajarildi echo `tail -n 1 "$SUMFILE"`/$F|bc -l >> $ AVG #o'rtacha arifmetik qiymatni oling va uni AVG faylining tegishli joyiga yozing rm -f "$SUMFILE" bajarildi mushuk "$TMP"| LINE o'qiyotganda; vaqtinchalik fayllarni #delete qilish rm -f "$LINE" bajarildi rm -f "$TMP" echo $AVG ) printf %b "\\033)