Khóa riêng của Ethereum không đủ ngẫu nhiên, tin tặc bẻ khóa riêng để đánh cắp tiền
Sản xuất bởi Odaily
Tác giả | Tần Hiểu Phong
Biên tập | Lộ Hiểu Minh

(hình ảnh từcryptonomist)
dựa theosecurity evaluatorsSản xuất bởi Odaily
Biên tập | Lộ Hiểu Minh
Mô tả hình ảnh
(hình ảnh từ
dựa theo
News, Cơ quan đánh giá bảo mật độc lập (ISE) gần đây đã công bố một nghiên cứu mới có tên Ethercombing, tập trung vào bảo mật khóa riêng của ví Ethereum.
ISE nhận thấy rằng hiện có 732 khóa riêng trên chuỗi khối Ethereum có nguy cơ bị đánh cắp do tính ngẫu nhiên thấp. Ngoài ra, kể từ năm ngoái, một nhóm hacker có tên “Blockchainbandit” đã thực hiện hoạt động đánh cắp thông qua private key có độ bảo mật thấp, lên tới 37.926 ETH (trị giá 54 triệu USD vào thời điểm đó). Cho đến ngày nay, tổ chức vẫn chưa dừng lại.
tiêu đề phụ
0x47579DA2BEA463533DBFAD6FCF8E90876C2FE9760DC1162ACC4059EE37BDDB5C
Tính ngẫu nhiên của khóa riêng không cao
0x0000000000000000000000000000000000000000000000000000000037BDDB5C
Việc tạo khóa công khai và địa chỉ Ethereum phụ thuộc vào khóa riêng. Với khóa riêng, khóa công khai và địa chỉ có thể được tạo và Ethereum (ETH) trên địa chỉ tương ứng có thể được sử dụng.
Khóa riêng thực chất là một số ngẫu nhiên, một mảng 32 byte, 1 byte bằng nhị phân 8 bit và nhị phân chỉ có hai giá trị: 0 hoặc 1. Vì vậy, tổng số khóa riêng là gần 2^(8*32)=2^256 và xác suất bẻ khóa khóa riêng là 1/2^256.
Nhà nghiên cứu của ISE, Adrian Bednarek, cho biết mặc dù về mặt lý thuyết vẫn có khả năng xảy ra, nhưng trên thực tế, việc bẻ khóa bí mật bằng vũ lực là không thể. Ngay cả khi chúng tôi sử dụng tài nguyên máy tính cho phép chúng tôi tạo 100 nghìn tỷ khóa mỗi giây, thì cũng sẽ mất khoảng vài năm và chúng tôi thực sự không có tài nguyên máy tính như vậy.
Tuy nhiên, ISE đã phát hiện ra trong thử nghiệm rằng do lỗi trong một số mã phần mềm ví tạo khóa riêng, khóa riêng được tạo không ngẫu nhiên lắm và dễ bị bẻ khóa bởi bạo lực máy tính (liệt kê tất cả các khả năng).
Do có sự cố với mã, tính toàn vẹn của khóa riêng bị cắt bớt thành 32 bit ở đầu ra, dẫn đến kết quả như sau:
Đối với máy tính, việc bẻ khóa khóa riêng 32 bit dễ dàng hơn nhiều so với khóa riêng 256 bit.
Ngoài lỗi mã hóa ví, các vấn đề về tham chiếu bộ nhớ, hỏng bộ nhớ, lỗi thiết bị ngẫu nhiên, sử dụng lại hạt giống ngẫu nhiên, xáo trộn đối tượng, hỏng ngăn xếp, xáo trộn đầu vào, lỗi entropy, hỏng đống hoặc lỗi mã hóa tiền biên dịch không được kiểm tra đều có thể khiến khóa cá nhân không được đủ ngẫu nhiên, tính bảo mật bị giảm.
Các nhà nghiên cứu của ISE đã tìm thấy trong các thử nghiệm rằng hiện có 732 khóa riêng trên chuỗi khối Ethereum có tính ngẫu nhiên không mạnh và có nguy cơ bị rò rỉ; các khóa riêng này vẫn đang hoạt động và được liên kết với 49.060 giao dịch trên chuỗi.
Để kiểm tra khóa cá nhân có độ bảo mật thấp được tìm thấy, các nhà nghiên cứu của ISE đã chuyển ETH trị giá 1 đô la đến một trong các địa chỉ và Mã thông báo đã được chuyển đi vài giây sau đó.
Theo dõi ISE phát hiện ra rằng Mã thông báo cuối cùng đã chảy vào ví của tổ chức tin tặc có tên là "Blockchainbandit". Tổ chức này đã đánh cắp các khóa riêng tư có bảo mật yếu hơn kể từ tháng 1 năm 2018. Vào lúc cao điểm, số dư của địa chỉ đạt 37.926 ETH, trị giá 54 triệu USD vào thời điểm đó. Cho đến ngày nay, tổ chức vẫn chưa dừng lại.
tiêu đề phụ
Bản thân Ethereum không có vấn đề gì
Nếu có vấn đề với khóa riêng tư, điều đó có nghĩa là có một lỗ hổng trong công nghệ của chính chuỗi khối Ethereum? Nhà nghiên cứu Ethereum Hu Jingyu nói với Odaily rằng các khóa riêng bảo mật thấp hiện đang xuất hiện chủ yếu là các vấn đề về ví và không liên quan gì đến chính Ethereum. Chen Changwu, nhà phát triển cốt lõi của Ethereum, cũng tin rằng không có vấn đề gì với bản thân thuật toán của Ethereum.
Chen Changwu nói thêm rằng ngoài các số ngẫu nhiên, giá trị K được sử dụng trong quy trình chữ ký cũng sẽ ảnh hưởng đến tính bảo mật của khóa riêng. "Một giá trị K bí mật sẽ được sử dụng trong quá trình tạo chữ ký. Hiện tại, cả BTC và ETH đều sử dụng RFC6979 để tạo giá trị này. Giá trị K này phải là ngẫu nhiên và duy nhất. Tuy nhiên, một số lập trình viên không quen với việc lập trình thuật toán mật mã có khả năng bỏ qua nó. Những chi tiết này dẫn đến rò rỉ khóa riêng.”
Ở phần cuối của báo cáo, ISE cũng đưa ra những gợi ý cho các nhà phát triển và người dùng:
Cho các nhà phát triển:
Tạo các số ngẫu nhiên bằng các thư viện nổi tiếng hoặc các mô-đun dành riêng cho nền tảng;
Sử dụng trình tạo số giả ngẫu nhiên an toàn bằng mật mã;
Kiểm tra mã nguồn và mã đã biên dịch được tạo để xác minh rằng các khóa được tạo ngẫu nhiên không bị cắt bớt;
sử dụng nhiều nguồn entropy;
Sử dụng hướng dẫn tạo số ngẫu nhiên phần cứng tuân thủ NIST (RDRAND/RDSEED) do AMD/Intel* cung cấp
Xem hướng dẫn của NIST/FIPS về tạo số ngẫu nhiên bằng mật mã
Xem lại và sử dụng Bộ kiểm tra thống kê NIST (NIST SP 800-22)Arvind Krishna Đối với người dùng sử dụng ví:


