Báo cáo đồ án cuối kỳ môn thiết kế hệ thống số hdl

19 2 0
Báo cáo đồ án cuối kỳ môn thiết kế hệ thống số hdl

Đ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

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KỸ THUẬT MÁY TÍNH - BÁO CÁO ĐỒ ÁN CUỐI KỲ MÔN THIẾT KẾ HỆ THỐNG SỐ HDL Lớp: CE213.M11 TP HỒ CHÍ MINH, THÁNG 11 NĂM 2021 MỤC LỤC Chương Introduction 1.1 Hash function overview 1 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 Bước 1: Message Padding 1.5.2 Bước 2: Append length 1.5.3 Bước 3: Divide input into 512 bits block 1.5.4 Bước 4: Initialize chaining variable 1.5.5 Bước 5: Process block 1.5.6 Bước 6: Process each block 1.5.7 Bước 7: Process output 1.6 SHA-1 algorithm review Chương Software implementation 2.1 Software Introduction 2.2 Algorithm flowchart of SHA-1 algorithm 2.3 SHA-1 algorithm testing results by software Chương Hardware implementation 3.1 Datapath Hardware architecture 9 10 11 12 12 3.1.1 Functional block 12 3.1.2 RTL design architecture 15 3.1.3 Sharing techniques 15 3.1.4 Pipeline techniques 15 3.2 Controller 15 3.3 Verilog HDL Design 15 3.4 Verification 15 3.4.1 Pre 15 3.4.2 Post Tài liệu tham khảo 15 16 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 v ề 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 tốn tốn h ọc ánh хạ liệu có kích thước tùу ý thành hàm băm có độ dài cố đ ịnh Nó đ ược 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 cho 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 hàm hash phải thỏa mãn yêu c ầu sau: ● Đối số hàm hash tin có chiều dài ● Giá trị hàm hash có chiều dài khơng đổi ● 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 ● Cho y giá trị hàm hash, khó mặt tính tốn để tìm x thỏa H(x)=y, tức hàm hash phải hàm chiều ● 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 để tìm 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 b ất kỳ Tùy theo thu ật toán sử dụng, cần thêm thơng điệp bit đ ể nhận thơng ệ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 t ừng khối có kích th ước b ằng 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 c 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 hi ện hành: - Khởi tạo H0, vectơ khởi tạo - Thực trộn: Hi=F(Hi-1,Mi), i[1,s] [1] 1.3 Applications of data encryption - Các ứng dụng mã hóa: o Xác minh tệp thay đổi hay chưa: ▪ Đượ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 ▪ 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 đ ược 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 trình khơng xác theo cách mà nhà phát triển tạo có th ể s ẽ gây cho bạn vấn đề lớn ▪ Cách giải quyết: Giả s trang web cung cấp m ột 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 c 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ứ độc hại mà bạn [2] o Mã xác thực thông báo HMAC ▪ Dùng để tạo HMAC (Hashed Message Authentication Code) có dạng sau: HMAC = hashFunction(message + key) ▪ 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ọ ▪ Bạn tạo khóa bí mật mà bạn biết Hãy g ọi K 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 c 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 c 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=3902ed847ff2 8930b5f141abfa8b471681253673 ▪ 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 kh ẩu 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ì liên kết hợp lệ an toàn đ ể người dùng có th ể đổ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 b ả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, m ột ѕ ố nguуên dài 40 chữ ѕố Nó đ ược thiết kế cho ứng dụng m ật mã, nh ưng ѕớm bị phát có lỗ hổng Vì phiên SHA khác đ ượ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 ế b ởi 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ỏ 64 bit đưa vào, giá trị đầu có độ dài 160-bit từ việc thực hi ện thao tác đ ượ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 m ột 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 64 bits Đầu ra: Chuỗi mã hóa, có độ dài 160 bits - 1.5.1 Bước 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 bước sau thực việc chia chu ỗi thành khối 512 bits Chúng tơi trình bày chi tiết b ước làm d ưới 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” phải tính Và cuối s ẽ thêm word(64 bits) vào cuối dãy, word bi ểu diễn cho đ ộ dài c 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 472 bit padding 1000 bit Message Hình 1.1: Quá trình padding [5] - 1.5.2 Bước 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 Hình 1.2: Quá trình append length [5] - 1.5.3 Bước 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] Data to be hased Block-1 512 bits Block-2 512 bits Block-3 Block-4 512 bits 512 bits Block-N 512 bits Hình 1.3: Phân chia input [5] - - 1.5.4 Bước 4: Initialize chaining variable Chúng ta có chuỗi ban đầu khởi tạo sau: o H0: 0x67452301 o H1: 0xEFCDAB89 o H2: 0x98BADCFE o H3: 0x10325476 o H4: 0xC3D2E1F0 [4] 1.5.5 Bước 5: Process block Với block 512 bits chia bước 3, ta chia thành 16 kh ối nh ỏ, m ỗi khối có độ lớn 32 bits ký hiệu sau: w(0), w(1), …, w(79) [4] o Với w(0) - w(15) t ương ứng với 16 khối nhỏ 32 bits chia đ ược c khối 512 bits 512 bits block w0 w1 w2 w3 32 bits 32 bits 32 bits 32 bits w15 32 bits Hình 1.4: Xử lý bên block [5] o Với w(16) - w(79): Ta thực việc tính tốn với cơng thức đây: w(t) = (w(t-3) XOR w(t-8) XOR w(t-14) XOR w(t-16))

Ngày đăng: 17/08/2023, 10:31

Tài liệu cùng người dùng

Tài liệu liên quan