Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng ngày càng phổ biến trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự, quốc phòng cho đến c
Trang 1ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
NGUYỄN QUANG TRUNG
HỆ MÃ HÓA ĐỐI XỨNG VÀ ỨNG DỤNG
TRONG VẤN ĐỀ BẢO MẬT TÀI LIỆU
TẠI TRUNG TÂM KỸ THUẬT TÀI LIỆU NGHIỆP VỤ
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
THÁI NGUYÊN, 2017
Trang 2ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
NGUYỄN QUANG TRUNG
HỆ MÃ HÓA ĐỐI XỨNG VÀ ỨNG DỤNG
TRONG VẤN ĐỀ BẢO MẬT TÀI LIỆU
TẠI TRUNG TÂM KỸ THUẬT TÀI LIỆU NGHIỆP VỤ
Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Người hướng dẫn khoa học: TS VŨ VINH QUANG
THÁI NGUYÊN, 2017
Trang 3LỜI CAM ĐOAN
Sau quá trình học tập tại Trường Đại học công nghệ thông tin & truyền thông,
với những kiến thức lý thuyết và thực hành đã tích lũy được, với việc vận dụng các kiến thức vào thực tế, em đã tự nghiên cứu các tài liệu, các công trình nghiên cứu, đồng thời
có sự phân tích, tổng hợp, đúc kết và phát triển để hoàn thành luận văn thạc sĩ của mình
Em xin cam đoan luận văn này là công trình do bản thân em tự tìm hiểu, nghiên cứu
và hoàn thành dưới sự hướng dẫn của thầy giáo TS Vũ Vinh Quang
Thái Nguyên, tháng 5 năm 2017
Học viên
Nguyễn Quang Trung
Trang 4MỤC LỤC
LỜI CAM ĐOAN ii
MỤC LỤC iii
DANH MỤC CÁC KÍ HIỆU, CHỮ VIẾT TẮT v
DANH MỤC CÁC BẢNG BIỂU vi
DANH MỤC CÁC HÌNH VẼ vii
LỜI NÓI ĐẦU 1
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN VỀ AN TOÀN BẢO MẬT THÔNG TIN 2 1.1 Tổng quan về an toàn và bảo mật thông tin 2
1.1.1 Khái niệm chung 2
1.1.2 Mục tiêu của an toàn bảo mật thông tin 3
1.1.3 Các chiến lược an toàn hệ thống 4
1.2 Các kiến thức cơ bản về hệ mật mã 5
1.2.1 Khái niệm chung 5
1.2.2 Các thành phần của một hệ mật mã 6
1.2.3 Quy trình mã hóa và giải mã 7
1.2.4 Phân loại hệ thống mã hóa 8
1.2.5 Các đặc trưng của hệ thống mã hoá 12
1.2.6 Thám mã và tính an toàn của các hệ mã 13
1.3 Cơ sở toán học về mã hóa 16
1.3.1 Các thuật toán trong Z 17
1.3.2 Thuật toán Euclide 17
1.3.3 Khái niệm về hàm Euler 18
1.3.4 Khái niệm về đồng dư thức 19
1.3.5 Khái niệm về số nghịch đảo 21
1.3.6 Định lý phần dư China CRT (Chinese Remainder Theorem) 21
1.3.7 Các thuật toán trong Zn 22
1.3.8 Thuật toán 22
CHƯƠNG 2: MỘT SỐ HỆ MÃ HÓA ĐỐI XỨNG 23
2.1 Giới thiệu 23
2.2 Quá trình mã hóa và giải mã 25
Trang 52.3 Một số hệ mã hóa đối xứng 25
2.3.1 Hệ mã Caesar 25
2.3.2 Hệ mã mật Hill 25
2.3.3 Hệ mã Affine 26
2.3.4 Hệ mã Vigenère 28
2.3.5 Phương pháp mã hóa khối 29
2.4 Hệ mã DES 30
2.4.1 Sơ đồ mã hóa 30
2.4.2 Thuật toán mã hóa Triple DES 34
2.4.3 Thuật toán mã hóa AES 36
2.5 Mật mã dòng 43
CHƯƠNG 3: MỘT SỐ KẾT QUẢ ỨNG DỤNG 46
3.1 Vấn đề bảo mật tài liệu tại trung tâm kỹ thuật tài liệu nghiệp vụ 46
3.2 Mô tả dữ liệu thử nghiệm 47
3.3 Môi trường thử nghiệm và một số giao diện 47
3.3.1 Môi trường thử nghiệm 47
3.4 Kịch bản thử nghiệm và kết quả 48
3.4.1 Tốc độ mã hóa theo số lượng dữ liệu 48
3.4.2 Tốc độ giải mã theo số lượng dữ liệu 49
3.4.3 Tốc độ mã hóa theo các chế độ mã hóa 50
3.4.4 Tốc độ mã hóa theo kích thước khóa 51
KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU 52
TÀI LIỆU THAM KHẢO 53
PHỤ LỤC 54
Trang 6DANH MỤC CÁC KÍ HIỆU, CHỮ VIẾT TẮT
1 AES Advanced Encryption
Chế độ mã hóa của AES khi mã hóa
sử dụng cả key và kết quả của block trước làm tham số
3 DES Data Encryption
Standard
Chuẩn mã hóa dữ liệu
ECB Electronic Code
Triple DES DES bội ba
7 TTP Trusted Third Party Đơn vị thứ ba tin cậy
8 UCLN Ước Chung Lớn Nhất
Trang 7DANH MỤC CÁC BẢNG BIỂU
Bảng 1 1 Quan hệ giữa độ dài khoá và thời gian dò khoá 15
Bảng 2 1 Các thông số chính của AES 36
Bảng 3 1 Bộ dữ liệu thử nghiệm thuật toán AES 47
Bảng 3 2 Bảng kết quả đo tốc độ mã hóa theo số lượng dữ liệu (giây) 48
Bảng 3 3 Bảng kết quả đo tốc độ giải mã theo số lượng dữ liệu (giây) 49
Bảng 3 4 Bảng kết quả đo tốc độ mã hóa theo chế độ mã hóa (giây) 50
Bảng 3 5 Bảng kết quả đo tốc độ mã hóa theo kích thước khóa (giây) 51
Trang 8DANH MỤC CÁC HÌNH VẼ
Hình 1 1 Mã hoá với khoá mã và khoá giải giống nhau 7
Hình 1 2 Quy trình mã hóa và giải mã 7
Hình 1 3 Sơ đồ mã hóa và giải mã 8
Hình 1 4 Sơ đồ mã hóa và giải mã bằng khóa riêng 9
Hình 1 5 Sơ đồ mã hóa và giải mã bằng khóa công khai 10
Hình 2 1 Mô hình hệ thống mã hóa đối xứng 24
Hình 2 2 Hình vuông vigenère 29
Hình 2 3 Sơ đồ hệ mã des 31
Hình 2 4 DES bội hai (double des) 34
Hình 2 5 DES bội ba (triple des) dùng 2 khoá 35
Hình 2 6 Thuật toán mã aes 37
Hình 2 7 Quá trình biến đổi mảng trạng thái trong thuật toán aes 37
Hình 2 8 Ma trận thay thế byte (s-box) 39
Hình 2 9 Thao tác dịch dòng 40
Hình 2 10 Thuật toán mở rộng khoá của AES 42
Hình 3 1 Biểu đồ tốc độ mã hóa theo số lượng dữ liệu 48
Hình 3 2 Biểu đồ tốc độ tốc độ giải mã theo số lượng dữ liệu 49
Hình 3 3 Biểu đồ tốc độ mã hóa theo chế độ mã hóa 50
Hình 3 4 Biểu đồ tốc độ mã hóa theo kích thước khóa 51
Trang 9LỜI NÓI ĐẦU
Mã hóa là công cụ cơ bản của việc đảm bảo an toàn dữ liệu Thời kỳ sơ khai, con người đã sử dụng nhiều phương pháp để bảo vệ các thông tin bí mật Ban đầu, mật mã học được sử dụng phổ biến trong quân đội, qua nhiều cuộc chiến tranh, vai trò của mật
mã ngày càng quan trọng và mang lại nhiều thành quả không nhỏ, chúng là nền tảng cho mật mã học ngày nay
Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng ngày càng phổ biến trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự, quốc phòng cho đến các lĩnh vực dân sự như thương mại điện tử, ngân hàng… Với sự phát triển ngày càng nhanh chóng của Internet và các ứng dụng giao dịch điện tử trên mạng, nhu cầu bảo vệ thông tin trong các hệ thống và ứng dụng điện tử ngày càng được quan tâm và có ý nghĩa hết sức quan trọng Cùng với sự phát triển của khoa học máy tính, các nghiên cứu và ứng dụng của các chuẩn mã hóa ngày càng trở nên đa dạng hơn Hiện nay, có nhiều phương pháp mã hóa, mỗi phương pháp có ưu, nhược điểm riêng Tùy theo yêu cầu của môi trường ứng dụng mà người ta có thể dùng phương pháp này hay phương pháp kia Có những môi trường cần phải an toàn tuyệt đối bất kể thời gian
và chi phí Có những môi trường lại cần giải pháp “dung hòa” giữa bảo mật và chi phí Vấn đề bảo đảm an toàn cho các hệ thống thông tin là một trong những vấn đề quan trọng cần cân nhắc trong suốt quá trình thiết kế, thi công, vận hành và bảo dưỡng hệ thống thông tin
Các hệ thống mã hóa được chia thành hai loại: hệ mã hóa khóa đối xứng (việc giải
mã và mã hóa sử dụng chung một khóa) và hệ mã hóa công khai (mã hóa và giải mã dùng khóa khác nhau) Trong phạm vi luận văn của mình, tác giả tập trung vào nghiên cứu hệ mã hóa khoá đối xứng (mã hóa khóa bí mật), tập trung vào các thuật toán mã hóa
cổ điển, chuẩn mã hóa dữ liệu DES và chuẩn mã hoá nâng cao AES
Hệ mã hóa công khai có nhược điểm là tốc độ mã hóa và giải mã rất chậm, do vậy chỉ phù hợp sử dụng trong trao đổi khóa, trong khi đó hệ mã hóa đối xứng có tốc độ xử
lý nhanh hơn rất nhiều và phù hợp với nhu cầu xử lý số lượng lớn tài liệu Dựa trên thực
tế về yêu cầu mã hóa tại trung tâm kỹ thuật tài liệu nghiệp vụ có đặc điểm đa dạng về thể loại và số lượng Chính vì vậy tác giả đã lựa chọn nghiên cứu và ứng dụng giải pháp
mã hóa đối xứng cho bài toán thực tế nơi tác giả đang công tác
Trang 10CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN VỀ AN TOÀN BẢO MẬT
THÔNG TIN
Nội dung chính của chương 1 trình bày một số khái niệm cơ bản về vấn đề an toàn và bảo mật thông tin, khái niệm về hệ mật mã và cơ sở toán học về lý thuyết đồng dư Các yêu cầu chính của một hệ thống mã hóa, khái niệm về thám mã làm cơ
sở cho việc nghiên cứu các hệ mã hóa trong chương 2 Các kiến thức này được tham khảo trong các tài liệu [1, 2, 3, 4]
1.1 Tổng quan về an toàn và bảo mật thông tin
1.1.1 Khái niệm chung
Từ xưa đến nay thông tin luôn là yếu tố quan trọng trong các hoạt động của đời sống con người Trong thời đại ngày nay, các phương thức truyền đạt thông tin ngày càng đa dạng và phát triển Với sự ra đời của máy tính và mạng máy tính, việc trao đổi thông tin
đã trở lên dễ dàng hơn, nhanh chóng hơn, đa dạng hơn Nhưng kèm theo đó là các nguy
cơ xâm phạm thông tin cũng ngày càng tăng
Khi nhu cầu trao đổi thông tin dữ liệu ngày càng lớn và đa dạng, các tiến bộ về điện
tử - viễn thông và công nghệ thông tin không ngừng được phát triển ứng dụng để nâng cao chất lượng và lưu lượng truyền tin thì các quan niệm ý tưởng và biện pháp bảo vệ thông tin dữ liệu cũng được đổi mới Bảo vệ an toàn thông tin dữ liệu là một chủ đề rộng, có liên quan đến nhiều lĩnh vực và trong thực tế có thể có rất nhiều phương pháp được thực hiện để bảo vệ an toàn thông tin dữ liệu Các phương pháp bảo vệ an toàn thông tin dữ liệu có thể được tổng kết vào ba nhóm sau:
- Bảo vệ an toàn thông tin bằng các biện pháp hành chính
- Bảo vệ an toàn thông tin bằng các biện pháp kỹ thuật (phần cứng)
- Bảo vệ an toàn thông tin bằng các biện pháp thuật toán (phần mềm)
Ba nhóm trên có thể được ứng dụng riêng rẽ hoặc phối kết hợp Môi trường khó bảo
vệ an toàn thông tin nhất và cũng là môi trường đối phương dễ xâm nhập nhất đó là môi trường mạng và truyền tin Biện pháp hiệu quả nhất và kinh tế nhất hiện nay trên mạng truyền tin và mạng máy tính là biện pháp thuật toán
An toàn thông tin bao gồm các nội dung sau:
- Tính bí mật: tính kín đáo riêng tư của thông tin
Trang 11- Tính xác thực của thông tin, bao gồm xác thực đối tác (bài toán nhận danh), xác thực thông tin trao đổi
- Tính trách nhiệm: đảm bảo người gửi thông tin không thể thoái thác trách nhiệm
về thông tin mà mình đã gửi
Để đảm bảo an toàn thông tin dữ liệu trên đường truyền tin và trên mạng máy tính
có hiệu quả thì điều trước tiên là phải lường trước hoặc dự đoán trước các khả năng không an toàn, khả năng xâm phạm, các sự cố rủi ro có thể xảy ra đối với thông tin dữ liệu được lưu trữ và trao đổi trên đường truyền tin cũng như trên mạng Xác định càng chính xác các nguy cơ nói trên thì càng quyết định được tốt các giải pháp để giảm thiểu các thiệt hại
Có hai loại hành vi xâm phạm thông tin dữ liệu đó là: vi phạm chủ động và vi phạm thụ động Vi phạm thụ động chỉ nhằm mục đích cuối cùng là nắm bắt được thông tin (đánh cắp thông tin) Việc làm đó có khi không biết được nội dung cụ thể nhưng có thể
dò ra được người gửi, người nhận nhờ thông tin điều khiển giao thức chứa trong phần đầu các gói tin Người xâm nhập có thể kiểm tra được số lượng, độ dài và tần số trao đổi Vì vậy vi pham thụ động không làm sai lệch hoặc hủy hoại nội dung thông tin dữ liệu được trao đổi Vi phạm thụ động thường khó phát hiện nhưng có thể có những biện pháp ngăn chặn hiệu quả Vi phạm chủ động là dạng vi phạm có thể làm thay đổi nội dung, xóa bỏ, làm trễ, sắp xếp lại thứ tự hoặc làm lặp lại gói tin tại thời điểm đó hoặc sau đó một thời gian Vi phạm chủ động có thể thêm vào một số thông tin ngoại lai để làm sai lệch nội dung thông tin trao đổi Vi phạm chủ động dễ phát hiện nhưng để ngăn chặn hiệu quả thì khó khăn hơn nhiều
Một thực tế là không có một biện pháp bảo vệ an toàn thông tin dữ liệu nào là an toàn tuyệt đối Một hệ thống dù được bảo vệ chắc chắn đến đâu cũng không thể đảm bảo là an toàn tuyệt đối
1.1.2 Mục tiêu của an toàn bảo mật thông tin
Bên cạnh việc làm thế nào để che dấu nội dung thông tin thì mã hoá phải đảm bảo các mục tiêu sau:
Tính bí mật (Confjdentialy): Đảm bảo dữ liệu được truyền đi một cách an toàn và
không thể bị lộ thông tin nếu như có ai đó cố tình muốn có được nội dung của dữ liệu
Trang 12gốc ban đầu Chỉ những người được phép mới có khả năng đọc được nội dung thông tin ban đầu
Tính xác thực (Authentication): Giúp cho người nhận dữ liệu xác định được chắc
chắn dữ liệu mà họ nhận là dữ liệu gốc ban đầu Người giả mạo không thể có khả năng
để giả dạng một người khác hay nói cách khác không thể mạo danh để gửi dữ liệu Người nhận có khả năng kiểm tra nguồn gốc thông tin mà họ nhận được
Tính toàn vẹn (Integrity): Giúp cho người nhận dữ liệu kiểm tra được rằng dữ liệu
không bị thay đổi trong quá trình truyền đi Người giả mạo không thể có khả năng thay thế dữ liệu ban đầu bằng dữ liệu giả mạo
Tính không thể chối bỏ (Non-repudation): Người gửi hay người nhận không thể chối
bỏ sau khi đã gửi hoặc nhận thông tin
1.1.3 Các chiến lược an toàn hệ thống
Giới hạn quyền hạn tối thiểu (Last Privilege):
Đây là chiến lược cơ bản nhất theo nguyên tắc này bất kỳ một đối tượng nào cùng chỉ có những quyền hạn nhất định đối với tài nguyên mạng, khi thâm nhập vào mạng đối tượng đó chỉ được sử dụng một số tài nguyên nhất định
Bảo vệ theo chiều sâu (Defence In Depth):
Nguyên tắc này nhắc nhở chúng ta : Không nên dựa vào một chế độ an toàn nào dù cho chúng rất mạnh, mà nên tạo nhiều cơ chế an toàn để tương hỗ lẫn nhau
Nút thắt (Choke Point) :
Tạo ra một “cửa khẩu” hẹp, và chỉ cho phép thông tin đi vào hệ thống của mình bằng con đường duy nhất chính là “cửa khẩu” này => phải tổ chức một cơ cấu kiểm soát và điều khiển thông tin đi qua cửa này
Điểm nối yếu nhất (Weakest Link) :
Chiến lược này dựa trên nguyên tắc: “ Một dây xích chỉ chắc tại mắt duy nhất, một bức tường chỉ cứng tại điểm yếu nhất”
Người tấn công thường tìm những chỗ yếu nhất của hệ thống để tấn công, do đó ta cần phải gia cố các yếu điểm của hệ thống Thông thường chúng ta chỉ quan tâm đến
Trang 13người tấn công trên mạng hơn là người tiếp cận hệ thống, do đó an toàn vật lý được coi
là yếu điểm nhất trong hệ thống của chúng ta
Tính toàn cục:
Các hệ thống an toàn đòi hỏi phải có tính toàn cục của các hệ thống cục bộ Nếu có một người nào đó có thể bẻ gãy một cơ chế an toàn thì chúng có thể thành công bằng cách tấn công hệ thống tự do của ai đó và sau đó tấn công hệ thống từ nội bộ bên trong
Tính đa dạng bảo vệ :
Cần phải sử dụng nhiều biện pháp bảo vệ khác nhau cho hệ thống khác nhau, nếu không có người tấn công vào được một hệ thống thì chúng cũng dễ dàng tấn công vào các hệ thống khác
1.2 Các kiến thức cơ bản về hệ mật mã
1.2.1 Khái niệm chung
Mật mã là một ngành khoa học chuyên nghiên cứu các phương pháp truyền tin bí mật Mật mã bao gồm : Lập mã và phá mã Lập mã bao gồm hai quá trình: mã hóa và giải mã
Để bảo vệ thông tin trên đường truyền người ta thường biến đổi nó từ dạng nhận thức được sang dạng không nhận thức được trước khi truyền đi trên mạng, quá trình này được gọi là mã hoá thông tin (encryption), ở trạm nhận phải thực hiện quá trình ngược lại, tức là biến đổi thông tin từ dạng không nhận thức được (dữ liệu đã được
mã hoá) về dạng nhận thức được (dạng gốc), quá trình này được gọi là giải mã Đây là một lớp bảo vệ thông tin rất quan trọng và được sử dụng rộng rãi trong môi trường mạng
Để bảo vệ thông tin bằng mật mã người ta thường tiếp cận theo hai hướng:
- Theo đường truyền (Link_Oriented_Security)
- Từ nút đến nút (End_to_End)
Theo cách thứ nhất thông tin được mã hoá để bảo vệ trên đường truyền giữa hai nút
mà không quan tâm đến nguồn và đích của thông tin đó Ở đây ta lưu ý rằng thông tin chỉ được bảo vệ trên đường truyền, tức là ở mỗi nút đều có quá trình giải mã sau đó mã hoá để truyền đi tiếp, do đó các nút cần phải được bảo vệ tốt
Trang 14Ngược lại theo cách thứ hai thông tin trên mạng được bảo vệ trên toàn đường truyền
từ nguồn đến đích Thông tin sẽ được mã hoá ngay sau khi mới tạo ra và chỉ được giải
mã khi về đến đích Cách này mắc phải nhược điểm là chỉ có dữ liệu của người ung thì mới có thể mã hóa được còn dữ liệu điều khiển thì giữ nguyên để có thể xử lý tại các nút
Các hệ mật mã phải thực hiện được các nhiệm vụ sau đây:
- Hệ mật mã phải che dấu được nội dung của văn bản rõ (PlainText) để đảm bảo sao cho chỉ người chủ hợp pháp của thông tin mới có quyền truy cập thông tin (Secrety), hay nói cách khác là chống truy nhập không đúng quyền hạn
- Tạo các yếu tố xác thực thông tin, đảm bảo thông tin lưu hành trong hệ thống đến người nhận hợp pháp là xác thực (Authenticity)
- Tổ chức các sơ đồ chữ ký điện tử, đảm bảo không có hiện tượng giả mạo, mạo danh để gửi thông tin trên mạng
Ưu điểm lớn nhất của bất kỳ hệ mật mã nào đó là có thể đánh giá được độ phức tạp tính toán mà “kẻ địch” phải giải quyết bài toán để có thể lấy được thông tin của dữ liệu
đã được mã hoá Tuy nhiên mỗi hệ mật mã có một số ưu và nhược điểm khác nhau, nhưng nhờ đánh giá được độ phức tạp tính toán mà ta có thể áp dụng các thuật toán mã hoá khác nhau cho từng ứng dụng cụ thể tuỳ theo độ yêu cầu về độ an toàn
1.2.2 Các thành phần của một hệ mật mã
Một hệ mật mã là một bộ 5 (P,C,K,E,D) thoả mãn các điều kiện sau:
- P: Là một tập hợp hữu hạn các bản rõ, nó được gọi là không gian bản rõ
- C: Là tập hữu hạn các bản mã, nó được gọi là không gian bản mã Mỗi phần tử của C có thể nhận được bằng cách áp dụng phép mã hoá Ek lên một phần tử của
P, với k K
- K: Là tập hữu hạn các khoá hay còn gọi là không gian khoá Đối với mỗi phần
tử k của K được gọi là một khoá Số lượng của không gian khoá phải đủ lớn để
“kẻ địch” không có đủ thời gian để thử mọi khoá có thể (phương pháp vét cạn) Đối với mỗi k K có một quy tắc mã ek: PC và một quy tắc giải mã tương ứng dk D Mỗi ek: P C và dk: CP là những hàm mà: Dk (ek(x))=x với mọi bản rõ x P
Trang 15Hình 1 1 Mã hoá với khoá mã và khoá giải giống nhau
1.2.3 Quy trình mã hóa và giải mã
Mã hóa dữ liệu là sử dụng một phương pháp biến đổi dữ liệu từ dạng bình thường sang một dạng khác mà một người không có thẩm quyền, không có phương tiện giải mã thì không thể đọc hiểu được Giải mã dữ liệu là quá trình ngược lại, là sử dụng một phương pháp biến đổi dữ liệu đã được mã hóa về dạng thông tin ban đầu
Hình 1 2 Quy trình mã hóa và giải mã
Mã hóa: Quá trình chuyển đổi dữ liệu gốc thành dữ liệu được mã hóa sao cho người khác không thể đọc hiểu được
Giải mã: Là quá trình ngược lại của mã hóa, biến đổi dữ liệu đã được mã hóa thành dạng gốc ban đầu
Bản mã: Tệp dữ liệu đã được mã hóa
Một hệ thống mã hóa bao gồm các thành phần sau:
- PlainText : Bản tin sẽ được mã hóa hay bản tin gốc
- CipherText : Bản tin đã được mã hóa hay bản tin mã
Trang 16Thuật toán mã hóa và giải mã :
- Encryption : quá trình chuyển bản tin gốc sang dạng mật mã
- Decryption : quá trình giải bản tin dạng mật mã trở về bản tin gốc
- Cách chọn khóa : giá trị toán học dùng để thực hiện mã hóa
Nhiều phương pháp mã hóa đã được đưa ra dựa trên những giải thuật toán phức tạp,
để tạo khó khăn cho những ai đó muốn phá mật mã mà không cần được ai trao chìa khóa Nói tạo khó khăn là vì trên lý thuyết ta không thể nói việc tìm chìa khóa là vô phương Nhưng nếu trở ngại đủ lớn để làm nản lòng người muốn phá khóa thì đã là một mức độ an toàn tốt
Quá trình mã hóa và giải mã có thể được minh họa theo sơ đồ sau :
-Quá trình truyền
dữ liệu
Quá trình
mã hóa
Quá trình giải mã
Bản tin gốc
Bản tin gốc
Bản tin mã
Bản tin mã
```
```
```
```
```
```
Hình 1 3 Sơ đồ mã hóa và giải mã
1.2.4 Phân loại hệ thống mã hóa
Để phân loại hệ thống mã hóa, người ta phân loại dựa trên khóa như sau
1.2.4.1 Mã hóa bằng khóa bí mật
Các hệ thống mã hóa với khóa bí mật còn được gọi là mã hóa bằng khóa riêng, mã hóa đối xứng sử dụng duy nhất một khóa cho cả quá trình mã hóa lẫn quá trình giải mã
Có hai loại thuật toán mã hóa bí mật :
Trang 17- Stream Algorithms/Stream Ciphers : các thuật toán hoạt động trên văn bản bình thường theo từng bit một
- Block Algorithms/Block Ciphers : các thuật toán hoạt động trên văn bản theo
các khối (32 bit, 64 bit, 128 bit, )
Một số thuật toán đang được sử dụng rộng rãi hiện nay : DES, Triple-DES, RC5, RC6, Rijndael
Quá trình mã hóa và giải mã bằng cách sử dụng khóa bí mật được minh họa như hình sau :
-Quá trình truyền
dữ liệu
Khóa bí mật(chỉ
Có người mã hóa và
người giải mã biết)
Quá trình
mã hóa
Quá trình giải mã
Bản tin gốc
Bản tin gốc
Bản tin mã
Bản tin mã
```
```
```
```
```
```
Hình 1 4 Sơ đồ mã hóa và giải mã bằng khóa riêng 1.2.4.2 Mã hóa bằng khóa công khai
Mã hóa bằng khóa công khai còn gọi là mã hóa bất đối xứng hay mã hóa bằng khóa chung Sự khác biệt cơ bản giữa một hệ thống mã hóa bằng khóa bí mật với hệ thống
mã hóa bằng khóa công khai là hệ thống mã hóa khóa công khai dùng hai khóa khác nhau để mã hóa và giải mã Do đó, một bộ mã công khai sẽ bao gồm hai khóa: một khóa dành cho người mã hóa thường được công khai, và khóa còn lại dùng cho người giải mã thường được giữ bí mật Như vậy, hệ thống mã hóa với khóa công khai cần có một quá
Trang 18trình sinh ra hai khóa để mã hóa và giải mã thông điệp Các khóa này được xem như là một đôi :
Public-key (khóa công khai): được phép công khai mà không phải chịu rủi ro về an toàn Khóa này được dùng để mã hóa thông điệp
Private-key (khóa bí mật): không được để lộ Mỗi thông điệp được mã hóa bằng public-key chỉ có thể giải mã bằng một khóa mật thích hợp
Một số thuật toán mã hóa công khai phổ biến : RSA, Diffie-Hellman Key-Exchange Algorithm (dùng cho việc phân phối và trao đổi khóa)
Quá trình mã hóa và giải mã bằng cách sử dụng khóa công khai được minh họa như hình sau :
-Quá trình truyền
dữ liệu
Khóa công khai, chỉ dùng để mã hóa (có thể cho mọi người biết) Khóa mật, chỉ dùng để giải mã (cần
được giữ bí mật)
Quá trình
mã hóa
Quá trình giải mã
Bản tin gốc
Bản tin gốc
Bản tin mã
Bản tin mã
```
```
```
```
```
```
Hình 1 5 Sơ đồ mã hóa và giải mã bằng khóa công khai
Trang 19Có thể thấy rằng các phương pháp có những ưu khuyết điểm chính như sau:
a) Phương pháp mã hóa khóa bí mật
+ Có thể được thiết kế để đạt tốc độ cao
Các thiết bị phần cứng hỗ trợ có thể đạt
tốc độ hàng trăm megabytes mỗi giây
trong khi việc thực thi bằng phần mềm
chỉ đạt được khoảng vài megabytes mỗi
giây
+ Khóa dùng cho mã hóa khóa đối xứng
tương đối ngắn
+ Được xem như thành phần cơ bản có
thể triển khai để xây dựng các kỹ thuật
mã hóa khác bao gồm khởi tạo các số
ngẫu nhiên, các hàm băm, các kỹ thuật
tính toán
+ Có thể được kết hợp để tạo ra các thuật
toán mã hóa mạnh hơn
+ Trong quá trình truyền thông giữa hai người, khóa phải được giữ bí mật cho cả hai phía
+ Trong một hệ thống mạng lớn, số lượng khóa cần được quản lý rất nhiều
Do vậy việc quản lý khóa một cách hiệu quả đòi hỏi sử dụng một bộ phận tin cậy thứ ba (TTP :Trusted Third Party) + Khóa bí mật cần được thay đổi thường xuyên
+ Kỹ thuật chữ ký số được phát triển từ
cơ chế mã hóa khóa đối xứng đòi hỏi sử dụng các khóa lớn cho các hàm xác nhận công khai hoặc là sử dụng một TTP
b) Phương pháp mã hóa khóa công khai
+ Chỉ có khóa riêng thì cần được giữ bí
mật (tuy nhiên việc xác nhận của các
khóa công khai cần được đảm bảo)
+ Việc quản trị các khóa trên mạng đòi
hỏi sự tồn tại duy nhất một thành phần
tin cậy TTP
+ Cặp khóa riêng và công khai có thể
được sử dụng trong thời gian dài
+ Tốc độ cho các phương thức mã hóa công khai thì chậm hơn rất nhiều so với các mô hình khóa đối xứng
+ Kích thước khóa lớn hơn rất nhiều so với cơ chế mã hóa khóa đối xứng
+ Không có mô hình khóa công khai nào được chứng minh là an toàn Phần lớn các mô hình mã hóa hiệu quả ngày nay
có sự an toàn dựa trên các giả thuyết của
Trang 20+ Nhiều mô hình khóa công cộng được
phát triển hình thành nên các kỹ thuật
chữ ký số hiệu quả Khóa được sử dụng
cho hàm kiểu công khai thì nhỏ hơn rất
nhiều so với dùng khóa đối xứng
+ Trong một mạng lớn, số lượng các
khóa cần thiết được quan tâm ít hơn so
với việc dùng khóa đối xứng
một tập nhỏ của các vấn đề lý thuyết số học
+ Hệ thống mã hóa công khai không có
bề dày lâu đời như hệ thống mã hóa khóa đối xứng, nó chỉ được tìm ra vào giữa khoảng những năm 1970
1.2.5 Các đặc trưng của hệ thống mã hoá
Một hệ thống mã hóa bất kỳ được đặc trưng bởi 3 tiêu chí sau đây:
- Phương pháp mã (operation): có hai phương pháp mật mã bao gồm thay thế
(substitution) và chuyển vị (transposition) Trong phương pháp mã thay thế, các đơn vị thông tin (bit, ký tự, byte hoặc khối) trong thông tin gốc được thay thế bằng các đơn vị thông tin khác theo một quan hệ nào đó Trong phương pháp mã chuyển vị, các đơn vị thông tin trong thông gốc được đổi chỗ cho nhau để tạo thành thông tin mã hóa Các hệ thống mã hoá hiện đại thường kết hợp cả hai phương pháp thay thế và chuyển vị
- Số khóa sử dụng (number of keys): nếu phía mã hóa (phía gửi) và phía giải mã (phía
nhận) sử dụng chung một khóa, ta có hệ thống mã dùng khoá đối xứng (symmetric key) gọi tắt là mã đối xứng hay còn có các tên gọi khác như mã một khóa (single-key), mã khóa bí mật (secret key) hoặc mã quy ước (conventional cryptosystem) Nếu phía mã hóa
và phía giải mã dùng 2 khóa khác nhau, hệ thống này được gọi là mã bất đối xứng (asymmetric key), mã hai khóa (two key) hoặc mã khóa công khai (public key)
- Cách xử lý thông tin gốc (mode of cipher): thông tin gốc có thể được xử lý liên tục
theo từng phần tử , khi đó ta có hệ thống mã dòng (stream cipher) Ngược lại, nếu thông tin gốc được xử lý theo từng khối, ta có hệ thống mã khối (block cipher) Các hệ thống
mã dòng thường phức tạp và không được phổ biến công khai, do đó chỉ được dùng trong một số ứng dụng nhất định (ví dụ trong thông tin di động GSM) Các thuật toán mật mã được giới thiệu trong tài liệu này chỉ tập trung vào cơ chế mã khối
Trang 21Có nhiều cách để phân loại hệ mật mã Dựa vào cách truyền khóa có thể phân các
hệ mật mã thành hai loại:
- Hệ mật đối xứng (hay còn gọi là mật mã khóa bí mật): là những hệ mật dùng chung một khoá cả trong quá trình mã hoá dữ liệu và giải mã dữ liệu Do đó khoá phải được giữ bí mật tuyệt đối
- Hệ mật mã bất đối xứng (hay còn gọi là mật mã khóa công khai) : Hay còn gọi
là hệ mật mã công khai, các hệ mật này dùng một khoá để mã hoá sau đó dùng một khoá khác để giải mã, nghĩa là khoá để mã hoá và giải mã là khác nhau Các khoá này tạo nên từng cặp chuyển đổi ngược nhau và không có khoá nào có thể suy được từ khoá kia Khoá dùng để mã hoá có thể công khai nhưng khoá dùng
để giải mã phải giữ bí mật
Ngoài ra nếu dựa vào thời gian đưa ra hệ mật mã ta còn có thể phân làm hai loại: Mật mã cổ điển (là hệ mật mã ra đời trước năm 1970) và mật mã hiện đại (ra đời sau năm 1970) Còn nếu dựa vào cách thức tiến hành mã thì hệ mật mã còn được chia làm hai loại là mã dòng (tiến hành mã từng khối dữ liệu, mỗi khối lại dựa vào các khóa khác nhau, các khóa này được sinh ra từ hàm sinh khóa, được gọi là dòng khóa) và mã khối (tiến hành mã từng khối dữ liệu với khóa như nhau)
1.2.6 Thám mã và tính an toàn của các hệ mã
1.2.6.1 Thám mã
Mật mã được sử dụng trước hết là để đảm bảo tính bí mật cho các thông tin được trao đổi, và do đó bài toán quan trọng hất của thám mã cũng là bài toán phá bỏ tính bí mật đó, tức là từ bản mật mã có thể thu được dễ dàng các thông tin bị che dấu trong đó Như vậy bài toán thám mã cơ bản có thể xem là bài toán tìm khóa bí mật K Giả thiết người thám mã biết thông tin về sơ đồ hệ mã được dùng hoặc có thể biết thêm một vài thông tin khác mà ta có thể phân ra thành các bài toán:
- Bài toán thám mã chỉ biết bản mã: là bài toán phổ biến nhất, khi người thám mã chỉ biết bản mã Y
- Bài toán thám mã khi biết cả bản rõ: người thám mã biết một bản mã Y cùng với bản rõ tương ứng X
Trang 22- Bài toán thám mã khi có bản rõ được chọn: người thám mã có thể chọn một bản
rõ X, và biết bản mã Y tương ứng Điều này có thể xảy ra khi người thám mã chiếm được (tạm thời) máy lập mã
- Bài toán thám mã khi có bản mã được chọn: người thám mã có thể chọn một bản mật mã Y, và biết được bản rõ X tương ứng Xảy ra khi người thám mã chiếm được máy giải mã
1.2.6.2 Phương pháp thám mã (tấn công hệ mã)
Phương pháp phân tích mã (cryptanalysis): dựa vào bản chất của thuật toán mã hóa,
cùng với một đoạn thông tin gốc hoặc thông tin mật có được, người tấn công tìm cách phân tích để tìm ra toàn bộ thông tin gốc hoặc tìm ra khóa, rồi sau đó thực hiện việc giải
mã toàn bộ thông tin mật
Phương pháp thử tuần tự (brute-force): bằng cách thử tất cả các khóa có thể, người
tấn công có khả năng tìm được khóa đúng và do đó giải mã được thông tin mật
Thông thường, để tìm được khóa đúng thì cần phải thử một số lượng khóa bằng khoảng một nửa số khóa có thể có của hệ thống mã Ví dụ, nếu khoá có chiều dài là 8 bit thì sẽ có tất cả 28 = 256 khóa khác nhau Để chọn được khóa đúng thì người tấn công phải thử trung bình khoảng 256 / 2 = 128 lần Việc thử này thường được trợ giúp bởi
các máy tính và phần mềm chuyên nghiệp
Hai thành phần đảm bảo sự an toàn của một hệ thống mật mã là thuật toán mã (bao gồm thuật toán mã hoá và thuật toán giải mã) và khoá
Trong thực tế, thuật toán mã không được xem như một thông tin bí mật, bởi vì mục đích xây dựng một thuật toán mã là để phổ biến cho nhiều người dùng và cho nhiều ứng dụng khác nhau, hơn nữa việc che giấu chi tiết của một thuật toán chỉ có thể tồn tại trong một thời gian ngắn, sẽ có một lúc nào đó, thuật toán này sẽ được tiết lộ ra, khi đó toàn
bộ hệ thống mã hóa trở nên vô dụng Do vậy, tất cả các tình huống đều giả thiết rằng người tấn công đã biết trước thuật toán mã
Như vậy, thành phần quan trọng cuối cùng của một hệ thống mã là khóa của hệ
thống, khóa này phải được giữ bí mật giữa các thực thể tham gia nên được gọi là khóa
bí mật Một cách tổng quát, chiều dài khóa càng lớn thì thời gian cần thiết để dò ra khóa
Trang 23bằng cách thử càng lớn, do vậy khả năng phát hiện khóa càng thấp Bảng sau đây liệt kê một số khóa với độ dài khác nhau và thời gian cần thiết để dò ra khóa
Bảng 1 1 Quan hệ giữa độ dài khoá và thời gian dò khoá
1.2.6.3 Tiêu chuẩn đánh giá hệ mật mã
Để đánh giá một hệ mật mã người ta thường đánh giá thông qua các tiêu chí sau:
Độ an toàn: Một hệ mật được đưa vào sử dụng điều đầu tiên phải có độ an toàn cao
Ưu điểm của mật mã là có thể đánh giá được độ an toàn thông qua độ an toàn tính toán
mà không cần phải cài đặt Một hệ mật được coi là an toàn nếu để phá hệ mật mã này
phải dùng n phép toán Mà để giải quyết n phép toán cần thời gian vô cùng lớn, không
thể chấp nhận được
Một hệ mật mã được gọi là tốt thì nó cần phải đảm bảo các tiêu chuẩn sau:
- Chúng phải có phương pháp bảo vệ mà chỉ dựa trên sự bí mật của các khoá, công khai thuật toán
- Khi cho khoá công khai eK và bản rõ P thì chúng ta dễ dàng tính được eK(P) =
C Ngược lại khi cho dK và bản mã C thì dễ dàng tính được dK(M)=P Khi không biết dK thì không có khả năng để tìm được M từ C, nghĩa là khi cho hàm
Trang 24f: X Y thì việc tính y=f(x) với mọi x thuộc X là dễ còn việc tìm x khi biết y lại
là vấn đề khó và nó được gọi là hàm một chiều
- Bản mã C không được có các đặc điểm gây chú ý, nghi ngờ
Tốc độ mã và giải mã: Khi đánh giá hệ mật mã chúng ta phải chú ý đến tốc độ mã
và giải mã Hệ mật tốt thì thời gian mã và giải mã nhanh
Phân phối khóa: Một hệ mật mã phụ thuộc vào khóa, khóa này được truyền công
khai hay truyền khóa bí mật Phân phối khóa bí mật thì chi phí sẽ cao hơn so với các hệ mật có khóa công khai Vì vậy đây cũng là một tiêu chí khi lựa chọn hệ mật mã
Tính an toàn của một hệ thống mật mã phụ thuộc vào độ khó của bài toán thám mã khi sử dụng hệ mã hóa đó Người ta đã đề xuất một số khái niệm về tính an toàn của hệ thống mật mã
- An toàn vô điều kiện: giả thiết người thám mã có được thông tin về bản mã Theo quan niệm lý thuyết thông tin, nếu những hiểu biết về bản mã không thu hẹp được
độ bất định về bản rõ đối với người thám mã thì hệ mã hóa đó là an toàn vô điều kiện, hay theo Shannon đó là hệ bí mật hoàn toàn
- An toàn được chứng minh: một hệ thống mã hóa được xem là có độ an toàn được chứng minh nếu ta có thể chứng minh được là bài toán thám mã đối với hệ thống
đó khó tương đương với một bài toán khó đã biết Ví dụ như bài toán phân tích một số nguyên thành các thừa số nguyên tố, bài toán tìm logarit rời rạc theo một modul nguyên tố…(Khó tương đương có nghĩa là nếu bài toán này giải được thì bài toán kia cũng giải được với cùng một độ phức tạp như nhau)
- An toàn tính toán: hệ mã được xem là an toàn về mặt tính toán nếu với mọi phương pháp thám mã đã biết đều đòi hỏi một nguồn năng lực tính toán vượt mọi khả năng (kể cả phương tiện thiết bị)
Tính an toàn theo nghĩa được chứng minh hay tính toán được sử dụng nhiều trong việc nghiên cứu các hệ thống mật mã hiện đại, đặc biệt là hệ mã hóa công khai
1.3 Cơ sở toán học về mã hóa
Định nghĩa 1.1:
+ Ước số của a và b là c nếu a và b cùng chia hết cho c, kí hiệu a|c, b|c
+ Ước số chung lớn nhất : Là số lớn nhất mà a và b cùng chia hết
Trang 25Ký hiệu : c = gcd (a,b) ;
+ Bội số chung nhỏ nhất : d là BCNN của a và b nếu mọi c mà a|c , b|c → d|c
Ký hiệu : d = lcm (a,b) ;
Tính chất: lcm (a,b) = a.b/gcd(a,b)
Định nghĩa 1.2: Số n là số nguyên tố nếu n chỉ chia hết cho 1 và chính nó
Hệ mật thường sử dụng số nguyên tố lớn cỡ 512 bits và thậm chí còn lớn hơn nữa
Định nghĩa 1.3: Hai số m và n gọi là hai số nguyên tố cùng nhau khi ước số chung
lớn nhất của chúng bằng 1 Chúng ta có thể viết như sau: UCLN(m,n) = 1
1.3.1 Các thuật toán trong Z
Cho a và b là các số nguyên không âm và nhỏ hơn hoặc bằng n Cần chú ý rằng số các bit trong biểu diễn nhị phân của n là [lgn] + 1 và số này xấp xỉ bằng lgn Số các phép toán bit đối với bốn phép toán cơ bản trên các số là cộng, trừ, nhân và chia sử dụng các thuật toán kinh điển được tóm lược trên bảng sau Các kỹ thuật tinh tế hơn đối với các phép toán nhân và chia sẽ có độ phức tạp nhỏ hơn
Phép toán Độ phức tạp bit Cộng a + b
Trừ a – b Nhân a * b Chia a = qb + r
0(lga + lgb) = 0 (lgn) 0(lga + lgb) = 0 (lgn) 0((lga)*(lgb)) = 0((lgn)) 0((lga)*(lgb)) = 0((lgn))
1.3.2 Thuật toán Euclide
Trong lý thuyết mật mã, người ta thường dùng thuật toán Euclide để xác định UCLN của 2 số nguyên bất kì Thuật toán được mô tả như sau:
Thuật toán gốc
Input : Hai số nguyên không âm a và b với a > b
Output : UCLN của a và b
(1) while b ≠ 0 do
Trang 26R ← a mod b, a ← b, b ← r
(2) Return (a)
Thuật toán mở rộng
Input : Hai số nguyên không âm a và b với a > b
Output : d = UCLN (a, b) và các số nguyên x và y thỏa mãn ax + by = d
1.3.3 Khái niệm về hàm Euler
Định nghĩa 1.4: Cho n là số nguyên dương, hàm Φ-Euler của n, ký hiệu Φ(n), là số
các số nguyên dương nhỏ hơn hoặc bằng n và nguyên tố cùng nhau với n
Công thức tính tổng quát hàm Φ-Euler như sau: Giả sử n được phân tích thành các thừa
Trang 27Định nghĩa 1.5: Một trường hữu hạn là một trường F chứa một số hữu hạn các phần
tử Bậc của nhóm F là số các phần tử tồn tại trong F
Định nghĩa 1.6: Cho Fq làmột trường hữu hạn, và một phần tử g Fq, định nghĩa bậc (order) của g là số nguyên dương m nhỏ nhất sao cho : gm 1 (mod q), và ký hiệu là: Ordq(g) = m
Định nghĩa 1.7: Số g được gọi là phần tử sinh của trường hữu hạn Fq, nếu g có bậc
q – 1 ; Nói cách khác : g là phần tử sinh (chính), nếu lũy thừa của g có thể sinh ra tất cả các phần tử khác 0 của Fq Nghĩa là: {gx : 0 ≤ x ≤ q – 2} = Fq
Định lý 1.3: Mỗi trường hữu hạn đều có phần tử sinh Nếu g là một phần tử sinh
của Fq thì gj cũng là phần tử sinh nếu và chỉ nếu gcd(j, q – 1) = 1 Vậy có tổng cộng Φ(q – 1) phần tử sinh khác nhau của Fq* (gcd: greatest common divisor)
1.3.4 Khái niệm về đồng dư thức
Lý thuyết đồng dư là cơ sở để hiểu được các phương pháp, kỹ thuật tính toán trong các thuật toán mã hóa và giải mã của hệ mật mã khóa công khai
Định nghĩa 1.8: Cho các số nguyên tố a,b và n ta nói hai số nguyên a và b đồng dư
với nhau theo modulo n, nếu trong các phép chia a và b cho n có cùng số dư (nghĩa là:
a mod n = b mod n) và được kí hiệu hay a ≡ b (mod n)
Các phát biểu sau đây là tương đương:
- a và b đồng dư với nhau theo mod n (a ≡ b mod n)
- n chia hết a − b, nghĩa là n ước của (a – b), kí hiệu là n|(a-b)
- Tồn tại số nguyên t sao cho a = t* n + b
Một số các tính chất của đồng dư thức:
- Có thể cộng, trừ hoặc nhân từng vế của nhiều đồng dư thức theo cùng một modulo n Cụ thể nếu ai bi (mod n) với i= 1,2,…,k thì ta có:
a1 a2 ak b1 b2 bk (mod n) a1 * a2 * * ak b1 * b2 * * bk (mod n)
- Nếu a * c b * c (mod n) và USCLN(c, n) = 1 => a ≡ b (mod n)
- Nếu a ≡ b (mod ni) thì a ≡ b (mod n), với n = BSCNN(ni, n2,…, nk)
- Nếu a ≡ b (mod n) và c|n, c > 0 thì ta có a ≡ b (mod c)
Trang 28Chú ý: Phép cộng trong số học modulo n cũng có phần tử nghịch đảo cộng (hay
số âm) được định nghĩa như sau: với bất kì số x Zn y Zn: (x + y) mod n = 0
Chú ý: Tương tự như phép cộng, phép nhân modulo n cũng có phần tử nghịch đảo
được định nghĩa như sau: cho a Zn nếu ! x Zn sao cho:
a * x 1 (mod n) thì x gọi là phần tử nghịch đảo nhân của a mod n, ký hiệu x = a-1
mod n
Ví dụ: 1.4:
2 là phần tử nghịch đảo của 3 mod 5 vì ta có: (3* 2) mod 5 = 1
Các tính chất của các phép toán số học modulo:
- Nghịch đảo của a Zn trong phép cộng modulo là: (n – a) với a Zn
(a + (n – a)) mod n = ((n – a) + a) mod n = 0
Trang 29- Nghịch đảo của a Zn trong các phép nhân modulo là a-1 với a Zn
(a * a-1) mod n = (a-1
* a) mod n = 1
- Có tính giao hoán với a, b Zn ta có:
(a+b) mod n = (b+a) mod n (a * b) mod n = b * a mod n
- Có tính kết hợp với a, b, c Zn ta có:
[(a+b) * c] mod n = [(a * c) + (b * c)] mod n [a * (b+c)] mod n = [(a * b) + (b * c)] mod n
1.3.5 Khái niệm về số nghịch đảo
Định nghĩa 1.9: Cho aZ n Một số nguyên xZ n gọi là nghịch đảo của a theo mod n nếu a.x ≡ 1mod n Nếu có số x như vậy thì nó là duy nhất và ta nói a là khả nghịch Ký hiệu là a-1 Có thể suy ra rằng a khả nghịch theo mod n khi và chỉ khi gcd (a,n)=1
1.3.6 Định lý phần dư China CRT (Chinese Remainder Theorem)
Nếu các số nguyên n1, n2, …, nk là nguyên tố cùng nhau từng thì hệ các phương trình đồng dư:
Ví dụ 1.5:
Cặp phương trình đồng dư
Trang 30x ≡ 5 (mod 9)
x ≡ 19 (mod 23) có nghiệm duy nhất x ≡ 203 (mod 207)
Tính chất: Nếu (n1, n2) = 1 thì cặp phương trình đồng dư x ≡ a (mod n1), x ≡ a
(mod n2) có một nghiệm duy nhất x ≡ a (mod n1, n2)
1.3.7 Các thuật toán trong Zn
Cho n là một số nguyên dương Các phần tử của Zn sẽ được biểu thị bởi các số nguyên {0, 1, 2, … n-1}
1.3.8 Thuật toán
Input : aZ n
Output : a-1mod n (nếu tồn tại)
1 Dùng thuật toán Euclide mở rộng để tìm các số nguyên x và y sao cho ax + ny = d trong đó d = (a, n)
2 Nếu d >1 thì a-1mod n không tồn tại Ngược lại return (x) Phép lũy thừa theo modulo có thể được thực hiện có hiệu quả bằng thuật toán nhân
và bình phương có lặp Đây là một thuật toán rất quan trọng trong nhiều thủ tục mật mã Cho biểu diễn nhị phân của a là :
0
2
t
i i
Trang 31CHƯƠNG 2: MỘT SỐ HỆ MÃ HÓA ĐỐI XỨNG
Nội dung chính của chương 2 trình bày các kiến thức cơ bản nhất về một số hệ mã hóa đối xứng nổi tiếng trên thế giới đã và đang được sử dụng bao gồm cơ chế mã hóa, thuật toán, độ phức tạp thám mã, độ an toàn của hệ mã Đây chính là nội dung chính của luận văn, làm cơ sở cho việc cài đặt chi tiết các thuật toán được đưa ra trong chương 3 Các kiến thức cơ bản được tham khảo trong các tài liệu [5, 6, 7, 8, 9]
2.1 Giới thiệu
Kỹ thuật mật mã đối xứng được đặc trưng bởi việc sử dụng một khóa duy nhất cho
cả quá trình mã hóa và giải mã thông tin Bằng một cách an toàn nào đó, khóa chung này phải được trao đổi thống nhất giữa bên gửi và bên nhận (tức bên mã hóa và bên giải mã), đồng thời được giữ bí mật trong suốt thời gian sử dụng Kỹ thuật mật mã đối xứng còn được gọi là mật mã quy ước (conventional encryption) hoặc mật mã dùng khóa bí mật (secret key encryption) Cấu trúc chung của một hệ thống mật mã hóa quy ước như trình bày ở hình 2.1 trong đó, kênh thông tin dùng để trao đổi khóa bí mật phải là một kênh an toàn Có thể thực hiện việc trao đổi khóa bí mật giữa hai thực thể A và B theo những cách sau đây:
- A chọn ra một khóa bí mật và chuyển trực tiếp cho B (chuyển bằng phương tiện vật lý như ghi lên đĩa, nói trực tiếp, ghi ra giấy, …)
- Một thực thể thứ 3 chọn ra khóa bí mật và thông báo khóa này cho cả A và B (bằng phương tiện vật lý như trên)
- Nếu A và B trước đó đã dùng một khóa nào đó để thông tin với nhau, thì một trong hai thực thể sẽ tiếp tục dùng khóa cũ để gửi thông báo về khóa mới cho thực thể kia
- Nếu A và B có các kết nối an toàn đến một thực thể thứ 3 là C, thì C có thể gửi thông báo về khóa cho cả hai thực thể A và B thông qua kết nối an toàn này
Mã hóa đối xứng dựa chủ yếu trên hai thao tác: thay thế và chuyển vị Thao tác thay thế sẽ thay từng từ mã bởi một từ mã khác theo một quy ước nào đó, và quy ước này chính là khóa của hệ thống mã Ví dụ: thay thế từng ký tự trong một thông điệp bằng một ký tự đứng cách nó 3 vị trí trong bảng chữ cái la tinh, thông điệp “HELLO WORLD”
sẽ được mã hóa thành “KHOOR ZRUOG” Thao tác chuyển vị thực hiện việc thay thế
vị trí của các từ mã trong thông tin gốc theo một quy ước nào đó và quy ước này cũng
Trang 32trở thành khóa của hệ thống Ví dụ: dịch từng ký tự trong một thống điệp qua phải một
ví trí có xoay vòng, thông điệp “HELLO WORLD” sẽ được mã hóa thành “DHELLO WORL”
Hình 2 1 Mô hình hệ thống mã hóa đối xứng Nguồn thông tin:
- Tập hợp thông điệp của nguồn: Các xâu ký tự X={X1, X2, , XM}
- Thông điệp: xâu ký tự độ dài m: Xi=[xi1, xi2, , xim] với xi∈A, A- bảng ký tự nguồn, thông thường A={0,1}
- Mỗi một thông điệp Xi có một xác suất xuất hiện P(X=Xi)
Khóa mật mã:
- Tập hợp khóa K= {K1, K2, , KL}
- Khóa độ dài l: Ki=[ki1, , kil] kij∈ C, C- bảng ký tự khóa, thông thường C={0,1}
Mã mật:
- Tập hợp thông điệp mã mật Y=[Y1, , Yn]
- Thông điệp mã mật: Yj=[yj1, , yjn] yjp ∈ B, B- bảng ký tự mã mật, thông thường B={0,1}
- Số lượng khóa được dùng trong thuật toán: Hệ thống mã hóa đối xứng, hệ thống
mã hóa không đối xứng
- Phương thức mà văn bản đầu được xử lý: mã hóa khối, mã hóa dòng
Trang 332.2 Quá trình mã hóa và giải mã
Quá trình mã hóa: Y=Ek(X)
Quá trình giải mã:
- Bên nhận giải mã thông điệp bằng khóa được phân phối: X=DK(Y)=DK(EK,R(X))
- Phía tấn công: đối phương nhận được thông điệp Y, nhưng không có được khóa K Dựa vào thông điệp Y, đối phương phải khôi phục lại hoặc K hoặc X hoặc cả hai
- Thuật toán mã hóa và giải mã đã biết trước
- Không gian khóa nhỏ: chỉ có 25 khóa
- Khi thám mã bằng phương pháp vét cạn: chỉ cần thử với 25 khóa
- Ngôn ngữ trong bản gốc đã biết trước và dễ dàng nhận biết
2.3.2 Hệ mã mật Hill
Thuật toán mã hóa:
- Mỗi ký tự được gán giá trị số: a=0, b=1, , z=25
- Lựa chọn m ký tự liên tiếp của văn bản gốc
- Thay thế các ký tự đã lựa chọn bằng m ký tự mã mật, được tính bằng m phương trình tuyến tính
- Hệ phương trình mã hóa:
C = K*P mod 26
K – là ma trận khóa