PHƯƠNG PHÁP BẢO MAT

Một phần của tài liệu Khóa luận tốt nghiệp Hệ thống thông tin: Ứng dụng công nghệ chuỗi khối trong việc xây dựng hệ thống bầu cử (Trang 50 - 66)

Chương này đề cập đến yêu tố bảo mật của hệ thống bầu cử sử dụng công nghệ chuỗi khối. Do đặc tính công khai của chuỗi khối đối nghịch với tính bi mật về dữ liệu phiếu bau của một số cuộc bau chọn riêng tư mà cần có một giải pháp có thé hài hòa giữa hai yêu cầu này. Giải thuật mã hóa dữ liệu đường cong elip được sử dụng như là giải pháp để giải quyết vấn đề này. Sau khi khảo sát các giải thuật mã hóa đã được kiểm chứng, một giải thuật tốt nhất sẽ được chọn và ứng dụng vào hệ thống của bài khóa luận. Cuối cùng là so sánh ba lược đồ chữ ký mã hóa khác nhau: EdDSA, ECDSA và RSA, đồng thời đánh giá mức độ phù hợp của chúng đối với hệ thống bỏ phiếu chuỗi khối. Chữ ký mã hóa rat cần thiết dé đảm bảo tính toàn vẹn và tính xác thực của các phiếu bầu trên chuỗi khối, cũng như dé phòng trường hợp bầu một người hai lần.

Nhóm tác giả cũng sẽ so sánh phương án sử dụng thư viện 'elliptic' với phương án không sử dụng thư viện.

4.1. Khảo sát

4.1.1. RSA

RSA

Hinh 4.1 RSA

RSA là một trong những hệ thống mật mã khóa công khai được sử dung rộng rãi nhất trên thé giới. Nó được phát minh bởi Ron Rivest, Adi Shamir va Leonard Adleman

52

vào năm 1977, và dựa trên bài toán phân tích các số lớn. RSA cho phép hai bên giao tiếp an toàn qua một kênh không an toàn mà không cần chia sẻ trước khóa bí mật. RSA cũng cho phép chữ ký số, cho phép người gửi chứng minh tính xác thực và tính toàn vẹn của tin nhắn. [12]

4.1.2. Mã hóa đường cong elip

Mã hóa đường cong elip (Elliptic curve cryptography hay ECC) là một nhánh của

mật mã khóa công khai dựa trên các thuộc tính toán học của đường cong elip. ECC

cung cấp một số lợi thế so với các thuật toán khóa công khai truyền thống, chăng hạn

như RSA va Diffie-Hellman. Ví dụ: ECC có thé cung cấp cùng mức độ bảo mật với kích thước khóa nhỏ hơn, giúp giảm chi phí tính toán và băng thông cần thiết dé mã hoa và giải mã. ECC cũng có các ứng dụng trong chữ ký số, trao đổi khóa và bang chứng không kiến thức. [5]

4.1.2.1. ECDSA

Hình 4.2 ECDSA

Thuật toán chữ ký số đường cong elip (Elliptic Curve Digital Signature Algorithm hay ECDSA) là một sơ đồ mật mã cho phép tạo và xác minh chữ ký số bằng cách sử dụng mật mã đường cong elip. ECDSA có một số ưu điểm so với các sơ đồ chữ ký khác, chăng hạn như kích thước khóa nhỏ hơn, tính toán nhanh hơn và mức độ bảo mật cao hơn. ECDSA được sử dụng rộng rãi trong các ứng dụng khác nhau, chang hạn như chuỗi khối, hợp đồng thông minh và liên lạc an toàn.

ECDSA hoạt động bằng cách sử dụng một cặp khóa: khóa riêng và khóa chung. Khóa

riêng là một sô ngầu nhiên nên được giữ bí mật bởi người ký. Khóa chung được lây

53

từ khóa riêng bằng cách sử dụng hàm toán học liên quan đến đường cong elip. Khóa công khai có thê được chia sẻ với bất kỳ ai muốn xác minh chữ ký. Để ký một tin nhắn, người ký sử dụng khóa riêng và tin nhắn đề tạo chữ ký, bao gồm hai số. Đề xác minh chữ ký, người xác minh sử dụng khóa chung, thông báo và chữ ký dé thực hiện kiểm tra toán học xác nhận tính xác thực của người ký.

ECDSA dựa vào độ khó của hai bài toán: bài toán logarit rời rạc và bài toán logarit

rời rac trên đường cong elip. Bài toán logarit rời rac là tìm số mũ x sao cho g^x = y với các số g và y đã cho. Bài toán logarit rời rac của đường elip là tìm đại lượng k sao cho kP = Q đối với các điểm P và Q đã cho trên một đường cong elip. Cả hai vẫn

dé được cho là khó giải đối với các tham số đủ lớn, điều đó có nghĩa là không có thuật toán hiệu quả nao dé giải quyết chúng. Điều này dam bảo tính bao mật của ECDSA chống lại các cuộc tấn công brute-force. [4] [13]

4.1.2.2. EdDSA

EdDSA là một sơ đồ chữ ký số sử dụng mật mã đường cong elip dé cung cấp hiệu suất và bảo mật cao. EdDSA dựa trên sơ đồ chữ ký Schnorr và sử dụng một biến thể của đường cong Twisted Edwards. EdDSA có một số ưu điểm so với các sơ đồ chữ

ký khác, chăng hạn như khả năng chống lại các cuộc tan công kênh bên, xác minh nhanh và kích thước chữ ký nhỏ. EdDSA cũng hỗ trợ khôi phục khóa chung, cho

phép lấy khóa chung từ chữ ký và thông báo. [4]

4.1.2.3. ECDH

ECDH la viết tắt của Elliptic-curve Diffie-Hellman, là một giao thức thỏa thuận chính cho phép hai bên thiết lập một bí mật chung trên một kênh không an toàn. Mỗi bên

có một cặp khóa công khai-riêng tu theo đường cong elip và họ trao đổi khóa công

khai của mình thông qua kênh.

ECDH là một biến thé của giao thức Diffie-Hellman sử dụng mật mã đường cong elip, mang lại tính bảo mật và hiệu quả cao hơn so với các phương pháp truyền thống. ECDH có thé được sử dụng với các tham số miền và đường cong elip khác nhau, đồng thời nó có thể cung cấp các mức xác thực và bảo mật chuyền tiếp khác nhau tùy

thuộc vào việc khóa công khai là tinh hay tạm thời. [3]

54

ECDH KEY EXCHANGE

PARTY A EAVESDROPPERS

SHARED

Qu

SHARED

~~

Hình 4.3 Mô tả ECDH [3]

4.1.3. Kết quả

e ECDH

Một thách thức có thé xảy ra khi sử dụng ECDH (Elliptic Curve Diffie-Hellman) trong hệ thong bỏ phiếu chuỗi khối là nó yêu cầu một bên thứ ba đáng tin cậy tạo và phân phối khóa công khai cho mỗi cử tri. Điều này có thê ảnh hưởng đến tính bảo mật và tính minh bạch của quy trình bỏ phiếu, cũng như gây thêm chi phí và sự phức tạp. Hơn nữa, ECDH không cung cấp bat kỳ đảm bảo nào về tính ân danh của cử tri,

vì các khóa công khai có thể được liên kết với danh tính của cử tri. Lý tưởng nhất là một hệ thống bỏ phiếu sử dụng công nghệ chuỗi khối nên được phân cấp, có thé kiêm chứng và bảo vệ quyền riêng tư, đây không phải là thuộc tinh của ECDH.

e ECDSA và RSA

ECDSA va RSA là hai thuật toán mã hóa khóa công khai phô biến được sử dung cho chữ ký số và mã hóa. Cả ECDSA và RSA đều dựa trên các bai toán khó giải, chang hạn như logarit rời rạc và phân tích thành thừa số nguyên. Tuy nhiên, ECDSA có kích thước khóa nhỏ hơn RSA với cùng mức độ bảo mật, giúp nó có khả năng chống lại các cuộc tấn công lượng tử cao hơn. Ví dụ: khóa ECDSA 256 bit tương đương với khóa RSA 3072 bit về độ mạnh bảo mật.

55

ECDSA và RSA có các đặc tính hiệu suất khác nhau tùy thuộc vào hoạt động và kích thước khóa. Nói chung, ECDSA nhanh hơn RSA dé ký nhưng chậm hơn dé xác minh. ECDSA cũng có kích thước chữ ký nhỏ hơn RSA, giúp giảm yêu cầu lưu trữ và băng

thông. Ví dụ: chữ ký ECDSA 256 bịt dài 64 byte, trong khi chữ ký RSA 3072 bịt dài

384 byte.

ECDSA va RSA có mức độ tương thích khác nhau với các hệ thống và tiêu chuẩn hiện có. RSA được hỗ trợ và chấp nhận rộng rãi hơn ECDSA, vì nó đã tồn tại lâu hơn

và có nhiều triển khai hơn. ECDSA mới hơn và ít hỗ trợ hơn, đặc biệt là trong các hệ thống và thiết bị cũ hơn. Tuy nhiên, ECDSA dang trở nên phố biến và được áp dụng trong những năm gần đây, đặc biệt là trong các ứng dụng chuỗi khối và tiền điện tử.

e ECDSA và EdDSA

ECDSA và EdDSA là hai thuật toán chữ ký sử dụng các đường cong elip để tạo và xác minh chữ ký SỐ. Chúng có độ bảo mật tương tự đối với các đường cong có độ dài khóa tương tự, nhưng chúng cũng có một số diém khác biệt:

- ECDSA yêu cầu một giá trị nonce ngẫu nhiên cho mỗi chữ ký, đây có thê là nguồn

dé bị ton thương nêu không được tạo đúng cách. EdDSA không cần giá tri nonce ngẫu nhiên, điều này làm cho nó đơn giản và mạnh mẽ hơn.

- ECDSA sử dụng các đường cong ở dạng Weierstrass ngắn, có công thức phức tạp hơn và yêu cầu xác thực diém đề tránh các điểm không hợp lệ. EdDSA sử dụng các đường cong ở dạng Edwards, có công thức đơn giản và nhanh hơn và đầy đủ, nghĩa

là chúng hoạt động cho tất cả các điểm trên đường cong.

- ECDSA có các khóa công khai và chữ ký có kích thước thay đồi, tùy thuộc vào các tham số đường cong và lược đồ mã hóa. EdDSA có các khóa công khai có kích thước

có định (32 hoặc 57 byte) và chữ ký (64 hoặc 114 byte) cho các đường cong phố biến nhất (Ed25519 va Ed448) .

- ECDSA cho phép khôi phục khóa công khai từ chữ ky và tin nhắn, có thé tiết kiệm dung lượng trong một số ứng dụng. EdDSA không hỗ trợ khôi phục khóa công khai.

56

- ECDSA có khóa công khai lớn hơn EdDSA cho cùng mức độ bảo mật, vì nó sử

dụng cả tọa độ x và y của một điểm trên đường cong, trong khi EdDSA chỉ sử dụng

tọa độ y.

Dựa vào những ưu điểm trên giải thuật EdDSA được chọn dé mã hóa thông tin trong

ứng dụng.

4.2. Sử dụng EdDSA

4.2.1. Định danh BTC

của CBC

Tạo mã định danh

ngau nhiên

Tạo mã định danh ộ

ngau nhiên a

Ma CBC lam nỗi

dung tin nhan

EdDSA EdDSA

Chữ ký mã hóa

định danh BTC

Hình 4.4 Mã hóa định danh BTC

Một CBC sẽ có các BTC có chức năng đóng CBC khi không còn nhu cầu thu thập

° Tao ma dinh danh

a ngau nhién

EdDSA

Chữ ký mã hóa

định danh BTC

Chữ ky ma hoa

dinh danh BTC

phiéu bau. Dé có thé phân biệt BTC voi NTG thông thường, một mã định danh đặc biệt được tạo trong quá trình tạo CBC và được gửi về cho người tạo CBC. Các mã

57

định danh này được phân phát một cách bí mật. Bất kỳ ai có mã định danh này đều

có thé truy cập CBC dưới tư cách BTC.

Mã định danh của BTC cần được lưu vào số cái để mỗi khi tham gia CBC, các CQCCC có thể kiểm tra định danh của người đang tham gia. Điều này làm mất đi tính bảo mật của mã định danh BTC như bên trên đã đề ra. Do đó cần phải có phương

pháp mã hóa mã định danh này.

EdDSA được sử dụng với mã định danh của BTC làm khóa bí mật, nội dung tin nhắn

là mã CBC mà BTC quản lý. Khi đó chữ ký mã hóa sẽ được lưu vào sô cái công khai.

Định danh từ NTG

Khỏa bí mật

Y

Mã CBC đang tham gia làm nội dung tin

nhãn

EdDSA

¥

Trùng với danh sách chữ ký mã hóa

trên số cái công khai

di NTG khẳng phải la

NTG la BTC

Hinh 4.5 Kiém tra dinh danh BTC khi tham gia CBC Khi người dùng yêu cầu xác thực ở CQCCC, quá trình ký nay được lặp lại một lần nữa với thông tin định danh của người dùng đưa vào. Nếu người dùng đưa vào đúng

mã định danh BTC, nội dung tin nhắn là mã CBC đang tham gia thì một chữ ký mã

58

hóa y hệt trong số cái sẽ được tạo. Điều này giúp xác định danh tính của NTG có phải

là BTC hay không.

4.2.2. Mã hóa phiếu bầu Khi NTG bỏ phiếu bau cho một CBC. Các thông tin bao gồm mã CBC, định danh, phiếu bầu của NTG sẽ được gửi đến CQCCC dé xác thực. Tại đây CQCCC sẽ sử dụng khóa bi mật của tổ chức tham gia CBC dé ký các nội dung dé đảm bảo phiếu

bau thực sự đến từ định danh được xác thực ở tô chức, phiếu bầu là hợp lệ và không qua chỉnh sửa sau khi đã bầu chọn.

Đầu tiên khóa bí mật được sử dụng để ký nội dung bao gồm mã CBC và định danh, một chữ ký mã hóa được tạo ra và được kiểm tra với sô cái. Nếu một chữ ký tương

tự đã tồn tại tức là định danh này đã tham gia bỏ phiếu cho CBC này. Ngược lại chữ

ký mã hóa sẽ được lưu vào sô cái. Chữ ký này tượng trưng cho việc tham gia CBC của NTG này, bất kỳ ai trong mạng chuỗi khối cũng thấy được chữ ký nhưng sẽ không biết được cụ thể định danh của NTG, chỉ khi CBC đã đóng và khóa bí mật được công khai, người tham gia mạng mới có thê xác minh tinh đúng đắn của thông tin.

Khi chữ ký mã hóa tham gia đã được tạo, nội dung phiếu bầu sẽ được lưu vào dữ liệu

bí mật của tổ chức. Dữ liệu này sẽ không được công khai cho đến khi CBC được đóng. Đối với CBC “công khai” thì ngược lại, dữ liệu sẽ được công khai lên số cái kèm chữ

ký mã hóa để các thành viên trong mạng chuỗi khối có thê thâm định tính đúng đắn của phiếu bau.

Sau khi lưu vào đữ liệu bí mật của tổ chức, một chữ ký mã hóa được tạo, gán mác là

ID của phiếu bầu và gửi về NTG. ID của phiếu bầu sẽ giúp NTG kiểm tra lại thông

tin phiếu bầu của mình mà không phải đợi CBC đóng hoặc rủi ro lộ thông tin. ID của phiếu bau là bí mật và nên được bảo quản can thận và không nên dé lộ. Tuy nhiên đối với CBC “công khai” do thông tin bầu chọn được công khai việc tạo một ID phiếu bầu của riêng NTG là không cần thiết, do đó ở trường hợp này, mã giao dịch chuỗi khối sẽ được gửi về NTG. Tra cứu mã giao dich này người tham gia mạng chuỗi khối

có thé thay được những thay déi của CBC một cách công khai trong đó có nội dung phiếu bầu được tạo.

59

Mã CBC, định danh

NTG

Khóa bi mat của tô

chức

EdDSA

Chữ ký mã hóa tượng trưng cho việc tham gia

của NTG

Trùng với danh sách chữ ký tham gia

trên số cái công khai trong CBC nảy

Lưu chữ ký mã hoa

lên số cải

CEC

loại "công khai”

Thông tin phiêu bau

bao gom lựa chọn,

định danh, CBC

Khóa bí mật của tỗ

Sử dụng mã giao dịch chức

làm ID phiêu bau

Sử dụng chữ ký mới

làm ID phiếu bau Trả về ID phiéu bau

Với CBC loại “bí mật”, một danh sách định danh định trước sẽ được cung cấp trong

quá trình tạo CBC. Chỉ những NTG với định danh thuộc danh sách này thì khi đóng

CBC, thông tin phiếu bầu của họ mới được công khai lên số cái. Để đảm bảo những

60

định danh này bị lộ khi thông tin CBC được đưa vào số cái công khai, chúng ta cần

mã hóa chúng.

Số lượng n NTG định

trước của CBC

Định danh định Định danh định

trước trước

` EdDSA EdDSA

Chữ ky mã hoa

định danh

Hình 4.7 Mã hóa định danh định trước Với khóa bí mật của CBC, nội dung là định danh, chúng ta sẽ có được một danh sách

Chữ ky mã hoa Chữ ky mã héa

định danh định danh

chữ ký mã hóa công khai. Khi CBC chuyền sang giai đoạn tổng kết. Từng định danh trong phiêu bầu của NTG sẽ được đưa vào quá trình ký tương tự và so sánh với danh sách chữ ký lưu trước đó. Nếu hai chữ ký giống nhau thì định danh của NTG là hợp

lệ và thông tin phiếu bầu của họ sẽ được công khai.

61

Tông kết CBC

Khoa bí mật của tô

chức

Định danh của phiêu bau lảm nội dung tin nhắn

danh

Trùng với chữ ky mã héa định danh định trước: phiêu bau lên sỗ cải

bau lên số cái

Hình 4.8 Kiểm tra định danh của phiếu bau có phải định danh định trước

4.3. So sánh giữa các phương pháp bảo mật

4.3.1. Thư viện ‘elliptic’

Đường cong elip là các đối tượng toán học với nhiều ứng dụng mật mã, bao gồm mã hóa khóa công khai và chữ ký số. Một trong những lợi ích của việc sử dụng các đường cong elip là chúng cung cấp mức độ bảo mật cao trong khi yêu cầu kích thước khóa

62

tương đối khiêm tốn. Tuy nhiên, việc triển khai mã hóa đường cong elip (ECC) có thé khó khăn va dé xảy ra lỗi, đặc biệt đối với các nhà phát triển không quen với toán

học cơ ban. Day là lúc thư viện npm 'elliptic' trở nên hữu ich. Thư viện 'elliptic' là

một mô-đun JavaScript cung cấp giao diện hoàn chỉnh và thân thiện với người dùng

dé làm việc với các đường cong elliptic. Nó hỗ trợ nhiều loại đường cong, bao gồm secp256k1, ed25519 và curve25519, đồng thời cung cấp các kỹ thuật tạo khóa, mã

hóa, giải mã, chữ ký và xác minh. [9]

4.3.2. Công cụ nội bộ của NodeJS

Thư viện 'crypto' nội bộ của Node.js là một mô-đun cung cấp các chức năng mã hóa

để giúp bảo mật ứng dụng Node.js. Bao gồm một tập hợp các trình bao bọc cho hàm

băm, HMAC, mật mã, giải mã, ký và xác minh của OpenSSL.

Một trong những chức năng mã hóa mà thư viện ‘crypto' của Node.js hỗ trợ là mã

hóa mật mã đường cong. Mật mã trên đường cong có thê được sử dung dé mã hóa, chữ ký số, trao đôi khóa, v.v.

63

Một phần của tài liệu Khóa luận tốt nghiệp Hệ thống thông tin: Ứng dụng công nghệ chuỗi khối trong việc xây dựng hệ thống bầu cử (Trang 50 - 66)

Tải bản đầy đủ (PDF)

(102 trang)