ตรวจสอบได้ใน 2 นาที
กด F12 ในเบราว์เซอร์ของคุณ โดยไม่ต้องติดตั้งอะไรเพิ่มเติม และไม่จำเป็นต้องรู้วิธีเขียนโปรแกรม
| คำกล่าวอ้าง | วิธีตรวจสอบ | แท็บ |
|---|---|---|
| ไม่มีคุกกี้ประเภทใดๆ ทั้งสิ้น | Application → Cookies → ว่างเปล่า Solo2 ไม่มีการติดตั้งคุกกี้ใดๆ เซสชันของคุณจะถูกรักษาไว้ใน localStorage ไม่ใช่ในคุกกี้ และไม่มี _ga |
Application |
| ไม่มีบริการจากบุคคลที่สามในแอป | Network → กรองตามโดเมน → จะมีเพียงคำขอไปยัง solo2.net |
Network |
| มีการวิเคราะห์เฉพาะในหน้าแนะนำ ไม่ใช่ในแอป | Network → ใน /* |
Network |
| ประวัติของคุณอยู่ในเบราว์เซอร์ของคุณ | Application → IndexedDB → solo2-vault-{userId} |
Application |
| รายชื่อติดต่อมีเฉพาะในเครื่องเท่านั้น | Application → IndexedDB → store pares |
Application |
| ไม่มี CDN ภายนอก | Network → ไฟล์ JS/CSS ทั้งหมดถูกโหลดจากโดเมนเดียวกัน ไม่มี cdn.jsdelivr.net |
Network |
| เซสชันสูงสุด 24 ชั่วโมง | Application → localStorage → solo2_session |
Application |
| คุณสามารถดูประเภทการเชื่อมต่อที่ใช้งานอยู่ได้ | ในหน้าจอแชท: ตัวบ่งชี้ P2P (สีเขียว) เทียบกับ Mirror/TURN (สีส้ม) จะมองเห็นได้ตลอดเวลา | UI |
| Umami ไม่ใช้คุกกี้ | Application → Cookies → จะไม่มีคุกกี้จาก stats.menzuri.com ปรากฏขึ้น |
Application |
| คีย์หลักของคุณถูกสร้างขึ้นแบบสุ่ม | Application → เมื่อลงทะเบียน Solo2 จะสร้างคำที่ไม่ซ้ำกัน 24 คำ คำเหล่านี้ไม่ได้มาจากรหัสผ่านของคุณ แต่เป็นคีย์อิสระที่มีเอนโทรปีจริงขนาด 256 บิต | Application |
หากคุณรู้วิธีใช้ DevTools
การตรวจสอบที่ต้องใช้ความรู้ทางเทคนิค หากคุณเข้าใจเรื่อง HTTP, WebRTC และวิทยาการรหัสลับเบื้องต้น คุณสามารถยืนยันคำกล่าวอ้างเหล่านี้ได้
| คำกล่าวอ้าง | วิธีตรวจสอบ |
|---|---|
| ข้อความมีการเข้ารหัสแบบ E2E | Network → คำขอไปยัง /cmd |
| การส่งสัญญาณ WebRTC มีการเข้ารหัสแบบ E2E | Network → ข้อความสัญญาณเดินทางในรูปแบบกลุ่มข้อมูลไบนารีที่เข้ารหัส ไม่ใช่ JSON ที่อ่านออกได้ด้วย offer |
| คีย์หลักเป็นอิสระจากรหัสผ่าน | Network → การเข้าสู่ระบบจะได้รับ wrapped_master_key |
| การเติมข้อมูลที่สม่ำเสมอในโหมดกระจกเงา | Network → แพ็กเกจ WebSocket/DataChannel มีขนาดคงที่เมื่อใช้เซิร์ฟเวอร์สะท้อน ตรวจสอบขนาดได้ในแท็บ Network |
| รหัสผ่านได้รับการคุ้มครอง (ไม่ได้ส่งแบบข้อความธรรมดา) | Network → การเข้าสู่ระบบจะส่งค่าแฮช ไม่ใช่ข้อความธรรมดา คุณไม่สามารถตรวจสอบได้ว่าเซิร์ฟเวอร์ใช้อัลกอริทึมใด (Argon2id) แต่ตรวจสอบได้ว่ารหัสผ่านดั้งเดิมของคุณไม่เคยออกจากเบราว์เซอร์ |
| คำขอเชื่อมต่อหมดอายุใน 3 วัน | สร้างคำขอหนึ่งรายการ ไม่ต้องตอบรับ และตรวจสอบหลังจากผ่านไป 3 วันว่ามันหายไปหรือไม่ ต้องใช้ความอดทนและบัญชีผู้ใช้สองบัญชี |
| การแจ้งเตือนแบบพุชมีการเข้ารหัส | Network → คำขอพุชไปยัง Service Worker มาถึงในรูปแบบที่เข้ารหัส (มาตรฐาน Web Push) จะเห็นกลุ่มข้อมูลที่เข้ารหัสในแท็บ Network |
| การเชื่อมต่อ P2P โดยตรง เทียบกับ เซิร์ฟเวอร์สะท้อน | chrome://webrtc-internals/ |
สิ่งนี้คุณไม่สามารถตรวจสอบได้
เราคงจะดูเป็นคนหน้าไหว้หลังหลอกหากบอกว่าทุกอย่างสามารถตรวจสอบได้ คำกล่าวอ้างเหล่านี้กำหนดให้คุณต้องเชื่อใจเรา หรือรอจนกว่าเราจะเผยแพร่รหัสโปรแกรม
| คำกล่าวอ้าง | เหตุใดจึงตรวจสอบไม่ได้ |
|---|---|
| Double Ratchet พร้อมการสลับเปลี่ยนคีย์ | การดำเนินการทางรหัสลับเกิดขึ้นภายในไฟล์ไบนารี WASM ผู้ใช้เห็นว่ามันโหลดขึ้นมา แต่ไม่สามารถอ่านอัลกอริทึมที่มันทำงานได้ |
| คีย์หลักสร้างขึ้นด้วยเอนโทรปีจริง (256 บิต) | การสร้างใช้ crypto.getRandomValues ภายในเบราว์เซอร์ คุณจะเห็นว่ามีคำ 24 คำถูกสร้างขึ้น แต่ไม่สามารถตรวจสอบคุณภาพของเอนโทรปีหรือความปลอดภัยของ CSPRNG ได้จาก F12 |
| X25519 + Ed25519 + ChaCha20-Poly1305 | ปัญหาเดียวกันคือ ชุดคำสั่งรหัสลับอยู่ภายใน WASM ไม่สามารถยืนยันเส้นโค้งรหัสลับหรืออัลกอริทึมจากเบราว์เซอร์ได้ |
| เซิร์ฟเวอร์ "มองไม่เห็นสิ่งใดเลย" | คุณสามารถตรวจสอบได้ว่าไคลเอนต์ไม่ได้ส่งข้อมูลที่อ่านออกได้ สิ่งที่เซิร์ฟเวอร์ทำกับข้อมูลเมตาการเชื่อมต่อ (IP, เวลา) ต้องใช้ความเชื่อใจหรือการตรวจสอบเซิร์ฟเวอร์ |
| เซิร์ฟเวอร์ไม่จัดเก็บความสัมพันธ์หลังจากการเชื่อมต่อ | ต้องใช้การเข้าถึงรหัสโปรแกรมและฐานข้อมูลของเซิร์ฟเวอร์ |
| ไม่มีการบันทึกที่อยู่ IP | คุณไม่สามารถตรวจสอบสิ่งที่เซิร์ฟเวอร์บันทึกไว้ในระบบบันทึกเหตุการณ์ของมันได้ |
| คีย์สลับเปลี่ยนในทุกๆ ข้อความ | เกิดขึ้นภายใน WASM คุณจะเห็นว่ามีการส่งข้อความออกไป แต่ไม่สามารถสังเกตการสลับเปลี่ยนคีย์ได้ |
| ข้อมูลที่ลบไปแล้วจะหายไปจริงๆ | คุณสามารถลบจาก IndexedDB ในเครื่องได้ แต่ไม่สามารถตรวจสอบได้ว่าเซิร์ฟเวอร์ไม่ได้เก็บสำเนาไว้ (แม้ว่าในบันทึกความโปร่งใสจะบอกว่ามันไม่เคยมีสำเนาก็ตาม) |
ทำไม WASM ถึงเป็นกำแพงที่แท้จริง
ชั้นรหัสลับของ Solo2 ถูกคอมไพล์ในรูปแบบ WebAssembly ซึ่งเป็นรูปแบบไบนารีที่เบราว์เซอร์ของคุณประมวลผลได้แต่คุณไม่สามารถอ่านเป็นข้อความธรรมดาได้ นั่นหมายความว่าคุณไม่สามารถตรวจสอบจาก F12 ได้ว่าเราใช้อัลกอริทึมใด
รหัส JavaScript ที่ถูกย่อขนาด (ที่เราใช้สำหรับส่วนติดต่อผู้ใช้) นั้นสามารถย้อนกลับได้ คือเบราว์เซอร์สามารถจัดรูปแบบใหม่และโครงสร้างรหัสจะอ่านออกได้ มันเป็นอุปสรรคในทางปฏิบัติ ไม่ใช่กำแพงที่แท้จริง แต่ WASM ที่คอมไพล์มาจาก Zig นั้นแตกต่างอย่างสิ้นเชิง
เราขอบอกว่ามันคือ Double Ratchet พร้อมด้วย X25519 คุณสามารถเชื่อคำพูดของเรา หรือคุณจะรอจนกว่าเราจะเผยแพร่รหัสโปรแกรมต้นฉบับของชั้นรหัสลับเพื่อให้ใครก็ได้สามารถตรวจสอบได้ เรากำลังดำเนินการเรื่องนั้นอยู่
สิ่งที่เรากำลังทำเพื่อให้คุณมั่นใจได้มากขึ้น
เผยแพร่ค่าแฮช SHA-256 ของไฟล์ .wasm
เราจะเผยแพร่ค่าแฮชทางรหัสลับของไฟล์ WASM แต่ละไฟล์ในระบบใช้งานจริง ดังนั้นผู้ตรวจสอบคนใดก็ตามจะสามารถยืนยันได้ว่าไฟล์ไบนารีที่ทำงานในเบราว์เซอร์ของคุณนั้นตรงกับที่เราคอมไพล์ไว้อย่างแน่นอน
เปิดชั้นรหัสลับเป็นรหัสโปรแกรมแบบเปิด (Open Source)
เผยแพร่อรหัสโปรแกรมต้นฉบับของชั้นรหัสลับ (Zig) ในรูปแบบที่จัดเก็บสาธารณะ แบบเดียวกับที่ Signal ทำ คือโปรโตคอลรหัสลับเป็นแบบเปิด ส่วนรหัสโปรแกรมที่เหลือเป็นแบบปิด ใครก็ตามจะสามารถคอมไพล์รหัสโปรแกรมต้นฉบับและเปรียบเทียบค่าแฮชของไฟล์ .wasm ที่ได้ กับไฟล์ที่อยู่ในระบบใช้งานจริง
ความปลอดภัยไม่ได้ขึ้นอยู่กับความลึกลับ
รูปแบบความปลอดภัยของเราออกแบบมาเพื่อให้ทำงานได้แม้ว่ารหัสโปรแกรมต้นฉบับจะเป็นสาธารณะ หากความปลอดภัยขึ้นอยู่กับการที่ไม่มีใครอ่านรหัสโปรแกรมออก นั่นไม่ใช่ความปลอดภัย แต่มันคือความหวัง
การบันทึกความปลอดภัย 5 ชั้น
รหัสผ่าน (การเข้าถึงเซิร์ฟเวอร์), คำ 24 คำ (คีย์หลักที่แท้จริง), ความลับอุปกรณ์ (การป้องกันห้องนิรภัย) และการสลับเปลี่ยนแบบ Double Ratchet แต่ละชั้นเป็นอิสระต่อกันและตรวจสอบได้ในบันทึกความโปร่งใสของเรา