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

Tiểu luận môn toán học cho khoa học máy tính TÌM HIỂU THUẬT TOÁN MÃ HÓA DES Data Encryption Standard

37 995 4

Đ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 37
Dung lượng 586,05 KB

Nội dung

Một trong các biện pháphữu hiệu nhất hiện nay là mã hóa.Khái niệm mã hóa dữ liệu đề cập đến những phéptính toán học và chương trình thuật toán chuyển văn bản gốc thành dạng văn bản mãhóa

Trang 1

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH

ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA KHOA HỌC MÁY TÍNH

PHƯƠNG PHÁP TOÁN TRONG TIN HỌC

TÌM HIỂU THUẬT TOÁN MÃ HÓA DES - Data Encryption Standard

Giảng viên:PGS.TS Đỗ Văn Nhơn

Học viên:Phạm Minh Tiến

MSHV: CH1301034

Ngày 25 tháng 12 năm 2013

Trang 2

MỤC LỤC

MỞ ĐẦU 2

KHÁI NIỆM CƠ BẢN VỀ MÃ HÓA VÀ GIẢI MÃ 3

1 Khái niệm 3

2 Các nguyên lý của bảo mật và mã hóa 3

3 Các dạng thuật toán mã hóa 4

4 Một vài thuật toán mã hóa nổi tiếng 4

I GIỚI THIỆU 5

II TỔNG QUAN 6

III THUẬT TOÁN 9

Bước 1 Tạo khóa con 9

Bước 2 Mã hóa khối thông tin 64 bit 10

Hàm F (Feistel) 11

IV VÍ DỤ 13

Bước 1 Tạo ra 16 khóa con có chiều dài 48 bit 13

Bước 2 Mã hóa khối thông tin 64 bit 17

V CÁC CHẾ ĐỘ HOẠT ĐỘNG 23

1 ECB (Electronic Code Book operation mode) 23

2 CBC (Cipher Block Chaining operation mode) 24

3 CFB (Cipher Feedback operation mode) 25

4 OFB (Output Feedback operation mode) 26

VI.GIẢI MÃ 28

VII ĐỘ AN TOÀN 29

VIII PHÁ KHÓA DES 30

IX ỨNG DỤNG 31

X TRIPLE-DES 32

TÀI LIỆU THAM KHẢO 34

Trang 3

MỞ ĐẦU

Khi nhu cầu trao đổi thông tin dữ liệu ngày càng lớn và đa dạng, các tiến bộ

về điện tử - viễn thông và công nghệ thông tin không ngừng phát triển ứng dụng đểnâng cao chất lượng và lưu lượng truyền tin thì các quan niệm ý tưởng và biện phápbảo vệ thông tin dữ liệu cũng được đổi mới Bảo vệ an toàn thông tin dữ liệu là mộtchủ đề rộng, có liên quan đến nhiều lĩnh vực và trong thực tế có rất nhiều phươngpháp được thực hiện để bảo vệ an toàn thông tin dữ liệu Một trong các biện pháphữu hiệu nhất hiện nay là mã hóa.Khái niệm mã hóa dữ liệu đề cập đến những phéptính toán học và chương trình thuật toán chuyển văn bản gốc thành dạng văn bản mãhóa, đây là một dạng thức khiến cho những người không được ủy quyền không thểđọc được Người nhận tin nhắn mã hóa sẽ sử dụng một khóa tạo nên cơ chế thuậttoán để giải mã dữ liệu, chuyển nó trở về phiên bản văn bản ban đầu

Trước khi có Internet, phương pháp mã hóa dữ liệu rất ít khi được sử dụngrộng rãi vì nó được coi là công cụ bảo đảm an ninh trong lĩnh vực ngoại giao vàquân sự nhiều hơn Tuy nhiên từ khi dịch vụ ngân hàng, mua sắm trực tuyến và cácdịch vụ khác trở nên phổ biến thì ngay cả những người chỉ có nhu cầu sử dụngInternet cơ bản tại nhà cũng biết đến mã hóa dữ liệu

Một số giải pháp mã hóa dữ liệu tối ưu có thể được sử dụng qua nhiều thế

kỷ, trong khi các phương pháp giải mã khác có thể bị phá vỡ bởi những người có kỹnăng về lĩnh vực này trong thời gian ngắn

Một số chuẩn mã hóa dữ liệu phổ biến là: DES, AES (Advanced Encryption

Standard - Tiêu chuẩn mã hóa nâng cao),…

Thuật toán mã hóa khối ra đời sớm và có nhiều ảnh hưởng là thuật toán

DES(Data Encryption Standard - Tiêu chuẩn mã hóa dữ liệu).

Sau đây, chúng ta sẽ tìm hiểuvềDES.

Trang 4

KHÁI NIỆM CƠ BẢN VỀ MÃ HÓA VÀ GIẢI MÃ

Hình: Mô tả mã hóa giải mã

Các thuật ngữ thường dùng trong mã hóa và giải mã:

Cryptosystem (Cryptographic System):đây là hệ thống mã hóa thông tin, có

thể là phần mềm như PGP, Ax-Crypt, Truecrypt giao thức như SSL, IPsecdùng trong Internet hay đơn giản là một thuật toán như DES

Encrypt (Encipher, Encryption):gọi là mã hóa – đó là quá trình biến đổi

thông tin từ dạng ban đầu - có thể hiểu được thành dạng không thể hiểuđược, với mục đích giữ bí mật thông tin đó

Decrypt (decipher, decryption):gọi là giải mã – đó là quá trình ngược lại với

mã hóa, khôi phục lại thông tin ban đầu từ thông tin đã được mã hóa

Plain text/message: là thông điệp ban đầu chưa được mã hóa.

Cipher text/message:là chuỗi thu được sau khi mã hóa.

Cipher : là thuật toán sử dụng để thực hiện quá trình mã hóa hay giải mã.

Key: là chìa khóa –khóa cung cấp thông tin cần cho qui trình mã hóa và giải

@#$

Mã hóa

Trang 5

-Transposition: sự hoán vị – đây là phương pháp mã hóa trong đó các ký tựcủa thông điệp ban đầu thay đổi vị trí cho nhau còn bản thân các thông điệp không

hề bị thay đổi

b/Phương pháp hiện đại:

+ Symmetric cryptography (mã hóa đối xứng): tức là cả hai quá trình mã hóa

và giải mã đều dùng một chìa khóa Để đảm bảo tính an toàn, chìa khóa này phải

được giữ bí mật Vì thế các thuật toán loại này còn có tên gọi khác là secret key

cryptography (hay private key cryptography) Các thuật toán loại này thường được

dùng cho mục đích mã hóa dữ liệu của cá nhân hay tổ chức đơn lẻ nhưng bộc lộ hạnchế khi thông tin đó phải được chia sẻ với một bên thứ hai

 Block ciphers: thuật toán khối – trong đó từng khối dữ liệu trong vănbản ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài

Độ dài mỗi khối gọi là block size, thường được tính bằng đơn vị bit

Ví dụ: DES, 3DES…

 Stream ciphers: thuật toán dòng – trong đó dữ liệu đầu vào được mãhóa từng bit một Các thuật toán dòng có tốc độ nhanh hơn các thuậttoán khối, được dùng khi khối lượng dữ liệu cần mã hóa chưa đượcbiết trước, ví dụ trong kết nối không dây Có thể coi thuật toán dòng làthuật toán khối với kích thước mỗi khối là 1 bit Một số thuật toándòng thông dụng: RC4, A5/1, A5/2, Chameleon

+Asymmetric cryptography(mã hóa bất đối xứng) sử dụng một cặp chìa khóa

có liên quan với nhau về mặt toán học, một chìa công khai dùng để mã hoá (publickey) và một chìa bí mật dùng để giải mã (private key) Một thông điệp sau khi được

mã hóa bởi chìa công khai sẽ chỉ có thể được giải mã với chìa bí mật tương ứng Docác thuật toán loại này sử dụng một chìa khóa công khai (không bí mật) nên còn cótên gọi khác là public-key cryptography (thuật toán mã hóa dùng chìa khóa côngkhai) Một số thuật toán bất đối xứng thông dụng là : RSA, Elliptic Curve, ElGamal,Diffie Hellman

4.Một vài thuật toán mã hóa nổi tiếng

 DES (Data Encryption Standard)

 One-time Pad (OTP)

Trang 6

 AES (Advance Encryption Standard).

 RSA

Trang 7

I.GIỚI THIỆU

Thuật toán DES(Data Encryption Standard) là một thuật toán mã hóa được

dùng rộng rãi nhất trên thế giới Trong nhiều năm và đối với nhiều người việc mãhóa bảo mật và DES là một Bất chấp việc nhiều cỗ máy được tạo ra để bẻ khóaDES điển hình như cổ máy trị giá $220000 của Electronic Frontier Foundation,DES vẫn tồn tại trong các ngân hàng cũng như chính phủ bằng việc cải thiện qua

nhiều phiên bản như “Triple-DES”.

Kể từ khi DES ra đời, nhiều thuật toán mã hoá bảo mật khác cũng được pháttriển tương tự DES hoặc dựa trên DES, một khi nắm được các nguyên tắc của DESbạn sẽ dễ dàng hiểu các thuật toán này

15-5-1973 dưới thời của Tổng Thống Richard Nicxon, Cục Tiêu Chuẩn LiênBang Hoa Kỳ đã công bố một thông báo trên Công báo Liên Bang mời đề xuất cácthuật toán mã hóa đễ bảo vệ dữ liệu trong quá trình truyền và lưu trữ Thông báo đãnêu rõ lý vai trò quan trọng của việc mã hóa dữ liệu

Trong thập kỷ qua, đã có sự tăng tốc mạnh mẽ trong tích luỹ và truyền dữliệu của ngành công nghiệp, chính phủ và của các tổ chức khác trong khu vực tưnhân Phần lớn những nội dung truyền đi là những tài liều nhạy cảm và quan trọngnhư việc chuyển tiền, hợp đồng, email, thông tin cá nhân, các hoạt động ngầm củachính phủ… Với sự tăng nhanh không ngừng về khối lượng giá trị cũng như tínhchất của nhủng thông tin được lưu trũ cũng như truyền đi điều này dẫn đến yêu cầucần có những giải thuật cần thiết đễ mã hóa các thông điệp này

Sau một thời gian chờ đợi, nhiều đề xuất về thuật toán mã hóa đã được đưa

ra tuy nhiên không đáp ứng được yêu cầu đề ra Đến ngày 6 tháng 8 năm 1974, bangày trước khi Nixon từ chức, IBM đã đưa ra thuật toán Lucifer Thuật toán này đãđược đánh giá với sự trợ giúp của Cơ quan An ninh Quốc Gia (NSA) và vượt quahầu hết các tiêu chuẩn được đưa ra của Cục tiêu chuẩn Liên bang Hoa Kỳ Sau một

số sửa đổi Cục tiêu chuẩn Liên bang Hoa Kỳ chính thức công nhận thuật toánLucifer và đổi tên thành Data Encryption Standard (DES) vào 15 tháng 7 năm 1977

DES đã nhanh chóng được áp dụng trong lĩnh vực truyền tín hiệu như đườngdây điện thoại công cộng Ví dụ trong vòng một vài năm hãng International Flavorsand Fragrances đã sử dụng DES đễ bảo vệ các công thức sản xuất của mình khi

truyền qua điện thoại ("With Data Encryption, Scents Are Safe at IFF,"

Computerworld 14, No 21, 95 (1980)).

Trong khi đó lực lượng có nhu cầu mã hóa dữ liệu lớn nhất bên ngoài chínhphủ đó là các ngân hàng đã sử dụng DES như chuẩn mã hóa dữ liệu chính của mìnhkhi thực hiện các giao dịch DES đã được American National Standards

