ทำไมผลลัพธ์ของการเปรียบเทียบ Truecrypt และ cryptsetup (LUKS) จึงแตกต่างกันอย่างมาก


10

ฉันต้องการเข้ารหัสส่วนหนึ่งของ HDD ของฉัน แต่ก่อนหน้านั้นฉันต้องการสร้างมาตรฐานของอัลกอริทึมต่าง ๆ ที่สงสัยว่าฉันควรเลือกaes-xts-256หรือaes-xts-512ไม่

หมายเหตุ: ฉันไม่มีaesการเร่งด้วยฮาร์ดแวร์ การวัดซ้ำหลายครั้งโดยไม่มีการเปลี่ยนแปลงมากนัก ฉันต้องการระบุอย่างชัดเจนว่าเกณฑ์มาตรฐานเหล่านี้ใช้ได้กับคอมพิวเตอร์ของฉันเท่านั้น (Debian, core 2 duo) นี่ไม่ได้มีวัตถุประสงค์เพื่อทำการเปรียบเทียบ LUKS-TrueCrypt อย่างสมบูรณ์

TL; DR:ไปที่ส่วนที่ 4


1- Cryptsetup

ดังนั้นฉันดาวน์โหลดcryptsetup v1.6.0เพื่อใช้ประโยชน์จากcryptsetup benchmarkคำสั่งใหม่

คำสั่ง

$cryptsetup benchmark

ผล

 #  Algorithm | Key | Encryption |  Decryption
     aes-cbc   128b   128,2 MiB/s   157,2 MiB/s
 serpent-cbc   128b    49,6 MiB/s    57,7 MiB/s
 twofish-cbc   128b   138,0 MiB/s   183,8 MiB/s
     aes-cbc   256b    97,5 MiB/s   121,9 MiB/s
 serpent-cbc   256b    51,8 MiB/s    57,7 MiB/s
 twofish-cbc   256b   139,0 MiB/s   183,8 MiB/s
     aes-xts   256b   156,4 MiB/s   157,8 MiB/s
 serpent-xts   256b    55,7 MiB/s    58,7 MiB/s
 twofish-xts   256b   161,5 MiB/s   165,9 MiB/s
     aes-xts   512b   120,5 MiB/s   120,9 MiB/s
 serpent-xts   512b    55,7 MiB/s    58,5 MiB/s
 twofish-xts   512b   161,5 MiB/s   165,3 MiB/s

ความคิด

  • ในcbcโหมดserpentถอดรหัสรวดเร็วอย่างน่าประหลาดใจ!
  • ในxtsโหมดserpentชัดเจนเร็วที่สุด
  • ขนาดของคีย์ดูเหมือนจะแทบไม่มีผลกระทบใด ๆserpent twofish
  • aes ทำงานไม่ดีเมื่อเพิ่มขนาดของคีย์

อัพเดตจาก VM


2- TrueCrypt

ฉันรู้สึกประหลาดใจจริงๆที่aesทราบว่าเร็วที่สุด (แม้ว่าจะไม่มีการเร่งความเร็วด้วยฮาร์ดแวร์) ดังนั้นฉันดาวน์โหลดTrueCryptเพื่อตรวจสอบผลลัพธ์เหล่านี้อีกครั้ง TrueCryptใช้xtsโหมดโดยปริยายดังนั้นฉันคิดว่ามันใช้ในเกณฑ์มาตรฐานด้วย

วิธี

  1. เครื่องมือ> เกณฑ์มาตรฐาน
  2. เลือกขนาดบัฟเฟอร์ใด ๆ (ที่นี่ 5MB)
  3. คลิกที่ "เกณฑ์มาตรฐาน"

ผล

 #  Algorithm | Encryption |  Decryption
         AES     106 MB/s      107 MB/s
     Twofish      78 MB/s       76 MB/s
     Serpent      41 MB/s       42 MB/s

ความคิด

ผลลัพธ์เหล่านี้ตรงกับสิ่งที่คาดหวังมาก แต่ไม่ตรงกับcryptsetupผลลัพธ์ของ


3- ความคิดทั่วไป

  • cryptsetupให้ประสิทธิภาพทั่วไปดีกว่าTrueCryptในกรณีนี้ สิ่งนี้สามารถอธิบายได้ด้วยวิธีต่อไปนี้:
    • cryptsetupถูกคอมไพล์บนระบบของฉันด้วยรูทีนการปรับแต่งคอมไพเลอร์ในขณะที่TrueCryptคอมไพล์แล้วด้วยวิธีทั่วไป
    • AFAIK cryptsetupใช้โมดูล kernelspace crypto ในขณะที่TrueCryptใช้รูทีน crypto userspace
  • อย่างไรก็ตามฉันไม่สามารถอธิบายได้ว่าทำไมserpent-xts-512ถึงเป็นวิธีที่จะไปด้วยcryptsetupในขณะaes-xtsที่ตัวเลขเดียวที่คุ้มค่าใช้

4- คำถาม

