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

Khóa luận tốt nghiệp Kỹ thuật máy tính: Thiết kế và hiện thực thuật toán mã hóa trên RISC-V

69 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Thiet ke va hien thuc thuat toan ma hoa tren RISC-V
Tác giả Nguyen Duc Hy, Tran Duy Quoc Viet
Người hướng dẫn Th.S Ho Ngoc Diem
Trường học Truong Dai Hoc Cong Nghe Thong Tin - Dai Hoc Quoc Gia Thanh Pho Ho Chi Minh
Chuyên ngành Ky Thuat May Tinh
Thể loại Khoa Luan Tot Nghiep
Năm xuất bản 2023
Thành phố TP. Ho Chi Minh
Định dạng
Số trang 69
Dung lượng 18,73 MB

Nội dung

Trong bối cảnh đó, thuật toán SHA-256 Secure Hash Algorithm 256-bit được sử dụng rộng rãi như một công cu mã hóa bảo mật và xác thực dữ liệu.. RISC-V là bộ kiếntrúc tập lệnh mã nguồn mở

Trang 1

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TÍNH

NGUYEN DUC HY - 19521653

TRAN DUY QUOC VIET - 19520353

KHOA LUAN TOT NGHIEP

THIET KE VA HIEN THUC THUAT TOAN MA HOA

Trang 2

LOI CAM ON

Lời đầu tiên, nhóm chúng em chân thành gửi lời cảm ơn sâu sắc đến cô hướngdẫn — Thạc sĩ Hồ Ngọc Diễm Trong suốt quá trình thực hiện khóa luận cô đã luôntận tình giúp đỡ, hướng dẫn, góp ý nhóm em để nhóm em có thể hoàn thành đề tài

khóa luận này.

Kế đến, nhóm em xin gửi lời cảm ơn đến quý Thầy/Cô trường Đại học Côngnghệ Thông tin — Đại học Quốc Gia Thành phó Hồ Chí Minh nói chung và các thay

cô thuộc khoa Kỹ thuật máy tính nói riêng đã tận tình chỉ dẫn, truyền đạt nhữngkinh nghiệm và kiến thức quý báu cho chúng em trong suốt 4 năm học vừa qua.Những kiến thức và kinh nghiệm quý báu đó là những hành trang vững chãi giúp

chúng em trong quãng đường tương lai của nhóm.

Bên cạnh đó, nhóm em cũng xin dành lời cảm ơn đến ba mẹ, gia đình vànhững người bạn đã luôn sát cánh, động viên, hỗ trợ chúng em trong suốt quá trình

học tập và nghiên cứu.

Trong suốt quá trình thực hiện dé tài khóa luận, nhóm không thể tránh khỏi saisót Vì thế, mong các quý Thầy/Cô và các bạn thông cảm và đóng góp ý kiến dé đề

tài khóa luận được hoàn thiện hơn.

Một lần nữa nhóm chúng em xin chân thành cảm ơn

TP Hô Chí Minh, ngày 27 tháng 06 năm 2023

Sinh viên thực hiện

Nguyễn Đức Hy

Trần Duy Quốc Việt

Trang 3

MỤC LỤC

Chương 1 GIỚI THIỆU DE TÀI 22¿22222+¿z222E2+++t2EE+eretrrvecree 21.1 Tổng quan đề tài -¿ 2+2¿+2222+222222111222111122221122271112221112 E111 cce 2

1.1.1 _ Tình hình nghiên cứu ngoài nưỚC - + + c+x+x+xsxeveererexee 3

1.1.2 _ Tình hình nghiên cứu trong nưỚC - - «+ + +sc+x+x+x+errerexexee 4

2.2.1 Lệnh MU Type nae sqạm, , à.c.c.cccceeiie 8

