awslabs/aws-encryption-sdk-specification
GitHub: awslabs/aws-encryption-sdk-specification
AWS Encryption SDK 的官方规范文档,定义了跨语言实现必须遵循的加密行为标准,确保各版本间的一致性和互操作性。
Stars: 38 | Forks: 27
# AWS Encryption SDK 规范
## 概述
本代码库包含 AWS Encryption SDK 规范。
本规范的主要目标是定义一套标准的、语言无关的 AWS Encryption SDK 功能描述。
它是构成 AWS Encryption SDK 的功能及其行为细节的事实来源。
旨在促进 AWS Encryption SDK 各实现之间的一致性和互操作性。
此 GitHub 项目还用于跟踪问题和功能请求,并收集有关 AWS Encryption SDK 的反馈。
[安全问题通知](./CONTRIBUTING.md#security-issue-notifications)
### 当前实现
以下是本规范的当前实现列表:
- [C](https://github.com/aws/aws-encryption-sdk-c)
- [Java](https://github.com/aws/aws-encryption-sdk-java)
- [Python](https://github.com/aws/aws-encryption-sdk-python)
- [CLI](https://github.com/aws/aws-encryption-sdk-cli)
- [Javascript](https://github.com/awslabs/aws-encryption-sdk-javascript)
## 许可证摘要
本文档基于 Creative Commons Attribution-ShareAlike 4.0 International License 提供。请参阅 LICENSE 文件。
本文档中的示例代码基于 MIT-0 许可证提供。请参阅 LICENSE-SAMPLECODE 文件。
## 编辑
我们使用 `prettier` 来保持格式一致。
我们的 CI 会阻止不符合我们格式要求的 PR,
但为了方便应用这些要求,
请运行 `./ci/prettify.sh write`。
如果您只想检查而不写入,
请运行 `./ci/prettify.sh check`。
## 生成 Duvet 报告
[Duvet](https://github.com/awslabs/aws-encryption-sdk-specification/issues/240) 是一个可用于确保规范与代码一并记录的工具。
本代码库包含用于安装和使用 Duvet 处理本规范的有用脚本。
安装 Duvet:
```
./util/install-duvet
```
要生成关于本规范中哪些部分在代码中有覆盖的报告,请使用 `report` 脚本。
例如:
```
./util/report.js 'src/main/**/*.java' 'src/test/**/*.java'
```
## 从规范中提取 `compliance`
规范是用 Markdown 编写的。
我们的合规性工具需要 RFC 格式的文本文件。
因此,我们有一个工具可以从 Markdown 中提取 RFC 规范。
### RFC 范围
我们不会将每个 Markdown 文件都包含在 RFC 规范中;
我们也不会包含 Markdown 文件的所有部分
(即我们排除了旧版、更改等)。
RFC 规范范围内的目录是
`util/specification_extract.sh` 中列出的那些。
### 运行 `extract`
#### 针对更改运行
如果您更改了任何符合合规性范围的 Markdown,则必须运行提取实用程序。
有两种方法可以做到这一点。如果您只更改了一个文件,您可以仅针对该文件运行 `extract`。
```
./util/extract.js PATH_TO_CHANGED_MARKEDOWN
```
例如,如果仅更新了 Default CMM Markdown,我们将运行:
```
./util/extract.js framework/default-cmm.md
```
#### 全部运行
或者,可以一次性提取整个规范。运行:
```
./util/specification_extract.sh
```
### 安装依赖项
实用程序/脚本 `util/extract.js` 依赖于四个运行
时:`node`、`python`、`ruby` 和 `rust`
(不,这并不理想,但 Crypto Tools 正在推动“规范到代码”的边界;
我们的工具走在前面)。
#### 设置 Python & `xml2rfc`
按照 [AWS Crypto Tools Python 入门指南](https://github.com/aws/crypto-tools/blob/master/getting-started/python/README.md#local-development-setup) 安装 `pyenv`。
然后,在此代码库中运行 `pyenv local 3.9.7; pyenv exec python -m pip install xml2rfc==3.5.0 markupsafe==2.0.1`。
#### 设置 `kramdown-rfc2629`
这是 Ruby 依赖项。不幸的是,我们还没找到
一个好的安装方法,所以我们用一个笨办法:
```
sudo gem install kramdown-rfc2629
```
#### Node
按照
[Daniel Schildt 的使用 `nvm` 在 macOS 上安装 Node.js](https://gist.github.com/d2s/372b5943bce17b964a79)
来让 `nvm` 和 `node` 工作。
#### Rust
安装 Duvet 将安装 rust。
标签:Amazon Web Services, AWS, DPI, HTTP工具, KMS, meg, MITM代理, ProjectDiscovery, 信息安全, 加密SDK, 可视化界面, 多语言支持, 子域名变形, 安全测试框架, 密码学, 开源标准, 手动系统调用, 技术规范, 数据保护, 数据加密, 自定义脚本, 规范文档, 跨语言互操作性, 逆向工具, 防御加固