การยืนยันตัวตนด้วย Privacy Pass สำหรับ Kagi Search
(blog.kagi.com)- Kagi Search ได้นำ การยืนยันตัวตนด้วย Privacy Pass มาใช้ เพื่อตรวจสอบสิทธิ์การค้นหาแบบเสียเงิน โดยไม่เชื่อมโยงคำขอค้นหากับบัญชีโดยตรง
- วิธีนี้แยก การสร้างโทเค็น ออกจาก การใช้โทเค็น ทำให้ Kagi ตรวจสอบความถูกต้องได้ แต่ไม่สามารถย้อนรอยผู้ใช้หรือเวลาที่สร้างได้จากโทเค็นเพียงอย่างเดียว
- กลุ่มแรกที่รองรับคือแผน Professional, Ultimate, Family, Team ซึ่งมีการค้นหาไม่จำกัด ส่วน Trial และ Starter ที่มีการจำกัดจำนวนการค้นหายังไม่รองรับ เนื่องจากยังมีปัญหาเรื่องโทเค็นสูญหายและการใช้งานเกินโควตา
- ใช้งานได้โดยตรงใน Orion, แอป Kagi Android และส่วนขยาย Chrome·Firefox ส่วน Safari ยังไม่รองรับเนื่องจากข้อจำกัดของ API ส่วนขยาย
- แม้โทเค็นเพียงอย่างเดียวจะทำให้เชื่อมโยงการค้นหากับบัญชีได้ยาก แต่ยังมีช่องทางข้างเคียง เช่น ที่อยู่ IP·ฟิงเกอร์พรินต์ของเบราว์เซอร์·รูปแบบการค้นหาซ้ำๆ จึงแนะนำให้ใช้ Tor หรือ VPN
การยืนยันตัวตนด้วย Privacy Pass ที่เพิ่มเข้ามาใน Kagi Search
- Kagi ได้นำการยืนยันตัวตนด้วย Privacy Pass มาใช้กับ Kagi Search พร้อมเปิดตัว Tor onion service ด้วย
- Privacy Pass เป็นโปรโตคอลยืนยันตัวตนที่ให้ไคลเอนต์พิสูจน์สิทธิ์การเข้าถึงได้ โดยไม่ทำให้เซิร์ฟเวอร์ระบุได้ว่าผู้ใช้คนใดกำลังเชื่อมต่อ
- Kagi ในฐานะเครื่องมือค้นหาแบบเสียเงินจำเป็นต้องตรวจสอบสิทธิ์การค้นหา แต่ฟีเจอร์นี้เพิ่มหลักประกันเชิงเทคนิคว่าจะไม่เชื่อมโยงคำขอค้นหากับบัญชีใดบัญชีหนึ่ง
- การพัฒนาอ้างอิงจาก การพัฒนา Privacy Pass ด้วย Rust ของ Raphael Robert เป็นจุดตั้งต้น และเปิดเผยโค้ดไว้ที่ kagisearch/privacypass-extension
แผนและไคลเอนต์ที่รองรับ
- Privacy Pass ให้บริการก่อนกับผู้ใช้แผนค้นหาไม่จำกัด ได้แก่ Professional, Ultimate, Family, Team
- แผน Trial และ Starter ยังไม่รองรับในตอนนี้
- ทั้งสองแผนมีการจำกัดจำนวนการค้นหารายเดือน
- หากโทเค็นที่สร้างไว้สูญหาย เช่น จากการลบส่วนขยาย ประสบการณ์ผู้ใช้อาจแย่ลง
- Kagi ไม่สามารถรู้บัญชีหรือแผนในขณะใช้โทเค็นได้ จึงอาจทำให้ตามทฤษฎีสามารถใช้โทเค็นได้มากกว่าจำนวนการค้นหาที่อนุญาต
- ไคลเอนต์ที่รองรับมีดังนี้
- Orion Browser: ผสานมาในตัวบน macOS/iOS/iPadOS
- Kagi for Android: เวอร์ชัน 0.29 ขึ้นไป
- ส่วนขยาย Firefox และ ส่วนขยาย Chrome
- ผู้ใช้ที่ใช้ส่วนขยาย Kagi Search เดิมอยู่ ควรอัปเดตเป็นเวอร์ชันล่าสุดหรือปิดใช้งานเพื่อหลีกเลี่ยงปัญหาความเข้ากันได้
- Firefox คือ 0.7.6
- Chrome คือ 1.2.2.5
โฟลว์การยืนยันตัวตนของ Privacy Pass
- Privacy Pass แบ่งการยืนยันตัวตนออกเป็นสองขั้นตอนคือ การสร้างโทเค็น และ การใช้โทเค็น
- ในขั้นตอนการสร้างโทเค็น ผู้ใช้พิสูจน์สิทธิ์ในการสร้างโทเค็นด้วยคุกกี้เซสชันของ Kagi
- จากมุมมองของเซิร์ฟเวอร์ โทเค็นที่สร้างขึ้นจะแยกไม่ออกจากโทเค็นแบบสุ่ม
- โทเค็นไม่สามารถถูกติดตามย้อนกลับไปยังผู้ใช้ที่สร้าง หรือไปยังโทเค็นอื่นที่ผู้ใช้คนเดียวกันสร้างได้
- เมื่อส่งคำขอค้นหา จะส่งโทเค็นที่สร้างไว้ล่วงหน้า 1 รายการเพื่อพิสูจน์สิทธิ์การเข้าถึง
- เซิร์ฟเวอร์ตรวจสอบได้เพียงว่าโทเค็นนั้นเคยถูกสร้างขึ้นอย่างถูกต้อง
- ไม่สามารถเชื่อมโยงโทเค็นกับขั้นตอนการสร้างใดขั้นตอนหนึ่งได้
- โทเค็นเป็นแบบ ใช้ครั้งเดียว
- เซิร์ฟเวอร์ติดตามโทเค็นที่ใช้แล้วเพื่อป้องกันการใช้ซ้ำ
- ไคลเอนต์เองก็ไม่ควรส่งโทเค็นเดียวกันสองครั้ง เพื่อไม่ให้ขั้นตอนการใช้ที่ต่างกันถูกเชื่อมโยงกัน
- โทเค็นมีอายุใช้งานคงที่ หากเก่าเกินไปต้องสร้างใหม่
โมเดลการใช้งานของ Kagi และคุณสมบัติด้านความปลอดภัย
- โมเดลการ deploy ของ Kagi เป็นไปตามโครงสร้าง Shared Origin, Attester, Issuer ของมาตรฐาน Privacy Pass
- Kagi ทำหน้าที่เป็น Attester, Issuer และ Origin ทั้งหมด
- ผู้ใช้ทำหน้าที่เป็นไคลเอนต์ผ่านส่วนขยายเบราว์เซอร์ Privacy Pass หรือการรองรับในตัวของ Orion
- หลังติดตั้งและเป็นระยะหลังจากนั้น ส่วนขยายจะสร้างและจัดเก็บโทเค็นจำนวนมาก
- ผู้ใช้สามารถเลือกด้วย toggle ว่าจะยืนยันตัวตนด้วยคุกกี้เซสชันเดิม หรือด้วยโทเค็น Privacy Pass เมื่อค้นหา
- คุณสมบัติที่ปกป้องผู้ใช้มีสามข้อ
- การไม่เชื่อมโยงระหว่างการสร้างกับการใช้: Kagi ไม่สามารถเชื่อมโยงโทเค็นที่ส่งตอนค้นหากับขั้นตอนการสร้างโทเค็นใดโดยเฉพาะ
- การไม่เชื่อมโยงระหว่างการใช้กับการใช้: Kagi ไม่สามารถรู้จากโทเค็นเพียงอย่างเดียวว่าการค้นหาสองครั้งต่างกันมาจากผู้ใช้คนเดียวกันหรือไม่
- การป้องกันการขโมยการใช้งาน: ผู้ดักฟังที่สังเกตกระบวนการสร้างโทเค็น ไม่สามารถใช้ข้อมูลนั้นเพียงอย่างเดียวเพื่อขโมยโทเค็นไปใช้ได้
- ยังมีคุณสมบัติที่ปกป้อง Kagi ด้วย
- โทเค็นที่สร้างอย่างถูกต้องจะผ่านการตรวจสอบของ Kagi
- ไคลเอนต์ที่ประสงค์ร้ายไม่สามารถปลอมโทเค็นที่ถูกต้องใหม่ได้ แม้จะรู้โทเค็นที่สร้างอย่างถูกต้องอยู่แล้ว
ฟีเจอร์ที่ลดลงในโหมด Privacy Pass
- ในโหมด Privacy Pass Kagi ไม่สามารถระบุตัวผู้ใช้ได้ จึงไม่สามารถใช้ การตั้งค่าบัญชี ได้
- Kagi นำเสนอสิ่งนี้เป็นโครงสร้างให้ผู้ใช้เลือกระหว่าง “ความเป็นส่วนตัวทั่วไปและฟีเจอร์ครบถ้วน” หรือ “ความเป็นส่วนตัวสูงสุดและฟีเจอร์หลัก”
- ณ เวลาที่เปิดตัว Kagi Assistant ยังใช้กับ Privacy Pass ไม่ได้
- Kagi Assistant ให้บริการเฉพาะสมาชิก Ultimate
- ใน Privacy Pass ไม่มีข้อมูลบัญชี จึงไม่สามารถตรวจสอบได้ว่าเป็นแผนใด
- ณ เวลาที่เปิดตัว Privacy Pass ใช้เฉพาะกับการยืนยันตัวตนของ Kagi Search เท่านั้น
- Kagi มีแผนจะขยายการรองรับไปยังบริการต่อไปนี้ภายในไม่กี่สัปดาห์ข้างหน้า
- Kagi Assistant
- Kagi Translate และ Kagi Maps
- Kagi Universal Summarizer และ Ask questions about page
- หากต้องการใช้บริการเหล่านี้ในตอนนี้ ต้องปิด Privacy Pass
ช่องทางข้างเคียงและการใช้ Tor
- Privacy Pass ทำให้ไม่สามารถเชื่อมโยงการสร้างและการใช้โทเค็นได้ด้วยโทเค็นเพียงอย่างเดียว แต่ไม่สามารถอธิบายปฏิสัมพันธ์ออนไลน์ทั้งหมดด้วยโมเดลทางคณิตศาสตร์ได้อย่างสมบูรณ์
- เซิร์ฟเวอร์ที่ประสงค์ร้ายอาจพยายามติดตามไคลเอนต์ด้วยข้อมูล ช่องทางข้างเคียง
- หากค้นหาสิ่งที่เฉพาะเจาะจงเหมือนเดิมในเวลาเดียวกันทุกวัน อาจอนุมานได้ว่าการค้นหาเหล่านั้นมาจากคนเดียวกัน
- สัญญาณอย่าง browser user-agent และที่อยู่ IP เป็นข้อมูลที่อยู่นอก Privacy Pass
- หากคำขอสร้างโทเค็นและคำขอใช้โทเค็นเกิดขึ้นต่อเนื่องกันจาก IP เดียวกัน อาจถูกมองว่าเป็นคำขอของบุคคลเดียวกัน
- RFC 9576 แนะนำให้แยกการสร้างและการใช้โทเค็นออกจากกันทางเวลา หรือแยกกันทางพื้นที่ด้วยบริการนิรนามอย่าง Tor
- ส่วนขยาย Privacy Pass ของ Kagi และการพัฒนาในตัวของ Orion จัดการลบ HTTP header และคุกกี้ เพื่อทำให้ฟิงเกอร์พรินต์ของเบราว์เซอร์สม่ำเสมอที่สุดเท่าที่เป็นไปได้
- Kagi มีที่อยู่ onion ที่เข้าถึงได้โดยตรงจากเครือข่าย Tor
- หากใช้ Tor อย่างเดียว ที่อยู่ IP จะถูกซ่อน แต่หากยังล็อกอินโดยไม่ใช้ Privacy Pass การค้นหาในทางทฤษฎีอาจเชื่อมโยงกับบัญชีเดียวได้
- เมื่อใช้ Tor ร่วมกับ Privacy Pass Kagi จะรู้เพียงว่าการค้นหานั้นมาจากผู้ใช้ที่เคยถูกตรวจสอบว่ามีสิทธิ์รับโทเค็น แต่จะไม่รู้บัญชีหรือตำแหน่งที่ตั้ง
จำนวนโทเค็น ประสิทธิภาพ และพื้นที่จัดเก็บ
- ผู้ใช้แผนค้นหาไม่จำกัดสามารถสร้างโทเค็นได้ 2,000 รายการต่อหนึ่ง epoch หรือหนึ่งเดือน
- หากต้องการโทเค็นเพิ่มเติม สามารถขอได้ที่ support@kagi.com
- การสร้างโทเค็นค้นหา 500 รายการใช้การประมวลผลประมาณ 1 วินาทีบนแล็ปท็อปผู้บริโภคทั่วไป
- อาจใช้เวลาเพิ่มอีกไม่กี่วินาทีจากการเชื่อมต่อเซิร์ฟเวอร์และเวลาตอบกลับ
- เมื่อทำการติดตั้งส่วนขยาย จะดำเนินการในแบ็กกราวด์ให้มากที่สุดเท่าที่เป็นไปได้
- โทเค็นหนึ่งรายการมีขนาด 216 ไบต์ และพื้นที่จัดเก็บต่อคำขอสร้างโทเค็นอยู่ที่ประมาณ 100KiB
- ปัจจุบันเซิร์ฟเวอร์ตรวจสอบโทเค็น deploy อยู่เฉพาะในรีเจียน us-central1 และ Kagi มีแผนจะขยายหลังเปิดตัวไม่นาน
เหตุผลที่การปรับแต่งส่วนบุคคลและการตั้งค่าถูกจำกัด
- ในการค้นหาด้วย Privacy Pass Kagi ไม่รู้ว่าผู้ใช้เป็นใคร จึงไม่สามารถให้ผลลัพธ์ที่ปรับตามการตั้งค่าแบบกำหนดเองของผู้ใช้ได้
- Kagi เคยพิจารณาวิธีส่งการตั้งค่าขนาดเล็ก เช่น
(language, region, safe-search)ไปกับแต่ละคำขอ แต่ปัจจุบันประเมินว่าอาจลดความเป็นนิรนามลงอย่างมาก - จากการวิเคราะห์ตัวอย่าง ผู้ใช้ที่ส่งการตั้งค่าภาษาเฉพาะอย่าง
Lang 10อาจสูญเสียหลักประกัน การไม่เชื่อมโยงระหว่างการใช้กับการใช้ โดยอัตโนมัติ เมื่อมีผู้ใช้ Privacy Pass ประมาณ 1,000 คน - Kagi มองว่าการประเมินนี้อาจระมัดระวังเกินไป แต่ปัจจุบันยังไม่เปิดใช้ระดับการปรับแต่งส่วนบุคคลพื้นฐานให้กับผู้ใช้ที่ยืนยันตัวตนด้วย Privacy Pass
- การตั้งค่าการค้นหาแบบแมนนวลสามารถใช้ได้บางส่วนโดยเติม bangs ในคำค้น
- เช่น ใส่
!deไว้หน้าคำค้นเพื่อค้นหาในภูมิภาคเยอรมนี
- เช่น ใส่
- หากต้องการประสบการณ์ค้นหาแบบปรับแต่งส่วนบุคคลเต็มรูปแบบ ควรใช้วิธีล็อกอินเดิมและปิด Privacy Pass
ข้อจำกัด เช่น Safari และหน้าต่างส่วนตัว
- Privacy Pass ไม่ใช้ บล็อกเชน
- ใช้โครงสร้าง elliptic curve, hash function และ verifiable oblivious pseudorandom function
- โทเค็นไม่ได้ถูกสร้าง จัดเก็บ หรือซื้อขายบนบล็อกเชน
- ในหน้าต่างส่วนตัวของ Chrome·Firefox การสร้างโทเค็นจะไม่ทำงาน
- การสร้างโทเค็นต้องเข้าถึงคุกกี้เซสชัน
- ในหน้าต่างส่วนตัว ส่วนขยายไม่สามารถเข้าถึงคุกกี้เซสชันได้
- ใน Orion การสร้างโทเค็นทำงานได้แม้ในหน้าต่างส่วนตัว
- แม้เปิด Privacy Pass แล้ว Kagi ยังสามารถเห็นที่อยู่ IP ของคำขอค้นหาได้ เนื่องจากวิธีทำงานของ TCP/IP
- หากกังวลเรื่องการเปิดเผยที่อยู่ IP แนะนำให้ใช้ Tor หรือ VPN ที่เชื่อถือได้
- โทเค็นทั้งหมดจะหมดอายุ ณ เที่ยงคืนของวันแรกของเดือน X+2 โดยอิงจากเดือน X ที่สร้างขึ้น
- เป็นวิธีหลีกเลี่ยงปัญหาที่วันหมดอายุคล้ายกันของโทเค็นที่สร้างในเวลาเดียวกันอาจถูกใช้ระบุการค้นหาหลายครั้ง
- Safari ยังไม่รองรับในปัจจุบัน
- Kagi เข้าใจว่า Safari extension API ไม่รองรับความสามารถในการลบคุกกี้ออกจากคำขอ
- หากลบคุกกี้ไม่ได้ ก็จะยังคงยืนยันตัวตนด้วยบัญชีที่ล็อกอินอยู่
- หากต้องการประสบการณ์แบบเนทีฟที่คล้ายกันบนฐาน WebKit สามารถใช้ Orion Browser ที่ผสาน Privacy Pass เป็นทางเลือกได้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ดีที่ Kagi ตอนนี้ใช้ Privacy Pass แล้ว และโดยรวมบริษัทเองก็ดูโอเค
แต่ Kagi แทบจะเอาร่าง IETF [1] กับ implementation ภาษา Rust [2] ที่ผมเคยทำอยู่พักหนึ่งไปใช้ แล้วทำ wrapper บาง ๆ [3] ครอบไว้ ก่อนจะเรียกมันว่า “implementation ของ Privacy Pass ของ Kagi”
ผมคิดว่าควรให้ เครดิต กับผมบ้าง งาน IETF และงานซอฟต์แวร์โอเพนซอร์สส่วนใหญ่ทำด้วยความสมัครใจและไม่ได้รับค่าจ้าง และมักทำกันนอกเวลางาน ถ้าถูกปฏิบัติแบบนี้ก็ไม่มีกำลังใจ Kagi น่าจะทำได้ดีกว่านี้
[1] https://datatracker.ietf.org/doc/draft-ietf-privacypass-batc...
[2] https://github.com/raphaelrobert/privacypass
[3] https://github.com/kagisearch/privacypass-lib/blob/e4d6b354d...
โอเพนซอร์สของผมไม่เคยถูกนำไปใช้จริง และปกติแจกจ่ายภายใต้ไลเซนส์ MIT เลยอยากรู้ว่ากลุ่มหรือองค์กรอื่น ๆ ปฏิบัติตามไลเซนส์กันจริง ๆ อย่างไร
เจ๋งดี เป็นเรื่องหายากที่จะได้เห็นบริการที่ผมใช้อยู่ทำสิ่งที่เป็นประโยชน์ต่อ ผู้ใช้ มากกว่าตัวบริการเองจริง ๆ แม้จะคาดไม่ถึง แต่ก็เป็นเซอร์ไพรส์ที่ดีมาก
อยากให้ส่วนขยายนี้เข้าใจบริบทของเบราว์เซอร์โดยอัตโนมัติและผสานรวมได้ดีกว่านี้ กล่าวคือ ในโหมดปกติก็ใช้ session ของผม และในโหมดท่องเว็บแบบส่วนตัว (
browser.extension.inIncognitoContext) ก็ให้ยืนยันตัวตนด้วย Privacy Pass โดยที่ผมไม่ต้องทำอะไรเพิ่มผมไม่ได้ใช้ Orion เพราะไม่มีเวอร์ชัน GNU/Linux
เนื่องจากฝั่งหลังคือฝั่งที่สร้างรายได้จริง โดยพื้นฐานแล้วผลประโยชน์ของกลุ่มแรกกับกลุ่มหลังจึงขัดกัน และโครงสร้างก็มักกลายเป็นศัตรูกับกลุ่มแรกได้ง่าย
สิ่งที่ทำให้ Kagi และบริษัทเทคโนโลยีใหม่ ๆ อื่น ๆ ดูสดใหม่ คือพวกเขาทิ้งโมเดลนี้ แล้วกลับไปสู่โมเดล “แบบเก่า” ที่กลุ่มที่ตนให้บริการและกลุ่มที่ทำรายได้ให้เป็นกลุ่มเดียวกัน
Kagi รู้ว่าผู้ใช้ล็อกอินอยู่ และถ้าผู้ใช้ค้นหาเรื่องละเอียดอ่อนในหน้าต่างส่วนตัว ก็สามารถเชื่อมโยงการค้นหาเหล่านั้นได้ การสลับไปมาระหว่างโหมดอย่างรวดเร็วไม่ใช่เรื่องที่ดี
หวังว่าเสื้อยืด Kagi ของผมจะเป็นแบบนั้นด้วย ซักครั้งที่สองชายเสื้อก็หลุดลุ่ยแล้ว ตอนนี้เลยกลายเป็นเสื้อนอนกับเสื้อใส่ทำสวนไปแล้ว ได้คูปองเสื้อฟรีสำหรับเปลี่ยนตัวใหม่มาแล้ว แต่ยังไม่ได้จัดส่ง
ตามที่บทความบอกเป็นนัย การมี ร้านค้าที่ซื้อ Privacy Pass ได้โดยไม่ต้องมีบัญชี นั้นสมเหตุสมผล
ควรรองรับคริปโตสักตัว อาจจะเป็น Monero และถ้าเทคโนโลยีอย่าง GNU Taler ใช้งานได้ดีขึ้นในสักวัน ก็ควรรองรับด้วย
ผมสงสัยว่าสุดท้ายแล้วนี่คือ ความเป็นส่วนตัวแบบที่ต้องสมมติว่าไม่มีการเก็บล็อก หรือเปล่า ไม่ได้จะหาเรื่องนะ แต่ผมไม่เข้าใจส่วนนี้จริง ๆ
สมมติว่าผู้ใช้ A ขอ token จาก Kagi แล้ว Kagi บอกว่า “ได้เลย จะให้ token 500 อัน” ถ้า Kagi บันทึก token 500 อันที่เพิ่งให้ผู้ใช้ A ไปไว้ ทีหลังเมื่อมีการใช้อันใดอันหนึ่งในนั้น ก็รู้ได้ไม่ใช่หรือว่า token นั้นถูกจัดสรรให้ผู้ใช้ A?
แน่นอนว่าถ้า Kagi ไม่เก็บข้อมูลนี้ไว้ ตัว token เองก็จะแสดงแค่ว่า valid/invalid และไม่เหลือบันทึกว่าเป็น “token ที่ยังใช้ได้ซึ่งให้ผู้ใช้ A เมื่อวันที่ Y” แบบนั้นก็น่าจะโอเค แต่นั่นคือทั้งหมดจริง ๆ ใช่ไหม? ผมเข้าใจอะไรผิดไปหรือเปล่า?
server รู้ได้ว่าเคยส่ง token A, B, C กลับไปให้ผู้ใช้บางคน และภายหลังได้รับ token X, Y, Z มา และรู้ด้วยว่า X, Y, Z ใช้งานได้ แต่ไม่รู้ความสัมพันธ์ว่าอันไหนตรงกับ token ที่ตัวเองออกให้ ในนี้ใช้ elliptic curve cryptography
[0] https://privacypass.github.io/
ใจความคือ server ไม่รู้ว่า token ใดเป็นของ client คนไหน server ไม่ได้สร้าง token
ข้อบกพร่องใหญ่ที่สุดของ Kagi ที่ผมเห็นมาตลอดได้รับการแก้ไขแล้ว ขอบคุณที่รับฟังและลงมือทำเพื่อทำให้ผลิตภัณฑ์น่าสนใจสำหรับแทบทุกคน
หนึ่งในข้อร้องเรียนใหญ่ที่สุดจากคนที่ยังไม่ใช้ Kagi คือ ความกังวลด้านความเป็นส่วนตัว จากการต้องให้ข้อมูลล็อกอินและการชำระเงิน
ผมไม่ใช่คนที่กังวลเรื่องนั้น แต่ก็อยากรู้ว่าการเปลี่ยนแปลงนี้ช่วยลดความกังวลให้คนที่กังวลจริง ๆ ได้มากแค่ไหน
หลังจากตรวจสอบระบบอย่างคร่าว ๆ แล้ว ตอนนี้มีโอกาสค่อนข้างสูงที่ผมจะสมัครใช้
token ถูกสร้างบนอุปกรณ์ และไม่ออกจากอุปกรณ์จนกว่าจะถูกใช้ ดังนั้นในเชิงทฤษฎี Kagi จึงไม่มีทางรู้จาก token เพียงอย่างเดียวว่าบัญชีใดสร้าง token นั้นขึ้นมา มันไม่ได้แก้เรื่อง fingerprinting หรือการเชื่อมโยงด้วย IP แต่บอกกันว่า plugin สำหรับ Firefox และ Chrome มีมาตรการเพื่อลด fingerprinting เรื่องนี้ไม่ได้แย่กว่าหรือดีกว่าการใช้ Google หรือ DuckDuckGo ตรง ๆ และถ้าต้องการความเป็นส่วนตัวจริง ๆ ก็ใช้กับ Tor ได้ด้วย
ผมไม่แน่ใจว่าพิสูจน์ความถูกต้องได้อย่างไรโดยไม่แชร์ token เลย แต่น่าจะมีอะไรทำนอง ~~zero-knowledge proof~~ อยู่ในนั้น
แก้ไข: ดูเหมือนไม่ใช่ zero-knowledge proof แต่เป็น blind signature
ผมไม่เข้าใจว่าอะไรจะไปกันไม่ให้คนฝั่ง Kagi เพิ่มคอลัมน์ใหม่ในตารางโทเค็น เพื่อเก็บผู้ใช้ที่สร้างโทเค็นกับ SessionCookie ของคนนั้นไว้
มองไม่เห็นเหตุผลว่าทำไมมันถึงจะเชื่อมโยงกลับไปยังผู้สร้างโทเค็นเดิมได้ยากมาก
ในขั้นแก้ไขขั้นสุดท้ายฝั่งไคลเอนต์ โทเค็นเหล่านี้จะถูกสุ่มใหม่ ทำให้เซิร์ฟเวอร์ไม่สามารถระบุได้ว่าโทเค็นนั้นเป็นของกระบวนการออกโทเค็นครั้งใด
จุดที่เจ๋งจริง ๆ คือ แม้เซิร์ฟเวอร์จะพยายามทำตัวไม่ดีในขั้นของตัวเอง ผลลัพธ์ก็ยังเป็นแบบนั้นอยู่ ดังนั้นผู้ใช้จึงต้องเชื่อถือแค่ซอฟต์แวร์ฝั่งไคลเอนต์เท่านั้น และเราเปิดซอร์สโค้ดไว้แล้ว: https://github.com/kagisearch/privacypass-extension
มีหลายคนพูดถึง blind signature ซึ่งจริง ๆ แล้ว Privacy Pass สามารถใช้สิ่งนี้เป็นองค์ประกอบได้ แต่ถ้าพูดให้แม่น ใน Kagi เราใช้ “Privately Verifiable Tokens”(https://www.rfc-editor.org/rfc/rfc9578.html#name-issuance-pr...) ที่อิงกับ “Oblivious Pseudorandom Function” (OPRF) และโดยส่วนตัวผมมองว่า OPRF เจ๋งกว่า blind signature
https://petsymposium.org/popets/2018/popets-2018-0026.php (“Privacy Pass: Bypassing Internet Challenges Anonymously”)
Cloudflare ก็น่าจะเคย implement สิ่งเดียวกัน อย่างน้อยคอมเมนต์ใน HN ก็ลิงก์ไปยังเปเปอร์เดียวกัน
https://news.ycombinator.com/item?id=19623110 (“Privacy Pass (cloudflare.com)”, 53 comments)
มันใช้งานได้จริงหรือ? โทเค็นใช้ได้ครั้งเดียว ดังนั้นในทางปฏิบัติไคลเอนต์ก็น่าจะวนลูปสร้างและใช้โทเค็นภายใน search session หนึ่ง ๆ ซึ่งจะทำให้เชื่อมคู่กันได้ง่ายมาก บทความเองก็พูดแบบนี้
เป็นงานที่เจ๋งและยอดเยี่ยมจริง ๆ
ก่อนหน้านี้ผมเคยทำ การยืนยันตัวตนด้วย blind signature ที่คล้ายกับ Privacy Pass เลยสงสัยว่าจะจัดการการเข้าถึงจากหลายอุปกรณ์อย่างไร
ผมเข้าใจว่าน่าจะปล่อยให้ผู้ใช้แบบค้นหาไม่จำกัดก่อน เพื่อบรรเทาปัญหาการเสียสิทธิ์เข้าถึงโทเค็นบนอุปกรณ์อื่น อยากรู้ว่ามีไอเดียสำหรับแผนระยะยาวไหม ตอนที่เคยทำระบบแบบนี้ มักต้องผูกกับการซิงก์แบบเข้ารหัสจากต้นทางถึงปลายทางเสมอ ซึ่งไม่เพียงยุ่งยากสำหรับผู้ใช้ปลายทาง แต่ยังเปิดช่องให้เชื่อมโยงการอัปเดตที่เก็บข้อมูลกับคำขอค้นหาแบบ blind ได้ด้วย
ยังไงก็ตาม นี่สุดยอดจริง ๆ และผมยิ่งตื่นเต้นที่ตอนนี้สามารถตรวจสอบได้ว่าเราไม่จำเป็นต้องเชื่อใจ Kagi เฉย ๆ แต่ไม่ต้องมีความจำเป็นต้องเชื่อใจเลย
ตอนนี้เราเปิดให้ใช้ Privacy Pass บนอุปกรณ์หลายเครื่องได้โดยให้อุปกรณ์แต่ละเครื่องสร้างโทเค็นอย่างอิสระผ่านการจำกัดอัตราใช้งาน เราจะดูว่ามันเป็นอย่างไร รับฟังฟีดแบ็กผู้ใช้ แล้วค่อยกลับไปออกแบบใหม่อีกครั้ง
นี่คือ Privacy Pass แบบเดียวกับที่ Cloudflare เคยใช้เพื่อให้ไคลเอนต์ข้าม CAPTCHA ได้หรือเปล่า? ถ้าใช่ นี่เป็นการประยุกต์ใช้ระบบนี้ที่เนี้ยบมาก ผมไม่เคยคิดมาก่อนว่าจะใช้มันเพื่อยืนยันตัวตนกับบริการแบบเสียเงินอย่างนิรนามได้
[1] https://www.petsymposium.org/2018/files/papers/issue3/popets...
[2] https://en.m.wikipedia.org/wiki/Ecash
ผมจำได้ว่า Safari เป็นเบราว์เซอร์เดียวที่ implement แบบเนทีฟ แต่ตอนนี้ดูเหมือน Orion ก็รองรับแล้ว