2016-10-10 29 views
1

我們有一個有趣的問題。我們有客戶想要使用我們基於網絡的應用程序(後端/數據庫與我們)。但是他們想要加密患者信息,因此我們公司中沒有人能夠看到它。會有某種JavaScript解決方案嗎?或者在發送給我們之前以某種方式使用它們的加密?與web請求的javascript加密

回答

-2

那麼有一個問題。你怎麼想在不知道如何發生的情況下實現en /解密? ;)

一些簡化加密基礎理論:(記住,即時通訊也沒有專家這個主題中)

在今天的密碼,我們主要使用2種不同其正在或者symmetric或不對稱加密的(維基百科:Public-key_cryptography),我們正在關注對稱。你不需要知道他們如何實際加密數據,但你需要知道的是它基於給定的密鑰/密碼。它們之間的區別在於對稱加密對於兩者都使用1個密鑰,對於解密和非對稱使用兩種密鑰,但是目前這不需要任何東西。

因此,有許多不同的算法用於以某種方式進行加密,並且只要使用的密鑰足夠強且足夠隨機,以至於即使它的brutefoce將會持續很多次,也知道正在使用哪種算法應該是個問題年份。

根據使用的密鑰,加密數據的輸出將不同,因此密碼爲「bar」的字符串「foo」與使用不同密碼的同一文本(foo)不同。所以在不知道使用哪個密鑰的情況下無法獲得價值。

我從來沒有在JS中使用加密庫,所以我不能推薦你任何,但我確定有很多在那裏可以用於幾行。一個基於對稱加密的非常好的算法是AES,它也有很多實現在那裏準備使用;)

所以現在你只需要在提交表單上添加一個按鈕,要求輸入密碼然後在視圖/任何想要使用密碼解密數據的頁面上顯示一個按鈕。發送時,可以將加密的數據值發送到其未加密的數據密鑰(而非加密密鑰!)旁邊,以便知道哪個值是什麼。

這裏是一個網站,你可以看到它的行動。注意加密值與密碼的小改動完全不同。你也可以在那裏找到一些代碼。 http://www.movable-type.co.uk/scripts/aes.html

我希望你能理解它,它不太雜亂。我的英文不是很好,所以請原諒我糟糕語法X)

+0

感謝您的幫助。仍然有點困惑,但也不是頂級的加密明星。這是確切的情況。我們有一個Web應用程序(前端/後端)。他們想要使用這個應用程序,但是當他們填寫病人表格併發送給我們時,我們會收到加密的患者信息。然後,我們將保存發送加密的表單值。當他們要求病人(例如進行編輯等)時,它必須被解密。前端屬於我們,但我們不應該知道如何進行加密/解密。如果你有時間,你可以請一個詳細的想法。 – Benno

+0

我更新了我的帖子,提供了更多信息。請記住,Jacco主要是在談論你應該注意的連接本身的安全性!在我的文章中,你會發現許多可能的方法之一,以實際處理你的客戶想要的。 – KoalaGangsta

+0

你的解釋很完美。我知道了!!非常感謝你,我正在尋找什麼! – Benno

5

可以(雖然在安全社區,這是不被視爲一個可行的解決方案12)發送一個javascript加密庫他們,但它不會解決問題。

注意:我會在這個答案中假設你的連接使用SSL/TLS,因爲沒有它,你不能安全地與客戶進行通信。

問題是客戶需要信任你。他們將從您的服務器下載JavaScript代碼。所以,服務器的所有者將是總是能夠改變javascript的行爲。這是因爲,即使您向客戶端發送了一個完全有效且經過審覈的完全javascript加密庫,客戶端也無法驗證此情況。唯一的保證是他們從主機獲得了一些東西,他們的他們的根據SSL/TLS證書選擇信任。

通常情況下,人們開始提出惡意的中間人情景。但是,這種擔憂是情緒:您的連接是否由SSL/TLS妥善保護,否則不是。如果一箇中間人的情況是可能的,那麼客戶端從服務器上下載的javascript加密庫也是可疑的。換句話說,如果SSL/TLS層會以某種方式被破壞,那麼客戶端加密也應該被認爲是被破壞的。

如果他們信任足夠的主機,相信他們不會篡改javascript並確實在客戶端執行所有加密,那麼他們可能會相信您不會在服務器端濫用其數據。這留下了很多(不需要的)複雜性。較低的複雜性導致更簡潔的設置,更易於審計。


免責聲明:如果您使用的醫療數據進行工作,有可能是很需要遵守(取決於您所在的國家/國家)的一些規律。如果您對這個級別的問題不滿意,您應該聘請一些專家,或者接受這個請求比您可以輕鬆構建的要複雜得多,並且請告知您的客戶,他們會更好地找到一家擁有更多經驗的公司在操作敏感數據。

+1

完全同意這個答案,寫得很好。 +1 –