关于树莓派程序加密和加密分区的设置

前段时间在做司天监操作系统的时候,有个紧迫的需求,就是将程序进行机密存储在SD卡中,因为程序是用JAVA写的,虽然做了扰码和加密处理,甚至重写了Classloader,但是还是害怕源码泄露,所以想到能否把程序放在一个加密分区中,系统加载的时候把加密分区进行加载,平时就是一块不知道是啥东西的数据,或者是一个固定大小的文件。
网上找了很多资料,没找到任何答案,但是看到问此类问题的人倒是挺多的,所以还是自己动手丰衣足食,然后把经验分享给大家。

这里会介绍两种方式,一种是基于文件格式的虚拟分区,另外一种是将SD卡扩展出新的分区。

需要安装的工具
cryptsetup,用于分区加密
sudo apt-get install cryptsetup

1. 创建分区
先说SD卡扩展分区的方式,创建分区的这两种方式网上有很多,所以如果我没写清楚的话可以去网上找找看。
sudo fdisk /dev/mmcblk0
进入fdisk工具,先说一下基本的命令:
p、打印分区表。
n、新建一个新分区。
d、删除一个分区。
q、退出不保存。
w、把分区写进分区表,保存并退出。
n是创建一个新的分区,注意开始位置一定要在最后一个分区之后,我看树莓派前面也空了一些,应该是放BootLoader用的吧,别用这块地方(我记得是2048的地方)
创建好后输入w命令保存

再说文件方式,因为有可能你的卡挺大,但是树莓派自动给你扩展root分区,而你有不会裁剪(这块资料网上也有),所以就用到了文件做虚拟分区的方式(其实和交换分区原理一样)。
啰嗦一句:我做母盘的时候用的是4G卡,卡做好后转成镜像文件3.7G,压缩一下1.2G,用这个母盘镜像烧其他大容量的卡然后做自动扩展的,这块内容留到其他文章里面详述吧。
dd if=/dev/zero of=~/disk1.dsk bs=1M count=40
关于dd命令网上也有很多介绍,不转了,可以去这里看看
https://blog.csdn.net/skdkjzz/article/details/39031959
我创建了一个40M的文件,因为我的程序够用了,如果不够用可以调整bs和count参数

2.加密分区
独立分区加密
sudo cryptsetup luksFormat /dev/mmcblk0p3

文件加密
sudo cryptsetup luksFormat ~/disk1.dsk
加密的时候首先要输入大写的YES,然后输入两次密码就会加密完成。

如果是分区形式的好像需要重启一次树莓派才能进行下一步操作,具体忘了。

3.做分区映射
独立分区映射
sudo cryptsetup luksOpen /dev/mmcblk0p3 disk1

文件映射
sudo cryptsetup luksOpen ~/disk1.dsk disk1

映射的时候需要输入你刚才设置的密码
映射完毕后去/dev/mapper/看看有没有disk1,当然,这个名字自己随便起,但尽量别用loop啥的

4.格式化分区
sudo mkfs -t ext4 /dev/mapper/disk1

5.挂载分区
sudo mount /dev/mapper/disk1 /prog

以上就是创建加密分区的所有步骤,如果没有设置自动挂载的话,第五步每次启动系统后需要手动加载。
 

你可能感兴趣的:(树莓派,树莓派,程序加密,分区加密)