PolarDB for PostgreSQL透明加密 简介 透明加密TDE(Transparent Data Encryption)通过在数据库层执行静止数据加密,阻止可能的攻击者绕过数据库直接从存储读取敏感信息 经过数据库身份认证的应用和用户可以继续透明地访问数据,而尝试读取数据库文件中敏感数据的操作系统用户或者未经认证的用户将不允许访问数据。 PolarDB for PG透明加密使用方法 1)编译代码时需要指定--with-openssl 2)initdb初始化集群时需要指定密码短语和加密算法。 的过程 1)initdb首先读取外部参数,得到加密算法以及加密短语,并将加密短语写入postgresql.con文件中,以供后续使用。 2、加密算法的选用 加密算法: 加密算法的选用: 加密模式使用CTR(技术器模式),因为CTR加密可以保证明文和密文长度相等。这是由数据块的大小决定的,内存和磁盘上块大小默认是8KB。
PostgreSQL透明数据加密 Cybertec为PG提供了一个透明数据加密(TDE)的补丁。是目前唯一支持透明加密数据(集群)级的实现,独立于操作系统或文件系统加密。 透明数据加密如何工作 补丁背后的思想是:以加密格式(静态加密)安全存储组成PG集群的所有文件到磁盘上,从磁盘读取时解密数据块。数据在内存中未加密。 任何有兴趣使用次功能的人都应该考虑以下特征: 1)从应用程序的角度来看,加密是透明的。 2)使用单一密钥对整个集群进行加密 细节 由于数据存储在磁盘上,我们的方法自然基于“磁盘加密理论”。 AES密码本身以最有效的方式加密/解密单个块(加密块)。数据在磁盘上是安全的。 幸运的是,英特尔和AMD为AES加密提供了卓越的硬件支持。这确保了PG TDE对性能影响最小。 PG TDE不仅提供静态数据加密,还确保整个生态系统的加密,包括: 通过SSL传输加密(客户端/服务器)、加密复制、完全安全的副本 PG TDE完美的整合到了SELinux中,为您整个基础架构提供了坚实的基础
HDFS支持端到端的透明加密,启用以后,对于一些需要加密的HDFS目录里的文件可以实现透明的加密和解密,而不需要修改用户的业务代码。端到端是指加密和解密只能通过客户端。 HDFS的透明加密属于数据库层和文件系统层的加密。它有很多好处,比如不错的性能,对于现有的应用程序是透明的。在制定策略时,HDFS也比传统的文件系统有更多的选择。 4.架构 4.1概述 ---- HDFS的透明加密有一个新的概念,加密区域(the encryption zone)。 加密区域是一个特殊的目录,写入文件的时候会被透明加密,读取文件的时候又会被透明解密。当加密区域被创建时,都会有一个加密区域秘钥(encryption zone key)与之对应。 后面Fayson会通过实操来说明如何实现HDFS数据透明加密。
目前PostgreSQL官方并未推出透明加密功能,但是cybertec开源了一个分支,支持透明加密。 https://www.cybertec-postgresql.com/en/products/postgresql-transparent-data-encryption/ 它支持对数据和WAL进行透明加密 本文主要介绍WAL的透明加密功能及原理。 WAL透明加密架构 WAL加密主要由一个缓冲来完成,该缓冲未encrypt_buf_xlog,该缓冲大小是8个页大小,在启动时创建,由函数setup_encryption完成,其堆栈如下: PostgresMain 加密到加密缓冲encrypt_buf_xlog中,然后将加密缓冲中的WAL刷写磁盘。
1.文档编写目的 ---- 在前面文章Fayson介绍过《什么是HDFS透明加密》,要实现HDFS的透明加密,首先你需要一个KMS,KMS可以用CDH自带的Java KeyStore KMS也可以使用企业版工具 本文主要介绍如何通过Cloudera Manager安装Java KeyStore KMS服务,并且实现HDFS的透明加密。 “继续” [t77gfh6x9g.jpeg] [p90dpp1016.jpeg] 输入秘钥管理员用户和用户组,注意hdfs超级用户已经被禁止设置为秘钥管理员,具体可以参考Fayson在《什么是HDFS透明加密 [zqn5qbuazs.jpeg] 4.总结 ---- 1.通过HDFS的透明加密可以实现HDFS底层文件的加密,如本文前面所述,对于非加密区域/user1下的文件a.tx可以直接通过block ID查找到该 具体可以参考Fayson前面的文章《什么是HDFS透明加密》。
在启用它时,我们首先创建一个主密钥,然后创建一个证书,再创建一个数据库加密密钥,最后我们在数据库上启用透明数据加密,而我们在这里是按照相反的顺序进行的。 2、tempdb显示仍然是加密状态的这意味着透明数据加密并没有被完全删除,其相关的数据库加密密钥仍然存在。 我已经重新启动了SQL Server实例,然后再次检查了透明数据加密状态。如下图,可以看到数据库都处于未加密状态了。 如果你没有关闭用户数据库的透明数据加密功能,你将无法删除数据库加密密钥,而且你将被抛出错误,正如我在本文中给出的那样。请确保首先按照上面的步骤进行操作。 这意味着透明数据加密已经从这个用户数据库中完全删除,但它的一些相关文件仍然存在于主数据库中,也就是主密钥及其证书。
最近一段时间,一直在和PostgreSQL社区合作开发TDE(Transparent data encryption,透明数据加密)。研究了一些密码学相关的知识,并利用这些知识和数据库相结合。 数据库当前面临的威胁模型 加密策略描述,当前PostgreSQL社区目前的设计状态以及其他数据库TDE方案对比 未来的数据安全畅想 那什么是透明数据加密? 透明数据加密,从字面上来说,可以分为三部分,数据,加密,透明。 数据,这里不用过多解释,用户需要保护的明文数据。 加密,相信大家也清楚,信息安全一直伴随着世界的发展,加密是信息安全的一种重要手段,常用加密方法目前可以分为流密码加密、分组加密以及公钥加密3种。 透明,指的是用户无感知,这是对加密行为的描述。 透明加密技术是近年来针对企业文件保密需求应运而生的一种文件加密技术。是指对使用者来说是无感知的。当使用者在打开或编辑指定文件时,系统将自动对未加密的文件进行加密,对已加密的文件自动解密。
环境 版本:OceanBase 4.1.0.0 企业版 1加密配置 详细的 加密步骤[1] 略过,本次使用 MySQL 租户。 开启透明加密并创建表空间 管理员用户登录到集群的 MySQL 租户。 # 开启 internal 方式的透明加密 # tde_method 默认值为 none,表示关闭透明表空间加密 obclient [oceanbase]> ALTER SYSTEM SET tde_method 对比加密表 t1,未加密表输出信息更丰富,并且可以看到具体的数据内容。 ------------------------------ …… 3小结 本文主要是使用 ob_admin 工具的 dumpsst 功能解析 block_file,验证了 OceanBase 数据透明加密功能 OB_TABLET_COMPACTION_HISTORY: https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001699211 本文关键字:#OceanBase# #透明加密
通过内部API实现的最快的加密模式是堆成密钥加密。这种模式适合处理大量的数据。对称加密密钥通过X509.v3证书被加密存储。 SQL Server 2005 支持一些对称加密的算法。 具体参见http://www.microsoft.com/china/technet/prodtechnol/sql/2005/sql2005cls.mspx SQL Server 2008中的透明数据加密 (TDE),可以选择同SQL Server 2005中一样使用单元级的加密,或者是使用TDE进行完全数据库级加密、或者是由Windows提供的文件级加密。 透明数据加密可以为加密数据提供更高的灵活性,因为对其而言加密是数据库的一个属性,而非仅仅是代码行中的函数结果。这样在数据级执行加密时,管理员就无需对其数据库结构和应用程序代码进行大量的改动。 下面的代码显示的是如何使用透明数据加密方法来加密数据库。
01透明数据加密(TDE)简介 透明数据加密(Transparent Data Encryption (简称TDE))是指可以在文件层对数据和文件进行实时加密和解密,落盘的文件是加密后的内容,而对于上层应用系统和开发人员而言 ,加解密过程是无感知的,写入和读取的内容是明文内容,所以叫做透明数据加密。 以使用密码机进行透明数据加密的为例,长安链的存储模块在收到存储Key-Value键值对的请求时,先将Value内容以二进制形式发送到密码机,密码机使用内置的密钥对收到的数据进行对称加密,并将密文返回给长安链存储模块 3.1.3 配置透明数据加密 在完成了node配置节点下的pkcs11配置后,接下来需要进行storage配置节点下关于TDE加密算法和密钥的配置,对于密码机,我们并不知道对应的密钥内容,只有密钥的ID 3.2基于软件实现的TDE配置 3.2.1 创建对称密钥 长安链的透明数据加密默认支持AES和国密SM4两种对称加密算法。
透明数据加密(TDE)和表级加密作为保护静态数据的关键技术,能够在数据写入磁盘前自动加密,读取时自动解密,对应用层完全透明,无需修改业务代码。 表级透明加密、列级透明加密 华为云KMS 支持细粒度表级透明加密,行存表支持表级别加密,列存表支持列级加密;支持SM4国密算法 对国密合规有要求的政企、金融客户 Amazon Redshift AWS ) 腾讯云KMS密钥管理系统 支持腾讯云提供密钥和自定义密钥两种方式;一键开启,对应用透明 需要一站式数据智能平台的中大型企业 二、加密技术深度解析 透明数据加密的核心价值在于“透明”——数据在写入磁盘前自动加密 如华为云DWS支持细粒度表级透明加密,用户可根据不同的数据敏感级别和访问需求来选择合适的加密方式,支持AES-CTR-128(非国密场景)和SM4-CTR-128(国密场景)两种加密算法。 实际部署体验 腾讯云数据仓库的透明数据加密功能操作简便,用户只需在控制台一键开启TDE功能,即可实现对数据文件的实时I/O加密和解密。
而落地加解密技术通过驱动层过滤和实时加解密引擎,确保文件在写入存储介质瞬间自动完成加密,在授权读取时透明解密,整个过程对用户无感知,却从根本上杜绝了明文数据在终端设备上的残留风险。 这种"存储即加密、读取即解密"的透明化处理模式,既不影响用户操作习惯,又实现了数据落地即保护的刚性约束。三、全场景加密能力的技术解析面向企业复杂业务场景,现代加密软件需要具备多维度的技术能力。 在邮件加密场景中,基于S/MIME标准的端到端加密与网关中继加密形成双重保障。 其技术架构的核心优势体现在几个层面:首先是驱动级透明加密引擎的成熟度。 无论是AutoCAD的图纸保存,还是IDE中的代码提交,加密过程完全透明,无需用户手动干预,也避免了 Hook 技术可能带来的系统稳定性风险。其次是加密网关的高性能设计。
HTTP 是互联网上应用最为广泛的一种网络协议,它就像是一个 “透明的快递员”,在浏览器和网站服务器之间传递数据。但这个 “快递员” 有个致命缺点:不加密。 而 HTTPS(超文本传输安全协议),就是给 HTTP 加上了一把 “安全锁”,成为了 “升级版加密快递员”。它在 HTTP 的基础上,通过SSL/TLS 加密技术,将数据进行加密处理。 HTTPS 的加密过程听起来复杂,但其实可以用一个生活场景来类比。 加密传输 浏览器用服务器的公钥加密这个随机密钥,发送给服务器;服务器收到后,用自己的私钥解密,获取随机密钥。后续浏览器和服务器之间的数据传输,都会用这个随机密钥进行加密和解密。 而 HTTPS 凭借加密和验证机制,能有效抵御此类攻击,确保数据的完整性和真实性。
设置透明效果 大概有三种 1、用android系统的透明效果 Java代码 android:background="@android:color/transparent" 例如 设置按钮 Java代码 android:layout_height="wrap_content" android:textColor="#ffffff" /> 2、用ARGB来控制 Java代码 半透明 //0~255透明度值 android 窗体透明的,黑暗度等的设置技巧 设置透明度(这是窗体本身的透明度,非背景) WindowManager.LayoutParams lp=getWindow 1.0完全不透明,0.0f完全透明 设置黑暗度 WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.dimAmount=0.5f 00--99(透明--不怎么透明), //后6位是颜色的设置 manifest.xml <activity android:name=".TransparentActivity" android:theme
一个片元透明度符合条件(透明度小于某个阈值),直接被舍弃。否则就会按照普通的片元进行深度测试、深度写入等。因此我们不需要关闭深度写入。 我们在片元着色器中使用clip函数进行透明度测试 Shader "Unlit/AlphaTest" { Properties{ _Color("Main Color",Color Cutoff 0 将Cutoff的值设置为0.65,图中透明度在0.65以下的直接被舍弃了 ?
透明度混合相较于透明度测试更加复杂一些,透明度混合可以得到真正的半透明效果,使用当前片元和透明度作为混合因子,与已经存储在颜色缓冲区的颜色值进行混合,得到新的颜色。 透明度混合需要关闭深度写入,这使得我们需要关注物体的渲染顺序。 我们使用Unity的混合指令Blend,想实现半透明的效果就要把当前自身的颜色和已经存在的颜色缓冲中的颜色进行混合,混合时使用的函数就是该指令决定的。 Blend.PNG 相较于透明度测试,代码部分改变,Tags的Queue标签设置为Transparent,RenderType标签让Shader归入提前定义的组,我们通过ZWriteOff关闭深度写入, AplhaBlendTest.PNG 透明度混合的双面渲染 Cull Back是默认的,背对摄像机的一面不会被渲染 Cull Front 是面向摄像机的不会渲染 Pass{
在这里插入图片描述 <!DOCTYPE html> <html> <head> <title></title> </head> <style type="text/css"> .box{ position: relative; width:500px; } .images-box{ background: #9cf3c3; width:100%;height:300px; } .sign{
WindowChrome.ResizeBorderThickness> </WindowChrome> </Window.Resources> <Grid> </Grid> </Window> 具有透明背景且包含不透明控件的
bAlpha As Byte, ByVal dwFlags As Long) As Long '具体可以使用的常量及其用法 Const LWA_ALPHA=&H2 '表示把窗体设置成半透明样式 Const LWA_COLORKEY=&H1 '表示不显示窗体中的透明色 具体例子 程序代码 Module1 Public Declare Function SetLayeredWindowAttributes GWL_EXSTYLE, rtn '把新的样式赋给窗体 SetLayeredWindowAttributes me.hwnd, 0, 192, LWA_ALPHA '把窗体设置成半透明样式 ,第二个参数表示透明程度 '取值范围0--255,为0时就是一个全透明的窗体了 End Sub 第二种使用方法 SetLayeredWindowAttributes Me.hWnd , &H0, 0, LWA_COLORKEY '表明不显示窗体中的透明色 '而第二个参数表示透明色为黑色,并且你可以用RGB函数来指定颜色值 源码下载
Flutter:创建透明/半透明的应用栏 作者:坚果 华为云享专家,InfoQ签约作者,OpenHarmony布道师,,华为云享专家,阿里云专家博主,51CTO博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享 在 Flutter 中,您可以通过执行以下操作来创建透明或半透明的应用栏: 将AppBar小部件的****backgroundColor属性设置为完全透明 (Colors.transparent) 或半透明 (不透明度小于 1 的颜色) 将AppBar小部件的elevation属性设置为零以移除阴影(默认情况下,Flutter 中的材质应用栏有阴影) 如果您希望 body 的高度扩展到包含应用栏的高度并且 例子 透明应用栏 编码: // main.dart import 'package:flutter/material.dart'; void main() { runApp(const MyApp height: double.infinity, fit: BoxFit.cover, )); } } 结论 我们已经浏览了几个关于在 Flutter 中创建透明和半透明应用栏的示例