Bài viết bởi Liam 'Akiba' Wright
Biên dịch: Saoirse, Foresight News
Trước khi ví phần cứng được kết nối với mạng, hàng rào bảo mật của ví đã có thể bị xâm phạm. Một ví phần cứng cách ly hoàn toàn có thể giữ riêng tư khóa trong nhiều năm, nhưng ngay từ khoảnh khắc tạo ra cụm từ phục hồi, rủi ro đã được ẩn chứa.
Lỗ hổng ngẫu nhiên do Coldcard mới đây công khai đã hoàn toàn xác nhận bẫy bảo mật này. Các ví bị ảnh hưởng có thể tạo ra một chuỗi 12 hoặc 24 từ khôi phục trông hoàn toàn bình thường, cho phép người dùng lưu trữ cẩn thận chuỗi này và ký giao dịch ngoại tuyến. Tuy nhiên, phạm vi của bộ tạo số ngẫu nhiên dưới nền thực chất đã bị thu hẹp đáng kể. Kẻ tấn công có thể duyệt hết tất cả các tổ hợp hạt giống có thể trên các thiết bị khác để khôi phục các hạt giống ứng cử; sau đó đối chiếu với sổ cái công khai của Bitcoin để lọc ra các hạt giống hợp lệ khớp với địa chỉ thực tế.
The security fate of a wallet is determined at the moment the seed is created. Before PIN codes, steel mnemonic backup plates, tamper-evident seals, or air-gapped systems come into play, the seed must first be generated from a truly reliable source of randomness.
Một bộ tạo số ngẫu nhiên hiện đại chất lượng cao có thể tạo ra đủ độ ngẫu nhiên. Tuy nhiên, nếu kẻ tấn công nắm được logic hoạt động của bộ tạo số ngẫu nhiên, chúng có thể đảo ngược để suy ra toàn bộ quy trình tạo ra.
Việc ném xúc xắc thủ công cung cấp cho người dùng một nguồn ngẫu nhiên, tính ngẫu nhiên trực quan và có thể kiểm soát, đồng thời độc lập với mã do nhà sản xuất viết.
Các điểm yếu tiềm ẩn trong bảo mật ví Bitcoin
Việc tạo seed của Coldcard ẩn chứa rủi ro bảo mật. Kẻ tấn công có thể tạo các seed ứng cử bên ngoài thiết bị, chuyển đổi thành địa chỉ khóa công khai, rồi so sánh với các giao dịch trên sổ cái công khai của Bitcoin để thực hiện tấn công.
Nguồn gốc kỹ thuật của lỗ hổng nhỏ đến mức đáng sợ. Vào ngày 1 tháng 3 năm 2021, một thay đổi mã nguồn đã di chuyển chức năng tạo seed của Coldcard sang kho mã hoàn toàn mới. Trong firmware sản xuất hàng loạt, cấu hình MICROPY_HW_ENABLE_RNG được đặt thành 0, cho thấy bộ sinh ngẫu nhiên phần cứng đã bị vô hiệu hóa; nhưng logic tích hợp mã chỉ kiểm tra xem cấu hình này có tồn tại hay không, chứ không đọc giá trị cấu hình. Chỉ cần cấu hình này tồn tại, hệ thống sẽ từ bỏ bộ sinh ngẫu nhiên phần cứng và chuyển sang sử dụng thuật toán xác định Yasmarang trong MicroPython như giải pháp thay thế. Theo báo cáo phân tích phối hợp của Block, logic có khuyết điểm này đã được phát hành chính thức vào ngày 17 tháng 3 cùng với phiên bản firmware 4.0.0.
Mã phục hồi được tạo ra trông không có bất kỳ bất thường nào, nhưng không gian tìm kiếm có thể bẻ khóa phía sau đã bị thu hẹp đáng kể. Theo tính toán sơ bộ của Coinkite, không gian tìm kiếm hiệu quả của các mẫu Mk2 và Mk3 bị ảnh hưởng chỉ khoảng 40 bit; không gian tìm kiếm hiệu quả của các mẫu Mk4, Mk5 và loạt Q bị ảnh hưởng khoảng 72 bit.
Đội ngũ Block đã đưa ra các điều kiện hạn chế riêng cho các mẫu máy tiếp theo: khi trạng thái thuật toán dự phòng và lịch sử gọi là cố định, thì tối đa chỉ tồn tại 2^32 luồng ngẫu nhiên có thể phân biệt được. Dữ liệu do Coinkite cung cấp đã ước tính phạm vi tìm kiếm hiệu quả mà kẻ tấn công có thể duyệt qua.
Cả hai báo cáo phân tích đều xác nhận rằng tất cả các mẫu máy sản xuất sau này trước khi vá firmware đều nằm trong phạm vi rủi ro. Thông báo bảo mật của Coinkite nêu rõ: các phiên bản firmware Mk4 và Mk5 trước phiên bản tiêu chuẩn 5.6.0 và Edge 6.6.0X; các phiên bản firmware dòng Q trước phiên bản tiêu chuẩn 1.5.0Q và Edge 6.6.0QX đều bị ảnh hưởng. Đối với Mk2 và Mk3, Coinkite liệt kê các phiên bản rủi ro là từ 4.0.1 đến 4.1.9, trong khi nhóm Block cho rằng lỗ hổng đã tồn tại từ phiên bản 4.0.0. Đối với ranh giới phiên bản gây tranh cãi này, người dùng được khuyến nghị nên tiếp cận một cách thận trọng.
Sự kiện này cho thấy rõ ràng: chỉ cài đặt phiên bản firmware mới không thể khắc phục các lỗ hổng bảo mật của ví hiện tại. Việc nâng cấp lên phiên bản đã sửa lỗi chỉ đảm bảo an toàn cho các seed mới được tạo sau này; tất cả các seed cũ đã được tạo trước đó sẽ chỉ giữ nguyên giá trị entropy tại thời điểm tạo, và tất cả các địa chỉ được sinh ra từ seed này sẽ chia sẻ cùng một khóa cơ sở.
Tất cả người dùng sử dụng phiên bản firmware rủi ro đều nên tham khảo thông báo bảo mật chính thức. Trừ khi bạn xác nhận được seed được tạo bởi việc ném xúc xắc thủ công đủ lần, bạn phải sử dụng firmware đã được sửa chữa, dựa vào nguồn ngẫu nhiên đáng tin cậy để tạo seed mới và chuyển tài sản sang ví mới. Nếu chỉ sử dụng mnemonic cũ để tạo địa chỉ mới, lỗ hổng bảo mật cũ sẽ vẫn được giữ nguyên.
Bitcoin Optech đã công bố dữ liệu ước tính vào ngày 31 tháng 7, cho thấy quy mô tài sản bị đe dọa vượt quá 1.000 BTC. Tính đến ngày 2 tháng 8, Galaxy Research ước tính khoảng 1.367 BTC đang gặp rủi ro trong tổng cộng 4.585 địa chỉ. Một người dùng trên nền tảng X có tên Graham_Quantum cho biết, vào ngày 29 tháng 7, đã có 18,25245043 BTC được chuyển ra khỏi ví liên quan.
Sau khi tin tức được tiết lộ, nhiều người dùng đã chuyển tài sản nhằm tránh rủi ro, dẫn đến dòng tiền quy mô lớn hơn nhiều. Sau khi thông tin lỗ hổng được công bố, 77.402 BTC đã được chuyển ra khỏi kho UTXO cũ.
Cần phân biệt hai loại dữ liệu:

Sự cố an ninh này đồng thời gây ra hai cú sốc: một là hacker đánh cắp tài sản, hai là làn sóng người dùng chủ động di chuyển tài sản để tự bảo vệ với quy mô lớn hơn.
Lỗ hổng ví Coldcard, trị giá khoảng 89 triệu USD, đã gây ra đợt chuyển tiền Bitcoin trên chuỗi lớn nhất kể từ sự cố của FTX, đồng thời làm nhiễu nghiêm trọng việc diễn giải tín hiệu thị trường. Hàng chục nghìn người dùng đã chuyển khẩn cấp Bitcoin từ ví cũ, khiến các chỉ số chuỗi cốt lõi đưa ra tín hiệu giảm giá trở nên khó phân biệt thật giả.
Việc ném xúc xắc thủ công mang lại những thay đổi gì
The official Dice documentation from Coldcard calculates: A fair six-sided die, with each independent roll generating approximately 2.585 bits of entropy. Rolling 50 times produces about 129.25 bits of raw entropy, meeting the standard 128-bit security requirement; rolling 99 times generates approximately 255.91 bits of raw entropy, nearly reaching the 256-bit security standard (this value has not yet been processed by the wallet's built-in conversion algorithm).
Các giá trị này tương thích với tiêu chuẩn từ nhớ BIP-39 được sử dụng rộng rãi: 12 từ nhớ mã hóa 128 bit entropy cộng thêm 4 bit kiểm tra; 24 từ nhớ mã hóa 256 bit entropy cộng thêm 8 bit kiểm tra.

Cơ chế cách ly ngoại tuyến của ví phần cứng chỉ có thể bảo vệ từ mật khẩu sau khi đã được tạo, nhưng không thể khắc phục lỗ hổng ngẫu nhiên yếu trong quá trình tạo; để tạo từ mật khẩu BIP-39 an toàn, cần sử dụng xúc xắc riêng tư để thu thập entropy độc lập.
Kiểm tra tổng chỉ dùng để phát hiện lỗi sao chép từ ngữ nhớ. Yếu tố thực sự quyết định tính bảo mật là dữ liệu ngẫu nhiên gốc bên dưới. Hàm băm và định dạng chuẩn hóa có thể làm đẹp cho đầu vào có độ ngẫu nhiên thấp, nhưng tổng không gian khả năng của khóa không thể mở rộng. Những từ ngữ 12 từ trông có vẻ an tâm có thể đến từ một hồ ngẫu nhiên cực kỳ nhỏ.
Điều kiện để ném xúc xắc thủ công phát huy tác dụng bảo vệ: quy trình tích hợp trong ví phải tiếp nhận chính xác dữ liệu ngẫu nhiên do xúc xắc tạo ra. Bản thân xúc xắc phải đạt tiêu chuẩn, mỗi lần ném đều thật sự ngẫu nhiên và không ảnh hưởng lẫn nhau, chuỗi ném phải được giữ bí mật toàn bộ. Việc lặp lại quy luật ném, ghi lại bằng hình ảnh, lưu trữ chuỗi trên đám mây, hoặc nhập kết quả vào máy tính có kết nối internet đều sẽ phá vỡ tính độc lập và tính bảo mật của sự ngẫu nhiên.
Về sự cố bảo mật Coldcard này, Coinkite cho biết: chỉ khi người dùng xác minh được rằng ít nhất đã thực hiện 50 lần gieo xúc xắc công bằng, độc lập và bảo mật trong quá trình tạo seed cuối cùng, thì mới không cần di chuyển tài sản; đối với mọi trường hợp không chắc chắn, công ty đều khuyến nghị di chuyển tiền.
Đối với tôi, giá trị cốt lõi của việc ném xúc xắc thủ công nằm ở việc dựa vào số ngẫu nhiên được tích hợp trong thiết bị, nghĩa là bạn phải tin tưởng tuyệt đối vào toàn bộ chuỗi bao gồm phần cứng, firmware, quy trình biên dịch và mã tích hợp.
Quy trình nhập xúc xắc chuẩn hóa có thể引入脱离这条信任链路、由用户自主掌控的熵。大致 50 次公平掷骰子对应 128 位安全等级,99 次对应 256 位安全等级。但用户必须严格遵循设备官方操作流程,不要自行设计随机数转换方案。
Đặt mật khẩu BIP-39 mạnh và độc nhất vô nhị để nâng cao ngưỡng tấn công lên một cấp độ khác. Mật khẩu này hoạt động như một khóa riêng biệt; ngay cả khi kẻ tấn công có được cụm từ phục hồi, chúng vẫn cần phá mật khẩu để truy cập tài sản. Lưu ý: Giá trị entropy của cụm từ phục hồi không tăng lên do việc thêm mật khẩu. Bất kỳ mật khẩu nào (ngay cả khi chỉ sai một ký tự) cũng sẽ tạo ra một bộ địa chỉ ví hợp lệ; nếu mất mật khẩu, tài sản sẽ bị khóa vĩnh viễn. Mã PIN của ví phần cứng hoàn toàn khác với mật khẩu.
Việc kích hoạt mật khẩu truy cập bản thân mang lại sự đánh đổi: nếu bạn có thể lưu trữ và nhập lại mật khẩu truy cập một cách chính xác, nó sẽ tạo thành một lớp bảo vệ thứ hai mạnh mẽ; nhưng nếu phương án sao lưu không đầy đủ, tính năng này có thể khiến bạn hoàn toàn không thể truy cập tài sản.
Vấn đề về tính ngẫu nhiên yếu xuất hiện lặp đi lặp lại
Lỗ hổng Coldcard một lần nữa cảnh báo mọi người: Nền tảng bảo mật của ví Bitcoin là sự ngẫu nhiên mạnh mẽ đầy đủ vào đúng khoảnh khắc tạo ra seed. Những lỗi cơ bản tương tự đã liên tiếp xảy ra trên nhiều sản phẩm ví khác nhau.
Năm 2023, Ledger Donjon công bố: phiên bản cụ thể của tiện ích mở rộng Trust Wallet sử dụng thuật toán梅森旋转 32-bit để tạo hạt giống ngẫu nhiên trong đường dẫn thực thi WebAssembly. Những từ phục hồi dường như hợp lệ này đều xuất phát từ khoảng 4 tỷ giá trị khởi đầu. Phạm vi rủi ro được xác định rõ: các tiện ích mở rộng phiên bản 0.0.172 đến 0.0.182 sử dụng Trust Wallet Core phiên bản trước 3.1.1. Cơ sở dữ liệu lỗ hổng quốc gia Mỹ ghi nhận lỗ hổng này đã bị khai thác vào tháng 12 năm 2022 và tháng 3 năm 2023.
Sự kiện 「Milk Sad漏洞」 đã trực quan thể hiện rủi ro tương tự. Lệnh bx seed trong Libbitcoin Explorer 3.x sử dụng thuật toán Mersenne Twister 32-bit được gieo hạt dựa trên thời gian hệ thống; trong điều kiện đồng hồ giống nhau, phần mềm có thể tạo ra cùng một từ nhớ. Kẻ tấn công chỉ cần ước lượng大致 thời gian tạo hạt, phạm vi bạo lực sẽ nhỏ hơn nhiều so với không gian mà từ nhớ ngụ ý.
Các nhà nghiên cứu đã phát hiện hơn 2.600 ví Bitcoin vẫn đang được sử dụng tích cực trong vùng rủi ro; theo ước tính giá thị trường tháng 8 năm 2023, giá trị tài sản bị đánh cắp liên quan trên nhiều chuỗi công khai vượt quá 900.000 USD. Trong số đó, hơn 2.550 ví thể hiện đặc điểm hoạt động tự động, rất có thể thuộc về cùng một chủ sở hữu. Các nhà nghiên cứu cũng chỉ ra rằng một số sự cố đánh cắp tài sản có thể đã kết hợp với các lỗ hổng bảo mật khác.
Các lỗ hổng này mỗi lần xuất hiện đều mang một diện mạo khác nhau: Coldcard vô tình kích hoạt thuật toán ngẫu nhiên dự phòng trong firmware; Trust Wallet mở rộng trình duyệt và công cụ dòng lệnh Libbitcoin tạo ra các số ngẫu nhiên yếu do phụ thuộc vào đồng hồ hệ thống. Khóa ví được tạo ra cuối cùng trông không có bất kỳ điểm yếu nào, nhưng quy mô của tập hợp khóa có thể bị duyệt hết nhỏ đến mức gây ra rủi ro nghiêm trọng.
Hầu hết các đề xuất về lưu trữ bitcoin trên thị trường đều được đưa ra sau khi tạo seed: lưu trữ từ khóa phục hồi ngoại tuyến, sử dụng phương tiện sao lưu bền vững, phân cách quyền hạn, kiểm tra quy trình khôi phục. Những biện pháp này vẫn mang lại giá trị. Nhưng sự cố của Coldcard nhắc nhở chúng ta rằng hàng rào bảo mật cần được đẩy lùi về phía trước một bước.
Sự cách ly không khí chỉ bảo vệ các khóa đã được nhập vào thiết bị của bạn. Chính vì vậy, an toàn ví Bitcoin phải bắt đầu từ nguồn ngẫu nhiên đáng tin cậy.

