本文介绍了一项由Microsoft Azure和Microsoft Research团队开发的技术——Always Encrypted(始终加密),该技术是Microsoft SQL Server的一项新功能,旨在通过列级加密提供数据保护,确保数据在云环境中的机密性。本文由Panagiotis Antonopoulos、Arvind Arasu、Kunal D. Singh等多名作者共同撰写,并于2020年6月发表在ACM SIGMOD国际会议论文集上。
随着云计算的普及,越来越多的企业将工作负载迁移到云端,以享受弹性扩展、按需付费和高可用性等优势。然而,云环境也带来了新的安全挑战,尤其是数据隐私问题。尽管云服务提供商通常具备强大的安全技术和专家团队,但云服务提供商本身或其员工仍可能成为潜在的攻击者,导致敏感数据泄露。传统的数据库系统虽然提供了复杂的访问控制机制和数据加密功能,但这些机制无法防止具有数据库或服务器管理权限的攻击者访问数据。因此,Microsoft SQL Server引入了Always Encrypted功能,旨在通过加密技术确保数据在云环境中的机密性。
Always Encrypted的核心思想是通过列级加密,确保敏感数据在存储、传输和处理过程中始终处于加密状态。该功能的第一版本(AE v1)支持确定性加密(deterministic encryption),允许在加密列上执行等值操作。然而,由于加密密钥由客户端生成并管理,SQL Server无法直接访问密钥,导致初始加密和密钥轮换操作需要客户端参与,这在处理大规模数据库时效率较低。
第二版本(AE v2)引入了可信执行环境(Trusted Execution Environment, TEE)技术,通过运行在TEE中的enclave(安全区域)来支持更丰富的查询功能,如范围比较和字符串模式匹配。TEE技术确保了enclave中的计算和状态对主机操作系统和管理员不可见,从而增强了数据的安全性。AE v2还通过enclave避免了初始加密和密钥轮换时的客户端往返操作,显著提高了效率。
Always Encrypted支持两种加密模式:确定性加密和随机化加密(randomized encryption)。确定性加密允许在加密列上执行等值操作,但会泄露数据的频率分布;随机化加密则通过随机初始化向量(IV)增强了数据的安全性,但仅支持在enclave中执行查询操作。AE v2通过enclave支持了范围查询和字符串模式匹配,进一步扩展了其功能。
在性能评估中,作者使用TPC-C基准测试对Always Encrypted进行了性能测试。实验结果表明,尽管AE v2引入了额外的安全机制,但其性能损失在可接受范围内。与非加密的SQL Server相比,AE v2的吞吐量约为其一半,而与非enclave的确定性加密相比,enclave处理的性能损失约为12.3%。作者认为,随着进一步的优化,这一性能差距将会缩小。
Always Encrypted是业界首个在商业关系型数据库系统中实现端到端数据加密保护的技术。它不仅解决了云环境中数据隐私的核心问题,还为数据库管理员提供了在不访问敏感数据的情况下执行复杂管理任务的能力。该技术的推出为金融、保险、医疗等行业的敏感数据保护提供了强有力的支持,特别是在应对GDPR等数据保护法规时,Always Encrypted能够帮助企业简化合规流程。
尽管Always Encrypted在数据保护方面取得了显著进展,但其功能仍有一定的局限性,目前主要适用于高敏感性的列(如个人身份信息)。未来的研究方向包括进一步扩展其功能,使其成为适用于所有数据的通用解决方案,同时继续优化性能,减少enclave处理带来的开销。
Always Encrypted是Microsoft SQL Server在数据安全领域的一项重要创新,通过列级加密和TEE技术,确保了数据在云环境中的机密性。该技术不仅具有重要的学术价值,还在实际应用中为企业的数据隐私保护提供了强有力的支持。随着技术的不断演进,Always Encrypted有望在未来成为数据库安全领域的标杆技术。