paragonie / chronicle
由 Slim Framework、Sapient 和 Blakechain 驱动的公共哈希链
Requires
- php: ^7.1|^8
- ext-json: *
- ext-pdo: *
- cache/memcached-adapter: ^1
- 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.11
- roave/security-advisories: dev-master
- slim/php-view: ^2.0
- slim/slim: ^3.8
- ulrichsg/getopt-php: ^3
Requires (Dev)
- phpunit/phpunit: ^7|^8|^9
- vimeo/psalm: ^2|^3|^4
README
Chronicle 是一个可自托管微服务,使用 Slim Framework 构建,允许授权用户将任意数据提交到不可变、只添加的公共账本。
Chronicle 在大多数现实世界的实际问题中比“区块链”解决方案更优越,这些问题不涉及工作量证明或拜占庭容错。
更确切地说,Chronicle 是一个可自托管微服务,暴露了一个只添加、密码学安全的哈希链数据结构,通过 HTTP API 从授权客户端接受任意数据,由 Sapient 加密,可以用作构建类似于 证书透明度 的密码学审计日志的构建模块。
Chronicle 是由 Paragon Initiative Enterprises 开发的,作为我们持续努力使互联网更加安全的举措之一。
Chronicle 入门指南(文档)
- 安装 Chronicle 的说明
- 如何向您的 Chronicle 写入(发布)数据
- 如何设置与其他 Chronicles 的交叉签名
- 如何复制其他 Chronicles
- 并发实例
- 配置
- 内部开发者文档
与 Chronicle 交互的客户端软件
PHP
- Gossamer - PIE
- 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碰撞攻击被发现时增加一定程度的域分离。这种密钥设置应该降低任何实际攻击的可能性,特别是如果链更新得很快的话。