2013-10-08 57 views
0

我對密碼學還是比較陌生的,所以請原諒任何菜鳥的錯誤。我很舒服,這已被問了幾次,但我不知道要搜索什麼。通過AES認證

所以,我有一臺服務器,它通過我的智能手機上的http接收命令。目前,所有內容都使用AES進行加密,密碼可以在服務器的配置中設置。

問題是,當有人攔截我的請求時,他無法解密命令,但他可以將加密的命令重新發送到我的服務器。

兩個解決方案,我想主要有:

  • 加密的命令中的時間戳,所以他們在一段時間後無效,但缺點是仍然(在該期限內)的命令可以重新發送。
  • 服務器發送一些隨機的東西給客戶,必須加密併發送加密的東西回來(我認爲這會殺了我的HTTP方法)

我舒爾有更好的方法(可能是另一種算法?),歡迎任何幫助。

同樣,我沒有用密碼和編程很多經驗只是業餘愛好:d

+1

如何處理HTTPS問題? – CodesInChaos

+0

我將如何驗證https客戶端?我只聽說過服務器。 – mafrasi2

+1

通過證書驗證服務器,然後通過HTTPS以普通方式發送密碼。 – CodesInChaos

回答

4

請不要試圖重塑安全通信。 SSL和SSH是兩種用途非常廣泛的安全通信協議,它們都將解決重播問題,以及許多其他您尚未想到的安全問題(重新排序,刪除消息,插入消息一個地方到另一個地方等)。

+0

你說得對,我沒有想到這一點。是否可以在密碼中使用SSL,還是必須使用證書文件? – mafrasi2

+0

是的,SSL有一個密碼認證模式。我沒有親自使用它,但我知道有幾個使用過它的人。 – atk

+2

另外,就像在對原始問題的評論中一樣,您可以在SSL上運行的協議中使用SSL和客戶端身份驗證進行服務器身份驗證。這就是網絡瀏覽器通常這樣做的方式。 – atk

1

看來你需要加密和認證。

正如其他人所述,請僅使用SSL(HTTPS)進行HTTP請求加密。 SSL是加密的例外。 SSL可以進行身份​​驗證,但有更好的解決方案來從智能手機驗證用戶身份。

對於用戶認證,有很多選項。對於智能手機連接,我建議您不要發明自己的身份驗證協議,並使用經過測試的解決方案,如OpenIDOATH。有許多庫支持這一點。使用這些協議可以使用他們現有的Google,Facebook,Twitter賬戶等認證用戶。