專利名稱:隨機數(shù)產(chǎn)生方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全、通信、數(shù)字接口、計算機等領(lǐng)域中隨機數(shù)的產(chǎn)生方法。
背景技術(shù):
在信息安全領(lǐng)域,密鑰的產(chǎn)生、密鑰的交換、認(rèn)證、加密和解密等都和隨機數(shù)相關(guān)。在 通信領(lǐng)域,信號的調(diào)制和解調(diào)、信號的傳輸、信號的抗干擾、信號的捕獲、信號的跟蹤等也 必須使用隨機數(shù)。在現(xiàn)代科技中,隨機數(shù)的應(yīng)用無處不在。
一般以統(tǒng)計特性來描述隨機數(shù),隨機數(shù)一般可以分為正態(tài)分布、均勻分布、指數(shù)分布等 。在信息安全、通信等領(lǐng)域,經(jīng)常使用正態(tài)分布和均勻分布的隨機數(shù)。
在密碼學(xué)、信息安全領(lǐng)域,隨機數(shù)有如下用途
會話密鑰的產(chǎn)生
鑒別方案中用來避免重放攻擊每次使用不同的隨機數(shù) RSA密鑰產(chǎn)生大素數(shù)的產(chǎn)生和測試 很多挑戰(zhàn)-應(yīng)答協(xié)議里的挑戰(zhàn)因素
在信息安全領(lǐng)域,安全不僅限于密鑰的安全,也依賴于隨機數(shù)的質(zhì)量。 一般對隨機數(shù)有 如下要求
(1) 均勻分布
在任何尺度上看其統(tǒng)計規(guī)律是均勻的,比如0、 l的平均各半,字節(jié)0 255的出現(xiàn)概率是 1/256,雙字節(jié)0 65535的出現(xiàn)概率是l/65536等等。
(2) 獨立性
無法推導(dǎo)或預(yù)測,也不能靠觀察過去預(yù)知將來。
由于對隨機數(shù)有以上特征的要求,因此,隨機數(shù)的產(chǎn)生方法的研究非常重要。 隨機數(shù)的產(chǎn)生方法目前已經(jīng)有很多種,包括
一、 物理方法 一是放射性物質(zhì)隨機蛻變;二是電子管回路的熱噪聲,如可將熱噪聲源 ,裝于計算機外部,按其噪聲電壓的大小表示不同的隨機數(shù)。此法產(chǎn)生的隨機性最好,但產(chǎn) 生過程復(fù)雜。
二、 査隨機數(shù)表法"Rand Table" (1955年由美國蘭德公司編制,有隨機數(shù)IOO萬 個。隨機數(shù)表中的數(shù)字具有均勻的隨機性,沒有周期性。使用時,可根據(jù)需要任取一段(橫
或豎)。如需20個,便可從中取(順次)20個,需要幾位取幾位,隨機數(shù)表無所謂位數(shù), 不能四舍五入。
三、 遞推公式產(chǎn)生法由于第i + l個隨機數(shù)是由第i個按一定公式推算出來的,故并非 真正的隨機數(shù)。但滿足a)有較好的隨機、均勻性。b)周期長、重復(fù)性差。c)算法過程
不退化(即不能反復(fù)出現(xiàn)某一常數(shù)。)d)算法可再現(xiàn),速度快。這是目前最常用的方法,
特別在通信領(lǐng)域和信息安全領(lǐng)域。典型的算法有線性同余法、線性移位法。比如m序列。
四、 加密的方法使用密碼學(xué)中已知的加密算法,以某個值(可以是其它方法產(chǎn)生的隨
機數(shù)或者本算法加密的結(jié)果)作為密鑰,對另外的一個值進行加密運算(可以是其它方法或 者本算法加密的結(jié)果),使用解密的結(jié)果作為隨機數(shù)使用。這種方法是密碼學(xué)、信息安全領(lǐng) 域中常用的算法。
以上幾種方法,第一種可以產(chǎn)生真正的隨機數(shù),但是由于使用復(fù)雜, 一般很少使用,第 二種很少使用,第三種在信息安全、通信領(lǐng)域得到了廣泛的使用。第四種方法在信息安全領(lǐng) 域得到了廣泛的使用。
以上的算法有一個共同的缺點,就是其產(chǎn)生的結(jié)果,只有其統(tǒng)計特性才滿足某個要求, 對每個產(chǎn)生的隨機數(shù)序列,要滿足某個指定的特性一般無法作到。比如,在某些認(rèn)證、密鑰
共享機制里,為了提高安全性,要求使用的隨機數(shù)必須有指定個數(shù)的o或者非o數(shù),目前的算
法無法直接作到。比如使用m序列,也只能保證產(chǎn)生的序列在足夠多樣本的情況下才基本滿 足0和1的個數(shù)相等,對于某個樣本,根本做不到保證產(chǎn)生相等的0和1。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是,提供一種能產(chǎn)生任意指定個數(shù)的O和非零數(shù)隨機序列的 隨機數(shù)產(chǎn)生方法。
本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案是,隨機數(shù)產(chǎn)生方法,其特征在于,包括 以下步驟
a、 產(chǎn)生第一隨機序列,該序列的維數(shù)為n,包含指定個數(shù)為m的0,與指定個數(shù)為n-m的 非零數(shù);
b、 產(chǎn)生第二隨機序列,該序列為在l至n范圍內(nèi)產(chǎn)生一個符合指定分布規(guī)律的n維隨機序
列;
c、 以第二隨機序列中各分量為依據(jù),調(diào)整第一隨機序列中各分量的順序;
d、 將調(diào)整后的第一隨機序列作為隨機數(shù)輸出。
本發(fā)明的有益效果是,隨機數(shù)產(chǎn)生方法簡單,產(chǎn)生速度快;產(chǎn)生的隨機數(shù)每個樣本均具
備指定的特性,而不僅僅是統(tǒng)計特性。
具體實施例方式
在某些使用非對稱方式進行認(rèn)證、密鑰協(xié)商或者密鑰共享的場合,為了保證系統(tǒng)的安全 性,要求公鑰必須具備的特性之一就是公鑰向量的成員必須具備指定個數(shù)的O或者具備大于 指定個數(shù)的0。比如在目前廣泛使用的數(shù)字接口的認(rèn)證過程中,其公鑰為一個40維的向量, 要求必須20個成員為0, 20個成員必須為1。并且其連續(xù)分配的公鑰必須是隨機的,否則對其 安全性會構(gòu)成嚴(yán)重威脅。直接使用現(xiàn)有已知的隨機數(shù)產(chǎn)生方式,均無法產(chǎn)生滿足要求的隨機 數(shù)。
本發(fā)明可以產(chǎn)生滿足上述要求的隨機數(shù),其實現(xiàn)主要分為以下3個部分
(1) 確定隨機數(shù)的維數(shù)以及隨機數(shù)的特性,比如要求必須具備多少個O;
(2) 按照指定的特性產(chǎn)生任意的一個序列,滿足(1)的要求;
(3) 產(chǎn)生一個在隨機數(shù)維數(shù)范圍內(nèi)的均勻分布序列,以該序列中各分量為依據(jù),調(diào)整 隨機數(shù)中各分量的順序。
本發(fā)明可以產(chǎn)生兩類隨機序列指定O和l個數(shù)的偽隨機序列以及指定O和非O個數(shù)的偽隨 機序列。
指定0和1個數(shù)的偽隨機序列,即產(chǎn)生一個lXn維的向量,要求該向量中包含指定m ( m〈n)個數(shù)的O和n-m個的l,并且0和1的在該向量中的位置是隨機的。以要求產(chǎn)生有3個0的1 X8維的隨機數(shù)為例,產(chǎn)生方法如下
(1) 首先確定產(chǎn)生向量的維數(shù)為8,以及指定的0的個數(shù)為3,同時確定0和1需要遵從何 種分布。比如正態(tài)分布、均勻分布、指數(shù)分布等。在信息安全領(lǐng)域, 一般需要均勻分布的隨 機數(shù)。本方案以均勻分布為例進行說明,推而廣之,對于其它分布也適用;
(2) 產(chǎn)生3個0, 5個1,然后將其任意組合成一個1X8的向量。該向量為第一隨機序列
,其組合的方式可以將各分量按照順序排列,也可以擾亂進行排列,對此沒有特殊要求;設(shè) 定本步驟產(chǎn)生的隨機序列為(n, r2, r3,……r8},其中r尸l; r2=l; r3=l; r4=l; r5=0;
f6=0; r7=0; T8=l;
(3) 在l至8范圍內(nèi)產(chǎn)生一個均勻分布的lX8維隨機序列卜l,a2,a3……a8},該隨機序 列為第二隨機序列,其中&1=4;a2=5;a3=2;a4=6;a5=8;a6=l;a7=3; a8=7;
(4) 將隨機序列{al, a2, a3,……an}中各分量作為隨機序列{rL r2, r3,……r8}的下標(biāo), 依次下標(biāo)重新排列個分量在第一隨機序列中的位置;調(diào)整后的第一隨機序列為
{r4, r5, r2, T6, rs, ri, r3, r了l;
(5)調(diào)整后的第一隨機序列為隨機數(shù){1, 0, 1, 0, 1, 1, 1, 0}。 另外,步驟(4)也可以用其它方法,變換第一隨機序列中各分量的位置
(4)將隨機序列{al, a2, a3,……an}中各分量作為隨機序列{rL r2, r3,……r8}的下標(biāo), 對第一隨機序列中各分量進行交換,交換的方式可以是ri與rai互換位置(i=l, 2,……8) ;也可以采用其它的交換方式進行擾亂;以ri與"i互換為例{n, r2, r3……
rn} = {l, 1, 1, 1, 0, 0,0,1};{al, a2, a3……an} = {4, 5, 2, 6, 8, 1, 3, 7},進行8次互換過程如下:第l次互換,i==1;ri=1;al=4,rai=r4=l; n與r4位置互換得到{1, 1, 1, 1, 0, 0, 0, 1}
第2次互換,i==2;r2=0;a2=5,rai=r5=0; r2與r5位置互換得到{1, 0, 1, 1, 1, 0, 0, 1};
第3次互換,i==3,a3==2r3與r2位置互換得到{1, 1, 0, 1, 1, 0, 0,1};
第4次互換,i==4,a4==6r4與r6位置互換得到{1, 1, 0, 0, 1, 1, 0,1};
第5次互換,i==5,a5==8r5與rs位置互換得到{1, 1, 0, 0, 1, 1, 0,1};
第6次互換,i==6,a6==1r6與n位置互換得到{1, 1, 0, 0, 1, 1, 0,1};
第7次互換,i==7,a7==3r7與r3位置互換得到{1, 1, 0, 0, 1, 1, 0,1};
第8次互換,i==8,a8==7r8與r7位置互換得到{1, 1, 1, 1, 0, 0, 1,0};
(1)調(diào)整后的第一隨機序列為隨機數(shù){1, 1, 1, l,O,O, 1,0}。 輸出的隨機數(shù)滿足規(guī)定的要求具備指定個數(shù)的0和1,具備指定的分布特征。 指定0和非0個數(shù)的偽隨機序列,指的定需要產(chǎn)生一個lXn維的向量,要求產(chǎn)生的每個向
量,必須包含指定m (m〈n)個數(shù)的0和n-m個的非0值,并且0和非0數(shù)的在該向量中的位置是
隨機的。這樣的隨機序列有兩種產(chǎn)生方式。 產(chǎn)生方法一
(1) 首先確定產(chǎn)生向量的維數(shù)為8,以及指定的0的個數(shù)為3,同時確定O和非O數(shù)需要遵 從何種分布,本方案以均勻分布為例進行說明,推而廣之,對于其它分布也適用;
(2) 產(chǎn)生3個0, 5個非0數(shù),然后將其任意組合成一個1X8的向量。該向量為第一隨機 序列,其組合的方式可以將各分量按照順序排列,也可以擾亂進行排列,對此沒有特殊要求 ;設(shè)定本步驟產(chǎn)生的隨機序列為(n, r2, r3, r8},其中r尸O; r2=0; r3=0; r4=25;
T5=29; T6=8; T7=l; T8=9;
(3) 在l至8范圍內(nèi)產(chǎn)生一個均勻分布的lX8維隨機序列卜l,a2,a3……a8},該隨機序 列為第二隨機序列,其中&1=4;a2=5;a3=2;a4=6;a5=8;a6=l;a7=3; a8=7;
(4) 將隨機序列{al, a2, a3,……an}中各分量作為隨機序列{rL r2, r3,……r8}的下標(biāo), 對第一隨機序列中各分量進行交換,交換的方式可以是ri與rai互換位置(i=l, 2,……8)
;也可以采用其它的交換方式進行擾亂;以ri與"i互換為例{n, r2, r3……
rn} = {0, 0, 0, 25, 29, 8, 1, 9}; {al, a2, a3......an} = {4, 5, 2, 6, 8, 1, 3, 7},進行8次互換過程如下
第l次互換,i=l; r1=l; al=4,rai=r4=l;n與r4位置互換得到{25, 0, 0, 0, 29, 8, 1, 9}
第2次互換,i=2; r2=0; a2=5,rai=r5=0; r2與rs位置互換得到{25, 29, 0, 0, 0, 8, 1, 9}
第3次互換, 第4次互換, 第5次互換, 第6次互換, 第7次互換, 第8次互換,
L=3, L=4, L=5, L=6, L=7, L=8,
a3=2 a4=6 a5=8 a6=l a7=3 a8=7
r3與r2位置互換得至l r4與r6位置互換得至l r5與r8位置互換得至l r6與n位置互換得至l r7與r3位置互換得至l
{25, 0, 29 , 0, 0, 8, 1, 9} {25, 0, 29 , 8, 0, 0, 1, 9} {25, 0, 29 , 8, 9, 0, 1, 0} {0, 0, 29 , 8, 9, 25, 1, 0} {0, 0, 1 , 8, 9, 25, 29, 0} {0, 0, 1 , 8, 9, 25, 0, 29}
r8與r7位置互換得至l (2)調(diào)整后的第一隨機序列為隨機數(shù){0, 0, 1 , 8, 9, 25, 0, 29}。 產(chǎn)生方法二
(1) 首先按照前述的方式產(chǎn)生具備指定的m個O和n-m個l個數(shù)的隨機序列R;
(2) 按照指定分布產(chǎn)生一個n-m非零隨機序列;
(3) 使用步驟(2)產(chǎn)生的偽隨機序列R對步驟(1)產(chǎn)生的n-m個非零數(shù)進行替換,可 以按照指定的方式進行替換,也可以按照隨機的方式進行替換;
(4) 使用步驟(3)產(chǎn)生的經(jīng)替換后的隨機序列R作為滿足要求的隨機數(shù)的輸出。 對于本方案中產(chǎn)生指定分布隨機數(shù)的方法,已經(jīng)有很多公開的算法,本處不再描述。本
隨機數(shù)產(chǎn)生方法可以使用在特殊要求的場合比如在某些認(rèn)證和共享密鑰形成的場合作為公 鑰使用,也適用于IC卡、USB Key、芯片等基于硬件實現(xiàn)的場合,以及基于軟件實現(xiàn)的場合
權(quán)利要求
1.隨機數(shù)產(chǎn)生方法,其特征在于,包括以下步驟a、產(chǎn)生第一隨機序列,該序列的維數(shù)為n,包含指定個數(shù)為m的0,與指定個數(shù)為n-m的非零數(shù);b、產(chǎn)生第二隨機序列,該序列為在1至n范圍內(nèi)產(chǎn)生一個符合指定分布規(guī)律的n維隨機序列;c、以第二隨機序列中各分量為依據(jù),調(diào)整第一隨機序列中各分量的順序;d、將調(diào)整后的第一隨機序列作為隨機數(shù)輸出。
全文摘要
本發(fā)明涉及信息安全、通信、數(shù)字接口、計算機等領(lǐng)域中隨機數(shù)的產(chǎn)生方法。本發(fā)明所要解決的技術(shù)問題是,提供一種能產(chǎn)生任意指定個數(shù)的0和非零數(shù)隨機序列的隨機數(shù)產(chǎn)生方法。本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案是,隨機數(shù)產(chǎn)生方法,包括以下步驟a.產(chǎn)生第一隨機序列,該序列的維數(shù)為n,包含指定個數(shù)為m的0;b.產(chǎn)生第二隨機序列,該序列為在1至n范圍內(nèi)產(chǎn)生一個符合指定分布規(guī)律的n維隨機序列;c.以第二隨機序列中各分量為依據(jù),調(diào)整第一隨機序列中各分量的順序;d.將調(diào)整后的第一隨機序列作為隨機數(shù)輸出。本發(fā)明的有益效果是,隨機數(shù)產(chǎn)生方法簡單,產(chǎn)生速度快;產(chǎn)生的隨機數(shù)每個樣本均具備指定的特性。
文檔編號G06F7/58GK101187856SQ20071020300
公開日2008年5月28日 申請日期2007年12月12日 優(yōu)先權(quán)日2007年12月12日
發(fā)明者劉冬梅, 劉賢洪 申請人:四川長虹電器股份有限公司