Tài liệu tham khảo chuyên ngành tin học Nghiên cứu và thực hiện 1 số TEST để đánh giá độ an toàn của DES
Trang 1LỜI MỞ ĐẦU
Máy tính được phát minh vào năm 1942, lúc đó nó nằm ngoài tầm taycủa các tổ chức, cá nhân vì nó yêu cầu cao về chi phí, kích cỡ, năng lượng…Ngày nay, máy tính đã rất phổ biến và người ta không sử dụng một máy tính đơnlẻ nữa mà kết nối các máy tính với nhau nhằm tăng khả năng làm việc, trao đổivà cập nhật thông tin Các máy tính được kết nối với nhau được gọi là mạng.Trên phạm vi toàn cầu người ta dung mạng Internet, ở mỗi quốc gia đều cónhững mạng riêng của minh (Intranet) với rất nhiều những mạng mang tính bộphận( có thể là LAN( Local Area Network- Mạng cục bộ) hoặc WAN( WideArea Network- Mạng diện rộng) hoặc MAN(Metropolitan Area Network- Mạngvùng Thành phố)) Nhiều dịch vụ của mạng như : thư điện tử, chuyển và nhậntiền, thương mại điện tử… đã được sử dụng rộng rãi.
Khi tham gia vào mạng, vấn đề quan trọng đặt ra là làm thế nào để bảomật thông tin, dữ liệu Thông tin trên mạng dù đang chuyển hay được lưu trữ đềucần được bảo vệ Hoặc các thông tin đó cần được giữ bí mật hoặc chúng phải chophép người ta kiểm tra để tin tưởng rằng chúng không bị sửa đổi so với dạngnguyên thuỷ của mình.
Trước yêu cầu đó một số giải pháp kỹ thuật đã được xây dựng nhằm đảmbảo tính an toàn dữ liệu tại nơi lưu trữ cũng như dữ liệu được truyền qua mạng.Các giải pháp đó là người ta sử dụng các hệ mật Có các hệ mật cổ điển như : mật
Trang 2mã thay thế, mật mã dịch chuyển, mật mã Affine, mật mã Vigenere…, và các hệmật hiện đại như : mật mã khoá công khai RSA, chữ ký số, chuẩn mã dữ liệuDES… Nhưng khi sử dụng các hệ mật để mã hoá dữ liệu cần phải quan tâm đếnđộ an toàn của các hệ mật mà mình đã sử dụng.
Trong đề tài này tôi nghiên cứu về cách đánh giá độ an toàn của chuẩn mãdữ liệu DES Để kiểm tra đánh giá độ an toàn của DES ta có hai cách Đó làphương pháp tấn công DES và phương pháp đánh giá các tính chất của DES Sựkhác nhau giữa hai phương pháp này là một phương pháp thì tấn công trực tiếpvào DES, nếu phá vỡ DES thì ta có thể nói rằng DES không an toàn và ngược lại;phương pháp đánh giá tính chất thì kiểm tra các tính chất của DES, nếu thoả mãnđiều kiện thì có thể nói là an toàn và ngược lại Và tôi đi sâu nghiên cứu phươngpháp đánh giá các tính chất của DES.
2
Trang 3Ngoài việc C được dùng để viết hệ điều hành UNIX, người ta nhanh chóngnhận ra sức mạnh của C trong việc xử lý các vấn đề hiện đại của tin học: xử lý số,văn bản, cơ sở dữ liệu, lập trình hướng đối tượng C đã trở thành một chuẩn mặcnhiên.
Liên quan đến sự hình thành và phát triển của ngôn ngữ, có thể kể đến mộtsố sự kiện sau:
- Năm 1978, cuốn giáo trình dạy lập trình bằng ngôn ngữ C “The Cprogramming langguage” do chính 2 tác giả của ngôn ngữ Brian W.Kernighan vàDennis M.Ritchie biên soạn đã được xuất bản và được phổ biến rộng rãi.
- Năm 1983 một tiểu ban của viện tiêu chuẩn quốc gia Mỹ (ANSI) đượcthành lập nhằm đề xuất ra một chuẩn cho ngôn ngữ C.
Trang 4- Năm 1988 chuẩn ANSI C chính thức được ban hành Chuẩn này bao gồmcác mô tả về ngôn ngữ theo Brian W.Kernighan và Dennis M.Ritchie và quy địnhcác thư viện chuẩn của ngôn ngữ C, nhờ đó tăng tính khả chuyển của chương trìnhviết bằng C.
- Trong thế giới máy vi tính có các hệ chương trình dịch C nổi tiếng như:Turbo C, Borland C của Borland Inc; MSC, VC của Microsoft Corp; Lattice C củaLattice.
I 2 Các tính chất đặc trưng của ngôn ngữ
C là một ngôn ngữ lập trình vạn năng được dùng để viết các hệ điều hànhnhư UNIX cũng như các chương trình ứng dụng như quản lý văn bản, cơ sở dữliệu.
C là một ngôn ngữ có mức độ thích nghi cao, gọn và không nhất thiết phảicần tới hợp ngữ.
C độc lập với bất kỳ kiến trúc máy đặc thù nào và với một chút thận trọngvẫn dễ dàng viết được các chương trình “khả chuyển” (portability) tức là nhữngchương trình có thể chạy mà không cần phải thay đổi gì khi có sự thay đổi về phầncứng.
C được sử dụng rộng rãi trong các lĩnh vực chuyên nghiệp vì đáp ứngđược các yêu cầu: hiệu quả cao trong soạn thảo chương trình và dịch ra mã máy;tiếp cận trực tiếp với các thiết bị phần cứng.
C không đưa ra các phép toán xử lý trực tiếp các đối tượng hợp thành nhưlà đối tượng toàn vẹn; không xác định bất kỳ một phương tiện cấp phát bộ nhớnào khác ngoài cấp phát tĩnh, cấp phát động theo nguyên tắc xếp chồng cho cácbiến cục bộ của hàm; không cung cấp cơ chế I/O, không có phương pháp truynhập tệp Tất cả các cơ chế này được thực hiện bằng những lời gọi hàm trong thưviện.
4
Trang 5C đưa ra các kết cấu điều khiển cơ bản cần cho các chương trình có cấutrúc như: nhóm tuần tự các câu lệnh, chọn quyết định (if); chu trình với phép kiểmtra kết thúc ở đầu (for, while), hoặc ở cuối (do while); và việc lựa chọn một trongcác trường hợp có thể (switch).
C cung cấp con trỏ và khả năng định địa chỉ số học Các đối của hàm đượctruyền bằng cách sao chép giá trị đối và hàm được gọi không thể thay đổi được giátrị của đối hiện tại.
C cho phép hàm được gọi đệ quy và các biến cục bộ của hàm sẽ “tự động”sinh ra hoặc tạo mới với mỗi lần gọi mới Các định nghĩa hàm không được lồngnhau nhưng các biến có thể được khai báo theo kiểu cấu trúc khối Các hàm có thểdịch tách biệt Các biến có thể trong hoặc ngoài hàm Hàm chỉ
biết được các biến ngoài trong cùng một tệp gốc, hoặc biến tổng thể extern Cácbiến tự động có thể đặt trong các thanh ghi để tăng hiệu quả, nhưng việc khai báothanh ghi chỉ là một hướng dẫn cho chương trình dịch và không liên quan gì đếncác thanh ghi đặc biệt của máy.
C không phải là một ngôn ngữ có kiểu mạnh mẽ theo nghĩa của PASCALhoặc ALGOL/68 Nó tương đối thoải mái trong chuyển đổi dữ liệu nhưng khôngtự động chuyển các kiểu dữ liệu một cách phóng túng như của PL/I Các chươngtrình dịch hiện có đều không đưa ra cơ chế kiểm tra chỉ số mảng, kiểu đối số…
Mặc dù vậy, C vẫn còn tồn tại một số nhược điểm như một số phép toán cóthứ tự thực hiện chưa đúng; một số phần cú pháp có thể làm tốt hơn; hiện có nhiềuphiên bản của ngôn ngữ, chỉ khác nhau ở một vài chi tiết.
Tóm lại, C vẫn tỏ ra là một ngôn ngữ cực kỳ hiệu quả và đầy sức diễn cảmđối với nhiều lĩnh vực ứng dụng lập trình Hơn nữa, ta biết rằng hệ mật chuẩn haychữ ký số luôn cần một bộ số rất lớn tức là kích cỡ của không gian khoá rất lớn
Trang 6khoảng trên 300 số thập phân Do đó, ngôn ngữ C đủ mạnh để có thể đáp ứngđược điều đó.
Định nghĩa : Hệ mật là một bộ năm thành phần (P,C,K,E,D) thoả mãn các
điều kiện sau:
1) P là tập hữu hạn các bản rõ có thể2) C là tập hữu hạn các bản mã có thể3) K là tập hữu hạn các khoá có thể
4) Với mỗi k K, tồn tại một quy tắc mã ek E và một quy tắc giải mãtương ứng dk D Mỗi ek : P C và dk : C P thoả mãn :
dk(ek(x)) = x với mỗi bản rõ x P
6
Trang 7Điều kiện 4 là điều kiện chính Nó có nghĩa là nếu bản rõ x ( plaintext )được mã hoá sử ek và sau đó bản mã ( ciphertext ) kết quả được giải mã sử dụngdk thu được kết quả là bản rõ nguyên bản x.
Giả sử, Alice muốn gửi cho Bob một thông báo nào đấy mà không chongười khác xem, thông báo đó có thể là bài tiếng Anh, dữ liệu sô v.v…có cấutrúc tuỳ ý Thông tin đó được gọi là bản rõ
Alice và Bob phải thống nhất chọn một hệ mật và chọn khoá ngẫu nhiênk K Họ làm điều này một cách an toàn, chẳng hạn khi họ ở cùng một chỗ vàkhông bị Oscar quan sát hoặc họ dùng kênh an toàn khi ở xa nhau.
Sau đó, giả sử Alice muốn gửi thông báo cho Bob trên kênh không antoàn Thông báo đó là dòng:
Rõ ràng, với x1 x2 thì ek(x1) ek(x2) Nếu y = ek(x1)= ek(x2) khi x1 = x2thì Bob không biết được y phải gải mã cho x1 hay x2 Chú ý rằng P = C thì mỗihàm mã hoá ek là một phép hoán vị Có nghĩa là, nếu tập các bản rõ và bản mã làtương tự thì mỗi hàm mã hóa chỉ sắp xếp ( hay hoán vị ) lại các phần tử của tậpnày
Oscar
Trang 9Để giải mã, Bob thực hiện theo trình tự ngược lại Trước hết chuyển bảnmã thành dãy các số, tiếp theo trừ mỗi giá trị cho 11( rút gọn cho modulo 26) vàcuối cùng chuyển dãy số thành dãy chữ.
Một hệ mật được sử dụng trong thực tế, nó phải thoả mãn hai tính chất sau:1) ek và dk khi tác động vào x hoặc y là có hiệu quả tính toán
2) Một đối thủ khi có bản mã y, sẽ không thể xác định khoá k được sử dụnghoặc bản rõ x
-1 =
Trang 10E(x) = ax + b mod 26 với a,b Z26Hàm này được gọi là hàm affine
Khi a = 1 ta được mật mã dịch chuyển.
Để giải mã được, hàm affine phải song ánh, nghĩa là với mọi y Z26 ,phương trình ax + b = y (mod 26) phải có nghiệm duy nhất Đồng dư thức nàytương đối với : ax = y – b (mod 26) Phương trình này có nghiệm duy nhất khi vàchỉ khi (a,26) = 1.
Để tìm nghiệm x, trước tiên ta tìm số a-1 a26 thoả mãn : a.a-1 = 1 mod 26 Khi đó d(y) = a-1(y - b) mod (26)
Định nghĩa : Cho P = C = Z26 và K = {(a,b) Z26 * Z26 : (a,26) = 1} với k = (a,b) K, xác định :
ek(x) = ax + b mod 26 và dk(y) = a-1(y - b) mod 26 với x,y Z26
Trang 11Ví dụ : Giả sử m = 6 và khoá là hoán vị sau: =
và hoán vị ngược của -1 =
Trang 12Trước tiên gom thành nhóm 6 phần tử : H O O F C H I S M I N Hx1 = h, x2 = o, x3 = o, x4 = f, x5 = c, x6 = h
khi đó nhóm thứ nhất được mã thành x3 x5 x1 x6 x4 x2 = O C H H F Otương tự, nhóm thứ hai là : M N I H I S
- Mật mã tuần hoàn với chu kỳ d : zi+d = zi , i 1
Mật mã dòng được chú ý nhiều hơn cả là trường hợp P = C = Z2 Khi đóphép mã hoá và giải mã là cộng theo modulo 2.
e2(x) = x+z mod 2 d2(y) = y- z mod 2- Mật mã tự động
12
Trang 13Định nghĩa : P = C = K = Z26, z1 = k,zi = xi-1 (i2)với 0 z 25, xác định :
ez(x) = x+z mod 26
dz(y) = y- z mod 26 với x,y Z26
Ví dụ : k = 8 , thông báo là : H A I R P H O N G FTrước tiên, chuyển thông báo rõ thành dãy số nguyên
7 0 8 17 15 7 14 13 6 5Dòng khoá như sau :
8 7 0 8 17 15 7 14 13 6 5
Cộng dãy khoá và dãy rõ : yi = xi + zi mod 26, với i= 1,2,… ta được15 7 8 25 6 22 21 1 19 11
và chuyển thành chữ : P H I Z G W V B T LVới bản mã này và k = 8, ta giải mã như sau : Chuyển bản mã thành dãy số và trừ lần lượt
15 7 8 25 6 22 21 1 19 11 8 7 0 8 17 15 7 14 13 6 7 0 8 17 15 7 14 13 6 5
chuyển dãy số thành dãy chữ : H A I R P H O N G F
Trên đây là các hệ mật cổ điển thường được dùng để mã hoá thông tin khimuốn gửi đi trên các kênh không an toàn hay thông tin đang được lưu trữ cố định.
Trang 14tiên trên công báo liên bang ngày 17 – 03 – 1975 Sau các cuộc thảo luận côngkhai, DES được chấp nhận như cho các ứng dụng bảo mật vào ngày 15–01- 1977.DES trở thành một hệ bảo mật được sử dụng rộng rãi nhất trên thế giới.
III.1 Mô tả DES
DES mã hoá một dòng bit rõ x có độ dài 64 với k là dòng 56 bit, đưa ra bảnmã y cũng là một dãy bit có độ dài 64.
Trang 15a Cho bản rõ x, ta tinh đợc x0 qua việc hoán vị các bit của x theo hoán vị đầu IP : x0 = IP( x ) = L0R0
L0 là 32 bit đầu tiên của x0 còn R0 là 32 bit còn lại, và IP là hoán vị đầu cố định
Áp dụng phộp hoỏn vị ngược IP-1 cho L16R16 ta tớnh được bản mó y :y = IP-1( L16 R16 ) , chỳ ý đảo ngược vị trớ của L16 và R16.
40 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 44 13 53 21 60 2936 4 43 12 52 20 59 2835 3 42 11 51 19 58 2734 2 41 10 50 18 57 2633 1 40 9 49 17 56 25
32 1 2 3 4 54 5 6 7 8 98 9 10 11 12 1312 13 14 15 16 17
Li-1 Ri-1
Li Ri
ki
Trang 16theo hàm mở rộng E E( A ) gồm 32 bit của A, đợc hoán vị theo cách cụ thể và với 16 bit của các bit xuất hiện hai lần.b Tính B = E( A ) ^ J và kết quả B đợc tách thành các khối 6 bit liên tiếp.
B = B1 B2 B3 B4 B5 B6 B7 B8
c Bớc tiếp theo sử dụng 8 hộp S :S1,….,S.,S8 Mỗi hộp Si là một mảng hai chiều4*16, mỗi dòng chứa các giá trị từ 0 15 Ta có đầu vào Bj là một dãy 6 bit Bj = b1 b2 b3 b4 b5 b6 b7 b8 hai bit b1 b6 xác định biểu diễn nhị phân của r là chỉ sốdòng của Sj ( 0 r 3), và 4 bit b2 b3 b4 b5 xác định biểu diễn nhị phân của C làchỉ số cột của Sj ( 0 c 15 ) Sau đó, Si ( Bj ) là số nằm trong toạ độ ( r, C ) gồm4 bít.
Trang 178 hộp S và hoán vị P :
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 70 15 7 4 14 2 13 1 10 6 12 11 9 5 3 84 1 14 8 13 6 2 11 15 12 9 7 3 10 5 015 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 103 13 4 7 15 2 8 14 12 0 1 10 6 9 11 50 14 7 11 10 4 13 1 5 8 12 6 9 3 2 1513 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
S3
Trang 1810 0 9 14 6 3 15 5 1 13 12 7 11 4 12 813 7 0 9 3 4 6 10 2 8 5 14 12 11 15 113 6 4 9 8 15 3 0 11 1 2 12 5 10 14 73 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
7 13 4 3 0 6 9 10 1 2 8 5 11 12 4 1513 8 11 5 6 15 0 3 4 7 2 12 1 10 14 910 6 9 0 12 11 7 13 15 1 3 14 5 2 8 43 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 914 11 2 12 4 7 13 1 5 0 15 10 3 9 8 64 2 1 11 10 13 7 8 15 9 12 5 6 3 0 1411 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
12 1 10 14 9 2 6 8 0 13 3 4 14 7 5 1110 15 4 2 7 12 9 5 6 1 13 14 0 11 3 89 14 15 5 2 8 12 3 7 0 4 10 1 13 11 64 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 113 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 26 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
18
Trang 1913 2 8 4 6 15 11 1 10 9 3 14 5 0 12 71 15 3 8 10 3 7 4 12 5 6 11 0 14 9 27 11 4 1 9 12 14 2 0 6 10 13 15 3 5 82 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
Hoán vị P :
III.1.3 Lợc đồtạo hệ thống khoá
Cuối cùng ta cần mô tả sự tính toán lợc đồ khoá từkhoá K Khoá là một dãy 64 bit với 56 bit đầu vào và 8 bit làcác bit kiểm tra (là các bit ở vị trí thứ 8, 16,24,32, 48, 56,64) Các bit kiểm tra này sẽ đợc bỏ qua trong quá trình tạokhoá Cho 56 bit này hoán vị theo bảng PC-1 ta sẽ tìm đợcC0D0 với C0 là 28 bit đầu tiên của PC-1, D0 là 28 bit còn lại.
PC-1( K ) = C0D0, với i = 116 ta tínhCi = LSi( Ci- 1)
Di = LSi( Di-1 )
LSi thể hiện phép dịch trái quay vòng một hoặc hai bit, phụ thuộc và giá trịcủa i, dịch một bit nếu i = 1,2,9,16 và dịch hai bit với các giá trị còn lại của i Ki đ-ợc tính theo CiDi qua bảng hoán vị PC-2
Ki = PC-2( CiDi )
Ta có các bảng PC-1 và PC-2 :P
16 7 20 2129 12 28 171 15 23 265 18 31 102 8 24 1432 27 3 919 13 30 622 11 4 25
57 49 41 33 25 17 91 58 50 42 34 26 1810 2 59 51 43 35 2719 11 3 60 52 44 3663 55 47 39 31 23 157 62 54 46 38 30 2214 6 61 53 45 37 2921 13 5 28 20 12 4
14 17 11 24 1 53 28 15 6 21 1023 19 12 4 26 816 7 27 20 13 241 52 31 37 47 5530 40 51 45 33 4844 49 39 56 34 5346 42 50 36 29 32