Coldcard Mk3: Khi trái tim phần cứng nói dối, 38 triệu USD là cái giá của niềm tin
Ngô Việt
Coinkite vừa phát đi một thông báo khiến toàn bộ cộng đồng bitcoin tự quản lý tài sản phải chấn động: người dùng Coldcard Mk3 phải ngừng sử dụng thiết bị và chuyển toàn bộ tiền sang nơi khác. Không phải vì một lỗi giao diện người dùng, không phải vì một cuộc tấn công mạng từ xa. Mà vì chính phần seed generation – trái tim của chiếc ví cứng – đã bị đặt dấu hỏi. Trong cùng khoảng thời gian, một chuyên gia bảo mật bitcoin đang điều tra vụ mất 38 triệu USD có khả năng liên quan trực tiếp đến lỗ hổng này. Tôi không tin vào lời hứa, tôi kiểm tra mã nguồn. Và mã nguồn của niềm tin này vừa lộ ra một vết nứt sâu.
Bối cảnh của sự việc không hề đơn giản. Coldcard Mk3 là sản phẩm của Coinkite, một công ty Canada hoạt động từ năm 2013, được cộng đồng bitcoin coi là một trong những lựa chọn an toàn nhất cho việc tự quản lý tài sản. Khác với Ledger hay Trezor, Coldcard tập trung hoàn toàn vào bitcoin, phục vụ đúng đối tượng người dùng kỹ thuật cao, những người hiểu rõ giá trị của việc nắm giữ private key. Sản phẩm này được quảng bá với khẩu hiệu ngầm rằng: một khi tiền đã nằm trong Coldcard, không ai có thể lấy đi nếu không có thiết bị vật lý. Sự thật nằm dưới lớp bytecode, và bytecode của sinh mệnh chiếc ví này – lớp RNG tạo seed – đang bị nghi ngờ.
Hãy để tôi giải thích rõ hơn về bản chất kỹ thuật của vấn đề. Một chiếc hardware wallet tạo ra seed phrase bằng cách thu thập entropy – nguồn ngẫu nhiên – từ các con chip vật lý bên trong thiết bị. Nếu nguồn ngẫu nhiên này đủ mạnh và không thể đoán trước, seed sẽ an toàn. Nhưng nếu entropy bị giới hạn, nếu RNG (Random Number Generator) được triển khai sai cách, kẻ tấn công có thể tái tạo lại toàn bộ quá trình tạo seed mà không cần chạm vào thiết bị. Họ chỉ cần biết thuật toán, biết dải giá trị có thể có của entropy, và brute-force. Đây không phải là chuyện lý thuyết. Đây là vụ việc đã xảy ra nhiều lần trong lịch sử các thiết bị mật mã: từ những chiếc smart card ngân hàng bị khai thác vào đầu những năm 2000, đến các ví tiền điện tử bị rút sạch vì dùng thư viện tạo số ngẫu nhiên yếu. Và bây giờ, đến lượt Coldcard.
Điều đáng chú ý nhất trong thông báo của Coinkite không phải là việc họ thừa nhận rủi ro. Mà là việc họ không nói 'hãy đợi bản vá firmware'. Họ nói 'hãy chuyển tiền đi'. Đây là tín hiệu kỹ thuật quan trọng nhất. Nếu lỗ hổng nằm ở phần mềm, họ có thể vá. Nhưng nếu lỗ hổng nằm ở phần cứng – ở con chip RNG được hàn trên bo mạch – thì không có bản vá nào cứu được. Mỗi chiếc Mk3 đã được sản xuất với một trái tim khiếm khuyết. Trong kinh nghiệm audit của tôi, một công ty sẵn sàng yêu cầu khách hàng từ bỏ hoàn toàn dòng sản phẩm đang bán chạy là một công ty hiểu rõ họ đang đối mặt với thảm họa không thể che giấu. Khi tôi phân tích ICO SmartMesh năm 2017 và phát hiện lỗ hổng reentrancy trong hợp đồng của họ, nhóm phát triển vẫn cố vá bằng một đoạn code chắp vá. Họ không yêu cầu người dùng rút tiền. Kết quả là dự án sụp đổ vài tuần sau đó. Coinkite đã chọn cách ngược lại: chấp nhận mất mặt để cứu người dùng.
Câu hỏi tiếp theo là: 38 triệu USD kia có liên quan gì? Hiện tại chưa có kết luận chính thức. Chuyên gia bảo mật được nhắc đến trong báo cáo vẫn đang điều tra độc lập. Nhưng nếu vụ mất tiền được xác nhận là do seed generation yếu, thì con số 38 triệu USD chỉ là phần nổi của tảng băng. Những kẻ tấn công có thể đã quét toàn bộ không gian khóa của seed được tạo ra từ Mk3 trong một khoảng thời gian dài. Mỗi giao dịch đều để lại dấu vết. Nhưng nếu tất cả các địa chỉ đều được tạo ra từ cùng một RNG yếu, dấu vết đó giống như một vụ trộm mà hung thủ đã để lại chìa khóa của tất cả các cánh cửa trong cùng một ổ khóa.
Bây giờ, hãy nói về điều mà hầu hết mọi người không muốn nghe: đây không chỉ là vấn đề của Coinkite. Đây là vấn đề của cả ngành công nghiệp hardware wallet. Câu chuyện 'cứ mua ví cứng là an toàn' đã ăn sâu vào tâm trí người dùng đến mức biến thành một tín điều. Nhưng sự thật là: phần lớn các ví cứng trên thị trường đều sử dụng chip RNG từ các nhà sản xuất bên thứ ba, và quy trình kiểm định nguồn entropy hiếm khi được công khai. Ledger từng bị chỉ trích vì vụ rò rỉ dữ liệu khách hàng năm 2020. Trezor từng có vụ tấn công vật lý bằng voltage glitching. Những sự cố này cho thấy một mô thức chung: không có thiết bị nào là 'không thể bị phá vỡ'. Chỉ là chúng ta chưa tìm ra điểm yếu của nó mà thôi.
Tuy nhiên, ở một góc độ phản trực giác, tôi nghĩ sự cố này có thể là chất xúc tác để ngành trưởng thành hơn. Thị trường đi ngang hiện tại đang lọc sạch những dự án thiếu nền tảng kỹ thuật vững chắc. Coinkite buộc phải đối mặt với bài toán sinh tử: hoặc công bố root cause analysis chi tiết, hoặc đánh mất hoàn toàn vị thế 'vua bảo mật'. Điều này tạo ra áp lực tích cực lên toàn ngành. Các công ty như Ledger, Trezor, BitBox, Passport buộc phải mở hồ sơ kiểm định RNG của họ. Các công ty kiểm toán bảo mật sẽ có thêm một mảng kinh doanh mới: kiểm tra chất lượng nguồn ngẫu nhiên phần cứng. Và quan trọng hơn, người dùng sẽ học được một bài học quý giá: đặt toàn bộ tài sản vào một thiết bị duy nhất, dù thiết bị đó đắt tiền và được quảng bá rầm rộ, là một quyết định có rủi ro. Cấu trúc thanh khoản từng khối từng khối; cấu trúc an toàn cũng cần được xây dựng theo cùng một cách. Đa chữ ký, ví phần cứng từ nhiều nhà sản xuất khác nhau, hoặc chia nhỏ tài sản theo nhiều tầng bảo mật – đó mới là hướng đi bền vững.
Vậy chúng ta đang ở đâu? Chúng ta đang ở thời điểm mà một trong những biểu tượng của phong trào tự quản lý tài sản đã thừa nhận rằng nền tảng của họ không vững chắc như họ từng tuyên bố. Rủi ro ẩn trong dòng code dài, và rủi ro còn ẩn sâu hơn trong dòng điện chạy qua một con chip mà không ai nhìn thấy. Tôi không nghĩ rằng đây là lúc để hoảng loạn bán tháo mọi loại ví cứng. Nhưng tôi cũng chắc chắn rằng đây là lúc để mỗi người dùng tự hỏi: tôi đang đặt niềm tin vào cái gì, và liệu niềm tin đó có dựa trên một chuỗi bằng chứng kỹ thuật có thể kiểm chứng? Số liệu thực tế luôn nói điều ngược lại với lời quảng cáo. Coinkite vừa cho chúng ta một minh chứng đắt giá nhất trong lịch sử ngành phần cứng tiền mã hóa.