นอกเหนือจากกุญแจสาธารณะ: การเข้ารหัสเชิงฟังก์ชัน
ทำความเข้าใจแนวคิดของการเข้ารหัสเชิงฟังก์ชัน: การถอดรหัสจะแสดงเฉพาะผลลัพธ์ของฟังก์ชัน ไม่ใช่ข้อความต้นฉบับ
นอกเหนือจากกุญแจสาธารณะ: การเข้ารหัสเชิงฟังก์ชัน เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
ข้อจำกัดของการเข้ารหัสแบบดั้งเดิม
การเข้ารหัสกุญแจสาธารณะแบบดั้งเดิมใช้แบบจำลองง่าย ๆ คือเข้ารหัสด้วยกุญแจสาธารณะและถอดรหัสด้วยกุญแจส่วนตัวที่สอดคล้องกัน ผู้ถอดรหัสจะทราบข้อความต้นฉบับทั้งหมด แบบจำลองที่ได้ทั้งหมดหรือไม่ได้เลยนี้หยาบเกินไปสำหรับแอปพลิเคชันจำนวนมาก เช่น ฐานข้อมูลทางการแพทย์อาจต้องการอนุญาตให้แพทย์ทราบเพียงว่าผู้ป่วยมีภาวะเฉพาะหรือไม่ แทนที่จะเปิดเผยเวชระเบียนทั้งหมด การเข้ารหัสเชิงฟังก์ชันช่วยแก้ข้อจำกัดนี้
การเข้ารหัสตามตัวตน
การเข้ารหัสตามตัวตน (IBE) ซึ่ง Shamir เสนอในปี 1984 และ Boneh กับ Franklin สร้างขึ้นในปี 2001 อนุญาตให้ใช้สตริงระบุตัวตน เช่น ที่อยู่อีเมล ชื่อโดเมน หรือ ID พนักงาน เป็นกุญแจสาธารณะ หน่วยงานออกกุญแจที่เชื่อถือได้จะสร้างกุญแจส่วนตัวสำหรับตัวตนแต่ละรายการ IBE ไม่จำเป็นต้องใช้ใบรับรองกุญแจสาธารณะ และช่วยให้แจกจ่ายกุญแจได้ง่าย IBE เป็นรูปแบบที่ง่ายที่สุดของการเข้ารหัสเชิงฟังก์ชัน
นิยามการเข้ารหัสเชิงฟังก์ชัน
การเข้ารหัสเชิงฟังก์ชัน (FE) ซึ่ง Boneh, Sahai และ Waters ให้คำนิยามอย่างเป็นทางการในปี 2011 เป็นการขยายแนวคิดของ IBE ในโครงร่าง FE หน่วยงานออกกุญแจสามารถสร้างกุญแจฟังก์ชัน sk_f สำหรับฟังก์ชัน f ใดก็ได้ เมื่อมีการเข้ารหัส Enc(x) และกุญแจฟังก์ชัน sk_f ผู้ถอดรหัสสามารถคำนวณ f(x) ได้ แต่จะไม่ทราบสิ่งอื่นใดเกี่ยวกับ x นอกเหนือจากสิ่งที่ f(x) เปิดเผย ฟังก์ชัน f อาจเป็นฟังก์ชันใดก็ได้ที่คำนวณได้ภายในชุดฟังก์ชันที่โครงร่างรองรับ
FE สำหรับผลคูณภายใน
การเข้ารหัสเชิงฟังก์ชันสำหรับผลคูณภายในช่วยให้ผู้ถอดรหัสที่ถือ sk_y สามารถคำนวณผลคูณภายใน <x, y> จากการเข้ารหัสเวกเตอร์ x ได้ วิธีนี้ช่วยให้อนุมานด้วยการเรียนรู้ของเครื่องแบบรักษาความเป็นส่วนตัวได้ โดยเข้ารหัสเวกเตอร์คุณลักษณะ x ของผู้ใช้ มอบ sk_y สำหรับเวกเตอร์น้ำหนัก y ให้เจ้าของแบบจำลอง แล้วเจ้าของแบบจำลองจะทราบเพียงผลคูณจุด (คะแนนการทำนายดิบ) โดยไม่ทราบคุณลักษณะของผู้ใช้ มีโครงร่าง FE สำหรับผลคูณภายในที่ใช้งานได้จริงหลายแบบ (ABDALLA et al. 2016)
FE สำหรับการทดสอบความเท่ากัน
FE สำหรับการทดสอบความเท่ากันช่วยให้ฝ่ายหนึ่งตรวจสอบได้ว่าค่าที่เข้ารหัสตรงกับค่าเฉพาะ v หรือไม่ โดยทราบเพียงว่าความเท่ากันนั้นเป็นจริงหรือไม่ วิธีนี้ช่วยให้เกิดคำค้นฐานข้อมูลที่รักษาความเป็นส่วนตัว โดยแม่ข่ายเก็บระเบียนที่เข้ารหัสไว้ และผู้ใช้ค้นหาระเบียนที่ตรงกับค่าเฉพาะได้ โดยที่แม่ข่ายไม่ทราบว่าผู้ใช้กำลังค้นหาอะไร และไม่ทราบผลลัพธ์เกินกว่าคำตอบว่าตรงหรือไม่ตรง โครงสร้างที่ใช้งานได้จริงใช้การจับคู่แบบบิลิเนียร์
FE สำหรับวงจรทั่วไป
รูปแบบ FE ที่ทรงพลังที่สุดรองรับวงจรบูลีนหรือวงจรเลขคณิตใด ๆ เป็นฟังก์ชัน ผู้ถอดรหัสที่มี sk_f สำหรับฟังก์ชัน f ซึ่งคำนวณได้ในเวลาเชิงพหุนามใด ๆ สามารถคำนวณ f(x) จาก Enc(x) ได้ FE สำหรับวงจรทั่วไปถูกสร้างขึ้นในทางทฤษฎีโดย Garg, Gentry, Halevi, Raykova, Sahai และ Waters (2013) โดยใช้การแมปหลายเชิงเส้น แต่โครงสร้าง FE ทั่วไปที่มีอยู่ยังไม่เหมาะกับการใช้งานจริง เนื่องจากพึ่งพาสมมติฐานเกี่ยวกับการแมปหลายเชิงเส้นที่ไม่สมบูรณ์
การทำให้อำพรางแบบแยกแยะไม่ได้
การทำให้อำพรางแบบแยกแยะไม่ได้ (iO) เป็นโครงสร้างพื้นฐานทางการเข้ารหัสที่แข็งแกร่งที่สุดเท่าที่รู้จัก และมีความเกี่ยวข้องอย่างใกล้ชิดกับการเข้ารหัสเชิงฟังก์ชัน โครงร่าง iO รับวงจร C และสร้างเวอร์ชันที่ผ่านการทำให้อำพราง O(C) ซึ่งคำนวณฟังก์ชันเดียวกัน แต่ไม่เปิดเผยข้อมูลใด ๆ เกี่ยวกับ C นอกเหนือจากพฤติกรรมของข้อมูลขาเข้าและข้อมูลขาออก iO สามารถสร้างพื้นฐานทางการเข้ารหัสที่เป็นที่รู้จักส่วนใหญ่ได้ รวมถึง FE ทั่วไป มีโครงสร้างที่เป็นตัวเลือกจากปัญหาโครงข่ายอยู่ แต่ยังห่างไกลจากการใช้งานจริง
การเข้ารหัสตามแอตทริบิวต์ในฐานะกรณีเฉพาะ
การเข้ารหัสตามแอตทริบิวต์ (ABE) เป็นรูปแบบการเข้ารหัสเชิงฟังก์ชันที่สามารถนำไปใช้งานจริงได้ โดยฟังก์ชัน f จำกัดอยู่ที่การประเมินนโยบาย: f(x) = 1 หากเซตแอตทริบิวต์ x ตรงตามนโยบาย และเป็น 0 มิฉะนั้น ABE ช่วยให้ควบคุมการเข้าถึงได้อย่างละเอียด โดยสิทธิ์ในการถอดรหัสขึ้นอยู่กับแอตทริบิวต์ของผู้ใช้ ABE เป็นรูปแบบการเข้ารหัสเชิงฟังก์ชันที่ถูกนำไปใช้งานจริงมากที่สุด โดยมีการนำไปใช้ในพื้นที่จัดเก็บข้อมูลบนคลาวด์ ระบบสาธารณสุข และ IoT
แนวทางการสร้าง
ประวัติการสร้าง FE พัฒนาจากรูปแบบที่เรียบง่ายไปสู่รูปแบบที่ทรงพลัง: IBE (โบเนห์–แฟรงคลิน 2001) → FE สำหรับความเท่ากัน (หลากหลายผลงานในช่วงปี 2005–2010) → FE สำหรับผลคูณภายใน (ABDALLA 2016) → FE สำหรับวงจรที่มีความลึกจำกัด (อิงการแมปหลายเชิงเส้น, 2013) → FE ทั่วไป (คาดการณ์ว่าสร้างได้จาก iO) แต่ละขั้นมีความสามารถมากขึ้น ขณะเดียวกันก็ซับซ้อนและมีประสิทธิภาพลดลง การนำไปใช้งานจริงเลือกใช้รูปแบบที่ง่ายที่สุดซึ่งให้ความสามารถตามต้องการ
แบบจำลองความปลอดภัยของการเข้ารหัสเชิงฟังก์ชัน
ความปลอดภัยของ FE นิยามจากการที่ไม่สามารถแยกแยะข้อความเข้ารหัสของข้อความสองชุด x0 และ x1 ได้ แม้จะได้รับกุญแจฟังก์ชันสำหรับฟังก์ชัน f ใด ๆ ตราบใดที่ f(x0) = f(x1) สำหรับฟังก์ชันทั้งหมดที่มีการสอบถาม เงื่อนไขนี้ทำให้มั่นใจได้ว่าผู้ถอดรหัสเรียนรู้ได้เพียง f(x) และไม่ทราบข้อมูลอื่นใด มีระดับความปลอดภัยสองระดับ ได้แก่ ความปลอดภัยแบบเลือก (ฝ่ายตรงข้ามต้องกำหนดข้อความท้าทายก่อนเห็นกุญแจสาธารณะ) และความปลอดภัยแบบปรับตามสถานการณ์ (อิงการจำลองอย่างเต็มรูปแบบ)
ความท้าทายในการนำไปใช้งานจริง
FE ทั่วไปยังไม่สามารถนำไปใช้งานจริงได้ แต่ FE สำหรับผลคูณภายในและ ABE สามารถนำไปใช้งานได้ในปัจจุบัน ความท้าทายต่าง ๆ ได้แก่ ความจำเป็นต้องมีหน่วยงานออกกุญแจที่เชื่อถือได้ (จุดล้มเหลวเพียงจุดเดียว) ความซับซ้อนในการเพิกถอนกุญแจ ภาระด้านประสิทธิภาพจากการดำเนินการจับคู่ และการทำให้เป็นมาตรฐานที่ยังจำกัด แนวทางการวิจัยรวมถึง FE แบบหลายหน่วยงาน (ไม่มีหน่วยงานที่เชื่อถือได้เพียงแห่งเดียว) การสร้างกุญแจแบบกระจายศูนย์ และ FE สำหรับคลาสฟังก์ชันที่มีขนาดใหญ่ขึ้นโดยไม่ใช้การแมปหลายเชิงเส้น
แบบทดสอบนิยามการเข้ารหัสเชิงฟังก์ชัน
อะไรคือความแตกต่างระหว่างการเข้ารหัสเชิงฟังก์ชันกับการเข้ารหัสด้วยกุญแจสาธารณะแบบดั้งเดิม
ทบทวนการเข้ารหัสเชิงฟังก์ชัน
การเข้ารหัสเชิงฟังก์ชัน (โบเนห์–ซาไฮ–วอเทอร์ส 2011) เป็นการขยาย IBE โดยอนุญาตให้มีกุญแจฟังก์ชัน sk_f ซึ่งช่วยให้คำนวณ f(x) จาก Enc(x) ได้โดยไม่ต้องเรียนรู้ x ทั้งหมด มีโครงสร้างที่ใช้งานได้จริงสำหรับ FE ของผลคูณภายใน (การอนุมาน ML แบบรักษาความเป็นส่วนตัว) และการทดสอบความเท่ากัน ABE เป็นกรณีเฉพาะที่นำไปใช้งานจริงสำหรับการประเมินนโยบายการเข้าถึง FE สำหรับวงจรทั่วไปต้องใช้การแมปหลายเชิงเส้น ซึ่งไม่เหมาะกับการใช้งานจริง iO เป็นโครงสร้างพื้นฐานที่เกี่ยวข้องซึ่งแข็งแกร่งที่สุด ความท้าทายสำคัญคือการเปลี่ยนจากทฤษฎีไปสู่การใช้งานที่มีประสิทธิภาพ
คำถามที่พบบ่อย
บทเรียน “นอกเหนือจากกุญแจสาธารณะ: การเข้ารหัสเชิงฟังก์ชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “นอกเหนือจากกุญแจสาธารณะ: การเข้ารหัสเชิงฟังก์ชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “นอกเหนือจากกุญแจสาธารณะ: การเข้ารหัสเชิงฟังก์ชัน”
ทำความเข้าใจแนวคิดของการเข้ารหัสเชิงฟังก์ชัน: การถอดรหัสจะแสดงเฉพาะผลลัพธ์ของฟังก์ชัน ไม่ใช่ข้อความต้นฉบับ คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “นอกเหนือจากกุญแจสาธารณะ: การเข้ารหัสเชิงฟังก์ชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม
ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- นอกเหนือจากกุญแจสาธารณะ: การเข้ารหัสเชิงฟังก์ชัน
- ABE ตามนโยบายข้อความเข้ารหัส (CP-ABE)
- ABE ตามนโยบายกุญแจ (KP-ABE) และการเปรียบเทียบ
- การประยุกต์ใช้ ABE ในทางปฏิบัติ