R加密算法综合了RC5、RC6加密算法的优点并保持小的分组,使之更适合用于对数据库文件加密。安全性比RC5、DES高,密钥长度可变,能抵抗密钥穷举攻击。R加密算法加解密速度快,可满足数据库加密的要求。
一、R加密算法
1、 R加密算法的参数和运算
R加密算法是对字操作的,所有的基本运算都是以字为基本信息单位。每个字为w比特,这里取w=32,它是可变的,例如也可以取w=64或16。R加密算法有2-字(64比特)的输入(明文)和输出(密文)分组大小。
R加密算法使用一个源自用户提供的密钥的扩展密钥表S表,S的大小依赖于轮数r:S有t=2(r+2)个字。
所用的参数如下:
w:字长。每个字有u=(w/8)个8比特字节。w的标准值为32,容许取16,32,64。明文和密文分组都是2w比特长。
r:轮数。相应的扩展密钥表S含有t=2(r+2)个字。r的取值范围为12,13,…,255。
除了w和r外,R算法的密钥长度可变,可由b和K指定:b:密钥K的字节数。b的取值范围为16,17,…,255。K:b字节密钥:K[0],K[1],…,K[b-1]。
因此R加密算法一般记为R-w/r/b。
算法中涉及到的运算有:
lg(x) x的以2为底的对数
a+b 两个字模w2加
a-b 两个字模w2减
a⊕b 两个字比特对位模2加(异或)
a×b 两个字模w2乘
a<<<b w比特字a循环左移b位
a>>>b w比特字a循环右移b位
2、R加密算法介绍
R加密算法的明文输入包含2个字,记为A和B。
算法用到一个包含t=2(r+2)个字的扩展密钥表S[0,…,t-1],由用户提供的密钥K得到。算法由3部分组成:密钥扩展算法,加密算法和解密算法。
(1)密钥扩展
密钥扩展算法用到两个字长的二进制常量,Pw和Qw:
其中,e=2.718281828459…(自然对数的底),φ=1.618033988749…(黄金分割率),Odd(x)为大于等于x的最小奇数。当w=32时:
P32=b7e15163
Q32=9e3779b9
将密钥由字节转化为字
将密钥K[0,…,b-1](字节)放入L[0,…,c-1](字)中,其中c=[b/u](≥b/u的最小整数,u=w/8为一个字的字节数)。没有填充的部分为0。
for i=b-1down to 0do
L[i/u]=(L[i/u]<;<;<;8)+K[i];
初始化数组S
S[0]=wP;
for i =1 to t -1 do S[i]=S[i-1] +wQ;
与密钥混合
i=j=0;
temp a=temp b=0;
do 3*max(t,c)times:
temp a=S[i]=(S[i]+temp a+temp b)<<<3;
temp b=L[j]=(L[j]+temp a+temp b)<<<(temp a+temp b);
i=(i+1)mod(t);
j=(j+1)mod(c);
该密钥扩展函数有一定的单向性:从S很难得到K。
(2)加密算法
我们假设输入分组放在两个w比特寄存器A和B中。并且假设密钥扩展已经执行。R-w/r/b算法的加密过程如图1所示。
下面是加密算法的伪代码:
A=A+S[0];
B=B+S[1];
for i=1 to r do
temp b=B×(2B+1);
A=((A⊕B)<<<temp b)+S[2i];
temp a=A×(2A+1);
B=((B⊕A)<<<temp a)+S[2i+1];
A=A+S[2r+2];
B=B+S[2r+3];
输出在寄存器A和B中。
(3)解密函数
解密函数与加密函数类似。
B=B-S[2r+3];
A=A-S[2r+2];
for i = r to 1 do
temp a= A×(2A+1);
B=((B-S[2i+1])>>>temp a)⊕A;
temp b=B×(2B+1);
A=((A-S[2i])>>>temp b)⊕B;
B=B-S[1];
A=A-S[0];
二、R加密算法安全性分析
我们对R加密算法的安全性作了一定的分析,主要测试w=32的情况。
首先测试了输入和输出比特之间的相关性,发现当轮数在4时输入和输出的单个比特间具有非常均匀的相关性。
其次分析了每个明文比特与可变循环移位个数之间的关系,就是看改变一个明文比特是否会引起循环移位个数的改变。发现到7轮时每个明文比特都会引起不同程度的循环移位个数的变化。
在实际使用中轮数一般应大于等于这些简单测试中建议的轮数。建议用12轮或以上轮数。R算法中用到的变化的循环移位数可以抵抗差分攻击和线性攻击。
另外,R加密算法加解密速度快,对数据库操作时延小,用户基本上感觉不出来。
三、R加密算法在某“业务MIS”的数据库加密系统中的应用
除了采用身份验证、访问控制等安全机制外,开发了用于该应用系统的数据库加密系统。本数据库加密系统采用基于字段的加密方式,密文直接存储在原数据表中,由于密文长度可能会大于明文长度,因此在数据库设计时,需将加密字段的长度设置大一些。为简化密钥的管理和不影响数据库操作的效率,密钥的管理采用折衷的方法,每个记录一个密钥,因此在数据库设计时还需为每个表增加一存放密钥的字段。
1、数据库加密系统功能组成
数据库加密系统主要分成两部分:一个是加密字典表管理模块;另一个是加解密处理模块。
用户对数据库信息具体的加密要求记载在加密字典表中。加密字典管理模块完成加密字典表的维护工作,提供了加密字典表维护、表加密、表解密等功能,它利用数据库加解密处理模块完成对已有数据的加密或解密处理。该模块由系统管理员使用,普通用户不必关心。
数据库加解密处理模块是数据库加密系统的核心部分,负责完成数据库信息的加解密处理。包括加密字典表的检索、加密密钥的生成、SQL语句的分析、加解密算法实现等功能,均以公共函数的形式给出。对数据库应用系统的用户是透明的。
该数据库加密系统实行二级密钥管理。一级密钥为主密钥,二级密钥为工作密钥。整个系统一个主密钥,它负责对二级密钥信息加密。工作密钥用于对数据库数据的加解密。一个记录一个工作密钥,经一级密钥加密后存放在每个表的一个密钥字段中。工作密钥由每个记录的id字段内容和由第一次生成密钥时的当前时间生成的一随机数组成,长度不确定,最长为100B。id字段内容在用户录入数据时,系统自动生成,且每个记录的id字段内容都是唯一的。
本系统中,主密钥保护了工作密钥,工作密钥保护敏感信息,因而整个系统的安全依赖于主密钥的安全。主密钥在数据库加密系统设计时指定为一64位二进制数据,经加密后存放于安全区域内,使用时由系统自动获取并解密。
2、R加密算法在数据库加密系统中的实现
由于MIS应用系统选用的数据库平台为MS SQL Server7.0,开发工具为Delphi 7.0,而R加密加密算法是针对二进制位数据操作的,所采用的循环移位、异或等位操作用 C语言实现比较容易,因此R加密算法由C++实现,生成动态链接库.dll文件,Delphi应用程序编写调用程序调用.dll文件实现加解密操作。
(1)R加密算法动态链接库的生成
首先使用C++编写加密函数int encryfunc(char *s,char *key)和解密函数int decodefunc(char*s,char*key),然后将其生成动态链接库decode.dll和encry.dll。在制作.dll文件的多种方法中,选择使用关键字declspec(dllexport),另外使用Extern“C”使不同的编译器都能调用这个.dll文件。
代码如下:
Extern“C”declspec(dllexport) int Encry(char*s,char *key);
Extern“C”declspec(dllexport) int Decode(char *s,char *key);
(2)Delphi加解密调用函数
加密函数nowencry(miwen:string;key:string):string和解密函数nowdecode(miwen:string;key:string):string使用动态链接的方式分别调用decode.dll和encry.dll,实现对数据库表字段数据的加解密。
在Delphi中使用动态链接的方式调用.dll文件,使用函数Loadlibrary(),Getprocaddress(),freelibrary();在函数的声明部分使用stdcal和cdecl关键词。
@encry:function(s:string;key:string):integer;
cdecl;
@decode:function(s:string;key:string):integer;
cdecl;
在函数的执行部分加入如下语句:
h1:=loadlibrary(‘encry.dll’);
h2:=loadlibrary(‘decode.dll’);
…
encry:=getprocaddress(h1,’encryfunc’);
…
decode:=getprocaddress(h2,’decodefunc’);
…
freelibrary(h1);
//释放.dll文件freelibrary(h2);
小知识之RC5加密算法
RC5分组加密算法是1994由麻萨诸塞技术研究所的Ronald L. Rivest教授发明的,并由RSA实验室分析。它是参数可变的分组密码算法,三个可变的参数是:分组大小、密钥大小和加密轮数。在此算法中使用了三种运算:异或、加和循环。
筑牢安全防线:安企神企业助力特种设备机械企业数据防泄密解决方案
西安苛菲特机械设备有限公司 西安苛菲特机械设备有限公司致力于特种设备的发展,专业从事特种设备的研发、制造和销售。目前已成为有色冶金特种设备、大型船舶特种设备、煤化工特种设备的领军品牌,并在业内得到了“ 特种设备专家”的称号。公司以打造国内一流特种设备为使命,主要产品定型为高品质特种(高温、高压、高合金)流量控...
安企神软件——为中国铁道建筑集团有限公司筑牢数据防泄密系统
01公司介绍中国铁建是中国乃至全球最具实力、最具规模的特大型综合建设集团之一,入选世界500强企业、全球225家最大承包商之一等荣誉。公司以工程承包为主业,集勘察、设计、投融资、施工、设备安装、工程监理、技术咨询、外经外贸于一体,经营业务遍及除台湾省外全国31个省市(自治区)、世界20多个国家和地区,企业总资产820亿...
强化终端安全,安企神软件与涂料制造企业共创安全未来
西安经建油漆有限责任公司规模化、专业化、现代化涂料制造企业西安经建油漆有限责任公司,年涂料生产能力20万吨,为中国中西部实力较强、产能较大的涂料制造企业。公司成立伊始便积极承担起重点建设项目及国防军事工业、航空航天工业提供配套涂料科研开发及生产任务。多次受到中国航天科技集团总公司的通令嘉奖,为我国航天事业跻身世界前列做...
全球著名减震器制造商——天纳克携手安企神共筑安全制造新防线
天纳克(北京)汽车减振器有限公司天纳克(北京)汽车减振器有限公司成立于1995年,是天纳克在中国最早投资的合资企业。公司集设计、开发、生产及销售汽车减振器于一身。作为天纳克全球网络的一部分,能充分享受天纳克全球的技术积累经验和国际领先的设计理念,加之先进的生产设备和工艺技术。天纳克(北京)汽车减振器有限公司完全能保证为...
强强联合!安企神软件携手瀚颐共筑汽车行业终端安全防线
瀚颐上海汽车电子科技有限公司EAST瀚颐中国团队成立于2015年。是国际AUTOSAR软件联盟的研发伙伴单位。具备汽车电子硬件设计、软件开发、CAN网络集成、系统集成测试以及项目管理的全面研发能力。专注于汽车电子以及相关产业并拥有25年以上的专业经验,拥有来自于德国和中国业内专家和高管组成的顾问团队,并向全球汽车行业客...