Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
4,12 MB
Nội dung
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KỸ THUẬT MÁY TÍNH -🙞🙜🕮🙞🙜 - BÁO CÁO CUỐI KỲ MÔN THIẾT KẾ HỆ THỐNG SỐ HDL ĐỀ TÀI: HIỆN THỰC GIẢI THUẬT MÃ HÓA SHA-1 Lớp: CE213.M11 GVHD: TS Lâm Đức Khải Thực hiện: Nguyễn Đức Hy Phạm Trọng Huỳnh Tơ Quang Huấn TP HỒ CHÍ MINH, THÁNG NĂM 2022 MỤC LỤC Chương INTRODUCTION 1.1 Hash function overview 1.2 General structure of Hash function 1.3 Applications of data encryption 1.4 Encryption method 1.4.1 SHA algorithm 1.4.2 SHA-1 algorithm 1.5 Step-by-step of SHA-1 algorithm 1.5.1 Step 1: Message Padding 1.5.2 Step 2: Append length 1.5.3 Step 3: Divide input into 512 bits block 1.5.4 Step 4: Initialize chaining variable 1.5.5 Step 5: Process block 1.5.6 Step 6: Process each block 1.5.7 Step 7: Process output 1.6 SHA-1 algorithm review Chương SOFTWARE IMPLEMENTATION 10 2.1 Software Introduction 10 2.2 Algorithm flowchart of SHA-1 algorithm 11 2.3 SHA-1 algorithm testing results by software 12 Chương HARDWARE IMPLEMENTATION 13 i 3.1 Datapath Hardware architecture 13 3.1.1 Functional block 13 3.1.2 RTL design architecture 16 3.1.3 Sharing techniques 16 3.1.4 Pipeline techniques 17 3.2 Controller 19 3.3 Verilog HDL Design 19 3.4 Verification 20 3.4.1 Pre-synthesis verification vs Software implementation 20 3.4.2 Post-synthesis verification vs Software implementation 22 REFERENCES 24 ii DANH MỤC HÌNH Hnh 1-1 Q trình padding [5] Hnh 1-2 Quá trình append length [5] Hnh 1-3 Phân chia input [5] Hnh 1-4 Xử lý bên block [5] Hnh 1-5 Quá trình tính tốn [6] Hnh 1-6 So sánh giải thuật [7] Hnh 2-1 Website GDB Online 10 Hnh 2-2 Cửa số làm việc GDB Online 10 Hnh 2-3 Lưu đồ giải thuật SHA-1 11 Hnh 2-4 Kết phần mềm mơ thuật tốn SHA-1 12 Hnh 3-1 Length Counter Unit 13 Hnh 3-2 Padding Unit 13 Hnh 3-3 Create Block Unit 13 Hnh 3-4 Process Block Unit 13 Hnh 3-5 Counter Loop Unit 14 Hnh 3-6 w0 – w15 Unit 14 Hnh 3-7 w0 – w19 Unit 14 Hnh 3-8 Save w Stage 15 Hnh 3-9 Calculator Unit 15 Hnh 3-10 Chi tiết bên Calculator Unit 15 Hnh 3-11 Mơ hình thiết kế RTL [8] 16 Hnh 3-12 Sharing Register techniques 16 Hnh 3-13 Pipeline techniques 17 Hnh 3-14 Pipeline techniques 18 Hnh 3-15 Controller 19 Hnh 3-16 Verilog HDL design 20 iii Hnh 3-17 Đo số chu xong block 20 Hnh 3-18 File Input 21 Hnh 3-19 Kết mô Pre-Synthesis 21 Hnh 3-20 File Output 21 Hnh 3-21 Kết so sánh Pre-Synthesis với Software 21 Hnh 3-22 Kết mô Post-Synthesis 22 Hnh 3- File Output 22 Hnh 3-24 Đo chu kỳ xung clock 22 Hnh 3-25 Kết so sánh Post-Synthesis với Software 23 iv Chương INTRODUCTION 1.1 Hash function overview Thuật toán Cryptography đề cập đến ngành khoa học nghiên cứu mã hóa giải mã thơng tin Cụ thể nghiên cứu cách chuyển đổi thông tin từ dạng rõ (Clear text) sang dạng mờ (cipher text) ngược lại Một thuật toán Hashing hàm băm mật mã Đâу thuật toán toán học ánh хạ liệu có kích thước tùу ý thành hàm băm có độ dài cố định Nó thiết kế để mã hóa chiều ᴠà khơng thể mã hóa ngược lại Hàm băm lý tưởng cần có уếu tố ѕau: o Nó nhanh o Nó trả ᴠề phạm ᴠi lớn giá trị băm o Nó tạo giá trị đầu duу cho giá trị đầu ᴠào o Nó tạo giá trị băm khơng giống giá trị đầu ᴠào tương tự o Các giá trị băm tạo khơng có mẫu rõ ràng Để tạo hàm Hash th hàm hash phải thỏa mãn yêu cầu sau: o Đối số hàm hash tin có chiều dài o Giá trị hàm hash có chiều dài khơng đổi o Hàm H(x) cần phải có tính tốn hiệu quả, tức thuật toán Hash thực phần cứng phần mềm cần phải có cơng suất lớn Phải đảm bảo trình ký kiểm tra lên giá trị hàm hash nhanh so với trình ký kiểm tra thân tin o Cho y giá trị hàm hash, khó mặt tính tốn để tm x thỏa H(x)=y, tức hàm hash phải hàm chiều o Hàm hash hàm không va chạm, tức cho trước tin x, thực mặt tính tốn để tm x’x cho H(x)=H(x’) [1] 1.2 General structure of Hash function Cho trước thơng điệp M có độ dài Tùy theo thuật toán sử dụng, cần thêm thơng điệp bit để nhận thơng điệp có độ dài bội số chiều dài cố định cho trước để phục vụ cho việc tính tốn Chia thơng điệp thành khối có kích thước tức M = (M1, M2, …Ms) Gọi Hi trạng thái có kích thước n bit, n chiều dài giá trị hàm băm, F hàm nén thực thao tác trộn khối liệu với trạng thái hành: o Khởi tạo H0, vectơ khởi tạo o Thực trộn: Hi=F(Hi-1,Mi), i[1,s] [1] 1.3 Applications of data encryption Xác minh tệp thay đổi hay chưa: o Được thực cách tạo checksum tệp truyền sau lần đến đích Tệp truyền coi khơng thay đổi hai checksum giống hệt o Giả sử muốn tải xuống cập nhật phần mềm lớn, sau tải xuống để biết tệp tải xuống đúng? Điều xảy bit bị trình tải xuống tệp bạn có máy tính khơng xác dự định Việc áp dụng cập nhật cho chương trnh khơng xác theo cách mà nhà phát triển tạo gây cho bạn vấn đề lớn o Cách giải quyết: Giả sử trang web cung cấp checksum từ giải thuật SHA-1 “A9993E364706816ABA3E25717850C26C9CD0D89D” cho tệp bạn tải xuống Sau bạn sử dụng cơng cụ tạo checksum riêng để tạo checksum cách sử dụng hàm băm mật mã SHA-1 Nếu hai checksum trùng hai tệp tệp web tệp tải máy giống Nếu hai checksum khơng khớp có nghĩa thay tệp tải xuống thứ g độc hại mà bạn khơng biết [2] Mã xác thực thông báo HMAC o Dùng để tạo HMAC (Hashed Message Authentication Code) có dạng sau: HMAC = hashFunction(message + key) o Giả sử bạn muốn cho phép người dùng chọn "quên mật khẩu" gửi liên kết đặt lại mật gửi đến địa e-mail họ o Bạn tạo khóa bí mật mà bạn biết Hãy gọi K o Xây dựng chuỗi bao gồm địa e-mail người dùng, thời gian máy chủ, mã băm mật người dùng Hãy gọi tin nhắn M Tính HMAC M, sử dụng K làm khóa bí mật Tạo URL chứa đường dẫn đến trang đặt lại mật bạn dạng tham số, địa e-mail người dùng, thời gian HMAC tạo bước trước, ví dụ: https://www.example.com/forgotPassword?user=user%40example.com &time=20151205T131159Z&hmac=3902ed847ff28930b5f141abfa8b47 1681253673 o Khi người dùng nhận e-mail, họ theo dõi URL truy cập vào trang forgetPassword bạn Để phép đặt mật mới, người dùng phải trải qua trình xác minh Nếu tham số sau trải qua bước tính tốn đặc biệt mà không bị xáo trộn th th liên kết hợp lệ an toàn để người dùng đổi mật [2] 1.4 Encryption method 1.4.1 SHA algorithm SHA ᴠiết tắt Thuật tốn Haѕh an tồn (Secure Hash Algorithm) Phiên thuật toán SHA-1 đời năm 1995, ᴠà ѕau SHA-2 SHA-1 tạo hàm băm 160 bit (20 bуte) Trong định dạng thập lục phân, ѕố nguуên dài 40 chữ ѕố Nó thiết kế cho ứng dụng mật mã, ѕớm bị phát có lỗ hổng V phiên SHA khác xây dựng phát triển sau Cho đến ngày có nhiều phiên giải thuật SHA khác cho đời [3] 1.4.2 SHA-1 algorithm SHA-1 hàm băm mật mã thiết kế Cơ quan An ninh Quốc gia Hoa Kỳ NIST công bố thuật toán cải tiến SHA-0 vào năm 1995 Và sử dụng nhiều giao thức ứng dụng bảo mật, bao gồm TSL, SSL, SSH IPsec Khi message nhỏ 264 bit đưa vào, giá trị đầu có độ dài 160-bit từ việc thực thao tác thêm vào mã băm trước mã băm cuối Ba thuật tốn SHA có cấu trúc khác phân biệt là: SHA-0, SHA-1, SHA-2 SHA-1 gần tương tự SHA-0, sửa chữa lỗi đặc tả kỹ thuật gốc hàm băm SHA [3] 1.5 Step-by-step of SHA-1 algorithm Đầu vào: Chuỗi có độ dài tối đa 264 bits Đầu ra: Chuỗi mã hóa, có độ dài 160 bits 1.5.1 Step 1: Message Padding Tin nhắn tệp liệu ban đầu coi chuỗi bit (có thể biểu diễn dạng số HEXA) Mục đích việc đệm tin nhắn làm cho chuỗi sau đệm bội số 512 v bước sau thực việc chia chuỗi thành khối 512 bits Chúng trnh bày chi tiết bước làm Nhưng tóm lại, thêm bit “1” nhiều số “0” vào sau chuỗi gốc Còn số lượng số “0” th phải tính Và cuối thêm word(64 bits) vào cuối dãy, word biểu diễn cho độ dài tin nhắn gốc [4] Vậy công việc cần phải làm g? o Chúng ta cần phải tìm số tự nhiên n cho độ dài chuỗi gốc nhỏ n*512 - 64 bits (với n nhỏ để đạt điều kiện này) o Vậy số bit cần đệm là: 512*n - độ dài chuỗi gốc - 64 o Đệm thêm bit “1” vào sau chuỗi gốc bit cần đệm cịn lại “0” o Ví dụ: ▪ Chuỗi ban đầu có 1000 bits ▪ Áp dụng cơng thức trên: 1000 n = ▪ Vậy số bit cần đệm là: 512 * - 1000 - 64 = 472 bits Hnh 1-1 Quá trình padding [5] 1.5.2 Step 2: Append length Chúng ta quy đổi độ dài chuỗi liệu gốc(Ký hiệu L) thành dạng số hệ thập lục phân 64 bit sau thêm vào sau chuỗi thu từ bước [4] Ví dụ: o Độ dài chuỗi gốc 1000 bits o Đổi: 1000dec = 0x0000000000003E8hex o Thêm vào chuỗi có sau bước o Chuỗi cuối thu input cho việc hash Data to be hased Hnh 1-2 Quá trình append length [5] 1.5.3 Step 3: Divide input into 512 bits block Tại bước chia chuỗi input có bước thành khối nhỏ Mỗi khối có độ lớn 512 bits [4] Hnh 1-3 Phân chia input [5] 1.5.4 Step 4: Initialize chaining variable Chúng ta có chuỗi ban đầu khởi tạo sau: o H0: 0x67452301 2.2 Algorithm flowchart of SHA-1 algorithm Hnh 2-3 Lưu đồ giải thuật SHA-1 • Giải thích lưu đồ: Hnh 2.3 lưu đồ giải thuật cho thuật toán băm SHA-1, giải thuật cho việc xây dựng phần mềm để kiểm chứng thuật tốn ngơn ngữ lập trnh Perl Chúng xây dựng phần mềm với quy trnh thực thi tương tự bước thuật thoán thực thi Chương phần 1.5 Đầu vào message chuỗi cần mã hóa có độ dài không 264 bit Đầu kết tính tốn, mã băm 160 bit o Đầu tiên nhận message input o Tiếp theo tính độ dài message chuyển message từ dạng string sang dạng binary, tiếp đến hàm thực việc padding Ở tính số bit cần thêm vào thêm vào cuối message tạo thành chuỗi Data 11 o Từ chuỗi Data tạo chia thành Block cho khối có độ dài 512 bit số khối nguyên o Từ thực vòng lặp để duyệt khối, với khối xử lý cơng việc nhỏ hơn, thực 80 vịng lặp khối sau: ▪ Chúng ta chia Block 512 bit thành 16 block nhỏ hơn, block có độ lớn 32 bit đặt tên w0 → w15 ▪ Với khối từ 16 –> 79 tính với cơng thức: ▪ w(t) = (w(t-3) XOR w(t-8) XOR w(t-14) XOR w(t-16))