Institute(ANSI) chứng nhận là chuẩn mã hóa dự liệu trong giao dịch của ngân hàng

vào năm 1980

Trang 9

II TỔNG QUAN

Giải thuật DES được phát triển tại công ty IBM dựa trên hệ mã hóa LUCIFER củaFeistel

DES là một thuật toán mã hóa khối (block cipher) nghĩa là chuỗi cần mã hóa

sẽ được đóng thành những khối có kích thước 64 bit và trả về một chuỗi đã được

mã hóa có kích thước tương đương.Thực sự mà nói DES chính là kết quả của phép

hoán vị (permutation) bằng 264 vị trí có thể của chuỗi 64 bit trong số đó có thể là 0hoặc 1 Mỗi khối 64 bit này được chia thành 2 khối 32 bit bằng nhau, nửa khối bêntrái L và nữa khối bên phải R (Sự phân chia này chỉ sử dụng trong những hoạt độngnhất định) Do quá trình mã hóa và giải mã chỉ sử dụng một “khóa ” nên DES thuộc

loại mã hóa đối xứng (Symmetric cryptography).

Hình Mô hình mã hóa đối xứng

Khóa mã có độ dài 64 bit, trong đó có 8 bit chẵn lẻ được sử dụng để kiểmsoát lỗi Các bit chẵn lẻ nằm ở các vị trí 8, 16, 24,… , 64 Tức là cứ 8 bit khóa thì có

1 bit kiểm soát lỗi, bit này qui định số bit có giá trị 1 của khối 8 bit đó theo tính bùchẵn

Nền tảng để xây dựng khối của DES là sự kết hợp đơn giản của các kỹthuậtthay thế và hoán vị bản rõ dựa trên khoá Đó là các vòng lặp DES sửdụng 16 vònglặp, nó áp dụng cùng một kiểu kết hợp của các kỹ thuật trên khối bản rõ 16 lần

Trang 10

Hình Sơ đồ mã DES

Thuật toán chỉ sử dụng các phép toán số học và lôgíc trên các số 64 bít, vìvậy nó dễ dàng thực hiện vào những năm 1970 trong điều kiện về công nghệ phầncứng lúc bấy giờ Ban đầu, sự thực hiện các phần mềm kiểu này rất thô sơ, nhưnghiện tại thì việc đó đã tốt hơn, và với đặc tính lặp đi lặp lại của thuật toán đã tạo nên

ý tưởng sử dụng chíp với mục đích đặc biệt này

Trang 11

DES làm việc trên bit hoặc số nhị phân 0/1 Một nhóm 4 bit tạo thành một sốtrong hệ Hex Ví dụ ta có số nhị phân “0001” thì trong hệ hex sẽ có giá trị bằng “1”,

số “1000” có giá trị bằng “8”, “1001” có giá trị bằng “9”, “1010” có giá trị bằng

“A” và “1111” có giá trị bằng “F”

DES làm việc bằng cách mã hóa thông điệp gồm 64 bit tương đương với 16

số hexa Để mã hóa được DES sử dụng “khóa” tương đương với chiều dài của 16hexa hay 64 bit tức 8byte, nhưng các bit thứ 8 tròn các byte này bị bỏ qua do đó độlớn thực tế của “khóa” chỉ là 56 bit

Ví dụ bạn cần mã hóa thông điệp sau “8787878787878787” sử dụng khóa

"0E329232EA6D0D73" thì sau khi mã hóa bằng DES bạn sẽ thu được một chuỗi đã

mã hóa là “0000000000000000” Nếu thực hiện giải mã chuỗi đã được mã hóa đóbằng key đã được sử dụng ta sẽ thu được chuỗi ban đầu

Ví dụ trên rất rõ ràng với thông điệp được mã hóa có chiều dài là 64 bit.Trường hợp tương tự xảy ra nếu thông điệp có chiều dài là bội của 64 bit Tuy nhiêntrong nhiều trường hợp chuỗi mã hóa không có chiều dài như vậy Xét trường hợpthông điệp sau: “Your lips are smoother than vaseline” thông điệp trên có 36 bytetương đương 76 số hexa do đó nó cần được thêm vào cuối một số byte vào cuốiđoạn mật mã và khi giải mã ta sẽ xóa nhưng byte thêm vào này Các byte thêm vàosao cho thông điệp đã cho trở thành bội của 8bytes, 64 bit, hoặc 16 số hexa

Thông điệp “Your lips are smoother than vaseline” trong mã hexa có dạng:

“596F7572206C6970732061726520736D6F6F74686572207468616E20766173656C696E650D0A”

thông điệp chỉ chứa 72 số hexa do đó ta thêm vào cuối chuỗi các số 0 để đủ 80sốhexa

“596F7572206C6970732061726520736D6F6F74686572207468616E20766173656C696E650D0A0000”

sau đó ta sử dụng một “khóa” DES 64 bit “0E329232EA6D0D73” ta sẽ thu đượcchuỗi cần mã hóa:

“C0999FDDE378D7ED727DA00BCA5A84EE47F269A4D64381909DD52F78F53

58499 828AC9B453E0E653”

Trang 12

III THUẬT TOÁN

Bước 1 Tạo khóa con

Hình: Quá trình tạo khóa con

Đầu tiên, từ 64 bit ban đầu của khóa, 56 bit được chọn (Permuted Choice 1, hay

PC-1); 8 bit còn lại bị loại bỏ 56 bit thu được được chia làm hai phần bằng nhau,

mỗi phần28 bit được xử lý độc lập Sau mỗi chu trình, mỗi phần được dịch đi 1hoặc 2 bit (tùy thuộc từng chu trình) Các khóa con 48 bit được tạo thành bởi thuật

toán lựa chọn 2 (Permuted Choice 2, hay PC-2) gồm 24 bit từ mỗi phần Quá trình

dịch bit (được ký hiệu là "<<<" trong sơ đồ) khiến cho các khóa con sử dụng các bitkhác nhau của khóa chính; mỗi bit được sử dụng trung bình ở 14 trong tổng số 16khóa con

Quá trình tạo khóa con khi thực hiện giải mã cũng diễn ra tương tự nhưng các khóacon được tạo theo thứ tự ngược lại Ngoài ra sau mỗi chu trình, khóa sẽ được dịchphải thay vì dịch trái như khi mã hóa

Trang 13

Bước 2 Mã hóa khối thông tin 64 bit

Hình: Cấu trúc thuật toán Feistel

Có 16 chu trình giống nhau trong quá trình xử lý Ngoài ra còn có hai lần hoán vị

đầu và cuối (Initial and final permutation - IP&FP) Hai quá trình này có tính chất

đối nhau (trong quá trình mã hóa thì IP trước FP, khi giải mã thì ngược lại) IP và

FP không có vai trò xét về mật mã học và việc sử dụng chúng chỉ có ý nghĩa đáp

ứng cho quá trình đưa thông tin vào và lấy thông tin ra từ các khối phần cứng có từthập niên 1970

Trước khi đi vào 16 chu trình chính, khối thông tin 64 bit được tách làm hai phần 32

bit và mỗi phần sẽ được xử lý tuần tự (quá trình này còn được gọi là mạng Feistel).

Trang 14

Cấu trúc của thuật toán (mạng Feistel) đảm bảo rằng quá trình mã hóa và giải mã

diễn ra tương tự Điểm khác nhau chỉ ở chỗ các khóa con được sử dụng theo trình tựngược nhau Điều này giúp cho việc thực hiện thuật toán trở nên đơn giản, đặc biệt

là khi thực hiện bằng phần cứng

Hàm F (Feistel)

Hàm F làm biến đổi một nửa của khối đang xử lý với một khóa con Đầu ra sau hàm

F được kết hợp với nửa còn lại của khối và hai phần được tráo đổi để xử lý trong

chu trình kế tiếp Sau chu trình cuối cùng thì 2 nửa không bị tráo đổi; đây là đặcđiểm của cấu trúc Feistel khiến cho quá trình mã hóa và giải mã trở nên giống nhau

Hình: Hàm F

Hàm F hoạt động trên khối 32 bit, bao gồm 4 giai đoạn:

1 Mở rộng: 32 bit đầu vào được mở rộng thành 48 bit sử dụng thuật toán hoán vị

mở rộng (expansion permutation) với việc nhân đôi một số bit Giai đoạn này được

ký hiệu là E trong sơ đồ.

2 Trộn khóa: 48 bit thu được sau quá trình mở rộng được XOR với khóa con.

3.Thay thế: 48 bit sau khi trộn được chia làm 8 khối con 6 bit và được xử lý qua hộp

thay thế S-box Đầu ra của mỗi khối 6 bit là một khối 4 bit theo một chuyển đổi phi tuyến được thực hiện bẳng một bảng tra Khối S-box đảm bảo phần quan trọng cho

Trang 15

độ an toàn của DES Nếu không có S-box thì quá trình sẽ là tuyến tính và việc thám

mã sẽ rất đơn giản

4.Hoán vị: Cuối cùng, 32 bit thu được sau S-box sẽ được sắp xếp lại theo một thứ

tự cho trước (còn gọi là P-box).

Quá trình luân phiên sử dụng S-box và sự hoán vị các bít cũng như quá trình mở

rộng đã thực hiện được tính chất gọi là sự xáo trộn và khuyếch tán (confusion and

diffusion) Đây là yêu cầu cần có của một thuật toán mã hoá được Claude Shannon

phát hiện trong những năm 1940

Trang 16

IV VÍ DỤ

Xét chuỗi cần mã hóa M = 0123456789ABCDEF (hệ Hexa) Ta chuyển M

về dạng nhị phân sẽ thu được một khối 64bit

con(subkeys) Ở đây ta sẽ sử dụng một khóa K = “133457799BBCDFF1” biểu diễn

trong hệ Hexa, lúc này ta sẽ chuyển khóa K này về dạng nhị phân:

K = 00010011 00110100 01010111 01111001 10011011 10111100 11011111

11110001

Sau khi đã chuẩn bị xong khóa và dữ liệu ta tiến hành mã hóa theo các bước sau:

Bước 1 Tạo ra 16 khóa con có chiều dài 48bit

Khóa 64 bit sẽ được hoán đổi vị trí theo bảng PC-1 Ta có thể thấy phần tử đầu tiên của bảng là 57 điều đó có nghĩa là bit thứ 57 của khóa K sẽ trở thành bit đầu tiên để trở thành khóa K+ Bit thứ 49 trong khóa ban đầu sẽ trở thành bit thứ hai Cuối cùng bit thứ 4 trong khóa K sẽ trở thành bit cuối cùng sau khi hoán vị Ở đây chỉ có

56 bit trong khóa k thực hiện việc hoán vị

PC-1

57

49

41

33

25

179

8

50

42

34

26

181

0

9

51

43

35

271

9

11

0

52

44

366

3

55

47

39

31

23

15

2

54

46

38

30

221

4

1

53

45

37

29

Trang 17

Từ C 0 và D 0 ở trên ta sẽ tạo ra 16 khối C n và D n (i<=n<=16) Mỗi cặp C n và D n

được tạo ra từ cặp C n-1 và D n-1 (n=1,2,…,16) bằng cách dịch bit của khối trước nó

sang trái theo bảng “left shifts” Để dịch bit ta chuyển các bit sang trái và thêm bit 1

vào đầu dãy bit (tính từ phải sang trái), lặp lại cho đến hết

Interation

Number

Numbe

r ofLeftShifts

Điều đó có nghĩa là ta có thể tạo ra C 4 và D 4 từ C 3 và D 3 bằng cách dịch bit của C 3

và D 3 sang trái 2 bít, tương tự các trường hợp còn lại

C 0 = 1111000011001100101010101111

Ngày đăng: 23/05/2015, 10:16

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w