cryptsetupและTrueCryptให้คุณภาพที่แตกต่างกันโดยสิ้นเชิง (ความเร็วการเข้ารหัสสัมพัทธ์) และปริมาณ (ความเร็วจริงของการเข้ารหัสแต่ละอัน) ส่งผลให้เกิดการวัดประสิทธิภาพแบบ in-RAM

  • นั่นเป็นสิ่งที่คุณสังเกตเห็นแล้วใช่ไหม
  • ฉันควรเชื่อถือcryptsetupและใช้serpent-xts-512รหัสลับเพื่อความเร็วหรือไม่

คำตอบ:


5

คุณไม่มีการเร่งด้วยฮาร์ดแวร์ AES และกำลังทำการทดสอบในเครื่องเสมือน ไม่น่าเป็นไปได้ที่ผลการทดสอบของคุณจะสะท้อนถึงผลลัพธ์ในโลกแห่งความเป็นจริงเนื่องจากความเร็วในการเข้ารหัส / ถอดรหัสนั้นขึ้นอยู่กับ CPU และดิสก์โหลดในปัจจุบัน ทางออกที่ดีที่สุดของคุณคือการสร้างพาร์ติชั่น Truecrypt ที่เป็นอิสระสองตัวและดำเนินการวัดประสิทธิภาพด้วยตนเองโดยการคัดลอกไฟล์ขนาดใหญ่ไปยัง / จากแต่ละพาร์ติชัน

LUKS และ Truecrypt มีการใช้งานที่แตกต่างกันเล็กน้อยและอย่างที่คุณพูดว่า "เกณฑ์มาตรฐานเหล่านี้ใช้ได้กับคอมพิวเตอร์ของฉันเท่านั้น" คุณต้องทดสอบทั้งระบบของคุณด้วยการถ่ายโอนไฟล์จริงเพื่อตรวจสอบประสิทธิภาพที่แท้จริง


สำหรับความแตกต่าง Truecrypt ใช้FUSEเพื่อใช้ระบบไฟล์ userspace ในขณะที่LUKSมักจะทำในเคอร์เนลจริง ด้วยเหตุนี้จึงเป็นไปได้ว่าคุณจะได้รับปริมาณงานที่ดีขึ้นในระบบ Linux โดยใช้ LUKS / dm-crypt / cryptsetup ซึ่งตรงข้ามกับ Truecrypt แม้ว่าตัวเลือกที่คุณเลือกจะขึ้นอยู่กับข้อกำหนดของการเข้ารหัสของคุณ (เช่น Truecrypt ระบบถ้าจำเป็น)


แปลก: ฉันพยายามโดยตรงในระบบของฉันและโดยทั่วไปทุกอย่างจะยืนยกเว้นserpentซึ่งกลายเป็นช้ากว่ามาก ดังนั้นปัญหาเกี่ยวกับพญานาคจึงได้รับการแก้ไข Twofishยังคงเป็นที่เร็วกว่าaesในและช้าลงในcryptsetup TrueCryptและฉันไม่มีaesการเร่งความเร็วฮาร์ดแวร์เลย ... นี่ไม่ใช่สิ่ง VM ...

ฉันอัปเดตผลลัพธ์

@Gael cryptsetupจะเร็วกว่าTrueCryptอัลกอริธึมการเข้ารหัสเดียวกันตั้งแต่TrueCryptทำงานภายใต้FUSE(ระบบไฟล์พื้นที่ผู้ใช้) ในขณะที่cryptsetupใช้ LUKS ซึ่งเป็นโมดูลเคอร์เนล ฉันพูดถึงเครื่องเสมือนราวกับว่าคุณกำลังเรียกใช้โปรแกรมอื่น ๆ ภายใต้โฮสต์ระบบปฏิบัติการของคุณ (แม้กระทั่งงานพื้นหลัง) มันจะส่งผลต่อผลลัพธ์ของการวัดประสิทธิภาพของคุณ
พัฒนา

1

เคอร์เนล Linux มีโมดูล Serpent ที่ปรับแต่ง SSE2 และ AVX เพื่อเร่งปริมาณงานแบบขนานได้ (เช่นการถอดรหัส CBC และ XTS enc & dec)

ประสิทธิภาพของงูในการถอดรหัส CBC และ XTS ที่โหลดโมดูลเหล่านั้นควรอยู่ในระดับใกล้เคียงกับซอฟต์แวร์ AES และ Twofish (เร็วขึ้นหรือช้าลงเล็กน้อยขึ้นอยู่กับรุ่น CPU ของคุณ)


0

โปรดทราบว่ารหัส SSE2 ที่รันโดยเคอร์เนลของผู้เยี่ยมชมใน VMs บางตัวช้ากว่าโฮสต์เคอร์เนลมาก ฉันมีประสบการณ์กับ Oracle VirtualBox ดังนั้นผลลัพธ์สำหรับ Serpent บน VM อาจไม่จำเป็นต้องสัมพันธ์กับประสิทธิภาพที่คาดหวังบนโฮสต์จริง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.