簡介:
eCryptfs - Enterprise Cryptographic Filesystem
可翻譯為企業級檔案加密系統
eCryptfs具有高級密匙管理和政策的特徵。它將加密元數據存儲在每一份被操作的檔案頭中,從而實現檔案在不同主機之間的傳輸。
操作指南:
1.使用環境: ubuntu系統或類似依賴DEB的linux系統
2.安裝指令:
sudo apt-get install ecryptfs-utils
3.軟體最大特點是:用戶對加密資料夾的操作是無縫的,就像操作正常的資料夾一樣。
其它的,比如加密級別高——即使硬碟被盜,也不會泄密。和系統整合性高,基於核心級,整體安全性高於普通軟體。
可以在其他檔案格式中使用,如ntfs、fat32、ext4……可以方便的放置到移動設備中。
操作示例
1,新建一個測試資料夾:ecryptfs_test
使用這個資料夾存放加密檔案
命令:
sudo mount -t ecryptfs ecryptfs_test ecryptfs_test
mount 是掛載命令。-t 是指定檔案類型。ecryptfs 就是我們使用的加密檔案類型。
這裡換一個命令說明一下sudo mount -t ecryptfs real_path ecryptfs_mounted_path
real_path 是真實存放數據的地方;ecryptfs_mounted_path 是指你要把資料夾掛載於哪裡(具體位置可以隨意)
IBM 推薦:ecryptfs_mounted_path 和 真實目錄 real_path 一致,這樣非授權用戶不能通過原路徑訪問加密檔案。
這裡說一下掛載:很多人不理解
所謂掛載,可以理解為超級連結。比如說有兩個資料夾 a,b。a中有檔案isa,b中有檔案isb。
現在我們要把a掛載於b上,命令:mount a b
此時b已經變成了a 的連結。所有對b的訪問實際上都指向了a。
比如我們打開b資料夾,看到的檔案只有isa。而打開a資料夾,檔案還是isa
我們在b中存放一個新檔案 isnew。
好了我們卸載這個掛載(取消這個超連結),命令:umount b
現在查看a資料夾,裡面有檔案isa isnew
查看b資料夾,裡面只有isb
為使么說是超級連結呢,因為有個選項(其它選項我還不會) -t
它的意思是指定 資料夾類型(檔案系統類型)。檔案系統類型有很多,比如我們使用的ext4、ext3、fat32、ntfs……還有特殊的檔案系統,比如 tmpfs(用記憶體 存檔案)、ecryptfs(檔案加密格式)……
2,mount 需要root許可權,我們使用 命令sudo ,來以root身份運行命令
結果如下:
passphrase:
(這是要你輸入密碼,自己編一個。一定要記住。另外密碼是不會有任何顯示的,輸完回車就行)
select cipher:
(選擇加密方式,不選默認是[aes]。最好記住自己的選擇)
select key bytes:
(選擇加密位數,不選默認是[16]。最好記住自己的選擇)
enable plaintext passthrough(y/n) [n]:
(是否允許使用明文,默認是 n)
enable filename encryption (y/n) [n]:
(是否把檔案名稱也進行加密,默認是 n。如果選擇y,那么在沒有解密 的情況下是無法看見資料夾內部的檔案的)
如果設定的密碼是第一次使用,它會提示你密碼被標識為[799d2f922c0f1f26] 。當然,你的密碼標識肯定不會是這個。並且告訴你掛載錯誤,因為/root/.ecryptfs/sig-cache.txt中沒有相關記錄。開始讓你選擇:
Would you like to proceed with the mount (yes/no)? :
(你是否希望繼續進行掛載。我們輸入yes,來完成加密)
Would you like to append sig [799d2f922c0f1f26] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)?:
(你是否把密碼標識加到/root/.ecryptfs/sig-cache.txt中,免得下次再報警。我們輸入yes)
3,好了,現在正常操作ecryptfs_test資料夾。
放一些檔案來測試。
4,關閉解密
命令:
sudo umount -t ecryptfs ecryptfs_test
(如果使用的是sudo mount -t ecryptfs real_path ecryptfs_mounted_path
那么對應的命令是sudo umount -t ecryptfs ecryptfs_mounted_path)
這命令是把掛載取消了。這裡的作用相當於把解密取消了,畢竟把重要檔案長時間解密放著不好。
好了,再看看ecryptfs_test資料夾,裡面的檔案是不是都無法正確打開了?
需要解密資料夾時還是用命令:
sudo mount -t ecryptfs ecryptfs_test ecryptfs_test
(格式還是不變:sudo mount -t ecryptfs real_path ecryptfs_mounted_path)
passphrase:
select cipher:
select key bytes:
enable plaintext passthrough(y/n) [n]:
enable filename encryption (y/n) [n]:
上面這幾相當初怎么設定的就怎么填,之後資料夾就解密了。
不用了,還是用命令解除解密狀態
sudo umount -t ecryptfs ecryptfs_test
這裡說一點,mount命令重啟就失效了。如果你要關機了,不必使用sudo umount -t ecryptfs ecryptfs_test
命令了。因為再次開機,解密是失效的。必須重新運行命令sudo mount -t ecryptfs ecryptfs_test ecryptfs_test
高級套用示例:
我們知道 ecryptfs 是檔案虛擬層,其功能就是 加密/解密。沒有密碼驗證一說
也就是說,它根據密碼進行加密/解密。即使密碼不正確依舊進行 加密/解密,與數據無關。
那么:
1,可以重複加密。實驗證明的確可以。因為 mount 是可以重複掛載的。更別說多次掛載在不同地方。
試驗:假設有這么幾個資料夾 test a b
mount -t ecryptfs test test
密碼設定為 1234
裡面放文本檔案 one。
好了再次掛載
mount -t ecryptfs test a
密碼為4321
放文本 two
再次掛載
mount -t ecryptfs a b
密碼0987
放文本 three
好了在資料夾 test a b中均可看見 one two three檔案,可是
test中只有 one可以打開,a 中只有two可以打開,b中只有three可以打開。
因為one被密碼1234加密,two被密碼1234和密碼4321加密兩次,three呢1234、4321、0987加密三次。
test中檔案被1234解密一次,a中檔案被密碼1234和密碼4321解密兩次,b中1234、4321、0987解密3次。
所以test中除了one被正確解密,其它的都還在加密狀態。
a中,one被1234正確解密卻又被4321再次解密,就成了亂碼(相當於被加了密)
這樣一來,假設test中的檔案被加密了2次。
那么別人破解密碼就很有一思了(假設他不知道檔案被加密了幾次)。
如果嘗試一個密碼,顯示的資料夾內容是亂碼。那么就有2個可能
要么是密碼錯了,要么是密碼對了還要再解密。
當然,對於密碼學而言(直接從密文還原為明文)。使用同一方法重複加密絲毫不能增加安全性,不管重複多少次其效果只等同於加密一次。但是不要忘記,ecryptfs有:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
2) blowfish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
4) twofish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
5) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
6) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
種加密方式。如果正確使用,破解難度很大
由此可以得知 ecryptfs 有效重複加密次數只有6次,但是對於非情報人員而言,已經夠用了。
2,把普通軟體升級為 帶有可加密數據的安全軟體
這點套用原理很簡單。軟體在 home/~ 中 大多都有配置,軟體數據、用戶數據的保存資料夾。
比 如:某某通訊錄軟體 在 ~/xxx/date 中保存用戶的數據。而這軟體比較普通,使用的明文存儲 通訊錄。
這意味著,資料外泄。比如裡面是 大量客戶 ,被競爭對手拿到…… 別覺得不可能,觸及錢的東西,被人顧黑客黑都是很有可能的。
此時,使用 ecryptfs 把 date 資料夾 mount 。保證了處於加密狀態。正常使用軟體就行了。使用完了,umount。
ok,軟體有了一個資料庫加密的功能。而且是不在影響 軟體使用的基礎上實現的。
想想,rar這類的壓縮加密的軟體能做到嗎?win 下的各類資料夾加密軟體可以嗎(可是不能任意 mount的)?
微 軟基於用戶的(ntfs檔案系統),更是不方便。只要用戶登錄,加密資料夾就自動解密 直到用戶註銷。雖然說微軟的加密真的很強,可是對於線上入侵,或者軟體搞鬼就沒辦法了。只要用戶處於登錄狀態,加密資料夾就像分開雙腿的處女,誰想都行。 對於 ecryptfs 可不行,就算你是root,也要輸入密碼、加密方法、密鑰長度。就算你拿到用戶的登錄密碼,也無能為力(比微軟全部雞蛋放一個籠子好的多)。
這裡 明白我不喜歡 整體加密主資料夾了吧。
3,這裡使用 ubuntu one或者類似工具的朋友,為了你的數據安全。 請先使用 ecryptfs mount 存入資料,再umount,之後再 同步資料夾。即使黑客 攻破了 ubuntu one 的伺服器,也不會獲得你的資料。而且使用上,沒有太大差異。
再說一 點。大家也許都想到了:同一資料夾里的檔案,可以是不同密碼加密的。
推薦一本書《經典密碼學與現代密碼學》,網路上可以下載pdf 的版本。對於保守機密很有幫助
檔案管理器的腳本
輸入命令比較麻煩,我們就把它集成到檔案管理器
的使用右鍵直接調用加密。
創建一個腳本,我們放在/bin中。其實放在哪裡都可以,只是考慮到安全性還是放在系統資料夾中,以root用戶創建。(狗%日的度認為mountecryptfs後面加上後綴.sh是網站,不讓通過我只好刪除,大家自己添加吧。真j,b白&痴!)
sudo touch /bin/mountecryptfs
編輯腳本
sudo kate /bin/mountecryptfs
拷貝以下內容:
#!/bin/bash
# 本腳本運行由cat650製作
# 腳本適用於kde環境,請提前安裝ecryptfs-utils
count=0 ##初始值
dir="/tmp/mnt/ecryptfs$count" ##初始掛載點
echo "已掛載加密目錄有:"
while df|grep -q $dir 2>/dev/null ##掛載點 是否使用了
do
echo $dir
let count=$count+1 ##一定要是/bin/bash如是/bin/sh這裡就會出錯
dir="/tmp/mnt/ecryptfs$count" ###新掛載點
done
echo "新增掛載目錄:"$dir
echo "等待超級用授權"
if [ ! -d $dir ];then ##判斷目錄是否存在
sudo mkdir -p $dir ###建立新掛載點目錄,選項p,可以創建連續資料夾
fi
echo "授權完成,開始加密……"
echo "請輸入加密密碼,選擇加密方式:"
sudo mount -t ecryptfs "$1" $dir
echo "顯示加密資料夾"
dolphin $dir
echo $dir"已處於加密狀態"
read -p "是否自動卸載加密資料夾(yes?)" yn
if [ "$yn" != "yes" ]; then
echo "請記得手動解除加密"
echo "命令為:sudo umount /tmp/mnt/ecryptfs*"
read -p "回車退出" no
exit 0
fi
echo "去加密……"
sudo umount $dir
sudo rmdir $dir
## 下面刪除快取圖片,這個大家自己設定。
##我把整個資料夾鏈到了/tmp.普通用戶位置是:~/.thumbnails/
rm -r /tmp/large/
rm -r /tmp/normal/
echo "處於加密狀態的資料夾有:"
df|grep "tmp/mnt"
read -p "請驗證是否已解除加密,回車退出" no
把這個腳本變為可執行
sudo dolphin /bin
找到腳本,屬性改為可執行。
(root許可權)用dolphin打開任意資料夾。資料夾右鍵,屬性,類型旁有個小扳手。
添加。選擇程式,找到/bin/mountecryptfs
選擇並移動到最底。
選擇,編輯。應用程式,高級選項:在終端中運行。這步必須有,要不無法進行加密操作。
現在選擇任意資料夾,右鍵,打開方式:mountecryptfs
看到終端了嗎,按提示操作,自動打開檔案管理器,就可以存放要加密的檔案了。
貢獻者名單:
Dustin Kirkland 1700 points
Michael Rooney 213 points
Frédéric Guihéry 45 points
Tyler Hicks 35 points
Bernhard Bliem 30 points
……