2012-05-29 77 views
2

我們爲我們的Web應用程序構建了雙因素身份驗證過程。我們已經構建了一個小型獨立應用程序,每分鐘生成一個8位數的安全代碼。當用戶登錄時,系統會提示他們輸入安全代碼。提交Web應用程序時,在其最後生成安全代碼並將其與輸入的安全代碼進行比較。如果兩者相同,則允許用戶進入應用程序。這用於像RSA令牌一樣。安全代碼生成/比較和原子時鐘

但是,我正在使用原子鐘服務器來確保USB應用程序和Web應用程序的安全代碼生成與時區和時鐘同步存在問題相同。這不僅是因爲服務器有時不可靠,而且我們還必須添加防火牆規則以允許我們擊中特定的原子鐘。有沒有一種安全的方法來做到這一點,而不使用遠程原子鐘?

回答

2

你不需要精確的時鐘,而是相同的價值。因此,從同一個Web應用程序中暴露某種「當前時間」服務(即基本的HTTP獲取「/ currenttime」和JSON響應)並從USP應用程序中查詢它。在這種情況下,您只需要在爲應用程序提供服務的服務器之間同步時間(如果您有多個服務器)。

1

如果您的應用程序不必完全使用RSA令牌安全,則可以修改Web應用程序以接受最後2或3個安全代碼。這樣,你就不太依賴時間的一致性。

如果你必須有時間同步,你可以運行自己的時間服務器,可以通過網絡應用程序和USB應用程序訪問。時間必須一致,不一定正確。

0

依靠外部時間是一個壞主意,因爲如果可以操縱時間源(例如,中間人攻擊,惡意上游DNS更改等),則可以遠程查詢設備收集未來的價值。

在滾動自己的密碼之前,你應該真正評估你的安全需求。很容易成爲一些錯誤的受害者,例如意外地使用不是加密安全的PRG,側通道定時攻擊或類似的錯誤。

如果您必須爲生產進行此操作,請確保打開您的實施,以便可以進行審查。