Trong đó, thuật toán mã hóa bat đối xứng — Public Key Encryption PKE - là Rivest-Shamir-Adleman RSA, cùng với thuật toán mã hóa một chiều — One-WayHashing OWH - là Secure Hash Algorithm
DSA verification (Bộ Kiểm tra chữ kí số)
Từ Hình 4.9 đến Hình 4.12 là kết quả tông hợp, phân tích Timing, lượng điện năng tiêu thụ và tài nguyên phần cứng sử dụng của hệ thống.
Hình 4.9: Tài nguyên của khối DSA verification
Dựa vào Hình 4.9, ta thấy được tài nguyên hệ thống sử dụng Số lượng LUT và FF được dùng cho khối DSA verification không quá lớn vào khoảng
Name Waveform Periad(ns) Frequency (MHz)
Hình 4.10: Xung clock chính của khối DSA verification
Khối DSA verification nhóm xây dựng được sử dụng xung clock chính với chu kỳ 23.000 ns và tần số 43.478 MHz được mô tả như Hình 4.10.
Worst Negative Slack (WNS): 0.049ns Worst Hald Slack (WHS): 0.055 ns Worst Pulse Width Slack (WPWS): 10.858 ns Total Negative Slack (TNS): 0.000ns Total Hold Slack (THS): 0.000 ns Total Pulse Width Negative Slack (TPWS): 0.000ns Number of Failing Endpoints: 0 Number of Failing Endpoints: 0 Number of Failing Endpoints: ũ
Total Number ofEndpoints: 51238 Total Number of Endpoints: 51236 Total Number of Endpoints: 25070
All user specified timing constraints are met.
Hình 4.11: Phân tích Timing cho khối DSA verification
Trong quá trình Synthesis và Implementation, phần mềm Vivado đã tính toán và phân tích thời gian của các path timing có trong thiết kế của khối DSA verification Hình 4.11 sẽ mô tả kết quả phân tích của phần mềm, cho thấy khối
DSA verification đã thỏa các điều kiện về WNS, WHS và WPWS với các giá trị lần lượt 0.049 ns, 0.055 ns và 10.858 ns đủ điều kiện dé đạt tốc độ 43.478 MHz.
Power analysis from Implemented netlist Activity On-Chip Power derived from constraints files, simulation files or vectorless analysis Ì Dynamic: 0182W_ (44%)
Total On-Chip Power: 0.435 W [439 | clocks: 0.024W (25)
Design Power Budget: Not Specified [ Signals: 0.107W_ (56%)
Power Budget Margin: NIA WE Logic: 0.080W (31%)
Power supplied to off-chip devices: 0W Confidence level: Low
Hình 4.12: Năng lượng tiêu thụ của khối DSA verification
Năng lượng tiêu thụ của khối DSA verification vào khoảng 0,317 W, trong đó chiếm nhiều nhất là năng lượng dành cho các Signals (0.037 W) Hình 4.12 sẽ mô ta chỉ tiết hơn về năng lượng tiêu thụ của bộ Kiểm tra chữ kí số.
4.2.4 Thiết kế hệ thong SoC sử dụng khối DSA verification
Từ Hình 4.13 đến Hình 4.16 là kết quả tổng hợp, phân tích Timing, lượng điện năng tiêu thụ và tài nguyên phần cứng sử dụng của hệ thống.
Hinh 4.13: Tai nguyén cua Block Design SoC
Dựa vào Hình 4.13, ta thấy được tài nguyên hệ thống sử dung Số lượng LUT và FF được dùng cho Block Design không quá lớn vào khoảng 42227/303600
(chiếm 13.91%) và 43983/607200 (chiếm 7.24%) Tài nguyên về BRAM chiếm khoảng 25.63%.
Name Waveform Period (ns) Frequency (MHz)
CLK_IN1_D_0_clk_p {0.000 2.500} 5.000 200.000 clk_out1_SOC_clk_wiz_1_0 {0.000 5,000} 10.000 100.000 clk_out2_SOC_clk_wiz_1_0 {0.000 16.667} 33.333 30.000
Hinh 4.14: Xung clock chinh cua Block Design SoC
Hình 4.14 sẽ thé hiện tong số lượng xung clock trong thiết kế Trong Block Design có các xung clock khác nhau nhờ khối PLL Do đó phần mềm Vivado cũng phải tính toán tất cả các đường xung clock đó, xem xét Timing của thiết kế có thỏa hay không như nhóm đã trình bày, xung clock cấp cho IP xử lý của hệ thống là 30
MHz (clk_out2_SOC_clk_wiz_0_1).
Worst Negative Slack (WNS): 0.393 ns Worst Hold Slack (WHS): 0.057 ns Worst Pulse Width Slack (WPWS): 1.100 ns
Total Negative Slack (TNS): 0.000 ns Total Hold Slack (THS): 0.000 ns Total Pulse Width Negative Slack (TPWS): 0.000 ns
Number of Failing Endpoints: 0 Number of Failing Endpoints: 0 Number of Failing Endpoints: 0
Total Number of Endpoints: 115597 Total Number of Endpoints: 115511 Total Number of Endpoints: 45154
All user specified timing constraints are met.
Hinh 4.15: Phan tich Timing cho Block Design SoC
Hình 4.15 cho thấy phân tích thời gian của Block Design thỏa các điều kiện về Timing Các giá trị 0.393 ns, 0.057 ns và 1.100 ns lần lượt của WNS, WHS và
WPWS đều lớn hon 0 nên đã thỏa Timing các xung clock như Hình 4.15 và không bị violation về Timing.
Power analysis from Implemented netlist Activity On-Chip Power derived from constraints files, simulation files or vectorless analysis Dynamic: 0.377W = (59%)
Total On-Chip Power: 0.638 W 20% Clocks: 0075W_ (20%)
Design Power Budget: Not Specified Signals: 0.106W (28%)
Power Budget Margin: N/A WW Logic: 0.046 W Junction Temperature: 25.7°C Mi BRAM: 0.019 W Thermal Margin: 59.3°C (50.2 W) Mvucm: 0127W
Power supplied to off-chip devices: 0 W
Launch Power Constraint Advisor to find and fix invalid switching activity
Hình 4.16: Năng lượng tiêu thụ của Block Design
Năng lượng tiêu thụ của Block Design SoC vào khoảng W, trong đó chiếm nhiều nhất là năng lượng dành cho các Signals (W) Hình 4.16 sẽ mô tả chỉ tiết hơn về năng lượng tiêu thụ của bộ Kiêm tra chữ kí sô.
4.3 Kết qua mô phóng các thiết kếi £
Dé kiêm thử thiệt kê, nhóm sẽ chọn ngau nhiên một Test case được sinh ra từ phân mêm đã đê cập ở mục 2.4.
Các giá trị này đã được tải vào kiến trúc được thiết kế dé thực hiện phép lũy thừa mô-đun dé thu được thông điệp M_mapple được giải mã:
Các dữ liệu như M, E, N, M_mapple đều được đọc từ file text của Test case thông qua top testbench.
Toàn bộ quá trình mô phỏng như Hình 4.17 sau:
> B8 Mod_out{1023:0), ẢỶ Mod_valid_out
Value 9.000000000 mz — 2.009000009 ws 4.000000000 ae 6 000000000 me 8.000000009wz 10 000000000 wz 12.00900000 xz 14.00000000 me 16.000000000 wz 19.00000000 as - 20.00000000.
2TTRU3T10dcE (Z75E85775ae8612ae2d573835ab115.4eqdS0bđ0ebe2#2ba1baZ0e45Z7012£e2E283010Z4258B0455Z085Z017417£802E 5274283 843eo63555e535cSe5e54eee95488aE4e64e£5£425b0đ0405b 4b £442a50 8# NỊ10230] 3a84299cf04£ (3a84298ef046cce34b8a7f65826368a5423575ed2£45393f6a8a04bbZaad5beS01£1ba33774a57948aZ2a3e4bblđ£s471b4517254#6f62e4a044Zb0s55fđ78a8a049a£7a6af88784535731 À valld_out 0 T T T T T |
> ®! M_datal1023:0) 277103770dce Ê77E03770de8612ae2d6#98a3ab1784edd60bd0ebe2£2ba1bd20e4527012£e2#7e301024268b045320£852017đ7 £80eb527de83Zd3ee6e355e83beSeSe94eee57498a£4e64e f2 f425b040.-
Rỉ'N_ data[1023:0] 3384299cf04Ê [3a84295c f046ccc34b3a7Ê65826368a54e3975eđ9Ê45393Ê6a8a04bbZaad3bcS01 Ê1ba3377da3948aZa3e4bb1d6ed71b4S17254 Ê8 Ê63e4a044Zb0e 58 f478a8a049aÊ7a6af0875453b791
> đt r2_data[1023:0] 3018d8a41dd 5018đ8a41đ2ded851845ac0fde1e5aZ8bSba5b10851147e2ds04e456657a5eb37acÊ856a6z544ób7815e8deử8bz58Z65b4a3Êf47c168e3ce554P55Zce2eS855aZ5bd104c0a14f5đZ85.-
> R#!_ data(1023:0] 3Ô000000000L 38545506a51ebaBbaeee ⁄22324517b30b63a1e2af£e £44bdd754fc020ae08052762e260ed163adb64ee72b0bc662282c6a16b362247a02e5eLe3£2f041dedb3Ibdfb26da8641b?28.
B#A_1(10230] 3018d8a41dd 39549506a31eba8baeee /2Z32451£b38b63a1e2af£e £44bdđ75f4£c020ae0805276Ze260ed163adbẽ4ee77b0bc66Z292c6a16b362247a02e5c1e3£2 £041dedb31bdfb26đa8641b?28b,
> 8#B_1(10230] 27TI03T70dcÊ 59585806a51ebaEbasee ⁄22324517b38b63a1s2affefi4bdd?574fc020ae08052762s260ed163adb6dee?2bủbc66Z282c6a16b362247a02e5e1e3Ê2f041đcdb3Ibdfb26da8641b?28,
> B#'A_2(10230] '3018d8a41dd 88000080800008080880 ⁄22324517b38b63a1e2afÊeÊ44bdd?5f4fc020ae08052762e2Ê0ed163ađbs4ee72b0bc662282c6a1eb3622đ7a02e5eLe3Ê2f041dedb2Ibdfb26ọa8641b?28b,
> #B_2I10230] 00000000000 27Êe247E38ọeaÊ8s1355 - (00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 â Sạr_ou1023:0] 22121111211 TtửliửDiDiSSDDtSSSD0 Ce
Ui startt x sao 9 ————T _ TL TL k Lk
Hình 4.20: Xuất output ở quá trình giải mã
Dé tiện cho việc ghép các khối dé kiểm tra kết quả ở DSA verification, nhóm sẻ chỉnh sửa ở việc xuất kết quả bang 1 chu kì thay vì 16 chu kì như trong thiết kế.
Tai chu ki thứ 1,071,146 (1 + 2052*9 + 1026 * 1026 + 1), quá trình giải mã kết thúc. e Load Data Phase (Hình 4.21):
= 5 I = 377?03770dc8612ae2d6f98a3ab1784edde6ibdicbc2f2balbd3ic4527017fe2£f7e301024268b048320£852017đ7£#80eb527d: E_in = 3
3a84259cfi46ccc34b9a7f65826368a54e38f5ed3£f45383f6a8a04bb2aad3bc501£f1ba3377da3£948a2a3e4bbld6ed71b451"
Hình 4.21: Kiểm tra việc load dữ liệu e Check Decrypted Phase (Hình 4.22):
RSA = S80Ê7Êf163b4826c384f5al567068Êfc32528ca85173dđ7Êf7fÊa8ậ8c88bal20cọ4c47
8ũÊ7Ê163b482Ec384Êf8a1567068Êc32528ca85173đ7Êf7fa8a8c88bal20cọ34c47 Checking = 1
Hinh 4.22: Kiém tra Decrypted Phase
Dé kiêm thử thiệt kê, nhóm sẽ chọn ngẫu nhiên một Test case được sinh ra từ phân mêm đã đê cập ở mục 2.4.
Tùy số lượng Num_bloek đưa vào, thời gian hoàn thành việc tính toán sẽ khác nhau (VD: 1 block sẽ tính trong 67*1+1 = 68 chu kì, 2 block sẽ tính trong 67*2+1 =
Các giá trị này đã được tải vào kiến trúc được thiết kế dé thực hiện mã hóa thông điệp, thu được thông điệp Digest được mã hóa:
Các dữ liệu như Mess, Num_block, Digest đều được đọc từ file text từ Test case thông qua top testbench.
Toàn bộ quá trình mô phỏng như Hình 4.23 sau:
Name WaMue 0.000000 us 1.000000 us 2.000000 us 9.000000 us 4.000000 us §.000000 us 6.0000900s 7.00000ws 8.000000 us 9.000000 us 10,000000 us 1.000000 us 12.00000
Wi vald_out 1 DI ian 1 | i ] | Ị ] I
> 8# hash_datal256:0] sorrrie3n4e2 ể6860909000000091 /bl6aS52bE5205928 /S0a4532a54474452 /07117ff4eibl4ửọc (/sảeS314bBsfSbS7e (đeb4SSb4e0712417 )/2ea44b0đ8EeeffS7 \bib2safSe53f9Ze1 )/42ec063a04835sds (50Ê7
> 8# mess_In|5110] 10010000000 |4Sez06£SS6SES72 /722cZ0686164206 56Z0746865203€( (Ec636eE?75206f6 (/S85EZ074776£20EZ /686172646S6e59S4 2068670652066 7275206£66201488 6s6SSS6473206f66 OK
> 8#hash_tlocd2850] — 80H183b482 |6a05e6Ê7kb67asử5 (bl6a56Zbf920652e 50ađ932a54d24đ5 (07117fffeibidide (sds531óbBefụb37e )/ọeb4SSbdeD71241f /2eadfb0dBfeeff57 \bib2eafSeB2f92e1 J(a2se063a04858eđc SOFT.
› cou] 0017 pH 'Ỷ valid_block_out o n | | ] it | | | | |
Hình 4.23: Toàn bộ quá trình mã hóa
Chỉ tiết quá trình mã hóa: e Khi bắt đầu mỗi vòng lặp, dir liệu được truyền vào và lưu trữ ở TOP trước khi được đưa vào khối xử lí ở mỗi block như Hình 4.24.
> W data_out[255:0) i valid_out i vai
‘14 valid_block_out s 40.000 ns 60.000 ns 80.000 ns 100.000 ns 120.000 ns 140 000
8a09e887bb8 HK 6a032667bb67ae853c6ef372a54ff53a510e527f WOOK, if ơ X4413ccce76 R - Xb5808Ê2325 ++ Xebd3đa4606 + X4cbÊ71763d bd8ZbdSe9e 1"
Hình 4.24: Nhập input ở quá trình mã hóa e Việc xử lí này được thực hiện lần lượt cho đến hết số lượng Num_block đưa vào như Hình 4.25.
8 vafd_Block gu a SS a a CO
07117Wfcfb14 07117 /cọeS51o8ef8b377e35095e0zZeacabE201 (đeb4SSb4e071243159764108033502a1 2ea#4b0891eeÊEE7ezb854057263514517 (bibEeaE8283792e16745e58e43200a602 aZ2ec063a04835adeb485a3508
07117ffcfbf4 07117 /€de5914b8ef8b37e55098c022eacab£S01 ,/đeb463b4e071241£9976419080373302a1 /2ea44b0đ9fce££S7eZb8640572636146£7 /ð1bZea£9e83£9Ze16745e33e49200a6c02 ./a2ec065a04998ađeb495a450e
Hình 4.25: Quá trình xử lí ở từng vòng lặp
Cuối cùng, khi đã đủ số lượng Num_block, valid_ out bật lên đồng thời đưa dữ liệu đã tính toán được ra như Hình 4.26.
Name Value 12,000.000 ns 12,100.000 ns 12,200.000 ns 12,300.00 ns 12,400.00 ns 12,50) it ok ° ELFLTLTLƑLTLTLTLTLƑTLTLTLTLTLTLTLTLTLTILƑTLTLTILTLTLTILTLTLEFR
Wrst 0 data_in(511:0) X0000000000( 000000000000000000000000000 num, tum[210] ‘000009 000008
> MW data_out{255:0] 80871630482 =i 80£7f163b4826c384f8a1§67065fe32529ca8517387£7fa8a8_'# hash_data255:0] B0f7F4B3b482 a2e BS hash_block(256:0] B0f7F4B3b482 a2e '# block_ouf255:0] ` =-=n=.- -.n=.- na COPED CORES CORES COPED = CORES CHOPS (EES COPED -=-.“-.-.- -.nc-
Hình 4.26: Xuất output ở quá trình mã hóa Tai chu ki thứ 604 (67*9 + 1), quá trình mã hóa kết thúc. e Load Data Phase (Hình 4.27):
Block O: 04f6e206f66666572696e€720746f2068€5€c702074686520626c€96e64206d616e2c20746865206d61€e2077686£f207468656e2073746£6c6520686973206361 Block 1: 0722c20686164206e6£742c20617420746861742070726563697365206d6£6d656e742c2068616420616e79206576696c20696e74656e74696f£6e2c2071756974 Block 2: 0652074686520636f6e74726172792c20776861742068652064686420776173206e6f7468696e67206đd6f7265207468616e206f6265792074686f736520666565 Block 3: 06c€696e£773206f662067656e65726f7369747920616e6420616c74727569736d2077686963682c2061732065766572796f6e€5206b6e6£f77732c206172652074 Block 4: 0686520747716£206265737420747261697473206£662068756d616e206e617475726520616e6420746£20626520666£756e6420696e206đ756368206d6£726520 Block 5: 068617264656e6564206372656d696e616c73207468616e2074686973206f6e652c20612073686đ706c65206361722đ746869656620776974686f757420616e79 Block 6: 020686f7065206f6620616476616e63696e€720696e206869732070726f66657373696f6e2c206578706c€f6974656420627920746865207265616c206f776e65 Block 7: 07273206£66207468697320656e74657270726973652c20666£7220697420697320746865792077686£207461EbéS20616476616e74616765206£662074686520 Block 8: 06e65656473206f662074686520706f6f722e80000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090
Hình 4.27: Kiểm tra việc load dữ liệu e Check Encrypted Phase (Hình 4.28):
— -Result-— - SHA = 8Df7f1l63b4826C5384f8a1567068fc32528ca85173đ7f7fậậc88bal2ics84c47
Dig = 80f7f163b4826c354F8al5e7069fc32529cas5l73d7 FT fasasc9Sbal2zocs4c47
Hinh 4.28: Kiém tra Encrypted Phase
Dé kiêm thử thiét kê, nhóm sẽ chọn ngau nhiên một Test case được sinh ra từ phân mêm đã đê cập ở mục 2.4.
Các giá trị này đã được tải vào kiến trúc được thiết kế đề thực hiện mã hóa thông điệp, thu được thông điệp Digest được mã hóa:
Các dữ liệu như Message, Num_block, M, E, N, Digest đều được đọc từ file text từ Test case thông qua top testbench.
Toàn bộ quá trình mô phỏng như Hình 4.29 sau:
WRSA done ẢW SHA đone
090000000 ms §.000000000 us 8.000000000 us 10, 000000000 ms 12.00000000 ms 34.00000000 uz 16.00000000 us - 18.00000000 us - 20.00000000
0 Ị 27T103770dcE (ETE037704c8612ae2d6 99a3ab1794e4460Đđ0cbS2 £2ba1P đ20c4527017 Fez £7e301024268b049320 189201 747 £80ebS27đc83£3ee€e355483bcSe6494e 88 Data_SHAI255:0] 80r7r163b482 8D#5163b4826