Tiểu luận LẬP TRÌNH SYMBOLIC CẤU TRÚC CỦA HỆ THỐNG MÃ HÓA AES

24 671 2
Tiểu luận LẬP TRÌNH SYMBOLIC CẤU TRÚC CỦA HỆ THỐNG MÃ HÓA AES

Đ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

LỜI CẢM ƠN MỤC LỤC Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 1 LỜI CẢM ƠN LỜI CẢM ƠN Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 2 Đầu tiên em xin gởi lời cảm ơn chân thành đến thầy Đỗ Văn Nhơn – Giảng viên cao học trường đại học Công nghệ thông tin tp. Hồ Chí Minh đã tận tình giảng dạy, hướng dẫn em trong suốt môn học. Em xin chân thành cám ơn quý Thầy Cô trong khoa Khoa học máy tính, phòng đào tạo sau đại học, trường đại học Công nghệ thông tin – đại học Quốc gia Tp. Hồ Chí Minh đã tận tình giảng dạy, hướng dẫn, giúp đỡ và tạo điều kiện cho em thực hiện tiểu luận này. Mặc dù rất cố gắng, song tiểu luận vẫn còn nhiều thiếu sót. Em mong nhận được nhiều sự thông cảm và góp ý của thầy để em có thể hoàn thiện khả năng của em hơn nữa. Xin chân thành gửi lời cám ơn sâu sắc đến quý thầy Xin chân thành cảm ơn! LỜI CẢM ƠN NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Ngày……Tháng……Năm…… Giáo viên hướng dẫn TS. Đỗ Văn Nhơn Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 3 LỜI CẢM ƠN PHẦN I - TỔNG QUAN Lĩnh vực bảo mật nói chung cũng như lĩnh vực mã hóa nói riêng hiện nay là một lĩnh vực quan trọng trong sự phát triển của công nghệ máy tính. Bởi vì càng nhiều công nghệ xuất hiện, càng nhiều mối quan hệ đối tác, làm ăn, giao dịch được thiết lập từ xa, càng nhiều dữ liệu được đưa vào lưu trữ trên máy tính và đưa ra sử dụng trên các mạng công cộng thì mức độ bảo mật càng được yêu cầu cao hơn. Bài thu hoạch tập trung vào ứng dụng phần mềm toán học Maple – là phần mềm tính toán kỹ thuật cho các nhà toán học, kỹ sư và nhà khoa học, đặc biệt phần mềm hỗ trợ thêm các chức năng lập trình logic rất mạnh, rất phù hợp với một số bài toán đặt ra hiện nay. Bài thu hoạch này đề cập đến thuật toán AES, là một thuật toán đã ra đời hơn 10 năm trước nhưng cho đến nay vẫn được công nhận là một thuật toán an toàn, được sử dụng trong nghành ngân hàng và chính phủ Mỹ, được công nhận bởi cục tiêu chuẩn Hoa Kỳ NIST về việc bảo vệ tài liệu mật (AES 128 bit) và tài liệu tuyệt mật (AES 192 bit và AES 256 bit). Trong bài thu hoạch này, em tập trung vào nghiên cứu thuật toán AES và tìm cách cài đặt thuật toán bằng ngôn ngữ của maple. Có thể cách cài đặt này chưa phải là tốt nhất do có thể đã có các thư viện hoặc sử dụng bằng ngôn ngữ lập trình thuần túy sẽ tốt hơn. Tuy nhiên hi vọng qua bài thu hoạch này sẽ giúp em phần nào hiểu rõ được thêm cách sử dụng của phần mềm. Do phần mềm maple đã quá thông dụng, việc nói lại những cách sử dụng cơ bản của phần mềm là không cần thiết và cũng bởi các cấu trúc, cú pháp để lập trình trong phần mềm rất đa dạng và phức tạp đồng thời cũng đã có sẵn rất nhiều hướng dẫn sử dụng rất đơn giản. Do đó trong bài thu hoạch em chỉ giới thiệu sơ lược về thuật toán maple, phần còn lại nói về thuật toán AES và cách cài đặt. Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 4 LỜI CẢM ƠN PHẦN I - PHẦN MỀM MAPLE 1 Phần mềm Maple Maple là một gói phần mềm toán học thương mại phục vụ cho nhiều mục đích. Nó phát triển lần đầu tiên vào năm 1980 bởi Nhóm Tính toán Hình thức tại Đại học Waterloo ở Waterloo, Ontario, Canada. Từ năm 1988, nó đã được phát triển và thương mại hóa bởi Waterloo Maple Inc. (còn được biết đến với tên gọi Maplesoft), một công ty Canada cũng có trụ sở tại Waterloo, Ontario. Phiên bản hiện tại là Maple 13 được phát hành vào tháng 5 năm 2009. Đối thủ cạnh tranh chính của nó là Mathematica. Người dùng có thể nhập biểu thức toán học theo các ký hiệu toán học truyền thống. Có thể dễ dàng tạo ra những giao diện người dùng tùy chọn. Maple hỗ trợ cho cả tính toán số và tính toán hình thức, cũng như hiển thị. Nhiều phép tính số học được thực hiện dựa trên thư viện số học NAG; trong Maple, các chương trình con NAG đã được mở rộng để cho phép độ chính xác ngẫu nhiên lớn. Các ví dụ về tính toán hình thức sẽ được trình bày trong phần sau. Maple cũng có một ngôn ngữ lập trình cấp cao đầy đủ. Cũng có giao diện cho những ngôn ngữ khác (C, Fortran, Java, MatLab, và Visual Basic). Cũng có một giao diện dành cho Excel. Phần lớn chức năng toán học của Maple được viết bằng ngôn ngữ Maple, và được thông dịch bởi nhân Maple. Nhân Maple được viết bằng C. Maple chạy trên tất cả các hệ điều hành chính. Ngôn ngữ lập trình Maple là một ngôn ngữ kiểu động. Cũng giống như các hệ thống đại số máy tính, các biểu thức hình thức được lưu trữ trong bộ nhớ theo đồ thị không chu trình có hướng (DAG). Ngôn ngữ cho phép các biến có phạm vi nhất định (lexical scoping). Ngôn ngữ có hình thức lập trình hàm, nhưng cũng có hỗ trợ đầy đủ cho lập trình truyền thống, theo kiểu mệnh lệnh. Tên "Maple" không phải là tên viết tắt hoặc từ cấu tạo bằng chữ đầu, mà chỉ đơn giản là để chỉ hình tượng Lá phong (tiếng Anh: maple) trên Quốc kỳ Canada. 2 Một số tính năng vượt trội của maple Thông qua thực tiễn sử dụng, cộng đồng người dùng maple đã chỉ ra những ưu điểm vượt trội của maple so với những phần mềm tương tự (Mathematica, Geogebra 4…) như sau (ưu điểm tập hợp trên bản maple 15): - Là một phần mềm toán học cao cấp, có thể giải quyết một số vấn đề của Toán học. - Rất nhiều chức năng và được cập nhật liên tục, mỗi phiên bản đều có những cái mới của nó và nhà sản xuất không ngừng phát triển khả năng tính toán của nó. - Hoạt động mạnh mẽ trên nền java. - Tính toán nhanh, chính xác với những số lên tới 20.00.000 chữ số. - Hiển thị như sách giáo khoa (trực quan, dễ hiểu cho người dùng không chuyên). - Cài đặt dễ dàng (thông qua setup wizard, rất đơn giản, không phải cấu hình các biến, tham số…). Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 5 LỜI CẢM ƠN - Có thể vẽ đồ thị, tính toán ngay cả trên đồ thị. - Vẽ được đồ thị 3D, xoay hình, kiểm tra dễ dàng. - Giải phương trình, Hệ phương trình nhanh chóng, gần chính xác. - Phân tích thành nhân tử, biến đổi biểu thức, rút gọn nhanh chóng, khai triển, tính thương, dư của đa thức, - Kiểm tra số nguyên tố. - Tìm chữ số thứ n. - Kiểm tra số có bao nhiêu chữ số. - Phân tích một số nguyên ra thừa số nguyên tố. - Tính toán với số phức. - Tính tổng nhanh chóng, thuận tiện, nhất là khi cần tính công thức tổng quát của một biểu thức - Các tính năng khác như lập trình, tạo file trình chiếu, mô hình vật lý… - Hỗ trợ nhiều ngôn ngữ khác nhau. Đến phiên bản Maple 16 có sẵn tiếng Anh và Nhật Bản, với phần mở rộng gói ngôn ngữ hỗ trợ tiếng Bồ Đào Nha Pháp, Trung Quốc, Tây Ban Nha, Hàn Quốc, Hy Lạp, Hungary và Brazil. Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 6 LỜI CẢM ƠN PHẦN II - HỆ THỐNG MÃ HÓA AES 1 Mã hóa khối Thuật toán mã hóa AES là một hệ thống mã hóa chung chia ra làm nhiều thuật toán mã hóa con khác nhau như AES 128 bit, AES 192 bit… tùy vào độ lớn của khóa, khi độ lớn của khóa thay đổi thuật toán cũng có một số thay đổi nhất định nhưng không ảnh hưởng nhiều đến cấu trúc của thuật toán. Thuật toán mã hóa AES lại là một nhánh của lĩnh vực mã hóa khối – lĩnh vực mà các khóa và các dữ liệu đầu vào được để dưới dạng khối dữ liệu thường gọi là block mỗi phần tử của khối thường là một byte hoặc một số tùy theo yêu cầu của bài toán và tính chất của thuật toán. Lĩnh vực mã hóa khối lại là một nhánh của thuật toán mã hóa đối xứng- dạng thuật toán mã hóa sử dụng một khóa bí mật duy nhất dùng cho cả hai bước mã hóa và giải mã - khác với thuật toán mã hóa bất đối xứng dùng hai khóa có liên hệ chặt chẽ với nhau để mã hóa và giải mã, khóa để mã hóa không cần giữ bí mật. Đơn giản hơn ta có thể xem xét sơ đồ sau: Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 7 LỜI CẢM ƠN Nói rõ hơn, mã hóa khối là những thuật toán mã hóa đối xứng hoạt động trên những khối thông tin có độ dài xác định (block) với những chuyển đổi xác định. Chẳng hạn một thuật toán mã hóa khối có thể xử lý khối 128 bít đầu vào và biến nó thành khối 128 bít ở đầu ra. Quá trình chuyển đổi còn sử dụng thêm một tham số nữa: khóa bí mật để cá biệt hóa quá trình. Việc giải mã cũng diễn ra tương tự: xử lý khối mã hóa 128 bít cùng với khóa để trả về khối 128 bít bản rõ ban đầu. Để mã hóa những văn bản có độ dài vượt quá độ dài của khối, người ta sử dụng thuật toán theo một chế độ mã hóa khối nào đó. Phân biệt với mã hóa khối là mã hóa dòng. Mã hóa dòng làm việc trên từng Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 8 LỜI CẢM ƠN bít của dòng dữ liệu và quá trình biến đổi thay đổi theo quá trình mã hóa. Tuy nhiên, sự phân biệt giữa 2 phương pháp nhiều khi không rõ ràng vì mã hóa khối khi hoạt động theo một chế độ nào đó thì có tác dụng như một phương pháp mã hóa dòng. 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) do công ty IBM phát triển và được ban hành làm tiêu chuẩn năm 1977. Tiêu chuẩn thay thế DES có tên là AES (Advanced Encryption Standard - Tiêu chuẩn mã hóa nâng cao) được ban hành năm 2001. 2 Thuật toán mã hóa AES AES (viết tắt của từ tiếng Anh: Advanced Encryption Standard, hay Tiêu chuẩn mã hóa tiên tiến) là mộtthuật toán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa. Giống như tiêu chuẩn tiền nhiệm DES, AES được kỳ vọng áp dụng trên phạm vi thế giới và đã được nghiên cứu rất kỹ lưỡng. AES được chấp thuận làm tiêu chuẩn liên bang bởiViện tiêu chuẩn và công nghệ quốc gia Hoa kỳ (NIST) sau một quá trình tiêu chuẩn hóa kéo dài 5 năm. Thuật toán được thiết kế bởi hai nhà mật mã học người Bỉ: Joan Daemen và Vincent Rijmen. Thuật toán được đặt tên là "Rijndael" khi tham gia cuộc thi thiết kế AES. Rijndael được phát âm là "Rhine dahl" theo phiên âm quốc tế. Thuật toán được dựa trên bản thiết kế Square có trước đó của Daemen và Rijmen; còn Square lại được thiết kế dựa trên Shark. Khác với với DES sử dụng mạng Feistel, Rijndael sử dụng mạng thay thế-hoán vị. AES có thể dễ dàng thực hiện với tốc độ cao bằng phần mềm hoặc phần cứng và không đòi hỏi nhiều bộ nhớ. Do AES là một tiêu chuẩn mã hóa mới, nó đang được triển khai sử dụng đại trà. Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 9 LỜI CẢM ƠN PHẦN III - CẤU TRÚC CỦA HỆ THỐNG MÃ HÓA AES Một hệ thống mã hóa AES sẽ bao gồm các 4 thành phần chính ứng với bốn bước biến đổi khác nhau. Bước mã hóa và giải mã cũng đều có các thành phần như nhau, và có thứ tự biến đổi trái ngược với nhau. Trong phần này ta đề cập đến chủ yếu là quá trình mã hóa, các lưu ý về quá trình giải mã sẽ được đề cập đến trong trong mục tương ứng nếu có những lưu ý đặc biệt. Hệ thống mã hóa AES hiện nay được chia ra thàng 3 cách hiện thực chính dựa trên số bit của khóa: - AES-128: sử dụng khóa có độ dài 128 bit - AES-192: sử dụng khóa có độ dài 192 bit - AES-256: sử dụng khóa có độ dài 256 bit 1 Hàm subbytes 1.1 S-Box Trong ngành mã hóa, S-Box là một thành phần thuộc nhánh mã hóa đối xứng. S-Box được dùng để thay thế, biến đổi dữ liệu cần mã hóa cho khác đi với bản gốc. Trong mã hóa khối, S-Box được ứng dụng để làm giảm các mối quan hệ giữa khóa (key) và dữ liệu cần mã hóa. Thông thường, S-Box nhận vào một lượng n bit input và trả về một lượng m bit output với m có thể không bằng n. Phương pháp biến đổi dựa vào một bảng tra cứu gồm nhiều hàng, cột. Bảng tra cứu thông thường được sử dụng bảng cố định, không thay đổi. Tuy nhiên có một vài thuật toán sẽ tự động tạo ra S-Box dựa trên khóa để thay đổi với mỗi khóa khác nhau. Hiện nay vẫn còn nhiều nhóm đang nghiên cứu làm cách nào để tạo ra một S-Box tốt để có thể che dấu dữ liệu trước khi mã hóa. 1.2 Bước SubBytes Các byte được thế thông qua bảng tra S-box. S-box này đa số được thiết kế cố định cho thuật toán chỉ để trộn lẫn dữ liệu đầu vào với nhau đồng thời giúp ngăn ngừa những dữ liệu vô tình không bị thay đổi khi mã hóa. Để cho dễ hiểu, ta có thể xem một bảng S-box đơn giản theo ví dụ dưới đây: Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 10 [...]... end: 5 Thuật toán mã hóa Sau khi có đủ các thành phần của thuật toán mã hóa Ta kết nối các thành phần lại với nhau để cho ra 1 thuật toán mã hóa hoàn chỉnh Các thuật toán mã hóa AES- 128, AES- 192, AES- 256 có cách cài đặt khác nhau đôi chút Điểm có thể thấy rõ nhất là số vòng lặp mã hóa của mỗi thuật toán khác nhau cụ thể như sau: AES- 128: dùng 10 vòng lặp AES- 192: dùng 12 vòng lặp AES- 256: dùng 14 vòng... cần giải mã ta chỉ cần chạy lại hàm này một lần nữa là được Không cần phải có hàm giải mã riêng cho nó Do đó bước này không cần thêm hàm InvAddRoundKey 4.1 Thuật toán sinh khóa Thuật toán sinh khóa nhận vào một khóa K và thực hiện sinh khóa để sinh ra một dãy các khóa phục vụ cho việc mã hóa Thủ tục này đảm bảo sẽ sinh ra số lượng khóa con khác nhau hoàn toàn vừa đủ để thực hiện số vòng mã hóa theo... hợp với khóa con thông qua phép XOR Khóa con trong mỗi vòng lặp mã hóa luôn khác được tạo ra từ khóa chính bằng thuật toán sinh khóa (Key Expansion) Mỗi khóa con có độ lớn giống như các khối Quá trình kết hợp được thực hiện bằng cách XOR từng bit của khóa con với khối dữ liệu Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 18 LỜI CẢM ƠN Hàm addRoundKey được khai báo cơ bản như sau:... AES- 192: dùng 12 vòng lặp AES- 256: dùng 14 vòng lặp Số vòng lặp được tính toán sẵn đủ để mã hóa toàn bộ khối dữ liệu đồng thời tận dụng được hết độ lớn của khóa làm cho dữ liệu sau khi mã hóa rối rắm hết mức có thể Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 20 LỜI CẢM ƠN Thuật toán mã hóa được thực hiện như sau: Khởi động AddRoundKey While (lặp số lần theo qui định) { SubBytes... cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 11 LỜI CẢM ƠN Tương tự như khi mã hóa, khi giải mã ta cũng sẽ dùng 4 bit đầu làm giá trị hàng, 4 bit sau làm giá trị cột để thay thế Trong ví dụ ta cũng chuyển đổi giá trị cần giải mã về số thập lục phân rồi tra trong bảng Ví dụ nếu ta có byte có giá trị là 16 thì ta sẽ chuyển đổi giá trị của byte này thành ff Trong bài thu hoạch, ta dung... sẽ không đưa vào bài thu hoạch để tránh rườm rà Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 22 LỜI CẢM ƠN PHẦN IV - KẾT LUẬN Thuật toán mã hóa AES thật ra cũng không phải là mới Nó đã ra đời cách đây hơn 10 năm Tuy nhiên sau hàng loạt những cách tấn công và cải tiến của cách tấn công được công bố, thuật toán này vẫn đảm bảo những yêu cầu nhất định về bảo mật dữ liệu và vẫn... học tập Bài thu hoạch của em được phát triển lên từ bài thu hoạch cũ của chính mình Do hạn chế thời gian và trình độ còn nhiều yếu kém, nên bài thu hoạch của em sẽ có rất nhiều hạn chế và sai sót, nếu có gì sai sót, em rất mong nhận được lời góp ý của thầy để có thể hoàn thiện bài thu hoạch cho các nhu cầu về sau Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 23 LỜI CẢM ƠN PHẦN... thể tạo ra một cột mới phụ thuộc hoàn toàn vào cột ban đầu Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 17 LỜI CẢM ƠN Hai bước ShiftRows và MixColumns đã tạo ra tính chất khuyếch tán cho thuật toán Các giá trị của khối được trộn lẫn vào nhau và cho ra khối mã hóa, đảm báo tính toàn vẹn và liên kết chặt chẽ trong dữ liệu, giảm thiểu khả năng bị tấn công theo hướng phán đoán theo... một dãy các khóa phục vụ cho việc mã hóa Thủ tục này đảm bảo sẽ sinh ra số lượng khóa con khác nhau hoàn toàn vừa đủ để thực hiện số vòng mã hóa theo yêu cầu đủ để thực hiện quá trình mã hóa Mã cơ bản của thuật toán sinh khóa trong phần mềm: keyExpand := proc(keyList) local keyExpanded, i, j, k, fudgeWord: keyExpanded := matrix(4,44): for j from 1 to 4 do for i from 1 to 4 do keyExpanded[i,j] := keyList[(j-1)*4+i];... một số bước nhất định bằng với số thứ tự của hàng Ví dụ: - Hàng đầu tiên có số thứ tự là 0 sẽ không dịch chuyển Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 16 LỜI CẢM ƠN - Hàng thứ 2 có số thứ tự là 1 sẽ bị dịch sang phải 1 byte Byte cuối hàng sẽ được đưa vào vị trí đầu hàng - Tương tự cho các hàng còn lại Do vậy, mỗi cột khối đầu ra của bước này sẽ bao gồm các byte ở đủ cột . toán mã hóa AES 6 LỜI CẢM ƠN PHẦN II - HỆ THỐNG MÃ HÓA AES 1 Mã hóa khối Thuật toán mã hóa AES là một hệ thống mã hóa chung chia ra làm nhiều thuật toán mã hóa con khác nhau như AES 128 bit, AES. chất của thuật toán. Lĩnh vực mã hóa khối lại là một nhánh của thuật toán mã hóa đối xứng- dạng thuật toán mã hóa sử dụng một khóa bí mật duy nhất dùng cho cả hai bước mã hóa và giải mã - khác. chế độ mã hóa khối nào đó. Phân biệt với mã hóa khối là mã hóa dòng. Mã hóa dòng làm việc trên từng Nghiên cứu phần mềm Maple và cài đặt thử nghiệm thuật toán mã hóa AES 8 LỜI CẢM ƠN bít của dòng

Ngày đăng: 10/04/2015, 00:50

Từ khóa liên quan

Mục lục

  • MỤC LỤC

  • LỜI CẢM ƠN

  • NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

  • PHẦN I - TỔNG QUAN

  • PHẦN I - PHẦN MỀM MAPLE

    • 1 Phần mềm Maple

    • 2 Một số tính năng vượt trội của maple

    • PHẦN II - HỆ THỐNG MÃ HÓA AES

      • 1 Mã hóa khối

      • 2 Thuật toán mã hóa AES

      • PHẦN III - CẤU TRÚC CỦA HỆ THỐNG MÃ HÓA AES

        • 1 Hàm subbytes

          • 1.1 S-Box

          • 1.2 Bước SubBytes

          • 2 Bước ShiftRows

          • 3 Bước MixColumns

          • 4 Bước AddRoundKey

            • 4.1 Thuật toán sinh khóa

            • 5 Thuật toán mã hóa

            • 6 Các thuật toán bổ sung để phần mềm có thể hoạt động

            • PHẦN IV - KẾT LUẬN

            • PHẦN V - DANH MỤC TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan