wolfSSL/wolfEngine

GitHub: wolfSSL/wolfEngine

wolfEngine 是基于 wolfCrypt 的 OpenSSL 加密引擎插件,使应用程序无需修改代码即可实现 FIPS 合规。

Stars: 29 | Forks: 35

# wolfEngine wolfEngine 是一个由 wolfSSL 的 wolfCrypt 加密库作为后端支持的 [OpenSSL engine](https://www.openssl.org/docs/man1.0.2/man3/engine.html)。wolfCrypt 已通过 [FIPS 认证](https://csrc.nist.gov/Projects/cryptographic-module-validation-program/Certificate/3389),因此可以使用 wolfEngine 来实现 OpenSSL 的 FIPS 合规性,而完全无需修改 OpenSSL 的代码本身。 ## 功能 * SHA-1 * SHA-224 * SHA-256 * SHA-384 * SHA-512 * SHA3-224 * SHA3-256 * SHA3-384 * SHA3-512 * DES3-CBC * AES * 128、192 和 256 位密钥 * ECB * CBC * CTR * GCM * CCM * DRBG * RSA * DH * ECC * ECDSA * ECDH * EC 密钥生成 * Curve P-192 * Curve P-224 * Curve P-256 * Curve P-384 * Curve P-521 * HMAC * CMAC * HKDF * PBKDF2 * TLS PRF ### OpenSSL 版本支持 wolfEngine 可用于任何支持 engine 框架的 OpenSSL 版本。engine 在 OpenSSL 3.0.0 中已被弃用。它们被一个称为 [providers](https://www.openssl.org/docs/manmaster/man7/provider.html) 的类似概念所取代。 wolfSSL 还提供了一个由 wolfCrypt 作为后端支持的 provider。如果您有兴趣评估 wolfSSL 的 provider,请联系 facts@wolfssl.com。 #### 注意事项 * 只有 OpenSSL 1.1.1+ 版本才支持 SHA-3。 * 只有 OpenSSL 1.1.1+ 版本才支持 EC_KEY_METHOD。 ## 在 \*nix 上构建 ### TL;DR> 最快上手的方法是使用 `scripts/util-*.sh`。有一个 `scripts/test-sanity.sh` 脚本,它会拉取所有必需的依赖项,根据需要进行编译,最后运行一些测试以确保一切正常工作。如需更详细的分步说明,请继续阅读。 ### OpenSSL 假设您已将 OpenSSL 源代码下载到名为 openssl 的目录中: ``` cd openssl ./config shared make sudo make install ``` ### wolfSSL #### 从 FIPS 包构建 使用此 configure 命令: ``` ./configure --enable-engine ``` 这会自动添加对 `--enable-engine=fips-v2` 的支持。如果使用的是 FIPSv5 140-3 包,请将其替换为 `--enable-engine=fips-v5`。如果使用的是 FIPS Ready 包,请将其替换为 `--enable-engine=fips-ready`。如果您的 wolfSSL 版本不支持 `--enable-engine`,请改用以下命令: ``` ./configure --enable-fips=v2 --enable-opensslcoexist --enable-cmac --enable-keygen --enable-sha --enable-des3 --enable-aesctr --enable-aesccm --enable-x963kdf CPPFLAGS="-DHAVE_AES_ECB -DWOLFSSL_AES_DIRECT -DWC_RSA_NO_PADDING -DWOLFSSL_PUBLIC_MP -DECC_MIN_KEY_SZ=192 -DSha3=wc_Sha3 -DNO_OLD_SHA256_NAMES -DNO_OLD_MD5_NAME" ``` 如果使用的是 FIPS Ready 包,请将 `--enable-fips=v2` 更改为 `--enable-fips=ready`。 #### 从 Git 构建 ``` git clone https://github.com/wolfssl/wolfssl.git cd wolfssl ./autogen.sh ./configure --enable-engine=no-fips make sudo make install ``` 如果您的 wolfSSL 版本不支持 `--enable-engine`,请改用以下命令: ``` ./configure --enable-opensslcoexist --enable-cmac --enable-keygen --enable-sha --enable-des3 --enable-aesctr --enable-aesccm --enable-x963kdf CPPFLAGS="-DHAVE_AES_ECB -DWOLFSSL_AES_DIRECT -DWC_RSA_NO_PADDING -DWOLFSSL_PUBLIC_MP -DECC_MIN_KEY_SZ=192 -DWOLFSSL_PSS_LONG_SALT -DWOLFSSL_PSS_SALT_LEN_DISCOVER" ``` #### 其他选项 - 如果使用 PKCS#12,请在上述 configure 命令中添加 `--enable-pwdbased`。 - 添加 `--enable-debug` 以开启 debug 日志记录。 ### wolfEngine ``` git clone https://github.com/wolfSSL/wolfEngine.git cd wolfEngine ./autogen.sh ./configure --with-openssl=/path/to/openssl/installation --with-wolfssl=/path/to /wolfssl/installation make make check ``` 如果找不到 OpenSSL 或 wolfSSL 库,`make check` 可能会失败。在这种情况下,请尝试 `export LD_LIBRARY_PATH=/path/to/openssl/installation/lib:/path/to/wolfssl/installation/lib:$LD_LIBRARY_PATH`,然后重新运行 `make check`。 #### 自定义 * 要以单线程模式构建 wolfEngine,请在 configure 命令中添加 `--enable-singlethreaded`。 * 要构建支持 PBES 的 wolfEngine(与 PKCS #12 配合使用),请添加 `--enable-pbe`。注意:wolfSSL 必须已配置 `--enable-pwdbased`。 * 要禁用动态加载 wolfEngine 的支持,请添加 `--disable-dynamic-engine`。 * 要构建 wolfEngine 的静态版本,请添加 `--enable-static`。 * 要使用自定义的 user_settings.h 文件来覆盖由 `./configure` 生成的定义,请添加 `--enable-usersettings`,并将包含所需定义的 user_settings.h 文件放置在 include 目录中。请查看项目根目录以获取 user_settings.h 的示例。 * 要构建支持 debug 的 wolfEngine,请添加 `--enable-debug`。然后,要在 runtime 激活 debug 日志记录,您的应用程序应向 wolfEngine(此处记为 "e")发送此控制命令:`ENGINE_ctrl_cmd(e, "enable_debug", 1, NULL, NULL, 0)`。 * 要构建用于 OpenSSH 的 wolfEngine,请添加 `--enable-openssh`。 ## 在 \*nix 上测试 ### 单元测试 使用 `make check` 运行单元测试。 如果出现类似 `error while loading shared libraries: libssl.so.3` 的错误,则说明找不到该库。请按照前面的说明使用 `LD_LIBRARY_PATH` 环境变量。 ### 集成测试 请查看 scripts 目录,了解与其他应用程序(如 OpenSSH、stunnel 等)的集成测试。 ### 提交测试 对于运行提交测试的 wolfEngine 开发者,可以使用 `WOLFENGINE_OPENSSL_INSTALL` 环境变量设置自定义的 OpenSSL 安装路径。设置后,wolfEngine 提交测试将在 configure 时使用 `--with-openssl=WOLFENGINE_OPENSSL_INSTALL` 设置的指定 OpenSSL 安装路径进行提交测试。 ## Windows 有关使用 Visual Studio 构建 wolfEngine 的说明,请参阅 `windows/README.md`。 ## 示例 使用 wolfEngine 的示例程序可以在 `examples/` 子目录中找到。 ## 需要帮助? 请通过 support@wolfssl.com 获取技术支持。如果您对商业许可、FIPS 运行环境扩展、咨询服务或其他商业合作感兴趣,请联系 facts@wolfssl.com。
标签:FIPS合规, OpenSSL, wolfSSL, 加密库, 客户端加密, 密码学, 底层组件, 手动系统调用