1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu xây dựng chương trình mã hoá và bảo mật thông tin hệ mã chuẩn DES

83 690 2

Đ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

Định dạng
Số trang 83
Dung lượng 4,72 MB

Nội dung

Mã hóa thông tin là một ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội.Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang đợc sử dụng ngày càng phổ biếnhơn trong các lĩ

Trang 1

TRƯỜNG ĐẠI HỌC VINH KHOA CÔNG NGHỆ THÔNG TIN

- -ĐỒ ÁN TỐT NGHIỆP

Đề Tài:

TÌM HIỂU XÂY DỰNG CHƯƠNG TRÌNH MÃ

HÓA VÀ BẢO MẬT THÔNG TIN HỆ MÃ CHUẨN

Trang 2

đại học vinh, gia đình, bạn bè và những ngời thân Đặc biệt, tôi xin cảm ơn Thầy giáo Lê Văn Minh đã tận tình hớng dẫn và giúp đỡ tôi trong suốt thời gian tôi thực hiện đồ án tốt nghiệp này

Trong quá trình thực hiện đồ án tốt nghiệp, do thời gian và khả năng

có hạn nên đồ án tốt nghiệp của tôi không thể tránh khỏi những sai sót Rất mong đợc sự góp ý chân thành của quý thầy cô và các bạn Tôi xin chân thành cảm ơn !

Vinh,thaựng 5 naờm 2009

Sinh Vieõn

Dửụng Khaộc Linh

MụC Lục

MụC Lục 1

LờI NóI ĐầU 4

Chơng I: PHƯƠNG PHáP M HóA Và GIảI Mã HóA Và GIảI Mã ã HóA Và GIảI Mã 5

I 1 Giới thiệu 5

I 2 Các Hệ Mã Thông Dụng: 6

a Hệ Mã Đầy (Shift Cipher ) 6

b Hệ KEYWORD-CEASAR 6

c Hệ Mã Vuông (SQUARE) 6

d Mã Thế Vị 6

e Phơng Pháp Affine 7

f Phơng Pháp Vigenere 7

g Hệ Mã Hill 8

h Mã Hoán Vị 8

i Mã Vòng 9

I 3 Quy Trình Thám Mã: 9

Chơng II: Hệ M CHUẩN DESã HóA Và GIảI Mã (Data Encryption Standard) 10

II 1 Đặc Tả DES 10

II 2 Lập Mã DES 15

Chơng III: THáM M DESã HóA Và GIảI Mã 17

III 1 Thám Mã Hệ DES - 3 Vòng 20

III 2 Chơng Trình Hệ Mã DES - 3 Vòng 23

Chơng IV: ĐáNH GIá KếT QUả Và HƯớNG PHáT TRIểN 94

TàI LIệU THAM KHảO 95

Trang 3

LờI NóI ĐầU

Hệ thống mạng máy tính hiện trở nên phổ biến trong mỗi cơ quan, doanh nghiệp, vàtrên toàn thế giới, vấn đề quản lý tài nguyên mạng và đảm bảo an toàn thông tin trong các

tổ chức doanh nghiệp và nhà nớc ngày càng trở nên cấp thiết và quan trọng trong thời đạingày nay

Mã hóa thông tin là một ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội.Ngày nay, các ứng dụng mã hóa và bảo mật thông tin đang đợc sử dụng ngày càng phổ biếnhơn trong các lĩnh vực khác nhau trên thế giới, từ các lĩnh vực an ninh, quân sự, quốcphòng…, cho đến các lĩnh vực dân sự nh, cho đến các lĩnh vực dân sự nh thơng mại điện tử, ngân hàng…, cho đến các lĩnh vực dân sự nh

Ứng dụng mã hóa và bảo mật thông tin trong các hệ thống thơng mại điện tử, giao dịch

chứng khoán,…, cho đến các lĩnh vực dân sự nh đã trở nên phổ biến trên thế giới và sẽ ngày càng trở nên quen thuộc vớingời dân Việt Nam Tháng 7/2000, thị trờng chứng khoán lần đầu tiên đợc hình thành tạiViệt Nam; các thẻ tín dụng bắt đầu đợc sử dụng, các ứng dụng hệ thống thơng mại điện tử

đang ở bớc đầu đợc quan tâm và xây dựng Do đó, nhu cầu về các ứng dụng mã hóa và bảomật thông tin trở nên rất cần thiết

Thấy đợc sự cần thiết của việc bảo mật thông tin, nên quá trình thực tập và làm đồ án

tốt nghiệp cuối khóa, tôi đã chọn đề tài: “Tìm Hiểu Xây Dựng Chơng Trình Mã Hóa Và Bảo Mật Thông Tin Hệ Mã Chuẩn DES

Nội dung Đề Tài gồm 2 Phần:

Phần 1: Tìm Hiểu Các Hệ Mã Và Hệ Mã Chuẩn DES.

Phần 2: Xây Dựng Chơng Trình Mã Hóa DES

Chơng I: PHƯƠNG PHáP Mã HóA Và GIảI Mã HóA Và GIảI Mã HóA Và GIảI Mã

I 1 Giới thiệu

- Mã hóa là phơng pháp để biến thông tin ( phim ảnh , văn bản , hình ảnh )

từ định dạng bình thờng sang dạng thông tin không thể hiểu đợc nếu không có

ph-ơng tiện giải mã.

- Giải mã là phơng pháp để đa từ dạng thông tin đã đợc mã hóa về dạng thông tin ban đầu, quá trình ngợc của mã hóa.

- Mã hóa là quá trình chuyển bản rõ thành bản mã, thông thơng bao gồm việc

áp dụng thuật toán mã hóa và một số quá trình xử lý thông tin kèm theo.

- Giải mã chuyển bản mã thành bản rõ, đây là quá trình ngợc lại của mã hóa.

Trang 4

- Thám mã nghiên cứu các nguyên lý và phơng pháp giải mã mà không biết khóa Thông thờng khi đa các mã mạnh ra làm chuẩn dùng chung giữa các ngời sử dụng, các mã đó đợc các kẻ thám mã cũng nh những ngời phát triển mã tìm hiểu nghiên cứu các phơng pháp giải một phần bản mã với các thông tin không đầy đủ Một hệ thống mã hóa bao gồm các thành phần:

1 thông tin trớc khi mã hóa, kí hiệu là P

2 thông tin sau khi mã hóa, kí hiệu là C

3 chìa khóa, kí hiệu là K

4 phơng pháp mã hóa/giải mã, kí hiệu là E/D.

Quá trình mã hóa đợc tiến hành bằng cách áp dụng hàm toán học E lên thông tin P, vốn đợc biểu diễn dới dạng số, để trở thành thông tin đã mã hóa C.

Quá trình giải mã đợc tiến hành ngợc lại: áp dụng hàm D lên thông tin C để đợc thông tin đã giải mã P.

Định nghĩa 1.1: Một hệ mã mật (cryptosystem) là một bộ-năm (P, C, K, E, D)

thỏa mãn các điều kiện sau:

1 P là không gian bản rõ tập hợp hữu hạn tất cả các mẩu tin nguồn cần mã hóa

có thể có

2.C là không gian bản mã tập hợp hữu hạn tất cả các mẩu tin có thể có sau khi

mã hóa

3.K là không gian khoá tập hợp hữu hạn các khóa có thể đợc sử dụng

4.Với mỗi khóa kK, tồn tại luật mã hóa ekE và luật giải mã dkD tơng ứng Luật mã hóa ek: P  C và luật giải mã ek: C  P là hai ánh xạ thỏa mãn

 

k k

d e x   x x P

Tính chất 4 là tính chất chính và quan trọng của một hệ thống mã hóa Tính chất

này bảo đảm việc mã hóa một mẩu tin xP bằng luật mã hóa ekE có thể đợc giải mã chính xác bằng luật dkD

Định nghĩa 1.2: Zm đợc định nghĩa là tập hợp {0, 1, , m-1}, đợc trang bị phép cộng (ký hiệu +) và phép nhân (ký hiệu là ) Phép cộng và phép nhân trong Zm đợc

thực hiện tơng tự nh trong Z, ngoại trừ kết quả tính theo modulo m

Ví dụ: Giả sử ta cần tính giá trị 11  13 trong Z16 Trong Z, ta có kết quả của phép nhân 1113=143 Do 14315 (mod 16) nên 1113=15 trong Z16.

Một số tính chất của Zm

1 Phép cộng đóng trong Zm, i.e.,  a, b  Zm, a+b  Zm

2 Tính giao hoán của phép cộng trong Zm, i.e.,  a, b  Zm, a+b =b+a

3 Tính kết hợp của phép cộng trong Zm, i.e.,  a, b, c  Zm, (a+b)+c =a+(b+c)

4 Zm có phần tử trung hòa là 0, i.e.,  a  Zm, a+0=0+a=a

5 Mọi phần tử a trong Zm đều có phần tử đối là m – a

6 Phép nhân đóng trong Zm, i.e.,  a, b  Zm, ab Zm

7 Tính giao hoán của phép cộng trong Zm, i.e.,  a, b  Zm, ab=ba

8 Tính kết hợp của phép cộng trong Zm, i.e.,  a, b, c  Zm, (ab)c

=a(bc)

9 Zm có phần tử đơn vị là 1, i.e.,  a  Z m , a1=1a=a

10.Tính phân phối của phép nhân đối với phép cộng, i.e.,  a, b, c  Z m , (a+b)c =(ac)+

(bc)

11.Z m có các tính chất 1, 3 – 5 nên tạo thành 1 nhóm Do Z m có tính chất 2 nên tạo thành

nhóm Abel Z m có các tính chất (1) – (10) nên tạo thành 1 vành

I 2 Các Hệ Mã Thông Dụng:

a Hệ Mã Đầy (Shift Cipher )

Shift Cipher là một trong những phơng pháp lâu đời nhất đợc sử dụng để mã hóa.

Thông điệp đợc mã hóa bằng cách dịch chuyển (xoay vòng) từng ký tự đi k vị trí

trong bảng chữ cái

Phơng pháp Shift Cipher

Cho P = C = K = Z26 Với 0  K  25, ta định nghĩa

eK = x + K mod 26 và

Trang 5

trong đó 26 là số ký tự trong bảng chữ cái La tinh, một cách tơng tự cũng có thể

định nghĩa cho một bảng chữ cái bất kỳ Đồng thời ta dễ dàng thấy rằng mã đẩy là một hệ mật mã vì dK(eK(x)) = x với mọi xZ26

b Hệ KEYWORD-CEASAR

Trong hệ mã này khóa là một từ nào đó đợc chọn trớc, ví dụ PLAIN Từ này xác

định dãy số nguyên trong Z26 (15,11,0,8,13) tơng ứng với vị trí các chữ cái của các chữ đợc chọn trong bảng chữ cái Bây giờ bản rõ sẽ đợc mã hóa bằng cách dùng các hàm lập mã theo thứ tự:

và định nghĩa d(y) = -1(y)

với  -1 là hoán vị ngợc của hoán vị .

Trong mã thế vị ta có thể lấy P và C là các bảng chữ cái La tinh Ta sử dụng Z26trong mã đẩy vì lập mã và giải mã đều là các phép toán đại số.

dK = a-1(y-b) mod 26 (x,y  Z26)

Phơng pháp Affine lại là một trờng hợp đặc biệt khác của Substitution Cipher

Để có thể giải mã chính xác thông tin đã đợc mã hóa bằng hàm ek E thì ek phải là

một song ánh Nh vậy, với mỗi giá trị yZ26, phơng trình ax+by (mod 26) phải có nghiệm duy nhất xZ26.

Phơng trình ax+by (mod 26) tơng đơng với ax(y–b ) (mod 26) Vậy, ta chỉ cần khảo sát phơng trình ax(y–b ) (mod 26)

Định lý1.0: Phơng trình ax+by (mod 26) có nghiệm duy nhất xZ26 với mỗi giá trị

bZ26 khi và chỉ khi a và 26 nguyên tố cùng nhau.

Vậy, điều kiện a và 26 nguyên tố cùng nhau bảo đảm thông tin đợc mã hóa bằng hàm ek có thể đợc giải mã và giải mã một cách chính xác.

Gọi (26) là số lợng phần tử thuộc Z26 và nguyên tố cùng nhau với 26.

Định lý 1.0: Nếu

m i

e

i i

p n

e i

e

i i p i p n

Trang 6

Vấn đề đặt ra cho phơng pháp mã hóa Affine Cipher là để có thể giải mã đợc thông

tin đã đợc mã hóa cần phải tính giá trị phần tử nghịch đảo a–1  Z26

f Phơng Pháp Vigenere

phơng pháp mã hóa Vigenere sử dụng một từ khóa (keyword) có độ dài m Có thể xem nh phơng pháp mã hóa Vigenere Cipher bao gồm m phép mã hóa Shift Cipher

đợc áp dụng luân phiên nhau theo chu kỳ.

Không gian khóa K của phơng pháp Vigenere có số phần tử là 26, lớn hơn hẳn

ph-ơng pháp số lợng phần tử của không gian khóa K trong phph-ơng pháp Shift Cipher Do

đó, việc tìm ra mã khóa k để giải mã thông điệp đã đợc mã hóa sẽ khó khăn hơn đối

với phơng pháp Shift Cipher.

Phơng pháp mã hóa Vigenere Cipher

Chọn số nguyên dơng m Định nghĩa P = C = K = (Z 26)m

K = { (k0, k1, , k r-1 )  (Z 26)r}

Với mỗi khóa k = (k0, k1, , k r-1 )  K, định nghĩa:

e k (x1, x2, , x m ) = ((x1+k1) mod 26, (x2+k2) mod n, , (x m +k m) mod 26)

d k (y1, y2, , y m ) = ((y1–k1) mod n, (y2–k2) mod n, , (y m –k m ) mod 26)

với x, y  (Z 26)m

g Hệ Mã Hill

Phơng pháp Hill Cipher đợc Lester S Hill công bố năm 1929: Cho số nguyên dơng

m, định nghĩa P = C = (Z26)m Mỗi phần tử xP là một bộ m thành phần, mỗi thành phần thuộc Z26 ý tởng chính của phơng pháp này là sử dụng m tổ hợp tuyến tính của

m thành phần trong mỗi phần tử xP để phát sinh ra m thành phần tạo thành phần tử yC.

Phơng pháp mã hóa Hill Cipher

Chọn số nguyên dơng m Định nghĩa:

P = C = (Z 26)m và K là tập hợp các ma trận mm khả nghịch

Với mỗi khóa K

k k

k

k k

k k

k k

m m m

m

m m

, 1 ,

, 2 1

, 2

, 1 2

, 1 1 , 1

m

m m m

k

k k

k

k k

k k

k x x x xk

x

e

, 2

, 1 ,

, 2 1

, 2

, 1 2

, 1 1 , 1 2

và d k (y) = yk–1 với y C

Mọi phép toán số học đều đợc thực hiện trên Z n

h Mã Hoán Vị

Những phơng pháp mã hóa nêu trên đều dựa trên ý tởng chung: thay thế mỗi ký tự trong thông điệp nguồn bằng một ký tự khác để tạo thành thông điệp đã đợc mã hóa.

ý tởng chính của phơng pháp mã hoán vị là vẫn giữ nguyên các ký tự trong thông

điệp nguồn mà chỉ thay đổi vị trí các ký tự; nói cách khác thông điệp nguồn đợc mã hóa bằng cách sắp xếp lại các ký tự trong đó

Trang 7

mỗi hoán vị  của tập hợp {1, 2, , m} , ta xác định ma trận k = (ki, j ) theo công thức sau:

neỏu , 0 , 1

,

j i

Ma trận k là ma trận mà mỗi dòng và mỗi cột có đúng một phần tử mang giá trị 1, các phần tử còn lại trong ma trận đều bằng 0 Ma trận này có thể thu đợc bằng cách

hoán vị các hàng hay các cột của ma trận đơn vị Im nên k là ma trận khả nghịch Rõ

ràng, mã hóa bằng phơng pháp Hill với ma trận k hoàn toàn tơng đơng với mã hóa bằng phơng pháp mã hoán vị với hoán vị .

i Mã Vòng

Trong các hệ trớc đều cùng một cách thức là các phần tử kế tiếp nhau của bản rõ đều đợc mã hóa với cùng một khóa K Nh vậy xâu mã y sẽ có dạng sau:

y = y1y2 = eK(x1) eK(x2)

Các hệ mã loại này thờng đợc gọi là mã khối (block cipher).

Còn đối với các hệ mã dòng ý tởng ở đây là sinh ra một chuỗi khóa z = z1z2 , và

sử dụng nó để mã hóa xâu bản rõ x = x1x2 theo qui tắc sau:

)

