專利名稱:測試隨機(jī)數(shù)源的方法和含有所述方法的電子設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及測試產(chǎn)生隨機(jī)數(shù)源的方法,特別是如芯片卡中裝有的隨機(jī)數(shù)發(fā)生器這樣的密碼系統(tǒng)范圍內(nèi)開發(fā)的源。
它特別為用于測試和確認(rèn)如芯片卡、PCMCIA、標(biāo)記、無接觸點(diǎn)卡或任何其他便攜裝置的電子設(shè)備而設(shè)計(jì)。
大多數(shù)公用密鑰型(也稱為非對稱密碼學(xué))和保密密鑰型(也稱為對稱密碼學(xué))的密碼學(xué)系統(tǒng)需要提存保密隨機(jī)值。最重要的是,為其后用作密鑰而設(shè)計(jì)的這樣一些隨機(jī)值或數(shù)應(yīng)是事先不能預(yù)料的且不應(yīng)呈現(xiàn)任何這樣的一些規(guī)律性,即這些規(guī)律性有可能通過周密的或很周密的搜索對策來發(fā)現(xiàn)它們,其中最可幾密鑰首先被搜索。
在這方面,有若干方法可用于測試由隨機(jī)源產(chǎn)生的隨機(jī)值并保證所述的源正確運(yùn)行和不呈現(xiàn)任何跟隨惡意來源的外部參數(shù)中的變化的漂移,例如由感應(yīng)輻射引起的變化。
這些方法的每一個(gè)都適用于0和一個(gè)值d之間的整數(shù)數(shù)列,也稱作序列。所述的數(shù)列由隨機(jī)源產(chǎn)生。
最廣泛了解的測試方法是所謂的“頻率”測試。它是計(jì)數(shù)所述數(shù)列中0和值d之間的每個(gè)整數(shù)出現(xiàn)次數(shù)的情況。每個(gè)整數(shù)出現(xiàn)的次數(shù)再被統(tǒng)計(jì)評估。
第二種所謂“串聯(lián)”測試方法,是在o和值d之間所有可能的整數(shù)對出現(xiàn)次數(shù)的計(jì)數(shù)和統(tǒng)計(jì)評估。該測試方法可推廣到3元組或4元組整數(shù)等的計(jì)數(shù)。
第三種所謂“空穴”測試方法。一個(gè)數(shù)列中的空穴是一個(gè)在預(yù)定間隔外的一連串?dāng)?shù)。它是統(tǒng)計(jì)評估數(shù)列中所述空穴的長度的情況。
第四種稱為“攪拌桿”測試的測試方法。該測試是把數(shù)列中的數(shù)組合在一起成5個(gè)數(shù)一組并在每個(gè)5元組中計(jì)數(shù),有多少個(gè)不同值的出現(xiàn)。
第五種稱為“試樣收集”的測試方法,包括統(tǒng)計(jì)評估所有在o和d之間的整數(shù)值出現(xiàn)在所述數(shù)列所需要的數(shù)列長度。
這些方法的細(xì)節(jié)可在Knuth的著作中找到,著作的標(biāo)題是“計(jì)算機(jī)編程技術(shù),第2卷,半數(shù)值算法”。
另一個(gè)流行的測試方法是Maurer的通用測試,在著作“Journalof Crytography”,(vol5,NO.2,1992,pp89-105)中描述。該測試具有這樣優(yōu)點(diǎn)能揭示所有用先前援引的測試方法可檢測的故障以及用這些同樣方法檢測不到的其他統(tǒng)計(jì)缺陷。
所謂的Maurer測試方法,也稱為通用方法,包括下列步驟步驟1.用隨機(jī)源產(chǎn)生(Q+K)*L位的數(shù)列。Q、K和L是輸入?yún)?shù)。該數(shù)列中的位分成L位字塊,形成長度為Q+K的0和2L-1之間的整數(shù)數(shù)列。該長度被存儲在表塊[n]中,其中n在1和Q+K之間。
步驟2.計(jì)算表示fTU的測試參數(shù)。這個(gè)第二步驟又包含稱作子步驟2.1到2.5的下列步驟2.1建立和初始化大小為2L的表,tab[i];2.2對于從1到Q變化的n進(jìn)行計(jì)算tab[block[n]]=n;2.3初始化數(shù)和Sum到0;2.4對于從Q+1到Q+K變化的n執(zhí)行計(jì)算把log(n-tab)[block[n]]加到Sum;進(jìn)行計(jì)算tab[block[n]]=n;2.5測試的參數(shù)fTU由下式給出fTU=(sum/k)/log(2)。
步驟3.計(jì)算每個(gè)測試參數(shù)決方差,表示為Var。它的準(zhǔn)確解釋在Maurer發(fā)表的著作“Journal of Crytography”,(Vol5,NO.2,1992,pp.89-105)中給出。方差為,Var=(1-z)*Σi=1∞log2(i)2*zi-1-((1-z)*Σi=1∞log2(i)*zi-1)2]]>其中l(wèi)og2(z)=log(z)/log(2)和z=1-2-L步驟4.計(jì)算函數(shù)C(L,K)。該函數(shù)的近似表達(dá)式在上述著作中的文章中給出,它是C(L,K)=0.7-0.8/L+(1.6+12.8/L)*K(-4/L);步驟5.計(jì)算測試參數(shù)的標(biāo)準(zhǔn)偏差,表示為σ,σ=C(L,K)*(Var/K);]]>步驟6.計(jì)算參數(shù)y。Y從作為一個(gè)輸入固定的測試的拒絕率(表示為ρ)來確定。y必須滿足方程式N(-y)=ρ
N是標(biāo)準(zhǔn)密度函數(shù)。在R.Langley的著作“practicalstatistics”(Dover publications,New York,1968.)中描述了這種函數(shù)。方程N(yùn)(-y)可以用N值的表求解。在上述文章中提供了這樣的表。
步驟7.計(jì)算測試的標(biāo)準(zhǔn)平均值,表示為E(fTU)。它的表達(dá)式在Maurer發(fā)表的文章中給出,該文章在著作“Journal ofCryptography”(Vol5,NO.2,1992,pp.89-105)中給出。該表達(dá)式等于E[fTU]=(1-z)*Σi=1∞log2(i)*zi-1]]>其中l(wèi)og2(z)=log(z)/log(2)和z=1-2-L步驟8.計(jì)算上下限t1和t2。它們由下列方程給出t1=E[fTU]-y*σ和t2=E[fTU]+y*σ;步驟9.測試結(jié)果如果測試參數(shù)fTU在t1和t2之間,則隨機(jī)數(shù)發(fā)生器被接收。在相反的情況下,它被拒絕。
因而,通用測試方法是基于函數(shù)C(L,K)計(jì)算的近似。該近似與用作其基礎(chǔ)的理論保證所希望的相比精確度低??梢灾赋?,在某些情況下,同理論允許的相比其通用測試方法證明是其2.67倍。
本發(fā)明的目的是一個(gè)改進(jìn)的測試方法,使之達(dá)到通用測試的理論分析所能保證的真正精度。該測試用于明顯地改進(jìn)芯片卡型便攜設(shè)備的安全性。
本發(fā)明的方法在于,用函數(shù)C(L,K)的精確計(jì)算代替通用測試的步驟4,該計(jì)算基于通用測試的概率分析。
本發(fā)明按照參數(shù)L和K的值給出了三個(gè)不同的函數(shù)C(L,K)表達(dá)式。
第一個(gè)C(L,K)表達(dá)式無論對參數(shù)L和K都成立。
第二個(gè)C(L,K)表達(dá)式成立的情況是,值L在3和16之間且值K大于30×2L,這對應(yīng)于利用該測試的最通常情況。它比第一表達(dá)式計(jì)算簡單,并因而可以在一個(gè)簡單的微控制器上用幾毫秒來實(shí)現(xiàn)。
第三個(gè)C(L,K)表達(dá)式對于L>16且K>30*2L成立。該表達(dá)式計(jì)算更簡單。
第一個(gè)c(L,K)表達(dá)式可用下面描述的方法得到。該方法包含9個(gè)步驟1.計(jì)算u=1-2-L和V=1-1/(2L-1),u和v是實(shí)數(shù);2.建立大小為60*2L的二個(gè)表,tab1(表1)和tab2(表2);3.為此填表1和表2,3.1執(zhí)行z=u,sum=0,z1=1;3.2對于范圍從1到30*2L的i重復(fù)二種操作將log2(i)*z1加到sum,其中l(wèi)og2表示以2為底的對數(shù);計(jì)算z1=z1*z;3.3執(zhí)行tab1
=(1-z)*sum;3.4對于范圍從1到60*2L的i執(zhí)行tab1[i]=(tab1[i-1]-(1-z)*log2(i))/z;3.5重復(fù)步驟3.1、3.2、3.3、3.4,用v代替u和用tab2代替tab14.計(jì)算每塊方差,表示為Var4.1執(zhí)行sum=0和x=1;4.2對于從1變到30*2L的i執(zhí)行下述二個(gè)操作將log2(i)2*X加到sum,以及執(zhí)行X=X*Z;4.3作出Var=sum/2L-tab1
2;5.計(jì)算P(K);5.1作sum=0和x=1;5.2對于從1變到30*2L的i進(jìn)行下述三個(gè)操作計(jì)算yy=u2*(tab2[i+K-1]-tab1[i+K])*(tab2
-vi*tab2[i])+u*tab1
*(tab1[i+K-1]-tab2[i+K-1]);將y*x加到sum執(zhí)行x=x*u;5.3執(zhí)行P(K)=u(K-1)*sum;6.計(jì)算P(1),如同步驟5的方法,用1代替k;7.計(jì)算Q(K);7.1作sum=0,sum2=0以及x=1;7.2對于從1變到30* 的i,
將i*log2(i)*u(i-2)加到sum2;執(zhí)行下面三個(gè)操作計(jì)算y=u2*(tab2[i+K-1]-tab1[i+K])*((i+k)*tab2
-vi*tab2[i])-2(-L)*sum2)+u*(i+K-1)*tab1
*(tab1[i+K-1]-tab2[i+K=1]),;將y*x加到sum,執(zhí)行x=x*u;7.3執(zhí)行Q(K)=u(k-1)*sum;8.計(jì)算Q(1)如同步驟7的方法,用1代替K;9.計(jì)算C(L,K)c(L,K)=(1-2/Var*(P(1)-P(K)-(Q(1)-Q(K))/K).]]>C(L,K)的第二表達(dá)式對于K>30*2L成立。按照下述方法分二個(gè)步驟計(jì)算步驟1.讀出e(L)和d(L)的值,e和d為實(shí)數(shù),對于3和16之間的L列于下表L d(L)e(L)30.27327250.489088340.30451010.443538150.32965870.413719660.34897690.394133870.36318150.381321080.37321890.373019590.38006370.367711810 0.38458670.364369511 0.38749420.362297912 0.38931890.361033613 0.39044050.360273114 0.39111780.359821615 0.39152020.359557116 0.39175610.3594040
步驟2.用下列公式計(jì)算值C(L,K)c(L,K)=(d(L)+e(L)*2L/K)]]>C(L,K)的第三個(gè)表達(dá)式對于L>16且K>30*2L成立。它由下列公式給出c(L,K)=(1-6/Π2+2/Π2*(4*log(2)-1)*2L/K)]]>如同在本說明的開頭(第1頁)所指出的,本發(fā)明也涉及一種電子設(shè)備。該設(shè)備未用圖或圖解描繪。根據(jù)上述本發(fā)明方法的三個(gè)變量或更明確地根據(jù)函數(shù)C(L,K)的三個(gè)不同表達(dá)式,該電子設(shè)備用于自動確認(rèn)自檢查集成電路的物理完整性和檢查它的隨機(jī)發(fā)生器的完整性,以便保證所述發(fā)生器大體上正確地運(yùn)行且不呈現(xiàn)任何隨惡意源的外部參數(shù)變化的漂移,特別是例如由感應(yīng)輻射引起的變化。
最好是進(jìn)行該測試的電子設(shè)備是便攜設(shè)備,更具體地說例如包括芯片卡、無接點(diǎn)卡、PCMCIA卡、標(biāo)記或智能表。
最后,本發(fā)明的電子設(shè)備可以是包含為測試所述便攜設(shè)備中裝有的隨機(jī)發(fā)生器的正確運(yùn)行而設(shè)計(jì)的機(jī)器或裝置的外部設(shè)備。該外部設(shè)備允許同該便攜設(shè)備交換信息以便檢查隨機(jī)發(fā)生器在正確運(yùn)行。該外部設(shè)備同便攜設(shè)備互相作用以便檢查它的隨機(jī)發(fā)生器的完整性。
權(quán)利要求
1.一種測試隨機(jī)數(shù)源的方法,包括以下步驟步驟1.由隨機(jī)源產(chǎn)生一(Q+K)*L位數(shù)列,Q、K和L是輸入?yún)?shù),在該數(shù)列中的位被分組成一些L位的塊,形成長度為Q+K的0和2L-1之間的整數(shù)數(shù)列,該長度被存儲在表block[n]中,其中n在1和Q+K之間;步驟2.計(jì)算測試參數(shù),表示為Ftu,該第二步驟包括以下步驟,稱作子步驟2.1到2.52.1建立和初始化大小為2L的表tab[i];2.2對于從1變到Q的n,進(jìn)行計(jì)算tab[block]=n;2.3初始化數(shù)和(sum)到0;2.4對于從Q+1變到Q+K的n,執(zhí)行二個(gè)操作的計(jì)算將log(n-tab[block[n]])加到sum;作計(jì)算tab[block[n]]=n;2.5測試的參數(shù)fTU由下式給出fTU=(sum/k)/log(2);步驟3.從下列表達(dá)式計(jì)算每測試參數(shù)塊方差VarVar=(1-z)*Σi=1∞log2(i)2*Zi-1-((1-z)*Σi=1∞log2(i)*zi-1)2]]>其中l(wèi)og2(z)=log(z)/log(2)和z=1-2-L步驟4.計(jì)算函數(shù)C(L,K);步驟5.計(jì)算測試參數(shù)的標(biāo)準(zhǔn)偏差,表示為σ:σ=C(L,K)*(Var/K);]]>步驟6.計(jì)算參數(shù)y,y根據(jù)作為一個(gè)輸入固定的測試的拒絕率(表示為ρ)來確定,y必須滿足下列方程N(yùn)(-y)=ρN是標(biāo)準(zhǔn)密度函數(shù)。步驟7.計(jì)算測試的理想平均值,表示為E(fTU),它由下式給出E[fTU]=(1-z)*Σi=1∞log2(i)*zi-1]]>其中l(wèi)og2(z)=log(z)/log(2)和z=1-2-L步驟8.計(jì)算上下限t1和t2,它們由方程式t1=E[fTU]-y*σ和t2=E[fTU]+y*σ給出;步驟9.測試結(jié)果如果測試參數(shù)fTU在t1和t2之間,則隨機(jī)數(shù)發(fā)生器被接受;相反情況下則被拒絕,所述方法的特征是,步驟4.包含無論對于參數(shù)L和K都成立的函數(shù)C(L,K)的計(jì)算。
2.一種按照權(quán)利要求1的測試隨機(jī)數(shù)源的方法,特征是步驟4包含在L值在3和16之間且K值大于30*2L的情況下成立的函數(shù)C(L,K)的計(jì)算。
3.一種按照權(quán)利要求1的測試隨機(jī)數(shù)源的方法,特征是步驟4包含對于L>16且K>30*2L成立的函數(shù)C(L,K)的計(jì)算。
4.一種按照權(quán)利要求1的方法,特征是函數(shù)C(L,K)的計(jì)算包括9個(gè)步驟1.計(jì)算u=1-2-L和V=1-1/(2L-1),u和v是實(shí)數(shù);2.建立大小為60*2L的二個(gè)表tab1和tab2;3.1執(zhí)行z=u,sum=0,z1=1;3.2對于范圍從1到30*2L的i,重復(fù)2個(gè)操作它們是將log2(i)*z1加到sum,其中l(wèi)og2表示底為2的對數(shù),以及計(jì)算z1=z1*z;3.3執(zhí)行tab1
=(1-z)*sum;3.4對于范圍從1到60*2L的i,執(zhí)行tab1[i]=(tab1[i-1]-(1-z)*log2(i))/z;3.5用v代替u和用tab2代替tab1重復(fù)步驟3.1、3.2、3.3、3.4;4.計(jì)算每塊方差,表示為Var4.1執(zhí)行sum=0和x=1;4.2對于從1變到30*2L的i,執(zhí)行以下二個(gè)操作將log2(i)2*X加到sum,以及執(zhí)行X=X*Z;4.3作Var=sum/2L-tab1
2;5.計(jì)算P(K);5.1作sum=0和x=1;5.2對于從1變到30*2L的I,進(jìn)行以下三個(gè)操作計(jì)算y:y=u2*(tab2[i+K-1]-tab1[i+K])*(tab2
-vi*tab2[i])+u*tab1
*(tab1[i+K-1]-tab2[i+K-1]),將y*x加到sum;執(zhí)行x=x*u;5.3執(zhí)行P(K)=u(K-1)*sum;6.計(jì)算P(1)如同步驟5的方法,用1代替k;7.計(jì)算Q(K);7.1作sum=0,sum2=0以及x=1;7.2對于從1變到30*2L的i,將i*log2(i)*u(i-2)加到sum2;執(zhí)行下面三個(gè)操作計(jì)算y=u2*(tab2[i+K-1]-tab1[i+K])*((i+k)*tab2
-vi*tab2[i])-2(-L)*sum2)+u*(i+K-1)*tab1
*(tab1[i+K-1]-tab2[i+K=1]),將y*x加到sum,執(zhí)行x=x*u;7.3執(zhí)行Q(K)=u(k-1)*sum8.計(jì)算Q(1)如同步驟7的方法,用1代替K;9.計(jì)算C(L,K)c(L,K)=(1-2/Var*(P(1)-P(K)-(Q(1)-Q(K))/K).]]>
5.一種按照權(quán)利要求2的方法,特征是函數(shù)C(L,K)包含二個(gè)步驟步驟1.讀出e(L)和d(L)的值,e和d是實(shí)數(shù),對于在3和16之間的L列于下表L d(L) e(L)3 0.2732725 0.48908834 0.3045101 0.44353815 0.3296587 0.41371966 0.3489769 0.39413387 0.3631815 0.38132108 0.3732189 0.37301959 0.3800637 0.367711810 0.3845867 0.364369511 0.3874942 0.362297912 0.3893189 0.361033613 0.3904405 0.360273114 0.3911178 0.359821615 0.3915202 0.359557116 0.3917561 0.3594040步驟2.利用下面公式計(jì)算值C(L,K)c(L,K)=(d(L)+e(L)*2L/K);]]>
6.一種按照權(quán)利要求3的方法,特征是函數(shù)C(L,K)的計(jì)算借助下列公式實(shí)現(xiàn)c(L,K)=(1-6/Π2+2/Π2*(4*log(2)-1)*2L/K);]]>
7.一種電子設(shè)備,用于自檢查集成電路的物理完整性的自檢查和檢查隨機(jī)發(fā)生器的完整性,以便保證后者基本上正確地運(yùn)行并不呈現(xiàn)任何隨惡意源的外部參數(shù)變化的漂移,特別是例如按照權(quán)利要求1到3中的任何一個(gè),由感應(yīng)輻射引起的變化。
8.一種按照權(quán)利要求7的電子設(shè)備,其特征是,執(zhí)行該測試的設(shè)備是一種便攜設(shè)備。
9.一種按照權(quán)利要求8的電子設(shè)備,其特征是,該設(shè)備是芯片卡、無接觸點(diǎn)卡、PCMCIA卡、標(biāo)記或智能表。
10.一種按照權(quán)利要求1到6中的任何一個(gè)的電子設(shè)備,其特征是,執(zhí)行該測試的外部設(shè)備包含為測試所述便攜設(shè)備中裝有的隨機(jī)發(fā)生器的正確運(yùn)行而設(shè)計(jì)的機(jī)器或裝置。
全文摘要
本發(fā)明涉及測試產(chǎn)生隨機(jī)數(shù)源的方法,特別是在密碼系統(tǒng)范圍內(nèi)建立的源,例如芯片卡中裝有的隨機(jī)數(shù)發(fā)生器。本發(fā)明特別為用于測試和確認(rèn)電子設(shè)備而設(shè)計(jì),例如芯片卡、PCMIA、標(biāo)記、無接點(diǎn)卡或其它類似的便攜裝置。
文檔編號G06F17/17GK1323477SQ99812290
公開日2001年11月21日 申請日期1999年8月16日 優(yōu)先權(quán)日1998年8月17日
發(fā)明者J·-S·科龍, D·納卡希 申請人:格姆普拉斯公司