Chương 1: Tổng quan về công nghệ Blockchain ix Trong chương này sẽ trình bày các khái niệm có liên quan của công nghệ Blockchain, phân loại, kiến trúc, nguyên lý hoạt động, ứng dụng và đánh giá độ an toàn của công nghệ này. Chương 2: Hệ thống bỏ phiếu điện tử dựa trên công nghệ Blockchain Trong chương này sẽ trình bày tổng quan về hệ thống bỏ phiếu điện tử, các mối đe dọa và từ đó đề xuất hệ thống bỏ phiếu điện tử sử dụng công nghệ Blockchain, phân tích các mô-đun mật mã trong hệ thống này. Chương 3: Triển khai mô phỏng hệ thống bỏ phiếu điện tử dựa trên công nghệ Blockchain Trong chương này sẽ đề xuất thiết kế hệ thống bỏ phiếu điện tử dựa trên công nghệ Blockchain, cài đặt mô phỏng và đánh giá hiệu năng của hệ thống này. TỔNG QUAN VỀ BLOCKCHAIN 1.
Blockchain và các khái niệm liên quan 1. Khái niệm hệ thống mạng phi tập trung Hệ thống mạng phi tập trung là hệ thống gồm nhiều máy tính được kết nối với nhau mà không cần thông qua một máy chủ quản lý. Trong các hệ thống mạng phi tập trung, mọi nút (node) đều độc lập với nhau và đưa ra quyết định của riêng mình. Sau đó hệ thống sẽ tổng hợp các quyết định của các nút riêng lẻ.
Cấu trúc phi tập chung là đặc điểm nổi bật và quan trọng nhất của Blockchain. Hệ thống Blockchain sử dụng cấu trúc phân tán phi tập trung 1. Khái niệm Blockchain Theo Don & Alex Tapscott, công nghệ Blockchain được định nghĩa trong cuốn sách Blockchain Revolution [3] như sau: "Blockchain là một sổ cái kỹ thuật số không thể bị phá hỏng của các giao dịch kinh tế, có thể được lập trình để ghi lại không chỉ những giao dịch tài chính mà có thể ghi lại tất cả mọi thứ có giá trị". Mỗi khối (block) đều chứa thông tin về thời gian khởi tạo và được liên kết với khối trước đó, kèm theo đó là một tem thời gian và dữ liệu giao dịch.
Dữ liệu khi đã được mạng Blockchain chấp nhận thì sẽ không có cách nào thay đổi được. Blockchain được thiết kế để chống lại việc gian lận, thay đổi của dữ liệu. Về khía cạnh kỹ thuật, Blockchain là sự kết hợp của ba loại công nghệ là: - Mật mã: để đảm bảo tính minh bạch, toàn vẹn và riêng tư thì công nghệ Blockchain đã sử dụng hệ mật khóa công khai và hàm băm mật mã. - Mạng ngang hàng: Mỗi một nút trong mạng được xem như một client và cũng là server để lưu trữ bản sao ứng dụng.
- Lý thuyết trò chơi: Tất cả các nút tham gia vào hệ thống đều phải tuân thủ luật chơi là các giao thức đồng thuận (giao thức PoW, PoS,…). Các thành phần kỹ thuật cấu tạo nên Blockchain 1. Định nghĩa hàm băm Các hàm băm [1] đóng vai trò cơ bản trong mật mã hiện đại. Hàm băm h là một hàm toán học chuyển đổi các xâu bit có độ dài hữu hạn tuỳ ý thành các xâu bit có độ dài n cố định.
Đầu ra này được gọi là mã băm (hay kết quả băm, giá trị băm, vết, hay tóm lược thông báo). Các hàm băm có thể được chia thành 2 lớp là các hàm băm có khóa và các hàm băm không có khóa. Họ hàm băm có khóa được định nghĩa như sau: Định nghĩa 1.1: Một họ hàm băm là một bộ bốn ( X, Y, K, H ) thỏa mãn các điều kiện sau đây: 1. X là một tập các thông báo có thể.
Y là một tập hữu hạn các giá trị tóm lược thông báo hoặc các thẻ xác thực có thể. K là không gian khóa, là một tập hợp hữu hạn các khóa có thể. Đối với mỗi khóa K K , có một hàm băm hK H , hK : X → Y. Trong định nghĩa ở trên, X có thể là một tập hợp hữu hạn hoặc vô hạn; Y luôn luôn là một tập hợp hữu hạn.
Nếu X là một tập hữu hạn, thì hàm băm đôi khi được gọi là hàm nén (compression function). Trong trường hợp này, luôn giả thiết rằng X Y và thường giả thiết với điều kiện mạnh hơn là X 2 Y. Điều này có nghĩa là không thể tránh khỏi các va chạm (tức là tồn tại nhiều bộ giá trị đầu vào x, x ' X , x ' x mà tạo ra cùng một giá trị đầu ra h( x) = h( x ') ). Nếu hàm h là ngẫu nhiên theo nghĩa tất cả các đầu ra là đồng xác suất thì có khoảng 2t − n các đầu vào ánh xạ tới mỗi đầu ra (t là số bit đầu vào, n là số bit đầu ra, t n ) và 2 đầu vào được chọn ngẫu nhiên sẽ có cùng đầu ra với xác suất 2−n (không phụ thuộc vào t).2: Một hàm băm không khóa là một hàm h : X → Y , trong đó: 1.
X là một tập các thông báo có thể. Y là một tập hữu hạn các giá trị tóm lược thông báo hoặc các thẻ xác thực có thể. Có thể coi một hàm băm không khóa chỉ đơn giản là một họ hàm băm mà chỉ có duy nhất một khóa, tức là K = 1. Mô hình thực hiện băm dữ liệu Các hàm băm dòng MD: MD2, MD4, MD5 được Rivest đưa ra có kết quả đầu ra với độ dài là 128 bit.
Hàm băm MD4 đưa ra vào năm 1990. Một năm sau phiên bản mạnh MD5 cũng được đưa ra. Chuẩn hàm băm an toàn: SHA, phức tạp hơn nhiều cũng dựa trên các phương pháp tương tự, được công bố trong Hồ sơ Liên bang năm 1992 và được chấp nhận làm tiêu chuẩn vào năm 1993 do Viện Tiêu Chuẩn và Công Nghệ Quốc Gia (NIST), kết quả đầu ra có độ dài 160 bit. Các tính chất an toàn của hàm băm Giả sử rằng h : X → Y là một hàm băm không có khóa.
Hàm băm h được gọi là an toàn nếu thỏa mãn ba tính chất sau: 1. Tính kháng tiền ảnh (tính một chiều): Đối với hầu hết các đầu ra được xác định trước, không có khả năng tính toán để tìm một đầu vào bất kỳ mà khi băm sẽ cho ra đầu ra tương ứng (tức là cho trước một giá trị tóm lược y Y , không thể tìm một tiền ảnh x ' X sao cho h( x ') = y ). Tính kháng tiền ảnh thứ hai: Không có khả năng tính toán để tìm một đầu vào thứ hai bất kỳ mà có cùng đầu ra như với đầu vào đã được xác định trước (tức là cho trước xX , không có khả năng tính toán để tìm tiền ảnh thứ hai x ' X sao cho x ' x và h ( x ' ) = h ( x ) ). Tính kháng va chạm: Không có khả năng tính toán để tìm hai đầu vào bất kỳ x, x ' X sao cho x ' x và h ( x ') = h ( x ).
Một số ứng dụng của hàm băm Hàm băm mật mã được đánh giá là một thuật toán mật mã linh hoạt nhất. Nó được sử dụng trong nhiều ứng dụng an toàn và các giao thức Internet. Sau đây là một số ứng dụng quan trọng của hàm băm mật mã: Xác thực thông báo: Xác thực thông báo là một cơ chế được sử dụng để xác thực tính toàn vẹn của một thông báo. Xác thực thông báo đảm bảo rằng dữ liệu nhận được là chính xác giống như khi nó được gửi (tức là không bị sửa đổi, chèn, xóa hay phát lại), và trong nhiều trường hợp định danh của người gửi là được bảo vệ.
Khi một hàm băm được sử dụng để cung cấp cơ chế xác thực thông báo, giá trị hàm băm thường được gọi là một mã băm. Chữ ký số: Chữ ký số là một dãy số, kết quả của phép biến đổi mật mã trên thông báo nhằm cung cấp một phương tiện để kiểm tra tính xác thực của nguồn gốc thông báo, tính toàn vẹn của dữ liệu và tính không thể chối bỏ của người ký. Khi hàm băm được sử dụng trong lược đồ chữ ký số, giá trị băm của thông báo được mã hóa bởi một khóa riêng của người gửi. Bất kỳ ai, biết khóa công khai của người gửi đều có thể xác thực tính toàn vẹn của thông báo.
Các ứng dụng khác: hàm băm còn thường được sử dụng để tạo file mật khẩu một chiều dùng trong việc xác thực người dùng hay phát hiện xâm nhập, phát hiện virus. Ngoài ra, hàm băm mật mã còn có thể được sử dụng để xây dựng một hàm giả ngẫu nhiên hoặc một bộ tạo số giả ngẫu nhiên. Định nghĩa chữ ký số Chữ ký số [1] là một dãy số, là kết quả của phép biến đổi mật mã trên thông báo nhằm cung cấp một phương tiện để kiểm tra tính xác thực của nguồn gốc thông báo, tính toàn vẹn của thông báo và tính không thể chối bỏ của người ký. Thông thường, chữ ký số được biểu diễn dưới dạng một dãy số nhị phân.
Nó được tạo ra trên cơ sở sử dụng tập hợp các quy tắc và tập hợp các tham số để xác định danh tính người ký cũng như kiểm tra tính toàn vẹn của dữ liệu. Phương tiện cơ bản để thực hiện chữ ký số là kỹ thuật mật mã. Mỗi chữ ký số được tạo và được kiểm tra tính xác thực thông qua các lược đồ chữ ký số. Mỗi lược đồ chữ ký số bao gồm thuật toán ký Sig K và thuật toán kiểm tra VerK.
Mỗi người có một cặp khóa bao gồm khóa bí mật DK và khóa công khai EK , trong đó khóa công khai thường được công bố một cách công khai hoặc phân phối thông qua chứng thực khóa công khai, còn khóa bí mật được giữ bí mật tuyệt đối và không thể tìm ra khóa bí mật từ khóa công khai. Người gửi sử dụng thuật toán ký Sig K và khóa bí mật DK để tạo ra chữ ký số, người nhận sử dụng thuật toán kiểm tra VerK và khóa công khai EK tương ứng để kiểm tra tính xác thực của thông báo và tính xác thực của chữ ký số do người gửi tạo ra. Trong quá trình tạo và kiểm tra chữ ký, thông báo được thu gọn nhờ áp dụng thuật toán băm an toàn. Một người không biết khóa bí mật của người đã ký thông báo thì không thể tạo ra được chữ ký số đó nên chữ ký số là không thể bị giả mạo.
Khi sử dụng khóa công khai tương ứng của người ký, bất kỳ ai cũng có thể kiểm tra tính xác thực của chữ ký số trên thông báo đã được ký.