ManManger
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Topic : File Management Software Programming Project
Project Name : ManManager
Introduction
從『勒索軟體』來的一個發想,如果說『勒索軟體』的本質其實是『加密軟體』。
那針對需要的話,能將資料加密儲存防止被偷竊或者防止被『勒索軟體』加密(PS.勒索軟體會針對已知的副檔名加密。),並分散切個的儲存。
並且能將其服務化,成為離線、線上都能使用的一套檔案管理裝置。
擴大功能用還能做到『自動備份』、『檔案管理』、『分類標籤』、『重副檔案管理』、『自動分類』等。
Methods
- 加密資料:利用加密來達到防止被竊取或偷看。
- 資料分割:將其分割後能做無法移動單一檔案。
- 資料管理:能管理這些加密後的資料,有能力做即時檔案名稱預覽(必須要有解密文件)。
- 伺服器化:將提供不同介面與連往取得功能。
Develop OverView
- Langange : Golange
- Software Architecture : microservice
- Data exchange:
- Server :
- TLS 1.3
- Diffie–Hellman key exchange
- Header Add
- HSTS Preload List
- OAuth 2.0
- JWT(one time password)
- Use cipher
- AES128
- AES192
- AES256
- CTR
- Generat VI
- Use Hash
- SHA2_512
- SHA2_256
- HMAC_512
設計架構
設計理念:
為何要將檔案分成兩大部分(Pageman 與 Dataman)。
- 可以看到檔案目錄,同時減少一次過多檔案的解碼問題。
- 方便擴充資料。
- 檔案的部分能隨意切割管理。
- 防止當目錄被人知道卻也無法得到檔案。
- 可以減少專門解開檔案的 Key 頻繁傳送。
結論就是『為了方便管理檔案。』
File Pageman
再將檔案名稱加密與登入機制分開。
File Name part:
設計理念:
File Page 可擴充其他資訊(如:圖片、擁有者等等的。)
可以增加"資料夾結構"的資訊。
檔案統一由 FileLink 來連結。
設計理念:
利用 PrivateKey 來加密 PageFile 的檔案。
檔案名字的部分由"ServerKey"(由伺服器的安全 Key,以認證伺服器)與 UseID 合成。
然後對 Hash 的檔案在使用 Key 雜湊訊息鑑別碼生成出不可逆的檔名。
解開時可以再次驗證檔案完整性,以防止串改。
File Page Key part:
設計理念:
系統的密碼與使用ID跟自己的密碼與帳號毫無相關。
可以達到無法得知此ID跟人的關連性。
而且內部使用的PrivateKey(256bit)與UseID(256bit以上)長度與混亂度安全性才夠高。
而且密碼可直接Hash完之後傳過來。
附帶的PageKeyFile也保證了其長度安全性。
而且這樣也能使『改密碼』、『改PageKeyFile』、『改ID』變得可行且快速。
三大保護機制:
- 密碼可直接Hash傳至Serevr。
- Server所使用的密碼與ID都是系統生成的,使用者也拿不到,長度也很安心。
- 三樣資料缺一不可(ID、密碼、文件)。
File Dataman
資料加密解密可是精華的部分了。
分為『資料加密』、『資料切割』、『資料連結加密』。
但必須先將前置作業完成。
前置作業
必須準備:
- Data (廢話……)
- UesID (必須由Pageman提供。)
- LinkKey (必須由Pageman與Server提供。)
- LinkCode (如果沒有提供則為"0000"主要是為了個別檔案的提取碼。)
- HFileDataKey (必須由Pageman跟Client提供。)
Link Key 製作方式:
目的是為了確保『使用者』與『檔案目標(Page必須要跟Data有連結性)』。
HFileDataKey 製作方式:
目的除的跟檔案確保之外,每個檔案的密碼都會不同。
議題:
- 如果同檔名同使用者不同資料會怎樣?
- 如果同檔名同使用者同資料會怎樣?
Data Split part
Data Pack Link part
目的:
每個檔案的名字都是連結,而連結的方式都長在了File Link內部。
而第一筆的File Link會回傳給File Page作為檔案第一個Pack的連結入口。
而解開第一個Pack後才可得到下一個PackLink。
FileLink 製作方式:
PS. 第一筆的FileLink 製作方式:
PS. 最後一筆不需要FileLink 因此不會超過Pack的數量。
議題: 為何第一筆需要?且特別製作?
答:為了將File Data的驗證Hash藏在第一筆資料中。
PackKey 製作方式:
PS. 第一筆的PackKey 製作方式:
PS. 第二筆的PackKey 製作方式:
議題: 為何要設定成上兩筆?
答:
當惡意者隨機取得一個包,然後就真的被他解開了。
這時雖然知道了下一筆的位子,但要解開這個包需要上一筆的Hash的資料。
因此無法往下解。
安全相關
Contributors