()(

Tính an toàn của nó phụ thuộc vào các yếu tố :

 Không gian khoá phải đủ lớn

 Với các phép trộn thích hợp các hệ mã đối xứng có thể tạo ra đợc một hệ mã mới có tính an toàn cao

 Bảo mật cho việc truyền khóa cũng cần đợc xử lý một cách nghiêm túc

Và một hệ mã hoá dữ liệu ra đời (DES) DES đợc xem nh là chuẩn mã hóa dữ liệu cho các ứng dụng từ ngày 15 tháng 1 năm 1977 do ủy ban Quốc gia về Tiêu chuẩn của Mỹ xác nhận và cứ 5 năm một lần lại có chỉnh sửa, bổ sung

DES là một hệ mã đợc trộn bởi các phép thế và hoán vị với phép trộn thích hợp thì việc giải mã nó lại là một bài toán khá khó Đồng thời việc cài đặt hệ mã này cho những ứng dụng thực tế lại khá thuận lợi Chính những lý do đó nó đợc ứng dụng rộng rãi của DES trong suốt hơn 20 năm qua, không những tại Mỹ mà còn là hầu nh trên khắp thế giới Mặc dù theo công bố mới nhất (năm 1998) thì mọi

hệ DES, với những khả năng của máy tính hiện nay, đều có thể bẻ khóa trong hơn 2 giờ Tuy nhiên DES cho đến nay vẫn là một mô hình chuẩn cho những ứng dụng bảo mật trong thực tế.

Trang 8

Chơng II: Hệ Mã HóA Và GIảI Mã CHUẩN DES (Data Encryption Standard)

II 1 Đặc Tả DES

Phơng pháp DES mã hóa từ x có 64 bit với khóa k có 56 bit thành một từ có y 64 bit.

Thuật toán mã hóa bao gồm 3 giai đoạn:

1 Với từ cần mã hóa x có độ dài 64 bit, tạo ra từ x0 (cũng có độ dài 64 bit) bằng

cách hoán vị các bit trong từ x theo một hoán vị cho trớc IP (Initial Permutation) Biểu diễn x0 = IP(x) = L0R0, L0 gồm 32 bit bên trái của x0, R0 gồm 32 bit bên phải của

x0

x 0

Hình Biểu diễn dãy 64 bit x thành 2 thành phần L và R

2 Xác định các cặp từ 32 bit Li, Ri với 1 i  16theo quy tắc sau:

Li = Ri-1

Ri = Li-1 f (Ri-1, Ki)

với  biểu diễn phép toán XOR trên hai dãy bit, K1, K2, , K16 là các dãy 48 bit

phát sinh từ khóa K cho trớc (Trên thực tế, mỗi khóa Ki đợc phát sinh bằng cách

hoán vị các bit trong khóa K cho trớc).

Hình Quy trình phát sinh dãy 64 bit Li Ri từ dãy 64 bit Li-1Ri-1và khóa Ki

3 áp dụng hoán vị ngợc IP-1 đối với dãy bit R16L16, thu đợc từ y gồm 64 bit Nh vậy,

Trang 9

Hàm f có gồm 2 tham số: Tham số thứ nhất A là một dãy 32 bit, tham số thứ hai J là một dãy 48 bit Kết quả của hàm f là một dãy 32 bit Các bớc xử lý của hàm f(A, J)nh sau:

Tham số thứ nhất A (32 bit) đợc mở rộng thành dãy 48 bit bằng hàm mở rộng

E Kết quả của hàm E(A) là một dãy 48 bit đợc phát sinh từ A bằng cách hoán vị theo một thứ tự nhất định 32 bit của A, trong đó có 16 bit của A đợc lập lại 2 lần trong E(A).

Thực hiện phép toán XOR cho 2 dãy 48 bit E(A) và J, ta thu đợc một dãy 48 bit B Biểu diễn B thành từng nhóm 6 bit nh sau:B = B1B2B3B4B5B6B7B8

Sử dụng 8 ma trận S1, S2, , S8, mỗi ma trận Si có kích thớc 416 và mỗi dòng

của ma trận nhận đủ 16 giá trị từ 0 đến 15 Xét dãy gồm 6 bit Bj =

b1b2b3b4b5b6, Sj(Bj) đợc xác định bằng giá trị của phần tử tại dòng r cột c của Sj, trong

đó, chỉ số dòng r có biểu diễn nhị phân là b1b6, chỉ số cột c có biểu diễn nhị phân là

b2b3b4b5 Bằng cách này, ta xác định đợc các dãy 4 bit Cj = Sj(Bj), 1  j  8.

Tập hợp các dãy 4 bit Cj lại ta có đợc dãy 32 bit C = C1C2C3C4C5C6C7C8 Dãy

32 bit thu đợc bằng cách hoán vị C theo một quy luật P nhất định chính là kết quả của hàm F(A, J)

các hàm đợc sử dụng trong DES.

Hoán vị khởi tạo IP sẽ nh sau:

Điều này có nghĩa là bit thứ 58 của x là bit đầu tiên của IP(x); bit thứ 50 của

x là bit thứ hai của IP(x) v.v.

4847464544

1615141312

5655545352

2423222120

6463626160

3231302928

Trang 10

37111519232731

48121620242832

5913172125291

Tám S-hộp và hoán vị P sẽ đợc biểu diễn nh sau:

137148

1482

214134

15269

111321

81117

310155

1061211

61293

1211714

59310

95100

0356

78013

84710

147111

615103

112415

38134

41412

912511

7086

21127

1310612

12690

0935

511214

105159

14990

6386

34159

15638

51007

12114

138115

125214

714123

1112511

411105

215142

81712

3506

061210

615111

90713

103138

14159

2714

8235

5121411

111512

121027

41482

159414

112117

74100

1071314

111372

61813

85156

50915

315120

151059

133610

0934

14805

96143

152512

9729

21285

691215

85310

06711

131014

31341

414107

14016

711130

53118

118613

147138

154121

0934

81710

1310147

314109

123155

9560

712815

52014

101552

6893

16212

S 8

13 2 8 4 6 15 11 1 10 9 3

Trang 11

2 1 14 7 4 10 8 13 15 12 9

P

1629152321922

71215188271311

20282331243304

21172610149625

K là xâu có độ dài 64 bit, trong đó có 56 bit dùng làm khóa và 8 bit dùng để kiểm tra sự bằng nhau (để phát hiện lỗi) Các bit ở các vị trí 8, 16, , 64 đợc xác

định, sao cho mỗi byte chứa số lẻ các số 1 Vì vậy, từng lỗi có thể đợc phát hiện trong mỗi 8 bit Các bit kiểm tra sự bằng nhau là đợc bỏ qua khi tính lịch khóa.

1 Cho khóa 64 bit K, loại bỏ các bit kiểm tra và hoán vị các bit còn lại của K t ơng

ứng với hoán vị (cố định) PC-1 Ta viết PC-1(K) = C0D0, với C0 bao gồm 28 bit đầu tiên của PC-1(K) và D0 là 28 bit còn lại.

2 Với i nằm trong khoảng từ 1 đến 16, ta tính

Ci = LSi(Ci-1)

Di = LSi(Di-1)

và Ki = PC-2(CiDi), LSi biểu diễn phép chuyển chu trình (cyclic shift) sang trái hoặc của một hoặc của hai vị trí tùy thuộc vào trị của i; đẩy một vị trí nếu i = 1, 2, 9 hoặc 16 và đẩy 2 vị trí trong những trờng hợp còn lại PC-2 là một hoán vị cố định khác.

Việc tính lịch khóa đợc minh họa nh hình vẽ sau:

Các hoán vị PC-1 và PC-2 đợc sử dụng trong việc tính lịch khóa là nh sau:

PC-1

57110

49582

415059

334251

253443

172635

91827

Trang 12

5562613

754615

39465328

31384520

23303712

1522294

PC-2

143231641304446

172819750404942

1115122731513950

24642037455636

121261347333429

5108255485332

Bây giờ ta sẽ hiển thị kết quả việc tính lịch khóa Nh đã nhận xét ở trên, mỗi vòng sử dụng khóa 48 bit tơng ứng với 48 bit trong K Các thành phần trong các bảng sau sẽ chỉ ra các bit trong K đợc sử dụng trong các vòng khác nhau.

00100011010010101010100110111011 11101111010010100110010101000100 E(R 1 )

00111100101010111000011110100011 11001100000000010111011100001001 E(R 2 )

01001101000101100110111010110000 10100010010111000000101111110100

10111011001000110111011101001100 011101110

E(R ) = 101110101110100100000100000000000000001000001010

Trang 13

10011110010001011100110100101100 11101001011001111100110101101001

10001100000001010001110000100111 00000110010010101011101000010000 E(R 7 )

00111100000011101000011011111001 11010101011010010100101110010000 E(R 8 )

00100010001101100111110001101010 00100100011111001100011001111010 E(R 9 )

01100010101111001001110000100010 10110111110101011101011110110010 E(R 10 )

11100001000001001111101000000010 11000101011110000011110001111000 E(R 11 )

11000010011010001100111111101010 01110101101111010001100001011000 E(R 12 )

11011101101110110010100100100010 00011000110000110001010101011010 E(R ) = 000011110001011000000110100010101010101011110100

Trang 14

10110111001100011000111001010101 11000010100011001001011000001101 E(R 14 )

01011011100000010010011101101110 01000011010000100011001000110100 E(R 15 )

11001000110000000100111110011000 00001010010011001101100110010101

Cuối cùng, áp dụng IP-1 cho R16L16 ta nhận đợc bản mã trong dạng thập lục phân

nh sau:

85E813540F0AB405

Chơng III: THáM Mã HóA Và GIảI Mã DES

Một phơng pháp rất nổi tiếng trong thám mã DES là “thám mã vi sai“ (differential cryptanalysic) do Biham và Shamir đề xuất Đó là phơng pháp thám với bản rõ đợc chọn Nó không đợc sử dụng trong thực tế để thám mã DES 16 vòng, mà chỉ đợc sử dụng để thám các hệ DES có ít vòng hơn.

Bây giờ ta sẽ mô tả những ý tởng cơ bản của kỹ thuật này Để đạt mục đích thám mã, ta có thể bỏ qua hoán vị khởi tạo IP và hoán vị đảo của nó (bởi vì điều đó không cần thiết cho việc thám mã) Nh đã nhận xét ở trên, ta xét các hệ DES n vòng, với n  16 Trong cài đặt ta có thể coi L0R0 là bản rõ và LnRn nh là bản mã Thám mã vi sai đòi hỏi phải so sánh x-or (exclusive-or) của hai bản rõ với x-or của hai bản mã tơng ứng Nói chung, ta sẽ quan sát hai bản rõ L0R0 và L0 R0 với trị x-

or đợc đặc tả L0’R0’ = L0R0  L0 R0 Trong những thảo luận sau ta sẽ sử dụng ký hiệu (‘) để chỉ x-or của hai xâu bit.

Định nghĩa 3.1: Cho Sj là một S-hộp (1  j  8) Xét một cặp xâu 6-bit là (Bj,Bj*).

Ta nói rằng, xâu nhập x-or (của Sj) là Bj  Bj* và xâu xuất x-or (của Sj) là Sj(Bj) 

Sj(Bj*).

Chú ý là xâu nhập x-or là xâu bit có độ dài 6, còn xâu xuất x-or có độ dài 4.

Định nghĩa 3.2: Với bất kỳ Bj ’  (Z2) 6, ta định nghĩa tập (Bj’) gồm các cặp (Bj,Bj*) có x-or nhập là Bj’.

Dễ dàng thấy rằng, bất kỳ tập (Bj’) nào cũng có 26 = 64 cặp, và do đó

(Bj’) = {(Bj, Bj  Bj’) : Bj  (Z2) 6 } Với mỗi cặp trong (Bj’), ta có thể tính xâu x-or xuất của Sj và lập đợc phân bố kết quả Có 64 xâu xuất x-or, đợc phân bố trong 24 = 16 giá trị có thể có Tính không

đồng đều của các phân bố đó là cơ sở để mã thám.

Ví dụ 3.1: Giả sử ta xét S1 là S-hộp đầu tiên và xâu nhập x-or là 110100 Khi

đó

(110100) = {(000000, 110100), (000001, 110101), , (111111, 001011)} Với mỗi cặp trong tập (110100), ta tính xâu xuất x-or của S1 Chẳng hạn,

S1(000000) = E16 = 1110, S1(110100) = 1001,

nh vậy xâu xuất x-or cho cặp (000000,110100) là 0111

Trang 15

xâu x-or xuất sau:

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

0 8 16 6 2 0 0 12 6 0 0 0 0 8 0 6

Trong ví dụ 3.1, chỉ có 8 trong số 16 xâu x-or xuất có thể có xuất hiện thật sự Ví

dụ cụ thể này đã chỉ ra sự phân bố rất không đều của các xâu x-or xuất Nói chung, nếu ta cố định S-hộp Sj và xâu nhập x-or Bj’, thì trung bình có khoảng 75 - 80% các xâu x-or xuất có thể có xuất hiện thực sự.

Để mô tả các phân bô đó ta đa ra định nghĩa sau.

Định nghĩa 3.3: Với 1  j  8 và với các xâu bit Bj ’ độ dài 6 và Cj’ độ dài 4, ta

định nghĩa:

INj(Bj’,Cj’) = {Bj  (Z2)6 : Sj(Bj)  Sj(Bj  Bj’) = Cj’}

Nj(Bj’, Cj’) = INj(Bj’, Cj’)

Bảng sau sẽ cho các xâu nhập có thể có với xâu x-or nhập 110100

Xâu xuất x-or Các xâu nhập có thể có0000

0001 000011, 001111, 011110, 011111

101010, 101011, 110111, 1110110010

01100111

101010111100

1101 000110, 010000, 010110, 011100

110010, 100100, 101000, 1100101110

1111 000111, 001010, 001011, 110011

111110, 111111

Nj(Bj’, Cj’) tính số các cặp với xâu nhập x-or bằng Bj’ có xâu xuất x-or bằng

Cj’ với S-hộp Sj Các cặp đó có các xâu nhập x-or đợc đặc tả và đa ra cách tính các xâu xuất x-or có thể nhận đợc từ tập INj(Bj’, Cj’) Để ý rằng, tập này có thể phân thành Nj(Bj’, Cj’) /2 cặp, mỗi cặp có xâu x-or nhập bằng Bj’.

Phân bố trong ví dụ 3.1 chứa các trị N1(110100, C1’), C1’ (Z2)4 Trong bảng trên chứa các tập IN(110100, C1’).

Với mỗi tám S-hộp, có 64 xâu nhập x-or có thể có Nh vậy, có 512 phân bố có thể tính đợc Nhắc lại là, xâu nhập cho S-hộp ở vòng thứ i là B= E J, với E = E(Ri-1)

là mở rộng của Ri-1 và J = Ki gồm các bit khóa của vòng i Bây giờ xâu nhập x-or (cho tất cả tám S-hộp) có thể tính đợc nh sau:

B  B* = (E  J)  (E*  J) = E  E*

Điều này rất quan trọng để thấy rằng, xâu nhập x-or không phụ thuộc vào các bit

Trang 16

Ta sẽ viết mỗi B, E và J nh là nối của tám xâu 6-bit:

Định nghĩa 3.4: Giả sử Ej và Ej * là các xâu bit độ dài 6, và Cj là xâu bit độ dài 4.

Ta định nghĩa:

testj(Ej, Ej *, Cj) = { Bj  Ej : Bj INj(Ej, Cj) }, với Ej = Ej  Ej *.

IN1(110100, 1101) = {000110, 010000, 010110, 011100, 100010, 100100, 101000, 110010}

Cho nên

test1(000001, 110101,1101) = {000111, 010001, 010111, 011101, 100011, 100101,

101001, 110011}

Nếu ta có một bộ ba thứ hai nh thế E1, E1 , C1’, khi đó ta sẽ nhận đợc tập thứ hai

test1 của các trị cho các bit khóa trong J1 Trị đúng của J1 cần phải nằm trong giao của các S-hộp Nếu ta có một vài bộ ba nh vậy, khi đó ta có thể mau chóng tìm đợc các bit khóa trong J1 Một cách rõ ràng hơn để thực hiện điều đó là lập một bảng của 64 bộ đếm biểu diễn cho 64 khả năng của của 6 khóa bit trong J1 Bộ đếm sẽ

tăng mỗi lần, tơng ứng với sự xuất hiện của các bit khóa trong tập test1 cho một bộ

ba cụ thể Cho t bộ ba, ta hy vọng tìm đợc duy nhất một bộ đếm có trị t; trị đó sẽ

t-ơng ứng với trị đúng của các bit khóa trong J1.

III 1 Thám Mã Hệ DES - 3 Vòng

Bây giờ ta sẽ xét ý tởng vừa trình bày cho việc thám mã hệ DES - ba vòng.

Ta sẽ bắt đầu với cặp bản rõ và các bản mã tơng ứng: L0R0, L0 R0 , L3R3 và L3 R3 .

Ta có thể biểu diễn R3 nh sau:

R3 = L2  f(R2, K3) = R1  f(R2, K3) = L0  f(R0, K1)  f(R2, K3)

R3* có thể biểu diễn một cách tơng tự , do vậy:

R3’ = L0’  f(R0, K1)  f(R0 , K1)  f(R2, K3)  f(R2 , K3) Bây giờ, giả sử ta đã chọn đợc các bản rõ sao cho R0 = R0 , chẳng hạn:

R0’ = 00 0 Khi đó f(R0, K1) = f(R0 , K1), và do đó:

P(C)  P(C*) = R3’  L0’

và kết quả là:

Trang 17

Đó là xâu xuất x-or cho tám S-hộp trong vòng ba.

Bây giờ, R2 = L3 và R2* = L3* là đã biết (chúng là một phần của các bản mã) Từ

Việc mã thám sẽ sử dụng một số bộ ba E, E*, C’ nh vậy Ta sẽ lập tám bảng các bộ

đếm và do đó xác định đợc 48 bit trong K3, là khóa cho vòng ba 56 bit trong khóa khi đó có thể tìm đợc hoàn toàn từ 28 = 256 khả năng cho 8 bit khóa.

Bây giờ ta sẽ minh họa điều đó qua ví dụ sau.

03C70306D8A09F1078560A0960E6D4CB486911026ACDFF31

375BD31F6ACDFF31 45FA285BE5ADC730134F7915AC253457 357418DA013FEC86

12549847013FEC86 D8A31B2F28BBC5CF0F317AC2B23CB944

Từ cặp đầu tiên ta tính các xâu nhập của S-hộp (cho vòng 3) từ các phơng trình (2) và (3) Chúng là:

Trang 18

Cuối cùng ta sẽ trình bày các bảng Nếu ta xem các xâu bit độ dài 6 nh là biểu diễn của các số nguyên trong khoảng 0-63, thì 64 trị sẽ tơng ứng với 0, 1, , 63 Các mảng đếm sẽ là nh sau:

Trong mỗi tám mảng đếm, có duy nhất một bộ đếm có trị là 3 Vị trí của các

bộ đếm đó xác định các bit khóa trong J1, , J8 Các vị trí đó là: 47, 5, 19, 0, 24, 7,

7, 49 Chuyển các số nguyên đó sang dạng nhị phân, ta nhận đợc J1, , J8:

Trang 19

B©y giê ta cã thÓ t¹o ra 48 bit khãa, b»ng c¸ch quan s¸t lÞch khãa cho vßng ba Suy

Form lËp m· vµ gi¶i m· DES(Des.vb)

Source code mét

sè hµm chÝnh trong form giai m· Des

ImportsSystem.IOPublic Classdes

InheritsSystem.Windows.Forms.Form

khai baobien

Trang 20

Dim s(7) As DataTable

Dim ip() As String

'Dim iptru() As String

Dim e() As String

Dim daynhap(29) As String

Dim daybanma(29) As String

Trang 24

Ham khoi tao s2

Trang 35

Function hvpc1(ByVal k As String) As String

Dim tam(63) As Char

Dim i As Integer

For i = 0 To 63

tam(i) = k.Substring(i, 1)

Next

Trang 36

Function hvpc2(ByVal str As String) As String

Dim tam(47) As Char

Function ls(ByVal s As String, ByVal n As Integer) As String

Return s.Substring(n, s.Length - n) + s.Substring(0, n)

Trang 37

Function bi_acsii(ByVal int As Integer) As String

Dim tam(7) As Char

Dim i As Integer

For i = 0 To 7

Trang 38

tam(i) = (int Mod 2).ToString

Function hvip(ByVal x As String) As String

Dim tam(63) As Char

Function hve(ByVal r As String) As String

Dim tam(47) As Char

Function hvp(ByVal c As String) As String

Dim tam(31) As Char

Function hviptru(ByVal c As String) As String

Dim tam(63) As Char

Trang 39

Dim l0 As String = x0.Substring(0, 32)

Dim r0 As String = x0.Substring(32, 32)

Trang 40

Dim haibitcuoi As String = b(i).Substring(0, 1) + b(i).Substring(5, 1)

Dim bonbitgiua As String = b(i).Substring(1, 4)

Dim srow = thapphan(haibitcuoi)

Dim scol = thapphan(bonbitgiua)

Dim sij As Integer = s(i).Rows(srow).Item(scol)

Function doirachu(ByVal y As String) As String

Dim tam As String = y

Dim tam1 As String = ""

Ngày đăng: 15/12/2015, 08:27

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w