金仓数据库KingbaseES 随机数生成介绍
关键字:
KingbaseES、随机数生成、安全功能 、人大金仓、KingbaseES
什么是随机数?
随机数发生器作为现代密码学的基本原语之一,其生成的随机数具有广泛的应用,如应用与对称或非对称加密密码算法的密钥产生、“挑战-响应”协议方案中的一次性口令、电子签名方案中的秘密信息,以及抵抗侧通道分析攻击等。随机数质量的好坏直接关系到密码算法和协议等密码应用的安全性。
按照产生原理不同,随机数发生器(Random Number Generator, RNG)主要分为非确定性随机数发生器(NDRNG)和确定性发生器(DRNG)。NDRNG通常是采集来自于物理或非物理现象的随机性,如电子噪声、电磁辐射、系统中断、鼠标/键盘操作等事件,进而通过数字化处理等环节生成具有良好不可预测性的数据;而DRNG则是采用确定性算法将一段随机序列(即种子,一般由NDRNG产生)拓展成任意长度的序列。
按照发生器形态分类,又可以分为硬件形态的随机数发生器(硬件RNG)和软件形态的随机数生成器(软件RNG)。硬件RNG通常在验知识需要投入较大的成本以实现生成高质量的随机数,并且硬件形态的产品更新迭代周期长。传统的硬件RNG已经不能完全满足凼亲的密码应用对随机数服务的需求。因此,以软件形式产生随机数成为各类系统平台中最为常见的方法
硬件RNG
目前KingbaseES支持以卫士通硬件方式生成随机数,需要在卫士通环境下(依赖卫士通加密卡)
步骤如下:
1)安装加密卡(插在机器上)
2)load加密卡
[root@localhost driver2.8.4-crypt]# /home/kingbase/wstdrv/l0f13_user-221012/drv/driver2.8.4-crypt/load-ex4
3)初始化硬件加密卡的实例
./initdb -Ddata_self_period1 -Usystem -e wstsdk_cd --encrypt-device-lib=libencwsttjsdk_device.so --encrypt-driver-lib=libsw_api_v60_pcie1_l0f13.so --encrypt-maxkey-len=16 --encrypt-align-num=16 -W
4)启动服务
5)ksql第一次登录,执行以下函数
select sys_init_wstsdk();
软件RNG
依赖openssl生成随机数种子,再通过特定算法对随机数种子进行拓展,最后使用确定性算法将种子拓展成任意长度的序列,最终的到随机数
同时支持NDRNG的方法生成随机数种子,在熵池中采集系统时间、鼠标I/O等随机事件,通过特定的计算的到随机数种子,再通过DRNG方法得到随机数