NGHIÊN CỨU THUẬT TOÁN MẬT MÃ HẠNG NHẸ PRESENT VÀ ĐỀ XUẤT ỨNG DỤNG BẢO MẬT DỮ LIỆU TRONG HỆ THỐNG NHÚNG ên cứu cũng như thiết kế. Mật mã hạng nhẹ nổi lên là một ứng viên phù hợp với các cài đặt trong môi trường bị hạn chế này và cụ thể trong tiêu chuẩn ISOIEC 291922 đã đưa ra mật mã tiêu biểu cho các thiết bị có tài nguyên hạn chế là chuẩn mã khối hạng nhẹ PRESENT. Xuất phát từ thực tiễn, em chọn đề tài “Nghiên cứu thuật toán mật mã hạng nhẹ PRESENT và để xuất ứng dụng bảo mật dữ liệu trong các hệ thống nhúng ” làm đồ án tốt nghiệp. Nội dung của đồ án sẽ được làm 03 chương như sau: Chương 1: Tổng quan về hệ thống nhúng Khái niệm về hệ thống nhúng, lịch sử phát triển, đặc điểm của hệ thống nhúng, các thành phần cơ bản trong cấu trúc phần cứng hệ thống nhúng, mô hình tổng quát của một hệ thống nhúng, cách tiếp cận phần mềm và phần cứng nhúng an toàn. Chương 2: Thuật toán mật mã hạng nhẹ Khái niệm cơ bản của mật mã hạng nhẹ, đặc điểm của mật mã hạng nhẹ, phân loại của mật mã hạng nhẹ, nguyên lý thiết kế thuật toán mật mã hạng nhẹ, các nguyên thủy mật mã hạng nhẹ, ứng dụng mật mã hạng nhẹ, ý tưởng thiết kế thuật toán mã khối hạng nhẹ, một số hệ mật mã khối hạng nhẹ, vấn đề thiết kế cho PRESENT, mô tả thuật toán mã hóa và giải mã của PRESENT. Chương 3: Thực hiện mô phỏng thuật toán Present bảo mật dữ liệu trong hệ thống nhúng Trong chương này trình bày mô tả yêu cầu của bài toán, phương pháp thực hiện và kết quả mã hóa và giải mã, các đánh giá và đề xuất. Sau khi nghiên cứu đề tài “Nghiên cứu thuật toán mật mã hạng nhẹ present và đề xuất ứng dụng bảo mật dữ liệu trong các hệ thống nhúng” tôi thấy được: Lựa chọn kích thước khối là 64 bít của PRESENT là phù hợp cho các thiết bị hạn chế về bộ nhớ và kích thước dữ liệu. Sử dụng Shộp 4 bít phù hợp cho nhu cầu giảm số cổng tương ứng (GE) trong cài đặt cứng hóa. Lớp hoán vị là hình thức hoán vị bít đơn giản. Xây dựng được chương trình thực hiện thuật toán mật mã khối hạng nhẹ PRESENT thực hiện mã hóa và giải mã. Ứng dụng các thuật toán mật mã hạng nhẹ đang được quan tâm trong cộng đồng khoa học mật mã thế giới do những lợi ích đem lại về tính an toàn cũng như hiệu suất thực thi. Vì vậy, nghiên cứu ứng dụng các thuật toán mã hạng nhẹ nói chung và thuật toán PRESENT nói riêng là cần thiết. Tuy nhiên, còn nhiều vấn đề trong đề tài vẫn phải cần đầu tư nghiên cứu tiếp như: Cài đặt và đánh giá hiệu suất thực thi của thuật toán PRESENT trên nền tảng phần cứng. Tích hợp ứng dụng thuật toán PRESENT vào các ứng dụng bảo mật thông tin một cách hiệu quả và có tính thực tiễn cao.
ĐẠI HỌC BÁCH KHOA HÀ NỘI LUẬN VĂN THẠC SĨ NGHIÊN CỨU THUẬT TOÁN MẬT MÃ HẠNG NHẸ PRESENT VÀ ĐỀ XUẤT ỨNG DỤNG BẢO MẬT DỮ LIỆU TRONG HỆ THỐNG NHÚNG Nguyen Thanh Long Hà Nội - 2023 MỤC LỤC MỤC LỤC i LỜI CẢM ƠN Lỗi! Thẻ đánh dấu không được xác định LỜI CAM ĐOAN Lỗi! Thẻ đánh dấu không được xác định DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT iii DANH MỤC BẢNG BIỂU iv DANH MỤC HÌNH VẼ v LỜI NÓI ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG NHÚNG 1.1 Khái quát hệ thống nhúng 1.1.1 Khái niệm hệ thống nhúng 1.1.2 Lịch sử phát triển hệ thống nhúng 1.2.3 Đặc điểm hệ thống nhúng 1.2.4 Các thành phần cấu trúc phần cứng hệ thống nhúng 1.2.5 Mơ hình tổng qt hệ thống nhúng 1.2 An toàn cho hệ thống nhúng 10 1.2.1 Cách tiếp cận phần mềm nhúng an toàn 10 1.2.2 Cách tiếp cận phần cứng nhúng an toàn 12 1.3 Kết luận chương 18 CHƯƠNG 2: THUẬT TOÁN MẬT MÃ HẠNG NHẸ 19 2.1 Khái quát mật mã hạng nhẹ 19 2.1.1 Một số khái niệm 19 2.1.2 Đặc điểm mật mã hạng nhẹ 19 2.1.3 Phân loại mật mã hạng nhẹ 20 2.1.4 Nguyên lý thiết kế thuật toán mật mã hạng nhẹ 26 2.1.5 Các nguyên thủy mật mã hạng nhẹ 29 i 2.1.6 Ứng dụng mật mã hạng nhẹ 30 2.2 Mật mã khối hạng nhẹ 33 2.2.1 Ý tưởng thiết kế thuật toán mã khối hạng nhẹ 33 2.2.2 Một số hệ mật mã khối hạng nhẹ 34 2.3 Thuật toán PRESENT 37 2.3.1 Vấn đề thiết kế cho PRESENT 42 2.3.2 Mơ tả sơ đồ thuật tốn mã hóa PRESENT 43 2.3.3 Mơ tả sơ đồ thuật tốn giải mã PRESENT 46 2.4 Kết luận chương 49 CHƯƠNG 3: THỰC HIỆN MÔ PHỎNG THUẬT TOÁN PRESENT BẢO MẬT DỮ LIỆU TRONG HỆ THỐNG NHÚNG 50 3.1 Mơ tả u cầu tốn 50 3.2 Phương pháp thực kết 51 3.2.1 Giới thiệu GCC 51 3.2.2 Giới thiệu Vim 52 3.2.3 Cài đặt gói make ubuntu 54 3.2.4 Thực biên dịch mã nguồn PRESENT 54 3.3 Đánh giá nhận xét 58 KẾT LUẬN 59 TÀI LIỆU THAM KHẢO 60 ii DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT STT Viết tắt Tiếng Anh AES Advanced Encryption Standard ALU ASIC Application-Specific Integrated Circuit BSD Berkeley Software Distribution DSP Digital Signal Processing ECU Electronic Control Unit FMEDA Failure Mode, Effects and Criticality Analysis FPD Field Programmable Device FPGA Field-Programmable Gate Array 10 IEC International Electrotechnical Commission 11 ISO International Organization for Standardization 12 LED Light Emitting Diode 13 LWC Loop Wiring Concentrator 14 MAC Message Authencation Code 15 MDS Management Data System 16 NIST National Institute of Standards and Technology 17 PKI Public Key Infrastructure 18 RFID Radio Frequency Identification 19 SCSI Small Computer System Interface 20 SES Safely Embedded Sofware 21 SPN Substitution Permutation Network 22 TTL Transistor- Transistor Logic 23 VoIP Voice over Internet Protocol Arthimetic Logic Unit iii DANH MỤC BẢNG BIỂU Bảng 1.1: Các thị trường ứng dụng hệ thống nhúng Bảng 1: Thiết bị mục tiêu 20 Bảng 2: Hiệu phần cứng số giải thuật mật mã hạng nhẹ 27 Bảng 3: Một số thông số số hệ mật mã nhẹ triển khai 32 Bảng 4: Một số hệ mật mã khối hạng nhẹ 34 Bảng 5: Thay s-hộp PRESENT 44 Bảng 6: Bảng lớp hoán vị PRESENT 45 iv DANH MỤC HÌNH VẼ Hình 1.1: Các ứng dụng hệ thống nhúng Hình 1.2: Lịch sử phát triển hệ thống nhúng Hình 1.3: Cấu trúc nguyên lý vi xử lý / vi điều khiển nhúng Hình 1.4: Cấu trúc nhớ Von Neumann Havard Hình 1.5: Sơ đồ nguyên lý điển hình cổng I/O Hình 1.6: Mơ hình tổng quát hệ thống nhúng Hình 1.7: Cách tiếp cận phần mềm nhúng an toàn 10 Hình 1.8: Phương pháp đệm mã an tồn 11 Hình 1.9: Mơ hình kiến trúc máy tính tổng quát Khả xảy lỗi đánh dấu nhãn 12 Hình 2.1: Thuật tốn mã hóa đối xứng 21 Hình 2.2: Trao đổi khóa cơng khai 25 Hình 2.3: Ba nguyên lý thiết kế thuật toán mật mã hạng nhẹ 27 Hình 2.4: Các nguyên thủy mật mã hạng nhẹ 29 Hình 2.5: Mơ hình mạng Feistel 35 Hình 2.6: Mơ hình mạng Substitution -Permutation Network (SPN) 37 Hình 2.7: Mơ tả sơ đồ thuật tốn mã hóa thuật tốn Present 38 Hình 2.8: Mơ tả sơ đồ thuật toán giải mã thuật toán Present 39 Hình 2.9: Sơ đồ thuật tốn mã hóa PRESENT 43 Hình 2.10: Sơ đồ thuật toán giải mã PRESENT 47 Hình 3.1: Cài đặt gcc ubuntu 52 Hình 3.2: Kết cài đặt gcc ubuntu 52 Hình 3.3: Các lệnh vim 53 Hình 3.4: Các cài đặt vim ubuntu 53 Hình 3.5: Kết cài đặt vim 53 Hình 3.6: Cách cài đặt kết cài đặt Make ubuntu 54 Hình 3.7: Cách chạy make 57 Hình 3.8: Kết chạy chương trình mã hóa/giải mã thuật tốn Present 58 v LỜI NĨI ĐẦU Trong giới công nghệ nay, sau trào lưu phát triển từ sau máy tính lớn, PC Internet hệ thống nhúng sóng đổi thứ ba công nghệ thông tin truyền thông Hệ thống nhúng ngày trở nên phức tạp đáp ứng yêu cầu khắt khe thời gian thực, tiêu tốn lượng hoạt động với độ tin cậy ổn định Mặc dù có cải tiến mạnh mẽ công nghệ thiết kế kiến trúc nhiên để giải triệt để vấn đề mà hệ thống nhúng đối mặt ràng buộc tài nguyên như: khả tính toán, lượng tiêu hao, dung lượng nhớ… đồng thời thỏa mãn yêu cầu bảo mật liệu hệ thống đặt thách thức nhà nghiên cứu thiết kế Mật mã hạng nhẹ lên ứng viên phù hợp với cài đặt môi trường bị hạn chế cụ thể tiêu chuẩn ISO/IEC 29192-2 đưa mật mã tiêu biểu cho thiết bị có tài nguyên hạn chế chuẩn mã khối hạng nhẹ PRESENT Xuất phát từ thực tiễn, em chọn đề tài “Nghiên cứu thuật toán mật mã hạng nhẹ PRESENT để xuất ứng dụng bảo mật liệu các hệ thống nhúng ” làm đồ án tốt nghiệp Nội dung đồ án làm 03 chương sau: Chương 1: Tổng quan hệ thống nhúng Khái niệm hệ thống nhúng, lịch sử phát triển, đặc điểm hệ thống nhúng, thành phần cấu trúc phần cứng hệ thống nhúng, mơ hình tổng qt hệ thống nhúng, cách tiếp cận phần mềm phần cứng nhúng an toàn Chương 2: Thuật toán mật mã hạng nhẹ Khái niệm mật mã hạng nhẹ, đặc điểm mật mã hạng nhẹ, phân loại mật mã hạng nhẹ, nguyên lý thiết kế thuật toán mật mã hạng nhẹ, nguyên thủy mật mã hạng nhẹ, ứng dụng mật mã hạng nhẹ, ý tưởng thiết kế thuật toán mã khối hạng nhẹ, số hệ mật mã khối hạng nhẹ, vấn đề thiết kế cho PRESENT, mô tả thuật tốn mã hóa giải mã PRESENT Chương 3: Thực mô thuật toán Present bảo mật liệu hệ thống nhúng Trong chương trình bày mơ tả u cầu tốn, phương pháp thực kết mã hóa giải mã, đánh giá đề xuất CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG NHÚNG 1.1 Khái quát hệ thống nhúng 1.1.1 Khái niệm hệ thống nhúng Hệ thống nhúng (Embedded System) thuật ngữ hệ thống có khả tích hợp phần cứng phần mềm phục vụ toán chuyên dụng nhiều lĩnh vực cơng nghiệp, tự động hố điều khiển quan trọng truyền tin, hoạt động tự trị nhúng vào môi trường hay hệ thống khác quy mơ phức tạp Hình 1.1: Các ứng dụng hệ thống nhúng Vì hệ thống nhúng thiết kế cho số nhiệm vụ định nên nhà thiết kế tối ưu hóa nhằm giảm thiểu kích thước chi phí sản xuất, hệ thống nhúng thường sản xuất hàng loạt với số lượng lớn, đa dạng, phong phú chủng loại Xét độ phức tạp, hệ thống nhúng đơn giản với vi điều khiển phức tạp cấu thành từ nhiều đơn vị, thiết bị ngoại vi mạng lưới thiết kế nằm lớp vỏ máy lớn Phân bố rộng rãi ứng dụng hệ thống nhúng thị trường mô tả bảng 1.1 sau đây: Bảng 1.1: Các thị trường ứng dụng hệ thống nhúng Điện tử tiêu dùng Consumer Electronics Control Systems Automation and Industrial Hệ thống điều khiển tự động hóa cơng nghiệp Bio-medical Systems Hệ thống y tế sinh học Field Instrumentation Thiết bị đo lường Handheld Computers Máy tính cầm tay Data Communication Truyền thơng liệu Network Information Appliances Thiết bị thông tin mạng Telecommunications Viễn thông Wireless Communications Truyền thông không dây 1.1.2 Lịch sử phát triển hệ thống nhúng 1960: Máy tính dẫn đường Apollo phát triển Charles Stark Draper có khả xử lý mạnh mẽ 1970: xử lý bit cho chip nhớ hỗ trợ khác 1961: máy dẫn đường Autonetics D-17 cho tên lửa quân Cuối 1980: Các hệ thống nhúng trở nên phổ biến hầu hết thiết bị điện tử Giữa 1980: sản xuất vi điều khiển chấp nhận rộng rãi 1996: Minuteman II dạng máy tính sử dụng mạch tích hợp Hình 1.2: Lịch sử phát triển hệ thống nhúng Hệ thống nhúng Apollo Guidance Computer (Máy tính dẫn đường Apollo) phát triển Charles Stark Draper phịng thí nghiệm trường đại học MIT Hệ thống nhúng sản xuất hàng loạt máy dẫn đường cho tên lửa quân Autonetics D-17 vào năm 1961, xây dựng sử dụng bóng bán dẫn đĩa cứng để trì nhớ Khi Minuteman II đưa vào sản xuất năm 1996, D-17 thay với máy tính sử dụng mạch tích hợp Tính thiết kế chủ yếu máy tính Minuteman đưa thuật tốn lập trình lại sau hỗ trợ làm cho tên lửa xác định mục tiêu xác hơn, máy tính kiểm tra tên lửa, giảm trọng lượng cáp điện đầu nối điện Từ ứng dụng vào năm 1960, hệ thống nhúng giảm giá phát triển mạnh mẽ khả xử lý Bộ vi xử lý hướng đến người dùng Intel 4004, phát minh phục vụ máy tính điện tử hệ thống nhỏ khác, nhiên cần sử dụng chip nhớ hỗ trợ khác Vào năm cuối 1970, xử lý bit sản xuất, nhiên nhìn chung chúng cần đến chip nhớ bên Vào thập niên 80, kỹ thuật mạch tích hợp đạt trình độ cao dẫn đến nhiều thành phần đưa vào chip xử lý Các vi xử lý gọi vi điều khiển chấp nhận rộng rãi Với giá thành thấp, vi điều khiển trở nên hấp dẫn để xây dựng hệ thống chuyên dụng Đã có bùng nổ số lượng hệ thống nhúng tất lĩnh vực thị trường số nhà đầu tư sản xuất theo hướng Ví dụ, số lượng lớn chip xử lý đặc biệt xuất với nhiều giao diện lập trình kiểu song song truyền thống để kết nối vi xử lý Vào cuối năm 80, hệ thống nhúng trở nên phổ biến hầu hết thiết bị điện tử khuynh hướng tiếp tục Hiện hệ thống nhúng bước phát triển Việt nam thay cho hệ thống vi xử lý trước Hệ thống nhúng ứng dụng rộng rãi ngành điện tử, máy tính viễn thông hệ thống điện thoại, máy đo, hệ thống điều khiển tự động công nghiệp, thương mại ngân hàng Có thể kể tới ứng dụng hệ thống nhúng nhiều sản phẩm gần gũi với sống người như: ✓ Các hệ thống dẫn đường không lưu, hệ thống định vị toàn cầu, vệ tinh ✓ Các thiết bị gia dụng: tủ lạnh, lị vi sóng, lị nướng… ✓ Các thiết bị kết nối mạng: router, hub, gateway… ✓ Các thiết bị văn phòng: máy photocopy, máy fax, máy in, máy scan… ✓ Các thiết bị y tế: máy thẩm thấu, máy điều hòa nhịp tim… ✓ Các máy trả lời tự động ✓ Dây chuyền sản xuất tự động công nghiệp, robots Thanh ghi Bản rõ addRoundkey invpLayer generateRoundkeys( ) addRoundkey (STATE,k32) Foi i=1 to 31 invPLayer (STATE) invSBoxLayer (STATE) addRoundkey (STATE,k i ) End for Cập nhật invsBoxlayer invpLayer Cập nhật invsBoxlayer addRoundkey Bản mã Hình 2.10: Sơ đồ thuật tốn giải mã PRESENT Các bước thực giải mã trình ngược lại q trình mã hóa trình bày Và trình giải mã trình bày chi tiết mục này: 2.3.3.1 Phép tốn trộn khóa Trong phép tốn trộn khóa, cho khóa vịng 𝐾𝑖 = [𝑘63 , 𝑘62 , , 𝑘1, 𝑘0 ] trạng thái hành khối liệu 𝑏𝑖 = [𝑏63 , 𝑏62 , , 𝑏1, 𝑏0 ] Lần lượt, bít trạng thái (STATE) 64 bít thực phép cộng ⊕(XOR) với bít tương ứng khóa vịng (khóa sinh từ khóa 𝑘 thơng qua hàm sinh khóa) chu kỳ hành Phép tốn mơ tả 𝑏𝑗 , → 𝑏𝑗 ⊕ 𝑘𝑗𝑖 với ≤ i ≤ 32 ≤ j ≤ 63 Trong phần giải mã, đầu tiên, mã sau thu từ trình mã hóa thực phép tốn cộng ⊕ với khóa sinh vịng lặp cuối (khóa 𝐾32 ) thu mảng trạng thái (STATE) tương ứng, mảng trạng thái đầu vào cho vịng giải mã tiếp theo, phép toán minh họa Thực phép trộn khóa cho phép giải mã sau: Bản mã: 5 C B 2 4 47 Khóa (𝑘32 ): STATE: D A B 4 F D 0 D F C 4 Quá trình thực tương tự cho vòng 2.3.3.2 Phép tốn hốn vị nghịch đảo Vì mã hóa PRESENT sử dụng mơ hình mạng SPN nên theo cấu trúc SPN ta có phép tốn hốn vị bít theo chiều ngược lại (nghịch đảo) sau: 𝑠 × 𝑖 𝑚𝑜𝑑 𝑏 − 𝑣ớ𝑖 ≤ 𝑖 ≤ 𝑏 − 𝑃(𝑖) = { 𝑏−1 𝑣ớ𝑖 𝑖 = 𝑏 − Trong mã hóa PRESENT sử dụng khối liệu 64 bít (b = 64), số bít S-hộp 4×4 (s = 4) 𝑝1(𝑖) vị trí bít sau hoán vị, thay vào phép toán tổng quát trên, ta có phép tốn hốn vị nghịch đảo PRESENT sau: × 𝑖 𝑚𝑜𝑑 63 𝑣ớ𝑖 ≤ 𝑖 ≤ 62 𝑃 (𝑖) = { 63 𝑣ớ𝑖 𝑖 = 63 Với phép toán hoán vị ta có bảng hốn vị bít nghịch đảo PRESENT i P(i) 0 16 32 i 17 33 49 10 11 12 13 14 15 18 34 50 19 35 53 20 36 52 21 37 53 22 38 54 23 39 55 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 P(i) i 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 P(i) i 24 40 56 25 41 57 10 26 42 58 11 27 43 59 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 P(i) 12 28 44 60 13 29 45 61 14 30 46 62 15 31 47 63 Sau thực phép tốn cộng⊕giữa mã khóa hành vịng lặp thứ ta có mảng trạng thái sau: STATE: D F C 5 Dựa vào bảng nghịch đảo hốn vị tính tốn ta thực phép toán hoán vị nghịch đảo (InvpLayer) thu kết với mảng trạng thái sau: InvP-box: E F 1 F A 48 2.3.3.3 Phép tốn thay nghịch đảo Hình trình bày nội dung bảng nghịch đảo S-hộp (IS- box) sau tính tốn: x A B C D E F S[x] E F C D B A Phép toán thay nghịch đảo thực sau: Mỗi bít mảng trạng thái (STATE) S dạng thập lục phân, thay giá trị bảng S-hộp nghịch đảo vị trí tương ứng Mảng trạng thái (STATE) thu phép toán hoán vị nghịch đảo sau: InvP-box: E F 1 F A Sau thực phép thay dựa vào bảng S-hộp (InvS-box) nghịch đảo trình bày với phép thay thế{4}→{C}ta kết : InvS-box: C A B F E E B A F B C Quá trình thực tương tự cho vịng Trong thuật tốn PRESENT ta thấy hai q trình mã hóa giải mã bao gồm thuật tốn khóa Khóa (key) giá trị khơng phụ thuộc vào rõ, khóa giữ bí mật mà có người gửi người nhận biết Trong trình mã hóa/giải mã bao gồm nhiều vịng thực hiện, vịng có khóa đưa vào (khóa sinh từ khóa 𝑘 thơng qua hàm sinh khóa).Kết đạt được, thực thuật tốn, phụ thuộc vào khóa sử dụng Vì vậy,lựa chọn khóa q trình sinh khóa công việc quan trọng thiết kế mã hóa/giải mã 2.4 Kết luận chương Nghiên cứu tìm hiểu thuật tốn mật mã hạng nhẹ, mật mã khối hạng nhẹ, thuật tốn PRESENT, chi tiết hóa theo bước sơ đồ thuật tốn mã hóa giải mã Sau hiểu thuật toán mật mã hạng nhẹ PRESENT, chương đồ án thực mô tả yêu cầu toán, biên dịch kết nhận xét, đánh giá kết thu 49 CHƯƠNG 3: THỰC HIỆN MƠ PHỎNG THUẬT TỐN PRESENT BẢO MẬT DỮ LIỆU TRONG HỆ THỐNG NHÚNG 3.1 Mô tả yêu cầu toán Q trình mã hóa/giải mã thuật tốn mơ tả chi tiết đây: Q trình mã hóa PRESENT: Vịng lặp mã hóa PRESENT gồm phép tốn phép tốn trộn khóa (Addroundkey), phép toán thay (SboxLayer) phép toán hoán vị (PLayer) Cuối vòng lặp phục vụ trình làm "trắng sau" (post-whitening) Đầu tiên, khối rõ 64 bít đưa vào mảng trạng thái (STATE), sau mảng trạng thái tham gia vào thao tác mã hóa giải mã với khóa vịng (khóa sinh từ khóa thơng qua hàm sinh khóa) Độ dài khóa vịng với độ dài trạng thái (STATE) Hai phép toán thay hoán vị thiết kế để ngăn chặn phân tích mã phương thức "gây lẫn" (confusion) phương thức "khuếch tán" (diffusion), cịn phép tốn trộn khóa thực thiết kế để mã hóa liệu Quá trình giải mã PRESENT: Vì mã khối PRESENT thực theo mơ hình mạng SPN, nên q trình giải mã q trình ngược lại q trình mã hóa Các phép biến đổi sử dụng phép giải mã gồm: Phép tốn trộn khóa (Addroundkey), Phép tốn hoán vị nghịch đảo (InvPLayer), phép toán thay nghịch đảo (InvSBoxLayer) Trong thuật tốn có u cầu khóa hàm sinh khóa khác với thuật tốn PRESENT khóa sử dụng có kích thước 80 bít 128 bit q trình sinh khóa thực theo số trình tự định sử dụng chuẩn mã hóa AES thuật tốn PRESENT bảo mật liệu hệ thống nhúng Trong present.c gồm có thủ tục: thủ tục tạo khóa phiên lược đồ tạo khóa cho mã hóa giải mã present với độ dài khóa 80 bit 128 bit, hệ điều hành mã nguồn mở Ubuntu 64 bit Trong Present_test.c gồm: nhập khóa, gọi rõ; gọi thủ tục mã hóa, thủ tục giải mã present.c Các yêu cầu thiết kế mật mã hạng nhẹ cần: Về độ an toàn, mục tiêu xây dựng hệ mã hạng nhẹ thiết kế hệ mật không yếu (và không với mục đích thay thuật tốn mã truyền thống khác), phải đủ an tồn (tất nhiên khơng thể kháng lại đối phương có đủ điều kiện), 50 chi phí (cài đặt, sản xuất) thấp yêu cầu quan trọng thiết bị kiểu tính gọn nhẹ “on-the-fly” Tóm lại, cần xây dựng hệ mật tốt nhất, mà phải cân giá thành, hiệu suất độ an toàn 3.2 Phương pháp thực kết Trong khuôn khổ đồ án tốt nghiệp, học viên thực lập trình thuật tốn Present theo mơ tả sơ đồ thuật tốn mã hóa/giải mã trình bày chương phía ngơn ngữ lập trình C, sau sử dụng cơng cụ biên dịch, xem thông báo kết hiển thị tảng hệ điều hành mã nguồn mở Ubuntu gcc, make, vim… 3.2.1 Giới thiệu GCC "Tập hợp công cụ biên dịch mã nguồn từ dự án GNU (GNU Compiler Collection - thường viết tắt thành GCC) tập hợp trình dịch thiết kế cho nhiều ngơn ngữ lập trình khác GCC trình dịch thức hệ thống GNU, hầu hết hệ điều hành giống Unix, bao gồm Linux, dòng hệ điều hành BSD, Mac OSX chọn làm trình dịch tiêu chuẩn GCC tương thích với nhiều tảng kiến trúc máy tính đa dạng, sử dụng rộng rãi công cụ làm môi trường phát triển phần mềm thương mại, có quyền nguồn đóng GCC dùng hầu hết tảng nhúng, Symbian, AMCC Freescale Power Architecture chịp, Playstation Sega Dreamcast Những công ty Code Sourcery kinh doanh cách hỗ trợ pháp triển tính tương thích GCC với đ dạng tảng, nhà sản xuất chịp ngày cho kiến trúc thành cơng phải có yếu tổ cần thiết tương thích với GCC Tên gốc GCC GNU C Compiler (Trình biên dịch C GNU), ban đầu hỗ trợ dịch ngơn ngữ lập trình C, GCC 1.0 phát hành vào năm 1987, sau mở rộng hỗ trợ dịch C++ vào tháng năm Các phần đầu vào sau phát triển cho ngơn ngữ lập trình Fortran, Pascal, Objective C, Java Ada ❖ Các bước thực cài đặt gcc ubuntu: Bước 1: Thực gõ lệnh apt-get install gcc làm theo hướng dẫn 51 Hình 3.1: Cài đặt gcc ubuntu Bước 2: Kết cách cài đặt gcc ubuntu Hình 3.2: Kết cài đặt gcc ubuntu 3.2.2 Giới thiệu Vim Vim trình biên soạn dòng lệnh mạnh phổ biến Trước đây, trình biên soạn tích hợp sẵn Linux Unix, sau xuất Windows Giao diện Vim gọn gàng, đơn giản, kết hợp phím để thực cơng việc copy-paste, tìm kiếm thay thế, xóa số dịng, nhiều chức khác 52 Hình 3.3: Các lệnh vim ❖ Các bước thực cài đặt vim ubuntu Bước 1: Lệnh apt-get install vim thực bước theo hướng dẫn cài đặt Hình 3.4: Các cài đặt vim ubuntu Bước 2: Kết cách cài đặt gcc ubuntu Hình 3.5: Kết cài đặt vim 53 3.2.3 Cài đặt gói make ubuntu Lệnh apt-get install make Hình 3.6: Cách cài đặt kết cài đặt Make ubuntu 3.2.4 Thực biên dịch mã nguồn PRESENT Bước 1: (Chuẩn bị) Mã nguồn thuật tốn PRESENT gồm có hai file: present.c present_test.c Trong present.c gồm có thủ tục: tạo khóa phiên cho lược đồ (2 chế độ 80 bit 128 bit), thủ tục mã hóa, giải mã present: ➢ Thủ tục tạo khóa phiên lược đồ tạo khóa cho mã hóa giải mã present với độ dài khóa 80 bit, hệ điều hành mã nguồn mở Ubuntu 64 bit: void present_64_80_key_schedule( const u8 *key, u8 *roundKeys) { u64 keylow = *(const u64*)key; u16 highBytes = *(const u16*)(key + 8); u64 keyhigh = ((u64)(highBytes) > 16); u64 *rk = (u64*)roundKeys; rk[0] = keyhigh; u64 temp; u8 i; for (i = 0; i < PRESENT_ROUNDS; i++) { /* 61-bit left shift */ temp = keyhigh; keyhigh > 3) & 0xFFFF; /* S-Box application */ temp = sbox[keyhigh >> 60]; keyhigh &= 0x0FFFFFFFFFFFFFFF; keyhigh |= temp 1); rk[i+1] = keyhigh; } } /* * Key schedule for 128-bit * key: master key * roundKeys: round keys */ ➢ Thủ tục tạo khóa phiên lược đồ tạo khóa cho mã hóa giải mã present với độ dài khóa 128 bit, hệ điều hành mã nguồn mở ubuntu 64 bit: void present_64_128_key_schedule( const u8 *key, u8 *roundKeys) { u64 keylow = *(const u64*)key; u64 keyhigh = *((const u64*)key+1); u64 *rk = (u64*)roundKeys; rk[0] = keyhigh; u64 temp; u8 i; for (i = 0; i < PRESENT_ROUNDS; i++) { /* 61-bit left shift */ temp = ( (keyhigh3) ); keylow = ( (keylow3) ); keyhigh = temp; /* S-Box application */ temp = (sbox[keyhigh>>60]56)&0xf]); keyhigh &= 0x00FFFFFFFFFFFFFF; keyhigh |= temp