Giáo trình Bảo mật thông tin: Phần 1 cung cấp cho người học những kiến thức như: Giới thiệu chung về mật mã, Mật mã cổ điển, Chuẩn mã dữ liệu. Mời các bạn cùng tham khảo để nắm chi tiết nội dung giáo trình!
Trang 1MỤC LỤC
LỜI NÓI ĐẦU 5
CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ MẬT MÃ 6
1.1 Sơ lược về lịch sử mật mã 6
1.1.1 Mật mã cổ điển 7
1.1.2 Mật mã hiện đại 7
1.2 Các hệ thống mật mã 8
1.2.1 Sơ đồ hệ thống mật mã 8
1.2.2 Yêu cầu của một hệ mật mã 9
1.2.3 Mã khối và mã dòng 9
1.3 Mật mã khóa đối xứng và mật mã khóa công khai 10
1.3.1 Hệ mật mã khóa đối xứng 10
1.3.2 Hệ mật mã khóa công khai 11
1.4 Các bài toán trong an toàn thông tin 12
1.5 Thám mã và tính an toàn của các hệ mật mã 13
1.5.1 Vấn đề thám mã 13
1.5.2 Tính an toàn của một hệ mật mã 14
CHƯƠNG 2: MẬT MÃ CỔ ĐIỂN 16
2.1 Giới thiệu 16
2.2 Cơ sở toán học 17
2.2.1 Tính chia hết của các số nguyên 17
2.2.2 Thuật toán Euclide và thuật toán Euclid mở rộng 18
2.2.3 Quan hệ đồng dư và số học modulo m 21
2.2.4 Phương trình đồng dư 24
2.2.5 Các lớp thặng dư 25
2.2.6 Hàm Euler 26
2.3 Một số hệ mật mã đơn giản 26
2.3.1 Hệ mật mã dịch chuyển (Shift cipher) 26
2.3.2 Hệ mật mã thay thế (substitution cipher) 28
2.3.3 Hệ mật mã Affine 29
2.3.4 Hệ mật mã Vigenere 31
2.3.5 Hệ mật mã Hill 32
2.3.6 Hệ mật mã hoán vị 36
Trang 22.3.7 Các hệ mật mã dòng 37
2.4 Mã thám các hệ mật mã cổ điển 40
2.4.1 Thám hệ mật mã Affine 42
2.4.2 Thám hệ mật mã thay thế 43
2.4.3 Tấn công với bản rõ đã biết trên hệ mật mã Hill 45
2.4.4 Thám mã đối với hệ mật mã Vigenère 46
2.4.5 Thám mã hệ mã dòng xây dựng trên LFSR 51
BÀI TẬP 54
CHƯƠNG 3: CHUẨN MÃ DỮ LIỆU 58
3.1 Giới thiệu hệ mật mã chuẩn 58
3.2 Hệ mật mã DES 59
3.2.1 Mô tả DES 59
3.2.2 Cách hoán vị bit 61
3.2.3 Cách tính bảng khoá từ khoá ban đầu K 62
3.2.4 Cách tính hàm f (Feistel Function) 67
3.2.5 DES trong thực tế 76
3.2.6 Phép tối ưu hoá thời gian - bộ nhớ 76
3.2.7 Độ an toàn và việc thám mã đối với DES 79
3.3 Hệ mật IDEA 82
3.3.1 Khái quát chung về hệ mật IDEA 82
3.3.2 Một số phép toán 82
3.3.3 Mô tả thuật toán IDEA 83
3.3.4 Những đặc tính quan trọng 88
CHƯƠNG 4: CÁC HỆ MẬT MÃ KHOÁ CÔNG KHAI 89
4.1 Giới thiệu về mật mã khoá công khai 89
4.1.1 Một số bài toán cơ bản 90
4.1.2 Một số hệ mật mã khoá công khai quan trọng : 93
4.1.3 Hàm cửa sập một chiều 93
4.1.4 Định nghĩa hệ mật mã khóa công khai 95
4.2 Kiểm tra tính nguyên tố theo xác suất 95
4.2.1 Một số khái niệm và định nghĩa 96
4.2.2 Thuật toán kiểm tra số nguyên tố theo xác suất 100
4.3 Một số kiến thức toán học 101
4.3.1 Định lý phần dư China 101
4.3.2 Một số định lý số học 102
Trang 34.3.3 Phần tử nguyên thủy 104
4.3.4 Tính đồng dư của lũy thừa lớn (xe mod n) 105
4.4 Hệ mật mã RSA 107
4.4.1 Định nghĩa 107
4.4.2 Thực hiện hệ mật mã RSA 108
4.4.3 Tính bảo mật của hệ mật mã RSA 108
4.4.4 Các phương pháp tấn công hệ mật mã RSA 109
4.5 Hệ mật mã Rabin 116
4.5.1 Định nghĩa 116
4.5.2 Tính an toàn của hệ mật mã Rabin 118
4.6 Các thuật toán phân tích thừa số nguyên tố 119
4.6.1 Phương pháp p-1 119
4.6.2 Thuật toán Dixon và sàng bậc hai 120
4.6.3 Các thuật toán phân tích trên thực tế 122
4.7 Hệ mật mã Elgamal và các giải thuật rời rạc 123
4.7.1 Hệ mật Elgamal 123
4.7.2 Tính an toàn của hệ mật mã ElGamal 124
4.7.3 Các thuật toán cho bài toán Logarithm rời rạc 125
4.8 Các hệ mật dựa trên các bài toán NP đầy đủ 129
4.8.1 Khái niệm độ phức tạp tính toán 129
4.8.2 Nguyên tắc chung xây dựng các hệ mật dựa trên các bài toán NP đầy đủ 129 4.8.3 Hệ mật xếp ba lô Merkle – Hellman 130
4.8.4 Hệ mật McEliece 132
BÀI TẬP 138
CHƯƠNG 5: CHỮ KÝ ĐIỆN TỬ HÀM HASH VÀ PHÂN PHỐI KHOÁ 142
5.1 Các sơ đồ chữ ký điện tử 142
5.1.1 Khái niệm sơ đồ chữ ký số 143
5.1.2 Phân loại chữ ký số 144
5.1.3 Sơ đồ chữ ký RSA (đề xuất năm 1978) 145
5.1.4 Sơ đồ chữ ký Elgamal 146
5.1.5 Chuẩn chữ ký điện tử 150
5.1.6 Chữ ký một lần 151
5.1.7 Các chữ ký không chối được 153
5.2 Các hàm Hash 155
5.2.1 Các chữ ký và các hàm Hash 155
Trang 45.2.2 Hàm Hash không va chạm 156
5.2.3 Hàm Hash logarithm rời rạc 157
5.2.4 Các hàm Hash mở rộng 159
5.2.5 Hàm Hash MD4 159
5.3 Phân phối và thoả thuận về khoá 165
5.3.1 Giới thiệu 165
5.3.2 Phân phối khoá trước 167
5.3.3 Kerboros 170
5.3.4 Trao đổi khoá Diffie - Hellman 171
BÀI TẬP 177
Trang 5LỜI NÓI ĐẦU
Từ khi con người có nhu cầu trao đổi thông tin với nhau thì nhu cầu giữ bí mật thông tin cũng xuất hiện Trong thời đại ngày nay, với sự phát triển của khoa học kỹ thuật, các phương tiện truyền thông ngày càng đa dạng, việc trao đổi thông tin càng trở nên dễ dàng thì việc giữ bí mật thông tin càng khó khăn Các trao đổi thông tin qua mạng Intenet, các hình ảnh trên mặt đất, các cuộc đàm thoại hữu tuyến và vô tuyến… đều có thể dễ dàng thu được nhờ các thiết bị điện tử trên mặt đất hoặc từ vệ tinh nên an toàn thông tin đã trở thành nhu cầu bắt buộc cho mọi hệ thống ứng dụng
Từ thời xa xưa, con người đã nghĩ ra cách che dấu thông tin bằng cách biến đổi thông tin đó thành dạng thông tin khác mà người ngoài cuộc không hiểu được, đồng thời có cách khôi phục lại nguyên dạng ban đầu để người trong cuộc hiểu được Phương pháp thực hiện như vậy gọi là mã hóa dữ liệu, sau này phát triển thành ngành khoa học gọi là mật mã học Đây cũng là kỹ thuật lâu đời nhất trong việc đảm bảo an toàn thông tin Ngày nay, cùng với sự phát triển của các ngành khoa học, các kỹ thuật
mã hóa cũng ngày càng đa dạng và tinh vi hơn Công nghệ mã hóa thông tin đã thu hút rất nhiều sự quan tâm của các nhà khoa học trên thế giới Từ chỗ chỉ được sử dụng trong lĩnh vực chính trị, quân sự, mã hóa dữ liệu đã được đưa vào sử dụng trong mọi lĩnh vực Hiện nay có rất nhiều kỹ thuật mật mã khác nhau, mỗi kỹ thuật có những ưu nhược điểm riêng
Để đáp ứng nhu cầu học tập và tìm hiểu của sinh viên ngành Công nghệ thông tin, giáo trình Bảo mật thông tin được biên soạn giúp sinh viên có cái nhìn tổng quan
về lĩnh vực an toàn và bảo mật thông tin, tiếp cận một số phương pháp mã hóa dữ liệu, làm cơ sở cho những nghiên cứu mở rộng tiếp theo
Giáo trình gồm 5 chương: Chương 1 giới thiệu tổng quan về mật mã, chương 2 tóm tắt sơ lược về mã hóa cổ điển, chương 3 trình bày về chuẩn mã dữ liệu, chương 4 nêu một số hệ mật mã khóa công khai, chương 5 giới thiệu một số sơ đồ chữ ký điện
tử, hàm Hash và phân phối khóa
Giáo trình được biên soạn theo khung chương trình môn học Bảo mật thông tin, nội dung dựa trên cơ sở cuốn “Cryptography: Theory and Practice” của Douglas Stinson, người dịch Nguyễn Bình Với mục đích trang bị các kiến thức cơ sở giúp sinh viên tiếp cận với phương pháp bảo vệ dữ liệu bằng cách mã hóa, giáo trình đã trình bày tóm tắt các phần lý thuyết toán học cơ bản được áp dụng trong các hệ mật mã, đưa
ra những ví dụ minh họa cụ thể, cuối mỗi chương đều có bài tập
Do lần đầu biên soạn nên không tránh khỏi những sai sót và lỗi in ấn nhất định Tác giả xin vui lòng tiếp nhận mọi sự đóng góp giúp cho giáo trình “Bảo mật thông tin” ngày càng tốt hơn
Trang 6CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ MẬT MÃ 1.1 Sơ lược về lịch sử mật mã
Nhu cầu sử dụng mật mã xuất hiện từ rất sớm, từ khi con người biết trao đổi và truyền thông tin cho nhau, đặc biệt khi các thông tin đó được thể hiện dưới hình thức ngôn ngữ, thư từ Các hình thức mật mã sơ khai đã được tìm thấy từ khoảng bốn nghìn năm trước trong nền văn minh Aicập cổ đại Trải qua hàng nghìn năm lịch sử, mật mã
đã được sử dụng rộng rãi trên khắp thế giới để giữ bí mật cho việc giao lưu thông tin trong nhiều lĩnh vực hoạt động của con người và các quốc gia, đặc biệt trong các lĩnh vực chính trị, quân sự, ngoại giao
Mật mã học là khoa học nghiên cứu mật mã: Tạo mã và Phân tích mã Phân tích
mã là kỹ thuật phân tích mật mã, kiểm tra tính bảo mật của nó hoặc phá vỡ bí mật của
nó Phân tích mã còn được gọi là Thám mã
Một số khái niệm
- Mã hóa là quá trình chuyển thông tin có thể đọc được (gọi là bản rõ) thành thông tin khó có thể đọc được (gọi là bản mã)
- Giải mã là quá trình chuyển đổi thông tin từ bản mã thành bản rõ
- Thuật toán mã hóa hay giải mã là thủ tục tính toán để thực hiện mã hóa hay giải
mã
- Khóa mã hóa là một giá trị làm cho thuật toán mã hóa được thực hiện theo cách riêng biệt Phạm vi có thể có của khóa được gọi là Không gian khóa
- Hệ mã hóa là tập các thuật toán, các khóa
Mật mã học có một lịch sử phát triển dài và phức tạp, tuy nhiên có thể chia thành hai giai đoạn chính
Mật mã cổ điển : là các hệ mật mã ra đời trước năm 1949 chủ yếu dùng để che
giấu dữ liệu Trong giai đoạn này mật mã học được coi là một nghệ thuật nhiều hơn là một môn khoa học mặc dù đã được ứng dụng trong thực tế
Mật mã hiện đại : Lịch sử mật mã học được đánh dấu vào năm 1949 khi
Claude Shannon đưa ra lý thuyết thông tin Mật mã hiện đại ngoài khả năng che giấu thông tin còn dùng để thực hiện ký số, tạo đại diện thông điệp, giao thức bảo toàn dữ liệu, giao thức xác định thực thể,… Kể từ đó một loạt các nghiên cứu quan trọng của ngành mật mã học được thực hiện như nghiên cứu về mã khối, sự ra đời của các hệ mật khóa công khai và chữ ký điện tử
Trang 71.1.1 Mật mã cổ điển
Trong phần lớn thời gian phát triển của mình, lịch sử mật mã học chính là lịch
sử của những phương pháp mật mã học cổ điển chỉ cần bút và giấy Khi các thông báo, thư từ được truyền đi và trao đổi với nhau thường là các văn bản, tức là có dạng các dãy ký tự trong một ngôn ngữ nào đó, các thuật toán lập mã thường cũng đơn giản là thuật toán xáo trộn, thay đổi các ký tự được xác định bởi các phép chuyển dịch, thay thế hay hoán vị các ký tự trong bảng ký tự của ngôn ngữ tương ứng Các cách mã hóa này rất dễ bị dò ra bằng phương pháp phân tích tần suất Mật mã cổ điển vẫn được phổ biến đến ngày nay chủ yếu thông qua việc giải các ô đố chữ
Vào đầu thế kỷ 20, với sự tiến bộ của kỹ thuật tính toán và truyền thông, ngành mật mã cũng có những tiến bộ to lớn Một số thiết bị cơ khí đã được phát minh để thực hiện mã hóa, nổi tiếng nhất là máy Enigma được người Đức sử dụng trong đại chiến thế giới Mật mã được thực hiện bằng các máy móc đã tăng độ phức tạp lên đáng kể đối với công việc phân tích mã
Sau thế chiến thứ II trở đi, cả hai ngành, mật mã học và phân tích mã ngày càng
sử dụng nhiều các cơ sở toán học Tuy thế, chỉ đến khi máy tính và các phương tiện truyền thông Internet trở nên phổ biến, người ta mới có thể mang tính hữu dụng của mật mã học vào trong những thói quen sử dụng hằng ngày của mọi người, thay vì chỉ được dùng bởi chính quyền các quốc gia hay các hoạt động kinh doanh lớn trước đó
1.1.2 Mật mã hiện đại
Sau chiến tranh thế giới thứ II, chính phủ, quân đội và một số công ty lớn của
Mỹ ráo riết tiến hành xây dựng các công cụ mã hóa Đầu những năm 1970 là sự phát triển của các thuật toán mã hóa khối, đầu tiên là Lucipher sau này phát triển thành DES DES sau đó đã có một sự phát triển rực rỡ cho tới đầu những năm 90
Bước ngoặt có tính cách mạng trong lịch sử khoa học mật mã hiện đại xẩy ra
vào năm 1976 khi hai tác giả Diffie và Hellman đưa ra khái niệm về mật mã khóa công
khai và một phương pháp trao đổi công khai để tạo ra một khóa bí mật chung mà tính
an toàn được bảo đảm bởi độ khó của một bài toán toán học (cụ thể là bài toán tính
"logarithm rời rạc") Hai năm sau, năm 1978, Rivest, Shamir và Adleman tìm ra một
hệ mật mã khóa công khai và một sơ đồ chữ ký điện tử hoàn toàn có thể ứng dụng
trong thực tiễn, tính bảo mật và an toàn của chúng được bảo đảm bằng độ phức tạp của một bài toán số học nổi tiếng là bài toán phân tích số nguyên thành các thừa số nguyên
tố Sau phát minh ra hệ mật mã đó (nay thường gọi là hệ RSA), việc nghiên cứu để
Trang 8phát minh ra các hệ mật mã khóa công khai khác và ứng dụng các hệ mật mã khóa công khai vào các bài toán khác nhau của an toàn thông tin đã được tiến hành rộng rãi,
lý thuyết mật mã và an toàn thông tin trở thành một lĩnh vực khoa học được phát triển nhanh trong vài ba thập niên cuối của thế kỷ 20, lôi cuốn theo sự phát triển của một số
bộ môn của toán học và tin học
1.2 Các hệ thống mật mã
1.2.1 Sơ đồ hệ thống mật mã
Trong mọi hoạt động của con người, nhu cầu trao đổi thông tin mật giữa những thành viên thuộc một nhóm nào đó với nhau là hết sức cần thiết Trong thời đại ngày nay, với sự phát triển của các phương tiện truyền thông và Internet, việc giữ bí mật ngày càng trở nên khó khăn Một trong những phương pháp thông dụng để giữ bí mật thông tin là mã hóa chúng bằng một hệ mật mã nào đó trước khi truyền đi
Giả sử một người gửi A muốn gửi đến một người nhận B một văn bản p Để bảo mật, A lập cho p một bản mật mã c và gửi c cho B, B nhận được c sẽ "giải mã" c
để thu được văn bản p như A định gửi Để A biến p thành c và B biến ngược lại c thành p, A và B phải thỏa thuận trước với nhau các thuật toán lập mã, giải mã và một
khóa mật mã chung K để thực hiện các thuật toán đó Người ngoài không biết các
thông tin này (đặc biệt không biết khóa K), cho dù có lấy trộm được c trên kênh truyền thông công cộng cũng không thể tìm được văn bản p mà hai người A, B muốn gửi cho
Trang 9 P (Plaintext) là một tập hữu hạn các bản rõ
C (Ciphertext) là một tập hữu hạn các bản mã
K (Key) là tập hữu hạn các khoá
E (Encryption) là tập các quy tắc mã hóa
D (Decryption) là tập hợp các quy tắc giải mã
Với mỗi k K có một quy tắc mã ek: P C và một quy tắc giải mã tương ứng
dk D Mỗi ek và dk là những hàm thỏa mãn dk(ek (x)) = x với mọi bản rõ x P
Trong định nghĩa này, phép lập mật mã và giải mã được định nghĩa cho từng ký
tự của bản rõ hoặc bản mã Trong thực tế, bản rõ của một thông báo thường là một dãy các ký tự bản rõ, tức là phần tử của tập P* và bản mật mã cũng là một dãy các ký tự bản mã, tức là phần tử của tập C*
1.2.2 Yêu cầu của một hệ mật mã
Độ tin cậy: cung cấp sự bí mật cho các thông báo và dữ liệu được lưu bằng việc
sử dụng các kỹ thuật mã hoá
Tính toàn vẹn: cung cấp sự bảo đảm với tất cả các bên rằng thông báo không bị
thay đổi từ khi gửi cho đến khi người nhận mở nó
Tính không chối bỏ: cung cấp một cách xác thực rằng tài liệu đã đến từ ai đó
ngay cả khi họ cố gắng chối bỏ nó
1.2.3 Mã khối và mã dòng
Trong mật mã học, mã hoá khối là những thuật toán mã hoá đối xứng hoạt động trên những khối thông tin có độ dài xác định (block) với những chuyển đổi xác định Chẳng hạn một thuật toán mã hoá khối có thể xử lý khối 128 bít đầu vào và biến nó thành khối 128 bít ở đầu ra Quá trình chuyển đổi còn sử dụng thêm một tham số nữa: khoá bí mật để cá biệt hoá quá trình Việc giải mã cũng diễn ra tương ứng: xử lý khối
mã hoá 128 bít cùng với khoá để trả về khối 128 bít bản rõ ban đầu
Để mã hoá những khối văn bản có độ dài vượt quá độ dài của khối, người ta sử dụng thuật toán theo một chế độ mã hoá khối nào đó
Trang 10Thực hiện mã theo khối (block cipher):
Trước hết ta xác định một độ dài khối (chẳng hạn là m), tiếp đó mở rộng không
gian khóa từ K thành Km
, với mỗi K =K1 K m K m , mở rộng e K và d K thành các thuật
toán e K : P m C m và d K : C mP m như sau: với mọi x1 x kP m và y1 y k C m
eK(x1, …, xm) = eK1(x1)…eKm(xm)
dK(y1, …, ym) = dK1(y1)…dKm(ym)
Giả sử bản rõ mà ta muốn lập mật mã là dãy ký tự X P* Cắt X thành từng
khối, mỗi khối có độ dài m, nếu khối cuối cùng có độ dài nhỏ hơn m thì bổ sung vào phần cuối của khối một số ký tự qui ước nào đó để nó cũng có độ dài m Do đó có thể
giả thiết X = X1 X m , trong đó mỗi X1, ,X m là một khối có độ dài m, định nghĩa bản
Với cách mã theo dòng (stream cipher), trước hết phải xác định một dòng
khóa, tức là một phần tử K = K1 K m K * , với dòng khóa đó ta xác định mọi bản rõ X
"mầm" chọn trước Trong các ứng dụng thực tế, người ta thường dùng cách mã theo
dòng có sơ đồ mật mã gốc là sơ đồ Vernam với P = C = K = {0,1} và các hàm lập mã
và giải mã được xác định bởi
e K (x) = x + K mod 2, d K (y) = y +K mod 2 (K = 0 hoặc 1)
dòng khóa được sinh ra bởi một bộ tạo dãy bit ngẫu nhiên nào đó
1.3 Mật mã khóa đối xứng và mật mã khóa công khai
1.3.1 Hệ mật mã khóa đối xứng
Mật mã khoá đối xứng là các hệ mật mã khi biết được khoá lập mã (ke) thì có thể tính được khoá giải mã (kd) và ngược lại Đặc biệt một số hệ mật mã có khoá lập
mã và khoá giải mã trùng nhau, như hệ mật mã dịch chuyển hay hệ mật mã DES
Hệ mật mã khoá đối xứng còn gọi là hệ mật mã khoá bí mật hay khóa riêng, vì phải giữ bí mật cả 2 khoá Trước khi dùng hệ mật mã khoá đối xứng, người gửi và
Trang 11người nhận phải thoả thuận thuật toán mã hoá và khoá chung (lập mã hay giải mã), khóa phải được giữ bí mật Độ an toàn của hệ mật mã loại này phụ thuộc vào khoá Một số hệ mật mã khóa đối xứng:
- Các hệ mã hóa cổ điển
- Một số hệ mã hóa hiện đại: DES, ASE, IDEA,…
Nơi ứng dụng:
Hệ mật mã khoá đối xứng thường được sử dụng trong môi trường mà khoá
chung có thể dễ dàng trao chuyển bí mật như trong cùng một mạng nội bộ Hệ mật mã khóa đối xứng thường dùng để mã hoá những bản tin lớn vì tốc độ mã hoá và giải mã nhanh hơn hệ mật mã khoá công khai
Các vấn đề đối với phương pháp mã hóa đối xứng
- Phương pháp mã hoá đối xứng đòi hỏi người mã hoá và người giải mã phải cùng chung một khoá Khi đó khoá phải được giữ bí mật tuyệt đối vì dễ dàng
xác định một khoá nếu biết khoá kia
- Hệ mật mã khóa đối xứng không an toàn nếu khoá bị lộ với xác suất cao Trong
hệ này khoá phải được gửi đi trên kênh an toàn
- Vấn đề quản lý và phân phối khoá khó khăn phức tạp khi sử dụng hệ mật mã khoá đối xứng Người gửi và người nhận phải luôn thống nhất với nhau về
khoá
- Việc thay đổi khoá rất khó và dễ bị lộ
- Khuynh hướng cung cấp khoá dài mà nó phải được thay đổi thường xuyên cho mọi người trong khi vẫn duy trì cả tính an toàn lẫn hiệu quả chi phí sẽ cản trở
rất nhiều tới việc phát triển hệ mật mã này
1.3.2 Hệ mật mã khóa công khai
Hệ mật mã khóa công khai còn gọi là hệ mật mã phi đối xứng là hệ mật mã có khoá lập mã và khoá giải mã khác nhau (ke ≠ kd), biết được khoá này cũng “khó” tính
Trang 12được khoá kia
Trong hệ mật mã này khoá lập mã cho công khai, gọi là khoá công khai (public key), khoá giải mã giữ bí mật, gọi là khoá riêng (private key) hay khoá bí mật Một người bất kỳ có thể dùng khoá công khai để mã hoá bản tin, nhưng chỉ người có đúng khoá giải mã thì mới có khả năng đọc được bản rõ
Đặc điểm của hệ mật mã khóa công khai
- Thuật toán được viết một lần, công khai cho nhiều lần dùng, cho nhiều người dùng, chỉ cần giữ bí mật khoá riêng
- Khi biết các tham số ban đầu của hệ mã hoá, việc tính ra cặp khoá công khai
và bí mật phải là “dễ”, tức là trong thời gian đa thức
Người gửi có bản rõ P và khoá công khai thì “dễ” tạo ra bản mã C
Người nhận có bản mã C và khoá bí mật thì “dễ” giải được thành bản rõ P
- Người mã hoá dùng khoá công khai, người giải mã giữ khoá bí mật Khả năng
lộ khoá bí mật khó hơn vì chỉ có một người biết
Nếu thám mã biết khoá công khai, cố gắng tìm khoá bí mật thì phải đương đầu với bài toán “khó”
Nếu thám mã biết khoá công khai và bản mã C, thì việc tìm ra bản rõ P cũng là bài toán “khó”, số phép thử là vô cùng lớn, không khả thi
- Hệ mật mã khoá công khai thực hiện mã hoá và giải mã chậm hơn hệ mật mã khoá đối xứng
Nơi sử dụng hệ mật mã khóa công khai
Hệ mật mã khoá công khai thường được sử dụng chủ yếu trên các mạng công khai như Internet khi mà việc trao chuyển khoá bí mật tương đối khó khăn
Đặc trưng nổi bật của hệ mật mã khoá công khai là khoá công khai (public key)
và bản mã (ciphertext) đều có thể gửi đi trên một kênh truyền tin không an toàn Có biết cả khoá công khai và bản mã thì thám mã cũng không dễ khám phá được bản rõ
Nhưng vì tốc độ mã hoá và giải mã chậm, nên hệ mật mã khoá công khai chỉ dùng để mã hoá những bản tin ngắn như mã hoá khoá bí mật gửi đi Hệ mật mã khoá công khai thường được sử dụng cho cặp người dùng thoả thuận khoá bí mật của hệ mã hoá khoá riêng
1.4 Các bài toán trong an toàn thông tin
Trong thời đại bùng nổ thông tin như hiện nay, nhu cầu trao đổi thông tin và các phương tiện truyền đưa thông tin phát triển một cách nhanh chóng Cùng với sự phát
Trang 13triển đó, đòi hỏi bảo vệ tính bí mật và an toàn của thông tin cũng ngày càng lớn và có tính phổ biến Có nhiều bài toán khác nhau về yêu cầu an toàn thông tin tùy theo những tình huống khác nhau, thường gặp trong thực tiễn là những bài toán sau đây:
- Bảo mật: giữ thông tin được bí mật đối với tất cả mọi người, trừ một ít người
có thẩm quyền được đọc, biết thông tin đó
- Toàn vẹn thông tin: bảo đảm thông tin không bị thay đổi hay xuyên tạc bởi
những kẻ không có thẩm quyền hoặc bằng những phương tiện không được phép
- Nhận thực một thực thể: xác nhận danh tính của một thực thể, chẳng hạn một
người, một máy tính cuối trong mạng, một thẻ tín dụng,
- Nhận thực một thông báo: xác nhận nguồn gốc của một thông báo được gửi
đến
- Chữ ký: một cách để gắn kết một thông tin với một thực thể, thường dùng
trong bài toán nhận thực một thông báo cũng như trong nhiều bài toán nhận thực khác
- Ủy quyền: chuyển cho một thực thể khác quyền được đại diện hoặc được làm
- Làm chứng: kiểm thử việc tồn tại một thông tin ở một thực thể khác với người
chủ sở hữu thông tin đó
- Không chối bỏ được: ngăn ngừa việc chối bỏ trách nhiệm đối với một cam kết
đã có (ví dụ đã ký vào một văn bản)
- Ẩn danh: che giấu danh tính của một thực thể tham gia trong một tiến trình
nào đó (thường dùng trong giao dịch tiền điện tử)
- Thu hồi: rút lại một giấy chứng chỉ hay ủy quyền đã cấp
Cơ sở của các giải pháp cho các bài toán kể trên là các phương pháp mật mã, đặc biệt là mật mã khóa công khai
Trang 14cộng) người thám mã phải phát hiện được nội dung thông tin bị che giấu trong bản mật
mã, tốt nhất là tìm ra được bản rõ gốc của bản mật mã đó Tình huống thường gặp là bản thân sơ đồ hệ thống mật mã, kể cả các phép lập mã và giải mã (tức các thuật toán
E và D), không nhất thiết là bí mật, do đó bài toán qui về việc tìm chìa khóa mật mã K
hay chìa khóa giải mã K'', nếu hệ mật mã có khóa phi đối xứng Như vậy, có thể qui ước xem bài toán thám mã cơ bản là bài toán tìm khóa mật mã K (hay khóa giải mã
K'') Để giải bài toán đó, giả thiết người thám mã biết thông tin về sơ đồ hệ mật mã
được dùng, kể cả các phép lập mã và giải mã tổng quát E và D Ngoài ra, người thám
mã có thể biết thêm một số thông tin khác, tùy theo những thông tin được biết thêm này mà có thể phân loại bài toán thám mã thành các bài toán cụ thể như sau:
- 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
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 bản rõ tương ứng X Điều này có thể xẩy ra khi người thám mã
chiếm được tạm thời máy giải mã
1.5.2 Tính an toàn của một 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ật mã đó Người ta đã đề xuất một số cách hiểu cho khái niệm an toàn của hệ thống mật mã, để trên cơ sở các cách hiểu đó nghiên cứu tính an toàn của nhiều hệ mật mã khác nhau, sau đây là vài cách hiểu thông dụng nhất:
- 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ật mã là an toàn vô điều
kiện, hay theo thuật ngữ của C.Shannon, hệ là bí mật hoàn toàn Như vậy, hệ là an
toàn vô điều kiện, nếu độ bất định về bản rõ sau khi người thám mã có được các thông tin (về bản mã) bằng độ bất định về bản rõ trước đó
- An toàn được chứng minh: một hệ thống mật mã đượ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
Trang 15đó khó tương đương với một bài toán khó đã biết, thí dụ bài toán phân tích một số
nguyên thành tích các thừa số nguyên tố, bài toán tìm logarithm rời rạc theo một
modulo 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ật mã được xem là an toàn (về mặt) tính toán, nếu 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 toán của một kẻ thù giả định An toàn theo nghĩa này, nói theo ngôn ngữ của lý thuyết về độ phức tạp tính toán, là bao hàm cả khái niệm
an toàn theo nghĩa "được chứng minh" nói trên
Trang 16CHƯƠNG 2: MẬT MÃ CỔ ĐIỂN 2.1 Giới thiệu
Hệ mật mã khoá đối xứng đã được dùng từ rất sớm, nên còn gọi là hệ mật mã khoá đối xứng - cổ điển Trong suốt một thời kỳ lịch sử dài từ thời cổ đại cho đến vài
ba thập niên gần đây, các phương pháp mật mã được sử dụng trong thực tế đều là mật
mã khoá đối xứng, từ hệ mật mã Ceasar đã được dùng hơn nghìn năm trước cho đến các hệ mật mã được sử dụng với sự trợ giúp của kỹ thuật máy tính hiện đại trong thời gian gần đây
Các phương thức mã hoá cổ điển chủ yếu dựa trên mã hoá hoán vị và mã hoá thay thế Trong mã hoá thay thế, các ký tự (hoặc nhóm ký tự) được thay thế một cách
có quy luật trong toàn bộ thông điệp bằng các ký tự khác (hoặc nhóm ký tự) Trong phương thức mã hoá hoán vị thì các ký tự được giữ nguyên, nhưng trật tự của chúng
trong bản tin lại thay đổi theo một quy luật nào đó
Nói chung các hệ mật mã khóa đối xứng dùng để mã hóa và giải mã các văn bản thông thường, để đơn giản, ta xét các văn bản tiếng Anh, nghĩa là sử dụng bảng chữ cái Latinh từ A đến Z
Quá trình lập mã và giải mã thường được tiến hành theo các bước:
Trang 17Hệ mã hoá dịch chuyển: Khoá có 1 “chìa” (thể hiện bằng 1 giá trị)
Hệ mã Affine: Khoá có 2 “chìa” (thể hiện bằng 2 giá trị)
Hệ mã hoá thay thế: Khoá có 26 “chìa” (thể hiện bằng 26 giá trị)
Hệ mã hoá Vigenere: Khoá có m “chìa” (thể hiện bằng m giá trị)
Hệ mã hoá HILL:Khoá có ma trận “chìa” (chùm chìa khoá)
2.2 Cơ sở toán học
Lý thuyết mật mã là một ngành khoa học đƣợc xây dựng dựa trên cơ sở toán học, đặc biệt là lý thuyết số học Phần này sẽ hệ thống lại một số kiến thức toán học cần thiết đƣợc sử dụng trong các hệ mật mã cổ điển nói riêng và lý thuyết mật mã nói chung
2.2.1 Tính chia hết của các số nguyên
Ta ký hiệu: Z là tập hợp các số nguyên Z = { ,-2,-1, 0, 1, 2, }
Z + là tập hợp các số nguyên không âm Z += {0, 1, 2, }
Z n là tập các số nguyên không âm nhỏ hơn n Z n = {0, 1, 2, …, n-1 }
a Một số khái niệm
Ước số và bội số:
Cho hai số nguyên a và b, b ≠0 Nếu có một số nguyên q sao cho a = b*q thì ta nói rằng a chia hết cho b, ký hiệu ba Khi đó, b là ƣớc của a và a là bội của b
Trang 18Cho các số nguyên a, b ≠0, tồn tại cặp số nguyên (q, r) (0 ≤ r < b) duy nhất sao cho a = b*q + r Khi đó q gọi là thương nguyên, r gọi là số dư của phép chia a cho b Nếu r = 0 ta có phép chia hết
Ước chung lớn nhất, bội chung nhỏ nhất
Số nguyên d được gọi là ước chung của các số nguyên a1, a2, …, an nếu nó là ước của tất cả các số đó
Số nguyên m được gọi là bội chung của các số nguyên a1, a2, …, an nếu nó là bội của tất cả các số đó
Một ước chung d > 0 của các số nguyên a1, a2, …, an trong đó mọi ước chung của
a1, a2, …, an đều là ước của d thì d được gọi là ước chung lớn nhất của a1, a2,…, an, ký hiệu d = gcd(a1, a2, …, an) Nếu gcd(a1, a2, …, an) = 1 thì các số a1, a2,…, an được gọi
tồn tại các số x1, x2, …, xn sao cho d = a1x1 + a2x2 +…+ anxn
2 Nếu a1, a2, …, an nguyên tố cùng nhau tồn tại các số x1, x2, …, xn sao cho
a1x1 + a2x2 +…+ anxn =1
3 d = gcd(a1, a2, …, an) gcd(a1/d, a2/d, …, an/d) =1
4 Nếu gcd (a, b) = 1 thì lcm (a,b) = a*b
5 Nếu b > 0, a = b*q + r thì gcd(a, b) = gcd (b, r)
6 gcd(a, b)*lcm(a,b) = a*b
2.2.2 Thuật toán Euclide và thuật toán Euclid mở rộng
Thuật toán Euclid tìm ước chung lớn nhất
Bài toán
Input : Hai số nguyên không âm a, b thỏa mãn a ≥ b
Output : d = gcd(a,b)
Thuật toán :
Trang 192 Return a ;
Ví dụ: Dùng thuật toán Euclide tìm gcd( 4864, 3458)
Kết quả: gcd(4864, 3458) = 38
Nếu gcd(a, b) = d thì phương trình a*x + b*y = d có nghiệm nguyên (x, y) duy
nhất tìm được bởi thuật toán Euclide mở rộng như sau:
Thuật toán Euclid mở rộng
Thuật toán Euclid mở rộng sử dụng để giải phương trình vô định nguyên (còn
được gọi là phương trình Đi-ô-phăng) a*x+b*y = c với a, b,c là các hệ số nguyên, x, y
là các ẩn nhận giá trị nguyên Điều kiện cần và đủ để phương trình này có nghiệm
(nguyên) là UCLN(a,b) là ước của c Khẳng định này dựa trên một mệnh đề: nếu
d=UCLN(a,b) thì tồn tại các số nguyên x, y sao cho a*x+b*y = d
Cơ sở lý thuyết:
Giải thuật Euclid mở rộng kết hợp quá trình tìm ƯCLN(a,b) trong thuật toán
Euclid với việc tìm một cặp số x, y thoả mãn phương trình Đi-ô-phăng
Trang 20Giả sử cho hai số tự nhiên a, b thỏa mãn a > b > 0 Đặt r o = a,r1 = b, chia r0 cho r1được số dư r2 Nếu r2 = 0 thì dừng, nếu r2 khác không, chia r1 cho r2 được số dư r3,…
Vì dãy các r i là giảm thực sự nên sau hữu hạn bước ta được số dư r m = 0
Input : Hai số nguyên không âm a, b, a ≥ b
Output : d = gcd(a, b) và hai số x, y thỏa mãn ax + by = d
Trang 21Cho các số nguyên a, b, m (m > 0) Ta nói a và b đồng dƣ với nhau theo modulo
m, ký hiệu là a b( mod m) nếu chia a và b cho m ta nhận đƣợc cùng một số dƣ
Trang 22Như vậy a b (mod m) a mod m = b mod m Nếu thay a bằng a mod m thì
ta nói rằng a được rút gọn theo modulo m
Ví dụ: 17 5 (mod 3) vì 17 và 5 chia cho 3 cùng có số dư là 2
Nhận xét: Các mệnh đề sau đây là tương đương:
Việc cộng và nhân trong Zm được thực hiện giống như cộng và nhân các số thực
nhưng kết quả được rút gọn theo modulo m
5 Phần tử nghịch đảo của phép cộng của a Zm là m-a,
nghĩa là a+(m-a) = (m-a)+a = 0 với a Zm
6 Phép nhân là đóng a, b Zm : a*b Zm
7 Phép nhân là giao hoán a, b Zm: a*b = b*a
8 Phép nhân là kết hợp a, b, c Zm: (a*b)*c = a*(c*b)
9 1 là phần tử đơn vị của phép nhân a Zm: a*1 = 1*a = a
10 Phép nhân có tính chất phân phối đối với phép cộng a, b, c Zm : (a + b)*c = (a*c) + (b*c)
a*(b+c) = (a*b) + (a*c)
Trang 23Các tính chất 1, 3-5 nói lên rằng Zm lập nên một cấu trúc đại số đƣợc gọi là một nhóm theo phép cộng Vì có thêm tính chất 4 nhóm đƣợc gọi là nhóm Aben (hay nhóm giao hoán)
Các tính chất 1-10 sẽ thiết lập nên một vành Zm
Phép trừ:
Vì phần tử ngƣợc của phép cộng tồn tại trong Zm nên cũng có thể trừ các phần
tử trong Zm Ta định nghĩa a- b trong Zm là a + m – b hoặc có thể tính số nguyên a - b rồi rút gọn theo modulo m
Ví dụ trong Z31: 11-18 = 11+ 31 -18 = 24 mod 31
Hay 11-18 = -7 =-1*31 + 24 = 24 mod 31
Phần tử nghịch đảo:
Cho a Z m , số nguyên x Z m đƣợc gọi là nghịch đảo của a theo modulo m nếu
a*x 1(mod m) và ký hiệu là x = a-1mod m Nếu tồn tại x nhƣ vậy thì a đƣợc gọi là
khả nghịch
Định lý về sự tồn tại phần tử nghịch đảo: a là khả nghịch theo modulo m khi và chỉ
khi gcd(a, m) = 1 Khi đó tồn tại duy nhất phần tử nghịch đảo x = a-1 mod m
Ví dụ: 22-1 mod 25 = 8 vì 22*8 176 1 (mod25)
Phép chia trong Z m đƣợc định nghĩa a : b (mod m) a*b-1 modm
Vậy phép chia chỉ thực hiện đƣợc khi b là khả nghịch theo mod m
Ví dụ: 15 : 22 (mod25) 15.22-1mod 25 20
Thuật toán Euclid tìm phần tử nghịch đảo trong Z m
Input : a Zn , gcd(a, m) = 1
Output : x = a-1 mod m
Ta có x = a-1 mod m a*x 1 mod m
t sao cho a*x = t*m + 1 -t*m + x*a =1
Áp dụng thuật toán Euclid mở rộng tìm phần tử nghịch đảo x = a-1mod m
Nghichdao(int a, int m)
Trang 24else return y+n ;
Ví dụ: Tìm số nghịch đảo của 30 theo modulo 101
Phương trình (1) có nghiệm khi và chỉ khi d = gcd(a,n )b, khi đó nó có đúng d
nghiệm theo modn Vậy phương trình có nghiệm duy nhất gcd(a, n)=1
Thực vậy, đặt a„ a/d , b’ b/d , n’ n/d , ta thấy phương trình đồng dư (1) tương đương với phương trình a’*x b’ (modn’ )
Vì gcd(a’, n’ ) = 1, nên phương trình này có một nghiệm theo modn’ :
x x0 b’*a’ -1 (modn’ )
Trang 25do đó phương trình (1) có d nghiệm theo modn là :
x = x0 , x0 n’, , x0 (d 1)n’ (modn)
Tất cả d nghiệm đó khác nhau theo mod n , nhưng cùng đồng dư với nhau theo mod n’
Ví dụ 1:
4x 5 (mod 9)
gcd(4, 9) = 1 phương trình có nghiệm duy nhất
x = 5*4-1mod 9 = 5* 7 mod 9 = 8 mod 9
phân hoạch trên tập hợp tất cả các số nguyên Z thành ra các lớp tương đương: hai số
nguyên thuộc cùng một lớp tương đương khi và chỉ khi chúng cho cùng một số dư nếu chia cho n
Mỗi lớp tương đương được đại diện bởi một số duy nhất trong tập hợp Z n = {0, 1,
2, 3, , n -1}, là số dư chung khi chia các số trong lớp đó cho n Ký hiệu một lớp được đại diện bởi số a là [a]n
Như vậy [a]n = [b]n a b (mod n)
Vì vậy có thể đồng nhất Zn với tập các lớp tương đương theo modulo n
Trang 26Zn = {0, 1, 2, …, n-1} được gọi là tập các thặng dư đầy đủ theo modulo n, một số nguyên bất kỳ đều tìm được trong Zn một số đồng dư với mình theo modulo n
Xét tập Z n* = { a Z n gcd(a, n ) = 1}, tức Z n* là tập con của Z n bao gồm tất cả
các phần tử nguyên tố với n Tập đó được gọi là tập các thặng dư thu gọn theo modn
Mọi số nguyên nguyên tố với n đều có thể tìm thấy trong Z n* một đại diện đồng dư với mình theo modulo n
Nếu p là một số nguyên tố thì Z p* = {1, 2, , p-1}
Tập Z n* lập thành một nhóm con đối với phép nhân của Z n vì trong Z n* phép chia
theo modulo n luôn thực hiện được, ta sẽ gọi Z n* là nhóm nhân của Z n
Định lý: Nếu n là tích của hai số nguyên tố p và q thì (n) = (p) (q) = (p-1)*(q-1)
Nếu p là số nguyên tố, r là số nguyên thì (pr)= pr-1*(p-1)
Trong trường hợp tổng quát, nếu dạng phân tích ra thừa số nguyên tố của n là
p11 p22 … pkk trong đó pi là các số nguyên tố, i là các số nguyên dương thì
Ví dụ : (720) = (24 32 5) = (24) (32) (5) = 23.(2-1).3.(3-1).(5-1) = 192
2.3 Một số hệ mật mã đơn giản
2.3.1 Hệ mật mã dịch chuyển (Shift cipher)
Mã dịch chuyển dựa trên số học theo modulo
Bản mã và bản rõ của hệ mật mã là các văn bản, để đơn giản ta coi đó là tập các chữ cái Latinh gồm 26 ký tự trong bảng chữ cái tiếng Anh, được đánh số từ 0 đến 25,
vậy có thể đồng nhất nó với tập Z26
Định nghĩa:
Sơ đồ các hệ mật mã dịch chuyển là một bộ gồm 5 thành phần S =(P, C, K, E, D)
Trang 27trong đó P = C = K = Z26, các ánh xạ E và D được cho bởi:
K, x, y Z26: E(K, x) = x + K mod 26, D (K, y) = y - K mod 26
Các hệ mật mã được xác định như vậy là đúng đắn, vì với K, x , y Z26 ta đều
có: d K (e K (x)) = (x +K ) - K (mod26) = x
Các hệ mật mã dịch chuyển đã được sử dụng từ rất sớm, theo truyền thuyết, hệ
mã này với K =3 đã được dùng bởi J Ceasar từ thời đế quốc Lamã và được gọi là hệ
Nhận xét: Nếu một hệ mật có thể sử dụng được trong thực tế thì nó phải thoả mãn một số tính chất nhất định như:
1 Mỗi hàm mã hoá eK và mỗi hàm giải mã dK phải có khả năng tính toán được một cách hiệu quả
2 Đối phương dựa trên xâu bản mã phải không có khả năng xác định khoá K đã dùng hoặc không có khả năng xác định được xâu bản rõ x
Tính chất thứ hai xác định ý tưởng "bảo mật" Quá trình thử tính khoá K (khi đã biết bản mã y) được gọi là mã thám Cần chú ý rằng, nếu thám mã có thể xác định được K thì anh ta có thể giải mã được y bằng cách dùng dK Bởi vậy, việc xác định K cũng phải khó như việc xác định bản rõ x
Mã dịch chuyển (theo modulo 26) là không an toàn vì nó có thể bị thám theo phương pháp vét cạn Do chỉ có 26 khoá nên dễ dàng thử mọi khoá dK có thể cho tới khi nhận được bản rõ có nghĩa
Điều này được minh hoạ theo ví dụ:
Trang 28Trung bình có thể tính được bản rõ sau khi thử 26/2 = 13 quy tắc giải mã
Như đã chỉ ra trong ví dụ trên, điều kiện để một hệ mật an toàn là phép tìm khoá vét cạn phải không thể thực hiện được, tức không gian khoá phải rất lớn Tuy nhiên, một không gian khoá lớn vẫn chưa đủ đảm bảo độ mật
2.3.2 Hệ mật mã thay thế (substitution cipher)
Một hệ mật mã nổi tiếng khác là hệ mật mã thay thế Hệ mật mã này đã được sử
dụng hàng trăm năm Trò chơi đố chữ "cryptogram" trong các bài báo là những ví dụ
về mã thay thế
Định nghĩa:
Sơ đồ các hệ mật mã thay thế là một bộ gồm 5 thành phần S = (P, C, K, E, D) trong đó P = C = Z26, K là tập hợp tất cả các phép hoán vị trên Z26, các ánh xạ E và D được cho bởi: e(x) = (x), d(y) = -1(y) x P, y C, K là một phép hoán vị trên Z26 , -1 là hoán vị ngược của
Do sự tương ứng giữa tập Z26 với bảng ký tự tiếng Anh nên phép hoán vị trên
Z26 cũng được hiểu là một phép hoán vị trên tập hợp các ký tự tiếng Anh Trong mã
Trang 29thay thế, các phép mã và giải mã là các phép hoán vị của các kí tự Vì vậy không cần chuyển các ký tự sang dạng số và ngược lại
Ví dụ một phép hoán vị được cho bởi bảng :
a b c d e f g h i j k l m
X N Y A H P O G Z Q W B T
n o p q r s t u v w x y z
S F L R C V M U E K J D I Như vậy e(a) = X, e(b) = N …
Với hệ mật mã thay thế có khoá , bản rõ x = hengapnhauvaochieuthubay
Bởi vậy d(A) = d, d(B) = 1,
Mỗi khoá của mã thay thế là một phép hoán vị của 26 kí tự Số các hoán vị này là 26! là một số rất lớn Bởi vậy, phép tìm khoá vét cạn không thể thực hiện được, thậm chí bằng máy tính Tuy nhiên, hệ mã hóa này có thể dễ dàng bị thám bằng các phương pháp khác
2.3.3 Hệ mật mã Affine
Định nghĩa:
Sơ đồ các hệ mật mã Affine là một bộ gồm 5 thành phần S = (P, C, K, E, D) trong đó P = C = Z26, K = { (a,b) Z26 x Z26 gcd(a, 26) = 1},các ánh xạ E và D được cho bởi: eK(x ) = ax + b mod26,
Trang 30dK(y ) = a-1(y - b) mod26, với mọi x P , y C , K = (a, b) K
Các hệ mật mã đƣợc xác định nhƣ vậy là đúng đắn, vì với mọi K, x , y Z26 ta
đều có: d K (e K (x)) = a-1((ax +b) - b) mod26
Trang 31Số khóa có thể của hệ mật mã Affine là 12*26 = 312 khóa, vậy hệ mật mã này là
không an toàn
2.3.4 Hệ mật mã Vigenere
Trong các hệ mật mã dịch chuyển và mật mã thay thế (một khi khoá đã được chọn)
mỗi ký tự sẽ được ánh xạ vào một ký tự duy nhất, do đó các hệ mật còn được gọi hệ
thay thế đơn biểu, sơ đồ mật mã Vegenere (lấy tên của Blaise de Vigenère, sống vào
thế kỷ 16) không thực hiện trên từng ký tự một, mà được thực hiện trên từng bộ m ký
tự (m là số nguyên dương), mỗi khóa K là một chuỗi ký tự có độ dài m gọi là từ khóa
Sơ đồ hệ mật mã Vigenère có thể được xem là mở rộng của sơ đồ mã chuyển
dịch, nếu mã chuyển dịch thực hiện việc chuyển dịch từng ký tự một thì mã Vigenère
thực hiện đồng thời từng bộ m ký tự liên tiếp
(nếu độ dài của x không phải là bội số của 6, có thể qui ước thêm vào đoạn cuối của x
một số phần tử nào đó, chẳng hạn là các số 0, để bao giờ cũng có thể xem là x tách
được thành các đoạn có 6 số liên tiếp)
Cộng theo mod26 các số trong từng đoạn đó với các số tương ứng trong khoá K
được bản mật mã
y = 9 12 2 13 4 6 15 15 15 1 25 17 16 10 22 15 8 11 21 15 9 8 4 15
Trang 32chuyển sang dãy ký tự thu được bản mã là JMCNEGPPPBZRQKWPILVPJIEP
Từ bản mã, dùng thuật toán giải mã tương ứng lại thu được bản rõ ban đầu
Với độ dài m, số khóa trong hệ mật mã Vigenère là 26m Lượng khoá này khá lớn để ngăn ngừa việc tìm khoá bằng tay bằng phương pháp vét cạn Tuy nhiên, người
ta có phương pháp thám mã khác nhanh hơn
Trong hệ mật mã Vigenère có từ khoá độ dài m, mỗi ký tự có thể được ánh xạ vào trong m ký tự có thể có (giả sử rằng từ khoá chứa m ký tự phân biệt) Một hệ mật
mã như vậy được gọi là hệ mật mã thay thế đa biểu (polyalphabetic) Nói chung, việc thám mã hệ thay thế đa biểu sẽ khó khăn hơn so việc thám mã hệ đơn biểu
2.3.5 Hệ mật mã Hill
Hệ mật mã sử dụng các phép toán trên ma trận và định thức
Sơ đồ mật mã này được đề xuất bởi Lester S Hill năm 1929 Giống như sơ đồ
mã Vigenère, các hệ mã Hill được thực hiện trên từng bộ m ký tự liên tiếp Ý tưởng là
lấy m tổ hợp tuyến tính của m ký tự trong một phần tử của bản rõ để tạo ra m ký tự ở một phần tử của bản mã
Ví dụ nếu m = 2 một phần tử của bản rõ được viết là x = (x1, x2) và một phần tử của bản mã là y = (y1, y2) y1, y2 là tổ hợp tuyến tính của x1và x2 Ví dụ:
y1 = 11x1+ 3x2
y2 = 8x1+ 7x2
Viết lại dưới dạng ma trận:
Nói chung, có thể lấy một ma trận K kích thước m m làm khoá Nếu một phần tử ở hàng i và cột j của K là ki,j thì có thể viết K = (ki,j)mxm, với x = (x1, x2, ,xm) P và
Trang 33Định nghĩa 1: Phép nhân ma trận
Nếu A = (xi,j) là một ma trận cấp lm và B = (b1,k ) là một ma trận cấp mn thì tích ma trận AB = (c1,k ) đƣợc định nghĩa theo công thức: cik = với 1 i
Tính chất: với mọi ma trận vuông A cùng cấp A*I = I* A = A
Định nghĩa 3: Định thức con và phần bù đại số
- Cho ma trận vuông A cấp n và phần tử aij Định thức của ma trận cấp n-1 suy ra
từ A bằng cách xóa đi hàng thứ i, cột thứ j đƣợc gọi là định thức con của A ứng với phần tử aij, ký hiệu là Mij
- Định thức con Mij với dấu bằng (-1)i+j đƣợc gọi là phần bù đại số của phần tử
Trang 34- Định thức của ma trận vuông cấp n là tổng đại số của n! số hạng, mỗi số hạng là tích của n phần tử lấy trên các hàng và các cột khác nhau của ma trận A, mỗi tích đƣợc nhân với phần tử dấu là +1 hoặc -1 theo phép thế tạo bởi các chỉ số hàng và chỉ số cột của các phần tử trong tich Gọi Sn là nhóm các hoán vị của n phần tử 1,2, ,n ta có:(Công thức Leibniz)
Tính chất: Một ma trận thực K là có nghịch đảo định thức của nó khác 0
Trên Zn ma trận K có nghịch đảo theo modulo n gcd(det K, n) = 1
Để đơn giản, ta chỉ xét ma trận vuông cấp 2 Khi đó ta có định lý:
Giả sử A = (ai j) là một ma trận cấp 2 2 trên Z26 sao cho det A = a1,1a2,2 - a1,2 a2,1 có nghịch đảo Khi đó
A-1 = (det A)-1 (mod 26)
Ví dụ xét ma trận
Trang 35K = Det(K) = 11*7 – 3*8 = 53 1 mod 26
K -1 = 1-1 (mod 26) =
Định nghĩa sơ đồ hệ mật mã Hill:
Sơ đồ các hệ mật mã Hill là một bộ gồm 5 thành phần S = (P, C, K, E, D) trong đó P = C = Z26m , K = KZ26m m : gcd(detK, 26) 1 ,
các ánh xạ E và D đƣợc cho bởi:
e K (x1, , xm ) = (x1, , xm )*K mod26,
d K (y1, , y m ) = (y1, , y m )*K-1 mod26
với mọi x =(x1, , xm ) P, y =(y1, , y m ) C, K K
Điều kiện gcd(det(K), 26 ) = 1 để K khả nghịch Phép giải mã thực hiện đƣợc
Trang 36Nhân từng đoạn hai số liên tiếp của y với K -1 thu được dãy x, và từ đó có được
bản rõ
Với mỗi số m cho trước, số khoá có thể có bằng số ma trận có định thức nguyên
tố cùng nhau với 26 Việc thám mã bằng cách duyệt lần lượt toàn bộ là không khả thi
Mặc dù vậy, người ta đã tìm được những phương pháp thám mã khác đối với hệ mật
mã Hill một cách khá hiệu quả
2.3.6 Hệ mật mã hoán vị
Các hệ mật mã đã nêu ở trên ít nhiều đều xoay quanh phép thay thế: các ký tự
của bản rõ được thay thế bằng các ký tự khác trong bản mã Ý tưởng của mã hoán vị là
giữ các ký tự của bản rõ không thay đổi nhưng sẽ thay đổi vị trí của chúng bằng cách
sắp xếp lại các ký tự này Mã hoán vị (còn được gọi là mã chuyển vị) đã được dùng từ
hàng trăm năm nay Sự phân biệt giữa mã hoán vị và mã thay thế đã được Giovani
Porta chỉ ra từ năm 1563
Trong hệ mật mã hoán vị không có phép toán đại số nào cần thực hiện khi mã
hoá và giải mã nên không cần chuyển dữ liệu từ dạng chữ sang số và ngược lại
Định nghĩa
Sơ đồ các hệ mật mã hoán vị là một bộ gồm 5 thành phần S = (P, C, K, E, D) trong đó P = C = Z26m , K = S m , các ánh xạ E và D được cho bởi:
với mọi x =(x1, , xm ) P , y =(y1, , y m ) C, K = S m
-1 là hoán vị nghịch đảo của
Ví dụ: Giả sử m = 6 và khoá là phép hoán vị ( ) sau:
Khi đó phép hoán vị ngược -1 sẽ là:
Trang 37Giả sử có bản rõ Shesellsseashellsbytheseashore
Trước tiên ta nhóm bản rõ thành các nhóm 6 ký tự:
shesel | lsseas | hellsb | ythese | ashore
Nhóm 6 chữ cái được sắp xếp lại theo phép hoán vị , ta có:
EESLSH | SALSES | LSHBLE | HSYEET | HRAEOS
Vậy bản mã là EESLSH SALSES LSHBLE HSYEET HRAEOS
2.3.7 Các hệ mật mã dòng
Trong các hệ mật mã nghiên cứu ở trên, các phần tử liên tiếp của bản rõ đều được
mã hoá bằng cùng một khoá K Tức xâu bản mã y nhận được có dạng:
của khoá K và i-1 là ký tự đầu tiên của bản rõ: zi = fi (K, x1 , , xi -1 )
Phần tử zi của dòng khoá được dùng để mã xi tạo ra yi = eiz(xi) Bởi vậy, để mã hoá xâu bản rõ x1 x2 phải tính liên tiếp: z1, y1, z2 , y2
Việc giải mã xâu bản mã y1y2 được thực hiện bằng cách tính liên tiếp: z1, x1,
3 K là tập hữu hạn các khoá (không gian khoá)
4 L là tập hữu hạn các bộ chữ của dòng khoá
5 F = (f1 f2 ) là bộ tạo dòng khoá Với i 1 fi : K P i -1 L
6 Với mỗi z L có một quy tắc mã ez E và một quy tắc giải mã tương ứng
dz D ez : P C và dz : C P là các hàm thoả mãn dz(ez(x)) = x với mọi bản rõ x P
Trang 38Có thể coi mã khối là một trường hợp đặc biệt của mã dòng trong đó dùng khoá không đổi: Zi = K với mọi i 1
Một số dạng đặc biệt của mã dòng
Mã dòng được gọi là đồng bộ nếu dòng khoá không phụ thuộc vào xâu bản rõ, tức là nếu dòng khoá được tạo ra chỉ là hàm của khoá K Khi đó ta coi K là một "mầm"
để mở rộng thành dòng khoá z1z2
Một hệ mã dòng được gọi là tuần hoàn với chu kỳ d nếu zi+d = zi với số nguyên
i1 Mã Vigenère với độ dài từ khoá m có thể coi là mã dòng tuần hoàn với chu kỳ m Trong trường hợp này, khoá là K = (k1, km ) Bản thân K sẽ tạo m phần tử đầu tiên của dòng khoá: zi = ki, 1 i m Sau đó dòng khoá sẽ tự lặp lại Trong mã dòng tương ứng với mật mã Vigenère, các hàm mã và giải mã được dùng giống như các hàm mã
và giải mã được dùng trong mã dịch vòng:
ez(x) = x+z và dz(y) = y-z
Các mã dòng thường được mô tả trong các bộ chữ nhị phân tức là P = C = L = Z2 Khi
đó, các phép toán mã và giải mã là phép cộng theo modulo2
ez(x) = x +z mod 2 và dz(x) = y +z mod 2
Nếu coi "0" biểu thị giá trị "sai" và "1" biểu thị giá trị "đúng" trong đại số Boolean thì phép cộng theo modulo 2 sẽ ứng với phép hoặc có loại trừ Bởi vậy phép mã (và giải mã) dễ dàng thực hiện bằng mạch cứng
Xét một phương pháp tạo một dòng khoá (đồng bộ ):
Giả sử bắt đầu với (k1, , km ) và zi = ki, 1 i m, tạo dòng khoá theo một quan hệ đệ quy tuyến tính cấp m
Ở đây khoá K gồm 2m giá trị k1,…, km, c0,…, cm-1 Nếu (k1,…, km) = (0, … , 0) thì dòng khoá sẽ chứa toàn các số 0 Phải tránh điều này vì khi đó bản mã sẽ đồng nhất với bản rõ Tuy nhiên nếu chọn thích hợp các hằng số c0,…, cm-1 thì một véctơ khởi
Trang 39đầu bất kì khác (k1,…, km) sẽ tạo nên một dòng khoá có chu kỳ 2m -1 Bởi vậy một khoá ngắn sẽ tạo nên một dòng khoá có chu kỳ rất lớn
Ví dụ minh hoạ:
Giả sử m = 4 và dòng khoá được tạo bằng quy tắc: zi+4 = zi + zi+1 mod 2
Nếu dòng khoá bắt đầu một véc tơ bất kỳ khác với véc tơ (0, 0, 0, 0) thì ta thu được dòng khoá có chu kỳ 15 Ví dụ bắt đầu bằng véc tơ (1, 0, 0, 0), dòng khoá sẽ là: 1, 0,
0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1
Một véc tơ khởi đầu khác không bất kỳ khác sẽ tạo một hoán vị vòng (cyclic) của cùng dòng khoá
Một hướng khác của phương pháp tạo dòng khoá hiệu quả bằng phần cứng là
sử dụng bộ ghi dịch hồi tiếp tuyến tính (hay LFSR) Ta dùng một bộ ghi dịch có m tầng Véc tơ (k1, , km) sẽ được dùng để khởi tạo (đặt các giá trị ban đầu) cho thanh ghi dịch Ở mỗi đơn vị thời gian, các phép toán sau sẽ được thực hiện đồng thời
1 k1 được tính ra dùng làm bit tiếp theo của dòng khoá
2 k2, , km sẽ được dịch một tầng về phía trái
3 Giá trị mới của sẽ được tính bằng:
Thao tác tuyến tính sẽ được tiến hành bằng cách lấy tín hiệu ra từ một số tầng nhất định của thanh ghi (được xác định bởi các hằng số cj có giá trị "1") và tính tổng theo modulo 2 ( là phép hoặc loại trừ ) Hình dưới đây cho mô tả của LFSR dùng để tạo dòng khoá cho ví dụ trên
Một ví dụ về mã dòng không đồng bộ là mã khoá tự sinh
Định nghĩa:
Cho P = C = K = L = Z26
Cho z1 = K và zi = xi-1 (i 2) Với 0 z 25 ta xác định x,y Z26
ez(x) = x + z mod 26
Trang 40dz(y) = y - z mod 26
Lý do sử dụng thuật ngữ "khoá tự sinh" là ở chỗ: bản rõ được dùng làm khoá (ngoài
"khoá khởi thuỷ" ban đầu K)
Ví dụ
Giả sử khoá là k = 8 và bản rõ là rendezvous
Biến đổi bản rõ thành dãy các số nguyên:
17 04 13 03 04 25 21 14 20 18 Dòng khoá như sau:
08 17 04 13 03 04 25 21 14 20 Cộng các phần tử tương ứng rồi rút gọn theo modulo 26:
25 21 17 16 07 03 20 09 08 12 Bản mã ở dạng ký tự là: ZVRQHDUJIM
Giải mã: biến đổi xâu kí tự thành dãy số:
25 21 17 16 07 03 20 09 08 12 Tính: x1 = d8(25) = (25 – 8) mod 26 = 17
Một số mức độ tấn công khác nhau vào các hệ mật
Chỉ có bản mã: Thám mã chỉ có xâu bản mã y
Bản rõ đã biết: Thám mã có xâu bản rõ x và xâu bản mã tương ứng y
Bản rõ được lựa chọn: Thám mã đã nhận được quyền truy nhập tạm thời vào cơ chế
mã hoá Bởi vậy, thám mã có thể chọn một xâu bản rõ x và tạo nên xâu bản mã y tương ứng