2.2.2 Lệnh J— Type eecceecesssssssssssssssossssstssssninsennssessessssscceceesssssssssssnssunennesesees 8 2.23 LAMB B— TypE§ ”< 8 2.2.4 Lệnh [— Type ceeececcceccccceccsesecscneseseseseesessseeneneasseseeeesensseseseeessseeeaees 0

2.2.5 Lénh S — Type càng HH Hư 2

2.2.6 Lệnh R— Type 6 TT HH Hết 3

2.3 Thuật toán SHA256 2-5222 2t t2 H21 5

2.3.1 Giới thiệu thuật toán SHA256 - -2- 55c ccccccccccrsrrrreerreer 5

2.3.2 Các bước trong thuật toán SHA256 ¿- 55c Sccsx+ecercry 6

2.4 Các lệnh hỗ trợ cho việc thực hiện thuật toán SHA256 [2] - 21

2.4.1 Lệnh chuyền đổi sha256sig0 -cccccc+22cvvvveererrrrr 212.4.2 Lệnh chuyền đổi sha256sigl -cccccc+++cccvvcecrerrrrrr 21

Trang 4

2.4.3 Lệnh chuyển đổi sha256sum0 - -: c¿222v+z+22cvvvrvrcrvvcee 212.4.4 Lệnh chuyển đổi sha256sum1

2.5 Hiện thực phần mém thuật toán SHA256 -.-¿ zc5s2czz+ 22Chương 3 | THIET KE HE THONG

3.1 Thiết kế hệ thống tổng quát -.: +¿222+++++22E++++ttrrxxrrsrrrreerrrr 243.1.1 _ Khối Instruction Memory

3.1.2 Khối Data Memory -22+¿+222E2++tEEEEEEtESEEEEEtrtrrkrrrrrrrrcee 253.2 Thiết kế hệ thống chỉ tiết

3.2.1 Khối Program Counter -c:+++22++zt+ccrvvrrrrrsrree 273.2.2 Khối Control Unit -52222cc22222zseccvvrrerrrverrrrrrrree 283.243 Khối RegisterFile ccciisrrrrrrrrrerrrer 303.2.4 Khối ALU vovccccccrrrrrrrrrrrrrrrrrereerrrer 323.2.5 Khối MU come, cv ựa 4 343.2.6 Khối Store cceccecrreeececeeer 353.27 Khối Add eecccccreeerreeeerrrerercerrrrece 3Õ3.2.8 Khối Crypto_Fu cccc2222vcreErkrrrrerrktrrrrrrtrrrrrrrrvee 37Chương 4 MÔ PHONG VÀ ĐÁNH GIÁ KET QUẢ - - 39

4.1 Mô phỏng 222¿:-222EEEE2222+122222111112122212111112.2221211111 E1 .e 39

4.1.1 Mô phỏng các lệnh thuộc kiến trúc RV321 -+ 39

4.1.2 Mô phỏng thuật toán SHA256 -2c++52222vvvccreerrrrg 44

4.2 Đánh giá kết quả ¿-+222+2+t22221121222111222111112121112.2111 E1 crrree 414.2.1 Kết quả tần số của ÏP -22:cv222+vvrtErvvrrrrrrrvrrerrrrrrrerg 474.2.2 So sánh kết quả với các bài báo khác -: ccc+ccvsvceccz 48

Trang 5

Chương 5 THIẾT KE BLOCK DESIGN TREN VIVADO VỚI GIAO THỨC

AXT4 -= - 43442ø—œằHẦ HHĂHĂHHHẢ 49

5.I Tổng quan giao thức AXI4

5.2 Kiến trúc khối thiết kế tổng quan giao tiếp qua AXI4

5.3 Thiết kế trên Vivado

5.4 Các IP của Xilinx dùng trong Block Design -.- : -5-5- 54 5.4.1 IP Microblaze

5.4.2 IP AXI UART LITE cccccececceeesesteseesesneseeessesesnessessssesesesnesseneseeeeseeses 55

5.5 Kết qua tổng hợp thực thi của Block Design

5.6 Kết quả hiện thực thiết kế trên board Xilinx VC707 - 56Chương 6 KÉT LUẬN VÀ HƯỚNG PHÁT TRIEN

6.1 Kết luận đ6 e e À Ề ciiiiiiiiiie 586.2 Hướng phát triỀn -:¿52222+++22E2+++22223++t22EEEvtEEEEvrrrrrrkrrrrrrkee 58TÀI LIEU THAM KHAO cccsssccssssssssssosssessesssscscssssecssssssecssssssessasssecesssisesessseescesssecsea 60

Trang 6

DANH MỤC HÌNH

Hình 2.1: Các thanh ghi trong RV321[L 552522222 + tzekererrrrrererrree 7

Hình 2.2: Dinh dang các lệnh trong R`V321 - ¿+ - 5S +EkekekeEerkrkekekerree 7

Hình 2.3: Các giá trị hằng số cho SHA256 -.2 -2222222222cv222vvrrecrvvrrrrrr 18

Hình 2.5: Dinh dạng lệnh sha256sig Ì ¿+ + + St +k+E*‡EeEkEkekeErkrkrkrkeree 21

Hình 2.6: Dinh dạng lệnh sha256sum0 ¿- - - 2525252 +‡££££‡ztzk+£exerrkrkexee 21

Hình 2.7: Định dạng lệnh sha256suim | + ¿5+5 *v£v+vEeveteterererererexee 21

Hình 2.8: Sơ đô giải thuật SHA256 - 22222222 22222222 rrtrrrrrrrrrrrrrrrrrrrree 22Hình 2.9: Sơ đồ giải thuật hàm CalculafOT() ¿+ ¿5+ cS*k‡‡ssrexsrerrkexex 23Hình 3.1: Sơ đồ khối tổng quát hệ thống ¿:-+z22v+z++2cvvvrrsrrvsree 24Hình 3.2: Khối Instruction MeImOry -¿-¿¿©22+z22EE+++22EESSzzvvEveerrrrrscee 25Hình 3.3: Khối Data Memory

Hình 3.4: Thiết kế hệ thống chỉ tiết

K Ki

Tl

Hình 3.5: Khối Program CounIer :-¿2222222+22222E22S2++rrt2tE22vvrrrrrrrrrrrrrer 27Hình 3.6: Khối Control Unit +:+ccc22522tttreeeevtttrrtrrrirrrktrrrrrrrrrrie 28Hình 3.7: Khối Register Eile - 2222222:c¿+222222 vvvt2222211111 211.1 Etrrrree 31Hình 3.8: Khối ALU -cccccccccc2 2222 2E Ettrrrtrrrrrirriiiiriio 32Hình 3.9: Khối Load -:cccccssceertrrreierrrrrrrrrrro.24Hình 3.10: Khối Store -: Hee 35Hình 3.11: Khối Add -:::ccccccccc tt Eiriio 36Hình 3.12: Khối Crypto_Fu -cccc¿£22222SSvvrreetrrrrxrxerrrrrrrrrrkeerrrerrrrrrvee.TŸ 7Hình 4.1: Các lệnh assembly trong Test case 1 (tính tích hai số) 39

Hình 4.2: Waveform Output của Test case Ì 6 5552 5<cc+c+xsccce+ 40

Hình 4.3: Kết quả mô phỏng Test case | trên Venus và trên ModelSim 40

Hình 4.4: Các lệnh assembly trong Test case 2 (tính giai thừa) -. 4I

Hình 4.5: Waveform Output của Test Case 2 5- 252522 Al

Hình 4.6: Kết qua mô phỏng Test case 2 trên Venus và trên ModelSim 42Hình 4.7: Các lệnh assembly trong Test case 3 (Tính cấp số nhân)

Trang 7

Hình 4.8: Waveform Output của Test case 3 5c Set tre 43

Hình 4.9: Kết quả mô phỏng Test case 3 222: ©2222zt222222zt2EEEEzerrrrrseee 43Hình 4.10: Giá trị băm ban đầu (Hạ, , H;) -¿¿+++222++z++222xvzscrvseez 44Hình 4.11: các giá trị hằng số (Ko, , Køa) -::ccccvvvvvveiiirrrrrrrrrrirrriiu 44Hình 4.12: Input được chia thành các khối -z++22++z++22z+zerrrrrseez 45

Hình 4.13: Thông điệp được lưu vào Data MeImOry - - + +++x+c+xererzxecsz 45

Hình 4.14: Kết quả tạo ra từ SCTÏpV -2¿-2222++222222+t2E2EEEttEEEEErrrtrrkrrrrrrkrvee 45

Hình 4.15: Assembly mô phỏng thuật toán SHA256 - + +5 c+cs<++ 46

Hình 4.16: Output thuật toán SHA256 mô phỏng trên ModelSim - 47

Hình 4.17: Kết quả mô phỏng phần mềm .-2:- ¿2222222222222 41Hình 4.18: Tần số IP -::+ccccctriririii 47Hình 5.1: Kiến trúc chung của giao thức AXI4 - ccc¿ -222cscccce+ccccvvsee 50

Hình 5.2: Quá trình đọc của giao thức AX14 „51

Hình 5.3: Quá trình ghi của giao thức AXI4 51

Hình 5.4: Thiết kế tong quan của Block Design 53Hinh 5.5: Block Design trén phan mém Vivado 54Hình 5.6: IP Microblaze giao tiếp với IP Local memory 54

Hình 5.7: IP AXI UART LITE - - 5 5c SESEk‡kEEEEEEEkSEEEEEEkrkrkerrrkek 55

Hình 5.8: Tài nguyên sử dụng trong Block Design - ¿55-5 5+<+s<++ 55

Hình 5.9: Năng lượng tiêu thụ của Block Design ¿ «c5 + sxcseeerexeex 56 Hình 5.10: Board Xilinx VC707 «+12 TT HH it 56

Hình 5.11: Kết quả hiện thực trên board và kết quả mô phỏng trên ModelSim 57

Trang 8

DANH MỤC BANG

Bảng 2.1: Ví dụ về đệm thông điệp .22-2222222222222cEEEEEEtEEEEErrerrrrrrrrrr 17Bảng 3.1 Tín hiệu khối COre 2222222++++2222++22223112221112222211 22212 ecrer 24Bảng 3.2: Tín hiệu khối Instruction Memory -: ¿2225222 25Bang 3.3: Tín hiệu khối Data Memory -2222222++2222222vvvzrrtrrrrrrrrrerree 26Bảng 3.4: Tín hiệu khối Program COunIeT 22£©222+22222+z++2222+zz+tvvszcezrr 27Bảng 3.5: Trạng thái hoạt động của khối Program Counter - 28Bảng 3.6: Các tín hiệu của khối Control Unit -¿+z++22++zz+22szcz+rr 29Bảng 3.7: Tín hiệu khối Register Eile .22-22222+22222++cEEEEEErtrEEkrrerrrkerrrrr 31Bảng 3.8: Trạng thái hoạt động của khối Register Eile -+ 32Bảng 3.9: Tín hiệu của khối ALLU - ¿-222222+2222SS++ttEESSvvettErvrrerrrrrrrrrr 33Bang 3.10: Tín hiệu điều khiển thực hiện các phép toán của khối ALU 33Bảng 3.11: Tín hiệu khối Load .: ©2¿22222++222ES++t2EEES+vetvvxvrrerrrserrrrr 34Bảng 3.12: Tín hiệu size trong khối Load -¿¿zz+22vvz++22vvvzz+tcvsvceerx 35Bang 3.13: Tín hiệu của khối Store cccccz222ccvvvsccrrerrrrsveeercerrrrrseec 35Bảng 3.14: Tín hiệu size trong khối Store -ccccc¿+cccsscssccvscrccrssecc.- 36Bảng 3.15: Tín hiệu của ÔN ZZ NT“ 37Bảng 3.16: Tín hiệu của khối Crypto_EU - ¿22222++222Ev++etvvvvrerrrsrrecrr 37

Bang 4.1: So sánh clock cycle COUHI - ¿5-5 552 S*2E‡E‡+‡Ee£zkzEexerrrkrkrkerrree 48

Bang 4.2: So sánh tần số và thiết kế 2:22 2 vvrirtEEEEEkrrrrrrrrrrrrrrrrree 48

Trang 9

DANH MỤC TU VIET TAT

Dạng viết tắt Dạng đầy đú

RISC-V Reduced Instruction Set Computer

FPGA Field Programmable Gate Array

ALU Arithmetic Logic Unit

SHA Secure Hash Algorithm

AES Advanced Encryption Standard

IP Intellectual Property

Trang 10

TÓM TÁT KHÓA LUẬN

Đối với thế giới ngày nay, chúng ta càng phụ thuộc vào công nghệ thông tin

và mạng, việc bảo vệ thông tin quan trọng và đảm bảo tính toàn vẹn dữ liệu trở nên

cực kỳ quan trọng Trong bối cảnh đó, thuật toán SHA-256 (Secure Hash Algorithm

256-bit) được sử dụng rộng rãi như một công cu mã hóa bảo mật và xác thực dữ

liệu Đồng thời, kiến trúc vi xử lý RISC-V đang ngày càng thu hút sự quan tâm vàphát triển trong cộng đồng mã nguồn mở

Khóa luận này sẽ tập trung chính vào chủ đề là triển khai bộ vi xử lý RISC-V32-bit và triển khai thuật toán mã hóa SHA256 trên bộ vi xử lý RISC-V là bộ kiếntrúc tập lệnh mã nguồn mở nên được sử dụng rất nhiều trong nghiên cứu học thuật

Bộ vi xử lý kiến trúc tập lệnh RISC-V cơ bản bao gồm các khối: Control Unit,

Program Counter, Instruction Memory, Register File, Algorithm and Logic Unit,

Data Memory.,

Bên cạnh đó thuật toán SHA256 là một trong những thuật toán băm phổ biếnđược sử dụng trong nhiều ứng dụng bảo mật như: băm mật khẩu, xác thực và lưutrữ giao dịch, Do đó việc thực hiện thuật toán này trên các thiết bị nhúng RISC-Vđang trở nên ngày càng phổ biến

Trong quá trình nghiên cứu, khóa luận đã thực hiện phân tích chỉ tiết cấu trúccủa thuật toán SHA256, từ đó nhóm tiến hành xây dựng demo thuật toán SHA256trên kiến trúc RISC-V và kiểm tra độ chính xác của thuật toán khi chạy trên kiến

trúc RISC-V.

Bộ vi xử lý RISC-V 32 bits sẽ được thiết kế để thực thi 37 lệnh thuộc kiếntrúc RV32I, bên cạnh đó vi xử lý sẽ được bổ sung lệnh SHA256 để có thé thực thithuật toán mã hóa SHA256 Bộ vi xử lý được thiết kế bằng ngôn ngữ mô tả phancứng Verilog, quá trình mô phỏng kết quả sẽ được thực hiện bằng cách mô phỏng

chức năng và thời gian thực thi thông qua waveform trên ModelSim và Vivado Sau

đó, nhóm sẽ tiễn hành kiểm tra quá trình hoạt động của bộ xử lý trên kit Virtex 7thông qua giao thức AXI4 bằng phần mềm Vivado và Vitis

Trang 11

Chương 1 GIỚI THIỆU ĐÈ TÀI

1.1 Tổng quan đề tài

RISC-V là một kiến trúc tập lệnh mã nguồn mở (ISA) được giới thiệu lần đầutiên vào năm 2010 tại Đại học California, Berkeley Kể từ đó, RISC-V đã trở nênphổ biến trong giới nghiên cứu, học thuật và nghiên cứu nhờ tính đơn giản, tính mởrộng và tính linh hoạt của nó RISC-V được thiết kế dé có tính mở rộng, có nghĩa là

nó có thể được sử dụng trong nhiều thiết bị, từ các hệ thống nhúng nhỏ đến các

trung tâm dữ liệu quy mô lớn.

RISC-V ISA được dựa trên triết lý Reduced Instruction Set Computing(RISC) tập trung vào việc giảm độ phức tạp của các tập lệnh để cải thiện hiệu suất,hiệu quả năng lượng và dễ dàng thiết kế RISC-V được thiết kế đề có tính mô-đun,với một tập lệnh cơ bản và các tập mở rộng tùy chọn có thé được thêm vào dé đápứng các yêu cầu cụ thể của các ứng dụng khác nhau Phương pháp mô-đun này chophép RISC-V được tùy chỉnh cho các trường hợp sử dụng khác nhau, chang hạnnhư các thiết bị IoT, điện thoại thông minh, máy chủ và tính toán hiệu năng cao

Một trong những lợi thế chính của RISC-V là tính mở nguồn của nó, có nghĩa

là bất kỳ ai cũng có thé sử dụng, chỉnh sửa và phân phối ISA mà không cần phải trảcác khoản phí hoặc hạn chế về giấy phép Điều này đã dẫn đến sự phát triển của một

hệ sinh thái phong phú xung quanh RISC-V, với một số lượng ngày càng tăng cáccông ty và tổ chức đóng góp cho sự phát triển của ISA và các công cụ, thư viện vàphần mềm liên quan

Nhu cầu ngày càng tăng về bảo mật các hệ thống máy tính nên việc sử dụngcác thuật toán mật mã đang thúc đây sự quan tâm đến độ hiệu quả của các thuậttoán mật mã pho biến Mặc dù các thuật toán có thé được triển khai trong phần mềmnhưng có thể giảm chỉ phí bộ nhớ và cải thiện tốc độ bằng cách sử dụng các lệnhchuyên dụng và triển khai trên phần cứng

Trang 12

Việc triển khai các thuật toán mã hóa trên phần cứng có các ưu điểm sau: mãhóa dựa trên phần cứng nhanh hơn mã hóa dựa trên phần mềm vì nó giảm tải quátrình mã hóa và giải mã từ CPU sang phần cứng chuyên dụng, mã hóa dựa trên phầncứng an toàn hơn, tiết kiệm năng lượng hơn so với mã hóa dựa trên phần mềm vì nó

sử dụng các mạch chuyên dụng được thiết kế dành riêng cho mã hóa và giải mã, mãhóa dựa trên phần cứng có thể mở rộng hơn mã hóa dựa trên phần mềm vì nó có thể

dễ dàng tích hợp vào các thiết kế phần cứng hiện có, điều này đặc biệt quan trọngđối với các triển khai quy mô lớn

Trong đề tài này chúng em hiện thực thuật toán mã hóa SHA-256 trên

RISC-V SHA-256 là hàm băm mật mã được sử dụng dé tạo đầu ra có kích thước có định

là 256 bit (32 byte) Đây là một trong những hàm băm được sử dụng rộng rãi nhấttrên thế giới và là một phần của họ hàm băm mật mã SHA-2, cũng bao gồm SHA-

224, SHA-384 và SHA-512 SHA-256 thường được sử dụng trong nhiều ứng dụngbảo mật, bao gồm chữ ký số, lưu trữ mật khẩu và kiểm tra tính toàn vẹn của đữ liệu

Nó cũng được sử dụng làm khối xây dựng cho các giao thức mã hóa khác, chẳnghạn như giao thức Bảo mật tầng vận chuyền (TLS) được sử dụng để liên lạc an toàn

qua Internet.

1.1.1 Tinh hình nghiên cứu ngoài nước

Trên thế giới hiện nay, có nhiều những nghiên cứu và cải tiến về kiến trúc tậplệnh RISC-V Điểm mạnh của RISC-V là tính mã nguồn mở, kiến trúc linh hoạt vàhiệu năng cao, đã thu hút sự quan tâm lớn từ cộng đồng nghiên cứu toàn cầu Có rấtnhiều tổ chức, trường đại học, viện nghiên cứu, và doanh nghiệp đang hoạt độngtrong lĩnh vực này Các nhà nghiên cứu đang tiếp tục phát triển và tối ưu kiến trúcRISC-V để cải thiện hiệu suắt, tính tin cậy và bảo mật Các phiên bản RISC-V mớiđược giới thiệu để đáp ứng nhu cầu đa dạng của các ứng dụng mới Các thuật toánmật mã cũng được quan tâm và phát trién trên hệ thống của RISC-V RISC-V đượcthiết kế để tối ưu hóa hiệu năng, cho phép thuật toán mật mã chạy nhanh và hiệuquả trên các hệ thống dựa trên kiến trúc này Việc tận dụng hiệu năng cao này giúp

Trang 13

cải thiện khả năng xử lý và thời gian phản hồi của các ứng dụng mật mã Năm 2022,Gorkem Nisanci, Paul G Flikkema và Tolga Yalcin đã công bố nghiên cứu về đánh

giá hiệu năng của các thuật toán mã hóa trên RISC-VPI, Nghiên cứu tập trung vào

việc triển khai các thuật toán mã hóa như: SHA256, AES, trên các kiến trúcRISC-V Mục đích của nghiên cứu nhằm đánh giá được lợi ích và chi phí của việctriển khai các thuật toán và thực hiện các thuật toán trong ít chu kỳ hơn bằng cách

sử dụng các lệnh mã hóa và các đơn vị chức năng được bổ sung

1.1.2 Tinh hình nghiên cứu trong nước

Nghiên cứu RISC-V ở Việt Nam được nghiên cứu và phát triển trong cộngđồng kỹ sư, nhà nghiên cứu và sinh viên trong lĩnh vực công nghệ thông tin và viễnthông Việc tăng cường giáo dục và đào tạo về RISC-V tại các trường đại học và tổchức giáo dục đã thúc day sự quan tâm và nghiên cứu trong lĩnh vực này Bên cạnh

đó sự quan tâm đến bảo mật thông tin và thuật toán mật mã đã thúc đây việc đào tạo

và học tập về lĩnh vực này trong các trường đại học và tổ chức giáo dục tại ViệtNam Các nghiên cứu về thuật toán mật mã trên RISC-V đang được quan tâm vàtiến hành nghiên cứu trong thời gian gần đây

1.2 Mục tiêu đề tài

- _ Nghiên cứu kiến trúc tập lệnh RV32I cho lõi vi xử lý RISC-V 32 bit

- Thiết kế phần cứng cho bộ vi xử lý RISC-V 32 bit bằng ngôn ngữ mô tả

phần cứng Verilog

- Nghiên cứu thuật toán mã hóa SHA256

- Tích hợp các tập lệnh cho SHA256 vào thiết kế

- _ Tiến hành hiện thực thuật toán SHA256 trên phần cứng đã cải tiến

- Hién thực thiết kế trên kit FPGA (Virtex VC707)

- IP hoạt động ở tan số 100MHz

1.3 Giới hạn đề tài

Hệ thống hoạt động tốt ở tần số 100MHz Vi xử lý có thể thực hiện các phéptính toán số nguyên chưa thực hiện các phép tính dấu chấm động

Trang 14

Chương 2 CƠ SỞ LÝ THUYET

2.1 Kiến trúc tập lệnh RISC-V

2.1.1 Giới thiệu RISC-V

Hiện tại những công ty thành công với kiến trúc tập lệnh của mình đang thốngtrị thị trường vi xử lý như Intel, ARM, IBM đều có những bằng sáng chế trênkiến trúc tập lệnh (ISA) mà họ đang sở hữu, do đó các công ty này đồng thời ngăncấm việc thiết kế các bộ vi xử lý sử dung ISA của họ nếu không được họ cấp phép.Bat kì một thỏa thuận nào liên quan đến bản quyền sử dung ISA đều phải tốn từ 6 -

24 tháng trao đổi va chi phí phải tốn chừng từ một đến mười triệu đô la Mỹ, và tat

nhiên thỏa thuận với trường đại học hay những công ty có quy mô nhỏ lẻ thường bị

loại trừ Việc độc quyền đã cản trở sự cạnh tranh và đổi mới bằng việc không chonhiều người thiết kế và chia sẻ những vi xử lý có những ISA tương thích với nhau.Ngoài ra, mỗi ISA của mỗi hãng sử dụng một hệ sinh thái phần mềm riêng, làmtăng chi phi phát triển Thậm chí trên cùng một thiết bị lại sử dụng nhiều phần mềm

khác nhau của những ISA khác nhau.

Những thách thức đó là tiền đề, là động lực để cho ra đời những vi xử lý mãnguồn mở đi cùng là những ISA miễn phí nhưng thống nhất Một trong số đó làRISC-V, là một ISA mở được xây dựng dựa trên những nguyên tắc của kiến trúc

tập lệnh RISC (Reduced Instruction Set Computer), đã và đang thu hút được sự phát

triển và ứng dụng từ các nhà khoa cũng như các công ty sử dụng vi xử lý trên thếgiới Trái ngược với hầu hết các ISA khác, RISC-V hoàn toàn miễn phí cho bat kỳmục đích sir dụng nào Nó cho phép bat kỳ ai có thể thiết kế, sản xuất va bán cácsản phẩm phần cứng và phần mềm sử dụng RISC-V RISC-V được phát triển lầnđầu tiên bởi Đại học California, Berkeley vào năm 2010 Cho đến nay đã có hàngchục bộ vi xử lý được phát triển dựa trên ISA này nhằm vào nhiều mục đích ứng

dụng và phân khúc khác nhau.

RISC-V ISA được định nghĩa dựa trên cơ sở integer, một chuẩn có mặt trongbất kỳ hiện thực nào Chuẩn cơ bản integer được giới hạn bởi một bộ lệnh để phù

Trang 15

hợp cho trình biên dịch, trình hợp ngữ, trình liên kết và hệ điều hành RISC-V thựcchất là một họ gồm các ISA có liên quan Mỗi bộ lệnh integer trong họ đấy được kýhiệu bằng độ rộng của thanh ghi integer, kích thước vùng nhớ địa chỉ và số lượngthanh ghi integer trong kiến trúc Có hai biến thé chính của chuẩn integer cơ bản là

RV32I và RVó64I, có kích thước vùng nhớ địa chỉ tương ứng là 32-bit va 64-bit.

Cụm từ XLEN được dùng để chỉ độ rộng của thanh ghi integer theo bit (32-bit hoặc

64-bit).

Để hỗ trợ cho việc phát triển phần mềm, một tập các chuẩn mở rộng được địnhnghĩa để cung cấp các phép tính phức tạp hơn Chuẩn cơ bản integer có tên là “I”(đi kèm với tiền tố RV32 hoặc RV64 tùy độ rộng thanh ghi integer), cùng với đó làcác lệnh tính toán integer, nạp integer, lưu trữ integer, và các lệnh điều khiển luồng.Tùy theo nhu cầu mà chuẩn I có thể đi kèm một hoặc nhiều chuẩn mở rộng Chuẩn

hỗ trợ nhân chia integer “M” bồ sung thêm lệnh dé thực hiện phép nhân và phépchia các giá trị có trong thanh ghi integer Chuẩn nguyên tử “A” bổ sung thêm lệnhđọc, ghi, chỉnh sửa vùng nhớ cho việc đồng bộ liên bộ xử lý Chuẩn floating point

độ chính xác đơn “F” bổ sung thêm tập thanh ghi floating point, lệnh tính toán vànạp lưu floating point chính xác đơn Chuẩn floating point độ chính xác kép mởrộng thanh ghi và các lệnh floating point lên chính xác kép Chuẩn “C” cung cấpkhả năng nén dữ liệu để thu hẹp lệnh sang dạng 16-bit Ngoài ra còn có nhữngchuan mở rộng khác ít phổ biến hơn

Trang 16

Hình 2.1: Các thanh ghi trong RV32I

Trong chuẩn RV32I, có bốn định dạng lệnh chính (R/I/S/U) Tat cả đều có độđài 32-bit và được lưu trữ trong vùng nhớ bốn byte RISC-V ISA giữ trường giá trịcủa thanh ghỉ nguồn (rs1 và rs2) và thanh ghi dich (rd) ở cùng một vị trí cho tat cảcác định dạng lệnh nhằm đơn giản hóa việc giải mã Ngoài ra còn có hai biến thể

định dạng lệnh (B/J) dựa trên cách xử lý trường immediate (hằng số) như Hình 2.2

31 30 25 24 21L 20 19 15 14 1211 8 7 6 0

Funct? TD ni Tunct3 Td opcode | R-type

imm{11:0] rs] funct3 rd opcode | I-type

ïmm[TT] IS mĩ amct3 imm|[40) opcode | S-type

imim[12] | ñmm[105] n2 TSI funct3_| imm[4:1] | imm[1l] | opcode | B-type

imm|[31-12] Td opcode | U-type

imm/20] imm[10:1] 1mm 11] imm/[19:12] rd opcode | J-type

Hình 2.2: Dinh dạng các lệnh trong RV32I

Trang 17

2.2 Các lệnh chuẩn RV32I được sử dụng trong hệ thống [1]

2.2.1 Lệnh U- Type

Lệnh LUI:

- Định dang: lui rd,imm

- Mô tả: Lấy 32 bit gồm 20 bit cao là giá trị imm, 12 bit thấp gán bằng 0 Giá

trị này lưu vào thanh ghi rd.

- Thực thi: x[rd] = {immediate[31:12], 12’b0)

Lénh AUIPC:

- Định dang: auipc rd, imm

- Mô tả: Lay 32 bit gồm 20 bit cao là giá trị imm, 12 bit thấp gán bằng 0 Giá

trị này cộng với địa chỉ của PC hiện tại sau đó lưu kết quả vào thanh ghi rd

- Thực thi: x[rd] = {immediate[31:12], 12’b0}

2.2.2 Lệnh J — Type

Lénh JAL:

- Dinh dang: jal rd, immediate

- Mô tả: Lưu địa chi PC+4 vào thanh ghi rd (địa chi trả về), sau đó nhảy Dia

chỉ nhảy có được bằng cách lấy địa chỉ PC hiện tại cộng immediate(được

mở rộng dấu).

- Thực thi: x[rd] = pc+4; pe = pc + sext(immediate)

2.2.3 Lệnh B- Type

Lệnh BEQ:

- Dinh dạng: beq rs1, rs2, immediate

- Mô tả: So sánh có dấu giá trị thanh ghi rs1 và rs2, rẽ nhánh nếu rs1 bằng

rs2 Địa chỉ rẽ nhánh có giá tri bằng immediate*2(được mở rộng dấu)

- Thực thi: if (rsl ==rs2) pc = pc + sext(immediate)

Trang 18

Lệnh BNE:

- Định dang: bne rsl, rs2, offset

- Mô tả: So sánh có dấu giá trị thanh ghi rs1 và rs2, rẽ nhánh nếu rs1 không

bằng rs2 Địa chỉ rẽ nhánh có giá trị bằng offset*2(được mở rộng dấu)

- Thực thi: if (rsl !=rs2) pe += sext(offset)

Lénh BLT:

- Định dang: blt rs1, rs2, offset

- Mô tả: So sánh có dau giá trị thanh ghi rs1 va rs2, rẽ nhánh nếu rs1 bé hơn

rs2 Dia chỉ rẽ nhánh có giá tri bằng offset*2(được mở rộng dấu)

- Thực thi: if (rsl <rs2) pc += sext(offset)

Lénh BGE:

- Định dang: bge rsl, rs2, offset

- Mô tả: So sánh có dau giá trị thanh ghi rs1 va rs2, rẽ nhánh nếu rs1 lớn hơn

hoặc bằng rs2 Địa chỉ rẽ nhánh có giá trị bằng offset*2(được mở rộng

dấu).

- Thực thi: if(rsl >=rs2) pc += sext(offset)

Lệnh BLTU:

- Định dạng: bltu rs1, rs2, offset

- Mô tả: So sánh không dấu giá trị thanh ghi rsl và rs2, rẽ nhánh nếu rsl bé

hơn rs2 Địa chỉ rẽ nhánh có giá trị bằng offset*2(được mở rộng dấu).

- Thực thi: if (rsl <rs2) pc += sext(offset)

Lénh BGEU:

- Định dang: bgeu rs], rs2, offset

- Mô tả: So sánh không dấu giá trị thanh ghi rs1 và rs2, rẽ nhánh nếu rs1 lớn

hơn hoặc bằng rs2 Địa chỉ rẽ nhánh có giá tri bằng offset*2(được mở rộngdấu).

- Thực thi: if(rsl >=rs2) pc += sext(offset)

Trang 19

2.2.4 Lệnh I- Type

Lệnh JALR:

- Định dạng: jalr rd, rs1, offset

- Mô tả: Luu địa chi PC+4 vào thanh ghi rd (dia chỉ tra về), sau đó nhảy Địa

chỉ nhảy có được bằng cách lấy giá trị rsI cộng offset(được mở rộng dấu)sau đó đặt bit thấp nhất của kết quả đấy bằng 0

- Thực thi: t=pc+4; pc=x[rsl]+sext(offset); x[rd]=t

Lệnh LB:

- Định dang: Ib rd, offset(rsl)

- Mô ta: Luu 8 bit giá tri(mo rộng có dấu) từ bộ nhớ có địa chi rs1+offset

vào thanh ghi rd Các bit trống của rd gán bằng 0

- Thực thi: x[rd] = sext(M[x[rs1] + sext(offset)][7:0])

Lệnh LH:

- Định dang: lh rd, offset(rsl)

- Mô tả: Luu 16 bit giá trị(mở rộng có dấu) từ bộ nhớ có địa chỉ rs1+offset

vào thanh ghi rd Các bit trống của rd gán bằng 0

- Thực thi: x[rd] = sext(M[x[rsl] + sext(offset)][15:0])

Lệnh LW:

- Định dang: Iw rd, offset(rs1)

- Mô tả: Luu 32 bit giá trị có dấu từ bộ nhớ có dia chỉ rsI+offset vào thanh

ghi rd Các bit trống của rd gan bằng 0

- Thực thi: x[rd] = sext(M[x[rs1] + sext(offset)][31:0])

Lệnh LBU:

- Định dang: lbu rd, offset(rs1)

- Mô tả: Lưu 8 bit giá trị(mở rộng không dấu) từ bộ nhớ có địa chi rs1+offset

vào thanh ghi rd Các bit trống của rd gán bằng 0

- Thực thi: x[rd] = M[x[rs1] + sext(offset)][7:0]

10

Trang 20

Lệnh LHU:

- Định dạng: lhu rd, offset(rs1)

- Mô tả: Lưu 16 bit giá trị(mở rộng không dấu) không dấu từ bộ nhớ có địa

chỉ rsI+offset vào thanh ghi rd Các bit trống của rd gan bằng 0

- Thực thi: x[rd] = M[x[rs1] + sext(offset)][15:0]

Lệnh ADDI:

- Định dang: addi rd, rs1, imm

- Mô tả: Lưu kết quả cộng của giá trị thanh ghi rs! cộng imm(được mở rộng

dau) vào thanh ghi rd

- Thực thi: x[rd] = x[rs1] + sext(immediate)

Lénh SLTI:

- Định dang: slti rd, rs1, imm

- Mô tả: So sánh có dấu giá trị thanh ghi rsl với imm(được mở rộng dấu)

Thanh ghi rd bằng 1 nếu rs! bé hơn imm, ngược lại rd bằng 0

- Thực thi: x[rd] = x[rsl] < s_sext(immediate)

Lệnh SLTIU:

- Dinh dạng: sltiu rd, rs1, mm

- Mô tả: So sánh không dấu giá trị thanh ghi rs! với imm(được mở rộng

dau) Thanh ghi rd bằng 1 nếu rs1 bé hơn imm, ngược lại rd bằng 0

- Thực thi: x[rd] = x[rsl]<u_sextimmediate)

Lệnh XORI:

- Định dang: xori rd, rsl, imm

- Mô tả: Lưu kết quả xor giữa thanh ghi rs] và imm(được mở rộng dau) vao

Trang 21

Mô tả: Lưu kết quả or giữa thanh ghi rs] và imm(được mở rộng dấu) vào

Dinh dang: andi rd, rs1, imm

Mô ta: Lưu kết quả and giữa thanh ghi rs1 và imm(được mở rộng dấu) vào

Dinh dang: srli rd, rsl, shamt

Mô ta: Dịch phải logic giá trị thanh ghi rs1, số lượng bit cần dich lay từ 5

bit shamt.

Thực thi: x[rd] = x[rs1] >> shamt

Lénh SRAI:

2.2.5.

Dinh dang: srai rd, rs1, shamt

Mô tả: Dich phải số học giá trị thanh ghi rs1, số lượng bit cần dich lay từ 5

bit shamt.

Thực thi: x[rd] = x[rs1] >> shamt

Lệnh S — Type Lệnh SB:

Dinh dang: sb rs2, offset(rs1)

12

Trang 22

- Mô tả: Lưu 8 bit thấp giá trị trong thanh ghi rs2 vào trong bộ nhớ có địa chỉ

- Mô tả: Dich trái logic giá trị thanh ghi rs1, số lượng bit cần dich lấy từ 5 bit

thấp của thanh ghi rs2 Lưu kết quả vào thanh ghi rd

-_ Thực thi: x[rd] = x[rsl] << x[rs2]

Trang 23

Lệnh SLT:

- Định dang: slt rd, rs1, rs2

- Mô tả: So sánh có dấu giá trị thanh ghi rs] với rs2 Thanh ghi rd bằng 1 nếu

rsl bé hơn rs2, ngược lại rd bằng 0

- Thực thi: x[rd] = x[rsl] < x[rs2]

Lệnh SLTU:

- Định dang: sltu rd, rs1, rs2

- Mô tả: So sánh không dấu giá trị thanh ghi rs! với rs2 Thanh ghi rd bằng |

nếu rs1 bé hơn rs2, ngược lại rd bằng 0

- Mô tả: Dịch phải logic giá trị thanh ghi rs1, số lượng bit cần dich lấy từ 5

bit thấp của thanh ghi rs2 Lưu kết quả vào thanh ghi rd

-_ Thực thi: x[rd] = x[rsl] >> u_x[rs2]

Lénh SRA:

- Dinh dang: sra rd, rsl, rs2

- Mô tả: Dịch phải số học giá trị thanh ghi rs1, số lượng bit cần dich lay từ 5

bit thấp của thanh ghi rs2 Lưu kết quả vào thanh ghi rd

Trang 24

Lệnh AND:

- Định dang: and rd, rs1, rs2

- Mô tả: Lưu kết quả and giữa giá trị thanh ghi rs1 và rs2 vào thanh ghi rd

- Thực thi: x[rd] = x[rsl] & x[rs2]

2.3 Thuật toán SHA256

2.3.1 Giới thiệu thuật toán SHA256

Thuật toán SHA-256 (Secure Hash Algorithm 256-bit) là một trong những

thuật toán băm (hash) phổ biến và được sử dụng rộng rãi trong lĩnh vực bảo mậtthông tin Nó là một phần của họ thuật toán SHA-2, được phát triển bởi Cơ quan Anninh Quốc gia Hoa Ky (NSA) và công bố bởi Viện Tiêu chuẩn và Công nghệ Quốc

gia Hoa Kỳ (NIST) vào năm 2001.

Mục đích chính của thuật toán SHA-256 là tạo ra một giá trị băm duy nhất chomột dữ liệu đầu vào, không thể dễ dàng suy ra dữ liệu gốc từ giá trị băm Giá trịbăm này có độ dài 256 bit, tức là 32 byte, và thường được biểu diễn dưới dạng một

chuỗi ký tự hexa.

Thuật toán SHA-256 hoạt động bằng cách chia dữ liệu đầu vào thành các khối

có độ dài có định, sau đó tiền hành xử lý từng khối một dé tao ra giá trị băm cuối

cùng.

Thuật toán SHA-256 đạt được sự bảo mật bằng cách sử dụng các phép toánlogic phức tạp và tính toán ngược Nó được thiết kế để chống lại các cuộc tấn côngphổ biến như tìm kiếm ngược (brute-force), tấn công chọn ngẫu nhiên (birthdayattack) và tim kiém va cham (collision attack)

Một trong những ứng dụng chính của thuật toán SHA-256 là xác thực tính toàn

vẹn của dữ liệu Khi một tập tin hoặc thông điệp được băm bằng SHA-256, kết quảbăm (giá trị băm) có thể được lưu trữ hoặc chuyển đi một cách an toàn Bat kỳ thayđổi nào trong nội dung của tập tin sẽ dẫn đến một giá trị băm khác Nhờ vào tínhchất này, chúng ta có thể xác thực xem liệu dữ liệu đã bị sửa đổi hay không bằng

15

Trang 25

cách so sánh giá trị băm của dữ liệu ban đầu với giá trị băm hiện tại Nếu hai giá trịbăm khác nhau, điều này cho thấy dữ liệu đã bị thay đổi và tính toàn vẹn của nó

không còn được đảm bảo.

Thuật toán SHA-256 cũng có thể được sử dụng để xác định một định danh duynhất cho dữ liệu Mỗi khối dữ liệu hoặc tệp tin có thé được băm bằng SHA-256 dé

tạo ra một giá trị băm duy nhất Giá trị băm này có khả năng duy nhất và không thé

dễ dàng tái tạo trở lại dữ liệu gốc Do đó, nó có thể được sử dụng như một định

danh duy nhất cho dữ liệu trong các hệ thống quản lý và tra cứu thông tin

Thuật toán SHA-256 cũng được sử dụng trong kỹ thuật chứng thực số (digitalsignature) và xác thực thông tin Khi một tài liệu được ký kết số (digital signature),một giá trị băm của tài liệu đó được tạo ra bằng SHA-256 và sau đó được mã hóabằng khóa riêng tư của người ký Khi người nhận muốn xác thực chữ ký số, họ cóthể sử dụng khóa công khai tương ứng để giải mã giá trị băm và so sánh nó với giátrị băm tính toán lại từ tài liệu nhận được Nếu hai giá trị băm khớp nhau, điều nàycho thấy tài liệu không bị thay đổi và chữ ký số là hợp lệ

Thuật toán SHA-256 là một công cụ mạnh mẽ trong việc bảo mật thông tin và

xác thực dữ liệu Các ứng dụng của SHA-256 từ việc xác thực tính toàn vẹn dữ liệu,

bảo mật mật khâu, xác định định danh duy nhất cho dữ liệu và kỹ thuật chứng thực

số đã đóng góp quan trọng trong việc đảm bảo tính bảo mật và tin cậy trong thế giới

kỹ thuật số ngày nay Với tính bảo mật cao và khả năng tạo ra giá trị băm duy nhất,SHA-256 tiếp tục đóng vai trò quan trọng trong việc bảo vệ thông tin và ứng dụngrộng rãi trong nhiều lĩnh vực khác nhau

2.3.2 Các bước trong thuật toán SHA256

- Bước 1: Padding the Message

Mục đích của phần đệm này là để đảm bảo rằng thông điệp được đệm là bội

số của 512 hoặc 1024 bit, tùy thuộc vào thuật toán

16

Trang 26

Xác định N sao cho độ dài chuỗi gốc nhỏ hơn hoặc bằng N*512 — 64 bits.Đệm thêm một bit 1 vào sau chuỗi gốc và các bit còn lại là 0, 64 bits cuối sẽ là độ

dài của chuỗi.

Ví dụ:

Chuỗi ban đầu có 1000 bits, áp dụng công thức trên 1000 <= 512*N

-64, vậy M=3

- Vậy số bit cần đệm là: 512 * 3 — 1000 - 64 = 472 bits Ví dụ về đệm

bit được thé hiện trong Bảng 2.1

Bang 2.1: Vi du vé dém théng diép

Message 1 | 000000 (Remaining all 0’s)

1000 bit message 472 bit padding

Vi dụ, chuỗi “abc” (biểu diễn dưới dang 8-bit ASCII sẽ có độ dài là 8x3=24

bit, nên N = 1, chuỗi “abc” sau khi đệm sẽ có dang sau:

- Bước 2: Chia thông điệp thành các khối

Thông điệp sau khi được đệm sẽ được chia thành N khối mỗi khối có độ dài

512 bit: M?, M®, , M9, Trong mỗi khối 512 bits sẽ được chia thành 16 khối mỗikhối nhỏ hơn có độ dài 32 bits: Mo, MỊ®), Mis®

17

Trang 27

- Bước 3: Khởi tạo giá trị băm ban đầu (H9)

Trước khi tính toàn bat đầu ta cần phải khởi tạo các giá trị băm TrongSHA256 giá trị băm ban đầu sẽ gồm 8 giá trị băm có độ dài 32 bit:

- Bước 4: Khởi tai các giá trị hằng số cho SHA256

SHA256 sử dụng 64 hang số 32 bit Ko, Ki, , Kes Các hằng số này là 32 bitđầu tiên của phần thập phân của căn bậc 3 sáu mươi tư số nguyên tố đầu tiên Cácgiá trị hằng số sử dụng trong SHA256 được thê hiện trong Hình 2.3

b5c0fbcf 243185be 0£c19dc6 b00327c8 432c6dfc c24b8b70 2748774c 84c87814

e9b5dba5 550c7dc3 240calcc b£597fc7 53380d13 c76c51a3 34b0bcb5 8cc70208

3956c25b 72be5d74 2de92c6£

c6e00b£f3 650a7354 d192e819 391c0cb3 90befffa

59f111£f1 80deblfe 4a7484aa d5a79147 766a0abb 6990624 4ed8aa4a a4506ceb

Hình 2.3: Các giá trị hằng số cho SHA256

923£82a4 9bdc06a7 5cb0a9dc 06ca6351 81c2c92e

£40e3585 5b9cca4£f be£f9a3f7

ablc5ed5 c19bf174 76£988da 14292967 92722c85 106aa070 682e6ff3 c67178£2

18

Trang 28

Bước 5: Tính toán hàm băm SHA256

Mỗi khối thông điệp M©), M®, , M® sẽ được xử lý theo trình tự sau:

Trang 29

Hy® = e + Hy)

Hs = f+ Hs)

He = g+ Ho) Hy? = h+ Hye)

}

Bước 6:

Sau khi lặp di lặp lại các bước trên N lần (MỸ), kết quả 256-bit thông điệp

Ho) H¡£)|I H2? |I Hạ) | H2®|I H:® || Ho IH

Giải thích một số ký hiệu đặc biệt trong thuật toán:

ROTR*(x) Rotate Right, Xoay phải n bit x có độ dài là w-bit, ta có n với

0 <=n< w, phép tính được định nghĩa như sau: ROTR"(x) = (x << n) v

(x >> w - n)

e SHR"(x): Shift Right, dịch phải n bit

© d(x) = ROTR7(x) ® ROTR'*(x) ® SHR*(x)

© =64(x) = ROTR!(x) ® ROTR'*(x) ® SHR'°%(x)

© L554) = ROTR(x) @ ROTR'3x) @ ROTR*(x)

© Ch(x,y,z) = (x Ay) (x Az)

© Maj(x,y,Z) =(x Ay) ® (x Az) ® (y Az)

20

Trang 30

2.4 Các lệnh hỗ trợ cho việc thực hiện thuật toán SHA256 [2]

2.4.1 Lệnh chuyển đổi sha256sig0

31 30 29 25 24 20 19 15 14 12 11 7 6 0

[o s[o + o 0 ofo o 01 0| 1 [o 2s 4] d oo10011

Hình 2.4: Dinh dang lệnh sha256sig0

- Mô tả: Thực hiện phép chuyền đổi Sigma0 được sử dụng trong SHA256

- Thực thi: sha256sig0 rd, rs1

- Hoạt động: rd = ROTR7(s1) ® ROTR'(rs1) ® SHR*(rs1)

2.4.2 Lệnh chuyển đổi sha256sig1

- Hoạt động: rd = ROTR!”(s1) ® ROTR'?(s1) @ SHR!?%(rs1)

2.4.3 Lệnh chuyển đổi sha256sum0

- Hoạt động: rd = ROTR?(rs1) @ ROTR'?(rs1) @ ROTR*(rs1)

2.4.4 Lệnh chuyển đổi sha256sum1

Trang 31

2.5 Hiện thực phần mềm thuật toán SHA256

Nhằm so sánh kết quả với thiết kế phần cứng, nhóm tiến hành hiện thực thiết

func_stringtobin() I lính độ dài của message (bit) và:

chuyển sang binary

func_bitpadding() lÌ + Tính số bit cần padding

iThuc hiện padding và chia thành `

- Func_bitpaddingQ: Tính số bit cần đệm vào trong chuỗi thông điệp

- Func_createblockQ: Thực hiện đệm các bit và chia thông điệp thành các

block khác nhau.

22

Trang 32

- CalculatorQ: Thực hiện tính toán SHA256 Sơ đồ giải thuật hàm

Calculator() được mô tả như trong Hình 2.9.

HS =F + HS

Hồ =G + Hệ H7 =H+HT

Wit) = BLOCK (i[32t : 32tx31]

Wt) = ø]ÑW-(-Z)) + W_t-7) + e0/W (-18)) + W_{e-16) |

TÍ=H+E 16) + ChE EG) +K + Wt T2 = š_0(4) + Mgj(AB,C)

H

Hình 2.9: Sơ đồ giải thuật hàm Calculator()

Sơ đồ giải thuật hàm CalculatorQ trong hình trên được vẽ dựa theo “bước 6:

tính toán hàm băm SHA256” tại mục “2.3.2 Các bước trong thuật toán SHA256”.

23

Trang 33

3.1 Thiết kế hệ thống tổng quát

Chương 3 THIET KE HỆ THONG

Bộ vi xử lý cơ bản bao gồm các khối chính: khối Core, Khối InstructionMemory và khối Data Memory như Hình 3.1

INSTRUCTION

MEMORY

{>} insn_adar instruction

tin ok

dout

addr din

ck DATA MEMORY

Trong đó, khối Core sẽ

Counter, khối Control Unit,

Bảng 3.1 Tín hiệu khối Core

Tín hiệu Loại tín hiệu | Độ rộng Mô tả

clk input 1 bit Tín hiệu clock tích cực mức cao

rst input 1 bit Tin hiệu reset mức thấp

instruction input 32 bit Giá trị các lệnh thực thi

mem_ out input 32 bit Giá tri đữ liệu nhận được từ DMEM

pc_out output 32 bit Gia tri Program Counter

