Gần đây tôi đã đào sâu hơn vào các nguyên tắc cơ bản của blockchain, và tôi nghĩ nhiều người hơn nên hiểu rõ nonce thực sự là gì và tại sao nó lại quan trọng đối với an ninh.



Vì vậy, đây là điều về nonce trong an ninh - nó về cơ bản là một số dùng một lần, và nó là xương sống của cách hoạt động của khai thác bằng bằng chứng công việc (proof-of-work). Khi các thợ mỏ cố gắng xác thực một khối, họ về cơ bản đang giải một câu đố mật mã, và nonce là biến số mà họ liên tục điều chỉnh để tìm ra câu trả lời đúng.

Cách hoạt động của nó khá thông minh. Các thợ mỏ lấy tiêu đề khối, thêm vào một nonce, băm nó bằng SHA-256, và kiểm tra xem nó có đáp ứng mục tiêu độ khó của mạng hay không. Nếu không, họ tăng nonce lên và thử lại. Họ cứ làm như vậy cho đến khi tìm được một hàm băm có các đặc tính yêu cầu - thường là một số lượng số không đứng đầu nhất định. Đó là phương pháp brute force, nhưng cũng chính là điều làm cho hệ thống an toàn.

Tại sao điều này lại quan trọng đối với an ninh của nonce? Bởi vì nó tạo ra một rào cản tính toán khổng lồ chống lại các cuộc tấn công. Nếu ai đó muốn sửa đổi một giao dịch trong quá khứ, họ sẽ cần phải tính lại nonce cho khối đó VÀ tất cả các khối sau nó. Công việc cần thiết trở nên gần như không thể, và đó chính xác là mục đích.

Tôi nghĩ điều thú vị là cách độ khó điều chỉnh. Mạng không giữ nguyên câu đố nonce ở cùng mức độ khó mãi mãi - nó thích nghi dựa trên lượng sức mạnh tính toán kết nối với mạng. Nhiều thợ mỏ hơn? Câu đố trở nên khó hơn. Ít thợ mỏ hơn? Nó dễ hơn. Điều này giúp thời gian tạo khối duy trì tương đối ổn định, đó là một thiết kế hệ thống tinh tế.

Cũng có các loại nonce khác nhau, không chỉ trong blockchain. Các giao thức mật mã sử dụng chúng để ngăn chặn các cuộc tấn công phát lại (replay attacks). Các hàm băm dùng chúng để thay đổi đầu ra. Nhưng trong ngữ cảnh của Bitcoin và các blockchain PoW, nonce khai thác là thứ chúng ta thực sự nói đến.

Sự khác biệt giữa một hàm băm và một nonce đôi khi gây nhầm lẫn. Một hàm băm là dấu vân tay - là đầu ra có kích thước cố định bạn nhận được khi chạy dữ liệu qua một thuật toán. Một nonce là biến số mà bạn thao tác để tạo ra các hàm băm khác nhau cho đến khi tìm được một hàm phù hợp. Chúng là các công cụ khác nhau trong cùng một quá trình.

Bây giờ, các cuộc tấn công liên quan đến nonce cũng tồn tại. Có việc tái sử dụng nonce, nơi ai đó cố gắng dùng lại cùng một nonce trong các hoạt động mật mã - điều này nguy hiểm vì có thể rò rỉ khóa riêng. Có việc tạo nonce dự đoán được, nơi kẻ tấn công có thể dự đoán nonce sẽ được sử dụng tiếp theo. Và còn có các cuộc tấn công nonce cũ (stale nonce) khi các nonce cũ, đã hợp lệ trước đó, bị khai thác.

Phòng thủ khá đơn giản: nonce cần phải thực sự ngẫu nhiên và duy nhất mỗi lần. Việc tạo số ngẫu nhiên phù hợp là điều bắt buộc. Các hệ thống cần từ chối các nonce đã được sử dụng lại. Và các triển khai mật mã cần kiểm tra định kỳ và cập nhật.

Hiểu rõ về an ninh nonce thực sự là nền tảng nếu bạn muốn nắm bắt tại sao blockchain lại an toàn ở lớp nền tảng. Đó không phải là phép màu - đó là yêu cầu công việc tính toán khiến các cuộc tấn công trở nên phi kinh tế. Đó chính là tinh hoa thực sự của thiết kế.
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • Bình luận
  • Đăng lại
  • Retweed
Bình luận
Thêm một bình luận
Thêm một bình luận
Không có bình luận
  • Ghim