【问题标题】:When does TDE decryption take placeTDE解密什么时候发生
【发布时间】:2017-02-03 23:16:54
【问题描述】:

对于 TDE 加密数据库,我了解数据在写入数据库时​​会按每页进行加密。当我运行一个将几个表连接在一起并对这些表应用一些过滤的查询时,什么时候会发生解密?

它是否必须先解密表然后执行连接和过滤,或者它是否能够使用加密数据进行连接和过滤,然后只解密结果?

【问题讨论】:

  • 文档的哪一部分你不明白?似乎很好解释:msdn.microsoft.com/en-us/library/bb934049.aspx.
  • 在它们被解密之前,页面是不可读的。没有行或列,因此引擎无法对它们进行任何计算。如果您有基于 的加密,那将是另一回事。换句话说:引擎根本不知道加密,就它而言,它只是文件系统的另一层。

标签: sql sql-server-2008 encryption tde


【解决方案1】:

来自MSDN

数据库文件的加密在页面级别执行。加密数据库中的页面在写入磁盘之前被加密,在读入内存时被解密。

您需要了解buffer pool 的工作原理。缓冲池是磁盘上数据的缓存。查询总是从 BP 读取数据并将更改写入 BP(简化解释)。当数据从 BP 传输到磁盘时发生加密,而当数据从磁盘传输到 BP 时发生解密。 Read Understanding how SQL Server executes a query 详细了解这一切是如何工作的。

【讨论】:

    【解决方案2】:

    似乎解密是在从磁盘读取行时执行的。请注意,静态数据(保存到磁盘)仅被认为受 TDE 保护。一旦进入内存,数据就不再受 tde 保护。

    TDE and Decryption

    TDE 旨在通过加密物理数据文件而不是数据本身来保护静态数据。这种保护级别可防止在文本编辑器中打开数据和备份文件以暴露文件内容。

    TDE 加密发生在将数据写入磁盘之前,当数据被查询和调用到内存时会被解密。这种加密和解密无需任何额外的编码或数据类型修改;因此它是透明的。一旦数据从磁盘被召回到内存中,它就不再被认为是静止的。它已成为传输中的数据,超出了此功能的范围。因此,除了 TDE 之外,您还应该考虑对敏感数据应用额外的支持保护层,以确保完全防止未经授权的披露。例如,除了 TDE 之外,您可能还希望实现加密的数据库连接、单元级加密或单向加密。对于数据库外部所需的额外传输保护数据,您可能需要咨询或遵从您的网络管理团队。

    【讨论】:

    • 那么真正的问题是它如何知道从磁盘读取哪些行才能运行查询,除非它读取全部内容,全部解密(考虑到缓冲池)并且是然后能够“在内存中”处理它。来自“了解 SQL Server 如何执行查询”的示例流程表明 SQL Server 知道哪些页面是什么,但由于它是加密的,它不知道我想要“选择 * From myTable where name = 'bob'”。我错过了什么?
    猜你喜欢
    • 1970-01-01
    • 2017-08-03
    • 2011-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2011-01-21
    • 2012-03-17
    • 1970-01-01
    相关资源
    最近更新 更多