尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Wally的Zk标量加密扩展实战:AES-128与SHA-256硬件加速全解
【免费下载链接】cvwCORE-V Wally is a configurable RISC-V Processor associated with RISC-V System-on-Chip Design textbook. Contains a 5-stage pipeline, support for A, B, C, D, F, M and Q extensions, and optional caches, BP, FPU, VM/MMU, AHB, RAMs, and peripherals.项目地址https://gitcode.com/gh_mirrors/cv/cvw点击查看免费下载cvwCORE-V Wally是一款开源可配置的 RISC-V 处理器完整支持Zk 标量加密扩展Zknd、Zkne、Zknh让你用单条指令完成AES-128 硬件加速与SHA-256 哈希计算。本文将带你快速理解 Wally 的加密硬件架构、开启方法和实战示例零基础上手。1️⃣ 为什么需要硬件加密加速传统做法用软件实现 AES 和 SHA-256查表、循环、字节搬移在小核心上每个 128 位数据块的加密要执行成百上千条指令。Wally 的解决方案是把加密算法焊进流水线——通过 RISC-V 官方Zkn 标量加密扩展把最耗时的操作压缩成单周期指令扩展作用提供的关键指令ZkneAES 加密aes64es末轮加密、aes64esm中间轮加密、aes64ks1i/aes64ks2密钥扩展ZkndAES 解密aes64ds、aes64dsm、aes64im密钥扩展 MixColumnsZknh哈希sha256sum0/1、sha256sig0/1、sha512sum0/1Zbkb / Zbkc / Zbkx位操作辅助位反转、字节重排、CLMUL 等密码学基础运算一条aes64esm指令就能在 1 个时钟周期内完成 SubBytes ShiftRows MixColumns AddRoundKey 的全部工作而 AES-128 总共 10 轮加密整块密文生成只需约十几条指令比纯软件实现快一个数量级以上。2️⃣ 加密硬件藏在哪里Wally 的加密逻辑全部集成在**整数执行单元IEU**中无需额外协处理器AES 电路src/ieu/aes/ 下包含 S-Box、MixColumns、伽罗瓦域乘法器galoismultforward8.sv等全部子模块其中 aes64e.sv 实现 RV64 的aes64es/aes64esmaes32e.sv 对应 RV32 版本SHA 电路src/ieu/sha/sha256.sv 实现 SHA-256另有sha512_32.sv/sha512_64.sv支持 SHA-512指令译码src/ieu/bmu/bmuctrl.sv 中负责识别aes32esi、aes64esm、sha256sig0等加密指令并生成控制信号结果调度src/ieu/kmu/Crypto Management Unit负责在 Zknd/Zkne/Zknh 多路硬件间选择结果并写回寄存器这种IEU 内置加密的设计意味着加密指令与整数指令共享流水线对程序员完全透明无需任何特权模式或特殊使能。3️⃣ AES-128单指令硬件加密全解以 RV64 配置下的 AES-128 加密为例整个流程分为三步① 密钥扩展用aes64ks1i和aes64ks2两条指令把 128 位原始密钥逐轮扩展成 10 组轮密钥。硬件把 S-Box 替换、字旋转、Rcon 异或全部在一个周期内完成。② 中间轮加密第 19 轮每轮执行xorAddRoundKeyaes64esmSubBytes/ShiftRows/MixColumns每轮约 3 条指令。③ 末轮加密AES 最后一轮没有 MixColumns由aes64es指令单独处理与中间轮硬件复用同一套 S-Box 和移位电路见 src/ieu/kmu/zknde64.sv 中的注释说明。性能直觉AES-128 全加密 ≈ 2 条密钥扩展 9 轮 × 3 条 3 条末轮 ≈32 条指令对比软件实现动辄上千条查表/循环指令。仓库还提供了一个完整的学习对照软件版 AES-128含 FIPS 197 标准测试向量见 examples/crypto/aes/aes.c伽罗瓦域乘法与 S-Box 逆元表的推导见 examples/crypto/gfmul/gfmul.c。理解了软件流程再看硬件单指令就一目了然。4️⃣ SHA-256用 4 条指令压缩一个消息块SHA-256 的瓶颈在 64 轮压缩循环而sha256sum/sha256sig指令组把它变成了批量操作sha256sig0/sha256sig1一次生成消息扩展字 W[16]W[63] 中的 8 个字含 σ₀、σ₁ 非线性变换整个 512 位消息块只需 8 条 sig 指令sha256sum0/sha256sum1一次推进 8 轮压缩循环含 Σ₀、Σ₁ 大置换和 Ch/Maj 逻辑64 轮压缩只需 8 条 sum 指令也就是说压缩一个 512 位消息块只需 16 条加密指令核心逻辑实现在 src/ieu/sha/sha256.sv。仓库的 examples/crypto/sha/ 目录提供了独立的 SHA-256/SHA-512 精简硬件实现与 Python 参考程序详见 README方便你单独验证哈希行为。5️⃣ 如何开启 Zk 扩展配置清单Wally 的加密功能通过配置参数启用以 config/rv32gc/config.vh 为例localparam logic ZKND_SUPPORTED 1; // AES 解密 localparam logic ZKNE_SUPPORTED 1; // AES 加密 localparam logic ZKNH_SUPPORTED 1; // SHA-256/512三个参数相互独立可按面积/功耗预算裁剪。若只想验证某一项仓库在 config/derivlist.txt 中预置了派生配置直接选用即可派生配置名基线说明zkne_rv32gcrv32gc仅开启 AES 加密ZKNE_SUPPORTED 1zknd_rv32gcrv32gc仅开启 AES 解密zknh_rv32gcrv32gc仅开启 SHA 哈希zkne_rv64gc/zknh_rv64gc等rv64gcRV64 对应版本所有参数的完整定义可在 config/shared/parameter-defs.vh 中查阅。6️⃣ 实战演练两条最短路径上手仓库自带两套教科书级汇编示例直接展示了如何用 Zk 指令写加密程序AES-128 硬件加密examples/exercises/18p10/aes128.S —— 从 FIPS 197 标准测试向量出发完整实现密钥扩展 10 轮加密参考输出见 aes128.reference_outputSHA-256 硬件哈希examples/exercises/18p7/sha256.S —— 按 NIST FIPS 180-4 规范加载消息、用sha256sig/sha256sum完成压缩配套的软件对照示例集中在 examples/crypto/ 目录建议按先读软件实现 → 再读硬件示例汇编的顺序学习理解成本最低。7️⃣ 文件导航速查表你想做的事去哪里阅读 AES 加密硬件实现src/ieu/aes/阅读 SHA-256 硬件实现src/ieu/sha/sha256.sv查看加密指令译码逻辑src/ieu/bmu/bmuctrl.sv开启/裁剪加密功能config/rv32gc/config.vh、config/derivlist.txt学习 AES-128 汇编实战examples/exercises/18p10/aes128.S学习 SHA-256 汇编实战examples/exercises/18p7/sha256.S软件对照实现C 语言examples/crypto/aes/aes.c总结Wally 的 Zk 标量加密扩展把 AES 与 SHA 从软件密集型任务变成了硬件单周期操作aes64esm一条指令顶软件上百条查表sha256sum一组指令压缩整个消息块。配合独立的ZKND/ZKNE/ZKNH配置开关和现成的派生配置你可以根据自己的面积预算自由裁剪加密能力。无论是对 RISC-V 密码学扩展做研究还是设计安全 IoT SoC这份仓库都提供了从 RTL 到汇编示例的完整学习路径。赞分享【免费下载链接】cvwCORE-V Wally is a configurable RISC-V Processor associated with RISC-V System-on-Chip Design textbook. Contains a 5-stage pipeline, support for A, B, C, D, F, M and Q extensions, and optional caches, BP, FPU, VM/MMU, AHB, RAMs, and peripherals.项目地址https://gitcode.com/gh_mirrors/cv/cvw点击查看免费下载相关推荐Cosmos 仓库中的纯 C AES 实现AES-128/192/256 加解密与流加密实战指南Cosmos 仓库中的纯 C AES 实现AES 128/192/256 加解密与流加密实战指南 本篇指南以 Cosmos 仓库 code/cryptogra教程示例工程Ryujinx 模拟器从零跑通 Switch 游戏的完整安装配置清单Ryujinx 模拟器从零跑通 Switch 游戏的完整安装配置清单 Ryujinx 让你直接在 PC 上跑 Switch 游戏主界面就是游戏库按名称、版硬件仿真图形学**JavaScript SHA-256/SHA-224加密库全面解析**JavaScript SHA 256/SHA 224加密库全面解析 项目基础介绍及编程语言 js sha256 是一个由陈义全emn178开发并维护的轻量级密码学上一篇Terminalizer新闻媒体在新闻采编中的终极应用指南下一篇悟空IM高性能分布式通讯服务的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

