Chương 3 " Mật mã bất đối xứng" docx

9 1.3K 15
Chương 3 " Mật mã bất đối xứng" docx

Đang tải... (xem toàn văn)

Thông tin tài liệu

1 CHƯƠNG 3 MẬT BẤT ĐỐI XỨNG I-TỔNG QUAN I.1- Mật bất đối xứng Mật bất đối xứng (asymmetric cryptography) còn có tên gọi khác là mật khóa công khai (public key cryptography) hoặc mật hai khóa (two-key cryptography). Tài liệu này thống nhất dùng thuật ngữ mật bất đối xứng để chỉ tất cả các thuật toán mật trong đó dùng hai khóa khác nhau cho quá trình hóa và quá trình giải mã. Đặc trưng của kỹ thuật mật bất đối xứng là dùng 2 khóa riêng biệt cho hai việc hóa và giải mã. Một trong hai khóa được phổ biến công khai gọi là khóa công khai (public key hay PU), khóa còn lại được giữ bí mật gọi là khóa riêng (private key hay PR). Nếu quá trình hóa dùng khóa PU thì quá trình giải phải dùng khóa PR và ngược lại. Nói chung, mật hóa bất đối xứng không phải là một kỹ thuật mật an tòan hơn so với mật đối xứng, độ an tòan của một thuật toán nói chung phụ thuộc vào 2 yếu tố: Độ dài của khóa và mức độ phức tạp khi thực hiện thuật tóan (trên máy tính). Hơn nữa, mặc dù được ra đời sau nhưng không có nghĩa rằng mật bất đối xứng hòan tòan ưu điểm hơn và sẽ được sử dụng thay thế cho mật đối xứng. Mỗi kỹ thuật có một thế mạnh riêng và mật đối xứng vẫn rất thích hợp cho các hệ thống nhỏ và đơn giản. Ngoài ra, vấn đề phân phối khóa trong mật bất đối xứng cũng được đánh giá là một trong những vấn đề phức tạp khi triển khai kỹ thuật mật này trong thực tế. I.2- Nguyên tắc hoạt động Các thành phần của một hệ thống mật bất đối xứng tương tự như một hệ thống mật mã quy ước, chỉ khác nhau ở chi tiết dùng hai khóa K khác nhau cho hai bước hóa và giải mã. Khi user muốn gởi thông tin cho một user khác thì phải có khóa PU của user nhận, do vậy, mỗi user phải lưu trữ sẵn một danh sách các khóa công khai của nhiều user khác có quan hệ trao đổi dữ liệu. Một cơ chế để quản lý các khóa công khai này trên máy tính được gọi là key ring. Các bước cơ bản của một hệ thống mật dùng khóa công khai bao gồm: • Mỗi thực thể thông tin (user) tạo ra một cặp khóa (public/private) để dùng cho việc hóa và giải mã. • Mỗi user thông báo một trong hai khoá của mình cho các user khác biết, khóa này được gọi là khóa công khai (public key). Khóa còn lại được giữ bí mật, và gọi là khóa riêng (private key). • Nếu một user A muốn gởi thông tin cho user B, user A sẽ thực hiện hóa thông tin cần gởi bằng khóa công khai của user B. • Khi nhận được thông tin đã hóa từ user A, user B thực hiện giải thông tin đó bằng khóa riêng của mình. Do khóa riêng không phổ biến công khai nên chỉ có một mình user B có khả năng giải được. I.3- Ứng dụng của mật đối xứng: Mật hóa bất đối xứng được sử dụng cho các mục đích sau đây: -Bảo mật thông tin (message confidentiality) 2 -Xác thực nguồn gốc thông tin bằng chữ ký số (digital signature) -Trao đổi khóa trong các thuật toán đối xứng (key exchange). I.4- Tấn công mật bất đối xứng: Các thuật toán mật bất đối xứng dựa trên cơ sở lý thuyết số và các phép tính số học trên số nguyên rất lớn, do đó, độ an toàn của hệ thống phụ thuộc vào các yếu tố sau đây: -Các thao tác tạo cặp khóa, hóa và giải phải dễ thực hiện khi có đầy đủ thông tin (khóa công khai, khóa riêng, thông tin gốc, thông tin mật) tùy theo từng tình huống. -Các thao tác tìm khóa riêng từ khóa công khai hoặc giải bằng khóa công khai không thể thực hiện được . User E User C User B User D Khoá công khai của user B Khoá bí mật của user B T ập khoá công khai Thông tin gốc Thu ật toán m ã hoá (thực hiện bởi user A) Thu ật toán giải m ã (thực hiện bởi user B) Thông tin mật Thông tin gốc a- Ứng dụng bảo mật thông tin Thông tin gốc Thông tin gốc Thu ật toán m ã hoá (thực hiện bởi user A) Thu ật toán giải m ã (th ực hiện bởi user B) b- Ứng dụng xác thực thông tin User D User A User C User E T ập khoá công khai Khoá bí mật của user A Khoá công khai của user A Thông tin mật Hình 3.1: Cấu trúc hệ thống mật bất đối xứng 3 Một số kỹ thuật tấn công hệ thống mật bất đối xứng: -Tấn công bằng cách dò khóa (brute – force): thử lần lượt các khóa giống như tấn công hệ thống quy ước. Thách thức đối với hacker cũng chính là thời gian thực hiện tấn công, được xác định bởi số lần thử, và số lần thử lại được xác định bởi chiều dài khóa. Ngoài ra, độ phức tạp tính toán của bất đối xứng cao hơn nhiều so với đối xứng, công chiều dài khóa lên đến hàng ngàn bit thì kiểu tấn công này xem như không thực hiện được. -Tấn công bằng cách phân tích mã: dùng các công cụ toán để tìm khóa riêng sau khi biết khóa công khai. Cho đến nay, chưa tồn tại một chứng nào cho thấy có thể tìm được PR từ PU, do đó nguy cơ này xem như là rất thấp. -Một kỹ thuật tấn công đặc thù của mật đối xứng được sử dụng khi thông tin cần truyền đi có kích thước nhỏ (ví dụ khóa DES 56 bit), thì quá trình dò khóa chuyển thành dò khóa DES. II- THUẬT TOÁN MẬT RSA II.1- Cơ chế hoạt động RSA là thuật toán mật bất đối xứng được xây dựng bởi Ron Rivest, Adi Shamir và Len Adleman tại viện công nghệ Massachusetts (MIT), do đó được đặt tên là Rivest – Shamir – Adleman hay RSA. Thuật toán này ra đời năm 1977 và cho đến nay đã được ứng dụng trong nhiều lĩnh vực. Cũng như các thuật toán mật bất đối xứng khác, nguyên lý của RSA dựa chủ yếu trên lý thuyết số chứ không dựa trên các thao tác xử lý bit. RSA là một thuật toán mật khối, kích thước khối thông thường là 1024 hoặc 2048 bit. Thông tin gốc của RSA được xử lý như các số nguyên. Ví dụ, khi chọn kích thước khối của thuật toán là 1024 bit thì số nguyên này có giá trị từ 0 đến 2 1024 – 1, tương đương với số thập phân có 309 chữ số. Chú ý rằng đây là những số nguyên cực lớn, không thể xử lý được bằng cách sử dụng các cấu trúc dữ liệu có sẵn của các ngôn ngữ lập trình phổ biến. Thuật toán RSA được mô tả như sau: 1-Để tạo ra một cặp khóa RSA, trước hết, chọn hai số nguyên tố đủ lớn p và q. Gọi N là tích của p và q (N = pq). 2-Tiếp theo, chọn một số e sao cho e và (p-1)(q-1) là hai số nguyên tố cùng nhau. Sau đó tìm số d sao cho ed = 1 mod (p-1)(q-1). Ký hiệu mod m biểu diễn phép modulo trên cơ số m. 3-Bây giờ, bỏ qua vai trò của p và q. Với 3 thành phần còn lại là N, e và d, ta đó: -Khóa công khai (public key) là tổ hợp (N, e) -Khóa bí mật (private) là tổ hợp (N, d). 4-Việc hóa một khối thông tin gốc M được thực hiện theo công thức: C = M e mod N (với M là số nguyên nhỏ hơn N) 5-Và quá trình giải C được thực hiện theo công thức: M = C d mod N Cơ sở lý thuyết của thuật toán RSA dựa trên lý thuyết về số nguyên tố, phép toán modulo và định lý Euler như sau: Hàm Euler: Cho một số nguyên dương n, định nghĩa φ(n) là số các số nguyên dương nhỏ hơn n và là số nguyên tố cùng nhau với n. Ví dụ: cho n = 8, các số nguyên dương nhỏ hơn 4 8 và là số nguyên tố cùng nhau với 8 là các số 1, 3, 5, 7, do đó φ(8) = 4. φ(n) được gọi là hàm Euler của n. -Quy ước φ(1) = 1. -Nếu n là số nguyên tố thì tất cả các số nguyên dương nhỏ hơn n đều là số nguyên tố cùng nhau với n, khi đó φ(n) = n -1. -Nếu p và q là hai số nguyên tố và N = pq. Khi đó φ(N) = φ(p) . φ(q). Thật vậy, trong N-1 hay (pq-1) số nguyên dương nhỏ hơn N: các số p, 2p, …, (q-1)p và các số q, 2q, …, (p- 1)q là các số không phải nguyên tố cùng nhau với N. Như vậy: φ(N) = (pq – 1) – [(p – 1 ) + (q – 1)] = pq – (p + q) + 1 = (p – 1) (q – 1) = φ(p) . φ(q) Định lý Euler: cho a và n là hai số nguyên tố cùng nhau, ta có a φ(n) = 1 mod n. Ta chấp nhận định lý này không phải chứng minh. Với những cơ sở này, ta có thể kiểm chứng thuật toán RSA như sau: Cho trước khối thông tin mật C = M e mod N, cần kiểm chứng rằng M = C d mod N. Ta có: C d mod N = (M e ) d mod N = M ed mod N Xét quá trình tạo cặp khoá của RSA, ta có: ed = 1 mod (p – 1) (q – 1) Hơn nữa, N = pq nên φ(N) = (p – 1) (q – 1) với p, q là các số nguyên tố. Như vậy: ed – 1 = k φ(N) với một số nguyên k nào đó. Hay ed = kφ(N) + 1 Trước hết, ta chứng minh rằng M k(p - 1)(q - 1) + 1 mod p = M mod p. Thật vậy, xét hai trường hợp: -Nếu M và p không phải cặp số nguyên tố cùng nhau, tức M chia hết cho p (vì p là số nguyên tố), hay: M mod p = 0 ⇒ M k(p-1)(q-1) + 1 mod p = M mod p -Nếu M và p là cặp số nguyên tố cùng nhau, theo định lý Euler, ta có M φ(p) mod p = 1 hay M φ(p - 1) mod p = 1. Ta lại có: M k(p - 1)(q - 1) + 1 mod p = [(M)M k(p - 1)(q - 1) ] mod p = [(M)(M p - 1) ) k(q - 1) ] mod p = [(M)(M φ(p) ) k(q - 1) ] mod p = (M mod p) * [(M φ(p) ) mod p] k(q - 1 ) = (M mod p) * (1) k(q - 1) = M mod P Vậy, M k(p-1)(q-1)+1 mod p = M mod p 5 Xét [M k(p - 1)(q - 1)+1 - M] mod p = [M k(p - 1)(q - 1)+1 mod p] - [M mod p] = 0 Cho thấy [M k(p - 1)(q - 1) + 1 - M] chia hết cho p. Lý luận tương tự như vậy, ta cũng có [M k(p - 1)(q - 1) + 1 - M] chia hết cho q. p và q là hai số nguyên tố phân biệt nên tồn tại một số nguyên r sao cho [M k(p - 1)(q - 1)+1 - M] = (pq)r = Nr. Do đó: [M k(p - 1)(q - 1) + 1 - M] mod n = 0 (M kφ(N)+ 1 mod N) - (M mod N) = 0 (M kφ(N)+ 1 mod N) = M mod N = M Ví dụ: Cặp số nguyên tố p = 11 và q = 3 được chọn để tạo ra cặp khoá RSA cho user A. Khi đó, N = pq = 3*11 = 33 (p-1) (q-1) = (11 – 1) (3 – 1) = 20 Tiếp theo, chọn e = 3 thoả điều kiện 3 và 20 là cặp số nguyên tố cùng nhau. Với e = 3, ta xác định được d = 7 vì ed = 3*7 = 1 mod 20. Thật ra, có nhiều giá trị d thỏa mãn yêu cầu này, nhưng để cho đơn giản, ta chọn giá trị nhỏ nhất. Khi đó, ta xác định được cặp khóa như sau: Khóa công khai: (N, e) = (33, 3) Khóa bí mật: (N, d) = (33, 7) Giả sử, user B muốn gởi đọan thông tin M = 15 cho user A, dựa trên khóa công khai của A, B thực hiện như sau: C = M e mod N = 15 3 mod 33 = 3375 mod 33 = 9 mod 33. Khi đó, thông tin mật gởi cho A là C = 9. Khi nhận được thông tin này, A giải bằng khóa riêng của mình (d = 7) như sau: M = C d mob N = 9 7 mod 33 = 4.782.969 mod 33 = 15 mod 33. Như vậy, thông tin giải được là M = 15, đúng với thông tin gốc ban đầu. Tóm lại, thuật toán mật RSA được thực hiện gồm 3 quá trình tách rời: tạo khoá, mã hoá và giải được tóm tắt như sau: 1-Tạo khoá: • Chọn p, q (p và q là số nguyên tố, p ≠ q) • Tính N = p.q • Tính φ φφ φ (N) = (p – 1) (q – 1) • Chọn e sao ước số chung lớn nhất của e và φ φφ φ (N) là 1 • Chọn d sao cho e.d mod φ φφ φ (N) = 1 • Cặp khoá RSA được tạo ra là PU = (N, e), PR = (N, d) 2- hoá: • C = M e mod N (M là số nguyên nhỏ hơn N) 3- Giải mã: • M = C d mod N 6 II.2- Cải thiện tốc độ của RSA Trong thực tế, để đạt được độ an tòan cao, cặp khóa phải được chọn trên các số p và q đủ lớn (N nhỏ nhất phải là 1024 bit), do vậy, vấn đề thực thi RSA bao gồm các phép tóan lũy thừa trên các số rất lớn. Vấn đề giảm chi phí tính tóan và tăng tốc độ thực hiện thuật tóan RSA là một trong những vấn đề quan trọng cần phải giải quyết. -Phép lũy thừa trên số lớn: Phép lũy thừa thực chất là phép nhân được thực hiện nhiều lần. Trong thuật toán RSA, các phép lũy thừa bậc cao được rút gọn dựa vào tính chất sau đây của số học modulo: [(a mod n) * (b mod n)] mod n = (a * b) mod n Kết hợp với nguyên tắc của phép lỹ thừa: x y *x y = x 2y và x*x y = x y+1 , ta xây dựng cách tính bằng cách thực hiện các phép lũy thừa liên tục như sau: • Biểu diễn số mũ của lũy thừa dưới dạng số nhị phân • Tách số mũ dạng nhị phân thành nhiều số mũ trung gian bằng cách thêm dần từng bit, bắt đầu từ bit đầu tiên. • Thực hiện phép lũy thừa modulo n ứng với các số mũ trung gian vừa tạo. Ví dụ: cần tính 5 20 mod 35. Nếu thực hiện theo cách thông thường, ta phải thực hiện 19 phép nhân và 1 phép chia lấy dư với kết quả như sau: 5 20 mod 35 = 95.367.431.640.625 mod 35 = 25 Mặc dù biết kết quả chắc chắn là một số nguyên có giá trị từ 0 đến 34, nhưng ta phải tính các giá trị trung gian là các số nguyên lên đến 14 chữ số. Áp dụng cách tính ở trên cho ví dụ này: -Biểu diễn số mũ dưới dạng nhị phân 20 = 10100 -Tách số mũ thành nhiều số mũ trung gian: 1 10 101 1010 10100 (nhị phân) 1 2 5 10 20 (thập phân) -Thực hiện các phép lũy thừa modulo n với các số mũ trung gian vừa tạo 5 1 mod 35 = 5 mod 35 = 5 5 2 mod 35 = (5 1 ) 2 mod 35 = 25 5 5 mod 35 = (5 2 ) 2 * 5 1 mod 35 =25 * 5 mod 35 = 10 5 10 mod 35 = (5 5 ) 2 mod 35 = 10 * 10 mod 35 = 30 5 20 mod 35 = (5 10 ) 2 mod 35 = 30 * 30 mod 35 = 25 -Chọn khóa công khai (e): Với cách tính lũy thừa như trên, ta thấy rằng nếu số mũ sau khi chuyển thành số nhị phân có số bit 1 càng ít thì thao tác thực hiện càng đơn giản. Do đó, để tăng tốc độ hóa, trong thực tế thường chọn e là các giá trị phổ biến như 3, 17 (tức 2 4+1 ) hoặc 65537 (tức 2 16+1 ), dĩ nhiên là với N khác nhau (tạo thành từ các cặp p và q khác nhau). Tuy nhiên, các giá trị này nếu sử dụng không đúng cách sẽ tạo ra các lỗ hổng bảo mật quan trọng của RSA, có thể tấn công dùng định lý số dư Trung hoa (CRT) 1 . 1 Xem thêm về định lý số dư Trung hoa (Chinese Remainder Theorem) 7 -Tăng tốc độ giải mã: Khác với khóa công khai, khóa riêng (d) cần phải là số lớn và có tính ngẫu nhiên cao. Tuy nhiên d càng lớn thì tốc độ giải càng chậm. Có thể áp dụng kết quả của định lý CRT để tăng tốc độ giải như sau: Tính trước các biến trung gian như sau: X p = q * (q -1 mod p) X q = p * (p -1 mod q) Sau đó, khi có C, ta tiếp tục tính V p = C d mod p V q = C d mod q Khi đó, M = (V p X p + V q X q ) mod N là kết quả giải của C Ngoài ra, còn có thể áp dụng định lý Fermat để đơn giản hóa cách tính V p và V q như sau: V p = C d mod p = C d mod (p - 1) mod p V q = C d mod q = C d mod (q - 1) mod q Các giá trị Xp và Xq được tính trước, một lần duy nhất ứng với một giá trị của khóa riêng d. Quá trình giải áp dụng CRT để tăng tốc độ thực thi, thì cũng đồng thời tăng thêm cơ hội tấn công RSA cho hacker. Một số phân tích đã chỉ ra được điểm yếu này của thuật toán. -Tìm số nguyên tố lớn, ngẫu nhiên: việc tìm một số nguyên tố ngẫu nhiên thường được tiến hành theo cách: sinh ra một số ngẫu nhiên, kiểm tra xem số đó có phải nguyên tố không. Nếu là số nguyên tố thì dùng, nếu không phải thì chọn số ngẫu nhiên khác. Do p và q là các số lớn, việc tạo số ngẫu nhiên và kiểm tra nguyên tố đều là những thao tác chiếm nhiều thời gian. Nhiều phương pháp đưa ra nhằm giảm thời gian tìm kiếm này, chủ yếu dựa vào nguyên tắc gần đúng: chọn một số lẻ n, kiểm tra xem n có khả năng là số nguyên tố hay không, nếu chắc chắn không phải thì bỏ n chọn số khác, ngược lại, n có thể là nguyên tố. Lặp lại thao tác này nhiều lần, thì xác suất n là nguyên tố có thể lên đến 100%. Miller-Rabin là một thuật toán như vậy. -Độ an toàn của RSA: Theo lý thuyết, hệ thống RSA có thể bị tấn công bằng những phương thức sau đây: • Brute-force attack: tìm lần lượt khoá riêng PR • Mathematical attack: xác định p và q bằng cách phân tích N thành tích của các thừa số nguyên tố rồi từ đó xác định e và d. • Timing attack: dựa trên thời gian thực thi của thuật toán giải mã. • Chosen ciphertext attack: sử dụng các đọan thông tin mật (ciphertext) đặc biệt để khôi phục thông tin gốc. Tuy nhiên trong thực tế, nguy cơ tấn công các hệ thống mật RSA là rất thấp, do RSA là một thuật toán linh động, kích thước khối dữ liệu gốc và chiều dài khoá dễ dàng được thay đổi không ảnh hưởng đến thuật toán mã. III- THUẬT TOÁN TRAO ĐỔI KHÓA DIFFIE-HELLMAN III.1- Thủ tục trao đổi khóa dùng Diffie-Hellman 8 Diffie-Hellman là một thuật toán dùng để trao đổi khóa (key exchange) chứ không dùng để mật hóa (che giấu) dữ liệu. Tuy nhiên, Deffie-Hellman lại có ích trong giai đọan trao đổi khóa bí mật của các thuật toán mật đối xứng. Như đã trình bày ở phần mật đối xứng, một trong những vấn đề quan trọng liên quan trực tiếp đến tính an toàn của các thuật toán mật đối xứng là vấn đề thống nhất khoá bí mật giữa các thực thể thông tin. Thuật toán trao đổi khoá Diffie-Hellman dựa trên phép logarit rời rạc (discrete log). Cho trước một số g và x = g k , để tìm k, ta đơn giản thực hiện phép logarit: k = log g (x). Tuy nhiên, nếu cho trước g, p và (g k mod p), thì quá trình xác định k được thực hiện theo cách khác với cách ở trên và được gọi là logarit rời rạc. Việc tính logarit rời rạc nói chung rất phức tạp, gần như không thực hiện với chi phí thời gian chấp nhận được. Thuật tóan Diffie-Hellman khá đơn giản như sau: -Gọi p là một số nguyên tố và g là một số nguyên thoả điều kiện với mọi x ∈ {1, 2, …, p - 1}, ta luôn tìm được số n sao cho x = g n mod p. Như vậy, tập các nguyên từ 0 đến p – 1 tạo thành một nhóm cyclic với phần tử sinh g. -Giá trị p và g được phổ biến công khai giữa các thực thể trao đổi khoá. -User A tạo ra một số bí mật X a < p, tính giá trị Y a = (g Xa mod p) và gởi cho B. -User B cũng tạo ra một số bí mật X b < p, tính giá trị Y b = (g b mod p) và gởi lại cho A. -User B xác định giá trị K B = (Y a ) Xb mod p = (g Xa mod p) Xb = (g XaXb mod p). -User A xác định giá trị K A = (Y b ) Xa mod p = (g Xb mod p) Xa = (g XaXb mod p). -Do K A = K B , ta nói hai bên A và B đã trao đổi thành công khóa K. -Giả sử trong quá trình trao đổi các giá trị (g Xa mod p) và (g Xb mod p), một người thứ 3 nào nó bắt được thông tin này thì cũng không xác định được Xa và Xb vì độ phức tạp của phép tóan logarit rời rạc là rất cao. Ví dụ: Cho p = 353 và g = 3. Có thể kiểm chứng được rằng với một số nguyên n bất kỳ sao cho 0 < n < 353, ta luôn xác định được một số nguyên i thoả 3 i = n. Giả sử, user A chọn giá trị bí mật X a = 97 và user B chọn giá trị bí mật X b = 233. User A tính được Y a = (3 97 mod 353) = 40 và gởi cho B. User B tính được Y b = (3 233 mod 353) = 248 và gởi cho A. User A tính được khoá bí mật K = (Y b ) Xa mod 353 = 248 97 mod 353 = 160 User B tính được khoá bí mật K = (Y a ) Xb mod 353 = 40 97 mod 353 = 160 Chọn số bí mật X a < p Tính Y a = (g Xa mod p) và gởi cho B Tính K = (Y b ) Xa mod p Chọn số bí mật X b < p Tính Y b = (g Xb mod p) và gởi cho A Tính K = (Y a ) Xb mod p User A User B Hình 3.2: Thuật toán trao đổi khoá Diffie-Hellman 9 III.2- Độ an toàn của thuật toán trao đổi khoá Diffie-Hellman Tính an toàn của Diffie-Hellman dựa trên độ phức tạp của phép toán logarit rời rạc. Nói chung, việc xác định các giá trị X a , X b từ các giá trị p, g, Y a và Y b là không thể thực hiện được trên các số nguyên đủ lớn. Tuy nhiên, thuật toán này không ngăn chặn được các tấn công theo phương thức xen giữa Man-In-The-Middle (MITM) như sau: • Để thực hiện tấn công MITM trên kết nối giữa user A và user B, user C cũng chọn cho mình hai số nguyên X C1 và X C2 thoả điều kiện X C1 < p và X C2 < p, sau đó cũng tính hai giá trị tương ứng Y C1 = (g Xc1 mod p) và Y C2 = (g Xc2 mod p). • Khi user A gởi Y a cho user B, user C sẽ chặn lấy thông tin này, đồng thời mạo danh A để gởi cho B giá trị Y C1 . User B xác định khoá K 1 dựa trên Y C1 , và gởi lại cho A giá trị Y b . User C lại chặn lấy giá trị này và mạo danh B để gởi cho A giá trị Y C2 . • User A xác định khoá K 2 dựa trên Y C2 . Bắt đầu từ đây, các thông tin trao đổi giữa A và B đều được C chặn bắt và thay đổi bằng cách sử dụng cặp khoá K 1 và K 2 . Thuật toán Diffie-Hellman không giải quyết được vấn đề này do không có cơ chế xác thực giữa các thực thể trao đổi khoá. Điểm yếu này được khắc phục bằng cách sử dụng kết hợp với các thuật toán xác thực đầu cuối. . 1 CHƯƠNG 3 MẬT MÃ BẤT ĐỐI XỨNG I-TỔNG QUAN I.1- Mật mã bất đối xứng Mật mã bất đối xứng (asymmetric cryptography) còn có tên gọi khác là mật mã khóa công khai (public. được Y a = (3 97 mod 35 3) = 40 và gởi cho B. User B tính được Y b = (3 233 mod 35 3) = 248 và gởi cho A. User A tính được khoá bí mật K = (Y b ) Xa mod 35 3 = 248 97 mod 35 3 = 160 User. mod 35 = 5 mod 35 = 5 5 2 mod 35 = (5 1 ) 2 mod 35 = 25 5 5 mod 35 = (5 2 ) 2 * 5 1 mod 35 =25 * 5 mod 35 = 10 5 10 mod 35 = (5 5 ) 2 mod 35 = 10 * 10 mod 35 = 30 5 20 mod 35 =

Ngày đăng: 01/04/2014, 15:20

Tài liệu cùng người dùng

Tài liệu liên quan