1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Bảo mật thông tin: Phần 1 - ĐH Sư phạm kỹ thuật Nam Định

88 33 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giáo trình Bảo mật thông tin
Trường học ĐH Sư phạm kỹ thuật Nam Định
Chuyên ngành Bảo mật thông tin
Thể loại Giáo trình
Thành phố Nam Định
Định dạng
Số trang 88
Dung lượng 1,25 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

MỤ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 2

2.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 3

4.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 4

5.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 5

LỜ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 6

CHƯƠ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

- 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 7

1.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 8

phá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 10

Thự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 11

ngườ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 13

triể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 14

cộ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 16

CHƯƠ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 17

Hệ 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 ba Khi đó, b là ƣớc của a và a là bội của b

Trang 18

Cho 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 19

2 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 20

Giả 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 21

Cho 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 22

Như 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 23

Cá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 24

else 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 25

do đó 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 26

Zn = {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à

p11 p22 … pkk 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 27

trong đó 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 28

Trung 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 29

thay 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 30

dK(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 31

Số 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 32

chuyể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 lm và B = (b1,k ) là một ma trận cấp mn 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 35

K = 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 36

Nhâ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 37

Giả 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 38

Có 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

i1 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 40

dz(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

Ngày đăng: 08/06/2021, 14:10

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN