2010-01-20 69 views
3

編輯/澄清:我的意思是密碼生成,如「確定性生成供自己使用的密碼(如註冊爲Web服務)的基礎上,一些祕密的,對一些特定的網站數據」非常簡單的密碼生成方案;這是安全的嗎?

我走我的主密碼和一個(非祕密)特定於站點的字符串連接的MD5摘要。然後我採取十六進制表示的前16位數字。

這樣一個簡單的方案的優點是:

  • 可用任何地方MD5可用
  • 不必相信一個Firefox擴展或任何爲您
生成密碼

這有沒有隱藏的漏洞?很明顯,如果主人受到損害,我倒黴。

(附註:使用十六進制數字當然是每個字符最理想的熵,但是如果密碼是更長的時間來彌補這一點誰在乎)

#!/bin/bash 

master=myMasterPassword 
echo "$master$1" | md5sum | head -c16 
+1

更好地使用sha256比md5。一些問題(選定的碰撞,IIRC)已經在MD5中得到證明。 sha1在一艘類似的船上。 – atk 2010-01-21 12:20:21

回答

0

腳本本身就是一個漏洞,因爲它有您的主密碼以明文形式存在 - 最好在腳本中存儲「特定於站點的字符串」,並始終將密碼作爲用戶輸入,同時使用一些提示密碼程序,而不是命令參數來讀取輸入 - 命令行將被存儲到.bash_history

此外,請注意16個字符的MD5只有64位的熵 - fo例如uuencode可以提供更強大的16個字符的密碼。

+0

該腳本包含主密碼;特定於站點的字符串是$ 1參數。例如,爲了爲Google生成我的密碼,我會調用'make-password google'。 要求使用主密碼作爲用戶輸入,會帶來一點額外的安全性(針對有權訪問本地文件系統的人),但這是以方便爲代價的。 該腳本當然應該有700個權限。 – FunctorSalad 2010-01-20 10:43:13

+0

就我個人而言,我「手工」生成密碼,將它們存儲在GPG加密文件中,並使用我的「主密碼」保護私鑰。我在'.vimrc'中也有魔法來透明地進行加密/解密。 – Kimvais 2010-01-20 10:47:41

1

你在捍衛誰? 妥協的影響是什麼? 你如何捍衛你的masterPassword,特別是如果它輸入到這個腳本。

如果您使用的機器已經過配套或檢查,則預計您的所有密碼都將被暴露。通過命令行歷史記錄,您的bash腳本,將內存分頁到磁盤。更糟糕的是你談論可移植性,所以你會在許多機器上使用它,其中一些機器是不可信的。如果有人在你之後使用這臺機器並抓住你正在做的事情,他們不僅會得到你在這臺機器上使用過的密碼,而且還會獲得你所生成的所有密碼。

這個的另一個限制是對密碼組成有規定的網站。 Mixxed上限和下限案件信件,要求使用您的MD5針對該特定網站沒有的puncuation,最小數字或字母。另外一些網站有最大密碼長度,我的銀行網站的最大密碼長度爲8,只使用了16個可用的文字記錄器,大大減少了可用的密碼數量。

對於低安全性的網站,妥協的效果並不差,這對我來說似乎很好。我不會相信這是爲了訪問我的銀行網站或訪問我的工作網站。我關心的事情。

我相信它爲我的Slashdot的,臉譜,Flickr的,等密碼

我使用的解決方案是Password safe這是建議people I trust我身邊我的電子郵件密碼數據庫和每一個我用的機器上安裝客戶端。

人們一直在想如何保護密碼和密碼安全是一個解決方案。

+0

對不起,我對這些攻擊很模糊。我假設腳本文件本身是安全的。我主要考慮到這個問題「給定了一些已知的站點特定字符串生成的密碼,推導出一個新的站點特定字符串的生成密碼」。 – FunctorSalad 2010-01-20 10:51:36

+0

好處是,在不留下痕跡的情況下在不可信的機器上調用MD5可能會很困難。 – FunctorSalad 2010-01-20 11:00:42

+0

快速瀏覽看起來人們相信MD%可以被解碼 報價:注意:如果你想讓你的MD5摘要與其他人不同, 然後取消註釋並調整Digest 子例程中的「安全特性」。 如果你想得到一個不可解碼的摘要 安全目的,這很有用。如果可能的原件的*組* 小並且已知 (例如,IP數字的後兩位數字),則可以解碼標準MD5。 .equi4.com/md5/ – 2010-01-20 11:27:10

-2

那麼,你的算法依賴於一個祕密 - 也就是你的主密碼,所以爲什麼不把祕密的短語'我的DOB附加到它的網站名稱'。就像安全一樣,不需要將算法存儲在除頭部之外的任何地方。只要你不把密碼寫在任何地方,它不太可能有人會猜測你的'祕密'

+0

在某些情況下這可能是不安全的。比方說,你有一箇中間人攻擊,他們嗅你的密碼。如果他們看到: stackoverflow290889 facebook290889 然後,他們可以爲幾乎所有的服務猜出你的密碼,您可以使用: gmail290898 workemail290898 等... – 2010-01-20 10:50:57

+1

首先你DOB不分泌,其次,如果一個壞的系統管理員沒有加密用戶密碼的網站注意到了這一點,他們可以推斷algorythim並嘗試使用相同用戶名和DOB的其他網站。海報algorythim並不意味着您使用該算法的每個網站的信任。 – 2010-01-20 10:53:07

2

已經有系統使用它,如SuperGenPass。一般來說,假設你的散列函數可以抵禦原像攻擊(爲此目的,我建議使用其他而不是MD5),你可能沒問題。

然而,有這樣一個更好的構造:HMAC。它由常規的散列函數構造而成,但證明了其對各種攻擊的安全性,即使是有限的原像攻擊。 RFC中還有一部分明確地論述了使用截斷的HMAC。

相關問題