簡體   English   中英

有時在設備上進行安全身份驗證,而無需連接到服務器

[英]Secure authentication on a device occasionally without connection to a server

我正在開發一個服務器應用程序,它將有相當數量的客戶端設備對其進行訪問。 問題是我們不能保證客戶端設備將始終可以訪問服務器。 設備完全可能在網絡外部運行1周或更長時間。 同時,我們仍然希望設備以必需的內容的副本(在連接到網絡時自動更新)以自主方式工作。

當然,這會引起一些與用戶身份驗證有關的安全問題。 我們計划讓設備具有用戶列表的副本。 我們正在考慮如何在設備上確保身份驗證的安全性。 顯然,我們無法在更新包中以純文本形式發送密碼。

主服務器上的密碼經過加密和哈希處理,我們正在考慮使用某種哈希(SHA1?)來為客戶端設備提供可用列表。

通過這樣做,我們降低了對設備進行攻擊的門檻(無鹽)。

您是否對有效保護客戶端設備的安全性有何建議?

謝謝!

如果沒有充分的理由來削弱客戶端設備上的密碼,請在客戶端和服務器上使用相同的身份驗證方案。 客戶端設備也可以處理鹽。

首先,您需要明確攻擊者是誰。 在這種情況下,如果有人在哪里偷設備? 另一種情況是,如果有人通過惡意客戶端連接到服務器,該怎么辦? 如果有人在哪里監聽流量該怎么辦?

要停止嗅探,所有通信都應通過ssl(可能是https)進行。 為了防止惡意客戶端,您可以通過對SSL證書進行硬編碼來識別每個客戶端設備,並將這些憑據存儲在數據庫的服務器端。 服務器可以使用來自CA的普通證書。 如果設備被盜,則可以在本地數據庫中吊銷證書。 雖然可以使用完整的PKI,但可以得到很好的效果,但這不是必需的。

將密碼散列溢出到攻擊者(客戶端)始終是一個漏洞。 通常使用sql注入將所有密碼哈希轉移到客戶端。 這不是解決方案。

md5以多種不同方式被破壞,並在現實世界中被利用。 sha1更安全,並且仍被NIST批准,但是sha256是一個很好的選擇。 隨機添加鹽值密碼散列是必要的。

對於您的密碼問題,我可以想到的一個安全解決方案是僅在連接到網絡時才允許身份驗證。 該用戶可以被緩存,然后該用戶可以注銷並重新登錄。這可以限制攻擊情形,但不會使攻擊無效。 如果有人在哪里竊取設備,他也會有密碼哈希,在這種情況下,必須迫使用戶更改密碼(希望這種情況發生在攻擊者有機會破解哈希之前)。

一種不太安全的解決方案是使用繁重的哈希函數,例如PBKDF2 它用於Winzip之類的應用程序中,攻擊者始終可以使用密碼哈希。 缺點是它的速度極慢 ,因此不能用於普通的Web應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM