Yubikey การรับรองความถูกต้องด้วยสองปัจจัยการเข้ารหัสดิสก์เต็มรูปแบบผ่าน LUKS


27

ฉันเพิ่งได้รับ Yubikey Neo - อุปกรณ์การรับรองความถูกต้องของฮาร์ดแวร์ตัวที่สอง ส่วนใหญ่มีไว้สำหรับใช้กับรหัสผ่านแบบครั้งเดียวและโปรโตคอล U2F ที่เกิดขึ้นใหม่ แต่เนื่องจาก Yubikey เวอร์ชัน 2 นั้นยังรองรับการตรวจสอบความถูกต้องตอบสนองความท้าทาย HMAC-SHA1 HMAC-SHA1 รวมคีย์ลับ (เก็บไว้ใน Yubikey) และรวมสิ่งนี้กับวลีรหัสผ่านเพื่อสร้างการตอบกลับ

ฉันจะรวม Yubikey กับการตั้งค่า Ubuntu FDE ของฉันเพื่อใช้ 2FA กับฮาร์ดไดรฟ์ที่เข้ารหัสของฉันได้อย่างไร

คำตอบ:


30

กลุ่มที่ชื่อว่าPrivacyIdeaได้สร้างแพ็คเกจเล็ก ๆ เพื่อเพิ่มชุดคำตอบการตอบสนองต่อความท้าทายHMAC-SHA1ให้กับ initramfs ซึ่งหมายความว่าอูบุนตูสามารถสอบถามคุณเกี่ยวกับความท้าทายที่จะส่งผ่านไปยัง Yubikey จากนั้นใช้การตอบสนองเพื่อปลดล็อกระดับเสียง LUKS ส่วนใหญ่ฉันทำตามคำแนะนำเหล่านี้พร้อมกับความคิดเห็นที่เพิ่มเข้ามา กระบวนการนี้ง่ายมากที่จะทำ

ฉันได้ทดสอบสิ่งนี้บน Ubuntu 14.04, 16.04 และ 18.04; ใช้ Yubikey Neo มันควรจะทำงานร่วมกับ Yubikey ล่าสุดกับเฟิร์มแวร์ 2.0+ และ Ubuntu ทุกรุ่นหลังจาก 14.04 ฉันยังได้ทดสอบ Ubuntu 19.04 กับ Yubikey 5C จำเป็นต้องใช้งานเพิ่มเติมบางอย่าง แต่สามารถทำงานได้ นอกจากนี้ยังอาจมีฮาร์ดแวร์อื่น ๆ ของอุปกรณ์ตอบสนองการท้าทาย HMAC-SHA1 ที่ใช้งานได้ แต่ฉันไม่ทราบว่ามีสิ่งใดอยู่ ตรวจสอบให้แน่ใจเสมอว่าคุณมีข้อมูลสำรองของคุณก่อนที่จะดำเนินการต่อ - ไม่ควรมีปัญหาใด ๆ ที่นี่ แต่มีโอกาสเสมอที่จะทำลายทุกสิ่งในคอมพิวเตอร์ของคุณ คำแนะนำเหล่านี้ไม่มีการรับประกัน

อัปเดต:ตั้งแต่ Ubuntu 16.04 แพคเกจที่จำเป็นอยู่ในที่เก็บหลักและไม่จำเป็นต้องมี PPA

เพิ่มความคิดเห็นหากคุณมีคำถาม!


0. ข้อกำหนดเบื้องต้น

เพื่อให้สามารถใช้งานได้คุณจะต้องติดตั้งและใช้งานการเข้ารหัสดิสก์เต็มรูปแบบ LUKS คุณสามารถทำได้โดยเลือกตัวเลือกที่เหมาะสมเมื่อติดตั้ง Ubuntu เพื่อความปลอดภัยสูงสุดคุณควรมีวลีรหัสผ่านที่เข้มงวดมากที่เลือกระหว่างการติดตั้ง หากข้อความรหัสผ่านของคุณไม่เป็นรอยขีดข่วนคุณควรเปลี่ยนเป็นวลีที่ดีกว่าก่อนดำเนินการต่อ ( คำแนะนำเพิ่มเติมโดยละเอียดที่นี่ )

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


1. เพิ่ม PrivacyIdea PPA และติดตั้งแพ็คเกจ

บน Ubuntu 14.04

เปิดเทอร์มินัลและเรียกใช้คำสั่งต่อไปนี้:

sudo add-apt-repository ppa:privacyidea/privacyidea 

กด Enter เมื่อได้รับแจ้งจากนั้นเรียกใช้:

sudo apt-get update

จากนั้นติดตั้งแพ็คเกจด้วย:

sudo apt-get install yubikey-luks

บน Ubuntu 16.04, 18.04

ไม่จำเป็นต้องมี PPA คุณสามารถติดตั้งแพ็คเกจด้วย:

sudo apt-get install yubikey-luks

บน Ubuntu 19.04

ดูคำตอบนี้สำหรับวิธีสร้างyubikey-luksแพ็คเกจจากซอร์สโค้ดสำหรับ Ubuntu 19.04


2. ติดตั้งซอฟต์แวร์ Yubikey

หากคุณกำลังใช้ฟังก์ชั่น HMAC-SHA1 ของ Yubikey คุณสามารถข้ามส่วนนี้ได้ มันจะลบการกำหนดค่าใด ๆ ในช่องเสียบ Yubikey ที่สองดังนั้นอย่าทำตามขั้นตอนนี้หากคุณใช้ HMAC-SHA1 เพื่อจุดประสงค์อื่นกับ Yubikey นี้

คุณจะต้องตั้งค่า Yubikey ของคุณให้ทำงานกับ Ubuntu ได้โดยติดตั้งซอฟต์แวร์ที่ต้องการทั้งจาก Yubico PPAบน Ubuntu 14.04 หรือจากที่เก็บหลักของ Ubuntu ใน 16.04 และใหม่กว่า

บน Ubuntu 14.04

หากคุณยังไม่เคยทำมาก่อนให้เพิ่ม PPA และติดตั้งแพ็คเกจด้วย:

sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt-get install yubikey-personalization

บน Ubuntu 16.04, 18.04 (และใหม่กว่า)

sudo apt-get install yubikey-personalization

3. เริ่มต้น Yubikey Slot สำหรับ HMAC-SHA1

ตอนนี้เราต้องตั้งโปรแกรมสล็อตที่สองของ Yubikey ด้วยการกำหนดค่า HMAC-SHA1 การดำเนินการนี้จะลบการกำหนดค่าสล็อตก่อนหน้าของคุณซึ่งเป็นค่าว่าง อีกครั้งถ้าคุณใช้ HMAC-SHA1 เพื่อสิ่งอื่นไม่ต้องใช้คำสั่งนี้ - มันจะลบการกำหนดค่าของคุณ คุณสามารถใช้รหัสลับเดียวกันได้อย่างปลอดภัยภายใน Yubikey สำหรับการตั้งค่า LUKS นี้สำหรับการใช้งานอื่น ๆ ของคุณ (ตัวอย่างเช่นกับคอมพิวเตอร์เครื่องอื่นที่ใช้ LUKS + Yubikey)

ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

เทอร์มินัลจะแสดงข้อมูลบางอย่างเกี่ยวกับการเปลี่ยนแปลงที่เกิดขึ้น คุณไม่จำเป็นต้องจดบันทึกลงไป แต่จะแสดงคีย์ลับที่ใช้โดย Yubikey ในอัลกอริทึม HMAC-SHA1 เพื่อคำนวณการตอบสนองเมื่อได้รับการท้าทาย


4. ลงทะเบียน Yubikey เป็น LUKS Slot

ตอนนี้เราจะแก้ไขการกำหนดค่า LUKS เพื่อผนวกการตอบสนองจาก Yubikey เป็นหนึ่งในคีย์ถอดรหัส

พาร์ติชั่นที่เราต้องระบุนั้นขึ้นอยู่กับว่าคุณใช้ BIOS หรือ UEFI เพื่อบู๊ตเครื่อง สำหรับ BIOS ปริมาณการเข้ารหัสที่/dev/sda5เป็นค่าเริ่มต้นสำหรับ UEFI /dev/sda3มันอยู่ที่ คุณสามารถตรวจสอบโดยการเปิดdisksยูทิลิตี้และยืนยันเส้นทางของพาร์ทิชัน - มันก็ควรจะเป็นหรือsda3 หมายเหตุ:สำหรับคอมพิวเตอร์รุ่นใหม่ที่มีดิสก์ NVMe เส้นทางจะมีลักษณะดังนี้sda5/dev/nvme0n1p3

รันสิ่งนี้ในเทอร์มินัล:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7

สิ่งนี้จะเขียนลงในช่อง 7 ของการกำหนดค่า LUKS ทำตามคำแนะนำในโปรแกรมติดตั้ง

ถ้าอย่างนั้นคุณก็ทำได้หมด! คุณควรจะสามารถรีบูตเครื่องคอมพิวเตอร์ของคุณและหากใส่ Yubikey ของคุณแล้วคุณสามารถพิมพ์รหัสผ่านการท้าทายและใช้ Yubikey เป็นปัจจัยที่สองเพื่อปลดล็อกพาร์ติชัน LUKS และบูตระบบ เมื่อคุณถอดรหัสฮาร์ดไดรฟ์แล้วคุณสามารถลบ Yubikey ได้

หากคุณสูญเสีย Yubikey คุณยังสามารถป้อนข้อความรหัสผ่าน (หวังว่าจะยาวมาก) เพื่อถอดรหัสฮาร์ดไดรฟ์จากนั้นคุณสามารถทำตามขั้นตอนนี้อีกครั้งเพื่อลงทะเบียน Yubikey ใหม่


การเปลี่ยนข้อความรหัสผ่านความท้าทายการเข้ารหัส

การเปลี่ยนรหัสผ่านในภายหลังนั้นค่อนข้างง่ายเพียงแค่ใช้คำสั่งนี้เพื่อรีเซ็ตรหัสลับ ไม่จำเป็นต้องรีเซ็ตคีย์ลับทั้งหมด แต่จะไม่เจ็บ โปรดจำไว้ว่าสิ่งนี้จะทำลายรหัสลับก่อนหน้าอย่าทำเช่นนี้หากคุณใช้ HMAC-SHA1 เพื่อสิ่งอื่นใดกับ Yubikey นี้ (ตัวอย่างเช่นกับคอมพิวเตอร์เครื่องอื่นที่ใช้ LUKS + Yubikey)

 ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

จากนั้นคล้ายกับขั้นตอนที่ 4ด้านบนเพื่อลงทะเบียนรหัสผ่านใหม่ลงในช่องเสียบ LUKS ยกเว้นเลือกที่จะล้างข้อมูลในช่อง 7 ด้วยคำสั่งนี้:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c

เมื่อได้รับแจ้งให้Enter any remaining passphraseใช้ข้อความรหัสผ่านสำรองของคุณไม่ใช่รหัสผ่านสำหรับ Yubikey จากนั้นป้อนข้อความรหัสผ่านสำหรับการท้าทาย Yubikey ใหม่สองครั้งจากนั้นในที่สุดคุณจะต้องป้อนข้อความรหัสผ่านการสำรองข้อมูลหนึ่งครั้งล่าสุด

ตอนนี้ข้อความรหัสผ่านสำหรับการท้าทาย Yubikey เก่าของคุณได้ถูกลบออกและมีเพียงอันใหม่ของคุณเท่านั้นที่จะถอดรหัสฮาร์ดไดรฟ์ ข้อความรหัสผ่านการสำรองข้อมูลก่อนหน้าของคุณจะยังคงเหมือนเดิม คุณสามารถเปลี่ยนรหัสผ่านสำหรับการว่าด้วยการเชื่อมโยงต่อไปในขั้นตอนที่ 0


หมายเหตุเกี่ยวกับผลกระทบด้านความปลอดภัย

การเพิ่ม Yubikey จะเพิ่มระดับความปลอดภัยให้กับระบบของคุณ - บางคนต้องรู้ทั้งข้อความรหัสผ่านที่ท้าทายและให้ Yubikey ของคุณสามารถปลดล็อกฮาร์ดไดรฟ์ของคุณ (หรือค้นหาข้อความรหัสผ่านเริ่มต้นซึ่งตอนนี้คุณใช้เป็นข้อมูลสำรอง) . อย่างไรก็ตามเป็นไปได้ในทางเทคนิคที่ผู้โจมตีจะถอดรหัสฮาร์ดไดรฟ์หากพวกเขารู้ข้อความรหัสผ่านที่ท้าทาย (เช่น "การท่องไหล่" ขณะที่คุณพิมพ์) และสามารถเข้าถึง Yubikey ได้ในเวลาสั้น ๆ การใช้วลีรหัสผ่านที่ท้าทายพวกเขาสามารถได้รับการตอบสนองจาก Yubikey และเก็บไว้แล้วใช้มันเพื่อถอดรหัสฮาร์ดไดรฟ์ได้ตลอดเวลาโดยไม่มี Yubikey หรืออีกครั้งหากผู้โจมตีหรือมัลแวร์รู้วลีรหัสผ่านของคุณและสามารถเรียกใช้รหัสบนเครื่องที่เชื่อมต่อกับ Yubikey ของพวกเขาพวกเขาก็สามารถท้าทายและเก็บการตอบสนองได้ ดังนั้นจึงเป็นเรื่องสำคัญอย่างยิ่งที่จะต้องระมัดระวังเมื่อเข้าสู่ข้อความรหัสผ่านที่ท้าทายของคุณและเพื่อให้แน่ใจว่าคุณมี Yubikey อยู่ในที่ปลอดภัยเสมอ คุณควรเสียบเข้ากับเครื่องที่คุณไว้ใจเท่านั้น หากคุณสูญเสียการติดตาม Yubikey ของคุณและสงสัยว่ามีผู้อื่นกำลังใช้งานอยู่เพื่อพยายามเรียนรู้คีย์ถอดรหัสให้ทำตามขั้นตอนที่ 2 และ 3 อีกครั้งเพื่อรีเซ็ตคีย์ลับภายใน Yubikey และเลือกข้อความรหัสผ่านสำหรับการท้าทายใหม่ โปรดทราบว่าหากฝ่ายตรงข้ามได้จัดการเรียนรู้วลีรหัสผ่านของคุณ (การตอบสนอง HMAC-SHA1 จาก Yubikey หรือการสำรองข้อมูลของคุณ) พวกเขาสามารถทำการสำรองคีย์หลักของ LUKS แล้วใช้เพื่อถอดรหัสฮาร์ดไดรฟ์ของคุณแม้ว่า คุณเปลี่ยนข้อความรหัสผ่านในอนาคต และเพื่อให้แน่ใจว่าคุณมี Yubikey อยู่เสมอในสถานที่ปลอดภัย คุณควรเสียบเข้ากับเครื่องที่คุณไว้ใจเท่านั้น หากคุณสูญเสียการติดตาม Yubikey ของคุณและสงสัยว่ามีผู้อื่นกำลังใช้งานอยู่เพื่อพยายามเรียนรู้คีย์ถอดรหัสให้ทำตามขั้นตอนที่ 2 และ 3 อีกครั้งเพื่อรีเซ็ตคีย์ลับภายใน Yubikey และเลือกข้อความรหัสผ่านสำหรับการท้าทายใหม่ โปรดทราบว่าหากฝ่ายตรงข้ามได้จัดการเรียนรู้วลีรหัสผ่านของคุณ (การตอบสนอง HMAC-SHA1 จาก Yubikey หรือการสำรองข้อมูลของคุณ) พวกเขาสามารถทำการสำรองคีย์หลักของ LUKS แล้วใช้เพื่อถอดรหัสฮาร์ดไดรฟ์ของคุณแม้ว่า คุณเปลี่ยนข้อความรหัสผ่านในอนาคต และเพื่อให้แน่ใจว่าคุณมี Yubikey อยู่เสมอในสถานที่ปลอดภัย คุณควรเสียบเข้ากับเครื่องที่คุณไว้ใจเท่านั้น หากคุณสูญเสียการติดตาม Yubikey ของคุณและสงสัยว่ามีใครบางคนอาจใช้มันเพื่อพยายามเรียนรู้คีย์ถอดรหัสให้ทำตามขั้นตอนที่ 2 และ 3 อีกครั้งเพื่อรีเซ็ตคีย์ลับภายใน Yubikey และเลือกข้อความรหัสผ่านสำหรับการท้าทายใหม่ โปรดทราบว่าหากฝ่ายตรงข้ามจัดการเพื่อเรียนรู้วลีรหัสผ่านของคุณ (ตอบสนอง HMAC-SHA1 จาก Yubikey หรือการสำรองข้อมูลของคุณ) พวกเขาสามารถทำการสำรองคีย์หลักของ LUKS แล้วใช้เพื่อถอดรหัสฮาร์ดไดรฟ์ของคุณแม้ว่า คุณเปลี่ยนข้อความรหัสผ่านในอนาคต ทำขั้นตอนที่ 2 และ 3 อีกครั้งเพื่อรีเซ็ตรหัสลับภายใน Yubikey และเลือกข้อความรหัสผ่านใหม่ที่มีความท้าทาย โปรดทราบว่าหากฝ่ายตรงข้ามจัดการเพื่อเรียนรู้วลีรหัสผ่านของคุณ (ตอบสนอง HMAC-SHA1 จาก Yubikey หรือการสำรองข้อมูลของคุณ) พวกเขาสามารถทำการสำรองคีย์หลักของ LUKS แล้วใช้เพื่อถอดรหัสฮาร์ดไดรฟ์ของคุณแม้ว่า คุณเปลี่ยนข้อความรหัสผ่านในอนาคต ทำขั้นตอนที่ 2 และ 3 อีกครั้งเพื่อรีเซ็ตรหัสลับภายใน Yubikey และเลือกข้อความรหัสผ่านใหม่ที่มีความท้าทาย โปรดทราบว่าหากฝ่ายตรงข้ามได้จัดการเรียนรู้วลีรหัสผ่านของคุณ (การตอบสนอง HMAC-SHA1 จาก Yubikey หรือการสำรองข้อมูลของคุณ) พวกเขาสามารถทำการสำรองคีย์หลักของ LUKS แล้วใช้เพื่อถอดรหัสฮาร์ดไดรฟ์ของคุณแม้ว่า คุณเปลี่ยนข้อความรหัสผ่านในอนาคตman page สำหรับ cryptsetupอธิบายสิ่งนี้ดูที่ส่วนluksHeaderBackup หากคุณสงสัยว่าเกิดเหตุการณ์นี้ขึ้นคุณจะต้องสร้างวอลลุ่มใหม่ทั้งหมดเพื่อปกป้องข้อมูลของคุณ


อัปเดต:ฉันได้ลองแล้วด้วย 15.04 ดูเหมือนว่า PPA ไม่มีโครงสร้างของแพ็คเกจที่ต้องการดังนั้นฉันต้องเปลี่ยนบรรทัด DEB ใน Software Sources เพื่อใช้ที่เก็บ "trusty" แทน "vivid " หลังจากทำการเปลี่ยนแปลงการตั้งค่า LUKS + Yubikey ของฉันตอนนี้ใช้งานได้ 15.04
seanlano

4
อย่าใช้ repo privacyidea อีกต่อไป! แพ็คเกจนี้บรรจุในแพ็คเกจ debug!
cornelinux

1
มีวิธีหลีกเลี่ยงการเข้าสู่ระบบโดยไม่ต้อง yubikey: เปลี่ยน luks passphrase ทุกครั้งที่ผู้ใช้ล็อกอินมีการใช้งาน Gentoo ที่นี่: github.com/flowolf/initramfs_ykfdeสามารถปรับใช้กับ Ubuntu ได้ในเวลาอันสั้น
Unnamed_1

1
ฉันจะเดาว่ากระบวนการเดียวกันนี้ใช้ได้กับรุ่น 18.04 LTS ใหม่หรือไม่
Mark Veenstra

2
ฉันได้ลองกับ Ubuntu 18.04 และใช้งานได้ดี
jetole

0

อัปเดตสำหรับ Ubuntu 19.04:

ดูเหมือนว่าใน Ubuntu 19.04 (และอาจเป็น 18.10 ฉันไม่ได้ลองรุ่นนั้น) cryptsetupมีการเปลี่ยนแปลงมากพอที่จะทำลายวิธีyubikey-luksการทำงานที่เคยทำ การกระทำนี้จากที่เก็บอัปสตรีมดูเหมือนว่าจะใช้การแก้ไข แต่ดูเหมือนว่าที่เก็บข้อมูลดั้งเดิมจะไม่ได้รับการอัปเดตตั้งแต่ตุลาคม 2561 ฉันพบทางแยกของ repo นี้ซึ่งมีการแก้ไข ตั้งค่าและจัดการเพื่อสร้างแพ็คเกจที่ใช้งานได้กับ 19.04

เนื่องจากฉันไม่พบบิวด์ที่มีอยู่ของ fork ที่อัปเดตแล้ววิธีการyubikey-luksทำงานเกี่ยวข้องกับการรับซอร์สโค้ดและสร้างแพ็คเกจ DEB ในเครื่องจากนั้นจึงติดตั้ง

ทำตามขั้นตอนในคำตอบก่อนหน้าของฉันยกเว้นแทนที่ขั้นตอนที่ 1 ด้วยด้านล่าง:


1. ดึงข้อมูลซอร์ส yubikey-luks สร้างและติดตั้งแพคเกจ

ติดตั้ง build dependencies ด้วย:

sudo apt install dh-exec devscripts expect yubikey-personalization

จากนั้นดาวน์โหลดและแตกที่เก็บถาวรต้นฉบับ:

mkdir ~/tmp
cd ~/tmp
wget -O yubikey-luks.zip https://github.com/thuandt/yubikey-luks/archive/master.zip
unzip yubikey-luks.zip
cd yubikey-luks-*

สร้างแพ็คเกจด้วย:

make builddeb NO_SIGN=1

จากนั้นติดตั้ง:

sudo dpkg -i DEBUILD/yubikey-luks_*.deb

จากนั้นทำตามขั้นตอนที่เหลือต่อในคำตอบแรกของฉัน

หวังว่าภายใน 19.10 เวอร์ชันของyubikey-luksไฟล์เก็บถาวรหลักของ Ubuntu สามารถอัปเดตได้ดังนั้นไม่จำเป็นต้องสร้างด้วยตนเอง

เป็นโบนัส, /etc/ykluks.cfgรุ่นใหม่มีการตั้งค่าไฟล์ซึ่งสามารถพบได้ที่ ข้อความที่แสดงในการบูทสามารถกำหนดค่าในไฟล์นี้

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