Trong nửa đầu thế kỷ 20, một số thiết bị cơ khí đã được phát minh để thực hiện mật mã hóa, bao gồm rotormachines nổi tiếng nhất là máy Enigma được người Đức sử dụng trong thứ hai.Mật mã
Trang 1MỤC LỤC
Danh mục hình vẽ 5
Danh mục những từ viết tắt 6
LỜI NÓI ĐẦU 7
CHƯƠNG 1 TỔNG QUAN VỀ MÃ HÓA 8
1.1 Khái niệm về mã hóa thông tin 8
1.2 Sơ lược lịch sử của mã hóa thông tin 8
1.3 Hệ thống mã hóa 9
1.4 Phân loại các thuật toán mã hóa 11
1.4.1 Mã hóa cổ điển 11
1.4.2 Mã hóa đối xứng 12
1.4.3 Mã hóa bất đối xứng 15
1.4.4 Hàm băm – Hashing 16
1.5.Ứng dụng mã hóa 18
1.5.1 Giao thức SSL 18
1.5.2 Chữ ký số 21
1.5.3 Công cụ mã hóa PGP 23
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 29
2.1 Hệ mã RSA 29
2.1.1 Giới thiệu 29
2.1.2 Quá trình tạo khóa cho hệ mật RSA 29
2.1.3 Quá trình mã hóa 31
2.1.4 Quá trình giải mã 32
2.1.5 Một số chú ý quan trọng về RSA 33
2.2 Hệ mã AES 34
2.2.1 Giới thiệu 34
2.2.2 Một số khái niệm và định nghĩa 35
2.2.3 Cơ sở toán học của hệ mã 38
2.2.4 Thuật toán mã hóa 38
Trang 22.2.5 Thuật toán giải mã 43
2.2.6 An toàn của thuật toán 45
2.3 Tìm hiểu về mã nguồn mở GnuPG 47
2.3.1 Giới thiệu 47
2.3.2 Cài đặt 47
2.3.3 Khoá công khai và khoá riêng tư 48
2.3.4 Tạo cặp khóa 48
2.3.5 Xuất, nhập và trao đổi khóa 49
2.3.6 Mã hoá và giải mã tài liệu 51
2.3.7 Tạo và xác minh chữ ký 52
2.3.8 Quản lý khóa 53
CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH 60
3.1 Mô tả chương trình sẽ xây dựng 60
3.2 Kết quả đạt được 61
3.3 Kết luận và kiến nghị 64
KẾT LUẬN 66
Danh mục tài liệu tham khảo 67
Danh mục hình vẽ Hình 1 1 Hệ thống mã hóa 10
Trang 3Hình 1 2 Bảng thay thế ký tự 11
Hình 1 3 Mô hình mã hóa sử dụng khóa đối xứng 13
Hình 1 4 Một số thuật toán mã hóa đối xứng 14
Hình 1 5 Sơ đồ mã hóa công khai 16
Hình 1 6 Lược đồ ký và kiểm tra chữ ký số 23
Hình 2 1 Mô tả thuật toán 30
Hình 2 2 Sơ đồ thuật toán mã hóa và giải mã 39
Hình 2 3 Bảng thế S-box 40
Hình 2 4 Hàm ShiftRows 40
Hình 2 5 Hàm MixColumns 41
Hình 2 6 Hàm AddRoundKey 42
Hình 2 7 Hàm InvShiftRows 44
Hình 3 1 Mã hóa dữ liệu 60
Hình 3 2 Giải mã dữ liệu 61
Hình 3 3 Giao diện chính 62
Hình 3 4 Giao diện mã hóa 62
Hình 3 5 Giao diện giải mã 63
Hình 3 6 Giao diện sinh khóa 63
Hình 3 7 Giao diện thêm một khóa công khai mới 64
Hình 3 8 Giao diện mã hóa nội dung văn bản 64
Danh mục những từ viết tắt
Trang 402 USB Universal Serial Bus
LỜI NÓI ĐẦU
Ngày nay với sự phát triển mạnh mẽ của công nghệ thông tin, gần như cácthông tin quan trọng của các cá nhân, doanh nghiệp hay chính phủ được lưu trữtrên máy tính Trong khi đó các nguy cơ về an ninh mạng và bảo mật an toànthông tin đang ở mức báo động khi tình trạng bị hacker, virus, malware tấn cônghoặc từ những tổ chức khác như chương trình giám sát truyền thông của cơ quan
An ninh Quốc gia Mỹ - National Security Agency mà Edward Snowden đã tiết
lộ khiến cho thông tin bị đánh cắp, bị theo dõi, mất quyền điều hành, lây truyềnvirus sang máy tính khác, dữ liệu bị xóa… liên tục gia tăng không ngừng, gây rahậu quả và thiệt hại vô cùng lớn Số vụ tấn công, xâm nhập hệ thống thông tinđang gia tăng ở mức báo động về số lượng, đa dạng về hình thức, tinh vi vềcông nghệ trở thành mối đe dọa đối với an ninh thông tin đòi hỏi những nỗ lực
Trang 5phòng chống mạnh mẽ hơn nữa cho hoạt động thông tin trên toàn An ninhmạng tại Việt Nam hiện đang trở thành đề tài nóng sau hàng loạt các cuộc tấncông rầm rộ vào các website tại Việt Nam kể từ cuối tháng 8 đến tháng 10 vừaqua Cho nên mỗi cá nhân, doanh nghiệp,… ngoài việc tuân theo các chính sáchbảo mật, dịch vụ về an toàn thông tin từ các tổ chức hay cá nhân nào đó thì cũngnên tự bảo vệ thông tin của mình Đó là lí do mà em đã chọn và nghiên cứu đềtài “Nghiên cứu xây dựng hệ thống bảo mật nội dung số” Đồ án tập trung tìmhiểu về mã hóa thông tin dựa trên mã nguồn mở Được sự hướng dẫn nhiệt tìnhcủa thầy giáo, em đã hoàn thành đề tài đồ án tốt nghiệp.
Do lượng tài liệu chủ yếu bằng tiếng anh và kiến thức còn hạn chế nênkhông tránh khỏi những sai sót, rất mong nhận được sự đóng góp của thầy cô vàcác bạn
CHƯƠNG 1 TỔNG QUAN VỀ MÃ HÓA 1.1 Khái niệm về mã hóa thông tin
Thuật ngữ Cryptography đề cập tới ngành khoa học nghiên cứu về mã hóa
và giải mã thông tin Cụ thể hơn là nghiên cứu các cách thức chuyển đổi thôngtin từ dạng bản rõ sang dạng mờ và ngược lại Đây là một phương pháp hỗ trợrất tốt trong việc chống lại những truy cập bất hợp pháp tới dữ liệu được truyền
đi trên mạng, áp dụng mã hóa sẽ khiến cho nội dung thông tin được truyền đidưới dạng mờ và không thể đọc được đối với bất kỳ ai cố tình muốn lấy thôngtin đó
Như chúng ta đã biết, Internet hình thành và phát triển từ yêu cầu của chínhphủ Mỹ nhằm phục vụ cho mục đích quân sự Khi chúng ta tham gia trao đổithông tin, thì Internet là môi trường không an toàn, đầy rủi ro và nguy hiểm,không có gì đảm bảo rằng thông tin mà chúng ta truyền đi không bị đọc trộmtrên đường truyền Do đó, mã hóa được áp dụng như một biện pháp nhằm giúpchúng ta tự bảo vệ chính mình cũng như những thông tin mà chúng ta gửi đi
Trang 6Bên cạnh đó, mã hóa còn có những ứng dụng khác như là bảo đảm tính toàn vẹncủa dữ liệu.
1.2 Sơ lược lịch sử của mã hóa thông tin
Mật mã có lịch sử lâu dài và đầy màu sắc Nói chung, những dạng sớm nhấtcủa cách viết bí mật (ngày nay gọi chung là mật mã cổ điển) chỉ cần có bút vàgiấy Hai phạm trù chính của mật mã cổ điển là mật mã hoán vị, trong đó người
ta sắp xếp lại trật tự các chữ cái của thông điệp, và mật mã thay thế, trong đóngười ta thay thế có hệ thống các chữ cái hay các nhóm chữ cái bằng các chữ cáihay các nhóm chữ cái khác Văn bản được mật mã hóa bằng mật mã cổ điển có
xu hướng lộ ra các thông tin thống kê nhất định về văn bản thường Bằng cách
sử dụng các thông tin này, mật mã cổ điển rất dễ bị dò ra (ví dụ bằng phân tíchtần suất) Mật mã cổ điển vẫn còn được phổ biến tới ngày nay, chủ yếu thôngqua việc giải các ô đố chữ
Các thiết bị và các kỹ thuật khác nhau đã được sử dụng để mật mã hóa Mộttrong những thiết bị sớm nhất có lẽ là gậy mật mã Trong nửa đầu thế kỷ 20, một
số thiết bị cơ khí đã được phát minh để thực hiện mật mã hóa, bao gồm rotormachines nổi tiếng nhất là máy Enigma được người Đức sử dụng trong thứ hai.Mật mã thực hiện bằng các máy móc này đã tăng độ phức tạp lên đáng kể đốivới công việc phân tích mã
Với sự ra đời của máy tính kỹ thuật số và điện tử học thì các mật mã cực kỳphức tạp đã có thể được thực hiện Đặc trưng của mật mã máy tính là chúngthực hiện trên các chuỗi nhị phân, không giống như trong các mô hình mật mãhóa cổ điển và cơ học (chỉ sử dụng bảng chữ cái với khoảng 26 ký tự-phụ thuộcvào từng ngôn ngữ) Mật mã máy tính cũng có khả năng chịu đựng việc phântích mật mã tốt hơn; rất ít các mật mã như thế dễ bị tổn thương chỉ bởi kiểu tấncông biết bản mã
Các nghiên cứu rộng rãi có tính học thuật về mật mã hóa hiện đại là tươngđối gần đây nó chỉ được bắt đầu trong cộng đồng mở kể từ những năm thập niên
1970 với các chi tiết kỹ thuật của DES (viết tắt trong tiếng Anh của Data
Trang 7Encryption Standard tức Tiêu chuẩn Mật mã hóa Dữ liệu) và sự phát minh
ra RSA Kể từ đó, mật mã hóa đã trở thành công cụ được sử dụng rộng rãi trongliên lạc và bảo mật máy tính
Cũng giống như các bài học thu được từ trong lịch sử của nó, các nhà mật
mã hóa cũng rất thận trọng khi nhắc đến tương lai Định luật Moore thôngthường được nhắc đến khi nói về độ lớn khóa, và các hiệu ứng tiềm năngcủa máy tính lượng tử
- Tập đích C là tập hữu hạn tất cả các mẫu tin có sau khi mã hóa
- Tập khóa K là tập hữu hạn các khóa có thể được sử dụng
- E và D lần lượt là tập luật mã hóa và giải mã Với mỗi khóa k thuộc K,tồn tại luật mã hóa ek thuộc E và luật giải mã dk thuộc D tương ứng
Luật mã hóa ek : P → C và luật giải mã dk : C → P là hai ánh xạ thỏa mãn
dk(ek(x)) = x, trong đó mọi x đều thuộc P
Hình 1 1 Hệ thống mã hóaBên cạnh việc làm thế nào để che dấu nội dung thì mã hóa cần phải đảm bảođược các yếu tố sau:
Trang 8 Tính bí mật (Confidentiality): Đảm bảo dữ liệu được truyền đi một cách
an toàn và không bị lộ thông tin nếu như có ai đó cố tình muốn có đượcnội dung của dữ liệu gốc ban đầu Và chỉ những người được phép mới cókhả năng đọc được nội dung của dữ liệu ban đầu
được chắc chắn rằng dữ liệu mà họ nhận là dữ liệu gốc ban đầu Kẻ giảmạo không thể có khả năng để giả dạng một người khác hay nói cáchkhác không thể mạo danh để gửi dữ liệu Người nhận có khả năng kiểmtra nguồn gốc của thông tin mà họ nhận được
dữ liệu không bị thay đổi trong quá trình truyền đi Kẻ giả mạo không thể
có khả năng thay thế dữ liệu ban đầu bằng dữ liệu khác
không thể chối bỏ sau khi đã gửi hoặc nhận thông tin
1.4 Phân loại các thuật toán mã hóa
Có rất nhiều các thuật toán mã hóa khác nhau Từ những thuật toán đượccông khai cho tất cả mọi người sử dụng và áp dụng như là một chuẩn chung choviệc mã hóa dữ liệu đến nhưng thuật toán mã hóa không được công bố Có thểphân loại các thuật toán mã hóa như sau:
Phân loại theo phương pháp:
- Mã hóa cổ điển (Classical cryptography)
- Mã hóa đối xứng (Symetric cryptography)
- Mã hóa bất đối xứng (Asymetric cryptography)
- Hàm băm (Hash function)
Phân loại theo số lượng khóa:
- Mã hóa khóa bí mật (Private-key Cryptography)
- Mã hóa khóa công khai (Public-key Cryptography)
Dưới đây chúng ta tìm hiểu khái quát về các phương pháp mã hóa:
Trang 91.4.1 Mã hóa cổ điển
Xuất hiện trong lịch sử, thuật toán không dùng khóa, đơn giản và dễ hiểu Làphương pháp mà từng kí tự (hay từng nhóm kí tự) trong bản rõ được thay thếbằng một kí tự (hay một nhóm kí tự) khác tạo ra bản mã Bên nhận chỉ việc đảongược lại trình tự thay thế trên bản mã để có được bản rõ ban đầu
Nhưng từ chính các phương pháp mã hóa này đã giúp ta tiếp cận với cácthuật toán mã hóa đối xứng được sử dụng ngày nay Trong mã hóa cổ điển cóhai phương pháp nổi bật đó là:
- Mã hóa thay thế (Substitution Cipher): Là phương pháp mà từng kí tự(hay từng nhóm kí tự) trong bản rõ được thay thế bằng một kí tự (haymột nhóm kí tự) khác để tạo ra bản mờ Bên nhận chỉ cần đảo ngượctrình tự thay thế trên bản mờ để có được bản rõ ban đầu
Hình 1 2 Bảng thay thế ký tự
Ví dụ: Giả sử xây dựng một bảng thay thế các kí tự như trên và bạncũng có bảng thay thế này Khi muốn truyền thông tin cho bạn, chẳnghạn tôi gửi cho bạn một dòng văn bản như sau: CABBAC, thì dựa vàobảng thay thế kí tự mà tôi và bạn đã xây dựng tôi chuyển thành nhưsau: FEDDEF Sau đó tôi gửi tới cho bạn, khi bạn nhận được thông tinnhư trên, vì bạn đã có bảng thay thế bạn chỉ việc thay thế ngược lạo vàbạn sẽ có được thông tin ban đầu mà tôi muốn gửi cho bạn
- Mã hóa hoán vị (Transposition Cipher) hay còn gọi là mã hóa dịchchuyển: Nếu như trong phương pháp mã hóa thay thế các kí tự trongbản rõ được thay thế hoàn toàn bằng các kí tự trong bản mờ, thì trongphương pháp mã hóa hoán vị, các kí tự trong bản rõ vẫn được giữ
Trang 10nguyên, chúng chỉ được sắp xếp lại vị trí để tạo ra bản mờ Tức là các
kí tự trong bản rõ hoàn toàn không bị thay đổi bằng kí tự khác
Ngoài ra còn có một số phương pháp khác: Phương pháp Affine, Vigenere,Hill, …
1.4.2 Mã hóa đối xứng
Ở phần trên, chúng ta đã tìm hiểu về mã hoá cổ điển, trong đó có nói rằng
mã hoá cổ điển không dùng khoá Nhưng trên thực nếu chúng ta phân tích mộtcách tổng quát, chúng ta sẽ thấy được như sau:
- Mã hoá cổ điển có sử dụng khoá Bằng chứng là trong phương phápthay thế thì khoá chính là phép dịch ký tự Trong phương pháp mã hoáhoán vị thì khóa nằm ở số hàng hay số cột mà chúng ta qui định Khoánày có thể được thay đổi tuỳ theo mục đích mã hoá của chúng ta,nhưng nó phải nằm trong một phạm vi cho phép nào đó
- Để dùng được mã hoá cổ điển thì bên mã hoá và bên giải mã phảithống nhất với nhau về cơ chế mã hoá cũng như giải mã Nếu nhưkhông có công việc này thì hai bên sẽ không thể làm việc được vớinhau
Mã hoá đối xứng còn có một số tên gọi khác như Secret Key Cryptography(hay Private Key Cryptography), sử dụng cùng một khoá cho cả hai quá trình
mã hoá và giải mã
Quá trình thực hiện như sau:
Trong hệ thống mã hoá đối xứng, trước khi truyền dữ liệu, hai bên gửi vànhận phải thoả thuận về khoá dùng chung cho quá trình mã hoá và giải mã Sau
đó, bên gửi sẽ mã hoá bản rõ (Plaintext) bằng cách sử dụng khoá bí mật này vàgửi thông điệp đã mã hoá cho bên nhận Bên nhận sau khi nhận được thông điệp
đã mã hoá sẽ sử dụng chính khoá bí mật mà hai bên đã thoả thuận để giải mã vàlấy lại bản rõ (Plaintext)
Trang 11Hình 1 3 Mô hình mã hóa sử dụng khóa đối xứngTrong quá trình này, thì thành phần quan trọng nhất cần phải được giữ bímật chính là khoá Việc trao đổi, thoả thuận về thuật toán được sử dụng trongviệc mã hoá có thế tiến hành một cách công khai, nhưng bước thoả thuận vềkhoá trong việc mã hoá và giải mã phải tiến hành bí mật
Mã hoá đối xứng có thế được phân thành 02 loại:
- Loại thứ nhất tác động trên bản rõ theo từng nhóm bits Từng nhómbits này được gọi với một cái tên khác là khối (Block) và thuật toánđược áp dụng gọi là Block Cipher Theo đó, từng khối dữ liệu trongvăn bản ban đầu được thay thế bằng một khối dữ liệu khác có cùng độdài Đối với các thuật toán ngày nay thì kích thước chung của mộtBlock là 64 bits
- Loại thứ hai tác động lên bản rõ theo từng bit một Các thuật toán ápdụng được gọi là Stream Cipher Theo đó, dữ liệu của văn bản được
mã hoá từng bit một Các thuật toán mã hoá dòng này có tốc độ nhanhhơn các thuật toán mã hoá khối và nó thường được áp dụng khi lượng
dữ liệu cần mã hoá chưa biết trước
Trang 12Hình 1 4 Một số thuật toán mã hóa đối xứngPhương thức mật mã đối xứng thực hiện nhanh hơn rất nhiều so với quátrình sử dụng mật mã bất đối xứng Với tốc độ nhanh nên thuật toán này đượcthiết kế chỉ một khóa trong quá trình mã hoá và giải mã dữ liệu.
Tuy nhiên bạn có thể sử dụng một giải pháp thông minh hơn đó là PublicKey Infrastructure (PKI), giải pháp được sử dụng kết hợp với mật mã đối xứngtrong quá trình truyền thông tin khóa Việc truyền thông tin khóa bằng việc sửdụng một mã hoá để truyền với sử dụng một phiên truyền thông tin duy nhất.Hiểu, sử dụng và triển khai sử dụng PKI không đơn giản và có nhiều giải phápcủa nhiều nhà sản xuất khác nhau
Trang 13công bố Năm 1977 nhóm tác giả Ronald Rivest, Adi Shamir và LeonardAdleman đã công bố phương pháp RSA, phương pháp mã hóa khóa công khainổi tiếng và được sử dụng trong các ứng dụng mã hóa và bảo vệ thông tin.
Khóa công khai ra đời hỗ trợ thêm để giải quyết một số bài toán an toàn, chứkhông phải thay thế khóa riêng (đối xứng) Cả 2 cùng tồn tại, phát triển và bổsung cho nhau
Khóa công khai ( khóa bất đối xứng) bao gồm việc sử dụng 2 khóa : Khóacông khai và khóa riêng:
- Bên gửi tạo ra một khoá bí mật dùng để mã hoá dữ liệu Khoá này cònđược gọi là Session Key
- Sau đó, Session Key này lại được mã hoá bằng khoá công khai của bênnhận dữ liệu
- Tiếp theo dữ liệu mã hoá cùng với Session Key đã mã hoá được gửi đi tớibên nhận
- Lúc này bên nhận dùng khoá riêng để giải mã Session Key và có đượcSession Key ban đầu
- Dùng Session Key sau khi giải mã để giải mã dữ liệu
Trang 14Hình 1 5 Sơ đồ mã hóa công khaiMật mã bất đối xứng hoạt động chậm hơn phương thức mật mã đối xứng,không phải nó mã hoá một khối lượng dữ liệu lớn Nó thường được sử dụng đểbảo mật quá trình truyền khóa của mật mã đối xứng Nó cung cấp bảo mật choquá trình truyền thông tin bằng các dịch vụ: Authentication, Integrity,Protection, và nonrepudiation.
Phương thức mật mã bất đối xứng sử dụng: RSA, Diffie-Hellman, ECC, …
1.4.4 Hàm băm – Hashing
Hashing là một phương thức mật mã nhưng nó không phải là một thuật toán
mã hoá Đúng như vậy, hàm băm chỉ sử dụng một chứng chỉ số duy nhất đượcbiết đến với tên như "hash value - giá trị hash", "hash - băm", MessageAuthentication Code (MAC), fingerprint - vân tay, hay một đoạn thông điệp Dữliệu đầu vào của bạn có thể là một tệp tin, một ổ đĩa một quá trình truyền thôngtin trên mạng, hay một bức thư điện tử Thông số giá trị băm được sử dụng đểphát hiện khi có sự thay đổi của tài nguyên Nói cách khác, hằm băm sử dụng nó
Trang 15để phát hiện ra dữ liệu có toàn vẹn trong quá trình lưu trữ hoặc trong khi truyềnhay không.
Ví dụ, giá trị băm được tính toán để so sánh với các giá trị băm được tạo ratrước đó một tuần Nếu hai giá trị này giống nhau thì dữ liệu chưa có sự thayđổi Nếu hai giá trị này có sự khác nhau thì tất nhiên là dữ liệu đã bị thay đổi.Thông số MAC được tính toán bởi người gửi và người nhận với cùng một thuậttoán
Không như các phương thức mật mã khác, chúng sẽ làm thay đổi dữ liệuthành một dạng mật mã, quá trình băm sử dụng một giá trị băm và không thayđổi dữ liệu ban đầu Bởi vì các tính năng đặc biệt, hàm băm có thể sử dụng đểbảo vệ và kiểm tra tính toàn vẹn của dữ liệu Nó cũng có khả năng sử dụng đểkiểm tra khi có một tiến trình sao chép được thực hiện và đảm bảo tính chínhxác của dữ liệu khi chúng được sao chép
Ví dụ, khi một ổ cứng tạo ra một bản sao, một quá trình băm được thực hiệntrên ổ đĩa trước khi quá trình nhân đôi được thực hiện Nếu hai thông số bămcủa ổ cứng mới được tạo ra và thông số băm của ổ đĩa ban đầu giống nhau thìquá trình nhân đôi dữ liệu được thực hiện chính xác và đảm bảo dữ liệu không
có sự thay đổi mất mát trong quá trình nhân bản Việc băm sử dụng để đảm bảo
dữ liệu được nguyên bản giúp dữ liệu lưu ở dạng kỹ thuật số sẽ luôn giữ đượcnguyên bản sau vô số lần sao chép và điều này không thể thực hiện khi lưu dữliệu các dạng khác - ví như bạn lưu thông tin âm thanh bằng băng từ sẽ bị biếndạng sau nhiều lần sao chép
Ví dụ, Message Digest 5 (MD5) là một thuật toán băm với 128-bit Điều này
có nghĩa không có vấn đề với dữ liệu đầu vào và dữ liệu đầu ra sau quá trìnhbăm bởi nó luôn luôn thêm vào 128 bits Sức mạnh của quá trình băm là nóđược thực hiện một chiều và không thể có phương thức nào có thể thực hiệnngược lại được để chuyển thông số băm thành dữ liệu ban đầu Nếu một vàingười có được các thông số băm của bạn, họ không thể lấy được dữ liệu banđầu Tuy nhiên đó không phải là phương thức mật mã không thế tấn công Hàm
Trang 16băm không thể thực hiện ngược lại, bởi đó là một giải pháp bảo mật, có nghĩakhông có công cụ nào có thể chuyển ngược lại một mật khẩu được băm thànhmột mật khẩu nguyên bản chưa được băm Tuy nhiên một thuật toán nào cũng
có những bất cập riêng, bằng việc sử dụng các phần mềm, password crackerschúng có thể phát hiện ra đoạn mã thêm vào dữ liệu ban đầu và chỉ cần xoá đoạngiá trị băm đi là có thể truy cập bình thường Dữ liệu tài khoản thường khôngđược mã hoá, và dữ liệu mật khẩu thường được băm do đó hầu hết các công cụcrack mật khẩu chỉ có thể xoá mật khẩu đã được đặt cho người dùng đó màkhông thể xem mật khẩu đó
Thuật toán băm thường được sử dụng: SHA-1, MD5, MD4, …
1.5.Ứng dụng mã hóa
Với sự phát triển nhanh chóng của công nghệ thông tin thì các nguy cơ vềmất an toàn thông tin cũng tang lên, vì thế mà mã hóa được ứng dụng phổ biếntrong các hoạt động bảo mật, thương mại điện tử, chính phủ điện tử,… Sau đây
là một số ứng dụng của mã hóa trong thực tế
1.5.1 Giao thức SSL
SSL là từ viết tắt của Secure Socket Layer là một giao thức (protocol) chophép bạn truyền đạt thông tin một cách bảo mật và an toàn qua mạng
Việc kết nối giữa một Web browser tới bất kỳ điểm nào trên mạng Internet
đi qua rất nhiều các hệ thống độc lập mà không có bất kỳ sự bảo vệ nào với cácthông tin trên đường truyền Không một ai kể cả người sử dụng lẫnWeb server có bất kỳ sự kiểm soát nào đối với đường đi của dữ liệu hay có thểkiểm soát được liệu có ai đó thâm nhập vào thông tin trên đường truyền
Để bảo vệ những thông tin mật trên mạng Internet hay bất kỳ mạng TCP/IPnào, SSL đã kết hợp những yếu tố sau để thiết lập được một giao dịch an toàn:
- Xác thực: đảm bảo tính xác thực của trang mà bạn sẽ làm việc ở đầu kiacủa kết nối Cũng như vậy, các trang Web cũng cần phải kiểm tra tính xácthực của người sử dụng
Trang 17- Mã hoá: đảm bảo thông tin không thể bị truy cập bởi đối tượng thứ ba Đểloại trừ việc nghe trộm những thông tin “ nhạy cảm” khi nó được truyềnqua Internet, dữ liệu phải được mã hoá để không thể bị đọc được bởinhững người khác ngoài người gửi và người nhận.
- Toàn vẹn dữ liệu: đảm bảo thông tin không bị sai lệch và nó phải thể hiệnchính xác thông tin gốc gửi đến
Với việc sử dụng SSL, các Web site có thể cung cấp khả năng bảo mật thôngtin, xác thực và toàn vẹn dữ liệu đến người dùng SSL được tích hợp sẵn vào cácbrowser và Web server, cho phép người sử dụng làm việc với các trang Web ởchế độ an toàn SSL được phát triển bởi Netscape, ngày nay giao thức SSL đãđược sử dụng rộng rãi trên World Wide Web trong việc xác thực và mã hoáthông tin giữa client và server
Tổ chức IETF (Internet Engineering Task Force ) đã chuẩn hoá SSL và đặtlại tên là TLS (Transport Layer Security) Mặc dù là có sự thay đổi về tên nhưngTSL chỉ là một phiên bản mới của SSL Phiên bản TSL 1.0 tương đương vớiphiên bản SSL 3.1 Tuy nhiên SSL là thuật ngữ được sử dụng rộng rãi hơn
SSL được thiết kế như là một giao thức riêng cho vấn đề bảo mật có thể hỗ trợcho rất nhiều ứng dụng Giao thức SSL hoạt động bên trên TCP/IP và bên dướicác giao thức ứng dụng tầng cao hơn như là HTTP, IMAP và FTP
SSL không phải là một giao thức đơn lẻ, mà là một tập các thủ tục đã đượcchuẩn hoá để thực hiện các nhiệm vụ bảo mật sau:
- Xác thực server: Cho phép người sử dụng xác thực được server muốn kếtnối Lúc này, phía browser sử dụng các kỹ thuật mã hoá công khai đểchắc chắn rằng certificate và public ID của server là có giá trị và được cấp
Trang 18phát bởi một CA (certificate authority) trong danh sách các CA đáng tincậy của client Điều này rất quan trọng đối với người dùng Ví dụ như khigửi mã số credit card qua mạng thì người dùng thực sự muốn kiểm tra liệuserver sẽ nhận thông tin này có đúng là server mà họ định gửi đến không.
- Xác thực Client: Cho phép phía server xác thực được người sử dụngmuốn kết nối Phía server cũng sử dụng các kỹ thuật mã hoá công khai đểkiểm tra xem certificate và public ID của server có giá trị hay không vàđược cấp phát bởi một CA (certificate authority) trong danh sách các CAđáng tin cậy của server không Điều này rất quan trọng đối với các nhàcung cấp Ví dụ như khi một ngân hàng định gửi các thông tin tài chínhmang tính bảo mật tới khách hàng thì họ rất muốn kiểm tra định danh củangười nhận
- Mã hoá kết nối: Tất cả các thông tin trao đổi giữa client và server được
mã hoá trên đường truyền nhằm nâng cao khả năng bảo mật Điều này rấtquan trọng đối với cả hai bên khi có các giao dịch mang tính riêng tư.Ngoài ra, tất cả các dữ liệu được gửi đi trên một kết nối SSL đã được mãhoá còn được bảo vệ nhờ cơ chế tự động phát hiện các xáo trộn, thay đổitrong dữ liệu ( đó là các thuật toán băm – hash algorithm)
Giao thức SSL bao gồm 2 giao thức con:
- Giao thức SSL record: xác định các định dạng dùng để truyền dữ liệu
- Giao thức SSL handshake (gọi là giao thức bắt tay) : sử dụng SSL recordprotocol để trao đổi một số thông tin giữa server và client vào lấn đầu tiênthiết lập kết nối SSL
Các thuật toán dùng trong SSL
Các thuật toán mã hoá và xác thực của SSL được sử dụng bao gồm:
- DES (Data Encryption Standard) là một thuật toán mã hoá có chiều dàikhoá là 56 bit
- 3-DES (Triple-DES): là thuật toán mã hoá có độ dài khoá gấp 3 lần độdài khoá trong mã hoá DES
Trang 19- DSA (Digital Signature Algorithm): là một phần trong chuẩn về xác thực
số đang được được chính phủ Mỹ sử dụng
- KEA (Key Exchange Algorithm) là một thuật toán trao đổi khoá đangđược chính phủ Mỹ sử dụng
- MD5 (Message Digest algorithm) được phát thiển bởi Rivest
- RSA: là thuật toán mã hoá công khai dùng cho cả quá trình xác thực và
mã hoá dữ liệu được Rivest, Shamir, and Adleman phát triển
- RSA key exchange: là thuật toán trao đổi khoá dùng trong SSL dựa trênthuật toán RSA
- RC2 and RC4: là các thuật toán mã hoá được phát triển bởi Rivest dùngcho RSA Data Security
- SHA-1 (Secure Hash Algorithm): là một thuật toán băm đang được chínhphủ Mỹ sử dụng
Khi một client và server trao đổi thông tin trong giai đoạn bắt tay(handshake), họ sẽ xác định bộ mã hoá mạnh nhất có thể và sử dụng chúng trongphiên giao dịch SSL
1.5.2 Chữ ký số
một phương pháp thuộc lĩnh vực toán học, nó chuyển toàn bộ message thànhmột dạng khó có thể nhận dạng và có thể được giải mã Chữ ký số sử dụng haikhóa thông dụng, một khóa để tạo ra chữ ký số hoặc chuyển message thành dạngkhó nhận dạng, một khóa dùng để kiểm tra digital signature hoặc để chuyểnmessage đã mã hóa về dạng nguyên thủy của nó
Digital signature là cách cơ bản để bảo mật cho một tài liệu điện tử (e-mail,spreaDigital Signatureheet_bảng tính, text file, ) đáng tin cậy Đáng tin nghĩa làbạn biết ai đã tạo ra tài liệu và bạn biết nó không bị thay đổi theo bất cứ cáchnào từ người tạo ra nó
Trang 20Digital signature dựa vào thuật toán mã hoá đế bảo đảm độ tin cậy Độ tincậy là quá trình kiểm tra xác nhận được thông tin đến từ một nguồn tin cậy Haiquá trình này liên quan chặt chẽ đến digital signature.
Một Digital Signature có thể được xem như một giá trị số, được biểu diễnnhư một dãy các ký tự, và được sử dụng trong tin học như một biểu thức toánhọc Biểu thức phụ thuộc vào hai đầu vào: dãy các ký tự biểu diễn dòng dữ liệuđiện tử được ký và số bảo mật được tham chiếu đến như một signature publickey, điều này có nghĩa là với mỗi chữ ký thì chỉ duy nhất người đã ký mới có thểtruy xuất đến public key Public key là khoá công khai cho tất cả mọi người, nógiống như số điện thoại trong danh bạ điện thoại, cho phép việc kiểm tra chữ ký.Kết quả cho thấy việc biểu diễn chữ ký số gắn vào dữ liệu điện tử giống như sửdụng chữ ký tay trên giấy trong tài liệu văn bản
Digital signature làm việc dựa trên hai khoá là public key và private key vàthực hiện qua hai giai đoạn là việc hình thành chữ ký trên tài liệu ở phía ngườigửi và việc xác nhận tài liệu nhận được chính xác và nguyên vẹn hay không ởphía người nhận
Vấn đề bảo mật ở digital signature không giống với các phương pháp mãhoá cổ điển là chỉ dùng một khoá cho cả việc mã hoá ở người gửi và giải mã ởngười nhận mà sử dụng hai khoá: private key để mã hoá và public key để giải
mã kiểm tra
Trang 21Hình 1 6 Lược đồ ký và kiểm tra chữ ký sốChữ ký số có một vai trò rất quan trọng trong thương mại điện tử Với chữ
ký tay trên văn bản, người nhận rất khó có thể kiểm tra được độ chính xác, tínhxác thực của chữ ký Tình trạng sử dụng chữ ký giả rất dễ xảy ra bởi không cầnphải làm đăng ký cho loại chữ ký này (trừ công chức cao cấp) Tuy nhiên, vớichữ ký số, người sử dụng phải đăng ký, vừa được đảm bảo độ an toàn, chính xácbằng công nghệ hiện đại, vừa được xác thực bởi các tổ chức chứng thực Do
đó, độ an toàn của chữ ký số cao hơn rất nhiều so với chữ ký tay truyền thống.Chính bởi những ưu việt trên, cùng với sự phát triển nhanh chóng của môitrường giao dịch điện tử, chữ ký điện tử đã được công nhận và sử dụng rộng rãitại nhiều nước trên thế giới Ngoài các nước phát triển như Mỹ, EU, Singapore,Nhật Bản, Hàn Quốc , chữ ký điện tử cũng đã được các nước Trung Quốc, Ấn
Độ, Brazil công nhận và sử dụng
1.5.3 Công cụ mã hóa PGP
Một ứng dụng cơ bản dễ thấy nhất của mã hóa chính là mã hóa dữ liệu lưutrữ hoặc dữ liệu truyền đi Có nhiều phần mềm ứng dụng được tạo ra dựa trênđặc tính này của mã hóa Ví dụ như để mã hóa cho email có phần mềm Outlook,Thunderbird, Evolution,… hay sử dụng các kỹ thuật để mã hóa dữ liệu thì có
Trang 22TrueCrypt, PGP Desktop,… Công cụ mã hóa PGP là rất nổi bật trong lĩnh vựcnày.
1.5.3.1 Giới thiệu chung
Mã hóa PGP là một phần mềm máy tính dùng để mật mã hóa dữ liệu và xácthực Phiên bản PGP đầu tiên do Phil Zimmermann được công bố vào năm
1991 Kể từ đó, phần mềm này đã có nhiều cải tiến và hiện nay tập đoàn PGPcung cấp phần mềm dựa trên nền tảng này
Phiên bản PGP Desktop 9.x dành cho máy để bàn bao gồm các tính năng:thư điện tử, chữ ký số, bảo mật IM, mật mã hóa ổ đĩa cứng máy tính xách tay,bảo mật tệp và thư mục, tệp nén tự giải mã, xóa file an toàn Các tính năng riêngbiệt được cấp phép theo các cách khác nhau tùy theo yêu cầu
Phiên bản PGP Universal 2.x dành cho máy chủ cho phép triển khai ứngdụng tập trung, thiết lập chính sách an ninh và lập báo cáo Phần mềm này đượcdùng để mật mã hóa thư điện tử một cách tự động tại cổng ra vào (gateway) vàquản lý các phần mềm máy khách PGP Desktop 9.x Nó làm việc với máy chủkhóa công khai PGP (gọi là PGP Global Directory) để tìm kiếm khóa của ngườinhận và có khả năng gửi thư điện tử an toàn ngay cả khi không tìmthấy khóa của người nhận bằng cách sử dụng phiên làm việc HTTPS
Với ứng dụng PGP Desktop 9.0 được quản lý bởi PGP Universal Server 2.0,tất cả các ứng dụng mật mã hóa PGP được dựa trên nền kiến trúc proxy mới.Các phần mềm này giúp loại bỏ việc sử dụng các plug-in của thư điện tử và
Trang 23tránh cho người dùng việc sử dụng các ứng dụng khác Tất cả các hoạt động củamáy chủ cũng như máy khách đều tự động tuân theo một chính sách an ninh.PGP Universal server còn tự động hóa các quá trình tạo, quản lý và kết thúc cáckhóa chia sẻ giữa các ứng dụng PGP.
Các phiên bản mới của PGP cho phép sử dụng cả 2 tiêu chuẩn: OpenPGP vàS/MIME, cho phép trao đổi với bất kỳ ứng dụng nào tuân theo tiêu chuẩncủa NIST
1.5.3.3 Hoạt động của PGP
PGP sử dụng kết hợp mật mã hóa khóa công khai và thuật toán khóa đốixứng cộng thêm với hệ thống xác lập mối quan hệ giữa khóa công khai và chỉdanh người dùng (ID) Phiên bản đầu tiên của hệ thống này thường được biếtdưới tên mạng lưới tín nhiệm dựa trên các mối quan hệ ngang hàng (khác với hệthống X.509 với cấu trúc cây dựa vào cácnhà cung cấp chứng thực số) Cácphiên bản PGP về sau dựa trên các kiến trúc tương tự như hạ tầng khóa côngkhai
PGP sử dụng thuật toán mật mã hóa khóa bất đối xứng Trong các hệ thốngnày, người sử dụng đầu tiên phải có một cặp khóa: khóa công khai và khóa bímật Người gửi sử dụng khóa công khai của người nhận để mã hóa một khóachung (còn gọi là khóa phiên) dùng trong các thuật toán mật mã hóa khóa đốixứng Khóa phiên này chính là khóa để mật mã hóa các thông tin được gửi qualại trong phiên giao dịch Rất nhiều khóa công khai của những người sử dụngPGP được lưu trữ trên các máy chủ khóa PGP trên khắp thế giới (các máy chủmirror lẫn nhau)
Người nhận trong hệ thống PGP sử dụng khóa phiên để giải mã các gói tin.Khóa phiên này cũng được gửi kèm với thông điệp nhưng được mật mã hóabằng hệ thống mật mã bất đối xứng và có thể tự giải mã với khóa bí mật củangười nhận Hệ thống phải sử dụng cả 2 dạng thuật toán để tận dụng ưu thế của
cả hai: thuật toán bất đối xứng đơn giản việcphân phối khóa còn thuật toán đốixứng có ưu thế về tốc độ (nhanh hơn cỡ 1000 lần)
Trang 24Một chiến lược tương tự cũng được dùng (mặc định) để phát hiện xem thôngđiệp có bị thay đổi hoặc giả mạo người gửi Để thực hiện 2 mục tiêu trên ngườigửi phải ký văn bản với thuật toán RSA hoặc DSA Đầu tiên, PGP tính giá trịhàm băm của thông điệp rồi tạo ra chữ ký số với khóa bí mật của người gửi Khinhận được văn bản, người nhận tính lại giá trị băm của văn bản đó đồng thời giải
mã chữ ký số bằng khóa công khai của người gửi Nếu 2 giá trị này giống nhauthì có thể khẳng định (với xác suất rất cao) là văn bản chưa bị thay đổi kể từ khigửi và người gửi đúng là người sở hữu khóa bí mật tương ứng
Trong quá trình mã hóa cũng như kiểm tra chữ ký, một điều vô cùng quantrọng là khóa công khai được sử dụng thực sự thuộc về người được cho là sởhữu nó Nếu chỉ đơn giản là download một khóa công khai từ đâu đó sẽ khôngthể đảm bảo được điều này PGP thực hiện việc phân phối khóa thôngqua chứng thực số được tạo nên bởi những kỹ thuật mật mã sáo cho việc sửa đổi(không hợp pháp) có thể dễ dàng bị phát hiện Tuy nhiên chỉ điều này thôi thìchưa đủ vì nó chỉ ngăn chặn được việc sửa đổi sau khi chứng thực đã được tạo
ra Người dùng còn cần phải được trang bị khả năng kiểm tra xem khóa côngkhai có thực sự thuộc về người được cho là sở hữu hay không Từ phiên bản đầutiên, PGP đã có một cơ chế hỗ trợ điều này gọi là mạng lưới tín nhiệm Mỗikhóa công khai (rộng hơn là các thông tin gắn với một khóa hay một người) đều
có thể được một bên thứ 3 xác nhận (theo cách điện tử)
Trong các đặc tả gần đây của OpenPGP, các chữ ký tin cậy có thể được sử
dụng để tạo ra các nhà cung cấp chứng thực số (CA) Một chữ ký tin cậy có thểchứng tỏ rằng môt khóa thực sự thuộc về một người sử dụng và người đó đángtin cậy để ký xác nhận một khóa của mức thấp hơn Một chữ ký có mức 0 tươngđương với chữ ký trong mô hình mạng lưới tín nhiệm Chữ ký ở mức 1 tươngđương với chữ ký của một CA vì nó có khả năng xác nhận cho một số lượngkhông hạn chế chữ ký ở mức 0 Chữ ký ở mức 2 tương tự như chữ ký trong danhsách các CA mặc định trong Internet Explorer; nó cho phép người chủ tạo ra các
CA khác
Trang 25PGP cũng được thiết kế với khả năng hủy bỏ/thu hồi các chứng thực có khảnăng đã bị vô hiệu hóa Về một khía cạnh nào đó, điều này tương đươngvới danh sách chứng thực bị thu hồi của mô hình hạ tầng khóa công khai Cácphiên bản PGP gần đây cũng hỗ trợ tính năng hạn sử dụng của chứng thực.Vấn đề xác định mối quan hệ giữa khóa công khai và người sở hữu khôngphải là vấn đề riêng của PGP Tất cả các hệ thống sử dụng khóa công khai/bímật đều phải đối phó với vấn đề này và cho đến nay chưa có một giải pháp hoànthiện nào được tìm ra Mô hình ban đầu của PGP trao cho quyền quyết định cuốicùng người sử dụng còn các mô hình PKI thì quy định tất cả các chứng thựcphải được xác nhận (có thể không trực tiếp) bởi một nhà cung cấp chứng thựctrung tâm.
Trái với những hệ thống an ninh/giao thức như SSL chỉ nhằm bảo vệ thôngtin trên đường truyền, PGP có thể bảo vệ cả dữ liệu cho mục đích lưu trữ lâu dài(hệ thống file)
Cũng giống như các hệ thống mật mã và phần mềm khác, an ninh của PGP
có thể bị vô hiệu trong trường hợp sử dụng sai hoặc thông qua các dạng tấn cônggián tiếp Trong một trường hợp, FBI đã được tòa án cho phép cài đặt bí mậtphần mềm ghi nhận bàn phím (keystroke logging) để thu thập mật khẩu PGP củangười bị tình nghi Sau đó, toàn bộ các tệp/email của người đó bị vô hiệu và làchứng cứ để kết án
Ngoài những vấn đề trên, về khía cạnh mật mã học, an ninh của PGP phụthuộc vào các giả định về thuật toán mà nó sử dụng trong điều kiện về thiết bị và
kỹ thuật đương thời Chẳng hạn, phiên bản PGP đầu tiên sử dụng thuật
Trang 26toán RSA để mã hóa khóa phiên; an ninh của thuật toán này lại phụ thuộc vàobản chất hàm một chiều của bài toán phân tích ra thừa số nguyên tố Nếu có kỹthuật mới giải bài toán này được phát hiện thì an ninh của thuật toán, cũng nhưPGP sẽ bị phá vỡ Tương tự như vậy, thuật toán khóa đối xứng trong PGP
là IDEA cũng có thể gặp phải những vấn đề về an ninh trong tương lai Nhữngphiên bản PGP gần đây hỗ trợ thêm những thuật toán khác nữa; vì thế mức độ
an toàn trước tấn công về mặt mật mã học cũng thay đổi
Do các tổ chức nghiên cứu lớn về mật mã học (như NSA, GCHQ ) khôngcông bố những phát hiện mới của mình nên có thể tồn những phương pháp giải
mã những thông điệp PGP mà không cần biết đến khóa bí mật được sử dụng.Điều này cũng đúng với bất kỳ hệ thống mật mã nào khác không chỉ là PGP.Hiện nay PGP cho sử dụng một số thuật toán khác nhau để thực hiện việc
mã hóa Vì thế các thông điệp mã hóa với PGP hiện tại không nhất thiết cónhững điểm yếu giống như PGP phiên bản đầu Tuy nhiên cũng có một số tinđồn về sự không an toàn của PGP phiên bản đầu tiên (sử dụng các thuật toánRSA và IDEA)
Do đó, có thể khẳng định tương đối chắc chắn rằng tại thời điểm hiện tại chỉnhững cơ quan thuộc về chính phủ mới có đủ những nguồn lực cần thiết để cóthể phá vỡ những thông điệp PGP Đối với tấn công phân tích mật mã từ phía cánhân thì PGP vẫn tương đối an toàn
Trang 27CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Hệ mã RSA
2.1.1 Giới thiệu
Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiênvào năm 1977 tại Học viện Công nghệ Massachusetts (MIT) Tên của thuật toánlấy từ 3 chữ cái đầu của tên 3 tác giả Ron Rivest, Adi Shamir và Len Adleman.Đâ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ớiviệc mã hóa Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã họctrong việc sử dụng khóa công khai RSA đang được sử dụng phổ biến trongthươ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 Tuy nhiê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ầu như không có giá trị bên ngoài Hoa Kỳ Ngoài ra, nếu như côngtrì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ử
2.1.2 Quá trình tạo khóa cho hệ mật RSA
Quá trình sinh khóa được thực hiện theo các bước sau:
B1 Chọn 2 số nguyên tố lớn khác nhau p, q lựa chọn ngẫu nhiên và độc lập.B2 Tính tích của nó n = p x q
B3 Tính giá trị hàm Euler của n: φ(n) = (p-1) (q-1)
B4 Chọn số nguyên e, sao cho 1< e < φ(n) và là số nguyên tố cùng nhauvới φ(n)
B5 Tính giá trị d thỏa mãn điều kiện: de ≡ 1 (mod φ(n))
B6 Khóa công khai bao gồm: n và e Khóa mật: d, p,q
Trang 28Hình 2 1 Mô tả thuật toánThực tế cho thấy việc tìm ra 2 số nguyên tố đủ lớn p và q thường được thựchiện bằng cách thử xác suất các số ngẫu nhiên có độ lớn phù hợp (dùng phépkiểm tra nguyên tố cho phép loại bỏ hầu hết các hợp số) Hai số p và q còn cầnđược chọn không quá gần nhau để phòng trường hợp phân tích n bằng phươngpháp phân tích Fermat Ngoài ra, nếu p-1 hoặc q-1 có thừa số nguyên tố nhỏ thì
n cũng có thể dễ dàng bị phân tích và vì thế p và q cũng cần được thử để tránhkhả năng này
Bên cạnh đó, cần tránh sử dụng các phương pháp tìm số ngẫu nhiên mà kẻtấn công có thể lợi dụng để biết thêm thông tin về việc lựa chọn (cần dùng các
bộ tạo số ngẫu nhiên tốt) Yêu cầu ở đây là các số được lựa chọn cần đồng thờingẫu nhiên và không dự đoán được Đây là các yêu cầu khác nhau: một số có thểđược lựa chọn ngẫu nhiên (không có kiểu mẫu trong kết quả) nhưng nếu có thể
dự đoán được dù chỉ một phần thì an ninh của thuật toán cũng không được đảmbảo Một ví dụ là bảng các số ngẫu nhiên do tập đoàn Rand xuất bản vào nhữngnăm 1950 có thể rất thực sự ngẫu nhiên nhưng kẻ tấn công cũng có bảng này.Nếu kẻ tấn công đoán được một nửa chữ số của p hay q thì chúng có thể dễ dàngtìm ra nửa còn lại (theo nghiên cứu của Donald Coppersmith vào năm 1997).Một điểm nữa cần nhấn mạnh là khóa bí mật d phải đủ lớn Năm 1990, Wiener
Trang 29chỉ ra rằng nếu giá trị của p nằm trong khoảng q và 2q (khá phổ biến) và giá trịcủa d < n1/4/3 thì có thể tìm ra được d từ n và e.
Mặc dù e đã từng có giá trị là 3 nhưng hiện nay các số mũ nhỏ không cònđược sử dụng do có thể tạo nên những lỗ hổng Giá trị thường dùng hiện nay là
65537 vì được xem là đủ lớn và cũng không quá lớn ảnh hưởng tới việc thựchiện hàm mũ
2.1.3 Quá trình mã hóa
Giả sử B muốn gửi đoạn thông tin M cho A Đầu tiên B chuyển M thành một
số m < n theo một hàm mà từ m có thể xác định lại M được thỏa thuận trước.Lúc này B có m và biết n cũng như e do A gửi B sẽ tính c là bản mã hóa của mtheo công thức:
- Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tương ứng
- Khi mã hóa với số mũ nhỏ chẳng hạn e = 3 và m cũng có giá trị nhỏ, giá trị
có thể dễ dàng tìm được m bằng cách khai căn bậc e của c
RSA là phương pháp mã hóa xác định không có thành phần ngẫu nhiên nên
kẻ tấn công có thể thực hiện tấn công lựa chọn bản rõ bằng cách tạo ra một bảngtra giữa bản rõ và bản mã Khi gặp một bản mã, kẻ tấn công sử dụng bảng tra đểtìm ra bản rõ tương ứng
Trên thực tế, ta thường gặp hai vấn đề đầu khi gửi các bản tin ASCII ngắnvới m là nhóm vài ký tự ASCII Một đoạn tin chỉ có 1 ký tự NUL sẽ được gángiá trị m = 0 và cho ra bản mã là 0 bất kể giá trị của e và n Tương tự, một ký tựASCII khác có giá trị 1 sẽ luôn cho ra bản mã là 1 Với các hệ thống dùng giá trị
Trang 30e nhỏ thì tất cả ký tự ASCII đều cho kết quả mã hóa không an toàn vì giá trị lớn
này sẽ dễ dàng bị phá mã
Để tránh gặp phải những vấn đề trên, RSA trên thực tế thường bao gồm mộthình thức chuyển đổi ngẫu nhiên m trước khi mã hóa Quá trình chuyển đổi nàyphải đảm bảo rằng m không rơi vào các giá trị không an toàn Sau khi chuyểnđổi, mỗi bản rõ khi mã hóa sẽ cho ra một trong số khả năng trong tập hợp bản
mã Điều này làm giảm tính khả thi của phương pháp tấn công lựa chọn bản rõ
do một bản rõ sẽ có thể tương ứng với nhiều bản mã tuỳ thuộc vào cách chuyểnđổi
med ≡ m (mod pq) hay cd ≡ m (mod n)
Ví dụ: Ở đây chúng ta sử dụng những số nhỏ để tiện tính toán còn trong thực
tế phải dùng các số có giá trị đủ lớn
Lấy:
p = 61 là số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa)
q = 53 là số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)
n = pq = 3233 là môđun (công bố công khai)
Trang 31d = 2753 là số mũ bí mật
Khóa công khai là cặp (e, n) Khóa bí mật là d Hàm mã hóa là:
encrypt(m) = me mod n = m17 mod 3233
(e, n) chính là khóa công khai và c là bản mã Hiện nay phương pháp triển vọngnhất giải bài toán này là phân tích n ra thừa số nguyên tố Khi thực hiện đượcđiều này, kẻ tấn công sẽ tìm ra số mũ bí mật d từ khóa công khai và có thể giải
mã theo đúng quy trình của thuật toán Nếu kẻ tấn công tìm được 2 số nguyên tố
p và q sao cho: n = pq thì có thể dễ dàng tìm được giá trị (p-1)(q-1) và qua đóxác định d từ e Chúng ta đã biết chưa có một phương pháp nào được tìm ra trênmáy tính để giải bài toán này trong thời gian đa thức Tuy nhiên người ta cũngchưa chứng minh được điều ngược lại
Trang 32RSA có tốc độ thực hiện chậm hơn đáng kể so với các thuật toán mã hóa đốixứng Trên thực tế, B sử dụng một thuật toán mã hóa đối xứng nào đó để mã hóavăn bản cần gửi và chỉ sử dụng RSA để mã hóa khóa để giải mã Phương thứcnày cũng tạo ra những vấn đề an ninh mới Một ví dụ là cần phải tạo ra khóa đốixứng thật sự ngẫu nhiên Nếu không, kẻ tấn công sẽ bỏ qua RSA và tập trungvào việc đoán khóa đối xứng.
Số n cần phải có kích thước không nhỏ hơn 512 bít Năm 2006 hệ mật RSAđược cho là hiệu quả với kích thước n phải từ 1024 Và họ khuyến cáo là tươnglai thì chiều dài n phải từ 2024 bít
Để nâng cao tốc độ mã hóa, thì chúng ta nên chọn e với giá trị không lớn,thường là 3, 7 hay 65537 Các số này khi biểu diễn ở dạng nhị phân chỉ có 2 chữ
số 1, nên khi thực hiện lệnh lũy thừa sẽ giảm đi lệnh nhân
Chọn tham số mật p và q còn cần được chọn không quá gần nhau để phòngtrường hợp phân tích n bằng phương pháp phân tích Fermat Ngoài ra, nếu p-1hoặc q-1 có thừa số nguyên tố nhỏ thì n cũng có thể dễ dàng bị phân tích và vìthế p và q cũng cần được thử để tránh khả năng này Chúng ta có thể chọn nhưsau Trước tiên tìm số nguyên tố p1 sao cho p=2p1+1 cũng là số nguyên tố,tương tự chọn số nguyên tố lớn q1 sao cho q=2q1+1 cũng là số nguyên tố Vàgiá trị d cần phải đủ lớn Năm 1990 Michael J Wiener đã chứng minh rằng nếunhư q < p < 2q và d < n 1/4 / 3, thì có phương pháp hiệu quả để tính d theo n và e
2.2 Hệ mã AES
2.2.1 Giới thiệu
Chuẩn mã hóa dữ liệu cao cấp AES là một hệ mã khóa bí mật có tên làRijndael do hai nhà mật mã học người Bỉ là Joan Daemen và Vincent Rijmenđưa ra và trở thành chuẩn từ năm 2002 cho phép xử lý các khối dữ liệu đầu vào
có kích thước 128 bit sử dụng các khóa có độ dài 128, 192 hoặc 256 bit Hệ mãRijndael được thiết kế để có thể làm việc với các khóa và các khối dữ liệu có độdài lớn hơn tuy nhiên khi được chọn là một chuẩn do Ủy ban tiêu chuẩn của Hoa
Kỳ đưa ra vào năm 2001, nó được qui định chỉ làm việc với các khối dữ liệu 128