【Android】Navigation

【Android】Navigation

一. Navigation 1.1. 导航组件的组成部分 Navigation组件有主要的三个部分: NaviController: 负责在目标页面(即应用中的屏幕)之间导航。NavGraph:用于映射要导航到的可组合项目标页面。NavHost:此可组合项充当容器…

📅 2026/11/6 4:58:29
H5获取定位的方式是什么?

H5获取定位的方式是什么?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/11/6 4:58:29
AMBER 轨迹分析与作图(上):从轨迹文件到第一张图

AMBER 轨迹分析与作图(上):从轨迹文件到第一张图

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/11/6 4:58:29
MORE NEWS

更多资讯

📰

AI元人文与马克思主义在数字时代的对话

1. 思想评价的困境与突破在当代思想交流中,我们常常陷入一种奇怪的评价模式:用"引用率"来衡量思想的真理性。这种思维定式不仅存在于学术圈,也渗透到日常讨论中。就像有人质疑岐金兰"很少讨论马克思主义"一样&#xff0c…

📰

VSCode配置C/C++开发环境:MinGW-w64与调试配置全解析

1. 为什么2024年还在折腾VSCode跑C/C先把结论摆出来:在Windows上写C/C,VSCode加一套编译器工具链,依然是目前门槛最低、可控性最强、迁移成本最小的组合。很多人第一次配环境时被一堆json文件和路径问题劝退,转头去装几个G的集成开…

📰

DVB-RCS2卫星通信技术解析与工程实践

1. DVB-RCS技术背景与应用场景DVB-RCS(数字视频广播-卫星回传信道)技术作为卫星通信领域的重要标准,近年来在宽带接入领域展现出独特优势。这项技术最初由ETSI制定,旨在解决传统卫星通信中回传信道容量不足的问题。与单向广播的DV…

📰

Git本地代码管理核心技巧与实战指南

1. 为什么需要本地代码管理在开发过程中,我们经常遇到这样的场景:地铁通勤时突然想到一个绝妙的算法改进,但手头没有网络;在咖啡馆写代码时WiFi不稳定,无法提交变更;或者需要在飞机上完成紧急修复却无法连接…

📰

公众号本地调试token验证失败?内网穿透原理与实战

1. 为什么本地调试公众号总卡在token验证这一步做过公众号开发的人大概都有过这种体验:代码在自己电脑上跑得好好的,日志也打印了,接口也通了,结果一到公众号后台点“提交”按钮,永远弹出一句“token验证失败”。折腾半…

📰

半正定矩阵:概念、判定与应用全解析

1. 半正定矩阵的基本概念半正定矩阵(Positive Semi-Definite Matrix,简称PSD矩阵)是线性代数中一类特殊的对称矩阵。这类矩阵在优化问题、机器学习、信号处理等领域有着广泛的应用。简单来说,一个实对称矩阵A如果满足对于所有非零…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