Kết luận chương 1

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng hệ thống bỏ phiếu điện tử sử dụng mật mã (Trang 28)

Qua nội dung chương 1, có thể thấy phương pháp bỏ phiếu điện tử khẳng định được ưu việt vượt trội so với bỏ phiếu truyền thống và là xu hướng tất yếu của tương

lai. Hệ thống bỏ phiếu điện tử cũng bao gồm các thành phần và cũng phải trải qua các giai đoạn như bỏ phiếu thông thường. Tuy nhiên, nhờ sự trợ giúp của kỹ thuật mật mã, bỏ phiếu điện tử có thể hạn chế thấp nhất các sai nhầm mang yếu tố con người khi đo lường kết quả kiểm phiếu như: đảm bảo sự ẩn danh trong lá phiếu của cử tri tránh việc cử tri bị khống chế; ngăn ngừa việc mua bán phiếu bầu. Cơ sở toán học cho các phương pháp mật mã thường ứng dụng trong bỏ phiếu điện tử sẽ được trình bày chi tiết trong chương 2.

CHƯƠNG 2

ỨNG DỤNG MỘT SỐ GIẢI PHÁP TRONG XÂY DỰNG HỆ THỐNG BỎ PHIẾU ĐIỆN TỬ 2.1. Cơ sở toán học của mật mã.

2.1.1. Nhóm, vành và không gian Zp.

Nhóm:

Nhóm là cấu trúc bao gồm tập G và toán tử hai ngôi ∗ , trường G. Với a,b ∈ G, a b ∈ G được định nghĩa như sau:

a ∗ (b∗ c)=(a ∗b) ∗c với mọi a,b,c ∈ G

Tồn tại e ∈ G thoả mãn e ∗a=a ∗e=a với mọi a ∈ G, (e gọi là phần tử trung hoà). Với mỗi a ∈ G, tồn tại một phần tử b ∈ G thoả mãn b∗ a=a∗ b=e (b là duy nhất và được gọi là phần tử nghịch đảo của a).

Ký hiệu <G,. >là nhóm nhân và <G,+> là nhóm cộng. Trong nhóm cộng, phần tử trung hoà là 0 và phần tử nghịch đảo của a là –a. Trong nhóm nhân, phần tử trung hoà là 1 và phần tử nghịch đảo của a la a-1.

<G,. > được gọi là nhóm abel nếu a∗ b=b∗ a với mọi a, b thuộc G.

Nếu <G,. > là nhóm hữu hạn thì số phần tử của <G,. > được gọi là bậc của G và ký hiệu là |G|.

Bậc của phần tử a ∈ G là số nguyên dương nhỏ nhất n thỏa mãn an = 1. Ở đây, trong nhóm nhân an được hiểu là a.a...a (n lần), còn trong nhóm cộng là a+a+...+a (n lần). Trong nhóm nhân với mọi phần tử thuộc nhóm thì n luôn tồn tại.

Nếu a  G có bậc m thì H = { ak | k  Z } là nhóm con của G và có bậc m. Nếu G có một phần tử a có bậc n = |G| thì G = { ak | k  Z} và G được gọi là một nhóm cylic, a được gọi là phần tử sinh của G.

Ví dụ, tập hợp Zn = {0, 1, 2,…, n - 1} là một nhóm cylic bậc n với toán tử cộng module n.

Vành:

Định nghĩa: Tập hợp R được gọi là vành nếu trên đó có hai phép toán hai ngôi mà ta ký hiệu là "+" (phép cộng) và "." (phép nhân) thỏa mãn các điều kiện sau:

R là một nhóm giao hoán đối với phép cộng, nghĩa là:

- Phép cộng có tính kết hợp: x y z, , R: (xy)  z x (yz)

- Phép cộng có phần tử trung hòa, nghĩa là:    0 R, x R: 0   x x 0 x - Mọi phần tử của R có phần tử đối:  x, x' :x   x' x' x 0

- Phép cộng có tính giao hoán, nghĩa là: x y, R x:   y y x

- Phép nhân có tính phân phối với phép cộng, nghĩa là:

, , : x(y z) . .

x y z R x y x z

    

Phép nhân có tính kết hợp, nghĩa là x y z, , R: (x. y).zx y z.( . )

Phép nhân có phần tử đơn vị, nghĩa là:    1 R, x R:1   x x 1 x

2.1.2. Bài toán logarit rời rạc.

Định nghĩa: giả sử G là một nhóm cyclic hữu hạn có n phần tử. Chúng ta ký hiệu phép toán của G theo kiểu nhân. Giả sử b là một phần tử sinh của G. khi đó mọi phần tử g G có thể viết dưới dạng g = bk với một số nguyên k nào đó. Hơn nữa, hai số nguyên có cùng tính chất đó với g là đồng dư theo module n.

Ta định nghĩa một hàm: log : b GZn (trong đó Zn ký hiệu cho vành các số nguyên modulo n) theo g là lớp các số nguyên k modul n. Hàm này là một đồng cấu nhóm, được gọi là logarit rời rạc theo cơ số b.

Công thức đổi cơ số giống như logarith thông thường: Nếu c là một phần tử sinh khác của G, thì: log ( )c g log ( ).log ( )c b b g

Cho p là một số nguyên tố. Xét nhóm nhân các số nguyên module p: với phép nhân module p. Z*p {1,2,...p}

Nếu ta tính luỹ thừa bậc k của một số trong nhóm rồi rút gọn theo module p thì ta được một số trong nhóm đó. Quá trình này được gọi là luỹ thừa rời rạc modulo p. Chẳng hạn với p=17, lấy a=3, k=4 ta có: 4

3 81 13(mod17)

Hiện nay, chưa có thuật toán hiệu quả nào để tính logarit rời rạc tổng quát. Có nhiều thuật toán phức tạp, thường sinh ra từ những thuật toán tương tự cho bài toán phân tích thừa số nguyên. Chúng chạy nhanh hơn các thuật toán thô sơ, nhưng vẫn còn chậm hơn so với thời gian đa thức.

Logarit rời rạc là bài toán khó (chưa biết một thuật toán hiệu quả nào), trong khi bài toán ngược luỹ thừa rời rạc lại không khó (có thể sử dụng thuật toán bình phương và nhân). Tình trạng này giống như tình hình giữa bài toán thừa số nguyên và phép nhân các số nguyên. Chính vì vậy, chúng đều có thể dùng để xây dựng cấu trúc cho một hệ mật mã.

Người ta thường chọn nhóm G trong mật mã logarit rời rạc là nhóm cyclic (Zp)× chẳng hạn như mật mã ElGamal, Trao đổi khoá Diffie-Hellman, và Chữ ký số Elgamal.

Ngoài ra còn có mật mã sử dụng lôgarit rời rạc trong nhóm con cyclic của các đường elliptic trên trường hữu hạn gọi là mật mã đường cong elliptic.

2.1.3. Mã hóa và giải mã dữ liệu.

Mã hóa dữ liệu là sử dụng một phương pháp biến đổi dữ liệu từ dạng bình thường sang một dạng khác, mà một người không có thẩm quyền, không có phương tiện giải mã thì không thể đọc hiểu được. Giải mã dữ liệu là quá trình ngược lại, là sử dụng một phương pháp biến đổi dữ liệu đã được mã hóa về dạng thông tin ban đầu.

Hình 2.1. Mã hóa dữ liệu.

- Mã hóa: Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được mã hóa sao cho người khác không thể đọc hiểu được.

- Giải mã: Là quá trình ngược lại của mã hóa, biến đổi dữ liệu đã được mã hóa thành dạng gốc ban đầu.

- Bản mã: Tệp dữ liệu đã được mã hóa.

- Một hệ thống mã hóa bao gồm các thành phần sau: - PlainText : Bản tin sẽ được mã hóa hay bản tin gốc. - CipherText : Bản tin đã được mã hóa hay bản tin mã. - Thuật toán mã hóa và giải mã :

Encryption : quá trình chuyển bản tin gốc sang dạng mật mã. Decryption : giải bản tin dạng mật mã trở về bản tin gốc. Cách chọn khóa : giá trị toán học dùng để thực hiện mã hóa.

