5.5 鑒別交換
這個單向的鑒別機制涉及到聲稱者A和聲稱者B之間的下列信息交換,它能夠使B核查A的身份。為了機制的正確運行,需要向B提供A所聲稱的標識數據,可以把它附加在機制中交換的某一個信息之后,或者采用其他的方法。
圖1中說明了鑒別程序一個回合的過程。圖中括弧內的數字對應于下面詳細描述的交換步驟。
TokenAB1=W
或者
其中W為證據,h是散列函數,Text為可選擇的文本字段。這個文本字段(可能為空)對于GB/T 15843本部分的范圍之外的應用是可用的。參看GB/T 15843-1999附錄A中文本字段的使用信息。如果這個文本字段是非空的那么B必須設法恢復出文本字段的值;這可能需要A隨著TokenAB1一起發送全部或者部分文本字段(可參看下面的注1)。
TokenAB2 =D
其中D為響應。
對于這個機制的每一次應用,下述鑒別程序應該執行t次(這里t為交換多重性參數)。只有當程序的t次執行都成功地完成,驗證者B才接受聲稱者A的有效身份。
(1)擁有私有認可信息CA,CA,…….CA 的實體A選擇一個隨機數r, 使得r為滿足1≤r≤n-1的整數。這個整數由A保密。A此時按照下列公式計算證據W
(2)A將TokenAB1發送給B。TokenAB1應等于W或者h(W||Text)。
(3)在收到TokenAB1之后, B選擇一個隨機整數序列d1,d2,……dm, 其中每一個di值應該在0到v-1之間。這個整數序列就是詢問。
(4)B發送詢問d1,d2,……dm,給A。
(5)接收到詢問d1,d2,……dm之后, A按下列公式由(秘密的)值r和私有認可信息CA,CA,…….CA計算響應D:
D=r( CAi)dimod *n
(6)A發送TokenAB2 =D給B。
(7)收到響應D之后,B執行下列計算程序。
(a)B檢查 D是否滿足0<D<n/2.如果不是那么B拒絕A
(b)B使用5.4節步驟(a)所述的方法,根據A的標識數據IA,IA,……,IA計算出A的冗余身份JA,JA,……,JA。
(c)B按照下面的公式計算W’的值:
W’=Dv(JAi)dimod *n
(d)如果在程序的第一次交換中發送的是W,那么B核查他所計算的值W’等于在程序的第一次交換中發送的W值。相應地,如果在程序的第一次交換中發送的是h(W||Text),那么B首先計算h(W’||Text)然后核查h(W’||Text) 等于在程序的第一次交換中發送的h(W||Text)值。如果核查成功那么機制在這一輪是成功的。否則,B拒絕A。
注1– 其他的信息可以隨鑒別程序的任何輪的任何一次交換一起發送。特別需要說明的是,包含A的標識數據的信息可以和TokenAB1一起在t輪鑒別過程的第一輪的首次交換(步驟(2))中發送。這些信息有助于B用來計算A的冗余身份和/或可選文本字段的值。
注2– A選擇隨機數r的過程要保證在認可信息的生命周期之內,這些選取的數值是獨立的,這一點很重要。如果,例如,同一個值r使用兩次,那么第三方就可能推導出A的部分或所有的私有認可信息,并因此成功地冒充A。
注3– 關于A的冗余身份JA,JA,……,JA,B可以在任何階段計算,也就是說,B不需要等待收到了響應D之后才來計算JA,JA,……,JA。如果B使用這個機制頻繁地驗證A的身份,那么B可以存貯JA,JA,……,JA的值。
注4– 這個程序的t個回合可以并行執行,也就是說,在第一步A可以選擇t個隨機數r1,r2……rt,計算t個證據W1,W2,…… Wt,把他們同時發送給B,等等。如果采取“并行實現”,無論t值為多少,消息交換的總數將等于3。
注 5– 在程序的第一次交換中使用h(W||Text)來代替W能夠減少TokenAB1的比特數,從而提高效率。
注 6– 建議在這個機制中使用的私有認可信息僅僅用于鑒別的目的,而不要用于其他的應用中(例如數字簽名的產生)。如果沒有遵循這個建議,那么應該特別注意提防驗證者利用聲稱者作為“簽名諭示”;例如,這可以通過選取具有特殊的形式的詢問而達到目的。