題:
基於證書的身份驗證與用戶名和密碼身份驗證
Stefany
2011-05-06 18:35:04 UTC
view on stackexchange narkive permalink

與基於用戶名和密碼的身份驗證相比,基於證書的身份驗證有什麼優點和缺點?我知道一些,但是我希望能獲得結構化和詳細的答案。

更新

我也很想知道他們容易受到什麼攻擊,例如到目前為止提到的是蠻力的,而證書卻沒有提及……XSRF呢?預期證書的壽命較短,並且能夠被撤消,而在管理員策略要求更改密碼之前,密碼的壽命將更長。

七 答案:
Thomas Pornin
2011-05-06 20:05:59 UTC
view on stackexchange narkive permalink

1。用戶很笨

密碼是適合用戶記憶的內容,用戶可以選擇密碼。由於身份驗證是關於遠程驗證用戶物理身份(從驗證者的角度來看),因此用戶行為必定涉及該過程-但是,密碼依賴於用戶的那部分最臭名昭著的是在處理安全性方面,即他的大腦。用戶根本不了解密碼熵的含義。我不是為此而責怪他們:這是一個技術主題,一個專門知識,在不久的將來無法現實地變成“常識”。另一方面,物理令牌的安全性更加“有形”,普通用戶可以對此非常熟練。進化論者會說,在過去的一百萬年中,人類一直是人類的積極選擇,因為那些無法握住火石工具的人沒有足夠的生存能力來繁殖後代。

好萊塢電影可以作為典範用戶如何看待密碼-如果僅僅是因為這些用戶也去看電影。大敵人總是有一個短密碼,只是喜歡吹牛,並儘可能地散佈線索。而且,英國秘密特工總是會及時猜測密碼,以停用植入在女王最喜歡的花壇下的聚變炸彈。電影投射出扭曲,誇張的現實,但它們仍然代表了普通用戶操作的心理基準:他們將密碼設想為通過比攻擊者更“機智”來提供安全性。而且,大多數情況都是這樣。

“密碼強度”可以通過強制性規則(至少八個字符,至少兩個數字,至少一個大寫字母和一個小寫字母...)來改善,但是這些規則被用戶視為負擔,並且有時是對他們固有的自由的一種難以忍受的約束-因此,用戶開始具有很大的創造力,與規則作鬥爭,從傳統的在便籤紙上寫下密碼開始。密碼加強規則經常會適得其反。

另一方面,用戶證書暗指一個存儲系統,如果該系統是用戶隨身攜帶的房屋或汽車鑰匙隨身攜帶的物理設備, ,那麼安全性(部分取決於)普通用戶對物理對象安全性的管理水平,他們通常會做得很好。至少比選擇正確的密碼要好。因此,這是證書的一大優勢。

2。證書使用非對稱密碼

“非對稱”是關於角色分離。使用密碼,驗證密碼的人都會在某個時候知道密碼或等同於密碼的數據(嗯,在 PAKE協議中並不是完全如此)。對於用戶證書,證書由證書頒發機構頒發,證書頒發機構保證物理身份和加密公鑰之間的鏈接。驗證者可以是與眾不同的實體,可以驗證這樣的鏈接並將其用於認證用戶,而沒有可以冒充用戶。

定義用戶數字身份的用戶(即進行從物理身份到計算機世界的映射的實體)與那些驗證用戶。

這為通向不可否認的數字簽名開闢了道路。這尤其使從在線客戶那裡獲得金融訂單的銀行感興趣:他們需要對客戶進行身份驗證(這是我們正在談論的錢,這是非常嚴重的事情),但他們希望獲得令人信服的訂單跟踪-在某種意義上:法官將被說服。僅憑身份驗證,銀行就可以確保它正在與正確的客戶進行對話,但是不能向第三方證明這一點。銀行可能會建立虛假的聯繫記錄,因此對於聲稱由銀行自己陷害的客戶而言,這是沒有武器的。即使用戶擁有證書,數字簽名也不會立即可用;但是如果用戶可以使用證書進行身份驗證,那麼大多數工作就完成了。

此外,密碼天生就容易遭受網絡釣魚攻擊,而用戶證書則並非如此。正是由於不對稱:證書的使用從未涉及向對等方透露任何秘密數據,因此,冒充服務器的攻擊者無法以這種方式學習任何有價值的信息。

3。證書很複雜

