Skip to content

tde4j/tde4j

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tde4j快速上手指南

前言

tde4jTransparent Data Encryption for JDBC 首字母的缩写组合。tde4j项目旨在为使用JDBC访问数据库的所有应用程序提供一种透明的数据库加解密能力。tde4j核心在于应用程序免改造代码即可实现对数据库字段的加解密,无论是已开发的应用程序,还是新开发的应用程序都可以使用tde4j来实现数据库字段级加密。tde4j与数据库自身TDE的区别:TDE是在数据库侧由数据库厂商实现的一种透明数据加密能力,不同数据库厂商的TDE实现机理各不相同,数据库侧TDE加密通常不支持国密(如Oracle)且不能防DBA;tde4j是在应用程序侧基于JDBC API接口驱动层实现的数据库字段级透明加密,理论上只要适配了JDBC API接口规范的所有数据库都能被tde4j加密,且支持国密算法。tde4j目前仅适用于使用JDBC访问数据库的Java应用程序。另外,使用tde4j加密的字段会丧失计算功能,如排序和模糊查询将受到影响。

如何安装

tde4j提供遵循JDBC API接口规范的驱动程序tde4j-driver;而字段加密所使用的算法和密钥则由独立的模块实现,tde4j默认自带了tde4j-simple模块实现了软国密算法和简单的密钥管理。

对于开发中的Java应用程序(以Maven为例),导入tde4j-drivertde4j-simple模块依赖:

<dependencies>
    <dependency>
        <groupId>org.tde4j</groupId>
        <artifactId>tde4j-driver</artifactId>
        <version>0.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.tde4j</groupId>
        <artifactId>tde4j-simple</artifactId>
        <version>0.1.0</version>
    </dependency>
</dependencies>

提示:对于已开发完成并上线运行的应用程序,如何安装请参考tde4j安装指南

如何配置

导入tde4j-drivertde4j-simple依赖后,依次完成如下配置:

修改应用程序JDBC驱动名称。以SpringBoot和MySQL为例,修改spring.datasource.driver-class-name的值为org.tde4j.Driver,示例如下:

spring.datasource.driver-class-name=org.tde4j.Driver

提示:tde4j当前支持以下数据库类型:

  • MySQL
  • Postgresql
  • Oracle
  • SQLServer

tde4j-simple模块的配置文件tde4jsimple.yaml提供了加密字段、加密算法和密钥的配置。创建/etc/tde4jsimple.yaml,示例如下(下载tde4j-simple配置模板):

# You can generate keys with openssl utility
# e.g. execute `openssl rand -hex 16` to generate 16 bytes key
# configure crypto algorithm and key management
keystore:
  - id: key1
    value: f8c268f2b88524733dce9be6df5e977a
    algorithm: SM4/CBC/PKCS5Padding
  - id: key2
    value: d9af0f98012c847cd19b090cd8758b7f
    algorithm: SM4/ECB/PKCS5Padding
# configure encrypted columns and keys
keyColumnMapping:
  - key: key1
    parameter:
      iv: d9af0f98012c847cd19b090cd8758b7f
    columns:
      - mydb.category.cateName
  - key: key2
    columns:
      - mydb.user.nickname
      - mydb.user.email

以上配置文件,

  • keystore:配置加密算法和密钥,每个密钥包含id, value, algorithm三个属性,其中value以hex表示。以SM4算法为例,产生16字节的随机密钥,可使用openssl rand -hex 16生成。

  • keyColumnMapping:配置加密密钥、加密参数、加密字段的映射关系,每条映射包含keyparameter(可选)columns三元组。其中keykeystore中存在的任意一个密钥id;parameter为可选参数,如IV参数;columns是匹配字段名称的列表,字段名称以库.表.字段形式表示,支持wildcard表示方式,如mydb.*.name,即对数据库mydb中所有表的name字段进行加密。

    示例:使用密钥key1mydb.category.cateName字段加密,使用密钥key2mydb.user.nicknamemydb.user.email字段加密。

提示:有关tde4j-simple的详细配置,请参考tde4j-simple配置

如何使用

按以上要求完成安装和配置后,重新运行应用程序即可正常使用。若运行正常,所有配置了需要加密的字段,在写入数据库时将自动加密,从数据库读取时将自动解密。

注意:字段在设置加密后,将丧失计算功能,如排序和模糊搜索功能。对于精确搜索,加密算法必须用ECB模式或者采用固定IV的CBC模式。

关于安全

本项目提供的tde4j-simple模块实现了简单的密钥管理和软国密加密,可满足简单的软国密字段加密需求。在安全性上,tde4j-simple以配置文件方式来管理密钥并以软模块实现数据加解密,安全性不高。建议政企客户可采用安全性更高且符合国密合规要求的tde4j第三方模块

关于API

tde4j项目提供加密算法、密钥管理、字段管理的扩展API接口,开发者可基于tde4j-api提供的API接口开发第三方模块,以实现自定义的密码算法、密钥管理和加密字段管理。具体请参考tde4j开发者指南

代码贡献

tde4j开源项目由哈工大深圳-数据安全研究院发起,发起人为刘川意博士。tde4j项目作者为王爱兵,就职于奇安信。tde4j还在成长中,若您对tde4j项目感兴趣并愿意一起完善它,欢迎加入我们的开源社区。

您可以联系项目Owner,若您通过我们的审核便可成为tde4j的Maintainer成员之一。

以下是由其它开发商或开发者创建和维护的tde4j第三方模块列表。tde4j官方不提供第三方模块的技术支持,因此请联系每个模块的开发商或开发者以获取技术支持。

有关如何将你的模块加入到此列表中,请参考发布第三方模块

模块名称 安全级别 描述 开发商/开发者 仓库
tde4j-quickcsp 二级 tde4j密码中间件模块 奇安信

许可证

tde4j开源项目使用Apache Software License, Version 2.0,有关协议请参考LICENSE

About

Transparent Data Encryption for JDBC

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages