Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 117 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
117
Dung lượng
1,98 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI o0o LUẬN VĂN THẠC SỸ KHOA HỌC NGHIÊN CỨU THUẬT TỐN MÃ HĨA NÂNG CAO AES VÀ XÂY DỰNG ỨNG DỤNG THUẬT TỐN DỰA TRÊN CƠNG NGHỆ NHÚNG Ngành: Xử lý Thông tin Truyền thông Vũ Thanh Thắng Hà Nội – 2007 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI o0o LUẬN VĂN THẠC SỸ KHOA HỌC NGHIÊN CỨU THUẬT TOÁN MÃ HÓA NÂNG CAO AES VÀ XÂY DỰNG ỨNG DỤNG THUẬT TỐN DỰA TRÊN CƠNG NGHỆ NHÚNG Ngành: Xử lý Thông tin Truyền thông Mã số: Vũ Thanh Thắng Người hướng dẫn khoa học: PGS.TS Nguyễn Thị Hoàng Lan Hà Nội – 2007 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 MỤC LỤC MỞ ĐẦU PHẦN CƠ SỞ LÝ THUYẾT MÃ HÓA BẢO MẬT 10 VÀ NGHIÊN CỨU THUẬT TOÁN AES 10 1.1 Giới thiệu mã hóa bảo mật 10 1.2 Mã hóa với khóa đối xứng (Symmetric-Key Encryption) 11 1.2.1 Giới thiệu 11 1.2.2 Các thuật tốn mã hóa bảo mật 11 1.3 Mã hóa với khóa bất đối xứng (Asymmetric-Key Encryption) 14 1.3.1 Giới thiệu 14 1.3.2 Một số mơ hình mã hóa khóa cơng khai 15 1.3.3 Đặc điểm mã hóa khóa cơng khai 17 1.3.4 Mối quan hệ khóa cơng khai với thực thể sở hữu khóa 19 1.3.5 Các vấn đề liên quan tới thời gian thực 20 1.4 Thuật tốn mã hóa AES (Advanded Encryption Standard) 22 1.4.1 Giới thiệu 22 1.4.2 Mơ tả thuật tốn 23 PHẦN NGHIÊN CỨU TÌM HIỂU GIAO TIẾP USB 30 2.1 Tổng quan công nghệ nhúng 31 2.1.1 Phần cứng 31 2.1.2 Phần mềm nhúng 32 2.2 Nghiên cứu giao tiếp USB 32 2.2.1 Tìm hiểu giao tiếp USB 32 2.2.2 Luồng liệu giao tiếp USB 36 2.2.3 Hoạt động truyền thông USB 41 2.2.4 Truyền thông tin điều khiển (Control Transfer) 46 2.2.5 Truyền thông tin ngắt (Interrupt Transfer) 53 2.2.6 Truyền liệu theo kiểu tức thời (Isochoronous Transfer) 54 2.2.7 Truyền liệu theo kiểu xếp hàng (Bulk Transfer) 55 2.2.8 Quá trình Enumeration USB Host USB Device 56 2.2.9 Các mô tả loại USB Device 59 2.2.10 Xác định Driver cho thiết bị USB 65 Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 PHẦN THIẾT KẾ CÀI ĐẶT PHẦN MỀM 67 ỨNG DỤNG 67 3.1 Phân tích thiết kế hệ thống 67 3.1.1 Phần mềm 67 3.1.2 Mô tả tổng quan hệ thống 67 3.1.2 Kịch giao tiếp máy tính Hard Lock 69 3.2 Thiết kế phần mềm 72 3.2.1 Yêu cầu, nhiệm vụ 72 3.2.2 Biểu đồ Use Case 73 3.2.3 Biểu đồ phân cấp chức 73 3.2.4 Thiết kế chi tiết chức 74 3.2.5 Thiết kế giao diện 81 PHẦN THIẾT KẾ CÀI ĐẶT PHẦN MỀM NHÚNG 83 4.1 Thiết kế phần mềm nhúng 83 4.1.1 Yêu cầu, nhiệm vụ 83 4.1.2 Thiết kế tổng thể 83 4.1.3 Thiết kế chi tiết chức 85 4.2 Thực chương trình 89 4.2.1 Phần mềm máy tính 89 4.2.2 Phần mềm nhúng AT89C5131 90 g Trao đổi liệu với máy tính 101 PHẦN KẾT LUẬN VÀ ĐÁNH GIÁ KẾT QUẢ 106 a Về sở lý thuyết: 106 b Về thực chương trình: 106 c Đánh giá kết 106 a Về phần mềm ứng dụng máy tính 107 b Về phần mềm nhúng vi điều khiển 107 c Về phần cứng Hard Lock 107 PHỤ LỤC 108 Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 Các hình vẽ sử dụng luận văn Hình 1.1 Mơ hình dùng khố cơng khai để mã hóa, 15 dùng khố bí mật để giải mã [10] 15 Hình 1.2 Mơ hình dùng khố bí mật để ký thông báo, 16 dùng khố cơng khai để xác minh chữ ký [10] 16 Hình 1.3 Mơ hình tổ hợp khố bí mật với khố bí mật người khác 16 tạo khố dùng chung hai người biết [10] 16 Hình 1.4 RCon trường hợp khóa 128 bit [5] 24 Hình 1.5 Biểu đồ luồng q trình mã hóa AES [10] 25 Hình 1.6 AES Add Round Key [10] 26 Hình 1.7 AES Sub Bytes [10] 26 Hình 1.8 AES Rijndael S-box [5] 27 Hình 1.9 AES Rijndael Inverse S-box [5] 28 Hình 1.10 AES Shift Rows [10] 29 Hình 1.11 AES Mix Columns [10] 29 Hình 2.1 Hệ thống USB có topo hình tối đa tầng [4] 34 Hình 2.2 Nối ghép Host - Hub - Function [4] 34 Hình 2.3 USB Hub [4] 35 Hình 2.4 Cáp USB [4] 36 Hình 2.5 Giao tiếp USB Host USB Device [4] 37 Hình 2.6 Giao tiếp Client Software Function [11] 37 Hình 2.7 Các luồng giao tiếp Client Software Function [4] 38 Hình 2.8 Quan hệ cặp Client Software - Function khác [4] 39 Hình 2.9 Sơ đồ khối trình trao đổi liệu Host Device [1] 42 Hình 2.10 Bảng liệt kê loại gói tin hình thức trao đổi liệu[1] 43 Hình 2.11 Trường PID xác định loại gói tin[1] 44 Hình 2.12 Sự lặp lại bit trường PID[1] 44 Hình 2.13 Định dạng gói tin Token [1] 45 Hình 2.14 Định dạng gói tin Data [1] 45 Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 Hình 2.15 Định dạng gói tin Handshake [1] 45 Hình 2.16 Bước thiết lập (Setup Stage) hoạt động 47 truyền thông tin điều khiển [1] 47 Hình 2.17 Nội dung gói tin DATA0 hoạt động 48 Control Transfer Hub [1] 48 Hình 2.18 Các Request USB Device chuẩn Hub [1] 49 Hình 2.19 Bước truyền liệu (Data Stage) hoạt động 51 truyền thông tin điều khiển [4] 51 Hình 2.20 Bước truyền trạng thái (Status Stage) hoạt động 52 truyền thông tin điều khiển (Control Transfer) [4] 52 Hình 2.21 Bước truyền trạng thái (Status Stage) hoạt động 52 truyền thông tin điều khiển (Control Transfer) [4] 52 Hình 2.22 Hoạt động truyền thông tin ngắt (Interrupt Transfer) [4] 53 Hình 2.23 Hoạt động truyền liệu theo kiểu tức thời 54 Hình 2.24 Hoạt động truyền liệu theo kiểu xếp hàng (Bulk Transfer) [4] 55 Hình 2.25 Các bước thực trình Enumeration [1] 59 Hình 2.26 Các giá trị trường bDescriptor [1] 60 Hình 2.27 Các trường cấu trúc “Device Descriptor” [1] 60 Hình 2.28 Các giá trị trường bDeviceClass [1] 61 Hình 2.29 Các trường cấu trúc “Configuration Descriptor” [1] 61 Hình 2.30 Các trường cấu trúc “Interface Descriptor” [1] 62 Hình 2.31 Các trường “Device_Qualifier Descriptor” [1] 62 Hình 2.32 Các giá trị trường bInterfaceClass [1] 63 Hình 2.33 Các trường “Other_Speed_Configuration Descriptor” [1] 64 Hình 2.34 Các trường “Configuration Descriptor” [1] 64 Hình 3.1 Mơ hình tổng quan hệ thống 67 Hình 3.2 Kịch mã hóa 69 Hình 3.3 Kịch giải mã 70 Hình 3.4 Định dạng Report điều khiển (Header) 71 Hình 3.5 Biểu đồ Use Case 73 Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 Hình 3.6 Biểu đồ phân cấp chức 73 Hình 3.7 Biểu đồ chức “Tìm thiết bị” 74 Hình 3.8 Biểu đồ chức “Đăng nhập” - máy tính 75 Hình 3.9 Biểu đồ chức “Đăng xuất” - máy tính 76 Hình 3.10 Biểu đồ chức “Thay đổi Password” – máy tính 77 Hình 3.11 Biểu đồ chức “Chọn File” 78 Hình 3.12 Biểu đồ chức “Mã hóa” / “Giải mã” - máy tính 80 Hình 3.13 Form Main 81 Hình 3.14 Form nhận thiết bị 82 Hình 3.15 Form thay đổi mật 82 Hình 4.1 Biểu đồ chức tổng thể chức Hard Lock 84 Hình 4.2 Biểu đồ chức “Đăng nhập” - Hard Lock 85 Hình 4.3 Biểu đồ chức “Đăng xuất” - Hard Lock 86 Hình 4.4 Biểu đồ chức “Thay đổi Password” - Hard Lock 86 Hình 4.5 Biểu đồ chức “Mã hóa” - Hard Lock 87 Hình 4.6 Biểu đồ chức “Giải mã” - Hard Lock 88 Hình 4.7 Sơ đồ khối AT89C5131 [7] 92 Hình 4.8 Sơ đồ khối Phase Locked Loop [7] 93 Hình 4.9 Biểu đồ luồng thực Phase Locked Loop [7] 93 Hình 4.10 Các giá trị sử dụng với PLL để tạo xung Clock 48MHz [7] 94 Hình 4.11 Sơ đồ khối USB Device Controller [7] 94 Hình 4.12 Sơ đồ khối SIE [7] 95 Hình 4.13 Sơ đồ khối FIU [7] 96 Hình 4.14 Cách chọn Endpoint [7] 97 Hình 4.15 Các kiểu Endpoint [7] 98 Hình 4.16 Nhiệm vụ khối giao tiếp USB [7] 101 Hình 4.17 Kịch truyền Bulk/Interrupt IN [7] 103 Hình 4.18 Kịch truyền Bulk/Interrupt OUT [7] 104 Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 Tài liệu tham khảo Các tài liệu sách sách điện tử: [1] USB Complete (Third Edition)-Copyright 1999-2005 by Jan Axelson [2] AT89C5131 Datasheet (Rev 4136C) - Atmel Corp [3] Embedded C (First Edition)-Copyright 2002-2005 by Michael J Pont [4] USB Specification (Revision 2.0) - USB Implementers [5] Federal Information Processing Standards Publications 197 – NIST Các Website: [6] http://www.usb.org/developers/hidpage/ [7] http://www.atmel.com/dyn/products/product_card.asp?part_id=3011 [8] http://www.lvr.com/usb.htm [9] http://www.keil.com/support/man/docs/c51/c51_library.htm [10] http://www.wikipedia.org/ Một số công cụ hỗ trợ: [11] API Guide 3.7 [12] USB Monitor 2.37 [13] HID Descriptor Tool 2.4 Nghiên cứu thuật toán mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 MỞ ĐẦU Giới thiệu luận văn Với phát triển bùng nổ công nghệ thơng tin mạng máy tính tạo cách mạng làm thay đổi toàn giới Công nghệ thông tin ngày ăn sâu sống người lĩnh vực: từ trị, an ninh quốc phòng, sản xuất kinh doanh, ngân hàng, thương mại giữ vai trị quan trọng lĩnh vực Có thể nói, cơng nghệ thơng tin trở thành phần thiếu mặt sống Song song với phát triển không ngừng công nghệ thơng tin, u cầu an tồn thơng tin, an toàn liệu ngày cấp thiết vấn đề quan tâm hàng đầu Đối với nhiều quan, tổ chức, vấn đề an tồn thơng tin có tầm quan trọng đặc biệt, chí yếu tố định sống quan, tổ chức Ngay với cá nhân, yêu cầu bảo vệ an tồn thơng tin, liệu riêng tư cần thiết Trong thời đại số hóa ngày nay, đơi hậu hệ thống an ninh thông tin yếu gây nên khó ước tính Nhận thấy vấn đề an tồn thơng tin vấn đề quan trọng, đề tài “Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng”, củ thể nghiên cứu giải pháp “Sử dụng thuật tốn mã hóa nâng cao AES kết hợp với thiết bị phần cứng để mã hóa bảo mật liệu” thay sử dụng phần mềm thông thường Ưu điểm bật việc sử dụng phần cứng để mã hóa bảo mật liệu so với việc sử dụng phần mềm tính an toàn liệu cao Đối với liệu mã hóa cách để lấy thơng tin phải tìm khóa để giải mã Các giải pháp bảo mật phần mềm Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 thường khơng thực triệt để chúng lưu lại nhiều dấu vết ổ đĩa cứng thực mã hóa Kẻ xấu sử dụng phần mềm khác để thăm dò đánh cắp thơng tin liên quan đến q trình mã hóa nhằm phát khóa Khi thực mã hóa phần cứng, khả bị dò vết gần Mặc dù việc xây dựng thiết bị phần cứng phức tạp khó khăn nhiều so với việc phát triển phần mềm túy, với công nghệ đại ngày nay, đầu tư cách hợp lý hoàn tồn tạo thiết bị nhỏ gọn, tiện lợi hoàn toàn đáng tin cậy với mục đích bảo mật liệu Nội dung luận văn Xuất phát từ nội dung luận văn, báo cáo luận văn chia thành ba phần bản, Phần luận văn nghiên cứu lý thuyết mã hóa, Phần 2, xây dựng ứng dụng để cài đặt thuật toán nghiên cứu, Phần phần đánh giá kết hướng phát triển tiếp cho luận văn Về lý thuyết: Về lý thuyết nghiên cứu lý thuyết mã hóa bảo mật bao gồm: Mã hóa với khóa đối xứng (Symmetric-Key Encryption) Mã hóa với khóa bất đối xứng (Asymmetric-Key Encryption) Thuật tốn mã hóa AES (Advanded Encryption Standard) Trong đó, khn khổ luận văn này, thuật tốn thuật tốn mã hóa AES (Advanced Encryption Standard) tập trung nghiên cứu cài đặt ứng dụng phương pháp kết hợp với phần cứng Về xây dựng ứng dụng: a Nghiên cứu giao tiếp USB: Nghiên cứu thuật toán mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 thiết bị USB gửi trả lại Host phải tuân theo mô tả lớp thiết bị HID cách nghiêm ngặt g Trao đổi liệu với máy tính Việc trao đổi liệu thiết bị với máy tính thực hồn tồn theo kiểu Interrupt với Endpoint cấu hình Interrupt IN Endpoint cấu hình Interrupt OUT Hình 4.16 Nhiệm vụ khối giao tiếp USB [7] Kịch giao tiếp USB thể rõ gói tin khối thực gửi nhận Trong gói tin Token IN, OUT để yêu cầu truyền hay nhận liệu Host thực Khối UFI xử lý gói tin Handshake, nhận liệu từ Host đưa vào FIFO lấy liệu từ FIFO gửi đến Host Nhiệm vụ chương trình AT89C5131 đọc liệu từ FIFO để xử lý sau xử lý xong ghi vào FIFO để truyền Để truyền gói tin IN đến Host, chương trình thực sau: Bước 1: Chọn Endpoint (ở Endpoint 1) Bước 2: Cấu hình Endpoint (ở Interrupt IN) Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 101 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 Bước 3: Reset Endpoint để phép sử dụng đệm FIFO Endpoint Bước 4: Ghi liệu cần truyền vào FIFO Bước 5: Thiết lập cờ TXRDY (Transmit Ready) lên ‘1’ báo hiệu sẵn sàng truyền liệu, sau truyền xong, cờ TXRDY tự động xóa ‘0’ Set_Tx_Ready(); Bước 6: Chờ đến Host nhận liệu trả lời gói tin Handshake ACK, cờ TXCMPL tự động thiết lập lên ‘1’ (Tx_Complete()) Bước 7: Xóa cờ TXCMPL ‘0’ quay lại bước Hàm thực việc truyền liệu từ thiết bị đến máy tính khai báo sau: unsigned char* USB_Transmit (unsigned char, unsigned char*, unsigned char); Nhiệm vụ: Gửi khối liệu từ thiết bị đến máy tính Đối số: Đối số 1: Số hiệu Endpoint Đối số 2: Con trỏ trỏ đến đầu khối liệu cần truyền Đối số 3: Kích thước khối liệu cần truyền Trả về: Con trỏ trỏ vào đầu khối liệu cần truyền Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 102 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 Hình 4.17 Kịch truyền Bulk/Interrupt IN [7] Để nhận gói tin OUT từ Host, chương trình thực sau: Bước 1: Chọn Endpoint (ở Endpoint 2) Bước 2: Cấu hình Endpoint (ở Interrupt OUT) Bước 3: Reset Endpoint để phép sử dụng đệm FIFO Endpoint Bước 4: Chờ kiện Rx_Bank0(), kiện xảy nghĩa nhận gói tin OUT từ Host liệu đưa vào FIFO (của Endpoint 2) Bước 5: Đọc liệu nhận từ FIFO Bước 6: Xóa cờ RXOUTB0 ‘0’ báo hiệu nhận xong liệu sẵn sàng nhận tiếp liệu tiêp theo, quay lại bước Nghiên cứu thuật toán mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 103 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 Clear_Rx_Bank0() Hàm thực việc nhận liệu từ máy tính đến thiêt bị khai báo sau: unsigned char* USB_Receive (unsigned char, unsigned char*, unsigned char); Nhiệm vụ: Nhận khối liệu từ máy tính đến thiệt bị Đối số: Đối số 1: Số hiệu Endpoint Đối số 2: Con trỏ trỏ đến đầu đệm cần lưu liệu Đối số 3: Kích thước khối liệu nhận Trả về: Con trỏ trỏ vào đầu đệm để tiếp tục nhận liệu Hình 4.18 Kịch truyền Bulk/Interrupt OUT [7] Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 104 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 g Module mã hóa giải mã AES Hàm thực việc mã hóa AES khai báo sau: void AES_Encrypt (unsigned char *State, unsigned char *CipherKey); Nhiệm vụ: Mã hóa khối liệu 128 bit (16 bytes) Đối số: Đối số 1: Con trỏ trỏ đến đầu khối 16 bytes liệu cần mã hóa Đối số 2: Con trỏ trỏ đến đầu khối 16 bytes khóa mã hóa Trả về: Khơng có Hàm thực việc giải mã AES khai báo sau: void AES_Decrypt (unsigned char *State, unsigned char *CipherKey); Nhiệm vụ: Giải mã khối liệu 128 bit (16 bytes) Đối số: Đối số 1: Con trỏ trỏ đến đầu khối 16 bytes liệu cần giải mã Đối số 2: Con trỏ trỏ đến đầu khối 16 bytes khóa mã hóa Trả về: Khơng có Các bước mã hóa thực hàm: void KeySchedule(unsigned char *, unsigned char *); void AES_AddRoundKey(unsigned char *, unsigned char *); void AES_SubBytes_Enc(unsigned char *); void AES_ShiftRows_Enc(unsigned char *); void AES_MixColumns_Enc(unsigned char *); Các bước giải mã thực hàm: void KeySchedule(unsigned char *, unsigned char *); void AES_AddRoundKey(unsigned char *, unsigned char *); void AES_SubBytes_Dec(unsigned char *); void AES_ShiftRows_Dec(unsigned char *); void AES_MixColumns_Dec(unsigned char *); Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 105 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 PHẦN KẾT LUẬN VÀ ĐÁNH GIÁ KẾT QUẢ Kết đạt Sau thời gian tìm hiểu, nghiên cứu thực luận văn em đạt số kết sau đây: a Về sở lý thuyết: Đã nắm đặc tả giao tiếp USB, từ khái niệm đến giao thức kiểu truyền liệu Đã nắm lý thuyết mã hóa với kỹ thuật mã hóa với khóa đối xứng bất đối xứng, giải thuật mã hóa AES, RSA b Về thực chương trình: Xây dựng Hard Lock với phần mềm nhúng vi điều khiển AT89C5131 theo đặc tả lớp HID hệ điều hành Windows hỗ trợ, Plug-and-Play, mã hóa giải mã file liệu nhận từ máy tính Xây dựng ứng dụng máy tính với giao diện đẹp thân thiện, có khả tìm nhận biết thiết bị Hard Lock, giao tiếp tốt đảm bảo tính tồn vẹn liệu trao đổi liệu với Hard Lock c Đánh giá kết Trên tảng cở sở lý thuyết nắm vững, theo đánh giá thân, hệ thống em xây dựng trình bày có ưu điểm sau: Hoạt động giao tiếp USB thực trôi chảy tin cậy Khả bảo mật cao với nhiều bước xác thực người dùng giải thuật mã hóa tiên tiến Hard Lock Chương trình ứng dụng có giao diện đẹp mắt, thân thiện, dễ sử dụng Bên cạnh ưu điểm trên, hệ thống số khuyết điểm cần khắc phục: Nghiên cứu thuật toán mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 106 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 Tốc độ thực mã hóa giải mã chưa nhanh, nguyên nhân AES thuật toán phức tạp vi điều khiển AT89C5131 không đủ mạnh (tốc độ thực 2MIPS với tập lệnh bit) Chưa phát huy tối đa tốc độ giao tiếp USB (tốc độ lý tuởng Full Speed 12Mbps), nguyên nhân chưa xây dựng Driver chuyên dụng mà thay vào sử dụng thành phần hỗ trợ sẵn hệ điều hành Windows Hướng phát triển luận văn Với kết đạt ưu nhược điểm nêu trên, em dự kiến hướng phát triển luận văn sau: a Về phần mềm ứng dụng máy tính Xây dựng Driver riêng cho thiết bị, phát huy tốc độ truyền nhận liệu giao tiếp USB mức Full Speed Thiết kế module cho phép nhúng chương trình với ứng dụng gửi nhận email (ví dụ: MS Outlook) để gửi nhận liệu mã hóa qua mơi trường mạng b Về phần mềm nhúng vi điều khiển Nâng cấp thành phần thực giao tiếp USB để phù hợp với Driver Kết hợp thực kỹ thuật mã hóa khóa đối xứng với kỹ thuật mã hóa khóa bất đối xứng để nâng cao khả bảo mật c Về phần cứng Hard Lock Lựa chọn vi điều khiển vi xử lý hiệu cao, đủ mạnh để thực việc mã hóa, giải mã cách thực nhanh chóng Thiết kế mạch in, xây dựng thiết bị Hard Lock nhỏ gọn tiện lợi thay cho KIT phát triển có sẵn AT89C5131 Evaluation Board hãng Atmel Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 107 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 PHỤ LỤC Các phần bắt buộc phải có file *.INF Phần Version chứa thơng tin phiên Driver, người tạo file INF, lớp thiết bị, số ID nhận dạng thiết bị (GUID)… [Version] Signature="signature-name" [Class=class-name] [ClassGuid={nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}] [Provider=%INF-creator%] [LayoutFile=filename.inf [,filename.inf] ] [CatalogFile=filename.cat] [CatalogFile.nt=unique-filename.cat] DriverVer=mm/dd/yyyy[,x.y.v.z] [DriverPackageDisplayName=%driver-package-description%] [DriverPackageType=PackageType] Phần SourceDiskNames mô tả tên ổ đĩa chứa Driver chuẩn bị cài lên Windows [SourceDisksNames] diskid = disk-description[, [tag-or-cab-file],[unused,path][,flags]] Phần SourceDiskFiles cho biết tên file Driver (*.SYS) chuẩn bị cài lên Windows [SourceDisksFiles] filename = diskid[,[ subdir][, size]] Phần ClassInstall32 xác định khóa mà Windows phải thêm vào Registry khóa có cập nhật giá trị [ClassInstall32] AddReg=add-registry-section[, add-registry-section] Nghiên cứu thuật toán mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 108 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 [Copyfiles=@filename | file-list-section[, file-list-section] ] [DelReg=del-registry-section[, del-registry-section] ] [Delfiles=file-list section[, file-list-section] ] [Renfiles=file-list-section[, file-list-section] ] [BitReg=bit-registry-section[,bit-registry-section] ] [UpdateInis=update-ini-section[,update-ini-section] ] [UpdateIniFields=update-inifields-section[, update-inifields-section] ] [Ini2Reg=ini-to-registry-section[, ini-to-registry-section] ] Phần DestinationDirs xác định thư mục đích cho lệnh Copy, Delete hay Rename file trình cài đặt Driver [DestinationDirs] [DefaultDestDir=dirid[,subdir]] [file-list-section=dirid[,subdir]] Phần Manufacturer cho biết tên nhà sản xuất sản phẩm [Manufacturer] manufacturer-identifier [manufacturer-identifier] [manufacturer-identifier] Các hàm sử dụng cài đặt phần mềm máy tính [11] Hàm API HidD_GetHidGuid() (thư viện hid.dll) Nhiệm vụ: xác định số hiệu chung GUID (Globally Unique Identifier) thiết bị USB thuộc lớp HID Số hiệu sử dụng để tìm thiết bị HID hệ thống Đối số: trỏ trỏ đến cấu trúc GUID Trả về: không Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 109 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 Hàm API SetupDiGetClassDevs() (thư viện setupapi.dll) Nhiệm vụ: xác định tập thông tin liên quan tất thiết bị thuộc lớp thiết bị (ở lớp HID) Đối số: ClassGuid: trỏ trỏ đến cấu trúc GUID .Enumerator: đối số NULL, hàm trả thông tin tất thiết bị thuộc lớp xác định .hwndParent: handle chương trình sử dụng thông tin liên quan đến thiết bị (thường 0) .Flags: cờ điều khiển xác định cách thức trả tập thông tin thiết bị Trả về: handle tập thông tin tất thiết bị thuộc lớp xác định, NULL thơng tin Hàm API SetupDiEnumDeviceInterfaces() (thư viện setupapi.dll) Nhiệm vụ: lần gọi hàm ta nhận tập thông tin thiết bị thuộc lớp thiết bị lớp HID Để lấy thông tin số thiết bị ta gọi hàm nhiều lần Đối số: DeviceInfoSet: handle tập thông tin thiết bị xác định từ hàm SetupDiGetClassDevs() .DeviceInfoData: cấu trúc SP_DEVINFO_DATA, xác định ràng buộc để tập thông tin thiết bị yêu cầu (thường ràng buộc) .InterfaceClassGuid: trỏ trỏ đến cấu trúc GUID .MemberIndex: số tập thông tin tương ứng với thiết bị .DeviceInterfaceData: trỏ trỏ đến cấu trúc Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 110 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 SP_DEVICE_INTERFACE_DATA chứa thông tin thiết bị Trả về: True thành cơng, False có lỗi Hàm API SetupDiGetDeviceInterfaceDetail() (thư viện setupapi.dll) Nhiệm vụ: lấy đường dẫn xác định thiết bị HID Đối số: DeviceInfoSet: handle tập thông tin thiết bị xác định hàm SetupDiEnumDeviceInterfaces .DeviceInterfaceData: trỏ trỏ đến cấu trúc SP_DEVICE_INTERFACE_DATA chứa thông tin thiết bị .DeviceInterfaceDetailData: trỏ trỏ đến cấu trúc SP_DEVICE_INTERFACE_DETAIL_DATA (thường NULL khơng xác định) .DeviceInterfaceDetailDataSize: kích thước phần cố định DeviceInterfaceDetailData (thường - không xác định) .RequiredSize: trỏ trỏ đến biến chứa kích thước DeviceInterfaceDetailData, bao gồm phần cố định phần thay đổi (đường dẫn xác định thiết bị xâu có kích thước thay đổi) .DeviceInfoData: trỏ trỏ đến cấu trúc SP_DEVINFO_DATA (thường NULL) Trả về: True thành cơng, False có lỗi Hàm API SetupDiDestroyDeviceInfoList() (thư viện setupapi.dll) Nhiệm vụ: xóa thơng tin thiết bị sau thực xong phiên làm việc giải phóng nhớ có liên quan Đối số: handle tập thơng tin cần xóa Trả về: True thành công False có lỗi Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 111 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 Hàm API CreateFile() (thư viện kernel32.dll) Nhiệm vụ: lấy handle thiết bị ngoại vi nối ghép với hệ thống để truy cập đọc ghi thiết bị thơng qua đường dẫn xác định trước Đây hàm quan trọng để xác định quyền thao tác với thiết bị ngoại vi Đối số: lpFileName: trỏ trỏ đến xâu chứa tên đường dẫn xác định thiết bị, có từ hàm SetupDiGetDeviceInterfaceDetail() .dwDesiredAccess: xác định kiểu truy cập đến thiết bị ngoại vi (đọc hay ghi) .dwShareMode: xác định xem thiết bị có phép chia sẻ kiểu truy cập hay không .lpSecurityAttributes: trỏ trỏ đến cấu trúc SECURITY_ATTRIBUTES xác định xem handle trả sử dụng tiến trình hay khơng .dwCreationDisposition: xác định cách hành vi hàm trường hợp thiết bị xác định đường dẫn có thực hay khơng (có thể thiết bị vừa bị ngắt khỏi hệ thống hàm truy cập đến) .dwFlagsAndAttributes: xác định số thuộc tính thiết lập số cờ thực thao tác với thiét bị .hTemplateFile: thường - không sử dụng Trả về: handle để thao tác với thiết bị thành cơng, -1 có lỗi Hàm API CloseHandle() (thư viện kernel32.dll) Nhiệm vụ: giải phóng handle thiết bị sau thực xong thao tác truy cập Đối số: Nghiên cứu thuật toán mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 112 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 hObject: handle thiết bị Trả về: True thành công, False có lỗi b Trao đổi liệu với thiết bị Hàm ExchangeINOUTReports() Nhiệm vụ: trao đổi liệu máy tính với vi điều khiển thơng qua giao tiếp USB (theo kiểu Interrupt) với đơn vị liệu Report Hàm gọi từ Form chương trình Khi thực hiện, hàm gọi số hàm API liên quan như: WriteFile(), ReadFile(), CreateEvent(), WaitForSingleObject(), CancelIo() Để đọc Read ghi Write thiết bị Thao tác đọc ghi thiết bị hoạt động giống việc đọc ghi file bình thường hệ thống Đối số: không Trả về: không Hàm WriteFile() Nhiệm vụ: sử dụng hoạt động ghi file thông thường để truyền liệu đến thiết bị HID theo kiểu Interrupt dạng Report Đối số: hFile: handle cho phép ghi Write thiết bị .lpBuffer: trỏ trỏ đến đệm chứa liệu cần truyền đến thiết bị .nNumberOfBytesToWrite: số byte liệu cần truyền Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 113 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 lpNumberOfBytesWritten: trỏ xác định số byte liệu truyền .lpOverlapped: trỏ trỏ đến cấu trúc OVERLAPPED Trả về: True thành công, False có lỗi Hàm ReadFile() Nhiệm vụ: sử dụng hoạt động đọc file thông thường để nhận liệu từ thiết bị HID theo kiểu Interrupt dạng Report Tuy nhiên, với hoạt động đọc file, chương trình hồn tồn chủ động thao tác mình, cịn làm việc với thiết bị, chương trình phải thường xuyên thăm dò xem thời điểm, thiết bị có nhu cầu truyền liệu hay khơng Đối số: hFile: handle cho phép đọc (Read) thiết bị .lpBuffer: trỏ trỏ đến đệm chứa liệu nhận từ thiết bị .nNumberOfBytesToRead: số byte liệu cần nhận .lpNumberOfBytesRead: trỏ xác định số byte liệu nhận .lpOverlapped: trỏ trỏ đến cấu trúc OVERLAPPED Trả về: True thành công, False có lỗi Hàm CreateEvent() Nhiệm vụ: tạo đối tượng kiện làm đối số cho hàm WaitForSingleObject nhằm mục đích giúp chương trình chờ u cầu truyền liệu từ phía thiết bị cách “tích cực” (khơng phải liên tục kiểm tra xem thiết bị có nhu cầu truyền liệu khơng, mà thiết bị có nhu cầu truyền liệu kiện tự động kích hoạt) Đối số: Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 114 Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 SecurityAttributes: trỏ trỏ đến cấu trúc SECURITY_ATTRIBUTES bManualReset: hệ thống có tự động Reset trạng thái (signaled nonsignaled) sau tiến trình chờ đợi kết thúc hay không (True: không từ Reset, False: tự động Reset) .bInitialState: trạng thái khởi tạo (signaled nonsignaled) .lpName: tên kiện tạo (có thể xâu rỗng) Trả về: handle đối tượng thành cơng, -1 có lỗi Hàm WaitForSingleObject() Nhiệm vụ: tạo tiến trình để chờ đợi kiện xảy thay tiến trình chương trình phải liên tục thực kiểm tra kiện Sự kiện việc thiết bị HID có nhu cầu truyền liệu đến máy tính Đối số: hHandle: handle đối tượng kiện chờ đợi .dwMilliseconds: khoảng thời gian tối đa cho phép chờ đợi kiện (tính theo đơn vị ms) Trả về: 0h kiện xảy ra, 102h kiện không xảy (Timeout), giá trị khác có lỗi bất thường Hàm CancelIo() Nhiệm vụ: hủy bỏ hoạt động truy cập (đọc ghi) thiết bị ngoại vi Hàm gọi đến hoạt động đọc (hoặc ghi) thực thiết bị HID bị ngắt khỏi hệ thống cách không mong muốn Đối số: hFile: handle thiết bị thao tác Trả về: không Trên mô tả hàm thủ tục quan trọng sử dụng để xây dựng phần mềm ứng dụng máy tính Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng 115 ... tài ? ?Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng? ??, củ thể nghiên cứu giải pháp “Sử dụng thuật toán mã hóa nâng cao AES kết hợp với thiết bị phần cứng để mã hóa... đơn vị Trên thực tế, thuật toán mã khối sử dụng nhiều Các thuật toán khóa đối xứng tiếng sử dụng rộng rãi bao gồm: Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng. .. văn Nghiên cứu thuật tốn mã hóa nâng cao AES xây dựng ứng dụng dựa công nghệ nhúng Luận văn tốt nghiệp cao học CHXLTT&TT 2005 – 2007 PHẦN CƠ SỞ LÝ THUYẾT MÃ HÓA BẢO MẬT VÀ NGHIÊN CỨU THUẬT TỐN AES