系列目錄
- 程序員之網絡安全系列(一):為什么要關注網絡安全?
- 程序員之網絡安全系列(二):如何安全保存用戶密碼及哈希算法
- 程序員之網絡安全系列(三):數據加密之對稱加密算法
- 程序員之網絡安全系列(四):數據加密之非對稱秘鑰
- 程序員之網絡安全系列(五):數字證書以及12306的證書問題
- 程序員之網絡安全系列(六):動態密碼
前文回顧

程序員之網絡安全系列(二):如何安全保存用戶密碼及哈希算法 我們保證了數據的完整性
程序員之網絡安全系列(三):數據加密之對稱加密算法 我們對數據進行了加密
程序員之網絡安全系列(四):數據加密之非對稱加密算法
我們使用了非對稱密鑰算法,我們讓“隔壁王叔叔”傳遞了秘鑰。
程序員之網絡安全系列(五):數字證書以及12306的證書問題
我們使用了數字證書,確保了對方的公鑰身份,也就是互聯網中確定了要訪問的網站就是你要訪問的網站。
但是我們如何確定要訪問這個網站的用戶就是要訪問的用戶呢? 對銀行來說需要確保“敏捷的水”登錄銀行時,必須是"敏捷的水" 而不是別人,不然別人就把錢轉走了。
雖然我們從通信,數據加密等方式確保用戶密碼不背攻擊者破解,但是如果攻擊者使用鍵盤記錄器等工具知道了用戶密碼,那么就可以冒充用戶了。
比如銀行的U盾,因為我對這塊業務不了解,我猜銀行為每個用戶發放了一個公鑰?( 知道的同學,可以幫忙解釋一下銀行的U盾都做了什么? )
我們用數字證書確定了銀行的身份,那么銀行如何確定我們的身份呢?
兩步驗證
那么什么是兩步認證呢?兩步認證就是在每次登陸時候填一個手機短信收取的驗證碼或者手機應用生成的驗證碼。當然接收驗證碼的手機號或者應用是需要綁定的,這樣只有拿到這部手機並且知道你帳號密碼的人才能登陸帳號。
為什么需要它?
對有些人來說,盜取密碼比您想象的更簡單
以下任意一種常見操作都可能讓您面臨密碼被盜的風險:
- 在多個網站上使用同一密碼
- 從互聯網上下載軟件
- 點擊電子郵件中的鏈接
想像一下您無法訪問自己的帳戶及其中的內容,當別有用心的人盜取您的密碼后,他們能讓您無法訪問自己的帳戶,還可以執行以下操作:
- 翻看(甚至刪除)您所有的電子郵件、聯系人、照片等
- 冒充您給您的聯系人發送垃圾郵件或有害的電子郵件
- 使用您的帳戶重置您其他帳戶(銀行帳戶、購物帳戶等)的密碼
兩步驗證可以將別有用心的人阻擋在外,即使他們知道您的密碼也無可奈何。
如何工作?
現在大部分比較危險的操作都需要綁定手機號,因為手機號是你用的唯一的。接收到驗證碼后,我們再輸入系統做第二次的驗證。


但是由於我們這個驗證碼也有可能丟失,那么我們只需要讓他在一定時間有效就可以了,這就是OTP.
動態口令 (One Time Password)
動態密碼: 一個OTP(One Time Password) 是一個密碼僅用於一次登錄會話或者交易,使用過后,這個密碼就無效了。
靜態密碼的問題:
- 容易被破解
- 容易被猜測
- 容易被盜劫
- 針對不同的網站,用戶需要記憶大量的密碼。
使用動態口令主要有2個方面價值:
- 防止由於盜號而產生的財產損失。
- 采用動態口令的單位無需忍受定期修改各種應用系統登錄密碼的煩惱。

有兩種方法,生成動態密碼:
Event-based OTP (EOTP)
基於事件同步的令牌,其原理是通過某一特定的事件次序及相同的種子值作為輸入,在DES算法中運算出一致的密碼,其運算機理決定了其整個工作流程同時鍾無關,不受時鍾的影響,令牌中不存在時間脈沖晶振。但由於其算法的一致性,其口令是預先可知的,通過令牌,你可以預先知道今后的多個密碼,故當令牌遺失且沒有使用PIN碼對令牌進行保護時,存在非法登陸的風險,故使用事件同步的令牌,對PIN碼的保護是十分必要的。同樣,基於事件同步的令牌同樣存在失去同步的風險,例如用戶多次無目的的生成口令等,對於令牌的失步,事件同步的服務器使用增大偏移量的方式進行再同步,其服務器端會自動向后推算一定次數的密碼,來同步令牌和服務器,當失步情況已經非常嚴重,大范圍超出正常范圍時,通過連續輸入兩次令牌計算出的密碼,服務器將在較大的范圍內進行令牌同步,一般情況下,令牌同步所需的次數不會超過3次。但在極端情況下,不排除失去同步的可能性,例如電力耗盡,在更換電池時操作失誤等。此時,令牌仍可通過手工輸入由管理員生成的一組序列值來實現遠程同步,而無需寄回服務器端重新同步。
Time based OTP (TOTP)
基於令牌和服務器的時間同步,通過運算來生成一致的動態口令,基於時間同步的令牌,一般更新率為60S,每60S產生一個新口令,但由於其同步的基礎是國際標准時間,則要求其服務器能夠十分精確的保持正確的時鍾,同時對其令牌的晶振頻率有嚴格的要求,從而降低系統失去同步的幾率,從另一方面,基於時間同步的令牌在每次進行認證時,服務器端將會檢測令牌的時鍾偏移量,相應不斷的微調自己的時間記錄,從而保證了令牌和服務器的同步,確保日常的使用,但由於令牌的工作環境不同,在磁場,高溫,高壓,震盪,入水等情況下易發生時鍾脈沖的不確定偏移和損壞,故對於時間同步的設備進行較好的保護是十分必要的。對於失去時間同步的令牌,目前可以通過增大偏移量的技術(前后10分鍾)來進行遠程同步,確保其能夠繼續使用,降低對應用的影響,但對於超出默認時間(共20分鍾)的同步令牌,將無法繼續使用或進行遠程同步,必須返廠或送回服務器端另行處理。同樣,對於基於時間同步的服務器,應較好地保護其系統時鍾,不要隨意更改,以免發生同步問題,從而影響全部基於此服務器進行認證的令牌。
** 以上兩種方式在生成密碼的過程都不需要與服務器通信,所以極大的保證了密碼的安全。**