Luận Văn: Nghiên cứu và đánh giá độ an toàn của chuẩn mã hóa dữ liệu 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 Ngàynay, máy tính đã rất phổ biến và ngời ta không sử dụng một máy tính đơn lẻ nữamà 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 đổi và cậpnhậ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ữngmạ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( Wide AreaNetwork- Mạng diện rộng) hoặc MAN(Metropolitan Area Network- Mạng vùngThành phố)) Nhiều dịch vụ của mạng nh : th điện tử, chuyển và nhận tiền, thơngmại điện tử… Ngày đã đợ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 lu 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ạng nguyênthuỷ 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 lu trữ cũng nh dữ liệu đợc truyền qua mạng Cácgiả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 mãthay thế, mật mã dịch chuyển, mật mã Affine, mật mã Vigenere… Ngày, và các hệ mậthiện đại nh : mật mã khoá công khai RSA, chữ ký số, chuẩn mã dữ liệu DES… NgàyNhng khi sử dụng các hệ mật để mã hoá dữ liệu cần phải quan tâm đến độ an toàncủ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
1
Trang 2nhau giữa hai phơng pháp này là một phơng pháp thì tấn công trực tiếp và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ơng pháp đánh giácác tính chất của DES.
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.
- 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 trng 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ành nhUNIX 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ững ch-ơ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 đợccá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ậntrự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ácngoài cấp phát tĩnh, cấp phát động theo nguyên tắc xếp chồng cho các biến cục bộ
3
Trang 4của hàm; không cung cấp cơ chế I/O, không có phơng pháp truy nhậ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.
C đ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ấu trúcnh: 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ểm trakết thúc ở đầu (for, while), hoặc ở cuối (do while); và việc lựa chọn một trong cáctrờ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 nhng 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ả, nhng 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ì đến cácthanh 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 nhng không tựđộ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ơng trìnhdịch hiện có đều không đa ra cơ chế kiểm tra chỉ số mảng, kiểu đối số… Ngày
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 cha đú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ớnkhoảng trên 300 số thập phân Do đó, ngôn ngữ C đủ mạnh để có thể đáp ứng đ ợcđiều đó.
Trang 5Đị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
Đ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ụng dk
đ-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 cho ời khác xem, thông báo đó có thể là bài tiếng Anh, dữ liệu sô v.v… Ngàycó cấu trúc tuỳý Thông tin đó đợc gọi là bản rõ
ng-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:
x = x1, x2,… Ngày, xn với n 1, xi P, 1 i n
Mỗi xi đợc mã hoá sử dụng quy tắc ek đợc định rõ bởi khoá định trớc K.Từ đó, Alice tính:
5
Trang 6yi = ek( xi), với 1 i n, và bản mã thu đợc là dòng:y = y1, y2,… Ngày, yn
Alice gửi nó trên kênh, Oscar dù thấy bản mã này trên kênh không an toàncũng không thể xác định đợc bản rõ là gì Khi Bob nhận đợc y = y1, y2,… Ngày, yn, sẽsử dụng dk để giả mã, thu đợc bản rõ ban đầu x = x1,x2,… Ngày,xn.
Rõ ràng, với x1 x2 thì ek(x1) ek(x2) Nếu y = ek(x1)= ek(x2) khi x1 = x2
thì Bob không biết đợc y phải gải mã cho x1 hay x2 Chú ý rằng P = C thì mỗi hàmmã 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ơngtự 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ập này
và dk(y) = y + k mod 26 với x,y Z26
Ví dụ : Giả sử khoá k = 11 và bản rõ là :WEWILLMEETATMIDNIGHTTrớc hết, phải số hoá nó thu đợc nh sau
Trang 7Cuối cùng chuyển dãy số thành dãy chữ
H P H T W W X T P E L E X T O Y T R S E
Để giải mã, Bob thực hiện theo trình tự ngợc lại Trớc hết chuyển bản mã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ốicù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 =
E(x) = ax + b mod 26 với a,b Z26
Hàm này đợc gọi là hàm affine
Trang 8Để giải mã đợc, hàm affine phải song ánh, nghĩa là với mọi y Z26 , phơngtrình ax + b = y (mod 26) phải có nghiệm duy nhất Đồng d thức này tơng đốivớ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
Ví dụ : m = 6, khoá k = CIPHER = (2,8,15,7,4,17)Thông báo : THISCRIPTOSYSTEMISNOTSECURETa chuyển thành số :
Trang 9Ví dụ : Giả sử m = 6 và khoá là hoán vị sau: =
và hoán vị ngợc của -1 =
Thông báo : H O O F C H I S M I N H
Trớ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
Trang 10Nếu zi = k với mọi i thì ta có thể nghĩ mật mã khối nh trờng hợp đặc biệtcủa mật mã dòng
Sau đây là một số trờng hợp đặc biệt quan trọng của mật mã dòng :- Mật mã đồng bộ zi = fi(k) với i = 1,2,… Ngày
- 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épmã 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
Đị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,… Ngày 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
Trang 11Trê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 lu trữ cố định.
58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 159 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 7
Trang 12L0 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.
III.1.2 Hàm f( A, J )
Đầu vào của hàm f là đối số A, một dãy 32 bit, và đối số thứ hai là J, là dãy48 bit, kết quả thu đợc là dãy có độ dài 32 bit Các bớc đợc thực hiện :
a Mở rộng A từ 32 bit thành 48 bit theo 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.
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 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28 2928 29 30 31 32 1
Trang 13B = B1 B2 B3 B4 B5 B6 B7 B8
c Bớc tiếp theo sử dụng 8 hộp S :S1,… Ngày.,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 148 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
10 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
Trang 152 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
13 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ạo
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
Trang 16khoá Cho 56 bit này hoán vị theo bảng PC-1 ta sẽ tìm đợc C0D0 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ính
Ci = 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 :
Nh vậy ta đã có một thuật toán hoàn chỉnh về mã hoá dữ liệu theo tiêuchuẩn DES.
III.2 Giải mã DES
Tơng tự nh mã hoá, để giải mã một dãy kí tự đã bị mã hoá ta cũng làm theotrình tự các bớc nh trên Tuy nhiên, hệ thống khoá lúc này đã đợc tạo theo chiềungợc lại.
III.2.1 Thuật toán giải mã
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