แสดงรายการวิธีการเข้ารหัสที่มีอยู่สำหรับ LUKS


10

ฉันกำลังค้นหาวิธีการเข้ารหัสที่ถูกต้องและยังคงทันสมัยของการเข้ารหัสฮาร์ดดิสก์ หลังจากการวิจัยบางอย่างฉันพบLUKSและตัดสินใจที่จะให้มันยิง ดังนั้นฉันจึงค้นหาตัวอย่างของวิธีการเข้ารหัส HDD อย่างถูกต้องเช่นนี้

cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/sda3

ส่วน - รหัสและ - แฮชของมันน่าสนใจมากที่สุดสำหรับฉันดังนั้นฉันจึงพยายามแจ้งให้ตัวเองทราบเกี่ยวกับการเข้ารหัสและแฮชต่างๆที่ใช้กับ LUKS โดยเฉพาะ ฉันไม่พบข้อมูลที่เป็นประโยชน์นอกเหนือจากการเปิดไฟล์ซึ่งแสดงรูปแบบการเข้ารหัสที่มีอยู่ในการจัดรูปแบบที่เป็นมิตรกับเครื่องสำหรับ Linux ที่ใช้อยู่ในปัจจุบัน แต่อย่างที่ฉันบอกแม้แต่ไฟล์นี้อาจหายไปอย่างสมบูรณ์แบบของวิธีการเข้ารหัสทั้งหมดนอกจากมันยากที่จะอ่านสำหรับคนที่ไม่ได้จัดการกับมันทุกวัน

คำถามของฉัน: มีการเต็มรูปแบบรายการยันต์ / hashes สำหรับการเข้ารหัส LUKS?

หนึ่งที่แสดงให้ฉันเห็นว่าฉันสามารถเลือก ... และอาจให้คำอธิบายสั้น ๆ ว่าอะไรคือความแตกต่างระหว่างวิธีที่แตกต่างกันเหล่านั้น


1
ฉันโหวตให้ปิดคำถามนี้เป็นหัวข้อนอกเรื่องเพราะมันเกี่ยวกับการใช้และการกำหนดค่า LUKS และเคอร์เนล Linux ไม่ใช่เกี่ยวกับการเข้ารหัสที่เครื่องมือเหล่านี้ใช้ มันจะอยู่ในหัวข้อUnix และ Linux ฉันตั้งค่าสถานะคำถามนี้เพื่อการโยกย้ายแล้วโปรดอย่าโพสต์ใหม่เว้นแต่จะถูกปิดโดยไม่ย้ายข้อมูล
Gilles 'หยุดความชั่วร้าย'

ฉันเลือกพื้นที่การเข้ารหัสโดยเฉพาะเพราะคำถามของฉันมุ่งตรงไปที่ยันต์และแฮช ฉันเอา "ทัวร์" สำหรับพื้นที่นี้และมันมีอยู่ใน "คำถามที่คุณควรถาม:" ช่อง ดูมันถ้าคุณต้องการ
Akito

นั่นเป็นเหตุผลที่ฉันไม่ได้ใส่คำถามใน Unix และ Linux เพราะมันจะปิดหัวข้อมี ....
Akito

ให้คำอธิบายสั้น ๆ ว่าอะไรคือความแตกต่างระหว่างวิธีที่แตกต่างกันเหล่านี้นี่เป็นเพียงส่วนหนึ่งของคำถามที่อยู่ในหัวข้อ อะไรคือความแตกต่างที่สำคัญระหว่าง AES และ Twofish? ดี AES ใช้เครือข่ายการเปลี่ยนแปลงการทดแทนในขณะที่ Twofish ใช้เครือข่าย Feistel จากข้อมูลนี้คุณควรเลือก AES อย่างชัดเจนเพราะไม่มีอะไรผิดปกติกับเครือข่าย Feistel ในหลักการ
DepaniDaniel

คำตอบ:


7

โดยพื้นฐานแล้วขึ้นอยู่กับเคอร์เนลของคุณดังนั้น " See / proc / crypto " ควรจะเป็น "คำตอบ" หน้า man cryptsetup กล่าวสิ่งนี้:

NOTES ON SUPPORTED CIPHERS, MODES, HASHES AND KEY SIZES

   The available combinations of ciphers, modes, hashes and key  sizes  depend
   on  kernel  support.  See /proc/crypto for a list of available options. You
   might need to load additional kernel crypto modules in order  to  get  more
   options.

   For  the  --hash option, if the crypto backend is libgcrypt, then all algo‐
   rithms supported by the gcrypt library are  available.   For  other  crypto
   backends some algorithms may be missing.

อย่างไรก็ตามฉัน/proc/cryptoไม่ได้พูดถึงพญานาคใด ๆ หรือ xts (aes) ดังนั้นฉันขอแนะนำให้ดูว่าcryptsetup benchmarkรายงานใดบ้าง(และมันจะแสดงความเร็ว (ram) ด้วย) ตัวอย่างเช่น:

$ cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1       292752 iterations per second
PBKDF2-sha256     221362 iterations per second
PBKDF2-sha512     142010 iterations per second
PBKDF2-ripemd160  277124 iterations per second
PBKDF2-whirlpool  155727 iterations per second
#  Algorithm | Key |  Encryption |  Decryption
     aes-cbc   128b   164.7 MiB/s   164.5 MiB/s
 serpent-cbc   128b   119.5 MiB/s   205.0 MiB/s
 twofish-cbc   128b   163.5 MiB/s   208.6 MiB/s
     aes-cbc   256b   148.4 MiB/s   147.9 MiB/s
 serpent-cbc   256b   128.1 MiB/s   205.3 MiB/s
 twofish-cbc   256b   202.3 MiB/s   213.1 MiB/s
     aes-xts   256b   165.4 MiB/s   145.3 MiB/s
 serpent-xts   256b   150.0 MiB/s   194.5 MiB/s
 twofish-xts   256b   206.4 MiB/s   206.9 MiB/s
     aes-xts   512b   149.4 MiB/s   147.5 MiB/s
 serpent-xts   512b   181.7 MiB/s   195.0 MiB/s
 twofish-xts   512b   207.1 MiB/s   208.6 MiB/s

แฮชเป็นสองสามบรรทัดแรก (sha1, sha256, sha512, ripemd160, วังวน) เลขศูนย์อยู่ภายใต้ส่วนหัวอัลกอริทึม

การดูว่าค่าเริ่มต้นคืออะไรให้ความคิดที่ดีว่าสิ่งใดที่ถือว่า "ดีมาก" เช่นกัน:

$ cryptsetup --help|tail -n 8
Default compiled-in key and passphrase parameters:
    Maximum keyfile size: 8192kB, Maximum interactive passphrase length 512 (characters)
Default PBKDF2 iteration time for LUKS: 1000 (ms)

Default compiled-in device cipher parameters:
    loop-AES: aes, Key 256 bits
    plain: aes-cbc-essiv:sha256, Key: 256 bits, Password hashing: ripemd160
    LUKS1: aes-xts-plain64, Key: 256 bits, LUKS header hashing: sha1, RNG: /dev/urandom

และการใช้คีย์ขนาดที่สูงกว่า (ด้วย--key-size) ควรจะแข็งแกร่งกว่านี้หากช้ากว่าเล็กน้อย

   --key-size, -s <bits>
          Sets  key  size in bits. The argument has to be a multiple of 8.
          The possible key-sizes are limited by the cipher and mode used.

          See /proc/crypto for more information.  Note  that  key-size  in
          /proc/crypto is stated in bytes.

2
นั่นคือสิ่งที่ฉันบ่นเกี่ยวกับ ... / proc / crypto นั้นอ่านไม่ได้สูงมากและไร้ประโยชน์ ยันต์บางอันมีสองเท่าในรายการและฉันไม่รู้ว่าทำไม
Akito

อาฉันไม่แน่ใจไม่ได้อยู่ในคำถาม แต่ก็เป็นเรื่องที่น่ากังวลแม้แต่การค้นหาเว็บเกี่ยวกับ / proc / crypto ก็ยังไม่เปิดเผยคำแนะนำที่ชัดเจนใด ๆ ฉันสังเกตเห็นความแตกต่างบางอย่างและฉันคิดว่า cryptsetup ใช้ block ciphers เท่านั้นสำหรับการเข้ารหัสบล็อกดิสก์ดังนั้นตัวพิมพ์ 'type: blkcipher' จึงดูสมเหตุสมผล แต่ฉันก็สังเกตเห็นว่าฉันไม่ได้พูดถึงพญานาคหรือ xts-aes ... แต่ฉันมีความคิดอื่นที่อาจจะดีกว่าฉันจะแก้ไขมันเป็นคำตอบ
Xen2050

2

ในการอ้างอิงถึงการทำงานของผู้ใช้ notdavidcronenberg: คำตอบเดียวที่ฉันพบคือในเอกสารLUKS On-Disk Format Specification (PDF)

ชื่อรหัสที่ถูกต้อง

โหมดตัวเลขที่ถูกต้อง

  • ecb เอาต์พุตตัวเลขจะถูกใช้โดยตรง
  • cbc-plainรหัสลับดำเนินการในโหมด CBC การเชื่อมโยง CBC ถูกตัดทุกภาคส่วนและเริ่มต้นใหม่ด้วยหมายเลขภาคเป็นเวกเตอร์เริ่มต้น (แปลงเป็น 32 บิตและเป็น Endian น้อย) โหมดนี้ถูกระบุใน [Fru05b], บทที่ 4
  • cbc-essiv:{hash}รหัสลับดำเนินการในโหมด ESSIV โดยใช้แฮชสำหรับสร้างคีย์ IV สำหรับรหัสเดิม ตัวอย่างเช่นเมื่อใช้ sha256 เป็นแฮชข้อมูลจำเพาะโหมดการเข้ารหัสคือ“ cbcessiv: sha256” ESSIV ถูกระบุใน [Fru05b], บทที่ 4
  • xts-plain64 plain64 เป็นเวกเตอร์เริ่มต้นธรรมดารุ่น 64 บิต

ข้อกำหนดแฮชที่ถูกต้อง

  • sha1 RFC 3174 - อัลกอริทึมแฮชที่ปลอดภัยของสหรัฐอเมริกา 1 (SHA1)
  • sha256 ตัวแปร SHA ตาม FIPS 180-2
  • sha512 ตัวแปร SHA ตาม FIPS 180-2
  • ripemd160 http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html

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