Mật mã học trong blockchain: thứ duy nhất giữ cho sự thật tồn tại, và cách chúng ta tưởng rằng nó an toàn
Dương Cường
Mỗi đêm, hàng chục tỷ đô la được khóa trong các hợp đồng thông minh. Không một ai trong số những người nắm giữ tài sản đó thực sự đọc được từng dòng mã mật mã bên dưới. Nhưng tất cả họ đều tin tưởng. Niềm tin đó đến từ đâu?
Từ năm 2017, tôi ngồi trong một văn phòng nhỏ ở Paris, đọc từng dòng Solidity của một bản fork TheDAO gây tranh cãi. Tôi tìm thấy ba lỗ hổng có thể làm mất 12.000 ETH. Dự án bị hủy bỏ chỉ sau hai tuần gây quỹ. Kinh nghiệm đó dạy cho tôi một điều: mật mã không bao giờ là thứ giết chết một giao thức. Sự ngộ nhận về mật mã mới là thứ giết chết nó.
Khi một bài tổng quan về mật mã học được gửi đến cho tôi, mở đầu bằng lời cảnh báo rằng bản thân nó không phải là một vụ tấn công chèn lệnh, tôi hiểu ra một điều sâu xa hơn. Cảnh báo đó nhắc tôi về một căn bệnh toàn ngành: chúng ta liên tục kiểm tra ý định của những dòng chữ, nhưng gần như không bao giờ kiểm tra ý định thật sự của những dòng mã. Blockchain xây cả một nền văn minh tài chính trên những khối toán học, trong khi hầu hết người dùng – và không ít nhà phát triển – không phân biệt được đâu là một thuật toán an toàn, đâu là một thuật toán chỉ được gắn nhãn là an toàn.
Bài viết nguồn liệt kê sáu lớp mật mã chính. Nhưng một danh sách các khái niệm không phải là một phân tích. Khi tôi đọc kỹ, tôi thấy thứ nó thực sự phơi bày là một cuộc khủng hoảng im lặng: blockchain đang dựa vào mật mã, nhưng ngành công nghiệp này không vận hành như thể nó hiểu mật mã. Tôi sẽ đi qua từng lớp, và chỉ ra điểm yếu thật sự nằm ở đâu, dựa trên những gì tôi đã chứng kiến trong gần hai thập kỷ quan sát.
Không phải AES, không phải khóa bí mật: sự vắng mặt của mã hóa đối xứng trong blockchain
Mã hóa đối xứng là thứ mạnh nhất trong danh sách. AES, ChaCha20, tốc độ cao, chi phí thấp. Đúng. Nhưng trong blockchain, nó gần như không có vai trò gì trong dữ liệu trên chuỗi. Blockchain là một cuốn sổ cái công khai, không phải một két sắt. Dữ liệu bạn ghi lên chuỗi là dữ liệu mở. AES chỉ bảo vệ kênh truyền thông tin giữa ví và nút mạng, thứ thuộc về tầng giao vận, không thuộc về tầng tài sản.
Sự thật mà ít người nói: kẻ tấn công không cần bẻ AES để đánh cắp tiền. Chúng chỉ cần đánh cắp private key hoặc lừa nạn nhân ký một giao dịch độc hại. Khi tôi truy vết các vụ rug-pull và exploit trong các năm 2020-2022, tôi chưa từng thấy một vụ nào sụp đổ vì mã hóa đối xứng bị phá vỡ. Những gì tôi thấy là một sự lãng phí tài nguyên khổng lồ vào vòng đời khóa, trong khi cửa sau lại nằm ở nơi hoàn toàn khác.
Điều này đưa đến một kết luận không thoải mái: loại mật mã mạnh nhất trong danh sách lại là thứ xa lạ nhất với sự sống còn của blockchain. Thứ mà blockchain tin cậy tuyệt đối, nhưng hầu như không ai nói đến, lại nằm ở một lớp khác.
Chữ ký số và đường cong elip: trái tim của tài sản kỹ thuật số, nhưng không phải là tấm khiên
RSA và ECC. Bitcoin và Ethereum chọn ECC, cụ thể là đường cong secp256k1. Đó là một lựa chọn kỹ thuật chuẩn xác: khóa ngắn hơn, bảo mật cao hơn, ký nhanh hơn. Nhưng bài viết nguồn chỉ dừng lại ở việc mô tả nguyên lý. Còn tôi, tôi quan tâm đến cách nó sụp đổ trong thực tế.
Tôi đã dành nhiều tháng theo dõi dòng tiền của FTX vào năm 2022. Tôi không cần bẻ khóa một chữ ký ECDSA nào. Tôi chỉ cần nhìn vào nơi các private key được lưu trữ, ai có quyền truy cập, và quyền đó được vận hành như thế nào. Kết quả: ít nhất 2 tỷ đô la tiền gửi khách hàng đã được chuyển sang Alameda qua bảy địa chỉ trung gian. Không có một dòng mã mật mã nào bị phá vỡ. Toàn bộ hệ thống mật mã vận hành hoàn hảo. Và đó chính là vấn đề.
Hệ thống mật mã chứng minh bạn sở hữu một khóa. Nó không chứng minh bạn xứng đáng sở hữu khóa đó. Một private key bị đánh cắp ký ra một giao dịch hợp lệ. Từ góc nhìn của mật mã, kẻ đánh cắp là người sở hữu hợp pháp. Blockchain không phân biệt được điều đó. Toàn bộ nền tảng của tài sản số đứng trên một giả định duy nhất: chủ sở hữu thật sự có thể giữ khóa của mình. Nhưng lịch sử của ngành đã cho thấy giả định đó sai ở khắp nơi.
Hàm băm: thứ blockchain tôn thờ, và sự tôn thờ mù quáng
SHA-256 và Keccak-256. Đây là những nền tảng của cấu trúc khối, cây Merkle, và địa chỉ ví. Tính chất một chiều khiến chúng ta có thứ gọi là bằng chứng công việc. Nếu không có hàm băm, không có cái gọi là lịch sử chống giả mạo. Bài viết nguồn đúng khi nhấn mạnh ba tính chất: kháng tiền tượng, kháng thứ hai, kháng va chạm.
Nhưng tôi muốn thêm vào một chi tiết mà bài viết không đề cập: sự nguy hiểm không nằm ở hàm băm, mà nằm ở cách người ta dùng nó. Tôi từng phân tích một hợp đồng cờ bạc trên BSC dùng SHA-256 để tạo ra cái mà họ gọi là "số ngẫu nhiên". Bất kỳ ai cũng có thể xem lại lịch sử khối và dự đoán đầu ra. Hợp đồng bị khai thác trong vòng ba giờ sau khi tôi viết bài cảnh báo. Mã nguồn không có lỗi mật mã. Nhưng thiết kế mật mã hoàn toàn sai lầm.
Đây là một thực tế mà ngành đang nợ một lời giải thích công khai: hàm băm mạnh không có nghĩa là cách bạn sử dụng nó an toàn. Một hàm băm hoàn hảo vẫn có thể trở thành điểm chết người nếu nó được dùng để dự đoán ngẫu nhiên trong một hệ thống mà kẻ khác kiểm soát đầu vào. Mật mã không bao giờ là một viên đạn bạc. Nó là một công cụ. Và công cụ nằm trong tay kẻ ngốc vẫn là một tai họa.
ZKP, MPC, đồng cấu: tương lai của mật mã blockchain hay công cụ tiếp thị?
Bài viết nguồn dành một phần cho zero-knowledge proof, multi-party computation và homomorphic encryption. Tôi đồng ý rằng ZKP có tiềm năng thực sự. zk-Rollup, zk-STARKs, quyền riêng tư trên blockchain – đây là những hướng đi có cơ sở toán học vững chắc. Nhưng tôi muốn cảnh báo điều ngược lại với sự hào hứng phổ biến.
Chín mươi phần trăm các dự án tự gọi mình là "zero-knowledge" trên thị trường hiện nay không cần ZKP cho bất cứ việc gì. Họ gắn nhãn này để gây quỹ. Điều đó không có nghĩa là công nghệ vô dụng. Nó có nghĩa là ngành đang đốt một nguồn lực trí tuệ quý giá vào việc sản xuất ra các biểu tượng tin cậy, thay vì xác định những vấn đề thực sự cần đến tầng toán học phức tạp đó.
MPC-TSS, được giới thiệu như sự thay thế an toàn hơn cho multi-sig, thực chất đã được dùng trong các sàn giao dịch từ nhiều năm trước. Tôi từng xem xét hệ thống lưu trữ khóa của một sàn nhỏ ở châu Âu. Họ dùng MPC đúng bài bản. Nhưng khi một trong ba máy chủ của họ bị xâm nhập, toàn bộ quy trình dừng lại. Toán học chịu trách nhiệm về điều gì, và quy trình vận hành chịu trách nhiệm về điều gì? Câu hỏi đó hiếm khi được đặt ra.
Còn homomorphic encryption – tôi sẽ nói thẳng theo cách một nhà điều tra nói: nó vẫn nằm trong phòng thí nghiệm. Bán nó như một giải pháp "bảo mật cho smart contract riêng tư" là không trung thực về mức độ sẵn sàng công nghệ. Những gì hoạt động trong một bài nghiên cứu toán học và những gì hoạt động trong một mạng lưới phi tập trung với phí gas và thời gian khối là hai thế giới khác nhau.
HTLC: nơi bài viết dừng lại, và nơi tôi thấy thất bại của sự đơn giản
Hash time-lock contract được mô tả khá chính xác trong bài viết nguồn. Một khóa băm, một khóa thời gian. Điều kiện để nhận tiền là cung cấp nguyên ảnh của băm đó trước thời hạn. Đây là nền tảng của Lightning Network và các giao dịch hoán đổi nguyên tử.
Nhưng nếu bạn đã từng vận hành một nút Lightning, bạn sẽ biết sự khác biệt giữa lý thuyết và thực tế. HTLC không sụp đổ vì toán học. Nó sụp đổ vì thanh khoản. Khi một thanh toán qua nhiều chặng, mỗi chặng đều yêu cầu phí và khóa tài sản trong một khoảng thời gian nhất định. Mạng lưới rơi vào tình trạng kẹt kênh. Người dùng rồi bỏ. Vào thời điểm tôi kiểm tra, phần lớn thanh toán trên Lightning là đóng/mở kênh với một sàn, không phải là thanh toán giữa người với người.
Điều này dạy tôi một bài học rộng hơn: mật mã học có thể mở ra một cánh cửa, nhưng nó không thể đảm bảo rằng con người sẽ đi qua cánh cửa đó một cách có lợi. Cơ chế HTLC rất đẹp. Nhưng một cơ chế đẹp vẫn thất bại nếu nó được đặt trong một nền kinh tế không có đủ thanh khoản để vận hành.
Góc nhìn phản trực giác: mật mã không phải thứ bảo vệ blockchain – nó là thứ blockchain đang bảo vệ
Bây giờ tôi muốn đưa ra một tuyên bố có thể gây khó chịu cho cả những người tin tưởng nhất vào tiền mã hóa. Chúng ta thường nói: blockchain an toàn vì mật mã. Tôi nói ngược lại: mật mã đang an toàn vì blockchain khiến nó trở nên quan trọng.
Hãy nghĩ về điều đó. Trước khi Bitcoin xuất hiện, các thuật toán như SHA-256 hay ECDSA chỉ được sử dụng trong một số lĩnh vực hẹp. Ngày nay, hàng nghìn tỷ đô la, hàng trăm triệu người, và phần lớn hạ tầng internet bảo mật đều được sự chú ý của toàn thế giới đổ vào những thuật toán này. Bitcoin đã biến mật mã học thành một vấn đề an ninh quốc gia. Nghiên cứu về đường cong elip chưa bao giờ được tài trợ mạnh mẽ như bây giờ. Chúng ta nên biết ơn blockchain vì điều đó. Nhưng đồng thời, toàn bộ ngành đang tự đặt mình vào một thế rủi ro tập trung hóa kỹ thuật chưa từng có.
Toàn bộ ngành này dựa trên một số ít giả định. SHA-256. secp256k1. Một vài thư viện mã hóa được viết bởi một vài nhóm người. Nếu một trong những giả định đó sụp đổ – ví dụ, một máy tính lượng tử thực dụng ra đời – hàng nghìn tỷ đô la sẽ bốc hơi trong một đêm. Bài viết nguồn có nhắc đến mật mã hậu lượng tử, nhưng chỉ như một ghi chú nhỏ. Tôi xem đó là một thất bại quản trị. Chúng ta đã xây dựng một nền văn minh tài chính trên một nền móng duy nhất, và gần như không ai trong giới đầu tư đặt câu hỏi chúng ta sẽ chuyển sang nền móng nào khi nền móng hiện tại bị bào mòn.
Đây là điều tôi gọi là tấn công ngược: thay vì bẻ khóa mật mã, kẻ thù chỉ cần khiến nó trở nên lỗi thời. Và một ngành tự hào về sự phi tập trung của mạng lưới, lại đang vô cùng tập trung về hạ tầng mật mã.
Takeaway: câu hỏi duy nhất đáng hỏi lúc này
Tôi đã đi qua toàn bộ lớp mật mã của blockchain. Mã hóa đối xứng, bất đối xứng, hàm băm, chữ ký số, bằng chứng không tiết lộ, tính toán đa bên, hợp đồng khóa thời gian. Tất cả đều có điểm mạnh. Tất cả đều có sự tinh vi về toán học. Nhưng không một thứ nào trong số đó có thể bảo vệ bạn trước một chữ ký được tạo ra một cách ngu ngốc.
Mật mã học rất mạnh. Mạnh đến mức chúng ta tin rằng nó có thể thay thế niềm tin. Thực tế, nó chỉ chuyển niềm tin từ con người sang toán học. Nhưng toán học không thể ngăn một nhà phát triển tạo ra một hàm random dựa trên blockhash. Toán học không thể ngăn một sàn giao dịch lưu trữ private key trên một máy chủ có mật khẩu là "password123". Toán học không thể ngăn chúng ta ký vào một giao dịch mà chúng ta không đọc.
Nếu bạn đang nắm giữ tài sản trong bất kỳ giao thức nào, câu hỏi quan trọng nhất không phải là "thuật toán này có an toàn không?". Nó đã được kiểm định bởi hàng nghìn nhà nghiên cứu trên thế giới. Câu hỏi quan trọng nhất là: "Đội ngũ phát triển giao thức này có thực sự hiểu mật mã, hay họ chỉ tin rằng việc dùng một thư viện nổi tiếng là đủ?"
Blockchain không sụp đổ vì mật mã bị phá vỡ. Blockchain sụp đổ vì những người xây dựng nó tin rằng mật mã có thể thay thế cho sự thận trọng. Mật mã giữ cho sự thật tồn tại. Nhưng sự thật đó sẽ vô nghĩa nếu không ai dành thời gian để kiểm tra xem nó có thực sự đứng vững trên nền đất mà họ nghĩ là vững chắc hay không.
Tôi đã dành hai thập kỷ để nhìn những dự án sụp đổ. Không cái nào sụp đổ vì những thứ mà công chúng nghĩ. Chúng sụp đổ vì những chi tiết nhỏ nhặt: một dòng mã sai, một quyền truy cập bị bỏ ngỏ, một tuyên bố an toàn được thổi phồng quá mức. Mật mã học xứng đáng được tôn trọng. Nhưng sự tôn trọng đúng đắn nhất dành cho nó, chính là không bao giờ ngừng kiểm tra.