【安当产品应用案例100集】010-基于国密UKEY的信封加密应用案例

2024-08-23 07:36

本文主要是介绍【安当产品应用案例100集】010-基于国密UKEY的信封加密应用案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安当有个客户开发了一套C/S架构的软件,Server在云端,Client由不同的用户使用。最初软件设计开发的时候,没有考虑数据安全形势日渐严峻的问题,Server端和Client端直接就建立一个socket连接来进行通信,Server端发出去的数据还涉及到一些敏感字段和指令,随着越来越多的用户开始关注安全问题,这个安全架构显然已经不满足最基本的数据安全要求。

由于Client端数量较多,客户希望能有一种相对成本可控的安全加固方案。如下的案例介绍,我们会分享一下安当如何通过在Client端增加UKEY,通过信封加密的方法在应用层将数据加密,实现数据的安全传递的。

一、什么是信封加密

信封加密(Envelope Encryption)是一种高效的加密技术,特别适用于处理海量数据场景。顾名思义,信封加密是一种类似数字信封技术的加密手段,它通过将加密数据的数据密钥(Data Encryption Key, DEK)封入一个“信封”中进行存储、传递和使用,而不再直接使用用户的主密钥(Customer Master Key, CMK)来加密和解密数据。这种方式结合了对称加密(如AES)和非对称加密(如RSA)两种技术的优势。

通常各个厂家的KMS都提供了支持客户软件通过API调用来完成信封加密的过程。我们以安当的KSP密钥安全平台为例来看看信封加密的具体过程:

1. 生成密钥:

  • 首先,通过KSP的GenerateDataKey接口生成一个数据密钥(DEK),这个接口会同时返回一个明文DEK和一个用CMK加密后的密文DEK。
  • 接着,可以在本地生成RSA密钥对(如果需要的话,这一步不是必须的,因为DEK的密文已经由CMK加密)。

2. 加密数据:

  • 使用明文DEK对需要加密的数据进行对称加密,生成密文数据。
  • 将密文DEK(即DEK的密文)和密文数据一起存储或传输。这里的密文DEK和密文数据可以被形象地比喻为“信封”和“信件”。

再来看看具体解密过程:

1. 获取密钥:

  • 从存储设备中取得密文DEK和密文数据。
  • 如果使用了RSA加密DEK的密文,则需要使用RSA私钥解密密文DEK,得到明文DEK(这一步在实际场景中可以直接使用KSP的Decrypt接口解密密文DEK)。

2. 解密数据:

  • 使用明文DEK对密文数据进行对称解密,得到原始数据。

二、C/S架构软件中的信封加密实例

该案例中,客户从综合数据安全解决方案的角度,计划在后续的迭代中引入密钥管理系统来进行完整的数据安全加固。在项目前期,先通过给Client配发UKEY智能密码钥匙,配合UKEY预置的RSA密钥对来实现信封加密机制,实现应用层的数据加密。

整个方案流程如下:

以上流程中,基于场景描述需要,我们给不同的密钥的不同的命名,具体含义如下:

  • PUB-KEY:RSA加密公钥
  • PRI-KEY:RSA加密私钥
  • D-KEY:后台数据加密密钥
  • S-KEY:临时会话密钥

方案流程只是原理示例,具体设计到的安当UKEY的一些接口使用,案例中就不赘述了。经过这一层安全加固之后,显而易见的两个好处:

  1. 首先传输的数据安全了:原来socket接口上的数据流,被S-KEY加密过了,即使被监听,监听者即使拿到加密后的S-KEY,没有UKEY内置的私钥,是没办法解密的。
  2. 其次Server端对Client有硬件令牌管控了,客户端配发UKEY的方式,也相当于每个客户端有了一个身份令牌。

三、安当的其他安全加固建议

安当目前帮客户实施的只是应用层的数据加密,C/S架构软件实现客户端和服务端之间的数据安全传输,需要一个系统的加固方案。

1. 应用加密技术确保应用层和传输层数据安全

传输层加密

  • SSL/TLS协议:这是最常用的传输层加密协议之一,它可以在客户端和服务器之间建立一个加密的通道,确保数据在传输过程中的机密性和完整性。SSL/TLS协议通过握手过程协商加密密钥,并使用这些密钥对数据进行加密和解密。

应用层加密

  • 对称加密:如AES(高级加密标准),客户端和服务端可以使用相同的密钥对数据进行加密和解密。但密钥的安全传输是一个问题,通常需要使用非对称加密技术来安全地交换密钥。
  • 非对称加密:如RSA,客户端和服务器各自拥有一对公私钥。私钥保密,公钥公开。客户端可以使用服务器的公钥加密敏感数据或对称密钥,然后发送给服务器,服务器使用自己的私钥解密。

2. 安全协议的选择

  • HTTPS:基于HTTP协议和SSL/TLS协议,为Web应用提供安全的数据传输。HTTPS是C/S架构中Web服务常用的加密通信协议。
  • 自定义协议:在某些特定场景下,开发者可能会根据业务需求自定义安全协议,以确保数据传输的安全性和效率。

3. 数据完整性和校验

  • 数字签名:服务端可以使用私钥对消息进行签名,客户端使用服务端的公钥验证签名的真实性,以确保消息在传输过程中未被篡改。
  • 哈希校验:在数据传输前后使用哈希算法对数据进行校验,确保数据的完整性和一致性。

4. 访问控制和认证

  • 用户认证:通过用户名、密码、令牌等方式对客户端进行身份认证,确保只有合法的用户才能访问服务端资源。
  • 权限控制:根据用户的身份和角色,限制其对服务端资源的访问权限,防止未授权的数据访问。

5. 网络安全措施

  • 防火墙:在服务器和网络边界部署防火墙,过滤非法访问和攻击流量,保护服务端资源的安全。
  • 入侵检测系统:实时监控网络流量和服务器日志,检测潜在的入侵和攻击行为,并及时采取应对措施。

数据安全无止境,只有综合评估企业业务系统架构以及数据全生命周期的各个环节,才能在成本与安全之间达到一个合适的平衡。安当建议客户考虑数据全生命周期的安全方案,依托安当的KDPS解决方案,对生产环节数据、传输环节数据、存储环节数据都做好安全保护。

文章作者:太白 ©本文章解释权归安当西安研发中心所有

这篇关于【安当产品应用案例100集】010-基于国密UKEY的信封加密应用案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098754

相关文章

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

Go信号处理如何优雅地关闭你的应用

《Go信号处理如何优雅地关闭你的应用》Go中的优雅关闭机制使得在应用程序接收到终止信号时,能够进行平滑的资源清理,通过使用context来管理goroutine的生命周期,结合signal... 目录1. 什么是信号处理?2. 如何优雅地关闭 Go 应用?3. 代码实现3.1 基本的信号捕获和优雅关闭3.2

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取