苏丹开源社区 / chronicle-x
由 Slim 框架、Sapient 和 Blakechain 驱动的公共哈希链
Requires
- php: ^7
- ext-json: *
- ext-pdo: *
- guzzlehttp/guzzle: ^6
- monolog/monolog: ^1.17
- paragonie/blakechain: >= 1.0.2
- paragonie/easydb: ^2.7
- paragonie/sapient: ^1
- paragonie/slim-sapient: ^1
- paragonie/sodium_compat: ^1.7
- roave/security-advisories: dev-master
- slim/php-view: ^2.0
- slim/slim: ^3.8
- ulrichsg/getopt-php: ^3
Requires (Dev)
- phpunit/phpunit: ^6|^7
- vimeo/psalm: ^2
README
Chronicle 是一个自托管的微服务,使用 Slim 框架 构建,允许授权用户将任意数据提交到一个不可变、仅追加的公共账本。
Chronicle 在大多数不涉及工作量证明或拜占庭容错的技术问题上优于“区块链”解决方案。
更确切地说,Chronicle 是一个自托管的微服务,提供了一个仅追加、加密安全的哈希链数据结构,它通过 HTTP API 从授权客户端接受任意数据,并由 Sapient 加密,可以作为构建类似 证书透明度 的加密审计跟踪的构建块。
Chronicle 是由 Paragon Initiative Enterprises 开发的,作为我们继续使互联网更加安全的努力的一部分。
分支概述
这个分支是为了加快 Chronicle 的开发,同时考虑使用 "语义版本化"。因此,这个分支将在开发过程中尽可能地保持与 传统 Chronicle 的兼容性。ChronicleX 只是标志和分支名称。但是,项目将在 传统 中像往常一样使用 Chronicle。
以下是在 ChronicleX 中将存在的以下功能
-
chronicle/export分页。 -
chronicle/since分页。 -
chronicle/replica/export分页。 -
chronicle/replica/{replica}/since分页。 - 在副本命令行中通过 URL 获取“公钥”。
- 在交叉签名命令行中通过 URL 获取“公钥”。
- 使复制命令在资源分页时获取数据。
-
chronicle/replica分页。 - 一次性测试(SQLite、MySQL & PostgreSQL)数据库。
- 创建
chronicle/instancesAPI 以列出所有实例。 - 扩展
chronicle/lookupAPI 以在 currhash、summaryhash、publickey、signature 和数据中进行搜索。 - 在
chronicle/explorer端点创建 Web 应用程序以探索 chronicle 实例。 - 修订交叉签名功能。
- 修订测试以涵盖所有功能。
- 创建具有隐藏某些实例选项的
chronicle/instancesAPI。 - 使交叉签名命令在资源分页时获取数据。
Chronicle 入门(文档)
与 Chronicle 交互的客户端软件
PHP
- Herd - PIE
- Quill - PIE
- Monolog-Quill - PIE
- Chronicle-API - Lukáš Unger (@lookyman)
Chronicle的作用是什么?
Chronicle允许受信任的客户端发送数据,以便将其包含在一个不可变、可审计、加密的永久记录中。
此外,Chronicle内置了跨签名和一对多复制功能,当使用时,可以极大地提高您本地Chronicle实例写入的数据的可审计性和可用性。
Chronicle解决了哪些问题?
物品保管链
如果您有敏感信息,您可以将有关客户端访问时间的元数据写入私有Chronicle,以便获得可验证、防篡改的证据,证明特定记录在特定时间被特定用户账户访问。
知识证明
通过插入加密消息然后在以后日期揭示密钥,您可以提供先前知识的强烈证据。
用户库一致性验证
为了构建一个安全代码交付系统,将某些元数据和每个更新文件的SHA256或BLAKE2散列提交到公开可验证的Chronicle,允许用户编制已知更新文件的白名单,以帮助阻止特洛伊木马恶意软件(在更新服务器被入侵的情况下)。
为了获得最佳效果,请结合使用加密签名(也可以在Chronicle中注册)和可重复构建。
可审计的安全事件记录
由于Chronicle具有加密保证的追加属性以及其使用现代椭圆曲线数字签名,Chronicle非常适合与SIEM解决方案和内部SOC集成。
它是如何工作的?
所有通信都通过Sapient进行安全。Sapient确保所有发布的消息都使用Ed25519进行签名。所有消息都提交到由BLAKE2b支持的哈希链数据结构,我们将其简称为Blakechain。
每条消息有两个哈希值
- 当前消息的哈希,其BLAKE2b密钥是上一条消息的区块。这在内部分别称为
currhash。 - 汇总哈希,它是对迄今为止所有消息哈希的BLAKE2b哈希,按顺序连接在一起。这在内部分别称为
summaryhash。
使用上一条消息的哈希的目的是在BLAKE2b碰撞攻击被发现的情况下增加一定程度的服务域分离。这种密钥化应降低任何实际攻击的可能性,特别是如果链快速更新。