Nhiều phương pháp mã hóa đã được đưa ra dựa trên những giải thuật toán phức tạp, để tạo khó khăn cho những ai đó muốn phá mật mã mà không cần được ai trao chìa khóa. Nói tạo khó khăn là vì trên lý thuyết ta không thể nói việc tìm chìa khóa là vô phương. Nhưng nếu trở ngại đủ lớn để làm nản lòng kẻ gian thì đã là một mức độ an toàn tốt.

Quá trình mã hóa và giải mã có thể được minh họa theo sơ đồ sau :

--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- Quá trình truyền dữ liệu Quá trình mã hóa Quá trình giải mã Bản tin gốc Bản tin gốc Bản tin mã Bản tin mã ``` ``` ``` ``` ``` ```

2.1.4. Mã hóa và giải mã bằng khóa bí mật và công khai.

2.1.1.1 Mã hóa và giải mã bằng khóa bí mật.

Các hệ thống mã hóa với khóa bí mật còn được gọi là mã hóa bằng khóa riêng, mã hóa đối xứng sử dụng duy nhất một khóa cho cả quá trình mã hóa lẫn quá trình giải mã.

Có hai loại thuật toán mã hóa bí mật:

 Stream Algorithms/Stream Ciphers : các thuật toán hoạt động trên văn bản bình thường theo từng bit một.

 Block Algorithms/Block Ciphers : các thuật toán hoạt động trên văn bản theo các khối (32 bit, 64 bit, 128 bit, ...).

 Một số thuật toán đang được sử dụng rộng rãi hiện nay : DES, Triple-DES, RC5, RC6, Rijndael ...

Quá trình mã hóa và giải mã bằng cách sử dụng khóa bí mật được minh họa như: --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- Quá trình truyền dữ liệu Khóa bí mật(chỉ Có người mã hóa và người giải mã biết)

Quá trình mã hóa Quá trình giải mã Bản tin gốc Bản tin gốc Bản tin mã Bản tin mã ``` ``` ``` ``` ``` ```

2.1.1.2 Mã hóa và giải mã bằng khóa công khai. --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- Quá trình truyền dữ liệu

Khóa công khai, chỉ dùng để mã hóa (có thể cho mọi người

biết) Khóa mật, chỉ dùng để giải mã (cần được giữ bí mật) Quá trình mã hóa Quá trình giải mã Bản tin gốc Bản tin gốc Bản tin mã Bản tin mã ``` ``` ``` ``` ``` ```

Hình 2.4. Sơ đồ mã hóa và giải mã bằng khóa công khai.

Mã hóa bằng khóa công khai còn gọi là mã hóa bất đối xứng hay mã hóa bằng khóa chung. Sự khác biệt cơ bản giữa một hệ thống mã hóa bằng khóa bí mật với hệ thống mã hóa bằng khóa công khai là hệ thống mã hóa khóa công khai dùng hai khóa khác nhau để mã hóa và giải mã. Do đó, một bộ mã công khai sẽ bao gồm hai khóa: một khóa dành cho người mã hóa thường được công khai, và khóa còn lại dùng cho người giải mã thường được giữ bí mật. Như vậy, hệ thống mã hóa với khóa công khai cần có một quá trình sinh ra hai khóa để mã hóa và giải mã thông điệp. Các khóa này được xem như là một đôi.

Public-key (khóa công khai): được phép công khai mà không phải chịu rủi ro về an toàn. Khóa này được dùng để mã hóa thông điệp.

Private-key (khóa bí mật): không được để lộ. Mỗi thông điệp được mã hóa bằng public-key chỉ có thể giải mã bằng một khóa mật thích hợp.

Một số thuật toán mã hóa công khai phổ biến: RSA, Diffie-Hellman Key- Exchange Algorithm (dùng cho việc phân phối và trao đổi khóa).

2.2. Sử dụng hệ mã hóa khóa công khai Elgamal trong bỏ phiếu điện tử.

2.2.1. Tổng quan về hệ mật mã khóa công khai.

