# Space and Time 的数据库内加密技术

By [SRC20](https://paragraph.com/@runeswap) · 2024-01-10

---

**它是什么以及我们为何构建它**
=================

加密是任何安全解决方案的重要组成部分，数据通过加密来防止未经授权的访问。Web3 历来都是开放的：所有数据都是公开可见的，没有秘密，但至少有一定程度的匿名性。随着 Web3 扩展到新的用例，它将不可避免地需要能够支持敏感数据（不应公开访问的数据）的存储、操作和检索。作为一个去中心化的数据仓库，Space and Time 位于两种重要数据类型的中间：开源、公开可见的区块链数据和客户特定的私有数据。为了支持后者，我们针对传统问题开发了一种新颖的解决方案：数据库内加密。

**怎么运行的**
=========

传统数据库仅支持磁盘加密。在这种情况下，数据在“冷”存储（即磁盘上）时被加密。一旦用户通过运行查询发出数据请求，加密数据就会被带入内存并在查询执行之前解密。这里有一些安全考虑。首先，如果数据可以在计算机上解密，则计算机上也必须存在一些解密密钥，这意味着黑客可能直接从磁盘上存储的数据本身解密数据。此外，如果数据在内存中并且被解密，则黑客可以通过多种攻击途径窃取数据。

数据库内加密与磁盘上加密截然不同。在这种情况下，数据在进入集群之前就已加密，在其驻留在集群的生命周期内保持加密状态，并且在离开集群时仍保持加密状态。因此，与磁盘上的加密不同，攻击者窃取数据的途径大大减少——集群上没有解密密钥，并且数据在内存中甚至从未被解密。支持这一点并不简单，因为传统的 SQL 操作（例如通过共享列值连接两个表、通过某些数字或字符串比较过滤查询结果等）通常需要解密数据以确保操作仍然有效正确。

[SxT 与Sotero](https://www.soterosoft.com/)合作，为关键的 Web3 问题提供新颖的解决方案。通过这种合作关系，数据在使用（即查询/插入）时保持加密状态，因此数据仓库集群可以响应查询请求，而无需知道加密数据的实际值。

**它能实现什么**
==========

SxT[去中心化授权解决方案](https://docs.spaceandtime.io/docs/biscuit-authorization)将防止平台用户未经授权访问客户数据。然而，在集群上托管数据的节点操作员可能会绕过此授权，因为他们可以物理访问机器本身。因此，我们需要一种方法来防止高度敏感的数据被访问，甚至是来自这些节点操作员的访问。通过使用我们的数据库内加密，客户可以放心，他们的数据将从离开客户端计算机的那一刻一直到返回到客户端计算机时都将被端到端加密。所有这些都可以在不限制重要 SQL 功能的情况下提供。

---

*Originally published on [SRC20](https://paragraph.com/@runeswap/space-and-time)*
