Giáo trình Bảo mật thông tin (Phần 1)

Giáo trình Bảo mật thông tin  
MỤC LỤC  
1
Giáo trình Bảo mật thông tin  
2.4.5. Thám mã hệ mã dòng xây dựng trên LFSR..................................................51  
2
Giáo trình Bảo mật thông tin  
4.3.4. Tính đồng dƣ của lũy thừa lớn (xe mod n) ..................................................105  
3
Giáo trình Bảo mật thông tin  
LỜI NÓI ĐẦU  
Từ khi con ngƣời có nhu cầu trao đổi thông tin vi nhau thì nhu cu gibí mt  
thông tin cũng xuất hin. Trong thời đại ngày nay, vi sphát trin ca khoa hc 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 ddàng thì vic gibí mt thông tin càng khó khăn. Các trao đổi thông tin qua  
mng Intenet, các hình nh trên mặt đất, các cuộc đàm thoại hu tuyến và vô tuyến…  
đều có thdễ dàng thu đƣợc nhcác thiết bị đin ttrên mặt đất hoc tvtinh nên an  
toàn thông tin đã trthành nhu cu bt buc cho mi hthng ng dng.  
Tthời xa xƣa, con ngƣời đã nghĩ ra cách che dấu thông tin bng cách biến đổi  
thông tin đó thành dạng thông tin khác mà ngƣời ngoài cuc không hiểu đƣợc, đồng  
thi có cách khôi phc li nguyên dạng ban đầu để ngƣời trong cuc hiểu đƣợc.  
Phƣơng pháp thực hiện nhƣ vậy gi là mã hóa dliu, sau này phát trin thành ngành  
khoa hc gi là mt mã học. Đây cũng là kỹ thuật lâu đời nht trong việc đảm bo an  
toàn thông tin. Ngày nay, cùng vi sphát trin ca các ngành khoa hc, các kthut  
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  
rt nhiu squan tâm ca các nhà khoa hc trên thế gii. Tchchỉ đƣợc sdng  
trong lĩnh vực chính tr, quân s, mã hóa dliệu đã đƣợc đƣa vào sử dng trong mi  
lĩnh vc. Hin nay có rt nhiu kthut mt mã khác nhau, mi kthut có những ƣu  
nhƣợc điểm riêng.  
Để đáp ứng nhu cu hc tp và tìm hiu ca sinh viên ngành Công nghthông  
tin, giáo trình Bo mật thông tin đƣợc biên son giúp sinh viên có cái nhìn tng quan  
về lĩnh vực an toàn và bo mt thông tin, tiếp cn mt số phƣơng pháp mã hóa dữ liu,  
làm cơ sở cho nhng nghiên cu mrng tiếp theo.  
Giáo trình gồm 5 chƣơng: Chƣơng 1 giới thiu tng quan vmật mã, chƣơng 2  
tóm tắt sơ lƣợc vmã hóa cổ điển, chƣơng 3 trình bày vchun mã dliệu, chƣơng 4  
nêu mt shmật mã khóa công khai, chƣơng 5 giới thiu mt số sơ đồ chữ ký điện  
t, hàm Hash và phân phi khóa.  
Giáo trình đƣợc biên soạn theo khung chƣơng trình môn học Bo mt thông tin,  
ni dung dựa trên cơ sở cuốn “Cryptography: Theory and Practice” của Douglas  
Stinson, ngƣời dch Nguyn Bình. Vi mc đích trang bcác kiến thc cơ sgiúp sinh  
viên tiếp cn vi phƣơng pháp bảo vdliu bng cách mã hóa, giáo trình đã trình  
bày tóm tt các phn lý thuyết toán hc cơ bản đƣợc áp dng trong các hmt mã, đƣa  
ra nhng ví dminh ha cth, cui mỗi chƣơng đều có bài tp.  
Do ln đầu biên son nên không tránh khi nhng sai sót và li in n nht định.  
Tác gixin vui lòng tiếp nhn mi sự đóng góp giúp cho giáo trình “Bảo mt thông  
tin” ngày càng tốt hơn.  
5
 
Giáo trình Bảo mật thông tin  
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  
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ử.  
6
   
Giáo trình Bảo mật thông tin  
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 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 để  
7
   
Giáo trình Bảo mật thông tin  
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ã 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  
nhau.  
Sau đây là một định nghĩa hình thức về sơ đồ mật mã và cách thức thực hiện để  
lập mật mã và giải mật mã.  
Định nghĩa  
Mt hmt mã là mt bgm 5 thành phn (P, C, K, E, D), trong đó  
8
   
Giáo trình Bảo mật thông tin  
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ã  
Vi mi kK có mt quy tc mã ek: P C và mt quy tc giải mã tƣơng ứng  
dk D. Mi ek và dk là nhng hàm tha mãn dk(ek (x)) = x vi mi bn 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ó.  
Tính xác thực: cung cấp hai dịch vụ:  
- Nhận dạng nguồn gốc của thông báo và cung cấp sự bảo đảm rằng nó là đúng  
sự thực.  
- Kiểm tra đặc tính của ngƣời đang đăng nhập một hệ thống. Tiếp tục kiểm tra  
đặc tính của họ trong trƣờng hợp ai đó cố gắng kết nối và giả mạo là ngƣời sử  
dụng.  
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 đó.  
9
   
Giáo trình Bảo mật thông tin  
Thc hin mã theo khi (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...Km Km, mở rộng eK dK thành các thuật  
toán eK : PmCm dK : CmPm nhƣ sau: với mọi x1...xk Pm y1...yk Cm  
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ự XP*. 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....Xm, trong đó mỗi X1,...,Xm là một khối có độ dài m, định nghĩa bản  
mật mã của X là:  
eK(X) = eK(X1....Xm ) = eK(X1)....eK(Xm).  
Đặt Y = eK(X1)....eK(Xm), có thể viết Y = Y1....Ym với Yi =eK(Xi), và do đó có  
dK(Y) = dK(Y1)...dK(Ym) = X1...Xm = X.  
Cách mã theo khối đơn giản và thông dụng nhất là khi chọn độ dài khối k =1.  
Khi đó với mọi bản rõ X = x1...xm P* ta có eK(X) = eK(x1....xm ) = eK(x1)....eK(xm)  
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...Km K*, với dòng khóa đó ta xác định mọi bản rõ X  
= x1...xm P* có bản mã tƣơng ứng là  
eK(X) = eK(x1,x2, ,xm) = eK1(x1)eK2(x2)eKm(xm)  
Giải mã Y = eK(X) ta đƣợc dK(Y) = dK1(eK1(x1))dKm(eKm(xm) = x1 xm = X  
Để sử dụng cách lập mật mã theo dòng, ngoài sơ đồ mật mã gốc còn phải có  
một dòng khóa, tức là một dãy có độ dài tùy ý các ký tự khóa. Đó thƣờng là các dãy  
các ký tự khóa đƣợc sinh ra bởi một bộ "tạo dãy ngẫu nhiên" nào đó xuất phát từ một  
"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  
eK(x) = x + K mod 2, dK(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 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 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à  
10  
   
Giáo trình Bảo mật thông tin  
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 dng:  
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 xng  
- 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  
11  
 
Giáo trình Bảo mật thông tin  
đƣợ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  
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ử dng hmt 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  
12  
 
Giáo trình Bảo mật thông tin  
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  
một việc gì đó  
- Cấp chứng chỉ: cấp một sự xác nhận thông tin bởi một thực thể đƣợc tín  
nhiệm  
- Báo nhận: xác nhận một thông báo đã đƣợc nhận hay một dịch vụ đã đƣợc  
thực hiện  
- 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.  
1.5. Thám mã và tính an toàn của các hệ mật mã  
1.5.1. Vấn đề thám mã  
Mật mã đƣợc sdụng trƣớc hết là để bảo đảm tính bí mt cho các thông tin  
đƣợc trao đổi, do đó bài toán quan trọng nht của thám mã cũng là bài toán phá bỏ tính  
bí mật đó, tức là tbn mt mã có thể thu đƣợc ddàng (trên các kênh truyn tin công  
13  
   
Giáo trình Bảo mật thông tin  
cộng) ngƣời thám mã phi phát hiện đƣợc ni dung thông tin bche giu trong bn mt  
mã, tt nhất là tìm ra đƣợc bn rõ gc ca bn mật mã đó. Tình huống thƣờng gp là  
bản thân sơ đồ hthng mt mã, kccác phép lp mã và gii mã (tc các thut toán  
E D), không nht thiết là bí mật, do đó bài toán qui về vic tìm chìa khóa mt mã K  
hay chìa khóa gii mã K'', nếu hmật mã có khóa phi đối xứng. Nhƣ vậy, có thqui  
ƣớc xem bài toán thám mã cơ bản là bài toán tìm khóa mt mã K (hay khóa gii mã  
K''). Để giải bài toán đó, giả thiết ngƣời thám mã biết thông tin về sơ đồ hmt mã  
đƣợc dùng, kccác phép lp mã và gii mã tng quát E D. Ngoài ra, ngƣời thám  
mã có thbiết thêm mt sthông tin khác, tùy theo những thông tin đƣợc biết thêm  
này mà có thphân loi bài toán thám mã thành các bài toán cthể nhƣ sau:  
- Bài toán thám mã chbiết bn mã: là bài toán phbiến nhất, khi ngƣời thám  
mã chbiết mt bn mt mã Y  
- Bài toán thám mã khi biết cbn rõ: ngƣời thám mã biết mt bn mt mã Y  
cùng vi bản rõ tƣơng ứng X  
- Bài toán thám mã khi có bản rõ được chn: ngƣời thám mã có thchn mt  
bn rõ X, và biết bn mật mã tƣơng ứng Y. Điều này có thxẩy ra khi ngƣời thám mã  
chiếm đƣc (tm thi) máy lp mã  
- Bài toán thám mã khi có bản mã được chn: ngƣời thám mã có thchn mt  
bn mt mã Y, và biết bản rõ tƣơng ứng X. Điều này có thxy ra khi ngƣời thám mã  
chiếm đƣc tm thi máy gii mã  
1.5.2. Tính an toàn của một hệ mật mã  
Tính an toàn ca mt hthng mt mã phthuộc vào độ khó ca bài toán thám  
mã khi sdng hmật mã đó. Ngƣời ta đã đề xut mt scách hiu cho khái nim an  
toàn ca hthng mật mã, để trên cơ sở các cách hiểu đó nghiên cứu tính an toàn ca  
nhiu hmật mã khác nhau, sau đây là vài cách hiểu thông dng nht:  
- An toàn vô điều kin: githiết ngƣời thám mã có đƣợc thông tin vbn mã.  
Theo quan nim lý thuyết thông tin, nếu nhng hiu biết vbn mã không thu hp  
đƣợc độ bất định vbản rõ đối với ngƣời thám mã, thì hmật mã là an toàn vô điều  
kin, hay theo thut ngca C.Shannon, hbí mt hoàn toàn. Nhƣ vậy, hlà an  
toàn vô điều kin, nếu độ bất định vbn rõ sau khi ngƣời thám mã có đƣợc các thông  
tin (vbn mã) bằng độ bất định vbản rõ trƣớc đó.  
- An toàn được chng minh: mt hthng mật mã đƣợc xem là có độ an toàn  
đƣợc chng minh nếu ta có thchứng minh đƣợc là bài toán thám mã đối vi hthng  
14  
 
Giáo trình Bảo mật thông tin  
đó khó tƣơng đƣơng với một bài toán khó đã biết, thí dbài toán phân tích mt số  
nguyên thành tích các tha snguyên t, bài toán tìm logarithm ri rc theo mt  
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 vi cùng một độ phc tạp nhƣ nhau).  
- An toàn tính toán: hmật mã đƣợc xem là an toàn (vmt) tính toán, nếu mi  
phƣơng pháp thám mã đã biết đều đòi hỏi mt nguồn năng lực tính toán vƣợt mi khả  
năng (kể cả phƣơng tiện thiết b) tính toán ca mt kthù giả định. An toàn theo nghĩa  
này, nói theo ngôn ngca lý thuyết về độ phc tp tính toán, là bao hàm ckhái nim  
an toàn theo nghĩa "đƣc chng minh" nói trên.  
15  
Giáo trình Bảo mật thông tin  
2.1. Giới thiệu  
CHƢƠNG 2: MẬT MÃ CỔ ĐIỂN  
Hmt mã khoá đối xứng đã đƣợc dùng trt sm, nên còn gi là hmt mã  
khoá đối xng - cổ điển. Trong sut mt thi klch sdài tthi cổ đại cho đến vài  
ba thp niên gần đây, các phƣơng pháp mật mã đƣợc sdng trong thc tế đều là mt  
mã khoá đối xng, thmật mã Ceasar đã đƣợc dùng hơn nghìn năm trƣớc cho đến  
các hmật mã đƣợc sdng vi strgiúp ca kthut máy tính hiện đại trong thi  
gian gần đây.  
Các phƣơng thức mã hoá cổ điển chyếu da trên mã hoá hoán vvà mã hoá  
thay thế. Trong mã hoá thay thế, các ký t(hoc nhóm ký tự) đƣợc thay thế mt cách  
có quy lut trong toàn bộ thông điệp bng các ký tkhác (hoc nhóm ký t). Trong  
phƣơng thức mã hoá hoán vthì các ký tự đƣợc ginguyên, nhƣng trật tca chúng  
trong bn tin lại thay đổi theo mt quy luật nào đó.  
Nói chung các hmt 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ử dng bng  
chcái Latinh từ A đến Z.  
Quá trình lp mã và giải mã thƣờng đƣợc tiến hành theo các bƣớc:  
Lp mã :  
1. Nhp bn rõ ký t: Rõ_Ch.  
2. Chuyn Rõ_Ch==> Rõ_S.  
3. Chuyn Rõ_S==> Mã_S.  
4. Chuyn Mã_S==> Mã_Chữ  
Gii mã :  
1. Nhp bn mã ký t: Mã_Ch.  
2. Chuyn Mã_ch==> Mã_s.  
3. Chuyn Mã_s==> Rõ_s.  
4. Chuyn Rõ_s==> Rõ_ch.  
Để chuyn tchsang số hay ngƣợc li tstrvchữ, ngƣời ta theo mt qui  
ƣớc nào đó, ví dụ chcái thay bng số theo modulo26 nhƣ sau:  
16  
   
Giáo trình Bảo mật thông tin  
a
b
1
c
d
3
e
f
g
6
h
7
i
j
k
l
m
0
2
4
5
8
9
10  
11  
12  
n
o
p
q
r
s
t
u
v
w
x
y
z
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
Để thc hin mã hoá hay gii mã với các “số”, ngƣời ta dùng các phép toán số  
hc theo modulo26.  
Mt shmã hoá cổ điển:  
Hmã hoá dch chuyển: Khoá có 1 “chìa” (thhin bng 1 giá tr)  
Hệ mã Affine: Khoá có 2 “chìa” (thhin bng 2 giá tr).  
Hmã hoá thay thế: Khoá có 26 “chìa” (thhin bng 26 giá tr).  
Hhoá Vigenere: Khoá có m “chìa” (thhin bng m giá tr).  
Hmã 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 mt mã là mt ngành khoa học đƣợc xây dng dựa trên cơ sở toán  
học, đặc bit là lý thuyết shc. Phn này shthng li mt skiến thc toán hc  
cn thiết đƣợc sdng trong các hmt mã cổ điển nói riêng và lý thuyết mt mã nói  
chung.  
2.2.1. Tính chia hết của các số nguyên  
Ta ký hiu: Z là tp hp các snguyên Z = {.....,-2,-1, 0, 1, 2,....}  
Z + là tp hp các snguyên không âm Z += {0, 1, 2,.....}  
Zn là tp các snguyên không âm nhỏ hơn n Zn = {0, 1, 2, …, n-1 }  
a. Mt skhái nim  
Ước svà bi s:  
Cho hai số nguyên a và b, b ≠0. Nếu có mt snguyên q sao cho a = b*q thì ta nói  
rng a chia hết cho b, ký hiu ba. Khi đó, b là ƣớc ca a và a là bi ca b.  
17  
   
Giáo trình Bảo mật thông tin  
Cho các snguyên a, b ≠0, tồn ti cp số nguyên (q, r) (0 ≤ r < b) duy nht 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 ln nht, bi chung nhnht  
Số nguyên d đƣợc gọi là ƣớc chung ca các snguyên a1, a2, , an nếu nó là ƣớc  
ca tt ccác số đó.  
Số nguyên m đƣợc gi là bi chung ca các snguyên a1, a2, , an nếu nó là bi  
ca tt ccác số đó.  
Một ƣớc chung d > 0 ca các snguyên a1, a2, , an trong đó mọi ƣớc chung ca  
a1, a2, , an đều là ƣớc của d thì d đƣợc gọi là ƣớc chung ln nht ca a1, a2,, an, ký  
hiu d = gcd(a1, a2, , an). Nếu gcd(a1, a2, , an) = 1 thì các sa1, a2,, an đƣợc gi  
là nguyên tcùng nhau.  
Mt bi schung m > 0 ca các snguyên a1, a2, , an trong đó mọi bi chung  
ca a1, a2, , an đều là bi của m thì m đƣợc gi là bi schung nhnht ca các số  
a1, a2, , an, ký hiu m = lcm(a1, a2, , an)  
b. Mt stính cht  
1. d = gcd(a1, a2, , an)  
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 ln nht  
Bài toán  
Input : Hai snguyên không âm a, b tha mãn a ≥ b  
Output : d = gcd(a,b)  
Thut toán :  
18  
 
Giáo trình Bảo mật thông tin  
Euclid(int a, int b)  
1. while( b>0)  
{
r = a % b ;  
a = b ;  
b = r ;  
}
2. Return a ;  
Ví d: Dùng thut toán Euclide tìm gcd( 4864, 3458)  
a
b
r
4864  
3458  
1406  
646  
114  
76  
3458  
1406  
646  
114  
76  
1406  
646  
114  
76  
38  
38  
38  
0
0
Kết qu: gcd(4864, 3458) = 38  
Nếu gcd(a, b) = d thì phƣơng trình a*x + b*y = d có nghim nguyên (x, y) duy  
nht tìm đƣc bi thut toán Euclide mrộng nhƣ sau:  
Thut toán Euclid mrng  
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.  
19  
Giáo trình Bảo mật thông tin  
Giả sử cho hai số tự nhiên a, b thỏa mãn a > b > 0. Đặt ro = 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 ri là giảm thực sự nên sau hữu hạn bƣớc ta đƣợc số dƣ rm = 0.  
ro = q1 * r1 + r2,0 < r2 < r1;  
r1 = q2 * r2 + r3,0 < r3 < r2;  
....;  
rm − 1 = qm * rm + rm + 10 < rm + 1 < rm  
rm = qm + 1 * rm + 1  
trong đó số dƣ cuối cùng khác 0 rm + 1 = d. Bài toán đặt ra là tìm x, y sao cho  
a * x + b * y = rm + 1( = d)  
Để làm điều này, ta tìm x,y theo công thức truy hồi, nghĩa là sẽ tìm xi yi sao cho:  
a * xi + b * yi = ri với i = 0,1,....  
Ta có  
a * 1 + b * 0 = a = ro a * 0 + b * 1 = b = r1, nghĩa là  
xo = 1,x1 = 0 và yo = 0, y1 = 1. (1)  
Tổng quát, giả sử có  
a * xi + b * yi = ri vi i = 0,1,....  
a * xi + 1 + b * yi + 1 = ri + 1 vi i = 0,1,....  
Khi đó từ ri = qi + 1 * ri + 1 + ri + 2  
suy ra  
ri qi + 1 * ri + 1 = ri + 2  
(a * xi + b * yi) − qi + 1 * (a * xi + 1 + b * yi + 1) = ri + 2  
a * (xi qi + 1 * xi + 1) + b * (yi qi + 1 * yi + 1) = ri + 2  
từ đó, có thể chọn  
xi + 2 = xi qi + 1 * xi + 1 (2)  
yi + 2 = yi qi + 1 * yi + 1 (3)  
Khi i = m − 1 ta có đƣợc xm + 1 ym + 1. Các công thức (1), (2), (3) là công thức truy  
hồi để tính x,y.  
Giải thuật  
Input : Hai số nguyên không âm a, b, a ≥ b  
Output : d = gcd(a, b) và hai sx, y tha mãn ax + by = d  
20  
Tải về để xem bản đầy đủ
pdf 88 trang baolam 10/05/2022 7280
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Bảo mật thông tin (Phần 1)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_bao_mat_thong_tin_phan_1.pdf