Tài liệu Kỹ thuật lập trình - Chương 8: Mật mã khóa công khai
Số trang: 14
Loại file: doc
Dung lượng: 428.50 KB
Lượt xem: 18
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chương 8: Mật mã khóa công khai, người học sẽ tìm hiểu tổng quan về mật mã công khai, hệ mật RSA, hệ mật Elgama, hệ mật Rabin, hệ mật Merkle-hellman, hệ mật McEliece, hệ mật bất đối xứng trên cơ sỡ đường cong Elliptic.
Nội dung trích xuất từ tài liệu:
Tài liệu Kỹ thuật lập trình - Chương 8: Mật mã khóa công khai Chương 8 MẬT MÃ KHÓA CÔNG KHAI 8.1 Tổng quan về mật mã công khai Trong chương trước chúng ta đã tìm hiểu về mật mã đối xứng. Chúng ta rõ rằng cácbên tham gia cần có một khóa mật để mã hóa và giải mã. Điều này đồng nghĩa với việctrao đổi khóa mật qua kênh. Việc giữ bí mật khóa mật đồng nghĩa với việc giữ mậtthông tin. Nên việc trao đổi khóa chỉ diễn ra trên kênh mật thì mới đ ảm bảo đ ược, th ếnhưng việc trao đổi này cung không phải dễ để đảm bảo độ an toàn cao. Từ đây hìnhthành nên ý tưởng của mật mã công khai. Tức là không cần phải trao đổi khóa mật quakênh nữa. Ý tưởng của hệ mật công khai được Diffie và Hellman đưa ra năm 1976. Còn việcthự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ôngbố, độ 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ánphâ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ậtElGamal, hay dựa trên đường cong Elliptíc. Chúng ta đi tìm hiểu cụ thể các hệ mật nàytrong các phần sau. Nhưng trước tiên chúng ta đi tìm hiểu sơ đồ và nguyên tắc mã vàgiải mã của hệ mật công khai. Sơ đồ của hệ mã công khai được cho ở hình 8.1. Hình 8.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óanà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óamậ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ụckhô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à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ó đ ượcgiải mã bằng khóa mật. 8.2 Hệ mật RSA Lịch sử hình thành Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vàonăm 1977 tại Học viện Công nghệ Massachusetts (MIT). Tên của thuật toán lấy từ 3chữ cái đầu của tên 3 tác giả. Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ kýđiện tử đồng thời với việc mã hóa. Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vựcmật mã học trong việc sử dụng khóa công cộng. RSA đang được sử dụng phổ biếntrong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủlớn. Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Sốđăng ký 4,405,829). Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000. Tuynhiên, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên s ự bảo h ộ h ầunhư không có giá trị bên ngoài Hoa Kỳ. Ngoài ra, nếu như công trình của Clifford Cocksđã được công bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký. Thuật toán dựa trên độ khó của bài toán phân tích một số thành nhân tử. Quá trình tạo khóa cho hệ mật RSA. Giả sử Alice và Bob 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, Alice đầu tiên cần tạo ra cho mình cặp khóagồm khóa công khai và khóa bí mật theo 6 bước sau: 1. Chọn 2 số nguyên tố lớn khác nhau p, q thỏa mãn điều kiện p ≈ q 2. Tính tích của nó n = p ⋅ q . 3. Tính giá trị hàm Phi Euler của n: ϕ( n ) = ( p − 1)( q − 1) . 4. Chọn số nguyên d, sao cho d < ϕ( n ) và gcd(d, ϕ (n) )=1. 5. Tính giá trị e thỏa mãn điều kiện: e ⋅ d = 1mod( ϕ( n ) ) . 6. Khóa công khai bao gồm: n và e. Khóa mật:d còn p,q và ϕ (n) thường là xóa saukhi tính toán khóa. Quá trình mã hóa: Giả sử Bob muốn gửi đoạn thông tin m Cuối cùng Bob gửi c cho Alice. Quá trình giải mã: Alice nhận c từ Bob và khóa bí mật d. Alice có thể tìm được m từ c theo công thứcsau: m = c d (mod n) Quá trình giải mã hoạt động vì ta có c d ≡ (m e ) d ≡ med (mod n) Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), theo Định lý Fermat nhỏ nên: med ≡ m(mod p ) med ≡ m(mod q ) Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý phần dư trung hoa, chúng tacó: med ≡ m(mod pq ) Hay c d ≡ m(mod n) Ví dụ: p = 70793 q = 707933 n = p ⋅ q = 50116700869 ϕ( n ) = ( p − 1)( q − 1) = 50115922144 d = 30483041 e = 5851898625 m c = me (mod n) m = c d (mod n) 30483041 7523619714 30483041 7523619714 38101458113 7523619714 3487987 ...
Nội dung trích xuất từ tài liệu:
Tài liệu Kỹ thuật lập trình - Chương 8: Mật mã khóa công khai Chương 8 MẬT MÃ KHÓA CÔNG KHAI 8.1 Tổng quan về mật mã công khai Trong chương trước chúng ta đã tìm hiểu về mật mã đối xứng. Chúng ta rõ rằng cácbên tham gia cần có một khóa mật để mã hóa và giải mã. Điều này đồng nghĩa với việctrao đổi khóa mật qua kênh. Việc giữ bí mật khóa mật đồng nghĩa với việc giữ mậtthông tin. Nên việc trao đổi khóa chỉ diễn ra trên kênh mật thì mới đ ảm bảo đ ược, th ếnhưng việc trao đổi này cung không phải dễ để đảm bảo độ an toàn cao. Từ đây hìnhthành nên ý tưởng của mật mã công khai. Tức là không cần phải trao đổi khóa mật quakênh nữa. Ý tưởng của hệ mật công khai được Diffie và Hellman đưa ra năm 1976. Còn việcthự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ôngbố, độ 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ánphâ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ậtElGamal, hay dựa trên đường cong Elliptíc. Chúng ta đi tìm hiểu cụ thể các hệ mật nàytrong các phần sau. Nhưng trước tiên chúng ta đi tìm hiểu sơ đồ và nguyên tắc mã vàgiải mã của hệ mật công khai. Sơ đồ của hệ mã công khai được cho ở hình 8.1. Hình 8.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óanà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óamậ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ụckhô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à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ó đ ượcgiải mã bằng khóa mật. 8.2 Hệ mật RSA Lịch sử hình thành Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vàonăm 1977 tại Học viện Công nghệ Massachusetts (MIT). Tên của thuật toán lấy từ 3chữ cái đầu của tên 3 tác giả. Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ kýđiện tử đồng thời với việc mã hóa. Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vựcmật mã học trong việc sử dụng khóa công cộng. RSA đang được sử dụng phổ biếntrong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủlớn. Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Sốđăng ký 4,405,829). Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000. Tuynhiên, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên s ự bảo h ộ h ầunhư không có giá trị bên ngoài Hoa Kỳ. Ngoài ra, nếu như công trình của Clifford Cocksđã được công bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký. Thuật toán dựa trên độ khó của bài toán phân tích một số thành nhân tử. Quá trình tạo khóa cho hệ mật RSA. Giả sử Alice và Bob 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, Alice đầu tiên cần tạo ra cho mình cặp khóagồm khóa công khai và khóa bí mật theo 6 bước sau: 1. Chọn 2 số nguyên tố lớn khác nhau p, q thỏa mãn điều kiện p ≈ q 2. Tính tích của nó n = p ⋅ q . 3. Tính giá trị hàm Phi Euler của n: ϕ( n ) = ( p − 1)( q − 1) . 4. Chọn số nguyên d, sao cho d < ϕ( n ) và gcd(d, ϕ (n) )=1. 5. Tính giá trị e thỏa mãn điều kiện: e ⋅ d = 1mod( ϕ( n ) ) . 6. Khóa công khai bao gồm: n và e. Khóa mật:d còn p,q và ϕ (n) thường là xóa saukhi tính toán khóa. Quá trình mã hóa: Giả sử Bob muốn gửi đoạn thông tin m Cuối cùng Bob gửi c cho Alice. Quá trình giải mã: Alice nhận c từ Bob và khóa bí mật d. Alice có thể tìm được m từ c theo công thứcsau: m = c d (mod n) Quá trình giải mã hoạt động vì ta có c d ≡ (m e ) d ≡ med (mod n) Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), theo Định lý Fermat nhỏ nên: med ≡ m(mod p ) med ≡ m(mod q ) Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý phần dư trung hoa, chúng tacó: med ≡ m(mod pq ) Hay c d ≡ m(mod n) Ví dụ: p = 70793 q = 707933 n = p ⋅ q = 50116700869 ϕ( n ) = ( p − 1)( q − 1) = 50115922144 d = 30483041 e = 5851898625 m c = me (mod n) m = c d (mod n) 30483041 7523619714 30483041 7523619714 38101458113 7523619714 3487987 ...
Tìm kiếm theo từ khóa liên quan:
Mật mã khóa công khai Hệ mật RSA Hệ mật Elgama Hệ mật Rabin Hệ mật Merkle-hellman Hệ mật McElieceGợi ý tài liệu liên quan:
-
Giáo trình An toàn bảo mật dữ liệu: Phần 2 - NXB Đại học Thái Nguyên
106 trang 153 0 0 -
Tiểu luận: Nghiên cứu, xây dựng hạ tầng khóa công khai PKI dựa trên Openca
39 trang 44 0 0 -
Tóm tắt luận án Tiến sĩ: Nghiên cứu, phát triển các lược đồ chữ ký sô tập thể
24 trang 43 0 0 -
An toàn và bảo mật dữ liệu: Phần 2
106 trang 40 0 0 -
An toàn và bảo mật dữ liệu: Phần 1
131 trang 39 1 0 -
Giáo trình Bảo mật dữ liệu: Phần 2
106 trang 30 0 0 -
Giáo trình An toàn bảo mật dữ liệu: Phần 2
106 trang 27 0 0 -
Phát triển thuật toán mật mã khóa công khai dựa trên bài toán logarit rời rạc
7 trang 26 0 0 -
Bài giảng Lý thuyết mật mã: Chương 5 - PGS.TS Đỗ Trọng Tuấn
42 trang 26 0 0 -
Bài giảng Lý thuyết mật mã: Chương 3 - PGS.TS Đỗ Trọng Tuấn
46 trang 24 0 0