Không phải chúng tôi hứa sẽ không xem — mà là không xem được
Không có tài khoản nào để lộ, cũng chẳng có kho dữ liệu nào để moi, và bên chúng tôi không ai có đường vào máy bạn. Dưới đây là những gì thật sự chạy trong app.
Khoá phiên mà máy chủ không đoán nổi
Mã 6 số chỉ có một triệu khả năng. Nếu khoá phiên dẫn từ mình nó thì ai giữ máy chủ chỉ cần ghi lại một lần bắt tay rồi thử cạn — chưa tới một giây trên máy tính thường. Nên mỗi phiên hai máy còn trao đổi riêng một bí mật ECDH X25519, thứ máy chủ không cầm phần nào. Dò hết cả triệu mã vẫn còn thiếu 128 bit không đoán được.
Mỗi chiều một khoá riêng
Khoá phiên dẫn bằng HKDF-SHA256, chiều đi và chiều về tách hẳn nhau. Dùng chung một khoá cho hai chiều là lỗi kinh điển làm hỏng bảo đảm an toàn của mã dòng — ở đây nó được tránh từ đầu.
Mọi khung hình đều được bọc kín
Sau bắt tay, hình ảnh lẫn thao tác chuột phím đi trong ChaChaPoly có xác thực, số thứ tự làm nonce nên không phiên nào phát lại được vào phiên khác.
Máy chủ ghép nối không có gì để đọc
Việc của máy chủ chỉ là cho hai máy tìm thấy nhau rồi nối hai ống lại. Nó không biết mã 6 số, mà kể cả có biết cũng chưa đủ: khoá phiên còn trộn một bí mật ECDH riêng của từng phiên mà nó không cầm phần nào. Thứ chạy qua vì thế chỉ là byte ngẫu nhiên. Nhật ký lưu mã phiên, ID, IP, số byte và thời lượng — không có một mảnh nội dung nào.
Khoá máy được ghim lại như SSH nhớ máy chủ
Bí mật ECDH của máy Mac được ký bằng khoá Ed25519 cố định — chính khoá nó dùng để nhận ID. Lần nối đầu tiên, máy điều khiển ghim khoá đó lại, y như cách SSH nhớ máy chủ. Máy chủ ghép nối muốn đứng giữa tráo khoá thì từ lần thứ hai trở đi app phát hiện ngay. Bắt tay bản cũ đã bỏ hẳn, không có đường lùi: để lại thì kẻ đứng giữa chỉ việc ép hai bên nói bản cũ rồi tấn công như thường.
Không ai mạo danh được máy của bạn
Nếu chỉ cần khai “tôi là ID này” mà máy chủ tin thì ai cũng cướp được ID người khác. Nên mỗi máy giữ một khoá riêng Ed25519 trong kho cục bộ; mỗi lần ghi danh, máy chủ ra một thách thức ngẫu nhiên và máy phải ký lại — không ký được thì không nhận ID.
Dò ID không ăn thua
ID chỉ có 9 chữ số nên về lý thuyết quét được. Máy chủ vì thế chặn theo IP khi gọi hỏng quá 10 lần một phút, và không nói cho bên gọi biết là “ID không tồn tại” hay “máy đang tắt”. Phiếu mở phiên dùng một lần rồi hết hạn sau 20 giây.
Bí mật nằm trong tệp riêng của tài khoản bạn
ID và mã cất trong kho cục bộ với quyền đọc chỉ dành cho tài khoản của bạn trên máy. Không đồng bộ lên mây, không sao lưu ra ngoài.
Quyền hệ thống xin đúng thứ cần
Ghi màn hình để truyền hình, Trợ năng để nhận chuột và bàn phím — hai quyền đó do macOS cấp, bạn thu hồi lúc nào cũng được và app dừng ngay lúc ấy.
Bắt đầu cũng nhanh thôi
Cài app lên máy ở nhà, chọn vai cho nó, rồi gõ hai con số ở đầu bên kia — bằng app hay bằng trình duyệt cũng được. Chừng mười phút là xong, và không phải khai gì về mình.