chương 1 Trong chương này, luận văn đã tìm hiểu, phân tích các cơ sở toán học của xác thực điện tử. Luận văn đã trình bày một số vấn đề về số nguyên tố, các khái niệm số học modulo, các phương pháp kiểm tra số nguyên tố, khái niệm hàm một chiều, phép chứng minh không tiết lộ tri thức. 13 CHƯƠNG 2: CƠ SỞ MẬT MÃ CỦA XÁC THỰC ĐIỆN TỬ Hệ mã hóa khóa công khai ngày càng được ứng dụng rộng rãi, đặc biệt trong lĩnh vực xác thực điện tử. Trong các hệ mã hóa khóa công khai, nổi tiếng và phổ biến nhất đó là hệ mật RSA.
Kể từ khi ra đời đến nay, RSA luôn được tin tưởng và sử dụng trong các hệ thống đòi hỏi độ bảo mật cao. Để đáp ứng được yêu cầu của thực tế, chống lại nhiều phương pháp tấn công, hệ mật RSA được nhiều nhà khoa học nghiên cứu, cải tiến và đề xuất các biến thể mới. Trong thực tế, hệ mã hóa khóa công khai, tiêu biểu là hệ mật RSA được ứng nhiều trong lĩnh vực xác thực điện tử bằng chữ ký số. Còn mã hóa dữ liệu thường sử dụng các hệ mã hóa khóa đối xứng để cải thiện tốc độ.
Một trong những hệ mã hóa khóa đối xứng được sử dụng rộng rãi hiện nay là hệ mật AES (Advanced Encryption Standard). Nội dung chương này, tác giả sẽ phân tích, trình bày các cơ sở mật mã của xác thực điện tử; phân tích hệ mật RSA và một số biến thể mới của RSA, đồng thời tác giả cũng sẽ phân tích cấu trúc và hoạt động của hệ mật AES; phân tích các hàm băm mật mã được sử dụng trong xác thực điện tử. Hệ mã hóa khóa công khai Một hệ mật mà khóa giải mã khác khóa mã hóa với khóa mã hóa được công khai được gọi là mật mã khóa công khai. Mỗi khóa K là cặp (K e,Kd) trong đó khóa mã hóa là Ke được gọi là khóa công khai (có giá trị mà ai cũng biết), khóa giải mã K d được gọi là khóa riêng hay khóa bí mật và đảm bảo rằng khó tính được Kd từ Ke.
Hệ mật khóa công khai gồm 5 thành phần: - Bản rõ: là thông điệp có thể đọc, là đầu vào của giải thuật. - Khóa công khai và khóa bí mật: một cặp khóa được chọn sao cho một khóa dùng để mã hóa và một khóa dùng để giải mật. - Bản mật: thông điệp ở đầu ra ở dạng không đọc được, phụ thuộc vào bản rõ và khóa. Với cùng một thông điệp, nếu sử dụng 2 khóa khác nhau sẽ sinh ra 2 bản mã khác nhau.
- Giải thuật giải mã. Các bước thực hiện: - Người nhận B tạo một cặp khóa để mã hóa và giải mã là Ke và Kd. Lựa chọn một khóa làm khóa công khai (Ke) và một khóa làm khóa bí mật (Kd). - B gửi khóa công khai Ke cho A.
Khóa này được công khai và ai cũng có thể biết. - A dùng Ke để mã hóa thông điệp và gửi thông điệp đã mã hóa cho B. - B dùng Kd để giải mã thông điệp đã nhận được từ A. Sơ đồ hệ mã hóa khóa công khai 2.
Hệ mật RSA 2. Giới thiệu hệ mật RSA Hệ mật được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT). Tên của hệ mật lấy từ 3 chữ cái đầu của tên 3 tác giả. Hệ mật RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân).
Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.
Độ an toàn của RSA dựa trên độ khó của bài toán phân tích ra thừa số nguyên tố của các số nguyên lớn: "Cho một số nguyên n N, tìm các số nguyên tố Pi, i = 1, 2, .<Pr thỏa mãn n = Pi e , trong đó ei 1". i i 1 Sinh khóa: Giả sử A và B cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ như Internet). Với thuật toán RSA, mỗi người sẽ tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau: - Chọn 2 số nguyên tố lớn p và q với p q. - Tính: n = p*q - Tính: giá trị hàm số Ơle ∅(n) = (p - 1)*(q - 1).
15 - Chọn một số tự nhiên e sao cho 1 < e < ∅(n) và là số nguyên tố cùng nhau với ∅(n). - Tính: d sao cho de 1 mod ∅(n). Thành phần công khai (n,e) Thành phần bí mật (p, q, d) Mã hóa: Giả sử A muốn gửi một thông điệp M cho B; B là người nhận và phải giải mã. Người A sẽ làm theo các bước sau: - Xác thực khóa công khai (n,e) của B.
- Biểu diễn thông điệp dưới dạng một số nguyên nằm trong đoạn [0, n-1] - Tính c = m e mod n - Gửi bản mã hóa c đến B. Giải mã: Khi B nhận được c từ A. B làm các thao tác sau để thu được bản rõ: - Tính giá trị m = cd mod n - Biến đổi giá trị số m thành thông điệp m (Phương pháp biến đổi đã được A và B thỏa thuận từ trước). Ta tính được d = e-1 mod (n) = 173-1 mod 34560 = 2597.
Khóa công khai: (173, 34933) Khóa bí mật: (2597, 34933). - Giả sử bản rõ M = 68 ta tính được: C = Me mod n = 68173 mod 34933 = 267 - Giải mã: M = Cd mod n = 2672597 mod 34933 = 68. Độ an toàn của hệ mật RSA RSA là một trong những hệ mật được sử dụng rộng rãi nhất hiện nay; Nó được triển khai và ứng dụng trong nhiều hệ thống thông tin đòi hỏi có độ bảo mật cao như những hệ thống thông tin thương mại hay các hệ thống thông tin sử dụng trong lĩnh vực hành chính. 16 Sự an toàn của hệ mật RSA hay chính là sự an toàn của thành phần khóa bí mật (private key) phụ thuộc vào tính khó của việc phân tích thừa số nguyên tố của các số lớn.
Như đã biết Z = (n, e) là thành phần công khai. Nếu biết phân tích thừa số nguyên tố của n là n = p*q thì sẽ tính được (n) (p 1)(q 1) do đó tính được d e1 (mod (n)). Tuy nhiên nếu không biết trước p, q thì không có một thuật toán hiệu quả nào để phân tích thừa số nguyên tố đối với n, tức là tìm được p, q khi n lớn. Nghĩa là không thể tìm được (n) và do đó không tính được d.
Từ khi ra đời đến nay, RSA đã được phân tích và tìm cách tấn công bằng nhiều phương pháp khác nhau. Các phương pháp này chủ yếu tập trung vào các kẽ hở của RSA, có nhiều phương pháp tấn công, có thể kể đến là: tấn công cơ bản, tấn công số mũ công khai nhỏ, tấn công số mũ bí mật nhỏ, tấn công cài đặt. Một số phương pháp RSA cải tiến 2. RSA với số mũ giải mã lớn[15] Như chúng ta đã biết, hệ mật RSA với số mũ giải mã nhỏ là một kẽ hở dễ dàng bị tấn công theo phương pháp của Wiener.
Vì vậy, để đảm bảo an toàn cho hệ mật RSA, các tác giả Hernández Encinas, Munoz Masqué và Queiruga Dios đã đề xuất phương pháp sinh khóa giải mã d lớn có kích thước gần bằng modunlus n cho giải thuật RSA. Chọn số mũ mã hóa là số nguyên dương e > 2. Tạo ngẫu nhiên một số nguyên tố lớn p sao cho rp(rp - 1) Ze* với rp = p (mod e). Tính một số nguyên tố lớn q = rp(rp - 1)-1(mod e) + ke, với k là một số thuộc N.
Sử dụng giải thuật Ơclid mở rộng tính giá trị d, 1< d < ∅(n), sao cho e. Với giải thuật trên, ta có thể tạo ra một khóa giải mã d lớn gần bằng giá trị n trong khi đó khóa mã hóa e lại rất nhỏ nhằm cải thiện tốc độ mã hóa. Đồng thời với giá trị d lớn, ta có thể loại bỏ các phương pháp tấn công dựa vào số mũ giải mã. Ví dụ: - Chọn e = 7 - Chọn p = 17 → rp = p mod e = 17 mod 7 = 3.
rp(rp - 1) = 6 Z7* - Tính q = r(r-1)-1 mod e + ke 17 q = 3.18 = 288 - Tính d: d = e-1 mod ∅(n) = 7-1 mod 288 = 247 hoặc d = (1 + (7 - 1)288)/7 = 247 - Mã hóa: M = 20 C = 207 mod 323 = 96 - Giải mã M = 96247 mod 323 = 20 2. HE-RSA[16] Giải thuật HE-RSA được Faraz Fatemi Moghaddam, Mean T. Alrashdan và Omidrza Karimi công bố tháng 9 năm 2013. Đây là một biến thể của RSA được phát triển dựa trên hệ mật RSA chuẩn, biến thể RSA-Small và biến thể Efficient - RSA.
Biến thể này được các tác giả đề nghị sử dụng để bảo mật cho công nghệ điện toán đám mây. Nó có thể chống lại các cuộc tấn công thời gian, tấn công về toán học cũng như các tấn công cơ bản. Giải thuật: Sinh khóa: 1. Chọn ngẫu nhiên hai số nguyên tố lớn p và q.(qh - qh-1) Trong đó h là một số nguyên thỏa mã h Zn* 4.
Chọn ngẫu nhiên một số nguyên: r thỏa mãn 1 < r < n và gcd(r, ∅(n)) = 1 và gcd(r, ) =1. Tính giá trị e thỏa mãn r. Tính giá trị d thỏa mãn d. Khóa công khai: (e,n) 8.
A cần gửi cho B một thông điệp m. B gửi cho A khóa công khai của mình. A thực hiện mã hóa m theo biểu thức sau: c = me mod n Giải mã: 1. B nhận được c từ A sẽ thực hiện giải mã để nhận được thông điệp gốc như sau: m = cd mod n Ví dụ: - Chọn p = 13, q = 7 → n = p.