有些公司安裝了網絡監控,訪問外網的數據很可能會被攔截和分析。還有一些像是區域網內的ARP欺騙與中間人攻擊等會攔截你的請求然後記錄下來甚至修改再發給另外一個人。
假如我們有一個非常重要的文件,需要發送給另外一個人,我們肯定要保證兩點,第一是信息不能被篡改,第二是信息不能被其他人竊取。
最簡單的就是通過WINRAR軟體或其它類似的壓縮軟體來設置個密碼了,這種情況加密用的密碼和解密用的密碼是一樣的,稱之為對稱加密。但是考慮一個極端情況,假如你和對方的聊天內容會被全程監聽,你一旦把密碼發給對方,中間人馬上就知道你的密碼了,這時候就要採用非對稱加密才行,這種情況加密用的密碼和解密用的密碼是不一樣的。
我們通過簡單例子演示下如何操作,原理其實是一樣的。
一、對稱加密
我們直接用WINRAR來演示對稱加密。
我們模擬出一個重要文件
右擊這個文件,選擇「添加到壓縮文件...」
設置密碼
可以去中文當密碼,也可以考慮加密文件名
不加密文件名時能看到文件名,後面帶星號
雙擊文件時會提示我們輸入密碼
如果加密文件名,雙擊的時候第一步就要輸入密碼,加密的文件名看不到
WINRAR有暴力破解軟體,有時候加密了文件名反而讓軟體更容易識別出是否暴力破解是否成功。
如果這個RAR文件被修改了,那麼輸入密碼後會報錯。
我隨便修改了下文件,輸入密碼解壓後報錯,說明文件被人篡改了
同樣的,如果我們密碼輸入錯誤也會報上面的錯誤信息。
通過這種方式,我們保證了文件傳輸過程中不會被篡改,而且別人不知道密碼的話也看不到我們的文件內容。
二、非對稱加密
前面的對稱加密我們會很擔心我們的密碼被洩露,一旦洩露密碼,那還是能被中間人解密。中間人甚至可以偽造一個文件用這個密碼加密再傳給接收人,這樣會導致我們連對方是不是本人都很難確定。
這時候非對稱加密出場了,我們用最經典的RSA加密來講解,用到了openssl的Windows版本。
你在網上搜索下openssl for windows就行了,如果你用的Linux或其它系統版本,自己找就行。
因為我是WIN10 64位系統,所以我下載了標紅的版本
然後把軟體默認安裝就行,默認安裝位置為
為了方便使用,我們將該目錄添加到環境變量裡
末尾加個分號,再加上這個路徑即可
WIN+R,輸入CMD,進到命令行,我們cd到測試目錄
生成一個私鑰
通過調用如下命令生成私鑰
openssl genrsa -out private.key 2048
private.key名字隨意,2048是密鑰長度,你也可以填1024,4096之類的,越長越難破解
然後調用如下命令由私鑰提取出公鑰
openssl rsa -in private.key -pubout -out public.key
現在公鑰和私鑰都有了
我們簡單說下這個加解密的辦法。就是私鑰你只能自己保存,千萬不要讓任何人知道,而公鑰你隨便給誰知道都行,它就是公開的,被人竅取也不怕。
文件通過公鑰加密,通過私鑰解密。所以假如你要給張三發個絕密文件讓張三看到,張三首先要通過RSA生成公鑰和私鑰,然後張三將公鑰發給你,你用公鑰把文件加密後發給張三,張三收到加密後的文件用張三自己的私鑰解密就行了。因為張三的私鑰沒有暴露出去,只有公鑰通過網絡發給你了,而公鑰是不怕被竊取的,所以中間的信息交互是安全的。
但是由於openssl.exe這個工具只能加密小的文件內容,沒法加密大文件,那我們怎麼辦?
我們可以用第一步的WINRAR設置一個非常長的密碼(比如wkjfksdfkjlskflwerewrwer3453)加密壓縮後發給張三。然後再寫一個包含了這個密碼(wkjfksdfkjlskflwerewrwer3453)的文件用張三的公鑰加密後一塊發給張三。
下面我們來演示一下公鑰加密和私鑰解密的辦法
一個單獨存放解壓密碼的文件
我們通過調用如下命令對密碼文件進行公鑰加密
openssl rsautl -encrypt -in 絕密文件的解壓密碼.txt -inkey public.key -pubin -out 絕密文件的解壓密碼(加密後).txt
打開文件發現確實加密了,啥也看不出來
我們將壓縮並加密的絕密文件.rar以及絕密文件的解壓密碼(加密後).txt這兩個文件一塊發給張三。
張三拿到這兩個文件後,先對絕密文件的解壓密碼(加密後).txt用自己的私鑰進行解密。
解密用到的命令是
openssl rsautl -decrypt -in 絕密文件的解壓密碼(加密後).txt -inkey private.key -out 絕密文件的解壓密碼(解密後).txt
調用解密命令
成功解密得出壓縮軟體的解壓密碼
得出解壓密碼後再解密絕密文件.rar,至此成功解密文件並閱讀裡面的內容。
因為RSA加解密較慢,所以實際的生活應用中也是文件主體用的是對稱加密,然後把對稱加密的密碼用非對稱加密後和加密後的文件一塊發送,接收方先通過非對稱加密獲得密碼,再最終用對稱加密辦法解密。這樣同時兼顧安全與效率。
上面的兩個例子通過簡單的操作方式來讓大家直觀了解了目前市面上的主流加密思想及加密策略。現實生活中如果真有重要的文件怕被別人截獲可以考慮如上操作。
一般我們上網的時候,如果網址是HTTPS開頭的,這種就可以防止中間人攔截,數據是安全的。我們在QQ或者微信類的軟體聊天時正常來說,傳輸的內容也是加密的,不會被截取到。
HTTPS開頭的是加密傳輸內容,可以防止中間人攔截
中間人攔截還是有辦法避免的,但是如果你的本機電腦中毒了,或者對方電腦中毒了,那這時候信息洩露危險就太大了。所以為了安全操作重要文件,有一臺不能上網的電腦是有必要的。上述方法的私鑰千萬不要洩露出去就行,私鑰長度不要太短。