2.3.2.1. Mã hóa 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ƣ Hình 2.4. --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- 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ã ``` ``` ``` ``` ``` ```
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
2.3.2.2. Mã hóa 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.5 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).
Quá trình mã hóa và giải mã bằng cách sử dụng khóa công khai đƣợc minh họa nhƣ hình sau :
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
2.3.3. Ưu khuyết điểm của hai phương pháp
2.3.3.1. Phương pháp mã hóa khóa bí mật
Bảng 2.1 Các ưu khuyết điểm của hệ thống khóa bí mật (khóa đối xứng)
Ƣu điểm Khuyết điểm
+ Có thể đƣợc thiết kế để đạt tốc độ cao. Các thiết bị phần cứng hỗ trợ có thể đạt tốc độ hàng trăm megabytes mỗi giây trong khi việc thực thi bằng phần mềm chỉ đạt đƣợc khoảng vài megabytes mỗi giây.
+ Khóa dùng cho mã hóa khóa đối xứng tƣơng đối ngắn.
+ Đƣợc xem nhƣ thành phần cơ bản có thể triển khai để xây dựng các kỹ thuật mã hóa khác bao gồm khởi tạo các số ngẫu nhiên, các hàm băm, các kỹ thuật tính toán.
+ Có thể đƣợc kết hợp để tạo ra các thuật toán mã hóa mạnh hơn.
+ Trong quá trình truyền thông giữa hai ngƣời, khóa phải đƣợc giữ bí mật cho cả hai phía.
+ Trong một hệ thống mạng lớn, số lƣợng khóa cần đƣợc quản lý rất nhiều. Do vậy việc quản lý khóa một cách hiệu quả đòi hỏi sử dụng một bộ phận tin cậy thứ ba (TTP :Trusted Third Party).
+ Khóa bí mật cần đƣợc thay đổi thƣờng xuyên.
+ Kỹ thuật chữ ký số đƣợc phát triển từ cơ chế mã hóa khóa đối xứng đòi hỏi sử dụng các khóa lớn cho các hàm xác nhận công khai hoặc là sử dụng một TTP.
2.3.3.2. Phương pháp mã hóa khóa công khai
Bảng 2.2 Các ưu khuyết điểm của hệ thống mã hóa khóa công khai :
Ƣu điểm Khuyết điểm
+ Chỉ có khóa riêng thì cần đƣợc giữ bí mật (tuy nhiên việc xác nhận của các khóa công khai cần đƣợc đảm bảo). + Việc quản trị các khóa trên mạng đòi hỏi sự tồn tại duy nhất một thành phần tin cậy TTP.
+ Cặp khóa riêng và công khai có thể
+ Tốc độ cho các phƣơng thức mã hóa công khai thì chậm hơn rất nhiều so với các mô hình khóa đối xứng.
+ Kích thƣớc khóa lớn hơn rất nhiều so với cơ chế mã hóa khóa đối xứng.
+ Không có mô hình khóa công khai nào đƣợc chứng minh là an toàn. Phần
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
đƣợc sử dụng trong thời gian dài.
+ Nhiều mô hình khóa công cộng đƣợc phát triển hình thành nên các kỹ thuật chữ ký số hiệu quả. Khóa đƣợc sử dụng cho hàm kiểu công khai thì nhỏ hơn rất nhiều so với dùng khóa đối xứng.
+ Trong một mạng lớn, số lƣợng các khóa cần thiết đƣợc quan tâm ít hơn so với việc dùng khóa đối xứng.
lớn các mô hình mã hóa hiệu quả ngày nay có sự an toàn dựa trên các giả thuyết của một tập nhỏ của các vấn đề lý thuyết số học.
+ Hệ thống mã hóa công khai không có bề dày lâu đời nhƣ hệ thống mã hóa khóa đối xứng, nó chỉ đƣợc tìm ra vào giữa khoảng những năm 1970.
Kết luận chƣơng 2
Trong bối cảnh hiện tại, mọi hệ thống thông tin điện tử đều phải đƣơng đầu với bài toán đảm bảo an toàn và bảo mật. Nhƣ nội dung chƣơng 2 đã trình bày, có nhiều chiến lƣợc cũng nhƣ phƣơng pháp bảo đảm an toàn thông tin. Trong đó, an toàn thông tin bằng mật mã có vai trò rất quan trọng và đƣợc ứng dụng rộng khắp. Từ các cơ sở toán của mật mã nhƣ trƣờng, vành, nhóm, không gian Zp, bài toán logarrit rời rạc …góp phần tạo ra hai hệ thống mã hóa (khóa công khai và khóa bí mật). Khi triển khai trong thực tiễn, qua việc phân tích ƣu nhƣợc điểm của hai phƣơng pháp có thể cho ta kết luận rằng hệ thống mật mã với khóa công khai có hiệu quả hơn cả. Chính vì vậy, luận văn lựa chọn giải quyết bài toán bỏ phiếu điện tử bằng hệ mã hóa khóa công khai Elgamal. Vấn đề này sẽ đƣợc phân tích chi tiết trong chƣơng 3.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
3. CHƢƠNG 3. ỨNG DỤNG HỆ MẬT ELGAMAL SƠ ĐỒ CHIA SẺ BÍ MẬT TRONG BỎ PHIẾU ĐIỆN TỬ
Để thực hiện mục tiêu đề ra của luận văn, căn cứ theo [1],[7], [9], phần đầu chƣơng 3 sẽ trình bày chi tiết và chứng minh tính chất đồng cấu của hệ mã hóa khóa công khai Elgamal. Tiếp đó, luận văn cũng giới thiệu một kỹ thuật chia sẻ khóa bí mật nhằm bổ xung tính phân quyền trong kiểm phiếu. Từ các kết quả này, luận văn đề xuất ứng dụng hệ mã hóa đồng cấu Elgamal và sơ đồ chia sẻ bí mật Shamir cho bài toán bỏ phiếu dạng “có không” và dạng “chọn L trong K”. Phần cuối chƣơng là chƣơng trình demo chứng minh khả năng thực hiện hai bài toán trên tại UBND tỉnh Tuyên Quang.
3.1. Hệ mật mã khóa công khai
3.1.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 [8]. Còn việc thực hiện hệ mật công khai thì do Rivest, Shamir và Adleman [9] đƣ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 3.1
Hình 3.1 Sơ đồ mã hóa công khai
Hệ mã công khai sử dụng hai khóa có quan hệ toán học với nhau, tức là một khóa này đƣợc hình thành từ khóa kia: Ngƣời muốn nhận bản mã (Alice) tạo ra một khóa mật (private key) và từ khóa mật tính ra khóa công khai (public key) với một thủ tục không phức tạp, còn việc tìm khóa mật khi biết khóa công khai là bài toán khó giải đƣợc. Khóa công khai sẽ đƣa đến cho ngƣời gởi bản tin (Bob) qua kênh công cộng. Và
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
bản tin đƣợc Bob mã hóa bằng khóa công cộng. Bản mã truyền đến Alice, và nó đƣợc giải mã bằng khóa mật.
3.1.2. Hệ mật Elgamal
Hệ mật Elgamall đƣợc xây dựng trên bài toán logarithm rời rạc . Hệ mật bắt đầu băng việc mô tả bài toán bài khi thiết lập môi trƣờng hữu hạn Zp, p là số nguyên tố (nhóm nhân Zp* là nhóm cyclic và phần tử sinh của Zp* đƣợc gọi là phần tử nguyên thuỷ).
Bài toán logarithm rời rạc trong Zp là đối tƣợng trong nhiều công trình nghiên cứu và đƣợc xem là bài toán khó nếu p đƣợc chọn cẩn thận. Cụ thể không có một thuật toán thời gian đa thức nào cho bài toán logarithm rời rạc. Để gây khó khăn cho các phƣơng pháp tấn công đã biết p phải có ít nhất 150 chữ số và (p-1) phải có ít nhất một thừa số nguyên tố lớn. Lợi thế của bài toán logarithm rời rạc trong xây dƣợng hệ mật là khó tìm đƣợc các logarithm rời rạc ,song bài toán ngƣợc lấy luỹ thừa lại có thể tính toán hiệu quả theo thuật toán "bình phƣơng và nhân". Nói cách khác , luỹ thừa theo
modulo p là hàm một chiều với các số nguyên tố p thích hợp.
Elgamal đã phát triển một hệ mật khoá công khai dựa trên bài toán logarithm rời rạc.
Hệ mật này là một hệ không tất định vì bản mã phụ thuộc vào cả bản rõ X lẫn giá trị ngẫu nhiên k do Alice chọn. Bởi vậy, sẽ có nhiều bản mã đƣợc mã từ cùng bản rõ.
Hệ mật Elgamal hình thành trên cơ sở bài toán logarith rời rạc. Đƣợc đề xuất năm 1984 theo [7]. Sau đó chuẩn chữ ký điện tử của Mỹ và Nga hình thành trên cơ sở hệ mật này.
3.1.2.1. Thuật toán hệ mật Elgamal
Hình thành khóa:
Giả sử Alice và Bob muốn trao đổi thông tin mật với nhau bằng hệ mật Elgamal. Thì trƣớc tiên Alice thực hiện qúa trình hình thành khóa nhƣ sau:
1. Chọn số nguyên tố đủ lớn p có chiều dài là k sao cho bài toán logarithm trong
p
Z là khó giải 2. Chọn *
p
Z là phần tử nguyên thủy. Chọn x là số ngẫu nhiên sao cho 1<x<p. 3. Tính giá trị y thỏa mãn công thức: y xmod p
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Quá trình mã hóa bản tin T:
1. Chọn số ngẫu nhiên R. (chọn k)
2. Tính:C Rmod p . (r k mod p ) 3. Sử dụng khóa mở tính:
C yRTmod p , (C ykTmod p ) 4. Bob gởi bản mã gồm C,C đến Alice (C,r)
Quá trình giải mã: 1. Tính giá trị: x R x Rx C Z . ( x k x kx r Z )
2. Tính gía trị nghịch đảo của Z:
Z1 Rx 1modp . (Z 1 kx 1mod p ) 3. Giải mã theo bản mã C : T C Z 1mod p .
(T C Z 1mod p T.yk.a k.xmodp T.akx.a k.xmodp
Chúng ta kiểm chứng lại quá trình giải mã là đúng nhƣ sau:
T T T y Z C T 1 R Rx 1 xR Rx 1 ) .( ) .( Ví dụ:; Giả sử cho: p 707933; 203; x 765; y 371696 Bảng 3.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
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
1233 7564 558848 523937 379425 523937 419571 1233 8965 3434 239368 658412 626159 658412 701743 8965
3.1.2.2. Chứng minh hệ mã hóa Elgamal có tính chất đồng cấu.
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 m g h m E m g 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 g x g i do đó 1 2 1 2 1 2 1 1 2 2 1 2 1 2 ( ,x y) ( ,x y ) (x x y y, ) (gk k , hk k gv v ) 3.2. Chia sẻ khóa bí mật
3.2.1. Kỹ thuật Chia sẻ khóa bí mật (Secret Sharing)
Sơ đồ chia sẻ bí mật không phải là một lĩnh vực mới mẻ của an toàn bảo mật