當然cookie可能會被竊取,會話被劫持,但會話cookie的加密本身有多安全?它可以用現代硬件和一點時間來操縱嗎?ASP.NET身份會話cookie有多安全?
我在問,因爲我想添加一個標識組的聲明,但只有在cookie非常安全時纔是安全的。否則,攻擊者可能會註冊一個合法帳戶,然後闖入其他組甚至不竊取密碼。
當然cookie可能會被竊取,會話被劫持,但會話cookie的加密本身有多安全?它可以用現代硬件和一點時間來操縱嗎?ASP.NET身份會話cookie有多安全?
我在問,因爲我想添加一個標識組的聲明,但只有在cookie非常安全時纔是安全的。否則,攻擊者可能會註冊一個合法帳戶,然後闖入其他組甚至不竊取密碼。
回答更新的.NET框架4和更大的:
machineKey
的元件,其用於:
加密,解密,和形式的認證數據的校驗和 視圖狀態數據
使用AES作爲默認解密算法,最小密鑰長度爲128位。
它也使用HMACSHA256
作爲通過SHA-256驗證的默認值HMAC。 HMAC可以阻止length extension attack這是攻擊者的一種方式,將數據附加到散列值上,以使散列仍然有效。
有針對AES-128沒有已知的實際攻擊(與192和256可以從related key attack苦)和SHA-256是隔靴搔癢被打破,雖然有一個academic attack against its sister SHA-1是質疑其collision resistance。在驗證令牌值時,碰撞阻力並不重要,但理論上這是朝着打破preimage resistance邁出的一步。因此,您可以放心,您可以安全抵禦AES-128和HMAC SHA-256的攻擊。
但是,與任何加密或散列算法一樣,它將歸結爲您的密鑰的安全性。 AutoGenerate和IsolateApps設置將會很好,但是如果你自己設置它們,確保它們是由密碼安全的僞隨機數生成器(CSPRNG)生成的,並且長度爲128位。任何小於這個數字的數字都意味着你可能會受到暴力攻擊(理論上)的損害。 128位意味着,即使使用世界上每臺計算機對您的密鑰進行分佈式的強力攻擊,也永遠無法在您的一生中完成。當然,攻擊者可以嘗試通過其他方式獲取密鑰來解決這個問題。保持安全。
我相信ASP.NET Identity使用比以前在ASP.NET中更爲現代的算法和哈希循環的數量 - 所以這個答案可能不再完全準確。 – pwdst
@pwdst:答覆已更新。 – SilverlightFox
看看這個[問題](http://stackoverflow.com/questions/4306543/is-it-safe-to-store-only-userid-using-setauthcookie-in-asp-net)。有一條評論「FormsAuth令牌的全部內容都經過了加密和簽名,包括用戶名/用戶ID,因此不能被篡改。」我認爲這可能會回答你的問題 – KevDevMan
排序,但也有批評微軟標準密碼散列,現在許多人認爲低於標準。所以仍然想知道cookie是否被強有力地簽名和加密。如果攻擊者可能在一週內破壞它,那就不夠好。 –