
「動態密碼」(OTP,One Time Password)顧名思義就是每次使用時產生的密碼都不一樣,而且每組密碼只能使用一次,因此也可稱作「一次性密碼」。與傳統固定式密碼相比,具有不可預測性,可避免遭駭客竊取密碼後執行重送攻擊的風險,即使駭客竊取該次的密碼,也無法通過下次的登錄驗證。
「動態密碼」(OTP,One Time Password)大致可分為Event-Based、Time-Based與Challenge & Response三種類型,密碼產生方式有許多種,原則上是利用特定的密碼學相關運算函式(如DES、SHA...),加上變動性的參數運算後得到的結果。這次我拿到一張Event-Base類型的OTP Card,此卡動態密碼採用OATH HOTP標準方式產生,我寫了一支簡單的程式來驗證此卡片所產生的動態密碼,另外這支程式也順便加入HMAC_Sha1、HMAC_Sha256、HMAC_Sha384與HMAC_Sha512的功能。
下面兩張圖是卡片的外觀,第一張是未顯示動態密碼的樣子,第二張是按下卡片右下方按鈕後產生動態密碼的樣子,密碼顯示的時間大約是三十秒鐘,之後就會恢復到第一張的樣子。另外此卡片因為有內建電池,所以一般使用年限大概是三年,電池沒電後卡片也只能報廢,未來會有標準的晶片卡結合這種具顯示螢幕的卡片,內建的電池也許能改成可重複充電,卡片若插入讀卡機中,即可進行充電,這樣便可延長使用期限。