加密傳輸需要整個檔案加密完全才可以上傳嗎?

時間 2021-06-04 22:49:53

1樓:車小胖

假設題主使用TLS來安全保護檔案的傳輸。

對於TLS來說,通常使用AES-128、AES-256來進行加密。這些加密演算法字尾的128、256表示金鑰的長度,及128個二進位制位、或256個二進位制位長的金鑰。

AES-128演算法

由於加密演算法的需要,金鑰長度為128位(16位元組),意味著只能加密128二進位制位的使用者資料,不能多一位,也不能少一位。

如果使用者資料少於128位,需要使用「0」來補足到128位,然後加密操作。

如果使用者資料多於128位,需要按序砍成128位為乙個個單元的資料塊,1、2、3、…N,然後分別做加密操作,分別得到E(1)、E(2)、E(3)。。。E(N)。

如果砍到最後還有剩餘,繼續補足為128位,假設為資料單元N+1,也做同樣的加密操作,得到密文E(N+1)

然後把加密資料單元E(1)、E(2)、E(3)。。。E(N)、E(N+1),按序堆放到TLS小汽車上。

TLS小汽車一次最多能拉多少加密資料單元,取決於底層IP網路的端到端MTU!

假設TLS小汽車每次最多能拉節的資料,那麼可以容納加密資料單元的個數:

加密資料單元的個數 = 1376 /16 = 86

86個加密資料單元擠在TLS小汽車愉快地上路了。。。

問題來了,這86個加密資料單元是使用Session Key加密的嗎?

是的。但是Session Key 不能直接加密資料,需要先隨機化,生成一次性金鑰才能加密資料單元。

如何將SessionKey隨機化成一次性金鑰?

使用初始化向量IV(Initial Vector),也可稱為種子,與Session Key 做按位異或操作,即可得到第乙個一次性加密金鑰。

然後用它來加密第乙個資料單元,得到第乙個加密資料單元。

第乙個加密資料單元,又做為種子,與Session Key 做按位異或操作,即可得到第二個一次性加密金鑰。

然後用它來加密第二個資料單元,得到第二個加密資料單元。

以此類推。。。

一次性加密金鑰,可以使得破解密文的難度大大提公升!

通常初始化向量IV以明文方式擠在TLS小汽車的首部,接收方可以以相同的方式得到一次性解密金鑰,並一一解密86個加密資料單元。

對於TLS來說,幾個G的電影檔案,其實就是一長串二進位製流,按照128位為乙個單元,沒幾下就砍完了。

總結一下

一輛TLS小汽車使用乙個IV種子

IV種子明文傳輸

IV需要盡可能隨機化

IV的完整性通過HMAC來保證

Session Key在TLS連線建立時,雙方動態協商

HMAC Key 在TLS連線建立時,雙方動態協商

IV由雙方動態協商出的Master Key,按照公式可以計算出,保證隨機化

2樓:yylluu

先說點題外話: 其實對於電影這樣的資源, 網盤公司的想法是: 我只存乙個備份就夠了, 如果有使用者要上傳這部電影, 直接在他目錄下放個標記來指向該電影的唯一備份就好了.

而且它說到做到, 絕不食言! 而這也正是網盤公司的乙個重要盈利模式. 具體怎麼做, 伺服器先向客戶要這個檔案的摘要, 如果這個摘要等於乙個伺服器已知檔案的摘要, 伺服器把客戶和這個已知檔案連線起來即可, 客戶不需要加密檔案也不需要上傳檔案.

如果真的很不幸, 某個大檔案在雲盤伺服器沒有備份, 那它必須要上傳該檔案. 如果底層的通訊通道是安全通道, 比如SSL. 那麼這時使用者就需要服從SSL協議, 使用分組密碼 (block cipher)加密上傳.

SSL是一種建立安全通道的協議. 至於什麼是安全通道? 有時間再補充.

如果沒記錯, SSL採用分組密碼演算法 (AES加密的CBC模式). 使用分組密碼時, 會把大檔案分成很多大小等於金鑰長度的資料塊, 對每個資料塊(典型的大小是128bit)分別依次加密, 再依次傳輸每個資料塊的密文. 所以在加密後面的資料塊時, 可以同時上傳前面已經加密過的資料塊, 況且加密是消耗CPU的操作, 上傳是消耗網路io的操作.

閒話題一下, CBC模式有個額外的要求: 加密時要按照塊的順序依次加密, 解密時也要按順序依次解密. 因此, 為了兼顧網際網路這個分組交換網路中封包可能的亂序 (畢竟誰也不想苦哈哈的為了乙個丟掉的資料報而讓整個解密前功盡棄), 所以具體實現中會並不是對整個檔案採用CBC模式加密, 而是只對乙個網路封包內的資料塊進行CBC模式加密.

有時間我再補充什麼是分組密碼? 什麼是分組密碼的各種模式? 為什麼使用這種CBC這種模式?

總之, 這裡使用的是一種加解密速度都很快的對稱加密演算法.

至於AES加密到底有多快, 會不會很費時. 只能說, 是非常非常快的. 加密的延遲遠遠小於網路I/O的延遲和讀取硬碟的I/O延遲.

比如, 在主流PC上, 使用AES在10s內加密幾個G的資料是沒問題的 (不考慮讀硬時間, 資料都在記憶體). 相比於讀盤和上傳, 加密的那一點點時間幾乎是無感的存在.

加密手機真的需要加密晶元嗎?

瓦戈科技 加密晶元可以提高加解密的速度,這樣使用者感覺比軟體更快一些。另外加密晶元針對密碼演算法進行定製的設計比用CPU執行密碼演算法也更省電,提高手機的待機時長。 陳心 從資訊保安的角度來看,個人認為還是很有必要加上一款優質的加密晶元的。相信在過去的時間裡,樓主也聽過不少手機被盜導致各種私人資訊被...

引力傳輸需要介質嗎

已登出 引力是依靠引力子來傳遞的,引力子有900種型號,縱波,長波,絕非橫波,運動軌跡為弧線形,有圓,橢圓,長橢圓 類似慧星的軌跡 可能還有渦狀形,有不同的曲率,運動速度都是一樣的。有回歸運動,以引力質量中心為回歸軸心,形成類似同心圓的引力場形式。另外還有反引力子,運動軌跡為直線。引力子,反引力子的...

如果乙個資料傳輸過程是加密的,能否確保該過程的完整性?

邵慢慢 針對你的問題,如果乙個資料傳輸過程僅僅是使用加密演算法做了變換,那麼這個資料的完整性是不能保證的。舉個例子,假設加密演算法Y F X 100 同時明文X 5,經過變換後,就變成密文105。Alice 傳送者 將這個密文交給Bob 接受者 的時候,假設有乙個攻擊者在傳遞渠道上將105改為115...