数据加密 NCache
NCache 提供端到端数据加密框架,可在客户端自动加密敏感数据,并在分布式缓存中存储时保持加密状态。这确保数据在传输中和静态存储时都受到保护,只有拥有正确加密密钥的授权客户端才能解密和访问原始信息。无需任何代码更改,并支持强大的行业标准算法,例如: AES-256, AES-FIPS, 3DES和 RSA, NCache 有助于保护敏感数据并满足 PCI-DSS、HIPAA 和 GDPR 等合规性要求。
在分布式环境中,缓存系统经常通过网络通道在客户端应用程序和远程缓存服务器之间传输数据。这些数据以序列化的形式在网络中传输并存储在缓存中,如果未加密,则很容易受到拦截、窃听、中间人攻击和未经授权的访问攻击。
数据加密 加密是一种核心数据安全机制,它将可读的明文信息转换为不可读的密文。只有拥有正确加密密钥的授权客户端才能解密数据并访问原始信息。简而言之,加密确保即使数据被拦截或非法访问,未经授权的第三方也无法使用。
数据加密工作流程
当您将数据添加到缓存时,系统会在客户端使用已配置的加密算法和加密密钥对其进行加密。加密数据存储在缓存中,确保数据安全。现在,当获取加密数据时,系统会从缓存中检索数据,并在使用前在客户端进行解密。这种端到端加密方法可确保数据在传输过程中和静态时均受到保护,从而 NCache 用于缓存敏感信息的安全解决方案。
数据加密算法
加密算法是将数据转换为密文的方法。算法使用加密密钥以可预测的方式改变数据,因此,即使加密后的数据看起来是随机的,也可以使用解密密钥将其还原为明文。
NCache 支持丰富的标准化加密算法,几乎不可能被破解。这确保您的敏感数据得到真正有效的保护。Cache 支持对称和非对称加密算法,您可以根据架构和安全需求进行选择:
- 三重数据加密标准 (3DES)
- 高级加密标准(AES)
- 高级加密标准 - 联邦信息处理标准 (AES-FIPS)
- 里维斯特-沙米尔-阿德尔曼 (RSA)
以下是每种算法及其支持的变体的详细信息:
三重数据加密标准 (3DES)
三重数据加密标准 (3DES) 是一种对称密钥分组密码算法,对每个数据块应用三次 DES 加密算法。以下 3DES 算法的不同变体支持 NCache 是:
- 3DES-128: 128位加密
- 3DES-192: 192位加密
高级加密标准(AES)
高级加密标准 (AES) 是一种对称分组密码算法,其分组/块大小为 128 位。它使用 128、192 和 256 位的密钥转换这些单独的分组。加密这些分组后,它会将它们连接在一起形成密文。AES 算法支持的不同变体 NCache 是:
- AES-128: 128位加密
- AES-192: 192位加密
- AES-256: 256位加密
高级加密标准 - 联邦信息处理标准 (AES-FIPS)
AES 指定了一种经联邦信息处理标准 (FIPS) 批准的加密算法,可用于保护电子数据,称为高级加密标准 - 联邦信息处理标准 (AES-FIPS)。AES-FIPS 算法的不同变体由 NCache 是:
- AES-FIPS 128: 128位加密
- AES-FIPS 192: 192位加密
- AES-FIPS 256: 256位加密
3DES 和 AES 的安全强度比较
三重数据加密标准算法 (3DES) 是一种使用三次 DES 加密的方法。 但即使是三重 DES 也被证明对暴力攻击无效(除了大大减慢了进程)。
AES 数据加密是一种在数学上更高效、更优雅的加密算法,但其主要优势在于可以选择各种密钥长度。 AES 允许您选择 128 位、192 位或 256 位密钥,使其比 DES 的 56 位密钥呈指数级强。 密钥长度越大,越难破解。
| 算法 | 密钥长度(字节) |
|---|---|
| 3DES-128 | 16 |
| 3DES-192 | 24 |
| AES-128 | 16 |
| AES-192 | 24 |
| AES-256 | 32 |
| AES-FIPS 128 | 16 |
| AES-FIPS 192 | 24 |
| AES-FIPS 256 | 32 |
非对称加密基础:RSA握手
对称加密算法(例如 AES)使用单个共享密钥进行快速批量数据处理,而 Rivest-Shamir-Adleman (RSA) 算法是一种用 C# 实现的非对称加密框架。它依赖于数学上关联的密钥对:
公钥:以开源方式分发,专门用于数据加密。
私钥:在生成过程中严格保密,仅用于解密数据。
连接力学:
密钥生成每个独立进程在其生命周期内都会生成自己的动态 RSA 公钥/私钥对。
公钥交换客户端进程请求服务器的公钥,服务器同时记录客户端的公钥。
RSA加密应用案例:
客户端到服务器身份验证(应用程序登录)客户端从应用程序获取未加密的凭据,并使用服务器的 RSA 公钥对其进行加密。如果凭据已使用本地密钥加密,则客户端会使用服务器的 RSA 公钥对其进行加密。 凭证加密密钥 (CEK)客户端仍然使用 RSA 对其进行加密,并通知服务器凭据也已使用 CEK 加密。
管理(PowerShell)当 PowerShell Cmdlet 连接到服务器进行管理时,它使用 RSA 向服务器发送凭据。PowerShell 从用户处获取未加密的凭据,并在通过网络传输之前使用 RSA 对其进行加密。
服务器到服务器集群加入当新的缓存服务器尝试加入集群时,必须进行身份验证。它使用 RSA 加密技术安全地将其凭据传输到接收集群节点。
对称安全密钥分发(KEK 和 CEK)连接时,服务器使用客户端的 RSA 公钥对密钥加密密钥 (KEK) 和凭证加密密钥 (CEK) 进行加密,从而安全地将密钥加密密钥和凭证加密密钥分发给客户端。
3DES、AES 和 RSA 的性能比较
AES 的加密/解密时间相对少于 3DES,而两种算法消耗的内存量几乎相同。
3DES 加密过程比 AES 慢得多,因为 3DES 需要重复三次相同的加密过程,而 AES 加密过程则快得多。RSA 由于复杂的数学变换而引入了最高的计算开销,因此它最适合用于安全配置设置阶段,而不是连续的有效载荷操作。
申请审理时间AES 比 3DES 快得多。RSA 是这组算法中计算速度最慢、资源消耗最大的。
内存使用AES 和 3DES 占用的内存量几乎相同。RSA 则需要在加密密钥交换阶段额外分配内存,以处理更大的密钥结构。
加密密钥管理
加密密钥管理 NCache 涉及安全处理所有加密密钥,包括 密钥加密密钥 (KEK), 数据加密密钥 (DEK)和 凭证加密密钥 (CEK),如下所述。
密钥加密密钥 (KEK):密钥加密密钥 (KEK) 基于 AES 256 加密,通过加密数据加密密钥 (DEK) 来保护数据加密密钥 (DEK)。此密钥必须在 NCache 服务器上的服务配置文件。为了确保分布式环境中所有缓存服务器的一致性和安全性,每台服务器必须使用相同的密钥加密密钥 (KEK)。
数据加密密钥 (DEK):数据加密密钥 (DEK) 负责在用户数据存储到缓存之前对其进行加密。此 DEK 本身也使用 KEK 进行加密。这种方法确保只有经过授权的工具或进程才能检索和使用加密密钥。
凭证加密密钥 (CEK): NCache 加密存储在客户端配置文件中的用户凭证(客户端.ncconf) 使用凭证加密密钥 (CEK)。此密钥必须在 NCache 服务配置文件。与 KEK 类似,每个服务器都必须使用相同的凭据加密密钥 (CEK)。这确保了一致性,并能有效保护分布式环境中的客户端凭据。RSA 加密在客户端凭据数据通过网络传输时都会使用 CEK。
用户凭证认证
通过利用基于 RSA 的加密技术, NCache 在身份验证期间保护用户凭证的传输。当管理工具或客户端需要验证这些凭证时,它会请求服务器的 RSA-256 公钥。服务器会为每个进程的生命周期生成一个新的公钥/私钥对。工具和客户端在传输用户凭证(例如用户名和密码)之前,会使用服务器的公钥对其进行加密。服务器使用其私钥解密这些凭证以验证用户身份。此过程可确保凭证在传输过程中保持安全,并且不易被拦截或滥用。
管理工具的密钥交换和身份验证机制
NCache 采用先进的加密技术,为管理工具进行安全密钥交换和身份验证,例如 NCache 管理中心、PowerShell 等,如下所述。
密钥加密密钥管理
对于管理工具,密钥交换过程涉及在流程生命周期内生成 RSA-256 公钥/私钥对。该工具与服务器共享其公钥。然后,服务器使用此公钥加密 KEK,并与该工具共享加密的 KEK。管理工具使用其私钥解密 KEK。此 RSA 密钥对仅在工具生命周期内有效,从而确保交换的短暂性和安全性。启用用户访问控制 (UAC) 后,只有经过授权的工具和客户端才被允许从服务器获取 KEK。
凭证加密密钥管理
管理工具使用基于 RSA 的安全密钥交换从缓存服务器获取 CEK。与 KEK 管理类似,该工具在其生命周期内生成一个基于 RSA 的 256 位公钥/私钥对。公钥与服务器共享,服务器使用工具的公钥加密 CEK,并将加密的 CEK 共享给工具。然后,管理工具使用其私钥解密 CEK,并用它来加密用户凭据。 客户端.ncconf 文件中。
客户端密钥交换
类似地,客户端连接到服务器并使用基于 RSA 的安全密钥交换请求 CEK。服务器使用客户端的公钥加密 CEK,客户端使用其私钥解密 CEK,从而能够解密存储在 客户端.ncconf.
加密发生在哪里 NCache
NCache 数据加密和解密主要发生在应用程序进程内部。如果为缓存启用了加密, NCache 以加密形式将数据存储在缓存中。
启用加密后, NCache 客户端会在将对象发送到缓存之前自动加密它们。并从缓存中获取的对象在传递到应用程序之前自动解密。启用加密后,使用缓存 API、缓存启动加载器和 Read-through 提供程序添加的数据都会被加密。
您可以通过以下方式启用加密 NCache 管理中心 无需您进行任何编程工作。要了解如何启用加密,请参阅 配置加密.