Professional Documents
Culture Documents
Báo Cáo CE213.M11
Báo Cáo CE213.M11
i
3.1. Datapath Hardware architecture ................................................................. 13
REFERENCES ................................................................................................ 24
ii
DANH MỤC HÌNH
Hình 1-1 Quá trình padding [5] ............................................................................... 5
Hình 1-2 Quá trình append length [5] ..................................................................... 5
Hình 1-3 Phân chia input [5] ................................................................................... 5
Hình 1-4 Xử lý bên trong một block [5] ................................................................. 6
Hình 1-5 Quá trình tính toán [6] .............................................................................. 7
Hình 1-6 So sánh các giải thuật [7] ......................................................................... 8
Hình 2-1 Website GDB Online ............................................................................. 10
Hình 2-2 Cửa số làm việc của GDB Online .......................................................... 10
Hình 2-3 Lưu đồ giải thuật SHA-1 ........................................................................ 11
Hình 2-4 Kết quả phần mềm mô phỏng thuật toán SHA-1 ................................... 12
Hình 3-1 Length Counter Unit .............................................................................. 13
Hình 3-2 Padding Unit .......................................................................................... 13
Hình 3-3 Create Block Unit................................................................................... 13
Hình 3-4 Process Block Unit ................................................................................. 13
Hình 3-5 Counter Loop Unit ................................................................................. 14
Hình 3-6 w0 – w15 Unit ........................................................................................ 14
Hình 3-7 w0 – w19 Unit ........................................................................................ 14
Hình 3-8 Save w Stage .......................................................................................... 15
Hình 3-9 Calculator Unit ....................................................................................... 15
Hình 3-10 Chi tiết bên trong Calculator Unit ........................................................ 15
Hình 3-11 Mô hình thiết kế RTL [8] ..................................................................... 16
Hình 3-12 Sharing Register techniques ................................................................. 16
Hình 3-13 Pipeline techniques .............................................................................. 17
Hình 3-14 Pipeline techniques .............................................................................. 18
Hình 3-15 Controller ............................................................................................. 19
Hình 3-16 Verilog HDL design ............................................................................. 20
iii
Hình 3-17 Đo số chu kỳ thực hiện xong một block .............................................. 20
Hình 3-18 File Input .............................................................................................. 21
Hình 3-19 Kết quả mô phỏng Pre-Synthesis ......................................................... 21
Hình 3-20 File Output ........................................................................................... 21
Hình 3-21 Kết quả so sánh Pre-Synthesis với Software ....................................... 21
Hình 3-22 Kết quả mô phỏng Post-Synthesis ....................................................... 22
Hình 3- File Output ............................................................................................... 22
Hình 3-24 Đo chu kỳ xung clock .......................................................................... 22
Hình 3-25 Kết quả so sánh Post-Synthesis với Software ...................................... 23
iv
Chương 1. INTRODUCTION
1
1.2. General structure of Hash function.
Cho trước một thông điệp M có độ dài bất kỳ. Tùy theo thuật toán được sử dụng,
chúng ta có thể cần thêm thông điệp các bit để nhận được thông điệp có độ dài là bội
số của chiều dài cố định cho trước để phục vụ cho việc tính toán. Chia thông điệp
thành từng khối có kích thước bằng nhau tức là M = (M1, M2, …Ms).
Gọi Hi là trạng thái có kích thước n bit, n là chiều dài của giá trị hàm băm, F là
hàm nén thực hiện thao tác trộn khối dữ liệu với trạng thái hiện hành:
o Khởi tạo H0, bằng vectơ khởi tạo nào đó.
o Thực hiện trộn: Hi=F(Hi-1,Mi), i[1,s]. [1]
2
o Dùng để tạo ra HMAC (Hashed Message Authentication Code) có dạng
như 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" và gửi một
liên kết đặt lại mật khẩu được gửi đến địa chỉ e-mail của họ.
o Bạn đã tạo một khóa bí mật mà chỉ bạn mới biết. Hãy gọi đây là K.
o Xây dựng một chuỗi bao gồm địa chỉ e-mail của người dùng, thời gian
hiện tại của máy chủ, mã băm của mật khẩu người dùng hiện tại. Hãy gọi
tin nhắn này là M. Tính HMAC của M, sử dụng K làm khóa bí mật. Tạo
một URL chứa đường dẫn đến trang đặt lại mật khẩu của bạn và dưới dạng
các tham số, địa chỉ e-mail của người dùng, thời gian hiện tại và HMAC
được 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 được e-mail, họ sẽ theo dõi URL và truy cập vào
trang forgetPassword của bạn. Để được phép đặt mật khẩu mới, người
dùng phải trải qua quá trình xác minh. Nếu các tham số sau khi trải qua
các bước tính toán đặc biệt mà không bị xáo trộn thì thì đây là một liên
kết hợp lệ và an toàn để người dùng có thể đổi mật khẩu. [2]
3
1.4.2. SHA-1 algorithm
SHA-1 là một hàm băm mật mã được thiết kế bởi Cơ quan An ninh Quốc gia
Hoa Kỳ và được NIST công bố như một thuật toán cải tiến của SHA-0 vào năm 1995.
Và nó được sử dụng trong nhiều giao thức và ứng dụng bảo mật, bao gồm TSL, SSL,
SSH và IPsec. Khi một message nhỏ hơn 264 bit được đưa vào, giá trị đầu ra có độ dài
160-bit từ việc thực hiện các thao tác và được thêm vào mã băm trước đó là mã băm
cuối cùng.
Ba thuật toán SHA có cấu trúc khác nhau và được phân biệt là: SHA-0, SHA-1,
SHA-2. SHA-1 gần tương tự như SHA-0, nhưng sửa chữa một lỗi trong các đặc tả kỹ
thuật gốc của hàm băm SHA. [3]
Data to be hased
5
o H1: 0xEFCDAB89
o H2: 0x98BADCFE
o H3: 0x10325476
o H4: 0xC3D2E1F0 [4]
1.5.5. Step 5: Process block
Với mỗi block 512 bits được chia tại bước 3, ta chia thành 16 khối nhỏ, mỗi khối
có độ lớn 32 bits được ký hiệu như 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ủa
từng khối 512 bits.
6
Hình 1-5 Quá trình tính toán [6]
Thực hiện 80 lần theo như hình ở trên với 4 giai đoạn:
o GĐ 1 (0 <= t <= 19) : Ft = (B AND C) OR ((NOT B) AND D) và Kt =
5A827999.
o GĐ 2 (20 <= t <= 39) : Ft = B XOR C XOR D và Kt = 6ED9EBA1.
o GĐ 3 (40 <= t <= 59) : Ft = (B AND C) OR (B AND D) OR (C AND D)
và Kt = 8F1BBCDC.
o GĐ 4 (60 <= t <= 79) : Ft = B XOR C XOR D và Kt = CA62C1D6. [4]
1.5.7. Step 7: Process output
Ta thực hiện việc cập nhật lại giá trị co các chuỗi số H:
o H0 = H0 + A
o H1 = H1 + B
o H2 = H2 + C
o H3 = H3 + D
o H4 = H4 + E
Lặp lại bước 6 cho đến khi xử lý hết tất cả các khối 512 bits.
Ta được một chuỗi output 160 bits được biểu diễn bởi 5 word: H0H1H2H3H4 [4]
7
trong dựa trên việc xử lý các từ 32 bit. SHA-384 và SHA-512 thậm chí còn có nhiều
điểm tương đồng hơn. Chúng xử lý các thông điệp có độ dài tối đa lên đến 2 128-1
bit, có kích thước khối thông báo là 1024bit và có cấu trúc bên trong dựa trên việc xử
lý các từ 64 bit. Trên hết, định nghĩa của SHA-384 gần như giống với định nghĩa của
SHA-512, ngoại trừ sự lựa chọn khác của véc tơ khởi tạo và cắt bớt kết quả 512bit
cuối cùng thành 384 bit. Tất cả các chức năng đều có cấu trúc bên trong rất giống
nhau và xử lý từng message nhiều vòng. Số lượng vòng là như nhau đối với SHA-1,
SHA-384 và SHA-512, và nhỏ hơn 20% ở SHA-256.
SHA-1 yêu cầu ít toán hạng hơn cho mỗi phép cộng so với ba hàm còn lại. Ký
hiệu k + 1 được sử dụng trong bảng, có nghĩa là số toán hạng được thêm vào là k trong
tất cả trừ vòng cuối cùng và k + 1 trong vòng cuối cùng. Ngoài ra, một số toán hạng
có thể bằng k trong tất cả các vòng và một vòng đơn giản bổ sung có thể được giới
thiệu cho phép cộng đơn lẻ còn lại. [7]
8
Các kết luận sau đây có thể được rút ra từ sự so sánh từ bảng trên này. Việc triển
khai phần cứng của SHA-384 và SHA-512 có cùng hiệu suất, vì vậy chỉ một trong số
chúng cần được thực hiện cho mục đích phân tích so sánh. Lưu ý rằng kích thước
message size trong SHA-512 lớn gấp đôi so với SHA-1, số lượng vòng là như nhau
và đường dẫn tới hạn chỉ dài hơn một chút trong SHA-512. Do đó, SHA-512 (chức
năng mạnh nhất) có thể nhanh hơn đáng kể so với SHA-1 (chức năng yếu nhất), đây
sẽ là một kết quả rất tích cực nếu đúng. Thông lượng của SHA-256 có thể nằm trong
cùng một phạm vi với thông lượng của SHA-1 và nhỏ hơn thông lượng của SHA-512.
Có tính đến các estimation này, chúng tôi đã quyết định triển khai hai trong số các
hàm băm đã khảo sát, SHA-1 và SHA-512, nằm ở hai đầu đối diện của phổ cả về độ
bền và tốc độ, với SHA- 1 là hàm yếu nhất và chậm nhất, và SHA-512 là hàm mạnh
nhất và nhanh nhất trong số bốn hàm băm được khảo sát. [7]
9
Chương 2. SOFTWARE IMPLEMENTATION
10
2.2. Algorithm flowchart of SHA-1 algorithm
Hình 2-4 Kết quả phần mềm mô phỏng thuật toán SHA-1
12
Chương 3. HARDWARE IMPLEMENTATION
14
Hình 3-8 Save w Stage
Calculator Unit: Khối thực hiện công việc tính toán chính của thuật toán. Quy
trình và các bước tính toán tương tự như phần nhóm đã trình bày tại mục 1.5.
15
3.1.2. RTL design architecture
Đây là mô hình thiết kế RTL cho giải thuật mã hóa SHA-1 với một khối đường
dữ liệu và một khối điều khiển. Khối đường dữ liệu có thường có 2 loại cổng I/O.
Loại cổng I/O thứ nhất là cổng dữ liệu, được dùng để truyền và nhận dữ liệu đi và
đến. Loại cổng I/O khác là các cổng điều khiển, được dùng bởi khối điều khiển để
điều khiển khối dữ liệu thực thi việc tính toán và để nhận thông tin. [8]
16
3.1.4. Pipeline techniques
Chúng ta thấy rằng có thể chia Datapath thành nhiều tầng thực thi bởi vì các khối
chức năng trong Datapath thực hiện một nhiệm vụ nhất định. Vì mã hóa SHA-1 bao
gồm 4 giai đoạn với các giá trị F0 – F4 và K0 – K4 khác nhau nên sử dụng 4 SHA-1
core để pipeline 4 tầng. Sau khi input được xử lý và chia thành nhiều khối nhỏ và
được chuyển dần vào các Shift Register đồng thời cũng lưu lại vào Register File để
tính toán các giá trị W của tầng khác. Các giá trị A, B, C, D, E cũng sẽ được chuyển
giao qua lại giữa các tầng, tới khi có các giá trị H0 – H4 thì ta lưu vào các tệp thanh
ghi để phục vụ việc thực hiện tính toán các block khác của input.
Các giá trị input sẽ được chuyển giao qua các tầng và cho ra kết quả theo thứ tự
như hình phía dưới:
17
Hình 3-14 Pipeline techniques
18
3.2. Controller
Bảng điều khiển gồm có tổng cộng 32 trạng thái với các tín hiệu điều khiển
chuyển trạng thái là START và LOOP. Hệ thống chỉ bắt đầu hoạt động khi tín hiệu
START = 1. Mỗi khi chuyển trạng thái thì Controller cung cấp những tín hiệu điều
khiển khác nhau cho khối điều khiển.
19
Hình 3-16 Verilog HDL design
3.4. Verification
Khi tín hiệu block2 = 1 thì hệ thống sẽ chuyển sang xử lý block khác. Giả sử
ta cho một chu ký CLK = 0.1 ns vậy ta đo được khoảng thời gian để xử lý một block
là 0.85ns tương đương với 85 chu kỳ máy, trong đó 80 chu kỳ thực hiện việc tính toán
và 5 chu kỳ để chuyển giao dữ liệu giữa các tầng.
20
Hình 3-18 File Input
Khi tín hiệu START = 1 thì sẽ bắt đầu thực hiện mã hóa, quá trình thực thi nạp
lần lượt input vào bộ nhớ và xử lý từng input tuần tự. Sau một thời gian thực hiện
tính toán thì sẽ cho ra kết quả khi tín hiệu DONE = 1.
21
3.4.2. Post-synthesis verification vs Software implementation
Post-Synthesis cũng thực hiện tương tự như Pre-Synthesis. Message input cũng
được lấy từ file Read.txt và output được ghi ra tại file Write.txt. Tuy nhiên khi thực
hiện Post-Synthesis thì sẽ có một chút delay nên việc timing cần phải được chú ý.
22
Dưới đây là kết quả so sánh output của Hàm SHA-1 được xây dựng sẵn trong
ngôn ngữ Perl và File Write.txt vừa tạo ra sau khi chạy mô phỏng Post-Synthesis. Ta
thấy kết quả giống nhau và chính xác.
23
REFERENCES
[1] T. L. H. Dũng, “Khoa CNTT, Học viện Kỹ Thuật Quân Sự, Mã Hóa, Chương 11:
Hàm băm,” [Trực tuyến]. Available: http://fit.mta.edu.vn/~dunglh/course-102.
[Đã truy cập 8 11 2021].
[2] S. Soderstrom, “The wonderful applications of HMAC,” 11 12 2015. [Trực
tuyến]. Available: https://by.com.vn/zawF3I. [Đã truy cập 10 11 2021].
[3] J.-w. Kim, H.-u. Lee và Y. Won, “Design for high throughput SHA-1 hash
function on FPGA,” 4-6 July 2012. [Trực tuyến]. Available:
https://ieeexplore.ieee.org/document/6261737. [Đã truy cập 10 11 2021].
[4] Safaa S. Omran, Laith F. Jumma, Computer Engineering Techniques College of
Electrical and Electronic Techniques Baghdad, Iraq, “Design Of SHA-1 & SHA-
2 MIPS Processor Using FPGA, Annual Conference on New Trends in
Information & Communications Technology Applications-(NTICT'2017),” 7 - 9
March 2017. [Trực tuyến]. Available:
https://ieeexplore.ieee.org/document/6261737. [Đã truy cập 10 11 2021].
[5] T. G. L. G. N. B. F. L. Schott, “Springer Link, Comparative Analysis of the
Hardware Implementations of Hash Functions SHA-1 and SHA-512, pp. 76-78,”
5 9 2002. [Trực tuyến]. Available: https://link.springer.com/chapter/10.1007/3-
540-45811-5_6. [Đã truy cập 18 11 2021].
[6] “Wikipedia,” [Trực tuyến]. Available:
https://upload.wikimedia.org/wikipedia/commons/e/e2/SHA-1.svg. [Đã truy cập
10 11 2021].
[7] N. V.Jayswal, “Lecture in Computer Engineering, Shri K . J. Pilytechnic,
Bharuch. CNS: Unit 3: Lecture 9: Secure Hash Algorithm - 1 (SHA-1),” 11 8
2017. [Trực tuyến]. Available: https://bitly.com.vn/mij0c1. [Đã truy cập 18 11
2021].
[8] H. N. D. T. Đ. D. Lâm Đức Khải, Giáo trình Thiết kế luận lý số 2, TP Hồ Chí
Minh: Nhà xuất bản ĐHQG-HCM, 2019.
24
25