标题：eCryptfs
简介：
eCryptfs - Enterprise Cryptographic Filesystem
可翻译为企业级文件加密系统
eCryptfs是Linux平台下的企业文件加密系统。它起源于Erez Zadok's Cryptfs，通过FiST框架实现层叠式文件系统的产生。
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
……