2010-02-18 115 views
2

我期待在開發一個一次性密碼認證系統(J2ME手機爲,PHP服務器端)OTP S/KEY - 種子如何生成,每次都是隨機的?

我試圖讓我周圍的加工頭,這裏是我理解

  1. 用戶>輸入隨機祕密(S)到次散列n個
  2. 用戶>提交小號^ n至服務器
  3. 服務器>保存N和S^n的
  4. 用戶>生成(S^N) - 1並提交給服務器
  5. 服務器>需要用戶輸入,並應用散列函數1更多的時間,並檢查它與先前存儲的散列

現在,從讀取RFC2289(S /密鑰)有是頒發給客戶端,並用連接起來的晶種用戶輸入唯一標識符時的祕密(步驟4)該種子是如何創建的,它是隨機的,是否存儲。

回答

1

種子是約定由服務器和客戶端在密碼序列初始化期間。因此在使用OTP進行身份驗證之前僅執行一次。種子應該是隨機的,但客戶應該能夠選擇它。換句話說,服務器可能會建議一個隨機種子,但客戶端應該有一個選項來提出他自己的(隨機)種子。種子應該由服務器存儲。在認證過程中,服務器實際上不使用它。它將其存儲起來,以便在認證過程中將其呈現給用戶以及序列號。種子和序列號都不是祕密