部署用戶證書很複雜,因此很昂貴:

  • 與任何PKI一樣,頒發和管理證書完全是蠕蟲。供應商可以告訴您(實際上,我的確告訴您)。特別是撤銷管理。 PKI大約是5%的加密和95%的程序。 可以完成,但不便宜。

  • 用戶證書表示用戶以某種方式在其“專有訪問”下存儲其私鑰。這可以通過軟件(現有的操作系​​統和/或Web瀏覽器可以做到)或使用專用硬件來完成,但是兩種解決方案都有其自身的可用性問題。將會出現的兩個主要問題是:1)用戶丟失了密鑰,並且2)攻擊者獲得了密鑰的副本。軟件存儲使密鑰丟失成為一個合理的問題(受故障硬盤的支配),並且在多個系統(例如台式機和iPad)之間共享密鑰意味著一些手動操作,不太可能受到攻擊者的良好保護。硬件令牌意味著設備驅動程序的整個混亂狀態,甚至可能更糟。

  • 用戶證書意味著客戶端上相對複雜的數學運算;即使對於貧乏的奔騰II來說,這也不是問題,但是您將無法使用通用網站中某些Javascript的證書。證書需要與客戶端軟件的積極合作,並且說,在這種情況下,該軟件在人機工程學上往往是次優的。一般用戶通常可以學習使用客戶端證書來建立與網站的HTTPS連接,但是以學習如何忽略偶爾的警告彈出窗口為代價,這使他們更容易受到某些攻擊(例如,攻擊者嘗試進行的主動攻擊)另一方面,基於密碼的身份驗證真的很容易在幾乎任何地方進行集成。

當然,弄亂同樣容易。但至少它沒有不必要涉及一些不可壓縮的額外費用。

摘要

用戶證書允許角色分開,密碼不能做到。他們這樣做是以增加大量實施和部署問題為代價的,這使它們變得昂貴。但是,密碼由於適合人腦而保持便宜,這固有地意味著低安全性。密碼的安全性問題可以通過一些技巧(最多包括PAKE協議)來緩解,並且最重要的是,在出現問題時歸咎於用戶(我們知道普通用戶無法選擇安全的密碼,但是任何不幸的事情都會仍然是他的錯-銀行就是這樣做的。)

“用戶愚蠢”-不,他們不是。用戶不傻。他們在理論上一無所知:與學習密碼熵的數學方法相比,他們與時間的關係更好。有一個重要的差異(對於安全人員來說,在心態上也非常重要)。用戶也從根本上不合規:正如Cormac Herley所言,鑑於違反用戶安全性的情況相對很少,因此花費時間花在煩人的安全性措施上的用戶所獲得的收益往往會被其花費的時間所抵消。所以。
@D.W。我喜歡“理性無知”這個詞!我看到了很多用法...
用戶就是用戶。用戶主要對其任務感興趣,其中一些任務在安全域中運行。安全性通常會降低可用性,並且用戶在提高自身可用性的努力中會故意不合規。使系統安全需要用戶的配合。為了獲得合作,他們需要了解為什麼要採取具體措施。不僅“較長的密碼會更安全”,而且典型的攻擊者使用的工具會假設密碼少於或等於8個字符,因此我們將密碼的最小長度設為9。 (我組成了八個字符的長度)。
然後您將PKI證書頒發給...哦,您是“啞巴用戶”,並依靠他們來照管它,而不是像公司文件共享一樣放置它。
“密碼強度”的說法是錯誤的。諸如最小字符數,大寫字母和數字之類的規則實際上對熵並沒有多大作用,而只是使密碼更容易破解,因為攻擊者可以確切知道密碼是什麼樣,並且使密碼更難記為用戶。 當所有攻擊者都無法物理訪問計算機時,寫在便箋上的密碼與同長度證書一樣安全。
我報名參加stackexchange以投票贊成D.W.的評論。“無知”!- 非常好。
*“密碼天生就容易遭受網絡釣魚攻擊,而用戶證書則不易受到攻擊。” *對不起,為什麼有人不能用我的證書副本而不是密碼副本來欺騙我?
bethlakshmi
2011-05-07 00:50:06 UTC
view on stackexchange narkive permalink

用戶名/密碼

  • Pro :易於部署-只需一些代碼和一個安全的數據存儲。根據安全策略,可以自動生成密碼或強制新用戶創建密碼。

  • 專業版:易於管理-密碼重置可以(對於某些用戶而言)安全策略)可以通過自動化工具

  • Con 來完成:為了獲得良好的安全性,應該及早且經常重置密碼。用戶忘記或無法更改密碼既有安全風險,也有使用麻煩。

  • Con :好的密碼可能很難記住,這導致

  • 缺點:密碼數據存儲是一個弱點-如果入侵者獲得了密碼存儲,他就得到了母親的幫助。

  • Con :密碼傳輸的所有部分都可能導致暴露-內部存儲密碼以便於易用的網站,內部服務器組件以明文形式傳輸,COTS產品中的日誌文件以明文形式存儲密碼。由於秘密是傳輸的一部分,因此您的安全性僅與最弱的鏈接一樣強-要花費大量的精力來防止暴露,並且對用戶和系統開發人員都要求。

證書:

  • Pro :不需要傳輸秘密。私鑰證明不包含任何秘密信息-減輕了各種存儲/傳輸薄弱點。

  • Pro :由受信方(CA ),從而可以使用集中式管理系統來管理多個應用程序的狀態。如果證書變壞,則可以將其吊銷。除非使用共享ID,否則必須分別為每個系統修復密碼破解問題。

  • 專業版:不可否認性更強-在大多數密碼系統中,在創建帳戶之前對用戶進行初始身份驗證的方式非常薄弱,密碼重置機制可以提供另一個因素合理的可否認性。通過多種形式的證書發行,用戶很難說不是他們。注意-您仍然僅能滿足CA的簽發政策。

  • 專業版:除了認證之外,還可以實現更多目的-可以提供完整性和機密性

  • Con :仍然需要密碼/ PIN碼-幾乎所有私鑰對存儲機制都將通過PIN解鎖。智能卡可以具有防篡改和鎖定功能,以防止暴力破解,但這不能解決用戶將其PIN寫在插有卡的計算機旁邊的便箋上的事實。有時,使用PKI時,密碼問題會再次以較小的規模出現。在部署和維護中,它只能用於大型/昂貴系統。

  • Con :證書狀態報告和更新並不容易-吊銷由於基礎架構的規模和復雜性,已損壞的用戶憑證繁重。通常,CA生成可能會或可能不會在OCSP服務器中設置的CRL。然後,每個應用程序都應檢查每個登錄名的CRL或OCSP狀態。這在報告PKI憑據被破壞的時間與依賴該憑據的系統實際開始拒絕訪問的時間之間,給系統帶來了各種時間延遲。可以加快狀態更新的速度-但會增加系統複雜性的成本。

其他一些注意事項:

預計證書的生存期較短,並且能夠被撤消,而在管理策略要求更改密碼之前,密碼的生存期會更長...

I不同意這個前提。在我支持密碼和PKI的系統上,密碼更新要求的策略比證書頒發的策略短得多。撤銷是蠕蟲的另一種方式-私鑰洩露的可能性較小。由於私鑰數據沒有通過系統傳輸,因此通常假定暴露於此數據的風險遠低於密碼暴露的風險。出於實用目的,密碼被認為具有較短的壽命。

我也很想知道密碼容易受到哪些攻擊,例如到目前為止提到的是蠻力,而證書卻沒有提及... XSRF呢?

您在這裡混合了蘋果和橙子。蠻力攻擊可能是對兩種身份驗證憑據的可行攻擊-但是XSRF是對基礎類型的應用程序的攻擊,無論身份驗證機制如何,這種攻擊都是可能的。除非您的意思是因為將使用某種文本界面輸入用戶名/密碼,否則它們可能易於在該界面上進行跨站點腳本編寫。

總的來說(很抱歉,我缺乏官方術語-我通常會查找典型的攻擊術語,但我的時間比較短):

  • 蠻力-因為您的平均密碼的密鑰空間小於非對稱密鑰的密鑰空間,密碼更容易被暴力破解。但是,證書上足夠小的密鑰大小也是可以暴力破解的,並且隨著CPU能力的提高,暴力破解攻擊密鑰的能力也隨之增強,從而迫使競爭加劇。

  • 有根據的猜測-使用密碼更容易將密鑰空間縮小到合理的猜測範圍,對於大多數非對稱密鑰算法而言,這並不明顯,儘管RSA算法中的密鑰較弱,所以在某種程度上取決於如何

  • 社會工程學-無論哪種方式都可以實現,儘管使用存儲在硬件中的證書,您不僅需要控制用戶的PIN,還必須控制用戶的PIN。

  • 內部攻擊-從系統內部獲取憑據,然後使用它們來模擬合法用戶-取決於內部攻擊。如果密碼存儲不安全,那麼對於基於密碼的系統,這樣做更為可行。但是,如果您可以控制CA,則可以向自己頒發合法證書,然後取決於訪問的控制方式。

  • 中間的人-取決於-一個人如果密碼在傳輸過程中未通過繞過他的加密機制進行加密,則中間人可以截獲密碼。使用SSL / TLS可以做到這一點。但是,根據PKI的使用方式,中間的人也可以攔截PKI傳輸的某些部分。沒有中間值或時間戳的PKI簽名容易受到中間人的複制攻擊-只要沒有辦法確定消息是及時還是唯一,他就可以重新發送被攔截的消息。

我想它確實對CSRF有影響。由於攻擊者無法在登錄請求中插入自己的憑據,因此似乎可以擊敗CSRF登錄攻擊。
Stephen
2011-05-06 19:15:04 UTC
view on stackexchange narkive permalink
  1. 用戶名和密碼
    • 有關您所知道的一切。您將提供一個密碼字以通過服務進行身份驗證。
    • 這意味著,如果它在流中被攔截,則可以使用它。使用加密使這種可能性很小,但仍然可以實現。有人可以在中間進行操作以獲取密碼或接管獲得身份驗證的計算機。
    • 用戶名和密碼可以隨時在任何計算機上使用。如果安全很重要,那麼這是一件壞事,而可訪問性則很重要。對於銀行來說,這很糟糕。對於Facebook,這確實不重要。
  2. 證書
    • 證書要稍微複雜一些。服務器將數據發送到客戶端,客戶端對數據進行簽名並發回。這意味著服務器在任何時候都不知道私鑰,因此,當中間人或服務器的接管人員導致他們可以訪問時,他們沒有您的密鑰。
    • 證書是一種痛苦使用。您不記得它們,它們可能會被盜。
  3. ol>

    最好的系統是組合。您在密鑰上輸入了密碼,因此您可以進行兩步驗證。您知道的東西(密碼)和您擁有的東西(密鑰)。但是,安全層越多,痛苦就越大。那是所有安全性的巨大折衷。

zedman9991
2011-05-06 19:27:59 UTC
view on stackexchange narkive permalink

我同意斯蒂芬的觀點。您提出了一個很難研究的問題,因為該問題通常不是一個與另一個之間的比較。理解為什麼兩者同時存在且通常不相互評價的一個好方法是專注於用法。證書與機器級別的密鑰庫相關,因此非常適合預先計劃的特定機器之間的機器對機器認證。密碼非常適合人們,因為我們是移動的,並且傾向於以難以預先預測的方式從眾多系統進行身份驗證。因此,證書是預先設計的基於硬件的身份驗證的典型代表,而密碼則適合基於移動濕件的身份驗證。智能卡是向移動人員添加基於證書的身份驗證的好方法,也是流程的另一個因素。

“證書與機器級別的密鑰庫相關,因此非常適合機器之間的機器對機器的身份驗證”,例如,這是我在考慮時就忘記的信息,因此+1 thx!
yfeldblum
2011-05-06 19:46:18 UTC
view on stackexchange narkive permalink

密碼通常可以是暴力破解的,也可以是社交密碼,因為它的所有者必須記住,它通常比秘密密鑰簡單得多。

足夠的強度-對於RSA,2048或4096位)不能強行使用。對需要基於公鑰的身份驗證的系統進行身份驗證的唯一方法是,首先獲取對其他計算機的訪問權,以獲取私鑰。這給攻擊帶來了更高的複雜性。社會工程讓一個人透露自己的密碼無濟於事,因為該密碼只會解密其私鑰,而不是直接授予他對目標系統的訪問權限。進行社會工程設計以使一個人將其私鑰與密碼一起洩露的可能性可能更大。

此外,密碼是通過網絡從用戶的計算機傳輸到用戶希望使用的系統的。私鑰既不以明文形式也不以加密格式通過網絡傳輸;而是只傳輸公鑰。

我警告不要使用短語“不能被強行使用”。
我可能會誤解您的意思,但是社會工程學獲取保護私鑰的密碼不是和獲取特定服務的密碼一樣好嗎?
嘗試同時檢索受密碼保護的私鑰和該密鑰的密碼,通常比簡單地檢索密碼更困難。是的,社交工程在兩種情況下都是很好的攻擊,只有在使用公鑰身份驗證的情況下,實現這一目標才是更大的挑戰。例如,私鑰不容易被記住(並且通常不被記住),更不用說通過電話閱讀了,這需要花費更多的社會工程精力來獲取。
我明白你的意思了。我完全錯過了“ ...首先獲得私鑰”一句。
Martin
2013-11-20 20:13:08 UTC
view on stackexchange narkive permalink

您似乎忘記了網頁可以同時使用證書和密碼,如果有證書的用戶來了,門就會打開;如果他沒有證書,則必須像往常一樣使用名稱和密碼登錄。

通過這種方式,感興趣的用戶可以獲得其證書,所有其他用戶都使用舊方法。

Mat Carlson
2013-11-20 23:07:07 UTC
view on stackexchange narkive permalink

我想添加一個選項-一次性密碼設備。我同意其他人對證書和密碼的優缺點的看法-OTP設備需要一些後端組件才能運行,但我認為可以將它們集成在一起而沒有很多麻煩(Active Directory有點不同,但是其他系統不太難)。

密碼和一次性密碼的組合非常有效。您可以使用更簡單的解決方案,例如帶有密碼(需要USB或NFC連接)的Yubikey或顯示的代碼卡。

兩個選項都易於添加到基於Linux的操作中。如果要在Active Directory中執行此操作,則需要購買軟件來處理代碼並將其安裝在每台AD服務器上。然後,用戶在密碼字段的開頭輸入OTP,然後輸入其通常的密碼。可以為此開發自己的模塊,但是從我所見的角度來看,成本過高。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...