【技术实现步骤摘要】
一种安全的生成随机数的方法
本专利技术涉及计算机领域,特别涉及一种生成随机数的方法。
技术介绍
一种生成随机数的方法都需要从某个随机信源采集数据,进而从信源数据中提取随机性,生成二元均匀分布的独立同分布随机序列(简称均匀随机比特流)。对于某些信源,攻击者可以操纵该信源生成数据的部分内容,从而有可能影响甚至操纵最终生成的随机比特流。当所采集的数据是同时发生时,这种攻击的影响相对有限;而当所采集的数据是以时间顺序逐个生成时,这种攻击将可能是灾难性的。例如,假设信源的字符集为信源生成的随机序列为Xn=X1X2…Xn,假设一种生成随机数的方法为函数该函数仅生成1比特随机数,即f(Xn)。攻击者可以等待并观察随机序列Xn-1=X1X2…Xn-1的发生,假设观察到的样本序列为x1x2…xn-1,则攻击者可以在时刻n发起攻击,操纵Xn=a,使得最终输出的随机比特为f(x1,x2,…,xn-1,a)。除非f(x1,x2,…,xn-1,a)的值不受a的影响,否则,攻击者总可以通过选择合适的a值操纵f(x1,x2,…,xn-1,a)=0 ...
【技术保护点】
1.一种安全的生成随机数的方法,其特征在于,所述方法包括:/n设信源为离散平稳无记忆信源,信源字符集为
【技术特征摘要】
1.一种安全的生成随机数的方法,其特征在于,所述方法包括:
设信源为离散平稳无记忆信源,信源字符集为信源符号以相等的时间间隔逐一生成,信源生成的n长样本序列记作xn=x1x2…xn;预设的算法参数包括保护带分组长度k、输出比特长度m、保护强度b(b为正整数)、算力指数c(c为正整数)、安全散列函数hash:{0,1}*→{0,1}h、有种提取器gm,m′:{0,1}m′×{0,1}d→{0,1}m和作为随机数生成种子的二进制串sd=s1s2…sd;
步骤一、计算保护带长度n′=2kn″,式中
步骤二、若n>n′,则转至步骤三;否则,结束算法;
步骤三、将输入序列xn分割为非保护带序列和保护带序列
步骤四、采用生成效率逼近信源熵率的随机数生成方法对序列提取随机性,得到二进制串
步骤五、令
式中,若l1≥2n″l0,则转至步骤六;否则,结束算法;
步骤六、对序列按分组长度k进行分组,依次对每一分组进行处理输出l0比特,并将所有的l0比特二进制串连接起来,得到二进制串其中所述对每一分组进行处理输出l0比特的步骤具体为:
a.设第i分组为zk=z1z2…zk(1≤i≤2n″),计算多项式系数
及其二进制展开式中
计算序列zk所对应的整数
式中,
初始化变量r值为nA,初始化变量t值为B;
b.若r=0或t<γr2r,则转至步骤c;否则,更新变量t值为t-γr2r,更新变量r值为r-1,重复步骤b;
c.输出式中,[t]r为整数t的r比特二进制表示;...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。