本文摘要:其實(shí)很早以前就看過一篇關(guān)于將軍令工作原理的文章,說實(shí)話,當(dāng)時那篇文章我只看懂了一部分,大部分都沒看懂,但是我根據(jù)看懂的那一部分,和后來自己的思考,下面小編推薦關(guān)于將軍令工作原理的一篇電子論文。 【摘 要】將軍令是每隔1min產(chǎn)生一個全新的、不能
其實(shí)很早以前就看過一篇關(guān)于將軍令工作原理的文章,說實(shí)話,當(dāng)時那篇文章我只看懂了一部分,大部分都沒看懂,但是我根據(jù)看懂的那一部分,和后來自己的思考,下面小編推薦關(guān)于“將軍令”工作原理的一篇電子論文。
【摘 要】“將軍令”是每隔1min產(chǎn)生一個全新的、不能重復(fù)使用的密碼(6位),用來保護(hù)網(wǎng)易通行證(游戲賬號)、直銷商賬號的密碼。文章根據(jù)作者的研究,闡述了幾種可行的“將軍令”的工作原理與算法思想。
【關(guān)鍵詞】將軍令;動態(tài)密碼;原理;算法
“將軍令”是廣州網(wǎng)易互動娛樂有限公司自主研發(fā)的、具有完全知識產(chǎn)權(quán)的高科技身份認(rèn)證產(chǎn)品,專門用來保護(hù)網(wǎng)易通行證(游戲賬號)、直銷商賬號的密碼。“將軍令”是每隔1min(60s)產(chǎn)生一個全新的、不能重復(fù)使用的密碼(6位),俗稱“動態(tài)密碼”。采用“將軍令”后,網(wǎng)易以“賬號+密碼+動態(tài)密碼”的形式對游戲ID進(jìn)行保護(hù),大大提高了賬號的安全性。對于將軍令的工作原理,很多人提出自己的設(shè)想,筆者也就自己的研究,進(jìn)行如下闡述。
“將軍令”的實(shí)際工作流程很簡單:即用戶端(“將軍令”本身)產(chǎn)生一個動態(tài)密碼,然后將這個動態(tài)密碼和服務(wù)器端進(jìn)行匹配。由于用戶端在出廠之后,同服務(wù)器端就再沒有物理上直接的聯(lián)系,因而,如何與服務(wù)器端保持邏輯上的同步是最大的問題,即如何保證用戶端產(chǎn)生的動態(tài)密碼與服務(wù)器端驗(yàn)證的動態(tài)密碼是一個密碼。
1 第一種設(shè)想
在“將軍令”內(nèi)置微型芯片,里面保存大量“以6位數(shù)字為一組”的預(yù)定數(shù)組(6位數(shù)字動態(tài)碼),每60s自動讀取下一組新數(shù)組,數(shù)組的排列順序無規(guī)律并無一相同,但全部已經(jīng)預(yù)先存放好,利用循環(huán)模式,當(dāng)讀完最后一組數(shù)后便從頭再開始讀取第一組數(shù)組。主機(jī)服務(wù)器端也同樣預(yù)先存放好同樣的數(shù)組列,啟用“將軍令”時以序列號來識別該取用哪一條數(shù)組列。這種方法是一種最易實(shí)現(xiàn)的方法,但這也是一種最易被破解的方法,安全性較低。
2 第二種設(shè)想
這種設(shè)想是利用算法來實(shí)現(xiàn)動態(tài)密碼的產(chǎn)生。
算法思想1:用戶端在出廠時就植入一個算法,這個算法同樣會被保存在服務(wù)器端。這個算法不一定要很復(fù)雜,比如f(x)=aX+b,X最好是一些獨(dú)特的,各個“將軍令”都不重復(fù)的數(shù)字,比如“將軍令”的序列號等。a可以是一個固定的數(shù)字,而b可以是一個動態(tài)變化的數(shù)字,如第1次產(chǎn)生動態(tài)密碼,b就為“1”;第2次產(chǎn)生動態(tài)密碼,b就為“2”……
算法思想2:用戶端產(chǎn)生的動態(tài)密碼是一個與時間有關(guān)的動態(tài)密碼,即密碼M與時間T之間存在著關(guān)系:M=rand(TX),rand()為隨機(jī)函數(shù),TX為隨機(jī)函數(shù)的種子,x為另一因素,比如“將軍令”的序列號等。
這里,x是一個服務(wù)器端已知的變量,出廠時就已經(jīng)設(shè)定了,最大的可能是“將軍令”的序列號所對應(yīng)的一個因子,在生產(chǎn)“將軍令”寫入初始數(shù)據(jù)的時候,同時被植入用戶端和服務(wù)器端,由于每個“將軍令”的序列號是唯一的,因而,拿不到“將軍令”就無法知道x,也就無法知道動態(tài)密碼M。
顯然,只有因子X是不夠的,M=rand(x)是可以產(chǎn)生一個密碼M,但這個密碼M顯然無法動態(tài)變化,也就失去了意義,因而時間因子T也同樣不可缺少。但是,引入時間因子T之后,又將產(chǎn)生一個問題:就是用戶端和服務(wù)器端時間同步的問題。
時間同步的同題,筆者認(rèn)為可以這樣解決:服務(wù)器端固定T0,引入因子△t,服務(wù)器端植入△t,△t為用戶端時鐘同服務(wù)器端時鐘之差,即△t=T3-T1這樣,用戶端的密碼M=rand(T3X),服務(wù)器端密碼M=rand((T1+△t)X)。對于成千上萬的用戶端在服務(wù)器端只要記錄了△t就可以了。這個△t,可以在“將軍令”生產(chǎn)的時候植入服務(wù)器端予以記錄。開通“將軍令”后,在提交序列號和動態(tài)密碼的時候,服務(wù)器端動態(tài)的調(diào)整△t,服務(wù)器端計算M=rand[(T2+△t)X],并且在△t的基礎(chǔ)上,計算出……,△t-5*60,△t-4*60,△t-3*60,△t-2*60,△t-1*60,△t,△t+1*60,△t+2*60,△t+3*60,△t+4*60,△t+5*60,……這個數(shù)列。具體數(shù)列長度根據(jù)需要來定,由于是產(chǎn)生隨機(jī)6位數(shù)的函數(shù),在這個數(shù)列中是不會出現(xiàn)重復(fù)的M的。這樣,就可以計算出△t附近前后相差n分鐘所產(chǎn)生的密碼M,只需要比對提交的動態(tài)密碼與數(shù)列中的哪個值對應(yīng),就可以動態(tài)的調(diào)整△t。假設(shè),動態(tài)密碼與△t-2*60對應(yīng)的密碼相同,就可以調(diào)整△t=△t-2*60。這樣,解決了用戶端從出廠到開通使用所產(chǎn)生的時間誤差。這個n,根據(jù)實(shí)際需要制定。
在使用“將軍令”的時候,采用同樣的方法可以同步。在確定了At后,服務(wù)器端在每次驗(yàn)證的時候,只要算出M1=rand[(TI+△t-y)x],M=rand[(TI+At)X],M2=rand[(T)+△t+y)x],就可以算出At附近y秒的時間的密碼M,就是允許“將軍令”有y秒的時間誤差。利用上面的算法來實(shí)現(xiàn)動態(tài)密碼的產(chǎn)生顯然要比第一種方法的安全性要高很多。
3 第三種設(shè)想
這種設(shè)想利用一個相對復(fù)雜的映射來實(shí)現(xiàn)動態(tài)密碼的產(chǎn)生。
它可能是根據(jù):年,月,日,時,分,秒。這樣的話,可以把“將軍令”看成是一個計算器,計算出用戶所需要的數(shù)字,然后與服務(wù)器通過同樣方法對計算出來的數(shù)字進(jìn)行比對。
假設(shè):“將軍令”出現(xiàn)的6位數(shù)字,我們分別設(shè)為a,b,c,d,e,f,將軍令的序列號為x。
a=年*x
b=月*2X
c=日*3X
d=時*4X
e=分*5X
f=秒*6X
但是,如果通過這個映射來計算出動態(tài)密碼的話,同樣也會有時間同步的問題需要解決,這就可以參照上面的算法思想進(jìn)行處理。
4 結(jié)束語
以上3種方案就是筆者認(rèn)為比較可行的方案,但通過研究“將軍令”內(nèi)部結(jié)構(gòu)可以發(fā)現(xiàn),將軍令是不允許更換電池的,一般使用時間在30個月左右。不允許更換電池。可能就是為了在最大程度上保持時間的同步。因此,綜合來看,筆者認(rèn)為設(shè)想二的第二個算法思想是最切實(shí)可行的一種方案。
小編推薦優(yōu)秀電子期刊 《鐵路計算機(jī)應(yīng)用》
《鐵路計算機(jī)應(yīng)用》(月刊)創(chuàng)刊于1992年,由中華人民共和國鐵道部主管,中國鐵道科學(xué)研究院、中國鐵道學(xué)會計算機(jī)委員會主辦,中國鐵道科學(xué)研究院電子計算技術(shù)研究所承辦。是鐵路系統(tǒng)可以在國內(nèi)外公開發(fā)行的行業(yè)計算機(jī)與信息技術(shù)專業(yè)技術(shù)性期刊。期刊致力于全面、迅速、準(zhǔn)確地刊登反映國內(nèi)外鐵路計算機(jī)應(yīng)用的最新科技成果、計算機(jī)技術(shù)在鐵路各專業(yè)領(lǐng)域的學(xué)術(shù)與理論探索
轉(zhuǎn)載請注明來自發(fā)表學(xué)術(shù)論文網(wǎng):http:///dzlw/4085.html