2015-08-09 58 views
0

是否正確假設idtoken提供沒有更多的安全性,而不是在與後端服務器的任何後續通信中用自身的SHA2哈希代替它(可能是鹽) ?Gitkit和MITM之間的安全和Android應用程序和後端服務器

的indended流將是以下幾點:

  1. 的Android應用程序獲得來自谷歌的idtoken
  2. 該應用程序發送idtoken到自託管的後端服務器,它是由後端與驗證使用gitkitclient.VerifyGitkitToken的
  3. 後端與期滿 日期和相關聯的用戶ID,並且在查找表中
  4. 的Android應用CREA將其存儲以供將來參考一起創建令牌的哈希SHA2測試idtoken的相同SHA2哈希值,並在將來與任何後端進行通信的頭部中傳遞它 ,而不是使用idtoken進行後續通信。

這會減少系統的安全嗎?

如果使用https檢測的透明代理(以及設備上安裝的相應證書(即合法在公司環境中))將嗅探流量,如果獲得idtoken或它的SHA2哈希值,該透明代理將能夠代表Android應用在idtoken的整個生命週期中採取行動(可能是通過欺騙的方式),對吧?

我的問題是,在與服務器進行的每次後續通信中調用gitkitclient.VerifyGitkitToken都太昂貴,而且一旦確定了idtoken的有效性,就沒有必要。

我也不希望將idtoken存儲在服務器上以供將來參考,而更喜歡使用它。是否有足夠的idtoken的SHA224散列,並且可以安全地假設它不會導致任何衝突?

+1

我投票結束這個問題作爲題外話題,因爲它更適合於http://security.stackexchange.com/,因爲它主要是關於散列衝突和2個服務之間的安全性 - 而不是關於特定的編程問題。 –

+0

@有沒有辦法在那邊轉移問題? (我讀過遷移問題會刪除它的答案,而nvnagr的答案是有幫助的) –

+0

它在關閉隊列中,所以應該由有權移植問題的人選取。我會[在此打開一個新問題](http://security.stackexchange.com/questions/ask)並自行關閉此問題 –

回答

1

這需要長時間討論認證cookie的內容以及各種方法的優缺點。沒有一種解決方案適合所有人,取決於應用/網站的安全性,性能和可擴展性要求,應該仔細選擇解決方案。因此,如果不瞭解有關應用,需求和威脅的更多細節,我實在無法評論所提議的解決方案。

在一般情況下,身份驗證Cookie /令牌具備以下基本要求

  • 不應鍛(由服務器簽署)
  • 應該很容易驗證
  • 即使簽名祕密被盜,黑客不應該能夠爲所有用戶創建令牌(例如,可以通過每個帳戶的隨機數來實現)
  • 應該可以從服務器更換(通過維護服務器端狀態來實現)
  • 可選綁定到它的客戶端發佈,所以如果從客戶端被盜將使它無用

我敢肯定,還有更多的更理想的屬性。 GITKit發出一次性認證使用的id_token,開發人員應使用自己的Cookie /令牌繼續保持應用程序/瀏覽器的會話。我們知道許多開發人員會希望我們提供幫助,並且我們正在研究一種解決方案,該解決方案可以爲應用程序提供持久的OAuth刷新令牌(以及短期訪問令牌),以便它可以繼續使用其主服務器。

相關問題