Mục đích cơ bản của tôi khi lựa chọn và thực hiện luận án này bao gồm: Nghiên cứu, nắm bắt cơ chế hoạt động của các phương pháp mã hoá Tìm hiểu khả năng ứng dụng các phương pháp mã h
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
KHOA CÔNG NGHỆ NGUYỄN VIỆT PHƯƠNG
Mã hoá bảo mật thông tin và ứng dụng
trong thương mại điện tử
LUẬN VĂN THẠC SĨ CÔNG NGHỆ
Hà Nội, 2003
Trang 2Mục lục
Lời mở đầu .4
Chương 1: Giới thiệu khái quát về mã hoá và bảo mật thông tin 6
1.1 Lịch sử của mã hoá 7
1.2 Định nghĩa mã hoá 11
1.3 Mục tiêu của hệ thống mã hoá 16
1.3.1 Xác thực người sử dụng (User Authentication) 16
1.3.2 Xác thực thông tin (Data authentication) 17
1.3.3 Chống phủ nhận thông tin (Non-repudiation of origin) 18
1.3.4 Bảo vệ tính riêng tư của thông tin (Data confidentiality) 18
Chương 2: Các phương pháp mã hoá và bảo mật thông tin 19
2.1 Mã hoá đối xứng 20
2.2 Mã hoá bất đối xứng 22
2.3 Mã hoá thông tin theo luồng và mã hoá thông tin theo khối (Stream and Block Ciphers) 27
2.3.1 Mã hoá theo khối 27
2.3.2 Mã hoá theo luồng dữ liệu (Stream Cipher) 29
2.4 Một số thuật toán mã hoá đối xứng được công khai phổ biến 30
2.4.1 Data Encryption Standard (DES) 31
2.4.2 Thuật toán mã hoá 3DES 38
2.4.3 Advanced Encryption Standard (AES) 38
2.5 Một số loại mã hoá bất đối xứng 41
2.5.1 RSA 41
2.5.2 El Gamal 42
2.5.3 Elliptic Curve Cryptosystems (ECCs) 42
2.6 Các phương pháp mã hoá lai (hybrid) 42
2.6.1 Hệ thống khoá mã công khai 43
2.6.2 Khoá mã phiên (session key) 46
Chương 3: Ứng dụng các hệ thống mã hoá trong môi trường thương mại điện tử 48
3.1 Hạ tầng cơ sở hệ thống khoá mã công khai - PKI 48
3.1.1 Đơn vị cấp phát chứng chỉ - CA 49
3.1.2 Chứng chỉ (Certificates) 51
Trang 33.1.3 Đơn vị đăng ký (Registration Authority) 51
3.1.4 Các bước trong PKI 52
3.2 Hàm một chiều và chữ ký điện tử 53
3.2.1 Tính toàn vẹn của thông tin 54
3.2.2 Hàm Hash một chiều 55
3.2.3 Hàm một chiều sử dụng trong mã hoá so với hàm hash một chiều 56
3.2.4 Chữ ký điện tử (Digital Signatures) 56
3.2.5 Tiêu chuẩn chữ ký điện tử Quốc gia Hoa kỳ - DSS 59
3.2.6 Các thuật toán Hash 59
3.3 Quản lý khoá mã 61
3.3.1 Nguyên tắc quản lý khoá mã 63
3.4 Bảo mật Internet 65
3.4.1 HTTP 65
3.4.2 S-HTTP 66
3.4.3 HTTPS 67
3.4.4 SSL 67
3.4.5 MIME 68
3.4.6 S/MIME 69
3.4.7 Bảo mật các thông tin giao dịch trực tuyến - SET 69
3.4.8 Cookies 70
3.4.9 SSH 71
3.4.10 IPSec 72
Chương 4: Nghiên cứu triển khai ứng dụng xác thực người sử dụng bằng hệ thống RSA SecurID 76
4.1 Tầm quan trọng của vấn đề xác thực người sử dụng 76
4.2 SecurID và phương pháp xác thực truy nhập hai thành phần 77
4.3 Mô hình tổng quan hệ thống bảo mật SecurID, các thành phần và chức năng cơ bản 80
4.3.1 RSA ACE/Server 81
4.3.2 Thẻ RSA SecurID 83
4.3.3 RSA ACE/Agents 84
4.4 Quản lý và phát triển hệ thống bảo mật SecurID 86
4.4.1 Quản lý an ninh hệ thống 86
4.4.2 Cấp phát và thay thế thẻ SecurID 87
4.4.3 Tự động phát triển hệ thống bảo mật với trình duyệt Web 88
Trang 44.4.4 Thiết lập các báo cáo theo yêu cầu 88
4.5 Những ưu điểm nổi bật của hệ thống bảo mật RSA SecurID 88
4.5.1 Khả năng bảo mật và tính ổn định cao, sẵn sàng đáp ứng các yêu cầu bảo mật trong tương lai 89
4.5.2 Quản lý tập trung, dễ dàng 89
4.5.3 Đơn giản, hiệu quả độ an toàn cao 89
Kết luận .91
Tài liệu tham khảo 93
Trang 5số thiệt hại lên đến 377 triệu USD - tăng 42% so với mức thiệt hại 265 triệu USD trong năm 2000 Trong số này, mức độ thiệt hại do trộm cắp thông tin là 151 triệu USD và do gian lận thương mại là 93 triệu USD – những con số rất lớn mặc dù số
vụ trộm cắp, gian lận thông tin không nhiều bằng số vụ virus tấn công hay số vụ trộm cắp máy tính cá nhân Chính vì vậy vấn đề đảm bảo an toàn cơ sở dữ liệu, thông tin cá nhân là vấn đề sống còn của bất kỳ một tổ chức nào và bảo mật thông tin là nền móng cơ bản để phát triển các dịch vụ thương mại điện tử
Tại Việt Nam, sau bước đầu hoàn thành quá trình tin học hoá, thiết lập các mạng máy tính cục bộ nhằm chia sẻ dữ liệu, trao đổi thông tin…, các ban nghành, tổ chức
và các doanh nghiệp đã bắt đầu lập các website, quảng bá thông tin, cho phép truy vấn thông tin và tiến hành giao dịch trực tuyến thông qua mạng Internet Vì lý do
đó, vấn đề bảo mật mạng máy tính, hạn chế sự tấn công, phá hoại của tin tặc (hacker) đã bắt đầu thu hút được nhiều sự quan tâm, chú ý và trở thành đề tài nóng bỏng trong thời gian gần đây
Bảo mật mạng máy tính có nhiều khía cạnh nhưng chủ yếu được chia thành hai loại:
1 Bảo mật hệ thống máy tính, chống lại các cuộc thâm nhập bất hợp pháp bằng cách thiết lập, sử dụng các hệ thống Firewall, IDS,…
Trang 62 Chống lại việc gian lận, ăn cắp, sửa đổi thông tin giao dịch trên mạng bằng cách thiết lập các hệ thống mã hoá thông tin, chữ ký điện tử… Tầm quan trọng và tính cấp bách của việc an toàn bảo mật thông tin khi Việt Nam đang từng bước phát triển thương mại điện tử đã thôi thúc tôi lựa chọn đề tài: “Mã hoá bảo mật thông tin và ứng dụng trong thương mại điện tử”
Mục đích cơ bản của tôi khi lựa chọn và thực hiện luận án này bao gồm:
Nghiên cứu, nắm bắt cơ chế hoạt động của các phương pháp mã hoá
Tìm hiểu khả năng ứng dụng các phương pháp mã hoá vào trong thực tiễn nói chung và vào trong lĩnh vực thương mại điện tử nói riêng
Tìm hiểu các vấn đề trở ngại về mặt công nghệ trong việc phát triển thương mại điện tử ở Việt Nam và nghiên cứu phương hướng giải quyết
Bản luận án này được chia làm bốn chương:
Chương 1: Giới thiệu khái quát về mã hoá và bảo mật thông tin
Chương 2: Các phương pháp mã hoá và bảo mật thông tin
Chương 3: Ứng dụng các hệ thống mã hoá trong môi trường thương mại
điện tử Chương 4: Nghiên cứu triển khai ứng dụng xác thực người sử dụng bằng hệ
thống RSA SecurID
Trang 7CHƯƠNG 1: GIỚI THIỆU KHÁI QUÁT VỀ MÃ HOÁ
VÀ BẢO MẬT THÔNG TIN
Từ cryptology (chuyên khoa mật mã) có nguồn gốc từ tiếng Hy Lạp cổ đại và được cấu tạo bởi hai thành phần: “cryptos” có nghĩa là che giấu, “logos” có nghĩa là từ ngữ Chuyên khoa mật mã đã có từ lâu đời, những phương pháp mã hoá đầu tiên xuất hiện khoảng 4000 năm trước đây được coi là một nghệ thuật và được sử dụng chủ yếu cho mục đích bảo vệ các thông tin trong quân sự, các thông điệp trong quan hệ bang giao Một ví dụ điển hình là đế chế Julius Caesar nổi tiếng thời La mã
cổ đại thường sử dụng lối viết chữ đan xen (cipher) để mã hoá các thông điệp gửi cho quân đội của ông ta Trải qua thời gian, các cá nhân cũng như các tổ chức chính phủ đã nghiên cứu phát triển nhiều phương thức, thuật toán mã hoá có độ phức tạp cao hơn, áp dụng rộng rãi trong nhiều lĩnh vực hơn khiến mã hoá thông tin dần trở thành một phần quan trọng trong thế giới vi tính
Chuyên khoa mật mã có thể được chia thành hai nghành khác nhau: mã hoá (cryptography) và phá mã (cryptanalysis) [5]
Mã hoá là phương pháp lưu trữ và truyền thông tin dưới dạng sao cho chỉ có những người có thẩm quyền mới đọc và xử lý được Mã hoá là một phương pháp hiệu quả
để bảo vệ các thông tin nhạy cảm khi lưu trữ hoặc khi truyền trên các kênh truyền thông
Mặc dù mục tiêu cơ bản của mã hoá là bảo vệ, che giấu thông tin khỏi con mắt của những kẻ tò mò bất hợp pháp, nhưng phần lớn các thuật toán đều có thể bị phá vỡ
và thông tin được giải mã (một cách bất hợp pháp) nếu kẻ tấn công có đủ thời gian
và các phương tiện cần thiết
Phá mã là một lĩnh vực khoa học nhằm nghiên cứu độ an toàn và tìm cách phá vỡ các thuật toán mã hoá cũng như các thành phần của chúng Việc nghiên cứu độ an toàn của thuật toán có thể tiến hành bởi các viện nghiên cứu nhằm tìm ra những điểm yếu để ngăn chặn những kẻ gian lận, phá hoại hoặc tiến hành bởi các kẻ tấn công (hackers) với mục đích thoả mãn trí tò mò và tìm cách gian lận, trộm cắp
Trang 8thông tin
Các chuyên gia mã hoá (cryptographer) nghiên cứu cải tiến và phát triển các thuật toán nhằm bảo vệ và mã hoá thông tin còn các chuyên gia phá mã (cryptanalyst) thì tìm cách giải mã, phá vỡ hệ thống do các chuyên gia mã hoá xây dựng lên Mục tiêu của các chuyên gia phá mã có thể không tốt nhưng những nỗ lực của họ, cộng với sự phát triển mạnh mẽ sức mạnh xử lý của máy tính phần nào đã tác động ngược trở lại, thôi thúc các chuyên gia mã hoá làm việc tốt hơn và thúc đẩy ngành
mã hoá phát triển nhanh hơn
Hình 1.1: Chữ viết tượng hình đầu tiên được sử dụng như một dạng mã hoá
Trong thực tế, mã hoá là phương pháp chủ yếu dùng để che giấu thông tin để những người không có thẩm quyền không thể đọc được
Trang 9Người Hebrew sử dụng phương pháp mã hoá bằng cách tráo đổi các ký tự Mỗi một
ký tự sẽ được gán tương ứng với một ký tự khác trong bảng chữ cái Phương pháp
mã hoá này được gọi là atbash Một ví dụ của từ khoá được sử dụng trong phương
pháp mã hóa atbash như sau:
ABCDEFGHI JK LMNOPQ R STU VW XYZ
ZYXWVUTSR QP ONMLKJ I HGF ED CBA
Khi đó từ “security” sẽ được mã hoá thành “hvxfirgb” Đây là loại mã viết chữ đan xen với các chữ cái được thay bằng chữ khác (substitution cipher) Cách viết đan xen này còn được gọi là mã thay thế ký tự đơn lẻ (monoalphabetic substitution) Một số cách viết khác sử dụng nhiều ký tự khác nhau để thay thế cho một ký tự Khoảng 400 năm trước Công nguyên, những người Spartans sử dụng hệ thống mã hoá thông tin bằng cách viết các thông điệp lên những mảnh giấy cói quấn quanh một cây quyền trượng Thông điệp chỉ có thể đọc được khi mảnh giấy cói quấn quanh cây quyền trượng có kích thước thích hợp Phương pháp này được gọi
phương pháp viết chữ đan xen kiểu scytale (scytale cipher) Khi mảnh giấy cói
được tháo ra khỏi cây quyền trượng, các chữ viết trên mảnh giấy cói xuất hiện dưới dạng một chuỗi các ký tự ngẫu nhiên Những mảnh giấy cói chứa thông điệp được truyền đến các chiến binh Khi các chiến binh quấn mảnh giấy cói quanh cây quyền trượng có đường kính và chiều dài thích hợp, các ký tự ngẫu nhiên sẽ sắp xếp theo một trật tự xác định và thông điệp cần truyền tải sẽ hiện ra (hình 1.2) [6]
Hình 1.2: Cây quyền trượng được người Spartans
dùng để giải mã các thông điệp
Ngày nay các kỹ thuật này quá đơn giản nhưng thời đó rất ít người có thể đọc được nên kỹ thuật ấy là một phương pháp để bảo vệ thông tin hiệu quả có độ an toàn cao
Trang 10Cuộc cách mạng mã hoá tiếp tục phát triển khi người châu Âu phát minh ra những phương pháp và công cụ mã hoá mới dùng trong suốt thời kỳ Trung đại Đến cuối những năm 1800, mã hoá đã được sử dụng phổ biến trong các liên lạc truyền tin giữa các đơn vị quân đội
Trong cuộc chiến tranh Thế giới lần thứ II, các thiết bị mã hoá đơn giản đã được cải tiến đáng kể bằng các kỹ thuật cơ khí, điện từ tạo ra các thiết bị truyền tin điện báo
và sử dụng sóng vô tuyến
Chiếc máy mã hoá sử dụng các trục quay rotor khác nhau để tạo ra thông điệp phức tạp rất khó giải mã là một bước đột phá quan trọng trong lĩnh vực mã hoá thông tin quân sự Chiếc máy nổi tiếng nhất do người Đức chế tạo có tên là Enigma Chiếc máy Enigma có 3 trục quay, một bàn phím và một trục quay hồi tiếp Từ khoá gốc được cấu hình cho máy trước khi tiến hành quá trình mã hoá Khi người điều khiển
gõ một ký tự, máy sẽ thay thế ký tự ấy bằng một ký tự khác và trả về cho người điều khiển Quá trình mã hoá này được thực hiện bằng cách tịnh tiến trục quay một
số lần định trước để thay thế ký tự gõ vào bằng một ký tự khác Nếu người điều
khiển gõ vào chữ T, máy Enigma có thể trả về ký tự M Người điều khiển viết ký tự
M ra giấy rồi tịnh tiến trục quay và nhập ký tự tiếp theo Sau mỗi một ký tự mã hoá,
người điều khiển lại tịnh tiến trục quay đến một vị trí mới Quá trình này tiếp diễn cho đến khi toàn bộ thông điệp được mã hoá Việc lựa chọn ký tự thay thế cho từng
ký tự phụ thuộc vào cấu hình của trục quay Do đó bí mật của quá trình xử lý này (khoá mã) là cách người điều khiển tịnh tiến trục quay khi mã hoá và giải mã thông tin
Người điều khiển tại hai đầu phải thống nhất quy tắc tịnh tiến này để điều khiển trục quay cho phù hợp Mặc dù tại thời điểm đó, cơ chế mã hoá của máy Enigma khá phức tạp nhưng một nhóm kỹ sư người Ba lan đã giải mã thành công và cung cấp các thông tin về kế hoạch tấn công, di chuyển quân sự của người Đức cho người Anh Có thể nói rằng việc phá mã thành công đã giúp kết thúc chiến tranh Thế giới lần thứ II sớm hơn 2 năm [6] Sau chiến tranh, thông tin chi tiết về chiếc máy Enigma được công bố rộng rãi, một trong những chiếc máy này hiện đang được trưng bày tại học viện Smithsonian Institute [6]
Trang 11Mã hoá có một lịch sử lâu dài và phong phú trong đó quân sự là một lĩnh vực lớn
sử dụng mã hoá để che giấu các thông tin quân sự cũng như để phá mã các thông
tin của đối phương William Frederick Friedman tác giả của cuốn sách “Lý thuyết
ngẫu nhiên và ứng dụng trong mã hoá” được coi là cha đẻ của nghành mã hoá hiện
đại và ông là người đã phá mã được rất nhiều thông điệp quân sự trong chiến tranh Thế giới thứ II [1]
Với sự phát triển của máy tính, các thuật toán, thiết bị và ứng dụng mã hoá đã phát triển mạnh mẽ Kỷ nguyên công nghệ thông tin đã đem lại những cơ hội chưa từng thấy cho các chuyên gia nghiên cứu mật mã Dự án nổi tiếng nhất và thành công nhất là dự án phát triển thuật toán mã hoá Lucifer do IBM phát triển Thuật toán Lucifer bao gồm rất nhiều hàm và phương trình toán học phức tạp đã được Cơ quan
An ninh Quốc gia Hoa kỳ chấp thuận và sửa đổi thành tiêu chuẩn mã hoá quốc gia Hoa kỳ - DES (Data Encryption Standard) [6] DES đã được chấp thuận thành một tiêu chuẩn liên bang và được sử dụng rộng rãi trong các giao dịch tài chính cũng như trong các ứng dụng thương mại Thuật toán DES có một lịch sử phong phú trong các thuật toán mã hoá phát triển bằng máy tính và đã được sử dụng rộng rãi trên 20 năm nay
Ngày nay, mã hoá thông tin đã có một vai trò rất quan trọng trong đời sống kinh tế, chính trị Các thuật toán mã hoá được bảo vệ bởi tổ chức chính phủ và luật pháp Việc phát triển các chip chuyên dụng để giải mã đường truyền (ví dụ như Clipper Chip) đã bị chính phủ một số nước liệt vào hành vi phạm pháp tương đương với việc buôn bán sử dụng ma tuý (tất nhiên việc này cũng dấy lên nhiều làn sóng công kích đòi hỏi quyền riêng tư và chống lại quyền nghe trộm của chính phủ)
Với sự phát triển của mã hoá, phần lớn các giao thức được phát triển từ thuở sơ khai của máy tính đều được cập nhật bổ sung thêm tính năng mã hoá để đảm bảo khả năng bảo mật thông tin Mã hoá đã được sử dụng rộng rãi trong cả phần cứng lẫn phần mềm để bảo vệ dữ liệu, các giao dịch ngân hàng, mạng extranet, thư tín điện tử, giao dịch trên web, giao dịch trên mạng không dây, lưu trữ thông tin… Con người ngày càng lệ thuộc vào sự phát triển của công nghệ, do đó con người sẽ ngày càng lệ thuộc vào mã hoá, bởi vì bí mật luôn cần phải giữ kín
Trang 12nó được giải mã Quá trình mã hoá cho phép truyền các thông tin bí mật qua các kênh thông tin có tính chất không an toàn Khi dữ liệu được lưu trữ trên máy tính,
dữ liệu có thể được đảm bảo an toàn bằng cách kiểm soát truy nhập về mặt logic và
về mặt vật lý Tuy nhiên khi các thông tin nhạy cảm này truyền trên mạng, việc kiểm soát truy nhập về mặt logic và vật lý không còn thực hiện được và thông tin rất dễ bị rò rỉ [1]
Hình 1.3: Quá trình mã hoá biến đổi plaintext thành ciphertext
và giải mã biến đổi ciphertext thành plaintext
Plaintext thường được gọi là M (có nghĩa là thông điệp - message) hoặc là P Plaintext có thể là một chuỗi bits, một file văn bản, đồ hoạ hoặc một chuỗi âm thanh được số hoá… Trong lĩnh vực máy tính, M và P thường được hiểu là dữ liệu dạng cơ số nhị phân [1] Plaintext có thể dùng để truyền hoặc để lưu trữ và trong mọi trường hợp M , P là thông tin cần phải mã hoá
Ciphertext được gọi là C và cũng có dạng mã nhị phân Đôi khi ciphertext có kích thước như M , đôi khi có kích thước lớn hơn [1] Bằng việc kết hợp mã hoá với nén
dữ liệu, C có thể có kích thước nhỏ hơn M Tuy nhiên mã hoá không thực hiện nhiệm vụ này Hàm mã hoá là E thao tác trên M tạo ra C Ta có thể viết dưới dạng biểu thức toán học như sau:
M C
E
Trong quá trình ngược lại, hàm giải mã D thao thác trên C để tạo ra M :
Trang 13Hình 1.4: Khoá mã chèn vào thuật toán
áp dụng lên thông điệp để tạo ra ciphertext
Thuật toán mã hoá (cryptographic algorithm hay còn gọi là cipher) là một tập hợp các hàm toán học dùng trong tiến trình mã hoá và giải mã Thông thường có hai hàm tương quan với nhau, một hàm dùng cho quá trình mã hoá và một hàm dùng cho quá trình giải mã
Nếu độ an toàn của một thuật toán dựa vào việc giữ bí mật các bước xử lý bên trong của thuật toán, thuật toán đó được gọi là thuật toán bị giới hạn (restricted algorithm) Về mặt lịch sử, các thuật toán bị giới hạn khá được ưa chuộng, tuy nhiên ngày nay các thuật toán như vậy không phù hợp với các tiêu chuẩn và rất khó
Trang 14được chấp nhận rộng rãi [1] Một cộng đồng lớn có số thành viên thường xuyên thay đổi không thể sử dụng được những thuật toán này do mỗi khi một thành viên rời khỏi nhóm, những thành viên còn lại trong nhóm phải chuyển sang sử dụng một thuật toán khác Nếu một người tình cờ (hay hữu ý) khám phá ra bí mật của thuật toán, tất cả mọi người phải thay đổi thuật toán
Tệ hơn, các thuật toán bị giới hạn không cho phép thực hiện các quy trình giám sát chất lượng và tiêu chuẩn Mỗi một nhóm người phải có một thuật toán riêng Những nhóm người đó không thể sử dụng các thiết bị phần cứng hoặc phần mềm
có sẵn, họ phải tự nghiên cứu thuật toán và tự triển khai hệ thống cho riêng mình Nếu thành viên trong nhóm phát triển không phải là các chuyên gia giỏi thì khó có thể đánh giá chính xác mức độ an toàn của thuật toán và nếu một thành viên trong nhóm phát triển rời khỏi nhóm thì không có gì đảm bảo thuật toán đó sẽ được giữ
bí mật
Mặc dù có những hạn chế như trên, các thuật toán bị giới hạn vẫn được sử dụng rộng rãi trong các ứng dụng có độ bảo mật thấp bởi vì người sử dụng có thể không nhận ra hoặc không thực sự quan tâm đến các vấn đề rủi ro tiềm ẩn trong hệ thống của họ
Các hệ thống mã hoá hiện đại giải quyết vấn đề trên bằng cách sử dụng khoá mã, gọi là K Khoá mã này có thể là một giá trị ngẫu nhiên trong một số rất lớn các giá trị Khoảng chứa các giá trị có thể dùng làm khoá mã được gọi là khoảng mã (keyspace) Khoảng mã càng lớn thì số lượng khoá mã có thể có càng lớn và kẻ tấn công càng cần nhiều thời gian để dò tìm khoá mã [6]
Trang 15Hình 1.5: Khoảng mã lớn hơn cho phép lựa chọn nhiều khóa mã hơn
Nếu kẻ nghe trộm bắt được thông tin truyền giữa hai người, kẻ nghe trộm có thể xem được nội dung thông tin Nhưng do các thông tin ấy được mã hoá nên kẻ nghe trộm không thể hiểu được nội dung thông tin Thậm chí nếu kẻ nghe trộm biết được thuật toán mã hoá sử dụng nhưng nếu không có khoá mã thích hợp, kẻ nghe trộm cũng không thể giải mã được thông tin Như vậy thông tin nghe trộm được trở nên không có giá trị
Hình 1.6: Nếu không có khoá mã thích hợp, thông tin trở nên không có giá trị đối với kẻ nghe trộm
Cả hai quá trình mã hoá và giải mã đều sử dụng khoá mã và có thể biểu thị dưới
Trang 16dạng biểu thức toán học như sau:
Độ an toàn của các thuật thuật toán theo mô hình này hoàn toàn phụ thuộc vào khoá
mã mà không phụ thuộc vào thuật toán [1] Điều này cũng có nghĩa là thuật toán
mã hoá có thể được công bố rộng rãi và được phân tích kỹ lưỡng
Encryption Decryption
Cipheretext Plaintext
Original Plaintext
Key Key
Hình 1.7a: Mã hoá và giải mã với cùng một khoá mã
Encryption Decryption
Cipheretext Plaintext
Original Plaintext
Decryption Key
Encryption Key
Hình 1.7b: Mã hoá và giải mã với hai khoá mã khác nhau
Trang 171.3 Mục tiêu của hệ thống mã hoá
Các hệ thống mã hoá hiện đại được phát triển nhằm đảm bảo 4 mục đích: xác thực người sử dụng (user authentication), xác định tính toàn vẹn và nguồn gốc của thông tin (data authentication), chống phủ nhận nguồn gốc thông tin (non-repudiation) và đảm bảo tính riêng tư hay an toàn của thông tin (privacy or data confidentiality) [5]
1.3.1 Xác thực người sử dụng (User Authentication)
Khi người sử dụng muốn truy nhập vào một hệ thống máy tính, thông thường, bằng cách này hay cách khác, người sử dụng cần cung cấp các thông tin nhận dạng cho máy tính Khi nhận được các thông tin ấy, máy tính kiểm tra xem người sử dụng có được quyền truy nhập vào hệ thống không Đây cũng là nguyên tắc cơ bản được áp dụng cho một người khi muốn trao đổi thông tin với người khác: trước tiên cần phải xác định người đang tham gia trao đổi thông tin có đúng là người muốn trao đổi không Do đó cần phải có một số phương thức để cung cấp đặc điểm nhận dạng nhằm đảm bảo người đang trao đổi thông tin là hợp lệ Quá trình này được gọi là xác thực định danh người sử dụng (user authentication)
Có rất nhiều cách để xác thực: người sử dụng có thể cung cấp các thông tin mà chỉ người đó mới biết như mật khẩu (password), số hiệu người sử dụng (user-id), mã số
cá nhân (pin code), hoặc người đó cũng có thể cung cấp các thông tin riêng khác như số chứng minh thư, thẻ từ, thẻ thông minh (smart card)… Ngoài ra, người sử dụng cũng có thể dùng các đặc tính sinh học khác như dấu vân tay, hình dạng bàn tay, đặc điểm võng mạc mắt Các phương thức này đòi hỏi phải có các thiết bị đặc biệt và cần các khoản đầu tư lớn Tuy nhiên, các hệ thống sinh trắc học này không thật hoàn hảo và đôi khi những người sử dụng hợp lệ lại bị từ chối không được truy nhập hệ thống còn những kẻ thâm nhập bất hợp pháp lại được cấp quyền như một người truy nhập hợp lệ [5]
Một cơ chế khác thường được sử dụng để nâng cao khả năng xác thực người sử dụng đó là challenge - response (yêu cầu - đáp ứng) Nguyên tắc chung của phương pháp này là khi người sử dụng muốn truy nhập vào hệ thống, hệ thống sẽ tạo ra một
mã challenge ngẫu nhiên gửi đến cho người sử dụng Căn cứ vào mã challenge
Trang 18nhận được, kết hợp với một số thông tin bí mật của mình, người sử dụng tạo ra một
mã response gửi trả về hệ thống Hệ thống sẽ kiểm tra xem mã response đấy có hợp
lệ không và cấp quyền truy nhập cho người sử dụng Trên thực tế, người sử dụng
có thể dùng thiết bị phần cứng hoặc phần mềm để tính toán các mã response một cách tự động Khi đó thực chất hệ thống xác thực tính hợp lệ của thiết bị tạo response và thông tin mà người sử dụng cung cấp cho thiết bị ấy [5]
1.3.2 Xác thực thông tin (Data authentication)
Xác thực thông tin bao gồm hai mục đích: kiểm tra tính toàn vẹn của thông tin (data intergrity) và kiểm tra nguồn gốc của thông tin (data origin authentication) [5]
Kiểm tra tính toàn vẹn của thông tin (Data integrity)
Kiểm tra tính toàn vẹn của thông tin là một quá trình cho phép đảm bảo nội dung của thông tin được gửi đi không bị sửa đổi bất hợp pháp trên đường truyền Bản thân quá trình kiểm tra tính toàn vẹn của thông tin không có ý nghĩa nếu không đảm bảo được rằng thông tin đó có được gửi trực tiếp từ người hợp lệ hay không Hay nói cách khác không thể biết được thông tin có bị thay đổi hay chưa nếu nó được gửi qua một người trung gian Do đó kiểm tra tính toàn vẹn của thông tin bắt buộc phải kết hợp với việc kiểm tra nguồn gốc của thông tin [6]
Khi người sử dụng A truyền một thông điệp đến cho người sử dụng B, trên đường truyền có thể có một kẻ nghe trộm C Nếu không có khả năng kiểm tra tính toàn vẹn của thông tin, C có thể thay đổi nội dung thông điệp và chuyển tiếp cho B B không biết rằng thông điệp đã bị thay đổi và cho rằng đó là điều mà A muốn gửi
Xác định nguồn gốc của thông tin (Data origin authentication)
Như đã nói ở trên, nếu chỉ xác định tính toàn vẹn của thông tin mà không xác định nguồn gốc của nó thì quá trình xác thực thông tin trở nên vô nghĩa Khi người A gửi một thông điệp đến cho người B, trên đường truyền thông điệp bị người nghe trộm C đánh cắp Sau đó người nghe trộm C giả danh người A gửi một thông điệp đến cho người B Không có gì đảm bảo rằng thông điệp do C gửi giống với thông điệp A muốn gửi cho B
Trang 19Chính vì vậy nhiệm vụ của hệ thống mã hoá là phải vừa đảm bảo tính toàn vẹn của
dữ liệu, vừa phải xác định nguồn gốc của dữ liệu
1.3.3 Chống phủ nhận thông tin (Non-repudiation of origin)
Chống phủ nhận thông tin nhằm mục đích ngăn chặn các đối tượng tham gia quá trình truyền tin phủ nhận thực tế rằng họ đã tham gia đầy đủ quá trình truyền tin [5] Hệ thống mã hoá có tính năng chống phủ nhận thông tin sẽ cung cấp các bằng chứng về nguồn gốc của thông tin ngăn không cho người gửi phủ nhận rằng mình
là người gửi thông tin Bên cạnh đấy hệ thống mã hoá có tính năng chống phủ nhận thông tin cũng cung cấp các bằng chứng về quá trình truyền tin để ngăn không cho người gửi phủ nhận rằng thông tin bị truyền sai
1.3.4 Bảo vệ tính riêng tƣ của thông tin (Data confidentiality)
Đây là phần quan trọng và có nguồn gốc lịch sử lâu đời nhất trong lĩnh vực mã hoá Trên thực tế vấn đề bảo vệ tính riêng tư của thông tin thường được quan tâm nhiều hơn so với vấn đề xác thực người sử dụng và chống phủ nhận thông tin [5] Điều này có thể hiểu được bởi vì các dịch vụ xác thực và chống phủ nhận thông tin thường được bảo vệ và là thuộc tính của các kênh truyền vật lý Ví dụ như trường hợp các lá thư truyền thống có thể được xác thực bằng nét chữ, chữ ký và được đóng dấu niêm phong nên có thể xác định một cách tương đối chính xác người gửi
là ai
Trong thời đại thương mại điện tử hiện nay, trên thế giới hàng ngày có hàng triệu giao dịch trực tuyến với giá trị lên đến hàng tỷ đô la, do đó yêu cầu đảm bảo tính riêng tư, an toàn thông tin ngày càng trở nên quan trọng hơn
Trang 20CHƯƠNG 2: CÁC PHƯƠNG PHÁP MÃ HOÁ VÀ
BẢO MẬT THÔNG TIN
Mặc dù mỗi thuật toán mã hoá có thể có rất nhiều thành phần khác nhau nhưng hầu hết các thuật toán đều có hai thành phần chính: thuật toán và khoá mã [6] Như đã
đề cập ở trên, thuật toán mã hoá thông thường là tập hợp các hàm toán học phức tạp dùng để định hướng biến đổi thông tin thành dạng ciphertext Khoá mã là một chuỗi bit ngẫu nhiên được chèn vào thuật toán Để hai đối tượng có thể trao đổi thông tin với nhau thông qua một kênh liên lạc được mã hoá, hai đối tượng đó phải
sử dụng chung một thuật toán mã hoá và trong nhiều trường hợp phải sử dụng chung một khoá mã Hình 2.1 [6] phân loại các đặc điểm, thành phần và cơ chế hoạt động của các phương pháp mã hoá
Hình 2.1: Phân loại các phương pháp mã hoá
Trang 212.1 Mã hoá đối xứng
Một hệ thống mã hoá được gọi là đối xứng khi cả đối tượng truyền tin và nhận tin cùng sử dụng chung một khoá mã [7] Hệ thống này còn được gọi là hệ thống mã hoá bí mật bởi vì phương pháp mã hoá này yêu cầu đối tượng truyền tin và nhận tin phải giữ bí mật thông tin về khoá mã Nếu khoá mã lọt vào tay đối tượng nghe trộm, đối tượng nghe trộm có thể dùng khoá mã đó để giải mã và ăn cắp thông tin Trong hệ thống mã hoá đối xứng, từng cặp đối tượng muốn trao đổi thông tin với nhau cần có một khoá mã riêng Điều này có nghĩa nếu A muốn trao đổi thông tin với B, cả A và B cần phải có chung một khoá mã Nếu A cũng muốn trao đổi thông tin với C và D thông qua phương pháp mã hoá đối xứng, A cần phải có 3 mã khoá khác nhau, mỗi khoá mã ứng với một đối tượng liên lạc Điều này không được thuận tiện khi A phải trao đổi thông tin với hàng trăm, hàng ngàn đối tượng khác nhau trong một thời gian dài Khi đó A phải giữ rất nhiều khoá mã và phải sử dụng đúng khoá mã cho từng đối tượng trao đổi thông tin Nếu trong hệ thống mã hoá đối xứng có 10 đối tượng, số khoá mã cần thiết để các đối tượng có thể trao đổi
thông tin với nhau là n*(n-1)/2 = 45 (với n là số người sử dụng trong hệ thống) và
nếu hệ thống mã hoá đối xứng có 100 người thì số khoá mã cần thiết là 4,950 [2]
Hình 2.2: Hệ thống mã hoá đối xứng, đối tượng truyền tin và nhận tin sử dụng
chung một khoá mã cho quá trình mã hoá và giải mã
Độ an toàn của phương pháp mã hoá đối xứng hoàn toàn phụ thuộc vào việc các đối tượng bảo vệ khoá mã như thế nào Điều này rất nguy hiểm khi hệ thống có hàng ngàn đối tượng vì khi đó rất khó có thể đảm bảo rằng tất cả các đối tượng
Trang 22tham gia truyền tin đều giữ khoá mã một cách an toàn
Khi đối tượng A muốn trao đổi thông tin với B, A cần phải tìm cách để có khoá mã của B Việc này sẽ không an toàn nếu khoá mã của B được gửi cho A dưới dạng e-mail bởi vì khoá mã đó không được bảo vệ và kẻ tấn công có thể đọc trộm e-mail
để lấy thông tin về khoá mã A cũng có thể lấy khoá mã của B thông qua phương pháp không sử dụng đường truyền (out-of-band): khi A muốn liên lạc với B, B có thể lưu khoá mã của mình ra một đĩa mềm rồi chuyển cho A qua đường bưu điện hoặc qua thư bảo đảm Tuy nhiên việc đó rất phức tạp, không thuận tiện và cũng không thật sự an toàn Chính vì vậy, việc quản lý khoá mã là một vấn đề rất phức tạp và quan trọng trong việc duy trì hoạt động của hệ thống mã hoá Vấn đề này sẽ được đề cập cụ thể trong các phần sau
Do cả hai đối tượng trên một kênh truyền đều sử dụng chung một khoá mã để mã hoá và giải mã nên hệ thống mã hoá đối xứng có thể cho phép bảo vệ sự riêng tư của thông tin nhưng không thể xác thực người sử dụng cũng như chống phủ nhận thông tin được Hệ thống mã hoá đối xứng không có cách nào để chứng minh ai là người gửi thông điệp đi khi cả hai cùng dùng chung một khoá mã
Vậy vấn đề đặt ra là: nếu hệ thống mã hoá đối xứng có nhiều vấn đề và thiếu sót như vậy thì tại sao phải sử dụng chúng? Các thuật toán mã hoá đối xứng có tốc độ nhanh và khó bị phá vỡ So với các thuật toán mã hoá bất đối xứng, thuật toán mã hoá đối xứng chạy nhanh hơn rất nhiều [1] Các thuật toán mã hoá đối xứng có thể
mã hoá và giải mã một khối lượng lớn dữ liệu trong khoảng thời gian ngắn trong khi đó nếu sử dụng thuật toán mã hoá bất đối xứng thì thời gian chờ đợi lâu hơn rất nhiều (thậm chí không thể chấp nhận được) Ngoài ra rất khó có thể giải mã được thông tin nếu hệ thống mã hoá đối xứng sử dụng khoá mã có độ dài lớn
Một số ưu điểm và nhược điểm của hệ thống mã hoá đối xứng:
Ưu điểm:
- Nhanh hơn rất nhiều so với hệ thống mã hoá bất đối xứng
- Rất khó có thể bị phá vỡ khi sử dụng khoá mã dài
Nhược điểm:
Trang 23- Phân phát khoá mã: yêu cầu phải có một cơ chế an toàn để phân phát khoá
mã
- Khả năng mở rộng: mỗi cặp đối tượng sử dụng một cặp khoá mã do đó nếu
số đối tượng tăng lên thì số khoá tăng rất nhanh theo hàm số mũ
- Không cung cấp khả năng xác thực và chống từ chối nguồn gốc thông tin Một số thuật toán làm việc theo mô hình mã hoá đối xứng [6]:
- Data Encryption Standard (DES)
- Triple DES (3DES)
Phần lớn các hệ thống mã hoá bất đối xứng lưu khoá mã công khai được trong thư mục, cơ sở dữ liệu nên mọi đối tượng đều có thể sử dụng các khoá mã công khai này để mã hoá và giải mã khi muốn trao đổi thông tin với nhau
Trang 24Hình 2.2: Hệ thống mã hoá bất đối xứng
Khoá mã công khai và khoá mã cá nhân có những mối quan hệ với nhau về mặt toán học nhưng không thể dùng khoá mã cá nhân để tìm ra khoá công khai và ngược lại Điều đó có nghĩa nếu một kẻ nghe trộm lấy được khoá mã công khai của
B thì anh ta cũng không có cách nào tính toán để tìm ra được khoá mã cá nhân của
B
Nếu đối tượng B mã hoá thông tin bằng khoá mã cá nhân và gửi cho A, đối tượng
A phải sử dụng khoá mã công khai của B để giải mã A có thể giải mã thông điệp của B và trả lời B dưới dạng mã hoá Tất cả việc A cần làm là mã hoá thông điệp trả lời B bằng khoá mã công khai của B, sau đó B có thể giải mã thông điệp ấy bằng khoá mã cá nhân của mình
Trong hệ thống mã hoá bất đối xứng, không thể dùng chung một khoá mã để đồng thời giải mã và mã hoá Thông điệp chỉ có thể được giải mã bằng khoá mã công cộng nếu thông điệp ấy được mã hoá bằng khoá mã cá nhân tương ứng
Cụ thể: đối tượng B có thể mã hoá thông điệp bằng mã khoá cá nhân rồi gửi cho A,
A nhận được và giải mã bằng khoá mã công khai của B Bằng cách sử dụng khoá
mã công khai của B, A có thể biết rằng thông điệp ấy đến từ B Hay nói cách khác
A có thể xác định được nguồn gốc của thông điệp ấy đến từ B bởi vì chỉ B là người biết khoá mã cá nhân của anh ta
Khi A muốn chỉ có B mới được quyền đọc trả lời của A, A có thể mã hoá thông điệp trả lời bằng khoá mã công khai của B Chỉ có B mới có thể giải mã được thông điệp vì B là người duy nhất có khoá mã cá nhân tương ứng với khoá mã công khai
Trang 25mà A dùng
A cũng có thể mã hoá thông điệp trả lời cho B bằng mã khoá cá nhân của A khi A muốn cho B biết thông điệp ấy đến từ A chứ không phải từ ai khác Nếu A mã hoá thông điệp trả lời bằng khoá mã công khai của B thì không thể xác thực được nguồn gốc của thông tin bởi vì bất kỳ ai cũng có thể có khoá mã công khai của B Nếu A sử dụng khoá mã cá nhân để mã hoá thông điệp trả lời, B phải dùng khoá
mã công khai của A để giải mã và do đó B có thể biết chắc rằng thông điệp trả lời đến từ A chứ không phải từ ai khác
Nếu vấn đề bảo vệ tính riêng tư của thông tin là điều quan trọng nhất, người gửi có thể mã hoá thông điệp gửi đi bằng khoá mã công khai của người nhận Phương pháp này gọi là định dạng thông điệp an toàn (secure message format) [6], khi đó chỉ có người nhận với mã khoá cá nhân tương ứng mới có thể giải mã được thông điệp ấy Gọi khoá mã công khai của người gửi là PubA, khoá mã cá nhân của người gửi là PriA, còn gọi khoá mã công khai của người nhận là PubB và khoá mã cá nhân của người nhận là PriB, ta có thể biểu diễn quá trình này dưới dạng toán học như sau:
Người gửi: EPubB M C
Người nhận: DPriB C M
Nếu vấn đề xác thực nguồn gốc của thông tin là điều quan trọng nhất, người gửi có thể mã hoá thông điệp gửi đi bằng khoá mã cá nhân của anh ta Người nhận sử dụng khoá mã công khai của người gửi để giải mã thông tin và đồng thời biết được nguồn gốc của thông tin đó Phương pháp này được gọi là định dạng thông điệp mở (open message format) do bất kỳ người nào có khoá mã công khai của người gửi đều có thể giải mã được thông tin, cũng chính vì vậy phương pháp này không cung cấp khả năng bảo vệ tính riêng tư của thông tin Ta có thể biểu diễn quá trình này dưới dạng toán học như sau:
Người gửi: EPriA M C
Người nhận: D C M
Trang 26Đối với những thông điệp vừa cần có tính riêng tư vừa cần có khả năng xác thực nguồn gốc (secure and signed format), người gửi có thể mã hoá thông điệp cần gửi
đi bằng khoá mã cá nhân của anh ta rồi mã hoá thêm một lần nữa với khoá mã công khai của người nhận Người nhận phải giải mã thông điệp bằng mã khoá cá nhân của mình rồi sau đó sử dụng khoá mã công khai của người gửi để giải mã tiếp Phương pháp này vừa đảm bảo xác thực nguồn gốc của thông tin đồng thời đảm bảo tính riêng tư của thông tin Ta có thể biểu diễn quá trình này dưới dạng toán học như sau:
Người gửi: EPubBEPriA M C
Người nhận: DPubADPriB C M
Hình 2.3 [2] bên dưới minh hoạ các phương thức mã hoá khác nhau trong hệ thống
Trang 27đều có thể dùng để mã hoá và giải mã Nếu dữ liệu được mã hoá bằng khoá mã cá nhân, nó phải được giải mã bằng khoá mã công khai tương ứng Nếu dữ liệu được
mã hoá bằng khoá mã công khai, nó phải được giải mã bằng khoá mã cá nhân tương ứng
Hệ thống mã hoá bất đối xứng làm việc chậm hơn rất nhiều so với hệ thống mã hoá đối xứng Tuy nhiên hệ thống mã hoá bất đối xứng cho phép đảm bảo an toàn dữ liệu, xác thực nguồn gốc của dữ liệu và chống phủ nhận thông tin Hệ thống mã hoá bất đối xứng cũng cho phép quản lý và phân phát khoá mã dễ dàng hơn so với hệ thống mã hoá đối xứng; đồng thời không gặp phải vấn đề về tính khả mở để phát triển như trong các hệ thống mã hoá đối xứng [6]
Hình 2.4: Bảo vệ và xác định nguồn gốc thông tin bằng cách mã hoá hai lần
với khoá mã của người gửi và người nhận
Một số ưu nhược điểm của hệ thống mã hoá bất đối xứng
Ưu điểm:
- Quản lý phân phát khoá mã tốt hơn so với hệ thống mã hoá đối xứng
- Có khả năng mở rộng phát triển tốt hơn so với hệ thống mã hoá đối xứng
- Có khả năng bảo vệ an toàn dữ liệu, xác thực nguồn gốc và chống phủ nhận thông tin
Nhược điểm:
Trang 28- Làm việc chậm hơn rất nhiều so với các hệ thống mã hoá đối xứng
Một số thuật toán mã hoá làm việc theo mô hình mã hoá bất đối xứng:
- RSA
- Elliptic Curve Cryptosystem (ECC)
- Diffie-Hellman
- El Gamal
- Digital Signature Standard (DSS)
Các thuật toán này sẽ được trình bày chi tiết hơn trong phần các thuật toán mã hoá bất đối xứng
2.3 Mã hoá thông tin theo luồng và mã hoá thông
tin theo khối (Stream and Block Ciphers)
Có hai phương pháp chính được sử dụng trong các thuật toán mã hoá đối xứng là
mã hoá theo luồng thông tin và mã hoá theo khối [2] Mã hoá thông tin theo khối làm việc với các khối dữ liệu plaintext và ciphertext còn mã hoá theo luồng làm việc với luồng dữ liệu plaintext và ciphertext, theo từng bit hoặc từng byte
2.3.1 Mã hoá theo khối
Khi sử dụng thuật toán mã hoá theo khối để mã hoá và giải mã, thông tin được chia thành từng khối theo đơn vị bit Các khối thông tin này sau đó được đưa vào mã hoá thông qua các phép gán (substitution), chuyển vị (transsposition) và các hàm toán học khác [2] Thuật toán sẽ gọi tất cả các hàm phải thực hiện trên khối dữ liệu, kiểm tra khoá mã rồi xác định thứ tự thực hiện các hàm
Phương pháp mã hoá theo khối có hai thuộc tính là: hỗn loạn và khuếch tán Thuật toán sử dụng các giá trị khoá mã khác nhau không thể đoán trước được tạo ra sự hỗn loạn, bên cạnh đó thuật toán còn chèn thêm các bit ngẫu nhiên vào dữ liệu và biến đổi qua rất nhiều hàm toán học khác nhau nên các giá trị bit trong plaintext bị phân tán
Trang 29Hình 2.5 minh hoạ một thuật toán mã hoá theo khối đơn giản với 16 đường vào, mỗi đường vào ứng với 1 bit [4] Thuật toán này gồm hai lớp các hộp S-box 4 bit Mỗi hộp S-box này chứa một bảng tra cứu dùng để chỉ dẫn cách mà các bit được dịch chuyển hoặc hoán vị Khoá mã được sử dụng trong quá trình mã hoá dùng để
ra lệnh S-box nào được sử dụng và sử dụng theo thứ tự nào
Hình 2.5: Trong thuật toán mã hoá block cipher, dữ liệu được chia thành từng khối bit, các hàm toán học được thực hiện trên các khối này
Mỗi một S-box có thể có những hàm toán học, công thức và các phương pháp khác nhau khi thao tác trên từng bit riêng lẻ Khoá mã tạo ra sự hỗn loạn bởi vì kẻ tấn công không thể biết được S-box nào sẽ được sử dụng trong quá trình mã hoá và tất
cả các phép hoán vị trên các bit là khuếch tán bởi vì các bit được dịch chuyển giữa các S-box khác nhau và được đưa vào trong các quá trình xáo trộn thông tin
Trong ví dụ này chỉ có hai hàng S-box thực hiện việc mã hoá dữ liệu Đây là một ví
dụ rất đơn giản Phần lớn các thuật toán mã hoá theo khối làm việc với các khối dữ liệu 64 bits và có rất nhiều S-box tham gia vào quá trình mã hoá Bên cạnh đó, hệ thống mã theo khối sử dụng các giá trị khoá mã ngẫu nhiên nên kẻ tấn công rất khó
có thể xác định S-box nào được sử dụng
Trang 302.3.2 Mã hoá theo luồng dữ liệu (Stream Cipher)
Như đã đề cập ở trên, thuật toán mã hoá theo khối tiến hành thực hiện các hàm toán học trên các khối dữ liệu Thuật toán mã hoá theo luồng thông tin (stream cipher) không chia thông tin thành từng khối như vậy mà coi thông tin là một luồng các bit hoặc byte và tiến hành thực hiện các phép toán trên các bit hoặc byte đó
Trong thuật toán mã hoá theo luồng, tại mỗi lần mã hoá khác nhau, các bit hoặc byte có thể được biến đổi thành giá trị khác nhau Một số thuật toán sử dụng bộ tạo chuỗi khoá (keystream generator) để tạo ra các chuỗi bit và so sánh tuyệt đối (XOR) với các bit dữ liệu plaintext để tạo ra thông tin mã hoá Hình 2.6 bên dưới minh hoạ quá trình này [4]
Hình 2.6: Giá đầu ra của bộ tạo chuỗi khoá được so sánh tuyệt đối với các bit của dữ liệu plaintext
Nếu hệ thống mã hoá chỉ đơn thuần phụ thuộc vào bộ tạo chuỗi khoá thì kẻ tấn công có thể copy thông tin dưới dạng plaintext đem so sánh tuyệt đối với thông tin
mã hóa thu được để tìm ra chuỗi khoá và từ đó giải mã các thông tin khác Do đó cần phải bổ sung thêm khoá mã cho thuật toán
Trong thuật toán mã hoá thông tin theo khối, nhiêm vụ của khoá mã là xác định hàm nào sẽ được sử dụng và sử dụng theo tuần tự nào Có nghĩa khoá mã làm nhiệm vụ cung cấp tính ngẫu nhiên cho tiến trình mã hoá Như đã đề cập ở trên, phần lớn các thuật toán đều được công khai do đó mọi người đều có thể nắm được nguyên lý làm việc của thuật toán Điều bí mật ở đây chính là khoá mã Trong hệ
Trang 31thống mã hoá thông tin theo luồng, khoá mã cũng làm nhiệm vụ cung cấp tính ngẫu nhiên, nhưng áp dụng cho chuỗi khoá làm việc với luồng thông tin Khoá mã là một giá ngẫu nhiên được đưa vào thuật toán để tạo ra một chuỗi mã, đảm bảo tính ngẫu nhiên của chuỗi mã được tạo ra Hình 2.7 bên dưới minh hoạ quá trình này
Hình 2.7: Khoá mã dùng để tạo ra các chuỗi khoá ngẫu nhiên
trong quá trình mã hoá và giải mã
Độ an toàn và tính hiệu quả của thuật toán mã hoá thông tin theo luồng gồm các đặc tính:
- Chu kỳ dài, không có sự lặp lại về kiểu trong giá trị chuỗi khoá
- Chuỗi khoá không quan hệ tuyến tính với khoá mã
- Không thể dự đoán thống kê (do số lượng bit 0 luôn tương đương bit 1)
Do thuật toán mã hoá theo luồng thực hiện việc mã hoá và giải mã lần lượt từng bit theo thời gian nên thuật toán này rất phù hợp để phát triển các phần cứng [6] Thuật toán mã hoá thông tin theo khối thường phù hợp với việc triển khai ứng dụng cho phần mềm hơn bởi vì thuật toán này làm việc với các khối dữ liệu - cách mà các phần mềm thường làm (thông thường các khối có độ lớn bằng độ rộng của bus dữ liệu - 64 bit) [4]
2.4 Một số thuật toán mã hoá đối xứng đƣợc công
khai phổ biến
Hiện nay có rất nhiều thuật toán mã hoá đối xứng được sử dụng công khai, các thuật toán này có những cơ chế khác nhau để cung cấp khả năng mã hoá và giải mã
Trang 322.4.1 Data Encryption Standard (DES)
Data Encryption Standard (DES) là một thuật toán có bề dày lịch sử rất phong phú
trong lĩnh vực máy tính Trong những năm 1960, Viện tiêu chuẩn và công nghệ quốc gia Hoa kỳ (NIST) nghiên cứu nhu cầu bảo vệ hệ thống máy tính và khởi xướng một chương trình mã hoá vào đầu những năm 1970 NIST mời các đối tác
đề xuất các kỹ thuật mã hoá dữ liệu nhằm xây dựng một tiêu chuẩn mã hoá phổ biến Thời điểm đó, IBM đã phát triển một thuật toán mã hoá dùng để bảo vệ các giao dịch tài chính Năm 1974, thuật toán mã hoá sử dụng khoá mã 128 bit của IBM có tên Lucifer được đệ trình và được chấp thuận Có rất nhiều tranh cãi xung quanh vấn đề đưa thuật toán Lucifer vào sử dụng, nhưng cuối cùng, năm 1977 Lucifer cũng trở thành một chuẩn mã hoá quốc gia Hoa kỳ và trở thành một chuẩn ANSI vào năm 1978 [6]
DES là thuật toán mã hoá hiện đại đầu tiên dùng trong thương mại đã công khai toàn bộ mọi chi tiết thực hiện bên trong DES được phát triển phần lớn trong các sản phẩm thương mại và trong phần lớn các cơ quan chính phủ Thuật toán DES đã được kiểm tra và được công nhận là một trong những thuật toán mạnh nhất và hiệu quả nhất Việc không tiếp tục hỗ trợ thuật toán DES cũng là nguyên nhân gây ra nhiều tranh cãi nhất khi vào năm 1986, NSA thông báo kể từ tháng 1 năm 1988 tất
cả các cơ quan chính phủ không được sử dụng thuật toán nữa, và các sản phẩm dựa trên DES sẽ không còn đáp ứng tiêu chuẩn 1027 trong bộ tiêu chuẩn của Liên bang Hoa kỳ NSA cho rằng thuật toán DES đã quá phổ biến trong một thời gian dài nên
nó chắc chắn là mục tiêu tấn công và trở nên vô ích nếu sử dụng như một tiêu chuẩn chính thức Rất nhiều nhà nghiên cứu không tán thành nhưng NSA muốn có một tiêu chuẩn mới hơn, an toàn hơn và ít phổ biến hơn
Quyết định của NSA gây ra rất nhiều tranh cãi và phản ứng tiêu cực bởi vì tại thời điểm đó, DES vẫn cung cấp các tính năng bảo mật cần thiết, các máy tính tại thời điểm đó cần hàng nghìn năm mới phá mã được; ngoài ra DES đã được tích hợp vào trong hàng nghìn sản phẩm và chưa có thuật toán nào thay thế cho DES NSA cân nhắc lại quyết định của mình và NIST quyết định tiếp tục chấp nhận DES thêm năm năm nữa
Trang 33Năm 1998, hãng Electronic Frontier Foundation chế tạo một hệ thống máy tính trị giá 250,000 đô la và phá mã DES trong vòng ba ngày [6] Chiếc máy tính đó gồm 1,536 bộ vi xử lý chạy ở tốc độ 40MHz, mỗi bộ vi xử lý có thể thực hiện 60 triệu phép giải mã trong vòng 1 giây Mặc dù hầu hết mọi người không thể có những hệ thống máy tính như vậy để phá mã DES, nhưng khi định luật Moore thành sự thật, sức mạnh của bộ vi xử lý tăng lên thì các kẻ tấn công có khả năng tài chính ở mức trung bình cũng có thể phá mã DES Điều này làm cho thuật toán 3DES ra đời Thuật toán 3DES mạnh hơn bằng cách thực hiện mã hoá, giải mã rồi lại mã hoá thông tin với các khoá mã khác nhau
Sau này tiêu chuẩn mã hoá DES đã được NIST thay thế bằng tiêu chuẩn Advanced
Encryption Standard (AES) với thuật toán Rijndael Điều này có nghĩa là Rijndael
là một thuật toán mới được phê chuẩn để mã hoá các thông tin nhạy cảm (chưa phải
là bí mật) của Chính phủ Mỹ và thuật toán này sẽ dần được chấp thuận sử dụng công khai, rộng rãi
Cơ chế hoạt động của DES [4]
Thiết kế của DES liên quan tới hai khái niệm đó là: Product cipher và Feistel cipher Cả hai bao gồm việc lặp đi lặp lại một dãy các thao tác
Ý tưởng cơ bản của một product cipher là xây dựng một hàm mã hoá phức tạp bằng cách kết hợp vài giải thuật đơn giản bổ sung các thiếu sót lẫn nhau Các giải thuật
cơ bản bao gồm: các phương pháp hoán vị, tịnh tiến (ví dụ như XOR) các phép ánh
xạ tuyến tính, các biến đổi số học, nhân modun, các phép thay thế đơn giản
Một Product cipher là sự kết hợp hai hay nhiều hơn các phép biến đổi nhằm mục đích có được một phép mã hoá an toàn hơn
Một mạng thay thế-hoán vị (substitutation-permutation network hay SP network) là một product cipher bao gồm một số các tầng, mỗi tầng bao gồm các thay thế và hoán vị
Nhiều mạng thay thế-hoán vị là các phép mã hoá lặp theo định nghĩa: Một mã hoá theo khối lặp là một mã hoá theo khối bao hàm việc lặp lại có thứ tự một hàm nội tại gọi là hàm vòng Các tham số bao gồm số vòng lặp, kích thước khối n được tính
Trang 34bằng bit, kích thước k từ đó rút ra r khoá con K i…
Hình 2.8: Một mạng thay thế
Một Feistel cipher là một mã hoá lặp, ánh xạ một tài liệu gốc 2t bit (L0,R0) với các khối t bit L0, R0 thành một văn bản được mã hoá (Rr,Lr) qua 1 quá trình r vòng trong đó r 1 Với 1 ir, vòng thứ i ánh xạ (L i1,R i1)K i (L i,R i) như sau:
1
L , R i L i1 f(R i1,K i) trong đó mỗi khoá con Ki được rút ra từ khoá mã K
Theo chuẩn của Feistel cipher, r 3 và thường là số chẵn [4] Cấu trúc của Feistel bắt buộc mã hoá đầu ra là (R r,L r) chứ không phải là (L r,R r); các khối được đổi chỗ ban đầu của chúng sau vòng cuối cùng Việc giải mã vì vậy cũng sử dụng 1 quá
trình r vòng nhưng với các khoá con K i theo thứ tự ngược lại, từ K r đến K 1 Hàm f trong Feistel cipher có thể là một product cipher, mặc dù f không nhất thiết phải là
khả đảo để cho phép đảo nghịch trong mã hoá Feistel
DES là một giải thuật mã hoá đối xứng sử dụng phương pháp mã hoá thông tin theo khối Một khối thông tin plaintext 64 bit đi vào sẽ tạo ra một khối thông tin ciphertext 64 bit Giải thuật DES sử dụng một khoá mã 64 bit trong đó 56 bit là các khoá mã thật còn 8 bit (các bit 8, 16, …, 64) là bit kiểm tra chẵn lẻ
Khi tiến hành mã hoá dữ liệu, DES chia dữ liệu thành các khối 64 bit và tiến hành thao tác lần lượt từng khối Mỗi khối được chia làm 32 bit thấp và 32 bit cao, rồi được đưa qua 16 vòng thực hiện các hàm hoán vị, thay thế Thứ tự thực hiện các hàm hoán vị, thay thế phụ thuộc vào giá trị khoá mã đưa vào thuật toán
Kết quả thu được là một khối ciphertext 64 bit
Trang 35Hình 2.9: Sơ đồ khối thực hiện giải thuật DES
Các thuật toán mã hoá theo khối có các chế độ điều khiển mã hoá khác nhau Các chế độ này sẽ xác định cách thức làm việc của thuật toán Mỗi chế độ có các đặc tính khác nhau và làm việc tốt trong một môi trường với các chức năng nhất định Điều này rất quan trọng khi triển khai hệ thống mã hoá DES
DES có bốn chế độ hoạt động cơ bản được sử dụng trong các hoàn cảnh khác nhau
và cho những kết quả khác nhau
Chế độ Electronic Code Book (ECB)
Đây là phương pháp mã hoá nguyên thuỷ của DES và có cơ chế hoạt động như một
Trang 36cuốn sổ chứa các ký hiệu điện tín (code book) Khi một khối dữ liệu 64 bit và khoá
mã được đưa vào thuật toán sẽ tạo ra một khối ciphertext Với cùng một khối dữ liệu đưa vào và với cùng một giá trị khoá mã, giải thuật DES làm việc trong chế độ ECB luôn cho ra các ciphertext giống nhau Không phải khối dữ liệu nào cũng có đầy đủ 64 bit, do đó ECB phải kết hợp với bộ đệm (padding) chèn thêm các bit vô nghĩa để tạo ra các khối thông tin 64 bit Chế độ hoạt động này thường làm việc với
dữ liệu có kích thước nhỏ như để mã hoá và bảo vệ các khoá mã
Mỗi một khoá mã có một code book riêng Code book cung cấp quy tắc tiến hành các phép thay thế và hoán vị thực hiện trên khối dữ liệu plaintext Do chế độ ECB làm việc độc lập với các khối dữ liệu khác nhau nên dữ liệu trong một file không cần phải mã hoá theo một trật tự xác định Điều này rất hữu ích khi mã hoá các cơ
sở dữ liệu Một cơ sở dữ liệu chứa rất nhiều các phân mảnh dữ liệu do đó nếu được
mã hoá theo chế độ ECB, tất cả các bản ghi, bảng biểu có thể được thêm vào, mã hoá, giải mã và xoá bỏ mà không hề ảnh hưởng đến các bản ghi và bảng biểu khác Các chế độ hoạt động khác của DES phụ thuộc vào thông tin được mã hoá trước đó nên rất khó có thể mã hoá và giải mã các khối thông tin nhỏ bởi vì trước tiên cần phải giải mã các khối thông tin kế trước Chế độ mã hoá ECB này cũng được dùng trong một số ứng dụng kiểu challenge-response và trong một số ứng dụng quản ký khoá mã Chế độ mã hoá ECB cũng được dùng để mã hoá mã số cá nhân (PIN) trong các hệ thống rút tiền tự động (ATM) của các ngân hàng
Chế độ Cipher Block Chaining (CBC)
Trong chế độ ECB, mỗi khối dữ liệu plaintext và khóa mã luôn trả về một giá trị ciphertext duy nhất Điều đó có nghĩa nếu từ “balloon” được mã hoá thành
“hwicssn” thì mã hoá tại thời điểm bất kỳ thời điểm nào với cùng khoá mã ấy kết quả không bao giờ thay đổi Điều này có nghĩa là chế độ ECB mã hoá theo một khuôn mẫu định sẵn và nếu kẻ tấn công cố gắng thì có thể sẽ tìm hiểu được tiến trình mã hoá Chế độ mã hoá CBC không tuân theo một khuôn mẫu định sẵn do các khối thông tin, khoá mã và giá trị đầu ra luôn phụ thuộc vào các đầu ra của khối kề trước trong thuật toán; và giá trị thu được cũng được dùng để mã hoá khối tiếp theo Cơ chế này cho phép kết quả thu được bởi quá trình mã hoá ngẫu nhiên hơn
Trang 37Hình 2.10: Trong chế độ CBC, ciphertext thu được dùng để mã hoá khối thông tin tiếp theo
Giá trị ciphertext được tách ra và so sánh tuyệt đối với plaintext của khối tiếp theo làm cho các khối trong thuật toán phụ thuộc vào nhau hay nói cách khác các khối
dữ liệu được móc nối với nhau tạo thành một chuỗi mắt xích Đấy cũng là lý do chế
độ này có tên là mã hoá theo khối liên kết (CBC), sự liên kết này giúp cho thuật toán giấu được khuôn mẫu của mình Cơ chế này có thể biểu diễn dưới dạng biểu thức toán học như sau:
P 1
Việc các khối dữ liệu plaintext phụ thuộc vào khối mã hoá ciphertext trước đó cũng
có nghĩa là khối dữ liệu plaintext phụ thuộc vào tất cả các khối dữ liệu trước đó
Chế độ mã hoá Cipher Feedback (CFB)
Chế độ mã hoá CBC chỉ có thể tiến hành được khi thuật toán nhận đầy đủ các khối thông tin Đây là một diều trở ngại cho một số ứng dụng ví dụ như các ứng dụng dạng terminal cần phải truyền đi các ký tự ngay khi ký tự đó được nhập vào Cơ chế mã hoá CFB cho phép khắc phục được điều này Trong chế độ này, giá trị ciphertext tạo ra từ khối thông tin được mã hoá trước đó được đưa ngược vào thuật toán để tạo ra các giá trị ngẫu nhiên Các giá trị ngẫu nhiên này được kết hợp với các khối thông tin hiện thời để tạo ra thông tin mã hoá ciphertext Đây là một hình thức khác của cơ chế mã hoá theo khối liên kết, tuy nhiên khác với cơ chế CBC sử dụng trực tiếp giá trị ciphertext của khối trước đó, cơ chế CFB biến đổi giá trị
Trang 38ciphertext trước đó rồi mới so sánh tuyệt đối với giá trị plaintext trong khối hiện tại Quá trình này có thể biểu diễn dưới dạng biểu thức toán học như sau:
Chế độ mã hoá Output Feedback (OFB)
Chế độ mã hoá này rất giống với chế độ mã hoá CFB, nhưng nếu DES làm việc trong chế độ OFB, thuật toán sẽ có chức năng như một thuật toán mã hoá theo luồng bởi vì OFB tạo ra một chuỗi bit ngẫu nhiên kết hợp với plaintext để tạo ra ciphertext Ciphertext này được đưa ngược trở lại thuật toán tạo ra một đầu vào cho khối tiếp theo để mã hoá luồng bit kế tiếp
Như đã đề cập trong các phần trước, phương pháp mã hoá theo khối làm việc trên các khối dữ liệu còn phương pháp mã hoá theo luồng làm việc trên các luồng dữ liệu Phương pháp mã hoá theo luồng sử dụng các chuỗi khoá để tạo ra sự ngẫu nhiên để mã hoá dữ liệu, còn phương pháp mã hoá theo khối sử dụng các khối S-box để mã hoá dữ liệu Trong chế độ OFB, các khối thông tin của DES được truyền
đi qua các bộ mã hoá khối, các bộ mã hoá luồng và sử dụng các chuỗi khoá để mã hoá và giải mã thông tin Dạng biểu thức toán học của phương pháp này như sau:
Trang 392.4.2 Thuật toán mã hoá 3DES [7]
Gần đây, với sự phát triển mạnh của máy tính, thuật toán DES đã bị phá vỡ khiến cho thuật toán DES không còn thực sự an toàn Chính vì lí do đó thuật toán 3DES
đã ra đời và được rất nhiều tổ chức tài chính, ngân hàng sử dụng dụng làm chuẩn
mã hoá thay thế cho DES
Thuật toán 3DES cho phép tăng kích thước của khoá mã (điểm yếu duy nhất của DES từ trước đến nay lên thành 112 bit (tương ứng với 5.19x1033 trường hợp) và thậm chí lên 168 bit (3.74x1050 trường hợp)
Hình 2.12: Cơ chế hoạt động của thuật toán 3DES
Thuật toán 3DES sử dụng 3 khoá mã 56 bit của DES vào trong 3 tiến trình Tiến trình đầu tiên sử dụng khoá mã k1 để mã hoá, sau đó sử dụng khoá mã k2 để giải
mã Ciphertext tạo ra được đem mã hoá bằng khoá mã k3 để tạo ra ciphertext cuối cùng
Khi sử dụng từ khoá có độ dài 112 bit thì khoá mã k1 = k3
Khi khoá mã k1 = k2 = k3 thì thuật toán 3DES trở thành dạng thuật DES thông thường Điều này cũng có nghĩa là thuật toán 3DES có tính tương thích ngược đối với thuật toán DES
Khi khoá mã k1 ≠ k2 ≠ k3 thì ta có thuật toán 3DES với khoá mã dài 156 bit
Thuật toán 3DES sử dụng 48 vòng tính toán (3 x 16) cho phép chống phá mã cao hơn khoảng 256 lần so với thuật toán DES Tuy nhiên cũng vì vậy mà thuật toán 3DES thực hiện mã hoá lâu hơn khoảng 3 lần so thuật toán DES
2.4.3 Advanced Encryption Standard (AES) [6]
Sau khi DES được chọn làm tiêu chuẩn mã hoá và sử dụng phổ biến trên 20 năm
Trang 40qua, với sự phát triển vượt bậc về tốc độ xử lý của máy tính, thuật toán DES đã có thể bị phá vỡ trong một khoảng thời gian ngắn Chính vì vậy NIST đã quyết định sử dụng thuật toán AES để thay thế DES Quyết định được đưa ra vào tháng 1 năm
1997 Các thuật toán AES là các thuật toán mã hoá đối xứng dạng mã hoá theo khối
sử dụng khoá mã có độ dài 128, 192 và 256 bit 5 thuật toán được NIST đưa vào xem xét bao gồm:
- MARS phát triển bởi đội ngũ IBM đã từng phát triển thuật toán Lucifer
- RC6 phát triển bởi phòng thí nghiệm RSA
- Serpent phát triển bởi Ross Anderson, Eli Biham, và Lars Knudsen
- Twofish phát triển bởi Counterpane Systems
- Rijndael phá triển bởi Joan Daemon và Vincent Rijmen
Cuối cùng thuật toán Rijndael đã được NIST lựa chọn để thay thế cho thuật toán DES Thuật toán này được sử dụng để bảo vệ các thông tin nhạy cảm nhưng chưa phải là tối mật của chính phủ Mỹ
Serpent
Serpent là một thuật toán hiện đại sử dụng khối thông tin 128 bit và các khoá mã có
độ dài 256 bit để tính toán và chọn ra một khoá mã có độ dài thích hợp Serpent được phát triển bởi Ross Anderson, Eli Biham, Lars Knudsen và là một trong 5 thuật toán được NIST xem xét để trở thành tiêu chuẩn AES Serpent được thiết kế theo nguyên lý tương tự với dạng BitSlice của thuật toán DES và cho phép mã hoá mạnh hơn 3DES với tốc độ tương đương với thuật toán DES thông thường Theo thiết kế, Serpent có thể làm việc tốt với các bộ xử lý 1 bit hoặc lớn hơn, Serpent cũng có thể dễ dàng song song hoá để làm việc với các hệ thống đa chip xử lý đối xứng (SMP) - một cấu trúc rất phổ biến trong các hệ thống máy tính lớn, các hệ thống VPU hoặc các hệ thống chip đa lõi Serpent hiện ít được sử dụng mặc dù thuật toán này còn mạnh hơn một chút so với thuật toán được chọn làm AES Một
dự án tiềm năng đang được triển khai để tối ưu hoá của Serpent trên các hệ thống VPU hoặc SMP và có thể sánh ngang tốc độ với sự hiệu quả của việc triển khai AES trên cùng một nền tảng hệ thống Không giống như DES, 3DES, Serpent được