บันทึก · สร้างอย่างเปิดเผย

สร้างซีดของคุณด้วยเหรียญ

A coin beside the PHYLAX prototype, mid-setup, with a tally of heads and tails
โยนเหรียญสองร้อยห้าสิบหกครั้ง ครั้งละหนึ่งบิต ไม่ต้องใช้อะไรมากกว่านั้น

ชุดคำซีดจะคาดเดาไม่ได้มากแค่ไหน ขึ้นอยู่กับความสุ่มที่ใช้สร้างมันขึ้นมา ทุกอย่างที่เหลือของกระเป๋าฮาร์ดแวร์นั้นอ่านได้ คอมไพล์เองได้ และตรวจสอบได้ — แต่ความสุ่มไม่ทิ้งร่องรอยให้ตรวจ เราจึงกำลังทำให้ PHYLAX เปิดให้คุณสร้างความสุ่มนั้นเองได้ ด้วยเหรียญหนึ่งเหรียญ

กระเป๋าฮาร์ดแวร์ทุกเครื่องในตลาดสร้าง seed ให้คุณ จากตัวสร้างเลขสุ่มที่คุณถูกเชิญชวนให้เชื่อ ขั้นตอนนั้นคือรากฐานที่ทุกอย่างวางอยู่บนมัน และเป็นขั้นตอนเดียวที่ปกติแล้วคุณไม่มีทางตรวจสอบได้เลย

จริง ๆ แล้ว 24 คำนั้นคืออะไร

ตัวคำไม่ใช่ความลับ มันเป็นเพียงวิธีเขียนตัวเลขหนึ่งตัวให้มนุษย์คัดลอกได้โดยไม่ผิดพลาด ชุดคำ BIP-39 แบบ 24 คำบรรจุความสุ่ม 256 บิต บวกเช็กซัมอีก 8 บิต รวมเป็น 264 บิต เข้ารหัสคำละ 11 บิต เพราะรายการคำมีอยู่ 2,048 คำพอดี ส่วนชุด 12 คำก็แนวคิดเดียวกันที่ 128 บิต กับเช็กซัม 4 บิต ถ้าบิตเหล่านั้นมาจากแหล่งที่คาดเดาไม่ได้จริง ชุดคำก็มั่นคง แต่ถ้ามาจากแหล่งที่เดาได้ การป้องกันอื่น ๆ ทั้งหมดบนอุปกรณ์ก็เป็นแค่ของประดับ

ทำไมเราถึงอยากให้คุณไม่ต้องเชื่อความสุ่มของเรา

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

หนึ่งครั้งที่โยน หนึ่งบิต

เหรียญคือแหล่งความสุ่มที่ซื่อตรงและเรียบง่ายที่สุดที่คนส่วนใหญ่มีอยู่แล้ว การโยนเหรียญที่ยุติธรรมหนึ่งครั้งให้ค่าหนึ่งบิตพอดี — หัวคือ 1 ก้อยคือ 0 — ดังนั้น โยน 256 ครั้งก็ได้ครบ 256 บิต สำหรับชุด 24 คำ และโยน 128 ครั้งสำหรับชุด 12 คำ คุณกดป้อนผลลงเครื่องไปทีละครั้ง ไม่มีฮาร์ดแวร์ให้ต้องเชื่อ ไม่มีผู้ผลิตให้ต้องไว้ใจ ไม่มีทฤษฎีให้ต้องตาม มันคือเลขคณิตชุดเดียวกับที่กระเป๋าจะทำอยู่แล้ว เพียงแต่ทำตรงหน้าคุณ

เหรียญจริงไม่ได้ยุติธรรมสมบูรณ์แบบ

และวิธีโยนของคุณก็เช่นกัน เหรียญจริงมักลงด้านหนึ่งบ่อยกว่าอีกด้านเล็กน้อย ส่วนต่างนั้นน้อย แต่ก็ไม่ใช่ศูนย์ มีวิธีคลาสสิกในการกำจัดมัน — โยนเป็นคู่ ถ้าได้หัวแล้วก้อยนับเป็น 1 ก้อยแล้วหัวนับเป็น 0 ส่วนคู่ที่ออกเหมือนกันให้ทิ้ง — แต่สำหรับเหรียญที่ค่อนข้างยุติธรรม วิธีนี้กินราว สี่ครั้งต่อหนึ่งบิตที่ใช้ได้ หรือประมาณพันครั้งสำหรับ 24 คำ ซึ่งเกินความจำเป็นไปมาก เราจึงเลือกส่งลำดับการโยนทั้งหมดผ่าน SHA-256 แทน ซึ่งจะกระจายความเอนเอียงออกไปทั่วทุกบิตของผลลัพธ์ แล้วคืนค่ามาให้ 256 บิต คุณเก็บผลการโยนไว้ครบทุกครั้ง และความเอนเอียงหายไป

เรานำมันไปผสมกับความสุ่มของตัวเครื่องเอง

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

คุณตรวจงานของเราได้

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

ทำไมเรื่องนี้ถึงต้องอยู่ในกระเป๋าฮาร์ดแวร์แบบเปิด

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

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

← อัปเดตทั้งหมด ติดตามข่าว