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

(LUẬN văn THẠC sĩ) mật mã dòng trong mật mã nhẹ và triển vọng trong iot luận văn ths máy tính 60 48 01

98 1 0

Đ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

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ LÊ THỊ LEN MẬT MÃ DÒNG TRONG MẬT MÃ NHẸ VÀ TRIỂN VỌNG TRONG IoT LUẬN VĂN THẠC SĨ Ngành: Hệ thống thông tin HÀ NỘI - 2017 TIEU LUAN MOI download : skknchat@gmail.com ii ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ LÊ THỊ LEN MẬT MÃ DÒNG TRONG MẬT MÃ NHẸ VÀ TRIỂN VỌNG TRONG IoT Ngành: Hệ thống thông tin Chuyên ngành: Hệ thống thông tin Mã số: 60480104 LUẬN VĂN THẠC SĨ Ngành: Hệ thống thông tin NGƯỜI HƯỚNG DẪN KHOA HỌC TS Lê Phê Đô TS Phùng Văn Ổn HÀ NỘI - 2017 TIEU LUAN MOI download : skknchat@gmail.com TÓM TẮT Tóm tắt: Cùng với phát triển tính tốn khắp nơi, hệ thống vạn vật kết nối (Internet of Things – IoT) ngày thu hút quan tâm chuyên gia nhà ứng dụng Vấn đề an ninh an tồn thơng tin hệ thống IoT với thiết bị nhỏ gọn, lực tính tốn thấp, trở thành chủ đề nóng Với khả tính tốn nhanh, an tồn chi phí thực thấp, mật mã nhẹ, tiêu biểu mật mã dòng, lựa chọn tối ưu cho thiết bị chuyên dụng IoT Luận văn nghiên cứu khả ứng dụng, điều kiện áp dụng yêu cầu số giải thuật mật mã nhẹ, đề xuất phương án sử dụng mật mã dòng mật mã nhẹ phù hợp với lớp toán cụ thể Đi vào thực nghiệm luận văn đề xuất sử dụng mã hóa đầu cuối với mật mã dòng Grain mật mã nhẹ mã xác thực thông báo với hàm băm nhẹ Keccak thiết bị Raspberry Pi để thu thập, điều khiển nhiệt độ, độ ẩm, cửa vào nhà – tiền đề cho nghiên cứu bảo mật mơ hình smart home nói riêng mơ hình IoT nói chung Từ khóa: vạn vật kết nối, mật mã dòng, Grain, mật mã nhẹ, mã xác thực thơng báo, mã hóa đầu cuối, hàm băm Keccak TIEU LUAN MOI download : skknchat@gmail.com ii 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 hồn thành luận văn thạc sĩ Với lịng biết ơn sâu sắc nhất, tơi xin gửi đến tiến sĩ Lê Phê Đô, Trường Đại học Công nghệ, ĐHQG Hà Nội, tiến sĩ Phùng Văn Ổn, Văn phịng Chính phủ tận tâm hướng dẫn qua buổi học lớp buổi nói chuyện, thảo luận đề tài 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ó hồn thiện Một lần nữa, tơi xin chân thành cảm ơn thầy Tôi xin bày tỏ lịng kính trọng biết ơn sâu sắc tới gia đình thầy, Trường Đại học Cơng nghệ, ĐHQG Hà Nội, anh chị nhóm Nghiên cứu KH & CN Mật Mã UET-CRYPT, Trường Đại học Công nghệ - ĐHQG HN bạn Đỗ Công Thành – học viên cao học Trường Đại học Công nghệ khóa K23, người dạy dỗ, giúp đỡ tơi suốt trình học tập thực luận văn Bước đầu vào thực tế, tìm hiểu lĩnh vực chun sâu An tồn thơng tin, kiến thức tơi cịn hạn chế 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 ý kiến đóng góp q báu thầy bạn để hồn thiện luận văn Tơi xin chân thành cảm ơn TIEU LUAN MOI download : skknchat@gmail.com iii LỜI CAM ĐOAN Tôi xin cam đoan kết đạt luận văn thực hướng dẫn Tiến sĩ Lê Phê Đô Tiến sĩ Phùng Văn Ổn Tất tham khảo từ nghiên cứu liên quan trích dẫn nguồn gốc cách rõ ràng từ danh mục tài liệu tham khảo luận văn Luận văn khơng chép tài liệu, cơng trình nghiên cứu người khác mà không rõ mặt tài liệu tham khảo Các kết thực tế luận văn tiến hành thực nghiệm Nếu phát có gian lận nào, tơi xin hồn tồn chịu trách nhiệm trước hội đồng, kết luận văn tốt nghiệp Hà Nội, ngày tháng năm Học viên thực Lê Thị Len TIEU LUAN MOI download : skknchat@gmail.com , iv MỤC LỤC LỜI CẢM ƠN ii LỜI CAM ĐOAN iii MỤC LỤC iv DANH MỤC HÌNH VẼ vii DANH MỤC BẢNG BIỂU ix DANH MỤC TỪ VIẾT TẮT x MỞ ĐẦU Chương MẬT MÃ DÒNG TRONG MẬT MÃ NHẸ 1.1 Tổng quan mật mã nhẹ 1.1.1 Một số khái niệm .4 1.1.2 Quá trình hình thành 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 Các mật mã nhẹ nguyên thủy 1.1.5 Ứng dụng mật mã nhẹ IoT .13 1.2 Mật mã dòng mật mã nhẹ .14 1.2.1 Khái niệm 14 1.2.2 Các thuật toán đặc trưng 17 1.2.3 Triển vọng mật mã dòng mật mã nhẹ IoT .20 Chương HỌ GRAIN .22 2.1 Lịch sử 22 2.2 Mô tả Grain 22 2.2.1 Grain V0 22 2.2.2 Grain V1 24 2.2.3 Grain 128 25 2.2.4 Grain-128a 26 2.2.5 Tạo khóa 27 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 v 2.3 Nguyên lý thiết kế 28 2.3.1 Tiêu chuẩn thiết kế 28 2.3.2 Tốc độ thực 29 2.3.3 Phức tạp phần cứng 30 2.4 Một số cải tiến hệ mật Grain 30 2.5 Phân tích Grain .31 2.5.1 So sánh phiên họ Grain .31 2.5.2 So sánh Grain với số hệ mã hóa nhẹ khác 34 2.5.3 Điểm yếu 37 Chương MÃ HÓA GRAIN TRÊN THIẾT BỊ RASPBERRY 40 3.1 Mơ tả tốn 40 3.2 Giải toán 40 3.1.1 Mã hóa đầu cuối 41 3.1.2 Mã xác thực thông báo 41 3.1.3 Hàm băm Keccak 43 3.1.4 Tạo trao đổi khóa 46 3.1.5 Mơ hình mã hóa xác thực .47 3.3 Môi trường liệu thực nghiệm 50 3.3.1 Môi trường lập trình 50 3.3.2 Môi trường thực nghiệm 50 3.3.3 Thiết lập phần cứng 50 3.4 Ứng dụng mã hóa đầu cuối mã xác thực giải toán 53 3.5 Kịch thực nghiệm 54 3.5.1 Raspberry lấy liệu từ sensor gửi đến client .54 3.5.2 Client gửi thông tin điều khiển đến Server .54 3.5.3 Tạo trao đổi khóa Server Client .55 3.6 Kết thu 56 (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 vi 3.7 Đánh giá 59 3.7.1 Đánh giá an toàn 59 3.7.2 Đánh giá hiệu 60 3.7.3 So sánh với giải thuật khác ứng dụng Raspberry 61 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 62 TÀI LIỆU THAM KHẢO .64 PHỤ LỤC 67 A RASPBERRY Pi 67 A.1 Raspberry gì? 67 A.2 Phần cứng 68 A.3 Hệ điều hành phần mềm 69 A.4 Ưu nhược điểm Raspbery .69 A5 Thông số kỹ thuật thiết bị Raspberry thực nghiệm luận văn 69 B SHT11 70 C TIÊU CHUẨN CỦA MẬT MÃ NHẸ .70 C.1 Tiêu chuẩn mã hóa ISO/IEC 71 C.2 Tiêu chuẩn mã hóa khu vực 72 C.3 Giao thức truyền thông 72 C.4 Thư viện định hướng IoT 72 D MÃ NGUỒN .73 D.1 Grain128.c .73 D.2 ecrypt-sync.c 76 D.3 Ví dụ kết mã hóa giải mã với Grain-128 .76 (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 vii DANH MỤC HÌNH VẼ Hình 1-1: Sơ đồ hệ mật mã Hình 1-2: Mã hố với hệ mật mã khóa đối xứng Hình 1-3: Mã hố với hệ mật mã bất đối xứng .5 Hình 1-4: Số lượng mật mã nhẹ phát triển nhà khoa học Hình 1-5: Ba nguyên lý thiết kế thuật toán mật mã nhẹ Hình 1-6: Các nguyên thủy mật mã nhẹ Hình 1-7: Ví dụ FCSR 18 Hình 1-8: Kiến trúc MICKEY 19 Hình 1-9: Kiến trúc SNOW 3G 20 Hình 1-10: Thiết kế Trivium 20 Hình 2-1: Kiến trúc Grain .23 Hình 2-2: Cơ chế xác thực Grain-128a 27 Hình 2-3: Q trình tạo khóa Grain 28 Hình 2-4: Thuật tốn Grain với tốc độ tăng gấp đơi .29 Hình 2-5: Lưu lượng tối đa mật mã dòng nhẹ với thiết kế 0.13 m Standard Cell CMOS 35 Hình 2-6: Hiệu suất giải thuật mật mã dòng nhẹ mạng Wireless-LAN 10Mbps 36 Hình 2-7: Hiệu suất cho ứng dụng RFID / WSN cấp thấp đồng hồ 100kHz 36 Hình 2-8: Điểm yếu giá trị IV Grain .38 Hình 3-1: Sơ đồ CBC-MAC [32] 42 Hình 3-2: Sơ đồ HMAC [32] 42 Hình 3-3: Kiến trúc Keccak nối tiếp 45 Hình 3-4: Các vịng xử lý liệu Keccak 45 Hình 3-5: So sánh hiệu suất Keccak triển khai song song nối tiếp 46 Hình 3-6: So sánh hiệu suất Keccak, MAME SHA-1 46 (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 viii Hình 3-7: Mơ hình mã hóa xác thực 48 Hình 3-8: Quá trình thực 49 Hình 3-9: Thiết kế SHT11 51 Hình 3-10: Kết nối SHT11 Raspberry .51 Hình 3-11: Kết nối công tắc từ (magnetic switch) giả lập cửa vào Raspberry .52 Hình 3-12: Kết nối Raspberry hệ thống đèn LED 52 Hình 3-13: Mơ hình ứng dụng .53 Hình 3-14: Hình ảnh thực tế Raspberry Pi cảm biến đèn LED 56 Hình 3-15: Giao diện client 56 Hình 3-16: Màn hình tăng nhiệt độ .57 Hình 3-17: Giả lập Raspberry điều khiển tăng nhiệt độ qua đèn LED đỏ 57 Hình 3-18: Màn hình giảm nhiệt độ 58 Hình 3-19: Giả lập Raspberry điều khiển giảm nhiệt độ qua đèn LED xanh .58 Hình 3-20: Màn hình mở cửa 59 Hình 3-21: Giả lập Raspberry điều khiển mở cửa qua đèn LED vàng 59 Hình 3-22: Hiệu thực mã hóa .60 Hình 3-23: Hiệu thực giải mã .60 (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 72 • Yêu cầu triển khai phần mềm Đặc biệt code size, kích thước RAM • Sự trưởng thành chế mã hóa • Tổng quát thuộc tính nhẹ yêu cầu cho hệ mật Ví dụ trọng lượng nhẹ khoảng cho phép C.2 Tiêu chuẩn mã hóa khu vực Tại USA, tiêu chuẩn mã hoá xử lý Viện Tiêu chuẩn Công nghệ Quốc gia (NIST) Tổ chức làm việc hướng tới tiêu chuẩn mật mã học nhẹ Ý định họ thỏa thuận số cấu hình tương ứng với thuật toán khác nhau, trường hợp sử dụng khó khăn Sau đó, thuật tốn khác chuẩn hóa để sử dụng cấu hình Ở châu Âu, dự án Nessie chọn số mật mã khối bao gồm AES MISTY1 Sự thất bại để tìm mật mã dòng tốt dẫn đến cạnh tranh eSTREAM Cuối cùng, danh mục mật mã dòng xuất Nó chia thành hai cấu hình, phần mềm định hướng phần cứng theo định hướng Một vài hệ mật mã dịng coi nhẹ: Trivium, Grain, Mickey Salsa20 Cuối cùng, tiêu chuẩn Nga mật mã khối chứa mật mã khối 64 bits Magma C.3 Giao thức truyền thông Một số giao thức truyền thông định vài hệ mật mã có u cầu nhẹ Ví dụ điện thoại di động không cần hệ mật mạnh mẽ máy tính Mạng GSM 3G xử lý truyền thông điện thoại di động yêu cầu cần có mã hóa A5/1, A5/2 hay A5/3… Các kết nối wifi bảo mật cách sử dụng WPA WPA2 Một số giao thức gần đề xuất để kết nối thiết bị IoT không dây với thiết bị khác Một đề xuất AES Điều với IEEE 802.15.4, sử dụng Zigbee C.4 Thư viện định hướng IoT Chúng ta xem xét hai thư viện dành cho thiết bị nhúng Đầu tiên Tinysec sử dụng ngăn xếp liên quan đến an ninh hệt điều hành TinyOS Nó sử dụng Skipjack chế độ CBC Thứ hai thư viện minisec dùng cho thiết bị nhúng không phục vụ TinyOS Thư viện bao gồm số thuật toán mã hóa AES, RC4, XTEA, Blowfish… số hàm băm MD5, SHA-1, SHA-256 SHA-512 (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 73 D MÃ NGUỒN Mục miêu tả mã nguồn thuật toán cốt lõi sử dụng chương – Grain-128 D.1 Grain128.c #include "ecrypt-sync.h" void ECRYPT_init(void){} /* * Function: grain_keystream * * Description: * Generates a new bit and updates the internal state of the cipher */ u8 grain_keystream( ECRYPT_ctx* ctx ) { u8 i, NBit, LBit, outbit; /* Calculate feedback and output bits */ // Output of Grain-128 outbit = ctx->NFSR[2]^ctx->NFSR[15]^ctx->NFSR[36]^ctx->NFSR[45]^ ctx->NFSR[64]^ctx->NFSR[73]^ctx->NFSR[89]^ctx->LFSR[93]^ (ctx->NFSR[12]&ctx->LFSR[8])^(ctx->LFSR[13]&ctx->LFSR[20])^ (ctx->NFSR[95]&ctx->LFSR[42])^(ctx->LFSR[60]&ctx->LFSR[79])^ (ctx->NFSR[12]&ctx->NFSR[95]&ctx->LFSR[95]); /* Output of NFSR function b_(i+128)= s_i+b_i+b_(i+26)+b_(i+56)+b_(i+91) +b_(i+96)+b_(i+3) b_(i+67)+b_(i+11) b_(i+13) +b_(i+17) b_(i+18)+b_(i+27) b_(i+59) +b_(i+40) b_(i+48)+b_(i+61) b_(i+65) +b_(i+68) b_(i+84) */ NBit=ctx->LFSR[0]^ctx->NFSR[0]^ctx->NFSR[26]^ctx->NFSR[56]^ctx->NFSR[91]^ctx>NFSR[96]^ (ctx->NFSR[3]&ctx->NFSR[67])^(ctx->NFSR[11]&ctx->NFSR[13])^ (ctx->NFSR[17]&ctx->NFSR[18])^(ctx->NFSR[27]&ctx->NFSR[59])^ (ctx->NFSR[40]&ctx->NFSR[48])^(ctx->NFSR[61]&ctx->NFSR[65])^ (ctx->NFSR[68]&ctx->NFSR[84]); // Output of LFSR function // s_(i+128)=s_i+s_(i+7)+s_(i+38)+s_(i+70)+s_(i+81)+s_(i+96) LBit=ctx->LFSR[0]^ctx->LFSR[7]^ctx->LFSR[38]^ctx->LFSR[70]^ctx->LFSR[81]^ctx>LFSR[96]; /* Update registers */ for (i = 1; i < (ctx->keysize); ++i) { ctx->NFSR[i-1] = ctx->NFSR[i]; ctx->LFSR[i-1] = ctx->LFSR[i]; } ctx->NFSR[(ctx->keysize)-1] = NBit; ctx->LFSR[(ctx->keysize)-1] = LBit; return outbit; } /* Functions for the ECRYPT API */ /* * @param: ctx (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 74 * * */ keysize ivsize Key size in bits IV size in bits void ECRYPT_keysetup( ECRYPT_ctx* ctx, const u8* key, u32 keysize, u32 ivsize ) { ctx->p_key = key; ctx->keysize = keysize; ctx->ivsize = ivsize; } /* * Function: ECRYPT_ivsetup * * Description * Load the key and perform initial clockings * * Assumptions * The key is 16 bytes and the IV is 12 bytes The * registers are loaded in the following way: * * NFSR[0] = lsb of key[0] * * NFSR[7] = msb of key[0] * * * NFSR[120] = lsb of key[16] * * NFSR[127] = msb of key[16] * LFSR[0] = lsb of IV[0] * * LFSR[7] = msb of IV[0] * * * LFSR[88] = lsb of IV[12] * * LFSR[95] = msb of IV[12] */ void ECRYPT_ivsetup ( ECRYPT_ctx* ctx, const u8* iv ) { u32 i, j; u8 outbit; /* Load registers */ for (i = 0; i ivsize)/8; ++i) { for (j = 0; j < 8; ++j) { ctx->NFSR[i*8 + j] = ((ctx->p_key[i] >> j) & 1); ctx->LFSR[i*8 + j] = ((iv[i] >> j) & 1); } } for (i = (ctx->ivsize)/8; i < (ctx->keysize)/8; ++i) { for (j = 0; j < 8; ++j) { ctx->NFSR[i*8 + j] = ((ctx->p_key[i] >> j) & 1); ctx->LFSR[i*8 + j] = 1; } } /* Do initial clockings */ for (i = 0; i < 256; ++i) { outbit = grain_keystream(ctx); ctx->LFSR[127] ^= outbit; (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01(LUAN.van.THAC.si).mat.ma.dong.trong.mat.ma.nhe.va.trien.vong.trong.iot.luan.van.ths.may.tinh.60.48.01 75 ctx->NFSR[127] ^= outbit; } } /* * Function: ECRYPT_keystream_bytes * * Synopsis * Generate keystream in bytes * * Assumptions * Bits are generated in order z0,z1,z2, * The bits are stored in a byte in order: * * lsb of keystream[0] = z0 * * msb of keystream[0] = z7 * * lsb of keystream[1] = z8 * * msb of keystream[1] = z15 * * * */ void ECRYPT_keystream_bytes( ECRYPT_ctx* ctx, u8* keystream, u32 msglen ) { u32 i, j; for (i = 0; i < msglen; ++i) { keystream[i] = 0; for (j = 0; j < 8; ++j) { keystream[i] |= (grain_keystream(ctx)

Ngày đăng: 17/12/2023, 02:14

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

TÀI LIỆU LIÊN QUAN