Zero-Knowledge Encryption คืออะไร? คู่มือฉบับง่าย

Zero-Knowledge Encryption คืออะไร? คู่มือฉบับง่าย

Zero-knowledge encryption หมายความว่า provider ไม่สามารถเข้าถึงข้อมูลของคุณได้

Zero-knowledge encryption คือสถาปัตยกรรม cryptographic ที่ service provider ไม่สามารถเข้าถึงข้อมูลผู้ใช้ได้เนื่องจาก encryption key ถูก derive และเก็บไว้เฉพาะบนอุปกรณ์ของผู้ใช้เท่านั้น และไม่เคยถูกส่งไปยังเซิร์ฟเวอร์ของ provider ต่างจากการเข้ารหัสบนคลาวด์มาตรฐานที่ provider ถือ key zero-knowledge encryption หมายความว่าแม้จะมีคำสั่งศาล การ breach ข้อมูล หรือพนักงานที่ไม่ซื่อสัตย์ provider ก็ไม่มีอะไรที่จะมอบให้

Zero-Knowledge Encryption ทำงานอย่างไร

อุปมาที่ง่ายที่สุด: ตู้เซฟในโรงแรมที่มีเพียงคุณเท่านั้นที่ตั้ง combination และโรงแรมไม่เคยรู้ หากคุณลืม combination โรงแรมไม่สามารถเปิดตู้เซฟให้คุณได้ นั่นไม่ใช่ข้อบกพร่องในการออกแบบ นั่นคือการออกแบบ

ในทางเทคนิค zero-knowledge encryption ทำงานผ่านสามขั้นตอน:

  1. Key derivation บนอุปกรณ์ ผู้ใช้ให้ credential (รหัสผ่าน passphrase หรือ pattern) Key derivation function (โดยทั่วไปคือ PBKDF2 หรือ Argon2) รวม credential นี้กับ cryptographic salt ที่ไม่ซ้ำกันเพื่อสร้าง encryption key ซึ่งเกิดขึ้นทั้งหมดบนอุปกรณ์ของผู้ใช้

  2. การเข้ารหัสก่อนการส่ง ข้อมูลทั้งหมดถูกเข้ารหัสบนอุปกรณ์โดยใช้ derived key ก่อนที่จะออกจากอุปกรณ์ไปยัง cloud storage หรือการสำรองข้อมูล ciphertext ที่เข้ารหัสแล้วคือสิ่งที่ถูก upload

  3. Provider ไม่เคยเห็น key Encryption key มีอยู่เฉพาะในหน่วยความจำของอุปกรณ์ระหว่างการใช้งาน ไม่เคยถูกส่งไปยังเซิร์ฟเวอร์ของ provider Provider เก็บ encrypted blobs ที่แยกแยะไม่ได้จากข้อมูลสุ่ม

Zero-Knowledge Encryption เทียบกับการเข้ารหัสประเภทอื่น

ประเภท ใครถือ Key Provider อ่านข้อมูลได้ รอดจาก Provider Breach ตัวอย่าง
ไม่มีการเข้ารหัสN/Aใช่ไม่Dropbox (tier มาตรฐาน)
การเข้ารหัสระหว่างส่ง (TLS)Providerใช่ (ขณะพักบนเซิร์ฟเวอร์)ไม่Google Photos
Server-side encryption ขณะพักProviderใช่ (ถือ decryption key)บางส่วนiCloud (มาตรฐาน)
Zero-knowledge encryptionผู้ใช้เท่านั้นไม่ เป็นไปไม่ได้ทางคณิตศาสตร์ใช่Signal, Proton Mail, Vaultaire

Zero-Knowledge Encryption สำคัญอย่างไร

การ breach ข้อมูลเปิดเผยบันทึกหลายพันล้านรายการต่อปี เมื่อ provider ที่ถือ encryption key ถูก breach ผู้โจมตีอาจได้รับทั้งข้อมูลที่เข้ารหัสและ key เพื่อถอดรหัส สถาปัตยกรรม zero-knowledge ขจัดความเสี่ยงนี้โดยสมบูรณ์

หน่วยงานรัฐบาลในหลายเขตอำนาจศาลสามารถบังคับให้ provider มอบข้อมูลที่จัดเก็บได้ หาก provider ถือ encryption key พวกเขาต้องปฏิบัติตาม ภายใต้สถาปัตยกรรม zero-knowledge การตอบสนองของ provider ต่อ subpoena คือ encrypted blob ที่ไร้ประโยชน์หากไม่มี credential ของผู้ใช้

Vaultaire ใช้ Zero-Knowledge Encryption อย่างไร

Vaultaire คือแอป vault สำหรับ iPhone ที่สร้างบนสถาปัตยกรรม zero-knowledge

Key derivation ผู้ใช้วาด pattern บนกริด 5x5 ของ 25 จุด ลำดับของจุดตามลำดับถูก feed เข้า PBKDF2 with HMAC-SHA512 และ cryptographic salt ที่ไม่ซ้ำกันต่อ vault output คือ 256-bit AES encryption key Pattern ไม่เคยถูกเก็บบนอุปกรณ์

การเข้ารหัสไฟล์ ไฟล์ที่ import แต่ละไฟล์ถูกเข้ารหัสด้วย AES-256-GCM โดยใช้ derived key และ initialization vector (IV) ที่สร้างแบบสุ่มที่ไม่ซ้ำกันสำหรับไฟล์นั้น ไฟล์ที่เหมือนกันให้ ciphertext ที่ต่างกันเพราะ IV ต่างกัน

ไม่มี vault registry ไม่มี database ที่แสดง vault, vault names หรือ vault counts Pattern ทุก pattern เปิด vault ที่ต่างกัน แอปเองไม่สามารถระบุได้ว่ามี vault กี่ vault อยู่ ดูสถาปัตยกรรมความปลอดภัยฉบับเต็ม

วิธีบอกว่าแอปใช้ Zero-Knowledge Encryption จริงหรือไม่

สามการทดสอบที่ใช้เวลาไม่ถึงนาที:

  1. การทดสอบ forgot-password ถ้าแอปสามารถ reset รหัสผ่านผ่านอีเมลและข้อมูลของคุณปรากฏขึ้น แอปถือ encryption key ของคุณ ไม่ใช่ zero-knowledge
  2. การทดสอบ new-device ถ้าคุณลงชื่อเข้าใช้บนอุปกรณ์ใหม่และข้อมูลปรากฏโดยไม่ต้องโอน key หรือป้อน recovery phrase เซิร์ฟเวอร์มี key ของคุณ ไม่ใช่ zero-knowledge
  3. การทดสอบ account ถ้าแอปต้องการอีเมลหรือหมายเลขโทรศัพท์ provider มีลิงก์ระหว่างตัวตนของคุณและข้อมูลของคุณ

แอปที่ผ่านทั้งสาม: Signal, Proton Mail, Standard Notes, Vaultaire

คำถามที่พบบ่อย

Zero-knowledge encryption เหมือนกับ end-to-end encryption หรือไม่?

ทั้งสองมีความทับซ้อนกันแต่ไม่เหมือนกัน End-to-end encryption (E2EE) หมายความว่าข้อมูลถูกเข้ารหัสบนอุปกรณ์ของผู้ส่งและถอดรหัสเฉพาะบนอุปกรณ์ของผู้รับ Zero-knowledge encryption หมายความว่า provider ไม่สามารถเข้าถึงข้อมูลได้ Zero-knowledge encryption เป็น standard ที่เข้มงวดกว่า

จะเกิดอะไรขึ้นถ้าฉันลืมรหัสผ่านด้วย zero-knowledge encryption?

ข้อมูลของคุณจะไม่สามารถเข้าถึงได้อย่างถาวร ไม่มี master key ไม่มี backdoor และไม่มีกระบวนการกู้คืนที่ใช้ได้โดยไม่มี recovery phrase ที่เก็บแยกต่างหาก แอป zero-knowledge บางแอป (รวมถึง Vaultaire) สร้าง recovery phrase เมื่อสร้าง vault ที่สามารถ regenerate encryption key ได้หากสูญเสีย credential หลัก

Zero-knowledge encryption ช้ากว่าการเข้ารหัสปกติหรือไม่?

การดำเนินการเข้ารหัสและถอดรหัสเหมือนกัน AES-256-GCM ทำงานด้วยความเร็วเดียวกันโดยไม่คำนึงว่าใครถือ key ต้นทุนเพิ่มเติมเดียวคือ key derivation: การรัน PBKDF2 ด้วย hundreds of thousands of iterations ใช้เวลาประมาณ 0.5-2 วินาทีบน iPhone ที่ทันสมัย ซึ่งเกิดขึ้นหนึ่งครั้งเมื่อ unlock vault ไม่ใช่ต่อไฟล์

สรุป

Zero-knowledge encryption คือสถาปัตยกรรมที่ provider ไม่สามารถเข้าถึงข้อมูลผู้ใช้ได้ทางคณิตศาสตร์เนื่องจาก encryption key ไม่เคยออกจากอุปกรณ์ของผู้ใช้ แตกต่างจากการเข้ารหัสมาตรฐาน การเข้ารหัสขณะพัก และแม้แต่ end-to-end encryption บางรูปแบบในทางสำคัญหนึ่ง: ความไม่สามารถของ provider ในการเข้าถึงข้อมูลถูก enforce ด้วยคณิตศาสตร์ ไม่ใช่นโยบาย

อ่านสถาปัตยกรรมความปลอดภัย