2013-01-11 45 views
6

易隱私以前安全存儲和傳輸 機密信息需要安裝專用的 軟件。新的Mega在您的瀏覽器中實時加密和解密您的數據,透明地 。你持有鑰匙,你存儲在 雲,而不是我們。如何在Web瀏覽器中實現客戶端的de/encrypt文件傳輸?

此報價取自新的MegaUpload文件託管服務的website,該服務預計將於本月19日推出。

當然,作爲一名網絡開發人員,我對背後的技術感興趣並對此感到好奇。

所有我能找到的截圖和聲明,使它看起來真實,數據是真的永不離開客戶端未加密!

使用AES保護文件和傳輸。

每個客戶端都會得到一個非對稱密鑰對,我只能猜出原因,但我認爲它會被用來加密AES初始化向量和其他客戶端的密鑰,以便與其共享文件。

但我的問題是這樣的:

如何從技術上能夠攔截文件上傳/下載?

我知道在RSA和AES中都有加密算法,它們運行在JavaScript中,效率非常高。

但似乎有支持在文件系統內操作的唯一瀏覽器是chrome。

數據如何從硬盤傳輸到客戶端瀏覽器進行加密?它是如何從硬盤驅動器上獲取文件的?

我不知道這樣的文件系統API的東西。即使html5只支持某種對象存儲。

我猜它對於某些瀏覽器插件或者maby java或adobe air applet來說非常微不足道,但他們聲稱不會有需要安裝第三方軟件的東西。

還有別的辦法嗎?

+0

「攔截文件上傳/下載在技術上如何?」你是指攻擊者還是一般人?如果一般情況下,比我想象他們利用html5文件API來讀取文件夾,使用ajax或其他方式加密它們並通過互聯網發送。與下載相同的情況。幾乎可以肯定,這不是通過使用POST或下載來搞亂文件上傳來完成的,因爲這不可能AFAIK。順便提一個有趣的問題 - 這是我第一次聽說新的Megaupload。 – WTK

+0

可能加密的文件不會使用瀏覽器上傳,而是像Dropbox,Skydrive等操作系統應用程序... –

+0

我根本不知道Mega API,但我沒有看到這與文件系統有什麼關係。我猜測上傳過程是這樣的:1.使用''元素將文件加載到瀏覽器中,2.讀取該文件並使用[JS加密庫](https:/ /www.google.com/search?q=javascript+crypto+library),3.發送加密值以存儲在服務器上。要從服務器獲取文件,請使用Ajax獲取文件,對其進行解密,然後讓瀏覽器將其保存爲文件(或者可能只是在瀏覽器中將其顯示給用戶)。 – apsillers

回答

6

攔截文件上傳/下載在技術上有可能如何?

你不要攔截它。用戶使用<input type="file">元素選取文件(或多個文件),然後JavaScript讀取文件輸入的值並對其進行加密。上傳可能會通過Ajax完成。

但是唯一支持在文件系統中運行的瀏覽器是chrome。

Chrome是第一個實施filesystem API,與file API不同。文件系統API管理一個沙盒文件系統(不是用戶的真正的操作系統文件系統);該文件API從<input type="file">元素中讀取文件。在大多數現代瀏覽器中,文件API有much broader support(但不完美支持)。

對於加密和上傳,JavaScript可以讀取用戶使用文件輸入特定選擇的文件,並通過Ajax將加密值發送到服務器。對於下載,瀏覽器可以對資源執行Ajax提取,對其進行解密,並提示用戶保存文件(例如,通過重定向到data: URI)。不需要編程訪問文件系統。

+0

數據uri方案也出現在我的腦海裏,但是我認爲它與大文件相關的問題,比如幾個兆字節?你不是這樣嗎?把一切都記憶在腦海中也會變得醜陋。當然理論上它可以工作,但我認爲在實際情況下需要一些與大塊一起工作的動態流解決方案...我不確定這是可能的文件api/data uri –

+0

好吧,它似乎確實有可能通過選擇文件尋找!非常好!現在應該解決上傳問題。但如何下載biiiig文件? –

+0

並再一次,答案似乎是文件API,它提供了適當的寫功能:)謝謝! +1 –

相關問題