專利名稱:一次性密碼的產生方法
技術領域:
本發明涉及一種通信保密的方法,且特別是涉及一種動態產生一次性密 碼的方法。
背景技術:
隨著科技的進步,利用密碼來控制存取例如計算機、數據庫、通信裝置 等的資源,已經是眾所皆知的技術。在存取所需要的資源之前,使用者需要 輸入一個正確的密碼,作為確定使用者被授權存取所需資源的依據。因此在 日常生活中,幾乎到處都可以找到某種形式的密碼使用。 一般而言,在通信 雙方欲進行通信時,大都是采用靜態密碼來達到保密的動作。然而,當靜態 密碼被盜取之后,盜取者只要花上相當時間,即可破解靜態密碼,在安全上 后果堪虞。因此,為了克服靜態密碼的缺點,則產生了一次性密碼的構思。
一次性密碼(One. Time Password, OTP)為使用一次的密碼,在需要登 入服務器的時候,便利用密碼產生器(Token)產生OTP,而在進行認證之后, 此次所產生的密碼即廢棄不用,下次認證時必須使用新的密碼。由于一次性 密碼僅能使用一次,并且一次性密碼為動態產生,亦無法預測下一次產生的 密碼,據此則大幅提升使用的安全程度。 一般OTP可分為計次使用以及計時 使用兩種。計次使用的0TP在產生后,可在不限時間內使用;計時使用的OTP 則可設定密碼在特定時間內為有效。然而,以計時方式的一次性密碼而言, 在密碼為有效的期間內,黑客仍然可以竊取后來使用;而以計次方式而言, 倘若被黑客竊取多組的密碼,仍然有被破解的可能性。
目前市面上所見的一次性密碼系統大都是以硬件(即密碼產生器)的方 式來產生一次性密碼,除了在開發上需支付龐大的硬件成本,亦具備硬件遺 失的風險。此外,由于傳統的一次性密碼系統在通信雙方中均需保有一個約 定的密碼本(Code Book),在系統導入方面亦相當不方便
發明內容
有鑒于此,本發明提供一種動態產生密碼的方法,事先提供一組初始號 碼至第一電子裝置與第二電子裝置,藉由此初始號碼在第一與第二電子裝置 中產生動態密碼,而不在傳輸過程中傳遞動態密碼,據以提高傳輸密碼的安 全性。
本發明提出一種產生密碼的方法,適用于在第一電子裝置與第二電子裝 置產生共同的動態密碼。此方法首先提供初始號碼至第一電子裝置與第二電 子裝置。接著,由第一電子裝置產生第一數值,并依據初始號碼加密為第一 傳送值,以發送至第二電子裝置。之后,第二電子裝置再依據初始號碼,解 密所接收的第一傳送值,而獲得第一數值。最后,在第一電子裝置及第二電 子裝置中,分別依據初始號碼與第一數值,產生動態密碼。最后,在第一電 子裝置以及第二電子裝置中,分別依據初始號碼與第一數值,產生動態密碼。
在本發明的一實施例中,上述在第二電子裝置依據初始號碼,解密所接 收的第一傳送值,而獲得第一數值的步驟之后,第二電子裝置還包括產生第 二數值,并依據第一數值,將第二數值加密為第二傳送值,以發送至第一電 子裝置。而第一電子裝置再依據第一數值,解密所接收的第二傳送值,以獲 得第二數值。據此,在第一電子裝置以及第二電子裝置中,則分別依據初始 號碼、第一數值以及第二數值,產生動態密碼。
在本發明的一實施例中,上述產生動態密碼的步驟包括在第一電子裝
置以及第二電子裝置中,分別依據第一數值與第二數值,產生一聯機金鑰, 以藉由初始號碼與此一聯機金鑰,動態產生后續的密碼。聯機金鑰是在整個 交易過程中用來對數據加密的金鑰。其中,在產生聯機金鑰之后,更可在整 個交易過程中,以依據初始號碼、聯機金鑰以及交易次數,不斷產生新密碼,
亦即每次都不同的通行碼(Password)。
在本發明的一實施例中,上述在第一電子裝置依據第一數值,解密第二 傳送值,而獲得第二數值的步驟之后,第一電子裝置還包括產生一第三數值, 并依據初始號碼加密為第三傳送值,以發送至第二電子裝置。而第二電子裝 置再依據初始號碼,解密第三傳送值以獲得第三數值。同樣地,第二電子裝 置亦產生一第四數值,并依據初始號碼加密為第四傳送值,以發送至第一電 子裝置。而第一電子裝置則依據初始號碼,解密第四傳送值以獲得第四數值。 據此,在第一電子裝置以及第二電子裝置中,則可分別依據第二數值、第三 數值以及第四數值,產生加密聯機金鑰,以依據初始號碼與初始加密聯機金鑰,產生動態密碼。
在本發明的一實施例中,上述在第一電子裝置以及第二電子裝置中,分
別依據初始號碼與第一數值,產生動態密碼的步驟包括在第一電子裝置以及 第二電子裝置中,建立相同的一密碼產生函數,以將初始號碼與第一數值代 入密碼產生函數,而產生動態密碼。
本發明事先提供一初始號碼至第一電子裝置與第二電子裝置中,并藉由 初始號碼將用來產生動態密碼的數值加密之后,再傳送至對方。如此一來, 在第一與第二電子裝置的傳輸過程中,將不會傳送動態密碼,有效防止中間 人的攻擊,據以提高安全性。
為讓本發明的上述特征和優點能更明顯易懂,下文特舉較佳實施例,并 配合附圖,作詳細i兌明如下。
圖1是依照本發明第一實施例所示出的產生密碼的方法流程圖。 圖2是依照本發明第二實施例所示出的產生密碼的方法流程圖。 圖3是依照本發明第三實施例所示出的產生密碼的方法流程圖。 附圖符號說明
S101-S107:本發明第一實施例的產生密碼的方法各步驟 SM1-S215:本發明第二實施例的產生密碼的方法各步驟 SMI-S347:本發明第三實施例的產生密碼的方法各步驟。
具體實施例方式
一般市面上常見的動態密碼(以下稱為一次性密碼)系統均需要通信雙 方事先約定一個密碼本,或是以客戶端裝置使用硬件(Token)的方式來產生 動態密碼,在使用上相當不便,且欠缺人性化。因此,本發明提出一種產生 密碼的方法,可不需攜帶任何硬件并且亦不需使用密碼本,即可產生動態密 碼。為了使本發明的內容更為明了,以下特舉實施例作為本發明確實能夠據 以實施的范例。
以下實施例的第一、第二電子裝置例如為客戶端裝置以及服務端裝置, 然本領域具有通常知識者可以視其需求而將本發明實施于各種電子裝置中, 在此并不限制。第一實施例
圖1是依照本發明第一實施例所示出的產生密碼的方法流程圖。請參照 圖1,本實施例是用于在一客戶端裝置與一服務端裝置中產生共同的一次性 密碼。首先,在步驟S101中,由使用者事先提供一組初始號碼至服務端裝置 中。以網絡銀行而言,在使用者至銀行開戶之時,即可事先在銀行的服務端 裝置中設置一組初始號碼。注意客戶端使用者得視需要,隨時異動此一初始 號碼,以維持此一初始號碼的安全性。
當使用者欲在客戶端裝置中與服務端裝置開始進行交易時,接著,便進
入產生一次性密碼的準備動作,如步驟S103所示,由客戶端裝置產生第一數 值,并依據初始號碼將第一數值加密為第一傳送值,以發送至服務端裝置。 舉例來說,使用者可將具備產生一次性密碼的軟件安裝至任一計算機系統中, 再將先前設定在服務端裝置的初始號碼輸入至計算機系統內,接著即可開始 進行與服務端裝置之間的交易動作。由客戶端裝置隨機數產生第一數值(亦 可由使用者自行決定),之后藉由初始號碼來加密第一數值。據此,在傳輸 的過程中,將不會傳輸真正用來產生 一 次性密碼的所需的數值(即第 一數值)。
之后,在步驟S105中,服務端裝置接收客戶端所發送的第一傳送值,并 依據初始號碼來解密所接收的第一傳送值,而獲得'第一數值。據此,服務端 裝置亦取得由客戶端裝置所產生的第 一數值。
最后,在步驟S107中,客戶端裝置與服務端裝置即可依據第一數值與初 始號碼,產生一次性密碼。例如,在使用者所使用的客戶端裝置與服務端裝 置中建立相同的密碼產生函數,將第 一數值與初始號碼代入密碼產生函數中, 即可獲得一次性密碼。
綜上所述,在第一實施例中,客戶端裝置與服務端裝置利用相同的一組 初始號碼,以加解密第一數值,使得雙方得以依據初始號碼與第一數值來產 生一次性密碼,故可防止中間人的攻擊。另外,本發明更可基于上述的原理 來產生聯機金鑰之后,再依據聯機金鑰來產生一次性密碼。以下再舉一實施 例i兌明之。
第二實施例
圖2是依照本發明第二實施例所示出的產生密碼的方法流程圖。請參照 圖2,本實施例的步驟S201、 S203分別與第一實施例的步驟S103、 S105相 同或相似,同樣在使用者提供一組初始號碼至客戶端裝置與服務端裝置之后,如步驟S201所示,由客戶端裝置產生第一數值,并依據初始號碼加密為第一 傳送值,而發送至服務端裝置。接著,在服務端裝置中,如步驟S203所示, 服務端裝置依據初始號碼將第一傳送值解密為第一數值。
接著,在步驟S205中,由服務端裝置產生第二數值,并依據第一數值加 密為第二傳送值,以發送至客戶端裝置。當客戶端裝置接收到第二傳送值時, 如步驟S207所示,客戶端裝置則依據第一數值解密為第二數值。而上述的客 戶端裝置與服務端裝置中用來加解密的函數(或算法)可由使用者事先選擇, 亦或已預設在其中,當然,此加解密的函數的復雜度亦可視使用情形來更改, 在此并不限制其范圍。
之后,客戶端裝置與服務端裝置分別如步驟S209以及步驟S211所示, 依據第一數值與第二數值,產生聯機金鑰。最后,客戶端裝置與服務端裝置 分別如步驟S213以及步驟S215所示,依據初始號碼與聯機金鑰,產生一次 性密碼。詳細地說,由于客戶端裝置與服務端裝置雙方皆持有相同的第一數 值與第二數值,因此可在自身產生聯機金鑰,而不需透過網絡來傳輸聯機金 鑰。之后,在客戶端裝置與服務端裝置中建立相同的密碼產生函數,將聯機 金鑰與初始號碼代入密碼產生函數中,即可獲得一次性密碼。
另外,在產生一次性密碼時,客戶端裝置與服務端裝置更可依照客戶端 裝置欲與服務端裝置進行交易的一交易次數,以依據初始號碼、聯機金鑰以 及第幾次交易的交易次數,產生一次性密碼。如此一來,在客戶端裝置每次 欲與服務端裝置進行交易時,即不需重復步驟SM1-S211,而利用交易次數 來變換所產生的一次性密碼即可。
值得一提的是,客戶端裝置與服務端裝置更可藉由一初始號碼來交互驗 證彼此的身分。舉例來說,雙方通信的方法可分為五個階段,依序為初始準 備階段、交握階段、產生聯機金鑰的準備階段(例如步驟S201-S205 )、產 生聯機金鑰階段(例如步驟S209-S211)以及產生一次性密碼的階段(例如 步驟S213-S215 )。
在初始準備階段中,根據秘密分持原則,服務端裝置與客戶端裝置雙方 各持部分秘密。客戶端裝置的使用者擁有自己的認證數據,例如身分證號碼、 由服務端裝置授予的使用者賬號與通行碼等。而服務端裝置除了儲存認證數 據,更保存了由使用者所交付的初始號碼,以對應其認證數據。據此,在服 務端裝置與客戶端裝置中便皆具有相同的初始號碼。而使用者亦可在一段時間后,可自行至服務端裝置中更改初始號碼,以提高安全性。而在交握階段 中,當服務端裝置驗證由客戶端裝置所發送的認證數據為正確時,便將初始 號碼回傳至客戶端裝置,使得客戶端裝置得以驗證服務端裝置的身分。
在交握階段驗證無誤之后,使用者便可開始進行雙方之間的交易。當使 用者欲在客戶端裝置中與服務端裝置開始進行交易時,接著,便進入產生一
次性密碼的動作,也就是上述步驟S201-S215。
另外,值得注意的是,除了上述的第一數值與第二數值之外,本發明更 可產生其它數值來強化一次性密碼被解密的復雜度。以下即舉一實施例說明 在實際應用上的產生密碼的方法的各步驟,然并不以此限制本發明的范圍。
第三實施例
圖3是依照本發明第三實施例所示出的產生密碼的方法流程圖。請參照 圖3,首先,在客戶端裝置中,如步驟S301所示,由客戶端裝置隨機數產生 第一數值g,接著在步驟S303中,將第一數值g與初始號碼I相加,而獲得 第一傳送值g' (g, =g+I)。之后,客戶端裝置便將第一傳送值g,發送至 服務端裝置。
接著,在服務端裝置中,如步驟S305所示,在服務端裝置以第一傳送值 g,減去初始號碼I,而獲得第一數值g (g=g, -I)。在步驟S307中,服務 端裝置產生第二數值k,且bg,并在步驟S309中,將第一數值g與第二數 值k相加(k, =k+g),而在獲得第二傳送值k,后,將第二傳送值k,發送 至客戶端裝置。其中,第一數值g與第二數值k即可作為原根(primitive root)與模數(modulo)。
當客戶端裝置接收到第二傳送值k,之后,如步驟S311所示,客戶端裝 置以第二傳送值k,減去第一數值g(]^k, -g),而獲得第二數值k。據此, 在客戶端裝置以及服務端裝置中皆能夠獲得第一數值g與第二數值k。
接下來,為了得到雙方共同的聯機金鑰S,在步驟S313中,可在客戶端 裝置中再隨機產生一個整數x,之后,如步驟S315所示,將整數x代入公式 u=gx mod k而獲得第三數值u。然后,在步驟S317中,如同在上述第一傳送 值g,的獲得手法,將第三數值u與初始號碼I相加而獲得第三傳送值u, ( u, =u+I),再將第三傳送值u,發送至服務端裝置。
另一方面,如步驟S319所示,在服務端裝置中隨機產生另一整數y。接 著,在步驟SM1中,將整數y代入公式v-gymodk而獲得第四數值v,并且如步驟S323所示,亦將第四數值v與初始號碼I相加而獲得第四傳送值v, (v, =v+I),再將第四傳送值v,發送至客戶端裝置。
在客戶端裝置與服務端裝置分別接收到v,與u,時,即分別如步驟S325 與步驟S327所示,將其減去初始號碼I,即可獲得v與u。如此一來,客戶 端裝置與服務端裝置即同樣獲得第一數值g、第二數值k、第三數值u以及第 四數值v。
另外,服務端裝置不一定要在接收第三傳送值u,之后,才隨機產生另 一整數y,亦可在客戶端裝置隨機產生整數x時,服務端裝置亦同步產生整 數y,在此僅為方便說明,并不以此限制本發明的范圍。
接著,即進入產生聯機金鑰的階段,客戶端裝置與服務端裝置分別 如步驟S329與步驟S331所示,將第二數值k、第三數值u以及第四數值v, 代入公式S-(i^v) mod k,即可獲得聯片幾金鑰S。
之后,客戶端裝置與服務端裝置分別如步驟S333與步驟S335所示,進 入動態產生一次性密碼的階段,依照客戶端裝置欲與服務端裝置進行交易的 第n次交易的交易次數(初始交易次數n-0),分別如步驟S337與步驟S339 所示,將交易次數n、聯機金鑰S以及初始號碼I,代入公式T-f(S, n, I) 以求出一次性密碼T,而f可以是任意一個非線性函數。
據此,在步驟S341中,假設客戶端裝置便將欲傳送的數據M (例如在金 融電子交易中,M往往必須包括客戶的通行碼Password,即是本實施例中所 產生的一次性密碼),利用聯機金鑰S進行加密,得到加密數據M,,以發 送至服務端裝置。在服務端裝置接收到加密數據M,之后,如步驟S343所示, 服務端裝置再藉由聯機金鑰S進行解密,得到數據M。
最后,客戶端裝置與服務端裝置分別如步驟S345與步驟S347所示,分 別將其內存的交易次數n加上1,以在下次進行交易時,返回步驟S337與步 驟S339,而再次藉由登入次數n、聯機金鑰S以及初始號碼I,以產生一次 性密碼T。換言之,客戶端裝置與服務端裝置中內存的交易次數n在初次使 用時例如皆為O,待此次交易結束后,即會將交易次數n加上l,以在下次交 易時,產生與此次不同的一次性密碼。
綜上所述,上述的實施例中,在客戶端裝置與服務端裝置中設置相同的 初始號碼,以運用初始號碼來加解密產生一次性密碼T,而在傳輸過程中由 客戶端傳遞該一次性密碼T給服務器端,由服務器端來驗證,據以防止中間人的攻擊,進一步提高雙方通信的安全性。并且,雙方亦不需事先約定一密 碼本或使用硬件裝置,在使用上更加方便。
雖然本發明已以較佳實施例揭露如上,然其并非用以限定本發明,任何 所屬技術領域中具有通常知識者,在不脫離本發明的精神和范圍內,當可作 些許的更動與潤飾,因此本發明的保護范圍當視本發明的申請專利范圍所界 定者為準。
權利要求
1. 一種產生密碼的方法,適用于在一第一電子裝置與一第二電子裝置產生共同的一動態密碼,該方法包括提供一初始號碼至該第一電子裝置與該第二電子裝置;該第一電子裝置產生一第一數值,并依據該初始號碼加密為一第一傳送值,以發送至該第二電子裝置;該第二電子裝置依據該初始號碼,解密所接收的該第一傳送值,而獲得該第一數值;以及在該第一電子裝置以及該第二電子裝置中,分別依據該初始號碼與該第一數值,產生該動態密碼。
2. 如權利要求1所述的產生密碼的方法,其中,在該第二電子裝置依據 該初始號碼,解密所接收的該第一傳送值,而獲得該第一數值的步驟之后, 還包括該第二電子裝置產生一第二數值,并依據該第一數值,將該第二數值加 密為一第二傳送值,以發送至該第一電子裝置;該第一電子裝置依據該第一數值,解密所接收的該第二傳送值,而獲得 該第二數值;以及在該第一電子裝置以及該第二電子裝置中,分別依據該初始號碼、該第 一數值以及該第二數值,產生該動態密碼。
3. 如權利要求2所述的產生密碼的方法,其中,在該第一電子裝置以及 該第二電子裝置中,分別依據該初始號碼、該第一數值以及該第二數值,產 生該動態密碼的步驟包括在該第一電子裝置以及該第二電子裝置中,分別依據該第一數值與該第 二數值,產生一聯機金鑰,以藉由該初始號碼與該聯機金鑰,產生該動態密 碼。
4. 如權利要求3所述的產生密碼的方法,其中,藉由該初始號碼與該聯 機金鑰,產生該動態密碼的步驟包括取得該第一電子裝置欲與該第二電子裝置進行交易的一交易次數,以依 據該初始號碼、該聯機金鑰以及該交易次數,產生該動態密碼。
5. 如權利要求2所述的產生密碼的方法,其中,在該第一電子裝置依據該第一數值,解密該第二傳送值,而獲得該第二數值的步驟之后,還包括 該第一電子裝置產生一第三數值,并依據該初始號碼加密為一第三傳送值,以發送至該第二電子裝置;該第二電子裝置依據該初始號碼,解密該第三傳送值,而獲得該第三數值;該第二電子裝置產生一第四數值,并依據該初始號碼加密為一第四傳送 值,以發送至該第一電子裝置;該第一電子裝置依據該初始號碼,解密該第四傳送值,而獲得該第四數 值;以及在該第一電子裝置以及該第二電子裝置中,分別依據該第二數值、該第 三數值以及該第四數值,產生一聯機金鑰,以依據該初始號碼與該聯機金鑰, 產生該動態密碼。
6. 如權利要求5所述的產生密碼的方法,其中,產生該聯機金鑰是依據 下列公式S=(u*v) mod k;其中,S代表該聯機金鑰,k代表該第二數值,u代表該第一強化值,v 代表該第二強化值。
7. 如權利要求5所述的產生密碼的方法,其中,該第一電子裝置產生該 第三數值是依據下列公式u=gx mod k;其中,u為該第三數值,g為該第一數值,k為該第二數值,x為任一整數。
8. 如權利要求5所述的產生密碼的方法,其中,該第二電子裝置產生該 第四數值是依據下列公式v=gy mod k;其中,v為該第四數值,g為該第一數值,k為該第二數值,y為任一整數。
9. 如權利要求1所述的產生密碼的方法,其中,該第一電子裝置產生該 第 一數值,并依據該初始號碼加密為該第 一傳送值是依據下列公式g, =g+l;其中,g'為該第一傳送值,g為該第一數值,I為該初始號碼。
10. 如權利要求1所述的產生密碼的方法,其中,該第二電子裝置依據該初始號碼,解密所接收的該第一傳送值是依據下列公式g=g, -i;其中,g,為該第一傳送值,g為該第一數值,I為該初始號碼。
11. 如權利要求l所述的產生密碼的方法,其中,在該第一電子裝置以及 該第二電子裝置中,分別依據該初始號碼與該第一數值,產生該動態密碼的步驟包括在該第一電子裝置以及該第二電子裝置中,建立相同的一密碼產生函數;以及將該初始號碼與該第一數值代入該密碼產生函數,而產生該動態密碼。
全文摘要
一種以純軟件方式產生一次性密碼的方法,適用于在第一電子裝置與第二電子裝置產生共同的動態密碼。此方法首先提供初始號碼至第一電子裝置與第二電子裝置。接著,由第一電子裝置產生一數值,并依據初始號碼加密為一傳送值,以發送至第二電子裝置。之后,第二電子裝置再依據初始號碼,解密所接收的傳送值,而獲得此一數值。最后,在第一電子裝置以及第二電子裝置中,分別依據初始號碼與此一數值,產生動態密碼,據此即構成一個一次性密碼系統。
文檔編號H04L9/32GK101534188SQ20081008388
公開日2009年9月16日 申請日期2008年3月11日 優先權日2008年3月11日
發明者曾繼興, 林宗禧, 陳志誠 申請人:大同股份有限公司;大同大學