14
Đề tài: TÌM HIỂU HỆ MẬT MÃ ELGAMAL I. Giới thiệu về hệ mật mã - Ta biết rằng tin truyền trên mạng rất dễ bị lấy cắp. Để đảm bảo việc truyền tin an toàn người ta thường mã hoá thông tin trước khi truyền đi. Việc mã hoá thường theo quy tắc nhất định gọi là hệ thống mật mã. - Một hệ thống mật mã là một hệ bao gồm 5 thành phần (P, C, K, E, D) thỏa mãn các tính chất sau: P (Plaintext) là tập hợp hữu hạn các bản rõ có thể. C (Ciphertext) là tập hợp hữu hạn các bản mã có thể. K (Key) là tập hợp các bản khoá có thể. E (Encrytion) là tập hợp các qui tắc mã hoá có thể. D (Decrytion) là tập hợp các qui tắc giải mã có thể. - Quá trình mã hóa được tiến hành bằng cách áp dụng hàm toán học E lên thông tin P, vốn được biểu diễn dưới dạng số, để trở thành thông tin đã mã hóa C. - Quá trình giải mã được tiến hành ngược lại: áp dụng hàm D lên thông tin C để được thông tin đã giải mã. Quá trình mã hoá và giải mã 1

Hệ mật mã elgamal

Embed Size (px)

Citation preview

Page 1: Hệ mật mã elgamal

Đề tài:

TÌM HIỂU HỆ MẬT MÃ ELGAMAL

I. Giới thiệu về hệ mật mã- Ta biết rằng tin truyền trên mạng rất dễ bị lấy cắp. Để đảm bảo việc truyền tin

an toàn người ta thường mã hoá thông tin trước khi truyền đi. Việc mã hoá thường theo quy tắc nhất định gọi là hệ thống mật mã.

- Một hệ thống mật mã là một hệ bao gồm 5 thành phần (P, C, K, E, D) thỏa mãn các tính chất sau: P (Plaintext) là tập hợp hữu hạn các bản rõ có thể. C (Ciphertext) là tập hợp hữu hạn các bản mã có thể. K (Key) là tập hợp các bản khoá có thể. E (Encrytion) là tập hợp các qui tắc mã hoá có thể. D (Decrytion) là tập hợp các qui tắc giải mã có thể.

- Quá trình mã hóa được tiến hành bằng cách áp dụng hàm toán học E lên thông tin P, vốn được biểu diễn dưới dạng số, để trở thành thông tin đã mã hóa C.

- Quá trình giải mã được tiến hành ngược lại: áp dụng hàm D lên thông tin C để được thông tin đã giải mã.

Quá trình mã hoá và giải mã

- Thám mã (phá mã) là tìm những điểm yếu hoặc không an toàn trong phương thức mật mã hóa. Thám mã có thể được thực hiện bởi những kẻ tấn công ác ý, nhằm làm hỏng hệ thống; hoặc bởi những người thiết kế ra hệ thống (hoặc những người khác) với ý định đánh giá độ an toàn của hệ thống.

- Hệ mật mã gồm: Hệ mật mã đối xứng (hay còn gọi là mật mã khóa bí mật): là những hệ mật

dùng chung một khoá cả trong quá trình mã hoá dữ liệu và giải mã dữ liệu.

1

Page 2: Hệ mật mã elgamal

Do đó khoá phải được giữ bí mật tuyệt đối. Một số thuật toán nổi tiếng trong mã hoá đối xứng là: DES, Triple DES(3DES), RC4, AES…

Hệ mật mã bất đối xứng (hay còn gọi là mật mã khóa công khai): Các hệ mật này dùng một khoá để mã hoá sau đó dùng một khoá khác để giải mã, nghĩa là khoá để mã hoá và giải mã là khác nhau. Các khoá này tạo nên từng cặp chuyển đổi ngược nhau và không có khoá nào có thể suy được từ khoá kia. Khoá dùng để mã hoá có thể công khai nhưng khoá dùng để giải mã phải giữ bí mật. Do đó trong thuật toán này có 2 loại khoá: Khoá để mã hoá được gọi là khóa công khai-Public Key, khoá để giải mã được gọi là khóa bí mật - Private Key. Một số thuật toán mã hoá công khai nổi tiếng: Diffle-Hellman, RSA, Rabin, Elgamal,…

II. Hệ mật mã Elgamal Hệ Elgamal là một hệ mật mã công khai Hệ Elgamal dựa trên bài toán logarithm rời rặc. Tính an toàn của nó

phụ thuộc vào độ phức tạp của bài toán logarithm. Hệ Elgamal là 1 biến thể của sơ đồ phân phối khóa Diffie-Hellmal,

được đưa ra năm 1984. So với RSA, Hệ Elgamal không có nhiều rắc rối về vấn đề quyền sử

dụng.

III. Mã hóa và giải mã hệ Elgamal

2

Page 3: Hệ mật mã elgamal

Ban đầu người ta sẽ lựa chọn một số nguyên tố lớn p và 2 số nguyên tố nhỏ hơn p là alpha ( một phần tử nguyên thủy của Z*p) và a ( khóa bí mật của người nhận) sau đó tính khóa công khai:

beta =alphaa mod p

Lưu ý: Để tạo khó khăn cho việc phá mã thì nên chọn p có ít nhất 150 chữ số

Để mã hóa một thông điệp M (một số nguyên tố trên Zp) thành bản mã C người gửi chọn một số ngẫu nhiên k nhỏ hơn p và tính cặp bản mã:

C1 = alphak mod p

C2 = (M*betak )mod p

Và gửi bản mã C=( C1,C2) đi (sau đó k sẽ bị hủy đi).

Để giải mã thông điệp M đầu tiên ta dùng khóa bí mật a và tính theo công thức:

M = (C2* (C1a) -1) mod p

Vơí: (C1a) -1) mod p = (C1

(p-1-a)) mod p

Kết luận:

Xây dựng được hệ mã Elgamal bộ khóa: K=(p, alpha, a, beta) với:

- Thành phần khóa công khai: KU= (alphal, beta, p)

- Thành phần khóa bí mật: KR= (a, p)

Ví dụ: cho Hệ Elgamal có p = 2579; alpha = 2; a = 765; chọn k ngẫu nhiêu là 853. Bản rõ M = 1299.Tìm khóa của hệ mã trên?

Mã hóa :

Trước hết ta tính: beta = alphaa mod p = 2765 mod 2579 = 949

3

Page 4: Hệ mật mã elgamal

Để mã hóa thông điệp M = 1299 ta tính theo k =853:

C1 = alphak mod p = 2853 mod 2579 =435

C2 = (M*betak )mod p = (1299*949853 ) mod 2579 =2396

Vậy bản mã được gửi đi sẽ là C = (435, 2396).

Giải mã :

Với khóa bí mật a= 765:

(C1a) -1) mod p = (C1(p-1-a)) mod p = (435(2579-1-765)) mod 2579

= (4351813) mod 2579 = 1980

M = (C2* (C1a) -1) mod p = (2396*1980) mod 2579 = 1299

Kết luận:

Xây dựng được hệ mã Elgamal bộ khóa:

K=(p, alpha, a, beta) = (2579, 2, 765, 949) với:

- Thành phần khóa công khai:

KU= (alphal, beta, p) = (2, 949, 2579)

- Thành phần khóa bí mật:

KR= (a, p) = (765, 2579)

- Mã hóa M=1299 với C(C1, C2) = (435,2396)

IV. Thám mã hệ ElgamalĐể thám mã hệ Hệ Elgamal, ta cần phải giải bài toán logarit rời rặc. Chúng ta có 2 thuật toán để giải bài toán logarit rời rặc là: Thuật toán Shank Thuật toán Pohlig_Hellman

4

Page 5: Hệ mật mã elgamal

Trong đó thuật toán thám mã Shank được sử dụng nhiều hơn cả nên nhóm chỉ trình bài thuật toán Shank.

Bài toán logarith rời rạc:

Logarith rời rạc là sự kết nối của phép tính logarith trên trường số thực vào các nhóm hữu hạn. Ta nhắc lại rằng với hai số thưc x,y và cơ số a>0, a#0, nếu ax – y=0 thì x được gọi là logarith cơ số a của y, ký hiệu x = logay.

Logarith rời rạc là bài toán khó ( chưa biết thuật toán hiệu quả nào ). Trong khi bài toán ngược lũy 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).

Ví dụ:

Cho p là một số nguyên tố , xét nhóm nhân các số nguyên modulo p:

Zp* = { 1,2….,p } với phép nhân modulo p.

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

34 = 81 = 13 mod 17.

Logarith rời rặc là phép tính ngược lại :

Biết : 3k = 13 (mod 17) hãy tìm k.?

=>Thực hiện tương tự như thuật toán Shank => k=4. Tuy nhiên đây là một bài toán tương đối khó. Trong trường hợp p lớn ( có ít nhất 150 chữ số) thì bài toán trở thành bất khả thi => an toàn

Thuật toán Shank:

Thuật toán này có tên gọi khác là thuật toán thời gian _bộ nhớ. Tư tưởng của thuật toán là nếu ta có đủ bộ nhớ thì có thể sử dụng bộ nhớ đó để giảm thời gian thực hiện của thuật toán.

Input : Số nguyên tố p, phần tử nguyên thủy a cua Z*p, số nguyên y.

Output : Cần tìm a sao cho beta =alphaa mod p

5

Page 6: Hệ mật mã elgamal

Thuật toán :

Gọi m = [(p-1)1/2] (lấy phần nguyên).

Bước 1: Tính alphamj mod p với 0<=j<=m-1. Bước 2: Sắp xếp các cặp (j, alphamj mod p) theo alphalmj mod p và lưu

vào danh sách L1. Bước 3: Tính beta*alpha-i mod p với 0<=i<=m-1. Bước 4: Sắp xếp các cặp (i, beta*alpha-i mod p) theo beta*alpha-i mod p

và lưu vào danh sách L2. Bước 5: Tìm trong hai danh sách L1 và L2 xem có tồn tại cặp ( j, alphamj

mod p ) và ( i, beta*alpha-i mod p ) nào mà alphamj mod p = beta*alpha-i mod p (tọa độ thứ hai của hai cặp bằng nhau ).

Lưu ý: Vì alphamj = beta*alpha-i =>alphamj-i = beta nên bước 5 luôn thành công.

Bước 6: Tính a=logalpha beta=( mj + i ) mod ( p - 1 ). Kết quả này có thể kiểm chứng từ công thức:

alphamj mod p= beta*alpha-i mod p

=>alphamj+i mod p= beta mod p

=> logalpha beta =( mj + i ) mod ( p – 1 ) = a.

Ví dụ: Với bài toán trên người ta thám mã chỉ có khóa công khai:

Kp = ( p,a,y ) = ( 97,5,44 )

m = [(p-1)1/2] = [( 97-1)1/2] = 10

Bước 1: Tính alphamj mod p với 0<=j<=m-1.

Bước 2: Sắp xếp các cặp (j, alphamj mod p) theo alphamj mod p và lưu vào danh sách L1

J(0<=j<=m-1) 510j mod 97(alphamj mod p)

6

Page 7: Hệ mật mã elgamal

0 1

1 53

2 93

3 79

4 16

5 72

6 33

7 3

8 62

9 85

Bước 3: Tính beta*alpha-i mod p với 0<=i<=m-1.

Bước 4: Sắp xếp các cặp (i, beta*alpha-i mod p) theo beta*alpha-i mod p và lưu vào danh sách L2.

7

Page 8: Hệ mật mã elgamal

i(0<=j<=m-1) 44*5-i mod 97(beta*alpha-i mod p)

0 44

1 26

2 33

3 68

4 49

5 51

6 61

7 14

8 70

9 59

Bước 5: Tìm trong hai danh sách L1 và L2 xem có tồn tại cặp ( j, alphamj mod p ) và ( i, beta*alpha-i mod p ) nào mà alphamj mod p = beta*alpha-i mod p (tọa độ thứ hai của hai cặp bằng nhau ).

Dựa vào bảng 2 bảng danh sách L1 và L2 khi j = 6 và i = 2 thì:

8

Page 9: Hệ mật mã elgamal

alphamj mod p = beta*alpha-i mod p = 33

Bước 6: Tính a= ( mj + i ) mod ( p - 1 ). Kết quả này có thể kiểm chứng từ công thức alphamj mod p = beta*alpha-i mod p = alphamj+i mod p => a=( mj + i ) mod ( p – 1 ).

Vậy ta có a = (10 * 6 +2) mod (97 – 1 ) = 62.

Quản lý khóa

Hệ mật bất đối xứng khắc phục được tính chất phức tạp trong việc phân phối khóa ở hệ mật đối xứng. Cho phép giao tiếp giữa các đối tượng một cách uyển chuyển , dễ dàng.

Thông báo công khai khóa của người sử dụng. Thư mục truy cập công cộng. Phân phối khóa công khai từ tổ chức Chứng nhận khoá công khai: khoá công khai của người

sử dụng được nơi có thẩm quyền chứng nhận.

Độ an toàn- Hệ thống elgamal

9

Page 10: Hệ mật mã elgamal

Hệ thống elgamal dựa trên bài toàn logarit rời rạc. Tính an toàn của nó tùy thuộc vào độ phức tạp của bài toán logarit.

Trong bài toán về hệ Elgamal:

+ p là số nguyên tố, a là phần tử nguyên thủy của Z*p. (p và a là cố định)

+ Bài toán logorit rời rạc có thể được phát biểu như sau: Tìm 1 số mũ x duy nhất, 0<=x<=p-2 sao cho ax=y mod p, với y thuộc Z*p cho trước.

+ Bài tóan có thể giải được bởi phương pháp vét cạn ( tức là duyệt tất cả phần tử x) để tìm x thỏa mãn. Bài toán có độ phức tạp là: O(p) (bỏ qua thừa số logarit). Vấn đề đặt ra là nếu p lớn, rất lớn thì để thực hiện phương pháp này cần thời gian rất lớn. Suy ra không khả thi.

Xét thuật toán Shank để thám mã hệ mã hóa Elgamal

+ Người thám mã chỉ có khóa công khai (p,a,y).

+ Bài toán logarit rời rạc cũng được phát biểu như sau: Tìm 1 số mũ x duy nhất, 0<=x<=p-2 sao cho ax=y mod p, với y thuộc Z*p cho trước.

+ Độ phức tạp của bài toán là O([p-1]^1\2) và bộ nhớ O([p-1]^1\2)( bỏ qua thừa số logarit), giảm rất nhiều so với phương pháp vét cạn.

+ Chúng ta cần tính các phần tử thuộc 2 danh sách L1, L2 đều là phép toán lũy thừa phụ thuộc và i, j; i và j lại phụ thuộc vào m nên ta nhận thấy bài toán chỉ áp dụng với những trường hợp p nhỏ.

Đánh giá độ an toàn của hệ mã hóa Elgamal:

- Hệ mã hóa Elgamal áp dụng bài toán logarit rời rạc chính vì vậy độ an toàn của hệ mã hóa là rất lớn vì bài toán logarit rời rạc chưa có phương pháp hiệu quả để tính.

- Với 1 số p đủ lớn, thuật toán mã hóa Elgamal không có phương pháp thám mã hiệu quả.

Ưu , nhược điểm của hệ mã Elgamal- Ưu điểm: Độ phức tạp của bài toán logarith lớn nên đọ an toàn cao.

10

Page 11: Hệ mật mã elgamal

Bản mã phụ thuộc vào bản rõ x và giá trị ngẫu nhiên nên từ một bản rõ ta có thể có nhiều bản ma khác nhau.

- Nhược điểm: Tốc độ chậm ( do phải xử lý số nguyên lớn ) Dung lượng bộ nhớ dành cho việc lưu trữ khoa yêu cầu phải lớn.

Tài liệu tham khảo:

1. Bài giảng an toàn và bảo mật thông tin - Trần Minh Văn – Đại học Nha Trang

2. Elgamal encryption - Wikipedia3. Bài giảng hệ mật mã Elgamal. Link: http://doc.edu.vn/tai-lieu/bai-

giang-he-mat-elgamal-57863/4. Tìm hiểu hệ mật mã Elgamal. Link:

http://123doc.org/document/2556734-tim-hieu-he-mat-ma-elgamal.htm

11