在DM6.0上扩展加密算法

加密与安全1年前 (2023)发布 aixure
54 0 0
导读:DM系统中内置了常用的DES,AES, RC4等加密算法供用户使用,以此来保护数据的安全性。然而在有些特殊的环境下,这些加密算法可能会不能满足用户的需求,用户可能希望使用自己特殊的加密算法,或强度更高的加密算法。DM的加密引擎功能则可以满足这样的需求。 D…

  DM系统中内置了常用的DES,AES, RC4等加密算法供用户使用,以此来保护数据的安全性。然而在有些特殊的环境下,这些加密算法可能会不能满足用户的需求,用户可能希望使用自己特殊的加密算法,或强度更高的加密算法。DM的加密引擎功能则可以满足这样的需求。

  DM加密引擎是一个执行部件,该部件实现了一种或多种密码算法用于保护敏感数据。DM加密引擎功能,可以注册管理用户的加密引擎,以达到利用第三方加密引擎保护用户敏感数据的目的。

  (1)系统加密引擎

  DM加密引擎分为系统加密引擎和用户自定义加密引擎两种。系统加密引擎名为SYS_CRYPTO,系统加密引擎在DM服务器启动之后自动被加载到系统之中,用户可以直接使用系统加密引擎对表进行加密。

  例如,对表进行半透明加密:

CREATE TABLE TAB01(C0 VARCHAR(50) ENCRYPT WITH SYS_CRYPTO.AES128_ECB MANUAL HASH WITH SYS_CRYPTO.MD5,C1 INT);

  对表进行透明加密:

CREATE TABLE TAB02(C0 VARCHAR(50) ENCRYPT WITH SYS_CRYPTO.AES128_ECB AUTO BY AES128_ECB HASH WITH SYS_CRYPTO.MD5,C1 INT);

  (2)用户自定义加密引擎

  DM提供了标准加密引擎接口,以供用户使用自己的加密算法。加密引擎相关接口说明如下:

  crypto_init 函数:初始化该加密引擎:申请资源,设置状态等等。

  crypto_destroy 函数:根据加密引擎的全局参数销毁该加密引擎:释放该加密引擎申请的系统资源,设置加密引擎的状态等等。

  调用逻辑:在使用加密引擎中的密码函数之前必须调用crypto_init对加密引擎进行初始化,不再使用该加密引擎时必须调用crypto_destroy对其进行销毁。

  说明如下:

  crypto_cipher_encrypt_init函数:加密初始化。

  crypto_cipher_get_cipherext_size函数:计算给定长度的明文,加密后得到的密文所占的字节数。DM数据库管理系统按照返回值分配密文缓冲区。

  crypto_cipher_encrypt函数:加密。

  crypto_cipher_cleanup函数:回收密码算法在处理过程中申请的系统资源。

  调用逻辑:在使用一个密码算法进行加密之前首先对该密码算法进行初始化处理,DM数据库管理系统根据所指定的密码算法准备好明文,并为密文分配好密文缓冲区,然后调用加密函数进行加密,完成加密动作后回收加密过程中申请的系统资源。

  说明如下:

  crypto_cipher_decrypt_init函数:解密初始化。

  crypto_cipher_get_plain_text_size函数:估算密文对应的明文的最小缓冲区长度。

  crypto_cipher_decrypt函数:解密。

  调用逻辑:解密过程的调用逻辑与加密过程基本类似,可以参考加密过程的说明。

  说明如下:

  crypto_cipher_hash_init函数:散列过程的初始化工作。

  crypto_cipher_hash_update函数:计算待散列消息的散列值。

  crypto_cipher_hash_final函数:存放整个散列过程得到的散列值。

  调用逻辑:加密引擎散列用于鉴别系统加载的加密引擎与注册的加密引擎是否相同。散列过程的调用逻辑与加密过程基本类似,可以参考加密过程的说明。

  加密算法封装好了之后,编译成DLL文件,并存放在DM服务器的本地路径中。例如:WINDOWS环境下加密引擎文件CE.DLL在C:\,这时候就可以用下面的SQL语句加载加密引擎:

CREATE CRYPTO CE1 ‘C:\CE.DLL’;  

  
      加密链接库中的加密算法只有在添加后才能正常使用。添加算法的SQL语句如下,其中INNDERID为用户实现加密引擎接口时自定义的值。

  ALTER CRYPTO CE1 ADD BLOCK ENCRYPT CIPHER BC01 INNERID 3 BLOCK SIZE 4 KEY SIZE 4;

  上述步骤完成了之后,就可以使用用户定义的加密算法了。使用加密引擎CE1中的加密算法BC01对表T1的C1字段进行透明加密的SQL语句如下:

CREATE TABLE T1 (C1 INT ENCRYPT WITH CE1.BC01);

  DM加密引擎功能使得用户可以按照DM加密引擎标准接口,封装自己的加密算法,然后在DM的透明加密、半透明加密、通信加密等过程中使用自己的加密算法,这样大大提高了数据的安全性。

© 版权声明

相关文章

暂无评论

暂无评论...