TÌM HIỂU và mô PHỎNG các kỹ THUẬT mã hóa SUBSTITUTION và DES (có code bên dưới) TÌM HIỂU và mô PHỎNG các kỹ THUẬT mã hóa SUBSTITUTION và DES (có code bên dưới) TÌM HIỂU và mô PHỎNG các kỹ THUẬT mã hóa SUBSTITUTION và DES (có code bên dưới) TÌM HIỂU và mô PHỎNG các kỹ THUẬT mã hóa SUBSTITUTION và DES (có code bên dưới) TÌM HIỂU và mô PHỎNG các kỹ THUẬT mã hóa SUBSTITUTION và DES (có code bên dưới)
Trang 1TÌM HIỂU VÀ MÔ PHỎNG CÁC KỸ THUẬT MÃ HÓA SUBSTITUTION VÀ
DES
Trang 2DANH MỤC CÁC BẢNG BIỂU VI
DANH MỤC CÁC TỪ VIẾT TẮT 1
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 1
1.1 TỔNG QUAN 1
1.2 YÊU CẦU ĐỀ TÀI 1
CHƯƠNG 2 TỔNG QUAN VỀ CÁC KỸ THUẬT MÃ HÓA 2
2.1 KHÁI NIỆM CƠ BẢN VỀ MẬT MÃ 2
2.2 PHÂN LOẠI CÁC KỸ THUẬT MÃ HÓA 2
2.3 KỸ THUẬT MÃ HÓA CỔ ĐIỂN: SUBSTITUTION 3
2.4 KỸ THUẬT MÃ HÓA HIỆN ĐẠI: DES 4
2.4.1 Hoán vị khởi tạo và hoán vị kết thúc 5
2.4.2 Các vòng của DES 8
2.4.3 Thuật toán sinh khóa con của DES 10
2.4.4 Hiệu ứng lan truyền (Avalanche Effect) 11
2.4.5 Độ an toàn của DES 14
2.5 MỘT SỐ ỨNG DỤNG CỦA MÃ HÓA TRONG SECURITY 15
CHƯƠNG 3 KHẢO SÁT VÀ THIẾT KẾ 16
3.1 KHẢO SÁT TÍNH TOÁN CÁC KỸ THUẬT MÃ HÓA 16
3.1.1 Kỹ thuật mã hóa Substitution 16
3.1.2 Kỹ thuật mã hóa DES 16
3.2 THIẾT KẾ GIAO DIỆN HIỂN THỊ 20
CHƯƠNG 4 KẾT QUẢ THỰC HIỆN 21
4.1 KẾT QUẢ MÔ PHỎNG VỚI MÃ DES 21
4.2 KẾT QUẢ MÔ PHỎNG VỚI MÃ HÓA SUBSTITUTION 22
Trang 3TÀI LIỆU THAM KHẢO 24 PHỤ LỤC A……… 25 Y
Trang 4HÌNH 2-2: CẤU TRÚC MỘT VÒNG CỦA MÃ DES 8
HÌNH 2-3: SƠ ĐỒ S-BOXES 9
HÌNH 3-1: GIAO DIỆN GUIDE MÔ PHỎNG 20
HÌNH 4-1: GIAO DIỆN GUIDE CHO KẾT QUẢ MÃ HÓA DES 21
HÌNH 4-2: GIAO DIỆN GUIDE CHO KẾT QUẢ MÃ HÓA SUBSTITUTION 22
Trang 6DES Data Encryption Sandard
Trang 7CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
1.1 Tổng quan
Ngày nay trong mọi hoạt động của con người thông tin đóng một vai tròquan trọng không thể thiếu Xã hội càng phát triển nhu cầu trao đổi thông tingiữa các thành phần trong xã hội ngày càng lớn Mạng máy tính ra đời đã manglại cho con người rất nhiều lợi ích trong việc trao đổi và xử lý thông tin một cáchnhanh chóng và chính xác Chính từ những thuận lợi này đã đặt ra cho chúng tamột câu hỏi, liệu thông tin đi từ nơi gửi đến nơi nhận có đảm bảo tuyệt đối antoàn, ai có thể đảm bảm thông tin của ta không bị truy cập bất hợp pháp Thôngtin được lưu giữ, truyền dẫn, cùng sử dụng trên mạng lưới thông tin công cộng
có thể bị nghe trộm, chiếm đoạt, xuyên tạc hoặc phá huỷ dẫn đến sự tổn thấtkhông thể lường được Đặc biệt là đối với những số liệu của hệ thống ngânhàng, hệ thống thương mại, cơ quan quản lý của chính phủ hoặc thuộc lĩnh vựcquân sự được lưu giữ và truyền dẫn trên mạng Nếu như vì nhân tố an toàn màthông tin không dám đưa lên mạng thì hiệu suất làm việc cũng như hiệu suất lợidụng nguồn dữ liệu đều sẽ bị ảnh hưởng Trước các yêu cầu cần thiết đó, việc
mã hoá thông tin sẽ đảm bảo an toàn cho thông tin tại nơi lưu trữ cũng như khithông tin được truyền trên mạng
1.2 Yêu cầu đề tài
- Tìm hiểu các kỹ thuật cipher sau:
Kỹ thuật cổ điển: substitution
Kỹ thuật hiện đại: DES
- Mô phỏng matlab hai kỹ thuật trên.
Trang 8CHƯƠNG 1 TỔN
G QUAN VỀ CÁC KỸ THUẬT MÃ HÓA
1.3 Khái niệm cơ bản về mật mã
Kỹ thuật mật mã thông qua việc biến đổi hoặc mã hoá thông tin, biến đổinhững thông tin nhạy cảm, vấn đề cơ mật thành những văn tự mã hoá có dạnghỗn loạn, làm cho bọn tin tặc khó lòng mà đọc hiểu được, từ đó sẽ đạt được haimục đích: một là, làm cho bọn tin tặc không biết làm thế nào để giải mã nêncũng không thể thu được những thông tin có bất kỳ ý nghĩa nào trong chuỗi mật
mã hỗn loạn đó; hai là làm cho tin tặc không có khả năng làm giả thông tin vớichuỗi mật mã hỗn loạn như thế Khoa học nghiên cứu kỹ thuật mật mã gọi làmật mã học
Mật mã học bao gồm hai nhánh, là mật mã học lập mã và mật mã học phân tích.Mật mã học lập mã với ý là tiến hành mã hoá thông tin để thực hiện việc che giấuthông tin, còn mật mã học phân tích là ngành học nghiên cứu phân tích giải dịchmật mã Hai cái đối lập với nhau, nhưng lại thúc đẩy lẫn nhau
Dùng phương pháp mật mã có thể che dấu và bảo hộ những thông tin cơ mật, làmcho người chưa được uỷ quyền không thể lấy được thông tin, những thông tin đượcgiấu kín kia được gọi là văn bản rõ, mật mã có thể đem văn bản rõ biến đổi thànhmột loại hình khác, gọi là văn bản mật Sự biến đổi văn bản rõ thành văn bản mậtgọi là mã hoá bảo mật, quá trình người thu nhận hợp pháp khôi phục từ văn bản mậttrở thành văn bản rõ được gọi là quá trình giải mã (hoặc giải mật) Người thu nhậnphi pháp có ý đồ phân tích từ văn bản mật ra thành văn bản rõ, gọi là giải dịch
1.4 Phân loại các kỹ thuật mã hóa
Có rất nhiều các thuật toán mã hoá khác nhau Từ những thuật toán đượccông khai để mọi người cùng sử dụng và áp dụng như là một chuẩn chung choviệc mã hoá dữ liệu; đến những thuật toán mã hoá không được công bố Có thểphân loại các thuật toán mã hoá như sau:
Trang 9- Phân loại theo các phương pháp:
Mã hoá cổ điển (Classical cryptography)
Mã hoá đối xứng (Symetric cryptography)
Mã hoá bất đối xứng(Asymetric cryptography)
Hàm băm (Hash function)
- Phân loại theo số lượng khoá:
Mã hoá khoá bí mật (Private-key Cryptography)
Mã hoá khoá công khai (Public-key Cryptography)
1.5 Kỹ thuật mã hóa cổ điển: Substitution
Xuất hiện trong lịch sử, các phương pháp này không dùng khoá Thuật toánđơn giản và dễ hiểu Những từ chính các phương pháp mã hoá này đã giúpchúng ta tiếp cận với các thuật toán mã hoá đối xứng được sử dụng ngày nay.Trong mã hoá cổ điển có 02 phương pháp nổi bật đó là:
- Mã hoá thay thế (Substitution Cipher):
Là phương pháp mà từng kí tự (hay từng nhóm kí tự) trong bản rõ (Plaintext)được thay thế bằng một kí tự (hay một nhóm kí tự) khác để tạo ra bản mờ(Ciphertext) Bên nhận chỉ cần đảo ngược trình tự thay thế trên Ciphertext để cóđược Plaintext ban đầu
- Mã hoá hoán vị (Transposition Cipher):
Bên cạnh phương pháp mã hoá thay thế thì trong mã hoá cổ điển có mộtphương pháp khác nữa cũng nổi tiếng không kém, đó chính là mã hoá hoán vị.Nếu như trong phương pháp mã hoá thay thế, các kí tự trong Plaintext được thaythế hoàn toàn bằng các kí tự trong Ciphertext, thì trong phương pháp mã hoáhoán vị, các kí tự trong Plaintext vẫn được giữ nguyên, chúng chỉ được sắp xếplại vị trí để tạo ra Ciphertext Tức là các kí tự trong Plaintext hoàn toàn không bịthay đổi bằng kí tự khác
Mã thay thế có thể được mô tả như sau:
Cho P = C = Z26 K chứa mọi hoán vị có thể của 26 kí hiệu 0, 1, …,25 với mỗi hoán vị K, ta định nghĩa
Trang 10e(x) = (x) và
d(y) = -1(y)
trong đó -1 là hoán vị ngược của
Nhận xét: với mã thay thế, ta có một không gian khoá tương đối lớn (mỗi
khoá là một hoán vị của 26 kí hiệu 0, 1, …, 25) do đó nó khó có thể bị thám theophương pháp tìm khóa vét cạn, thậm chí cả bằng máy tính
1.6 Kỹ thuật mã hóa hiện đại: DES
Mã DES có các tính chất sau:
- Là mã thuộc hệ mã Feistel gồm 16 vòng, ngoài ra DES có thêm mộthoán
- vị khởi tạo trước khi vào vòng 1 và một hoán vị khởi tạo sau vòng 16
- Kích thước của khối là 64 bít: ví dụ bản tin „meetmeafterthetogaparty‟
- biểu diễn theo mã ASCII thì mã DES sẽ mã hóa làm 3 lần, mỗi lần 8 chữ
- cái (64 bít): meetmeaf - tertheto - gaparty
- Kích thước khóa là 56 bít
- Mỗi vòng của DES dùng khóa con có kích thước 48 bít được trích ra từ
- khóa chính
Trang 11Hình dưới đây minh họa các vòng của mã DES:
Hình 2- 1: Các vòng Feistel của mã DES [1]
Sơ đồ mã DES trên gồm ba phần, phần thứ nhất là các hoán vị khởi tạo vàhoán vị kết thúc Phần thứ hai là các vòng Feistel, phần thứ ba là thuật toán sinhkhóa con Chúng ta sẽ lần lượt đi vào chi tiết của từng phần
1.1.1 Hoán vị khởi tạo và hoán vị kết thúc
Ta đánh số các bít của khối 64 bít theo thứ tự từ trái sang phải là 0, 1, …,
62, 63: b0b1b2… b62b63
Trang 12Hoán vị khởi tạo sẽ hoán đổi các bít theo quy tắc sau :
Trang 13do yếu tố lịch sử.
Hình sau minh họa một vòng Feistel của DES:
Trang 14Hình 2- 2: Cấu trúc một vòng của mã DES [2]
Trong DES, hàm F của Feistel là:
F(R i−1, K i) = P-box(S-boxes(Expand(R i−1,)ꜗ K i))Trong đó hàm Expand vừa mở rộng vừa hoán vị Ri-1 từ 32 bít lên 48 bít.Hàm Sboxes nén 48 bít lại còn 32 bít Hàm P-box là một hoán vị 32 bít Mô tảcủa các hàm trên là như sau:
Trang 15- Expand: đánh số các bít của Ri-1 theo thứ tự từ trái sang phải là 0, 1, 2,
…, 31 Hàm Expand thực hiện vừa hoán vị vừa mở rộng 32 bít thành 48 bít theoquy tắc:
48 bit
- S-boxes:
Hàm S-boxes của DES biến đổi một số 48 bítthành một số 32 bít Tuy nhiên, nếu chỉ lập một bảngtra cứu như ở TinyDES thì bảng này phải có 216dòng và 232 cột, dẫn đến số phần tử của bảng rất lớn
Để giảm kích thước của bảng tra cứu, người ta chia hàm boxes thành 8 hàm box con, mỗi hàm biến đổi số 6 bít thành số 4 bít
Trang 161.1.3 Thuật toán sinh khóa con của DES
Khóa K 64 bít ban đầu được rút trích và hoán vị thành một khóa 56 bít (tứcchỉ sử dụng 56 bít) theo quy tắc:
56 bit
Khóa 56 bít này được chia thành 2 nửa trái phải KL0 và KR0 , mỗi nửa cókích thước 28 bít Tại vòng thứ i (i = 1, 2, 3,…,16), KL i−1 và KR i−1được dịchvòng trái r i bít để có được KL i và KR i, với r i được định nghĩa:
Trang 17Cuối cùng khóa K i của mỗi vòng được tạo ra bằng cách hoán vị và nén 56bít của KL i và KR i thành 48 bít theo quy tắc:
48 bit
1.1.4 Hiệu ứng lan truyền (Avalanche Effect)
Một tính chất quan trọng cần thiết của mọi thuật toán mã hóa là chỉ cầnmột thay đổi nhỏ trong bản rõ hay trong khóa sẽ dẫn đến thay đổi lớn trong bản
mã Cụ thể, chỉ cần thay đổi một bít trong bản rõ hay khóa thì dẫn đến sự thayđổi của nhiều bít bản mã Tính chất này được gọi là hiệu ứng lan truyền Nhờ cótính chất này mà người phá mã không thể giới hạn miền tìm kiếm của bản rõ haycủa khóa (dù phá mã theo known-plaintext hay chosen-plaintext) nên phải thựchiện vét cạn khóa DES là một phương pháp mã hóa có hiệu ứng lan truyền này.Xét hai bản rõ sau (64bít):
P1:00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000
P2:10000000 00000000 00000000 00000000 00000000 00000000 0000000000000000
Hai bản rõ trên được mã hóa bằng DES với khóa:
Trang 18Bảng 2- 1: Hiệu ứng lan truyền [1]
Vòng thứ Số bit khác nhau Vòng thứ Số bit khác nhau
Trang 19Chỉ cần đến vòng thứ 2, số bít khác nhau giữa hai bản mã đã là 21 bít, sau
16 vòng số bít khác nhau là 34 bít (khoảng 1/2 tổng số bít của bản rõ)
Xét bản rõ sau (64 bít):
P: 01101000 10000101 00101111 01111010 00010011 01110110 1110101110100100
Trang 20Dùng hai khóa sau đây để mã hóa bản rõ trên (hai khóa này chỉ khác nhau
1 bít):
K1: 1110010 1111011 1101111 0011000 0011101 0000100 0110001 11011100K2: 0110010 1111011 1101111 0011000 0011101 0000100 0110001 11011100
Bảng 2-4.b cho biết số bít khác nhau của bản mã tương ứng với K1 và K2qua các vòng của DES Sau 16 vòng, số bít khác nhau là 35 bít, cũng khoảng 1/2tổng số bít của bản rõ
1.1.5 Độ an toàn của DES
Ta hãy xem xét tính an toàn của DES trước một vài phương pháp tấn côngphá mã:
- Tấn công vét cạn khóa (Brute Force Attack):
Vì khóa của mã DES có chiều dài là 56 bít nên để tiến hành brute-forceattack, cần kiểm tra 256 khóa khác nhau Hiện nay với những thiết bị phổ dụng,thời gian để thử khóa là rất lớn nên việc phá mã là không khả thi (xem bảng).Tuy nhiên vào năm 1998, tổ chức Electronic Frontier Foundation (EFF) thôngbáo đã xây dựng được một thiết bị phá mã DES gồm nhiều máy tính chạy songsong, trị giá khoảng 250.000$ Thời gian thử khóa là 3 ngày Hiện nay mã DESvẫn còn được sử dụng trong thương mại, tuy nhiên người ta đã bắt đầu áp dụngnhững phương pháp mã hóa khác có chiều dài khóa lớn hơn (128 bít hay 256bít) như TripleDES hoặc AES.49
- Phá mã DES theo phương pháp vi sai (differential cryptanalysis):
Năm 1990 Biham và Shamir đã giới thiệu phương pháp phá mã vi sai.Phương pháp vi sai tìm khóa ít tốn thời gian hơn brute-force Tuy nhiên phươngpháp phá mã này lại đòi hỏi phải có 247 cặp bản rõ - bản mã được lựa chọn(chosen-plaintext) Vì vậy phương pháp này là bất khả thi dù rằng số lần thử cóthể ít hơn phương pháp brute-force
Trang 21- Phá mã DES theo phương pháp thử tuyến tính (linear cryptanalysis)Năm 1997 Matsui đưa ra phương pháp phá mã tuyến tính Trong phươngpháp này, cần phải biết trước 243 cặp bản rõ-bản mã (known-plaintext) Tuynhiên 243 cũng là một con số lớn nên phá mã tuyến tính cũng không phải là mộtphương pháp khả thi.
1.7 Một số ứng dụng của mã hóa trong Security
Một số ứng dụng của mã hoá trong đời sống hằng ngày nói chung và tronglĩnh vực bảo mật nói riêng Đó là:
Trang 22CHƯƠNG 2 KH
ẢO SÁT VÀ THIẾT KẾ
1.8 Khảo sát tính toán các kỹ thuật mã hóa
Chúng ta sẽ đi vào thiết kế một ví dụ cho mã Substitution và mã DES đểthấy được sự chính xác trong thuật toán
1.1.6 Kỹ thuật mã hóa Substitution
Mã hoá bản rõ: cụm từ “ illustrate “ sử dụng mã thay thế với khoá là 1 hoán
vị bất kì sau:
Với khoá là một hoán vị bất kì ở trên thì bản rõ: “illustrate” sẽ tương ứngvới bản mã sau (sử dụng hàm mã hoá e(x) = (x)): “ ZBBUVMCXMH ”
1.1.7 Kỹ thuật mã hóa DES
Chọn thông điệp mã hóa: ‘AF88888888555456’.Chuyển sang mã nhị phânvới block 64 bit:
b=[ 1 0 1 0 1 1 1 1
1 0 0 0 1 0 0 0
1 0 0 0 1 0 0 0
1 0 0 0 1 0 0 0
Trang 23Lấy key chuyển qua bộ PC-1.
Chuyển qua bộ PC-1 ta được C và D:
KPC1= C and D
PC1=[57,49,41,33,25,17,9;1,58,50,42,34,26,18;10,2,59,51,43,35,27;19,11,3,60,52,44,36;63,55,47,39,31,23,15;7,62,54,46,38,30,22;14,6,61,53,45,37,29;21,13,5,28,20,12,4];
Trang 24K_LS(PC-2)=[ 1 0 1 0 0 0 0 0 0 0 1 1 0 0
0 0 0 0 1 1 0 1 1 0 0 0 0 1 01
0 0 1 0 1 0 1 0 1 1 0 0 1 10
1 1 0]
Chọn chuỗi mã hóa input vào lấy từ kí tự 3364 cho qua hàm E để mở rộng
từ 3248 bit:
Trang 25E=[32, 1, 2, 3, 4, 5; 4, 5, 6, 7, 8, 9; 8, 9,10,11,12,13; 12,13,14,15,16,17;16,17,18,19,20,21; 20,21,22,23,24,25; 24,25,26,27,28,29; 28,29,30,31,32,1];R1=b(33:64)
Trang 26Chuyển R qua mã DEC và HEX ta được kết quả mã hóa:
‘90953B49584B65CD’
1.9 Thiết kế giao diện hiển thị
Thiết kế giao diện Guide để có thể tiện dụng sử dụng mã hóa thông tin qua
mã hóa DES và mã hóa Substitution với ô nhập input và key riêng rõ ràng cùngvới nút Push 1 cho mã hóa DES và Push 2 cho mã hóa Substitution để mã hóa:
Hình 3- 1: Giao diện guide mô phỏng
Trang 27CHƯƠNG 3 KẾT QUẢ THỰC HIỆN
1.1 Kết quả mô phỏng với mã DES
Với input vào là: ‘AF88888888555456’
Và key là: ‘AF88888888555456’
Ta được kết quả mã hóa như hình:
Hình 4- 1: Giao diện guide cho kết quả mã hóa DES
Trang 281.2 Kết quả mô phỏng với mã hóa Substitution
Với input vào ta được kết quả mã hóa với giao diện:
Hình 4- 2: Giao diện guide cho kết quả mã hóa Substitution
Trang 29CHƯƠNG 4 KẾT
LUẬN
1.10 KẾT LUẬN :
Đã hoàn thành nhiệm vụ được giao
Giao diện guide chạy đúng với các công thức mô phỏng
1.11 HƯỚNG PHÁT TRIỂN
Phát triển giao diện mã hóa với nhiều loại mã hóa phức tạp hơn như:AES,triple DES,…
Trang 30TÀI LIỆU THAM KHẢO
https://www.mathworks.com/matlabcentral/answers/330213-can-i-get-a-des-algorithm-source-code-in-matlab
Trang 31PHỤ LỤC A
% TEST2 MATLAB code for test2.fig
% TEST2, by itself, creates a new TEST2 or raises the existing
% singleton*.
%
% H = TEST2 returns the handle to a new TEST2 or the handle to
% the existing singleton*.
%
% TEST2('CALLBACK',hObject,eventData,handles, ) calls the local
% function named CALLBACK in TEST2.M with the given input arguments.
%
% TEST2('Property','Value', ) creates a new TEST2 or raises the
% existing singleton* Starting from the left, property value pairs are
% applied to the GUI before test2_OpeningFcn gets called An
% unrecognized property name or invalid value makes property
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help test2
% Last Modified by GUIDE v2.5 27-Oct-2017 23:00:32
% Begin initialization code - DO NOT EDIT
% End initialization code - DO NOT EDIT
% - Executes just before test2 is made visible.