EverCrypt 跨平台的现代加密库

程序名称:EverCrypt

授权协议: Apache-2.0

操作系统: 跨平台

开发语言: C/C++

EverCrypt 介绍

程序员都是凡人,但数学则是不朽的。通过让编程变得更数学化,计算机科学家希望能消除向黑客敞开大门的编程错误。研究人员在 GitHub 上发布了加密工具
EverCrypt,向这个目标迈出了一大步。就像证明毕达哥拉斯定理那样,他们能证明 EverCrypt
可完全避开多种黑客攻击

EverCrypt 没有采用常见的编程方法编写,而是利用了形式化验证。他们首先明确代码能做什么,然后证明只能这么做,排除了代码在特殊情况下偏离的可能性。

EverCrypt 始于 2016 年,是微软研究院项目 Project Everest 的一部分,当时加密库是许多软件的薄弱环节,存在大量 bug。EverCrypt 使用 F*(发音 F
star)编程语言编写和验证,然后编译为 C(使用专用编译器 KreMLin
编译)和汇编语言的混合。

EverCrypt 支持的算法

EverCrypt 支持的许多算法仍在开发中。在即将发布的版本中,目标是:

  • fallback C versions for all algorithms
  • NIST P curves
  • AES-CBC
  • an up-to-date Ed25519
Algorithm C version ASM version Agile API
**AEAD**
aes-gcm ✔︎ (AES-NI + PCLMULQDQ) ✔︎
Chachapoly ✔︎¹ ✔︎
**Hashes**
MD5 ✔︎² ✔︎
SHA1 ✔︎² ✔︎
SHA2 ✔︎ ✔︎
SHA3 ✔︎
Blake2 ✔︎
**MACS**
HMAC ✔︎⁴ ✔︎
poly1305 ✔︎³ (+ AVX + AVX2) ✔︎ (X64)
**Key Derivation**
HKDF ✔︎⁴ ✔︎
**ECC**
Curve25519 ✔︎ ✔︎ (BMI2 + ADX)
Ed25519 ✔︎⁵
**Ciphers**
Chacha20 ✔︎
AES128, 256 ✔︎ (AES NI + PCLMULQDQ)
AES CTR ✔︎ (AES NI + PCLMULQDQ)

¹: does not multiplex (yet) over the underlying poly1305 implementation
²: insecure algorithms provided for legacy interop purposes
³: achieved via C compiler intrinsincs; no verification results claimed for
the AVX and AVX2 versions whose verification is not complete yet
⁴: HMAC and HKDF on top of the agile hash API, so HMAC-SHA2-256 and HKDF-
SHA2-256 Leverage the assembly version under the hood
⁵: legacy implementation

参考 https://www.solidot.org/story?sid=60154

EverCrypt 官网

https://github.com/project-everest/hacl-star

相关编程语言

BlazeDS 是一个基于服务器的Java 远程控制(remoting...
OVal 是一个可扩展的Java对象数据验证框架,验证的规...
Volta 是一套开发工具,专为开发分布式、实时系统应...
OpenDDS 是一个开源的 C++ 实现的 对象管理组织 OMG...
JADE (Java Agent DEvelopment Framework) 是一个完...
FastMM ,在D2006和2007中已代替了原来的内存管理器。