Ý tưởng của hệ mật công khai được Diffie và Hellman đưa ra năm 1976. Còn việc thực hiện hệ mật công khai thì do Rivest, Shamir và Adleman đưa ra đầu tiên năm 1977, họ đề xuất một hệ mật RSA nổi tiếng. Và kể từ đó có một số hệ mật khác được công bố, độ mật của chúng dựa trên bài tính toán khác nhau, như dựa trên độ khó của bài toán phân tích thành nhân tử như hệ mật RSA, dựa vào độ khó logarithm rời rạc như hệ mật ElGamal, hay dựa trên đường cong Elliptic.

Sơ đồ của hệ mã công khai được cho ở Hình 2.5 .

Hình 2.5. Hệ mật mã công khai. Bảng 2.1. Một số ví dụ về mã hóa và giải mã. T R C’ R y C’’ Z 1 Z T’ 455 457 381267 181064 263892 181064 168667 455 2222 333 309977 545579 295242 545579 313868 2222 554 2224 114192 394828 691348 394828 530064 554 6878 1175 413040 351963 378587 351963 684082 6878 34333 95453 77756 698244 76073 698244 194793 34333 332 545 417805 231659 454024 231659 89120 332 978 9996 618551 527400 421976 527400 247794 978 8656 778645 305246 305321 144687 305321 329172 8656 1233 7564 558848 523937 379425 523937 419571 1233 8965 3434 239368 658412 626159 658412 701743 8965

2.2.2. Tính đồng cấu của hệ mã hóa Elgamal.

Mã hóa đồng cấu.

Khái niệm mã hóa đồng cấu: Cho tập bản rõ P tạo thành nhóm với phép tính

⊗, tập bản mã C tạo thành nhóm với phép tính ⊗.

Ek (m) là hàm mã hoá bản rõ m theo tham số ngẫu nhiên bí mật k. Hệ mã hóa E được gọi là có tính chất (⊕,⊗- đồng cấu, nếu với tham số

k=k1+k2, thỏa mãn công thức đồng cấu: Ek1 (m1) Ek2 (m2) = Ek (m1 ⊕ m2), trong đó m1, m2 là 2 bản rõ, k1, k2 là 2 tham số ngẫu nhiên bí mật.

Hệ mã hoá Elgamal có tính chất đồng cấu

Trong hệ mã hóa Elgamal với k = k1 + k2 , ta có: 2

1 1 2

1( 1) ( k , k 1), 2( 2) ( k , k 2)

k k

E mg h m E mg h m thỏa mãn công thức đồng cấu.

2 1 2 1 1 2 2 2 1 1 1 2 1 2 1 2 1 2 1 2 ( ) ( ) (g g , h ) (g , h ) (g , ) ( ) k k k k k k k k k k k k k E m E m h m m m m h m m E m m       

Trường hợp chọn thông tin m = gv, trong đó v = 0hoặc v = 1 vì:

i ( i) ( , y ) (g , hi i i), 1, 2 i v k k v k i E gxg i do đó 1 2 1 2 1 2 1 1 2 2 1 2 1 2 ( ,x y) ( x ,y )(x x ,y y )(gkk , hkk gvv )

2.2.3. Ứng dụng hệ mã hóa Elgamal cho bỏ phiếu đồng ý /không đồng ý.

2.2.3.1. Bài toán:

Công ty X cần lấy ý kiến về việc tiếp tục sản xuất sản phẩm Y hay không? Các thành viên của công ty (gọi là cử tri) bỏ phiếu để quyết định bằng cách đồng ý (1) hay không đồng ý (0). Nội dung lá phiếu được mã hoá và gửi về Ban kiểm phiếu. Vấn đề là Ban kiểm phiếu tính kết quả bỏ phiếu như thế nào, trong khi không biết nội dung từng lá phiếu.

Giải quyết:

 Cử tri ghi ý kiến vào lá phiếu.

Giả sử có 4 cử tri tham gia bỏ phiếu là: V1, V2, V3, V4 và chọn các giá trị mi =

Chọn phần tử sinh g, hệ mã hóa Elgamal được sử dụng ở đây có các khóa như sau: Ban kiểm phiếu chọn khóa bí mật a, tính khóa công khai h = ga

.

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng hệ thống bỏ phiếu điện tử sử dụng mật mã (Trang 28)

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

(72 trang)