關於樹莓派程序加密和加密分區的設置

前段時間在做司天監操作系統的時候,有個緊迫的需求,就是將程序進行機密存儲在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

以上就是創建加密分區的所有步驟,如果沒有設置自動掛載的話,第五步每次啓動系統後需要手動加載。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章