2012-09-19 154 views
0

如果這個問題在這個網站上沒有任何關係,我真的很抱歉,但我想這裏有很多偉大的思想。 在不久的將來,我將創建一個程序,讓用戶擁有自己的賬戶,所以我開始考慮安全問題,這就是爲什麼我必須問,因爲我想到了幾個方面,而我非常關心。安全登錄系統背後的邏輯是什麼?

  • 很顯然,我不應該明文密碼存儲在我的數據庫,用戶將從對它進行加密,發送給他們的信息的程序,難道是我這個存儲的加密密碼,或應在服務器再次對其進行加密並保存一個呢?或者其他解決方案。

  • 驗證時,我應該簡單地比較一下存儲的加密密碼還是應該進行一些解密?

這幾乎涵蓋了我關於如何處理密碼的想法,但是我對黑客潛在問題存在問題。

  • 一個人是否有可能攔截世界上發生的任何流量,或只有本地網絡?

  • 比方說,黑客得到所有發送到服務器的包,密碼被加密,所以他無法獲得明文密碼,但是不可能重新發送包,從而無法重新發送包欺騙服務器登錄黑客?

如果回答最後一個問題是肯定的,在我心裏沒有保持安全的事情,不管你因爲數據仍然是有用的有多好它加密的方式。

有人知道事情是如何工作的?也許擔任安全管理員(或類似職務),可以告訴他們在公司中如何做(當然不會泄露敏感信息!)?我不要求加密方法,但要求保護事物免受未經授權的人的保護。

*編輯* 我實際上發現如何處理和存儲密碼,所以這不再是一個問題。儘管如此,我仍然對重新發送軟件包感到好奇。

+0

一個提示;不要試圖想出自己的安全系統,有相當多的人嘗試過失敗了。使用已知具有_已知優勢/弱點的實現存在的東西。 –

+0

是的,我沒有想到一種全新的革命性方法,但我實際上找不到「這是如何使您的系統安全」 - 教程。必須有一個標準來說明如何處理,存儲密碼以及如何檢索密碼,這是我的問題的前半部分。關於黑客的第二部分只是因爲我對某人仍然可以通過監控網絡而感到好奇。 – XistenZ

+0

@XistenZ你用什麼來處理和存儲密碼? – Woot4Moo

回答

2

我將逐步闡述您的每一點,併爲您應該做的事提供基準,然後提供「更安全」的做事方式。

很顯然,我不應該明文密碼存儲在我的數據庫中, 程序,用戶將發送其信息將加密 它,它是我這個存儲的加密密碼,或應在服務器 加密它再次存儲,而不是?或者其他解決方案。

你永遠不應該在數據庫中存儲加密密碼,使用散列。
因此,這樣做的基準方式是對用戶密碼使用MD5散列。做這種散列的更安全的方法是使用SHA-2等加密散列。我們不存儲加密密碼的原因是您可以反轉加密,但不能反轉散列。你只能找到一個碰撞。現在我說MD5的事實會在這個和安全社區中引起很多的懷疑。 MD5並不像許多人想象的那麼糟糕,但它遠沒有SHA-2那麼安全。 使用鹽

驗證時,我應該簡單地比較加密的密碼,我 得到了與存儲或應該有一些解密回事的人嗎?

參照上述。

「一個人是否有可能攔截世界上或僅在本地網絡上發生的任何流量?」

兩者。如果我在您的網絡上,無論它的位置如何,我都在本地網絡上。如果您以不安全的方式廣播您的數據,我絕對可以攔截它。

比方說,一個黑客獲取beeing發送到 服務器的所有包的保持,該密碼是加密的,所以沒有辦法,他可以得到 明文密碼,但不會是有可能重發包 ,從而誘騙服務器登錄黑客?

我相信你的意思是數據包。密碼被加密並不妨礙我獲得明文密碼。它只會減慢我的速度,因爲如果我攔截了正確的數據包,我可以脫機密碼。衆所周知,重播攻擊不會讓系統「被欺騙」進入其他人登錄。但是,一旦我檢索到明文密碼,我只需使用與其關聯的用戶名並登錄。現在這並不是說像SQL注入這樣的事情不會讓我規避抓包的需要。因此,除非您正在執行客戶端加密(請jeebus不這樣做),並且不能唯一標識進入系統的請求,否則重播攻擊無法正常工作。所以想象我是攻擊者A,我攔截了一個加密的密碼。我可以工作一些魔法並進入系統。現在,如果我們更進一步並應用隨機生成的值來唯一標識原始數據包,我們可以確定它與預期輸入不匹配。本質上來說,加密本身並不能拯救你。

+0

謝謝!請問爲什麼「重播攻擊」不起作用?如果「合法用戶」發送允許他們登錄的數據包,爲什麼「黑客」不能使用相同的? – XistenZ

+0

@XistenZ更新了答案,以包含更多信息。 – Woot4Moo

+0

如果我理解正確,數據包攜帶一個標識符(應該是唯一的),防止再次使用相同的數據包?如果是這樣,是不是可能攔截並改變這個標識符? 此外,我留下了加密的想法,如果這使你的答案有任何不同。 – XistenZ

相關問題