Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 75 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
75
Dung lượng
2,69 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ ĐỖ HUY YÊN NGHIÊN CỨU VỀ CÁC HỆ MÃ KHỐI TRONG MẬT MÃ NHẸ LUẬN VĂN THẠC SĨ Ngành: Kỹ thuật phần mềm HÀ NỘI - 2019 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ ĐỖ HUY YÊN NGHIÊN CỨU VỀ CÁC HỆ MÃ KHỐI TRONG MẬT MÃ NHẸ Ng nh : Kỹ thuật phần mềm Chuy n ng nh : Kỹ thuật phần mềm Mã số : 8480103.01 LUẬN VĂN THẠC SĨ Ngành: Kỹ thuật phần mềm NGƢỜI HƢỚNG D N KHO HỌC: TS HỒ VĂN C NH Hà Nội - 2019 i LỜI CẢM ƠN Tôi xin chân th nh cảm ơn Khoa Công nghệ thông tin, Trƣờng Đại học Công nghệ tạo điều kiện, môi trƣờng thuận lợi cho học vi n trình học tập, nghi n cứu v ho n th nh luận văn thạc sĩ Với lòng biết ơn sâu sắc nhất, xin gửi đến Tiến sĩ Hồ Văn Canh, Cục KTNV, Bộ Công an, định hƣớng phƣơng pháp nghi n cứu khoa học cho tôi, đồng thời cung cấp nhiều t i liệu v tạo điều kiện thuận lợi suốt trình học tập v nghi n cứu Nếu khơng có định hƣớng, lời dạy bảo thầy luận văn tơi khó ho n thiện đƣợc Một lần nữa, xin chân th nh cảm ơn thầy Tôi xin đƣợc gửi lời cảm ơn đến thầy, cô môn Kỹ thuật phần mềm v Khoa Công nghệ thông tin, Trƣờng Đại học Công nghệ - Đại học Quốc gia H Nội nhiệt tình giảng dạy v truyền đạt kiến thức, kinh nghiệm quý giá suốt thời gian học tập trƣờng Tôi xin đƣợc gửi lời cảm ơn đến bạn học vi n lớp K22-KTPM, ngƣời đồng h nh suốt khóa học v có nhiều góp ý bổ ích cho tơi Cảm ơn gia đình bạn bè quan tâm động vi n giúp tơi có nghị lực phấn đấu để ho n th nh tốt luận văn n y Bƣớc đầu v o thực tế, tìm hiểu lĩnh vực chuy n sâu An to n thơng tin, kiến thức tơi cịn hạn chế v cịn nhiều bỡ ngỡ Do vậy, khơng tránh khỏi thiếu sót luận văn Tơi mong nhận đƣợc ý kiến đóng góp quý báu thầy cô v bạn để ho n thiện luận văn Một lần xin gửi lời cảm ơn chân th nh v sâu sắc H Nội, Ng y tháng Học vi n thực Đ Hu Y n năm 2019 ii LỜI C M ĐO N Luận văn thạc sĩ đánh dấu th nh quả, kiến thức tơi tiếp thu đƣợc suốt q trình rèn luyện, học tập trƣờng Tôi xin cam đoan luận văn “Nghi n cứu hệ mã khối mật mã nhẹ” đƣợc ho n th nh q trình học tập v nghi n cứu tơi dƣới hƣớng dẫn TS Hồ Văn Canh Trong to n nội dung nghi n cứu luận văn, vấn đề đƣợc trình b y l tìm hiểu v nghi n cứu cá nhân tơi, trích dẫn nguồn t i liệu đƣợc đƣa phần t i liệu tham khảo Tôi xin cam đoan lời tr n l thật v chịu trách nhiệm trƣớc thầy cô v hội đồng bảo vệ luận văn thạc sĩ H nội, Ng y tháng Đ Hu Y n năm 2019 iii MỤC LỤC LỜI CẢM ƠN i LỜI CAM ĐOAN ii MỤC LỤC iii DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT v DANH MỤC HÌNH VẼ vi DANH MỤC CÁC BẢNG vii MỞ ĐẦU CHƢƠNG I: TỔNG QUAN VỀ MẬT MÃ KHỐI TRONG MẬT MÃ NHẸ 1.1 Mật mã nhẹ 1.1.1 Khái niệm mật mã nhẹ 1.1.2 Quá trình hình th nh v phát triển mật mã nhẹ 1.1.3 Nguy n lý thiết kế thuật toán mật mã nhẹ 1.1.4 Một số hệ mật mật mã nhẹ 1.1.5 Một số đặc trƣng mật mã nhẹ 13 1.2 Mật mã khối hạng nhẹ 14 CHƢƠNG II NHỮNG HỆ MẬT MÃ KHỐI HẠNG NHẸ ĐIỂN HÌNH 21 2.1 Những hệ mật mã khối hạng nhẹ điển hình 21 2.1.1 Hệ mật PRESENT 21 2.1.2 Hệ mật SIMON v SPECK 21 2.1.3 Hệ mật KATAN/KTANTAN 22 2.1.4 Hệ mật LED 23 2.1.5 Hệ mật TEA 23 2.1.6 Hệ mật KLEIN 24 2.1.7 Hệ mật HIGHT 24 2.1.8 Hệ mật SEA 25 2.1.9 Hệ mật NEOKEON 25 2.2 Hệ mật KLEIN 25 2.2.1 Ý tƣởng thiết kế 25 2.2.2 Quá trình mã hóa KLEIN 26 2.2.3 Tính tốn khóa 32 2.2.4 Điểm yếu KLEIN 33 iv 2.3 Hệ mật KATAN 34 2.3.1 Ý tƣởng thiết kế 34 2.3.2 Quá trình mã hóa KATAN 35 2.3.3 Tính tốn khóa 37 2.3.4 Điểm yếu KATAN 38 2.4 Hệ mật SIMON 38 2.4.1 Quá trình mã hóa 38 2.4.2 Tính tốn khóa 40 2.4.3 Điểm yếu Simon 41 2.5 Hệ mật Speck 42 2.5.1 Q trình mã hóa 42 2.5.2 Tính tốn khóa 43 2.5.3 Điểm yếu Speck 43 CHƢƠNG III: XÂY DỰNG CHƢƠNG TRÌNH MÃ HĨA VÀ GIẢI MÃ MÃ KHỐI TRONG MẬT MÃ NHẸ 45 3.1 Mơ hình hệ thống 45 3.2 Phân tích hệ thống 46 3.2.1 Mã hóa đầu cuối 46 3.2.2 Cảm biến nhiệt độ - độ ẩm DHT21 47 3.2.4 Phần mềm Station 51 3.2.5 Phần mềm Server 52 3.3 Kết thực 54 3.3.1 Quy trình hoạt động 54 3.3.2 Kết 56 3.4 Kết luận v hƣớng phát triển 59 3.4.1 Kết luận 59 3.4.2 Hƣớng phát triển 60 TÀI LIỆU THAM KHẢO 61 PHỤ LỤC 64 v DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT T viết tắt Thuật ngữ tiếng anh Thuật ngữ tiếng việt AES Advanced Encryption Standard Chuẩn mã hóa nâng cao Hệ mật AES DES Data Encryption Standard Chuẩn mã hóa liệu Hệ mật DES GE Gate equivalence Cổng tƣơng đƣơng đơn vị đo lƣờng cho phép xác định độ phức tạp độc lập công nghệ sản xuất mạch kỹ thuật số IEC International Electrotechnical Commission Ti u chuẩn International Electrotechnical Commission IoT Internet of thing Internet kết nối vạn vật ISO International Organization for Standardization Ti u chuẩn hóa International Organization for Standardization LFSR Linear feedback shift register Thanh ghi dịch hồi tuyến tính LSB Least Significant Bit Bit ngo i b n phải l bit có trọng số nhỏ MSB Most Significant Bit Bit ngo i b n trái l bit có trọng số lớn vi DANH MỤC HÌNH VẼ Hình 1.1: Sự thỏa hiệp thiết kế mật mã nhẹ [1]…………………………5 Hình 1.2: Các hệ mật mật mã nhẹ……………………………………… Hình 1.3: Đồ thị so sánh theo thông số bề mặt số mã khối hạng nhẹ [3] 19 Hình 1.4: Đồ thị so sánh thông số thông lƣợng số mã khối hạng nhẹ [3]………………………………………………………………………………19 Hình 1.5: Đồ thị so sánh lƣợng sử dụng mức cao số mã khối hạng nhẹ [3] 20 Hình 1.6: Đồ thị so sánh lƣợng sử dụng mức thấp số mã khối hạng nhẹ [3] 20 Hình 2.1: Quy trình mã hóa KLEIN [9] 27 Hình 2.2: Phép biến đổi vịng mã hóa KLEIN [9] 28 Hình 2.3: RotateNibbles KLEIN [9] 31 Hình 2.4: Thuật tốn tính tốn khóa KLEIN có độ d i khóa 64 bit [9] 34 Hình 2.5: Q trình mã hóa họ mật mã Katan [16] 37 Hình 2.6: Q trình mã hóa hệ mật Simon [8] 39 Hình 2.7: Mở rộng khóa simon với m=2, m=3 v m=4 [8] 41 Hình 2.8: H m trịn Speck( x2 i 1, x2 i ) biểu thị mật mã sau bƣớc mã hóa)[8] 43 Hình 2.9: Khóa Speck [8] 43 Hình 3.1: Mơ hình hệ thống 46 Hình 3.2: Cảm biến nhiệt độ - độ ẩm DHT21 47 Hình 3.3: Kết nối cảm biến DHT21 với Arduino 48 Hình 3.4: Bo mạch Arduino Uno 48 Hình 3.5: Thƣ viện giao tiếp với cảm biến 51 Hình 3.6: Thƣ viện mã hóa v giải mã thơng qua thuật tốn Speck 51 Hình 3.7: Giao diện phần mềm Station 52 Hình 3.8: Giao diện phần mềm Server 53 Hình 3.9: Chọn chế độ hoạt động 54 Hình 3.10: Kết nối Arduino với cảm biến nhiệt độ - độ ẩm DHT21 54 Hình 3.11: Kết nối với phần mềm Server 55 Hình 3.12: Chọn cổng COM kết nối với Arduino 55 Hình 3.13: Phần mềm Station chế độ mã hóa 56 Hình 3.14: Phần mềm Server chế độ Mã hóa 56 Hình 3.15: Tạo tín hiệu điều khiển Bật hệ thống l m mát 57 Hình 3.16: Tín hiệu trả t Server đƣợc mã hóa 57 Hình 3.17: Đèn Led sáng báo bật hệ thống 58 Hình 3.18: Giao diện phần mềm Station chế độ khơng mã hóa 58 Hình 3.19: Phần mềm Server chế độ khơng mã hóa 59 Hình 3.20: Thời gian thực mã hóa v giải mã (ms) 60 vii DANH MỤC CÁC BẢNG Bảng 1.1: Hiệu phần cứng số thuật toán mật mã nhẹ Bảng 1.2: Đặc điểm, ƣu điểm, nhƣợc điểm v ứng dụng hệ mật mã nhẹ 12 Bảng 1.3: Một số thông số hệ mật mã nhẹ hệ thống 13 Bảng 1.4: Một số hệ mật mã khối hạng nhẹ ti u biểu 15 Bảng 1.5: Thông tin phần cứng số mã khối hạng nhẹ (kiến trúc khơng kiểm sốt) [3] 16 Bảng 1.6: Thông tin phần cứng số mã khối hạng nhẹ( kiến trúc tròn) [3] 17 Bảng 1.7: Thông tin phần cứng số mã khối hạng nhẹ(kiến trúc nối tiếp)[3] 18 Bảng 2.1: S-box bit sử dụng KLEIN [9] 27 Bảng 2.2: Sự phân bố vi phân S-box KLEIN [9] 30 Bảng 2.3: Bảng tƣơng quan đầu v o-đầu S-box KLEIN [9] 31 Bảng 2.4: Các tham số cho họ mật mã Katan [16] 36 Bảng 2.5: Các tham số mật mã Simon[8] 39 Bảng 2.6: Các tham số mật mã Speck [8] 44 MỞ ĐẦU Cơ sở khoa học thực tiễn đề tài: Sự phát triển khoa học kỹ thuật dẫn đến xuất nhiều thiết bị có lực tính tốn lớn nhƣ máy tính cá nhân có vi xử lý 64 bit, tốc độ 3-4 GHz, - GB RAM… Nhƣng, nhu cầu sử dụng thiết bị có kích cỡ nhỏ, khả tính tốn thấp phục vụ công việc v giải b i tốn chuy n dụng, đơn giản, điển hình nhƣ thẻ thông minh (smartcard), vi điều khiển (microcontroller) ng y c ng tăng Trong đó, mã khối truyền thống có khó sử dụng đa cho kiểu thiết bị (bộ vi xử lý), phức tạp, sử dụng nhiều t i nguy n, lƣợng Một mã pháp an to n truyền thống khó c i đặt hiệu tr n thiết bị có lực v t i nguy n hạn chế (nhƣ vi điều khiển bit, bit, có kích cỡ RAM nhỏ, tần số thấp) Vì vậy, nhu cầu cần có hệ mật mã (mã khóa cơng khai, mã khối, mã dòng, h m băm ) ri ng, áp dụng cho thiết bị, hệ thống bị hạn chế (thông tin cần phải bảo vệ không mật) v đƣợc đặt năm qua Mật mã nhẹ l mật mã phù hợp với c i đặt môi trƣờng bị hạn chế Những hạn chế dựa tr n đánh giá diện tích chip (chip area), lƣợng ti u thụ (energy consumption), kích cỡ mã nguồn chƣơng trình (program code size), kích cỡ RAM, băng thông (communication bandwidth) v thời gian thực thi (execution time) Trong trƣờng hợp n y, sử dụng thuật toán mã khối hạng nhẹ l phù hợp v cần đƣợc quan tâm nghi n cứu Trong năm gần đây, dễ d ng bắt gặp thuật ngữ IoT (Internet of Thing) nơi n o “Internet of Things” l thuật ngữ để vật đƣợc kết nối internet v có khả trao đổi liệu Đặc điểm chung thiết bị IoT l có kích thƣớc nhỏ gọn v có khả ti u thụ điện thấp Phần lớn thiết bị IoT gặp phải l vấn đề bảo mật Thuật ngữ “Lightweight cryptography” đƣợc đƣa thảo luận nhiều hội nghị Thuật ngữ để hệ mật nhẹ có khả c i đặt tr n thiết bị giới hạn lƣơng ti u thụ v khả lƣu trữ Chính mật mã nhẹ phù hợp để áp dụng v bảo mật cho thiết bị IoT Do phát triển nhanh v mạnh “Internet og Things” l nhân tố để thúc đẩy phát triển mật mã nhẹ B n cạnh có nhiều thiết bị giới hạn lƣợng ti u thụ v khả lƣu trữ cần đến bảo mật ví dụ nhƣ thiết bị 52 Nhận liệu mã hóa khơng mã hóa t Arduino thông qua kết nối RS232 Hiển thị liệu tr n phần mềm Gửi liệu nhận đƣợc t Arduino tới Server thông qua kết nối TCP Nhận liệu điều khiển đƣợc mã hóa không t Server trả thông qua kết nối TCP Trả liệu cho bo mạch Arduino thơng qua kết nối RS232 Hình 3.7: Giao diện phần mềm Station 3.2.5 Phần mềm Server Phần mềm đƣợc c i đặt tr n máy Server, phục vụ ngƣời vận h nh máy server theo dõi đƣợc thơng tin tức thời nhiệt độ, qua định « Bật » « Tắt » hệ thống l m mát cho tịa nh thơng minh Phần mềm đƣợc viết tr n ngôn ngữ C#, sử dụng thƣ viện « SimpleTCP » để tạo kết nối v truyền nhận liệu với phần mềm Station, thƣ viện « SimonSpeckNet » để giải mã liệu nhận đƣợc t Arduino, đồng thời mã hóa liệu trả cho phần mềm Station Chức phần mềm server: Phần mềm có chế độ Mã hóa Khơng mã hóa Nhận liệu t phần mềm Station thông qua kết nối TCP Hiển thị liệu nhận đƣợc 53 Giải mã liệu nhận đƣợc t phần mềm Station Hiển thị liệu giải mã Điều khiển bật tắt hệ thống l m mát Mã hóa khơng mã hóa tín hiệu điều khiển bật tắt hệ thống, sau gửi tín hiệu xuống cho phần mềm Station Hình 3.8: Giao diện phần mềm Server Hệ thống sử dụng thuật tốn Speck để mã hóa v giải mã liệu trƣớc truyền Đây l thuật toán mã hóa đối xứng, tr n Arduino v tr n phần mềm Server cần đƣợc lƣu trữ khóa dƣới dạng byte Khóa đƣợc lƣu trữ tr n phần mềm Arduino: byte key[16] = {0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08,0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00}; Khóa đƣợc lƣu trữ tr n phần mềm Server: Privatereadonlybyte[] _key128128 =newbyte[16] { 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 }; 54 3.3 Kết thực 3.3.1 Qu trình hoạt động Bƣớc : Khởi động phần mềm Server Chọn chế độ hoạt động l Mã hóa Khơng Mã hóa Hình 3.9: Chọn chế độ hoạt động Bƣớc : Khởi động Arduino, chọn chế độ Mã hóa Khơng Mã hóa Hình 3.10: Kết nối Arduino với cảm biến nhiệt độ - độ ẩm DHT21 55 Bƣớc : Khởi động phần mềm Station Nhập địa Server, sau nhấn v o Kết nối với Server Hình 3.11: Kết nối với phần mềm Server Chọn cổng COM kết nối với Arduino, sau nhấn Kết nối Hình 3.12: Chọn cổng COM kết nối với Arduino 56 3.3.2 Kết Chế độ Mã hóa Hình 3.13: Phần mềm Station chế độ mã hóa Ở chế độ mã hóa chiều, thơng tin t Arduino gửi l n đƣợc mã hóa khung Dữ liệu t Arduino, thông tin điều khiển Tắt đèn t Server đƣợc mã hóa, tất sử dụng chung khóa 16 byte Hình 3.14: Phần mềm Server chế độ Mã hóa 57 Dựa v o liệu giải mã đƣợc, ngƣời vận h nh biết đƣợc tình trạng nhiệt độ nh , sau định bật tắt hệ thống l m mát tƣơng ứng Hệ thống ho n to n tự động bật tắt dựa v o điều kiện nhiệt độ, thay cho thao tác ngƣời vận h nh Hình 3.15: Tạo tín hiệu điều khiển Bật hệ thống l m mát Hình 3.16: Tín hiệu trả t Server đƣợc mã hóa 58 Hình 3.17: Đèn Led sáng báo bật hệ thống Đèn Led giả lập cho hoạt động hệ thống l m mát Khi ngƣời vận h nh gửi tín hiệu bật hệ thống, đèn Led bật sáng tƣơng ứng Chế độ Không mã hóa: Hình 3.18: Giao diện phần mềm Station chế độ khơng mã hóa Ở chế độ khơng mã hóa, liệu truyền qua phần mềm Station đƣợc hiển thị rõ r ng, liệu điều khiển t Server đƣợc nhìn thấy rõ r ng 59 Hình 3.19: Phần mềm Server chế độ khơng mã hóa 3.4 Kết luận hƣớng phát triển 3.4.1 Kết luận Dựa tr n kết thu đƣợc chƣơng n y, thấy đƣợc kết hệ thống hoạt động chế độ Mã hóa v Khơng mã hóa Với chế độ khơng mã hóa, tất gói tin đƣợc truyền t bo mạch Arduino, phần mềm Server l chuỗi thông tin rõ r ng, kẻ công mạng lấy đƣợc chuỗi thông tin n y, chúng ho n to n lấy quyền kiểm sốt hệ thống giả lập gửi tập thông tin tƣơng ứng với tín hiệu bật tắt hệ thống tới bo mạch Arduino Với chế độ mã hóa, tất gói tin đƣợc mã hóa trƣớc truyền qua mơi trƣờng Internet Vì kẻ cơng có bắt đƣợc gói tin n y, chúng khơng thể n o giả lập đƣợc gói tin mã hóa tƣơng ứng để cơng hệ thống điều khiển (bởi chúng khơng biết đƣợc thuật tốn mã hóa hệ thống sử dụng, nhƣ khơng nắm đƣợc khóa để mã hóa nhƣ giải mã hệ thống) Qua đó, ta thấy đƣợc hệ thống đảm bảo an to n thông tin, tăng độ tin cậy môi trƣờng Internet Tốc độ thực mã hóa đầu cuối v xác thực tr n thiết bị Arduino tƣơng đối nhanh, đảm bảo tính thời gian thực q trình truyền nhận liệu thiết bị Arduino với clients Hiệu luận văn đƣợc đo đạc v lấy giá trị trung bình sau 20 lần thực nghiệm 60 Hình 3.20: Thời gian thực mã hóa v giải mã (ms) 3.4.2 Hƣớng phát triển Chúng ta sống thời đại cách mạng công nghiệp lần thứ ( Industry 4.0), xu hƣớng hệ thống đƣợc kết nối Internet (Internet of Things) l xu hƣớng chủ đạo tƣơng lai Một vấn đề quan trọng Internet vạn vật cần đƣợc quan tâm l an to n thơng tin Các hệ thống mã hóa, giải mã việc truyền tin máy tính với đƣợc phát triển t lâu, nhi n, việc bảo đảm an to n thông tin cho hệ thống mạch nhúng, mạch điều khiển tham gia trực tiếp v o Internet vạn vật đƣợc trọng thời gian gần Các thuật tốn mã hóa nhẹ phù hợp cho bo mạch điều khiển với t i nguy n (RAM, tốc độ chip, nhớ …) hạn chế, v a đảm bảo an to n thông tin, v a đảm bảo tốc độ đáp ứng (thời gian mã hóa ngắn) Trong khn khổ luận văn n y, tơi ứng dụng thuật tốn mã hóa Speck – thuật tốn mã hóa khối hạng nhẹ cho hệ thống giám sát, điều khiển thiết bị l m mát cho nh thông minh Tôi xây dựng mô hình mơ với bo mạch Arduino, máy tính trạm v máy tính Server Tƣơng lai, ho n to n ứng dụng mơ hình n y v o thực tế dự án nh thông minh độ xác thử nghiệm nhƣ tốc độ đáp ứng bo mạch Arduino Tiếp theo, ứng dụng thuật tốn mã hóa nhẹ khác nhƣ Simon, Klein, Katan … để so sánh tốc độ v độ tin cậy thuật toán Lấy kết t mơ hình n y, ứng dụng sang nhiều mơ hình khác hƣớng tới cách mạng công nghiệp 4.0 nhƣ: Hệ thống cảnh báo cháy, báo khói tịa nh ; hệ thống cảnh báo cháy r ng dựa tr n thông số nhiệt độ, độ ẩm; hệ thống tƣới ti u nông nghiệp … Tất ứng dụng tr n phải đối mặt với vấn đề an to n thông tin giám sát, điều khiển t xa qua môi trƣờng Internet 61 TÀI LIỆU THAM KHẢO [1] Nguyễn Bùi Cƣơng, “Một số kết nghiên cứu mật mã khối hạng nhẹ” Tạp chí nghi n cứu Khoa học v Công nghệ lĩnh vực An to n thông tin, 1/2005 [2] Wenling Wu, Shuang Wu, Lei Zhang, Jian Zou, and Le Dong“LHash: A Lightweight Hash Function (Full Version)” [3] Naofumi Homma and WG members“CRYPTREC Cryptographic Technology Guideline (Lightweight Cryptography)”, 2017 [4] International standard ISO IEC 29192, “Information Technology Security Techniques - Lightweight cryptography” [5] Alex Biryukov and Léo Perrin - “State of the Art in Lightweight Symmetric Cryptography”, 2016 [6] A Bogdanov, L.R Knudsen, G Leander, C Paar, A Poschmann, M.J.B Robshaw, Y Seurin and C Vikkelsoe “PRESENT: An Ultra-Lightweight Block Cipher” [7] Jian Guo, Thomas Peyrin, Axel Poschmann, and Matt Robshaw“The LED Block Cipher”Institute for Infocomm Research, Singapore, 2011 [8] Michael Appel , Andreas Bossert, Steven Cooper, Tobias Kuòmaul, Johannes Lăoffler, Christof Pauer, and Alexander Wiesmaier, “Block ciphers for the IoT – SIMON, SPECK, KATAN, LED, TEA, PRESENT, and SEA compared” [9] Zheng Gong , Svetla Nikova and Yee Wei Law, “ KLEIN: A New Family of Lightweight Block Ciphers” Workshop on RFID Security and Privacy (RFIDSec) 2012, LNCS, vol 7055, pp 1–18 Springer, 2012 [10] Deukjo Hong, Jaechul Sung, Seokhie Hong, Jongin Lim, Sangjin Lee, Bonseok Koo, Changhoon Lee, Donghoon Chang, Jaesang Lee, Kitae Jeong, Hyun Kim, Jongsung Kim, and Seongtaek Chee HIGHT: A New Block Cipher Suitable for Low-Resource Device In Louis Goubin and Mitsuru Matsui, editors, CHES, volume 4249 of Lecture Notes in Computer Science, pages 46– 59 Springer, 2006 62 [11] Joan Daemen, Michaăel Peeters, Gilles Van Assche, Vincent Rijmen (2000) Nessie Proposal, Noekeon, First Open Nessie Workshop [12] J Daemen and V Rijmen The Design of Rijndael: AES - The Advanced Encryption Standard Springer-Verlag, 2002 [13] F Abed, C Forler, E List, S Lucks, and J Wenzel “Biclique Cryptanalysis Of PRESENT, LED, And KLEIN” Cryptology ePrint Archive, Report 2012/591, 2012 [14] V Lallemand and M Naya-Plasencia “Cryptanalysis of KLEIN” International Workshop on Fast Software Encryption (FSE) 2014, LNCS, vol 8540, pp 451–470 Springer, 2015 [15] L R Knudsen “Truncated and Higher Order Differentials” International Workshop on Fast Software Encryption (FSE) 1994, LNCS, vol 1008, pp 196–211 Springer, 1994 [16] Christophe De Cannière, Orr Dunkelman and Miroslav Knezevic, “KATAN & KTANTAN — A Family of Small and Efficient Hardware-Oriented Block Ciphers”, [17] Martin R Albrecht and Gregor Leander An all-in-one approach to differential cryptanalysis for small block ciphers In Selected Areas in Cryptography, pages 1–15 Springer-Verlag, 2013 [18] Willi Meier Simon Knellwolf and Mar´a Naya-Plasencia Conditional differential cryptanalysis of trivium and katan In Selected Areas in Cryptography, pages 200– 212 Springer-Verlag, 2012 [19] Thomas Fuhr and Brice Minaud Match box meet in the middle attack against katan In Fast Software Encryption, pages 61–81 Springer-Verlag, 2015 [20] Gregory V Bard Nicolas Courtois Jorge Nakahara Jr Pouyan Sepehrdad and Bingsheng Zhang Algebraic, aida/cube and side channel analysis of katan family of block ciphers In Progress in Cryptology INDOCRYPT, pages 176–196 SpringerVerlag, 2010 [21] Frank-Michael Quedenfeld Modellbildung in der algebraischen kryptoanalyse 2015 63 [22] Ray Beaulieu, Douglas Shors, Jason Smith, Stefan Treatman-Clark, Bryan Weeks and Louis Wingers, “The Simon and Speck Families of Lightweight Block Ciphers”, 2013 [23] Hoda A Alkhzaimi, Martin M Lauridsen Cryptanalysis of the SIMON Family of Block Ciphers IACR Cryptology ePrint Archive 2013, 543, 2013 [24] Farzaneh Abed, Eik List, Stefan Lucks, Jakob Wenzel Differential Cryptanalysis of Reduced-Round Simon and SPECK FSE 2014, LNCS 8540, pp 525-545 Springer Berlin Heidelberg, 2015 [25] Farzaneh Abed, Eik List, Stefan Lucks, Jakob Wenzel Differential and Linear Cryptanalysis of Reduced-Round Simon IACR Cryptology ePrint Archive, 2013/526, 2013 [26] Javad Alizadeh, Hoda A Alkhzaimi, Mohammad Reza Aref, Nasour Begheri, Paraveen Gauravaram, Abhishek Kumar, Martin M Lauridsen, Somitra Kumar Sanadhya Cryptanalysis of SIMON Variants with Connections In RFIDsec‟14, LNCS, 8651, pp.1-20 Springer-Heidelberg, 2014 [27] I Dinu Improved differential cryptanalysis of round-reduced speck In Selected Areas in Cryptography, pages 147{164 Springer-Verlag, 2014 64 PHỤ LỤC Một số code thực chƣơng trình: Các hàm phục vụ giao tiếp Arduino cảm biến class DHT { public: DHT(uint8_t pin, uint8_t type, uint8_t count=6); void begin(uint8_t usec=55); float readTemperature(bool S=false, bool force=false); float convertCtoF(float); float convertFtoC(float); float computeHeatIndex(bool isFahrenheit=true); float computeHeatIndex(float temperature, float percentHumidity, bool isFahrenheit=true); float readHumidity(bool force=false); bool read(bool force=false); private: uint8_t data[5]; uint8_t _pin, _type; #ifdef AVR // Use direct GPIO access on an 8-bit AVR so keep track of the port and bitmask // for the digital pin connected to the DHT Other platforms will use digitalRead uint8_t _bit, _port; #endif uint32_t _lastreadtime, _maxcycles; bool _lastresult; uint8_t pullTime; // Time (in usec) to pull up data line before reading uint32_t expectPulse(bool level); }; Thuật tốn mã hóa: Mã hóa khối chung: class BlockCipher { public: 65 BlockCipher(); virtual ~BlockCipher(); virtual size_t blockSize() const = 0; virtual size_t keySize() const = 0; virtual bool setKey(const uint8_t *key, size_t len) = 0; virtual void encryptBlock(uint8_t *output, const uint8_t *input) = 0; virtual void decryptBlock(uint8_t *output, const uint8_t *input) = 0; virtual void clear() = 0; }; Các h m mã hóa, giải mã Speck: #ifndef CRYPTO_SPECK_H #define CRYPTO_SPECK_H #include "BlockCipher.h" class Speck : public BlockCipher { public: Speck(); virtual ~Speck(); size_t blockSize() const; size_t keySize() const; bool setKey(const uint8_t *key, size_t len); void encryptBlock(uint8_t *output, const uint8_t *input); void decryptBlock(uint8_t *output, const uint8_t *input); void clear(); private: uint64_t k[34]; uint8_t rounds; }; #endif Thuật tốn mã hóa giải mã với thư viện Speck Server Các h m khởi tạo: 66 Các hãm mã hóa, giải mã: Các hàm thư viện SimpleTCP Các h m khởi tạo Server Các h m khởi tạo Client ( phần mềm Station) Các h m truyền nhận liệu Station v Server ... mật mã nhẹ, giới thiệu số hệ mật mật mã nhẹ, số đặc trƣng mật mã nhẹ v giới thiệu mật mã khối CHƢƠNG II: NHỮNG HỆ MẬT MÃ KHỐI HẠNG NHẸ ĐIỂN HÌNH Chƣơng n y luận văn, trình b y sơ lƣợc số mã khối. .. độ tin cậy hệ thống 4 CHƢƠNG I: TỔNG QUAN VỀ MẬT MÃ KHỐI TRONG MẬT MÃ NHẸ 1.1 Mật mã nhẹ 1.1.1 Khái niệm mật mã nhẹ Khơng có ranh giới rõ r ng n o để phân biệt nhẹ hệ mật với hệ mật thông thƣờng... áp dụng thuật toán mã khối hạng nhẹ Nội dung đề tài vấn đề cần giải quyết: Hướng nghiên cứu - Nghi n cứu cách tổng quan mật mã khối mật mã nhẹ - Nghi n cứu hệ mật mã khối hạng nhẹ điển hình - Xây