https://twitter.com/phantom/status/1554626111535026177 https://twitter.com/SolanaStatus/status/1554658171934937090 https://twitter.com/slope_finance/status/1554916417044156419
Vài ngày qua coinbiz dậy sóng vì sự cố tiền trong ví trên Solana không cánh mà bay, cụ thể là trên Phantom wallet & Slope wallet.
Qua điều tra, nguyên nhân là “không rõ vô tình hay cố ý” các app này đã gửi plain text của seed words (passphrase) qua sentry service -> toang.
https://twitter.com/SlowMist_Team/status/1554943555696791553
“Not your keys, not your coins” vẫn luôn đúng, nhưng trong trường hợp này thì không phải là “your keys” nữa rồi, mà đã trở thành “you and me, and x, and y keys”, nói cách khác “our keys”.
Tiền trong ví lúc này giống như tiền trong nhà mà ta và hacker đều có chìa khoá cửa vậy.
Trong hầu hết tất cả các blockchain hiện nay, wallet được sinh bởi “một và chỉ một” seed/private key, và seed/private key này là “không thể thay thế”.
Điều này có nghĩa là một khi mất, hay lộ seed/private key, thì tất cả những ai sở hữu seed/private key đó đều có quyền giống hệt nhau, có nghĩa là họ đều sẽ có quyền chuyển tiền đi mà ta không thể nào ngăn chặn hay vô hiệu hoá quá trình này được.
Có một cách khắc phục khả dĩ, đó chính là chuyển hết coin trong ví đi ngay lập tức khi bị lộ key, được bao nhiêu hay bấy nhiêu. Sau đó quên ví đó đi và tạo ví mới.
trên thực tế thì nếu lộ key thì thường tiền sẽ bị chuyển hết ngay trước khi ta kịp nhận ra và làm bất cứ điều gì.
Với các hệ thống blockchain hiện nay như Ethereum/Solana/Cosmos/Polkadot… thì account sinh ra bởi private key là top level account, tức có private key là có tất cả.
private key sinh ra bởi seed words (passphrase).
Với Near thì khác, Near có 2 loại account:
- Explicit account: là account dạng kiendt.near
- Implicit account: là account dạng 2ae7ff06283896d69d5ec58e2b5178b8d649e5fe03693270e2d609c4d3fb0750 giống như các hệ blockchain khác, account này sinh ra bởi private key -> có private key là có tất cả.
Phần lớn người dùng thông thường dùng explicit account.
Với explicit account, top level account giống như domain vậy, dạng kiendt.near, có account này mới là có tất cả.
Account này có thể được kiểm soát bởi:
- ledger (ví phần cứng)
- pass phrase (seed)
và ledger hay passphrase này có thể thay thế được, có nghĩa là nếu nhận thấy lộ passphrase ở đâu đó, ta hoàn toàn có thể thay thế passphrase/ledger khác cho account của mình.
Điều này ở các hệ blockchain khác là bất khả thi, đây là một điểm khác biệt thú vị trong kiến trúc wallet của Near so với các blockchain khác.
Không chỉ có vậy:
- Đối với các ứng dụng dapp, ban đầu Near chỉ cho phép app sử dụng tối đa 0.25 Near của người dùng, mọi hoạt động dùng tiền thêm khác đều cần sự đồng ý riêng của người dùng.
- Near có mô hình Access Key cho việc tương tác với các ứng dụng, giống với Oauth trong web truyền thống:
- FullAccess Key nếu cho phép truy cập tất cả các quyền hạn của ví
- FunctionCall Key chỉ cho phép gọi các hàm non-payable, và sử dụng allowance trong giới hạn 0.25 Near đã cho phép mà thôi.
Tóm lại, Near account có một kiến trúc khác biệt so với các blockchain hiện tại, nhiều lớp bảo mật hơn, và có thể recover account trong trường hợp lộ key.
Theo đánh giá cá nhân, việc đưa domain làm top level account thay vì account sinh bởi private key là một điểm thú vị của Near.
Tuy nhiên không có gì có thể coi là hoàn hảo:
- passphrase có thể được thay thế, điều đó có nghĩa là nếu ta có thể thay thế thì hacker cũng có thể thay thế nó, vấn đề là ai nhanh hơn và có nhiều quyền hơn. Ví dụ trong trường hợp ta bật thêm 2FA thì sẽ thêm một lớp bảo mật nữa, nếu chỉ có passphrase thì sẽ không đủ quyền để thao tác trên account của ta.
- 2FA là trade-off, thêm một lớp bảo mật, nhưng cũng đồng nghĩa với việc ta phải lưu thông tin về 2FA ở đâu đó, quá trình lưu trữ này cũng có thể xảy ra lỗ hổng bảo mật giống như trường hợp của ví Solana ở đầu bài.
“Not your keys, not your coins” - hãy luôn giữ key của mình an toàn, và luôn có phương án backup.