- 實驗目的
- 設計安全的資訊傳輸工具,解決網絡傳輸涉密檔案過程中的安全性問題。安全的資訊傳輸,涉及多個密碼學知識點,在實驗設計過程中,不斷加深了解密碼學基本概念和算法基礎原理,并且能夠鍛煉學生獨立的代碼編寫能力和知識的綜合運用能力。
- 實驗環境
- Windows
- 實驗要求
- 采用對稱與非對稱混合加密方法,每進行一次通信,更改一次會話密鑰(用于資訊加密的對稱密鑰)。
- 能夠實作對任意類型的檔案進行安全傳輸。
- 可采用适當的開發語言和開發工具。
- 軟體使用者界面友好,提示資訊完整,操作舒适。
- 送出實驗報告、包括分析和設計文檔及代碼清單。
- 平台不限。linux/windows/android
- 實驗内容
- 總體設計
1.1開發環境
Python2.7
IDE:Pycharm2016.3.2
1.2程式架構
- 詳細設計
2.1 Md5生成資訊摘要
通過Crypto庫裡的md5算法
調用該函數的部分
解密調用部分
2.2 RSA進行數字簽名
利用M2Crypto裡的RSA子產品進行RSA私鑰加密,實作數字簽名
對應RSA公鑰解密
調用該函數的部分
對應解密調用部分
2.3 AES進行檔案加解密
利用Crypto裡的AES子產品進行加密
對應AES解密
調用該函數的部分
對檔案進行加密時
對應解密部分
對數字簽名進行加密時
對應解密部分
2.4 RSA進行AES密鑰加解密
利用M2Crypto的RSA子產品進行RSA公鑰加密
對應解密部分
調用該函數的部分
對應解密部分
2.5 C/S的Socket傳輸
這裡利用用戶端和伺服器模式來進行傳輸加密後的檔案,以主動發送檔案的Alice作為用戶端,接收檔案的Bob作為伺服器,實際開發中隻需再多一個反過來的程序即可實作雙向檔案安全傳輸,這裡隻做單向開發。
Bob服務端
啟動一個端口(9999)監聽
并循環等待,接收檔案
Alice用戶端
連接配接所需的伺服器IP及端口
傳輸檔案的函數
- 程式展示
該程式分為Alice和Bob傳輸對象,其中Alice作為client端,Bob作為Server端。
此為Alice下的計算機
此為Bob下的計算機
Bob先開啟伺服器端口
Alice進行檔案傳輸
注:紅色框為所需輸入檔案名
同時可以看到,Bob接收到Alice發的檔案
可以看到Bob這邊自動接收檔案并進行解密,及完整性檢驗
可以看到,其中對解密檔案摘要和數字簽名得到的摘要進行對比檢驗
打開file_decrypted
與message.txt一緻
證明檔案安全傳輸成功
- 實驗總結
通過完整地設計一個檔案安全傳輸,對對稱加密算法、非對稱加密算法、資訊摘要算法的各優缺點更加了解,并綜合地利用這幾個部分算法進行應用,得到了很好的程式設計能力和設計能力的鍛煉。其中,設計該檔案安全傳輸系統中,考慮到如下安全性的設計:
保密性:Alice對檔案内容、數字簽名進行AES加密,對AES加密初始變量iv、AES密鑰進行RSA加密。
完整性:數字簽名解密後的摘要與解密檔案的摘要進行驗證。
不可否認性:數字簽名時用Alice私鑰對原檔案摘要進行簽名,在用Bob公鑰對AES密鑰加密前先用Alice私鑰對AES密鑰進行一次加密。