IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    On Disk Encryption

    Reverland (lhtlyy@gmail.com)发表于 2014-10-13 00:00:00
    love 0

    胡乱翻译自On Disk Encryption with Red Hat Enterprise Linux,个人笔记,随便看看。

    硬盘加密

    目标

    我们的愿景是:在数据不在使用时保密硬盘数据。

    情景

    • 电脑丢失
    • U盘丢失
    • 一个月才用一次的个人金融信息
    • 敏感隐私数据存储

    不保护

    • 应用不断读取和写入的数据(依靠权限控制、SElinux等)
    • 在互联网上传输的数据(TLS)
    • 键盘输入嗅探

    两种基本方式

    • dm-crypt: 块层级的加密。
      • 加密整个卷
      • 通过设备映射实现
      • 把加密后的块设备以虚拟明文块设备呈现
    • eCryptfs: 文件系统加密
      • 加密单个文件
      • 作为文件系统层实现
      • 呈现明文文件

    dm-crypt和LUKS块设备加密

    dm-crypt和LUKS块设备加密

    • dm-crypt提供块加密能力
    • LUKS:Linux Unified Key Setup。一种硬盘加密标准。定义密钥管理和在硬盘上的格式。

    应用场景1:保护用户文件

    • 加密/home分区(比如’/dev/sda3’)
    • 让所安装的OS不加密

    演示

    警告:不要试,这个例子就看看。会摧毁/home下数据你可以试试下个例子

    首先别忘了加载必要的内核模块

    modprobe aes 
    modprobe dm_crypt
    
    1. 初始化随机数据

       dd if=/dev/urandom of=/dev/sda3
      
    2. 格式化LUKS加密层:

       cryptsetup luksFormat /dev/sda3
      
    3. 打开LUKS加密层:

       cryptsetup luksOpen /dev/sda3 home_plaintext
      
    4. 格式化文件系统:

       mkfs.ext4 /dev/mapper/home_plaintext
      
    5. 挂载准备好的文件系统,写入/etc/fstab:

       /dev/mapper/home_plaintext  /home       ext4    defaults        0   0
      
    6. 在加密硬盘上注册,写入/etc/crypttab

       home_plaintext      /dev/sda3
      

    应用场景2:一个文件加密容器

    仅仅加密文件。

    演示:

    1. 创建一个100M的文件:

       dd if=/dev/urandom of=crypt.img bs=1M count=100
      
    2. 把文件和设备连接起来:

       losetup /dev/loop0 crypt.img
      
    3. 格式化LUKS加密层:

       cryptsetup luksFormat /dev/loop0
      
    4. 打开LUKS加密层:

       cryptsetup luksOpen /dev/loop0 container
      
    5. 格式化文件系统(可以先用dm-table或者ls /dev/mapper来检查)。

       mkfs.ext4 /dev/mapper/container
      
    6. 挂载文件系统

       mount /dev/mapper/container /mnt
      
    7. 这时就可以向/mnt下写入想加密的文件了。

    8. 使用完毕后,卸载分区

       umount /mnt
      
    9. 关闭luks磁盘:

       cryptsetup luksClose container
      
    10. 设备文件脱钩:

      losetup -d /dev/loop0
      

    这时你的文件就加密保存在container中。

    ecrypt-fs

    eCryptfs文件系统

    场景:创建一个隐私文件夹

    • 创建一个~/Private内的文件是加密的。
    • ~/Private外的文件都是明文的

    展示

    首先别忘了加载内核模块,如果没有默认加载的话:

      modprobe ecryptfs
    
    1. 创建一个表文件夹’~/Private’和里文件夹’~/.Private’

       mkdir -m 700 ~/.Private
       mkdir -m 500 ~/Private
      
    2. 将里文件夹挂载到表文件夹上:

       mount -t ecryptfs .Private Private
      
    3. 对表文件夹操作写入等等

    4. 卸载表文件夹,只剩下加密后的里文件夹

       umount ~/Private
      

    为最终用户创建私密文件夹

    ecryptfs-util提供了方便的脚本:

    • ecryptfs-setup-private
    • ecryptfs-mount-private
    • ecryptfs-umount-private

    提供了几个便利:

    • 提升挂载和卸载权限
    • 需要是组ecryptfs中的成员
    • 用登录密码封装FEKEK(文件加密密钥密钥)

    暂不讨论,我这里出错了。



沪ICP备19023445号-2号
友情链接