alu_out output 32 bit Kết quả của phép tính toán

rs2_val output 32 bit Gia tri doc ra tir rs2

mem_we_in output 4 bit Tín hiệu cho phép ghi vào DMEM

24

Trang 34

3.1.1 Khối Instruction Memory

Khối Instruction Memory sẽ nhận dia chỉ lệnh từ Core và đọc ra các câu lệnh

và truyền cho khối Core để thực thi Cấu trúc khối Instruction Memory được mô tả

Bảng 3.2: Tín hiệu khối Instruction Memory

Tín hiệu Loại tín hiệu Độ rộng Mô tả

insn_addr input 32 bit Dia chi của câu lệnh

instruction output 32 bit Giá trị của câu lệnh đọc ra

3.1.2 Khối Data Memory

Sau khi khối Core thực hiện tính toán từ các câu lệnh nhận được từ khốiInstruction Memory Khối Core sẽ truyền các tín hiệu, địa chỉ và dữ liệu để lưu vàokhối Data Memory hoặc đọc dữ liệu từ khối Data Memory Khối Data Memorynhận địa chỉ, là dữ liệu được tính toán từ khối Core và lưu dữ liệu vào theo địa chỉ.Cấu trúc khối Data Memory được mô tả như Hình 3.3

Ngày đăng: 02/10/2024, 05:21

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN