Android goldfish에서 dm-crypt with LUKS => Disk Encryption
1. 테스트 환경
- Android full source : android-4.2.1_r1 소스
- Android goldfish kernel
2. cryptsetup을 Android 로 포팅
- https://github.com/guardianproject/LUKS/wiki
- 위 사이트에서 포팅 및 바이너리 다운로드 가능
3. losetup을 Android 로 포팅
- Android toolbox는 losetup을 지원하지 않음
- 위 사이트에서 busybox 바이너리 다운로드 가능
4. Encrypt Disk 생성 및 포멧
- $ qemu-img create -f raw dm.img 10M
- $ sudo losetup /dev/loop0 dm.img
- $ sudo cryptsetup luksFormat /dev/loop0
WARNING!
========
This will overwrite data on /dev/loop0 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: testpwd
Verify passphrase: testpwd
- $ sudo cryptsetup luksOpen /dev/loop0 encrypt-fs
Enter passphrase for /dev/loop0: testpwd
- $ sudo mkfs.ext4 /dev/mapper/encrypt-fs
- $ sudo cryptsetup luksClose encrypt-fs
- $ sudo losetup -d /dev/loop0
- $ adb push dm.img /data/local
4. 테스트
- 아래 두가지 에러를 처리한 후에 테스트 성공
- $ adb shell
- # ./busybox losetup /dev/block/loop0 dm.img
- # ./cryptsetup luksOpen /dev/block/loop0 encrypt-fs
- # ls -al /dev/mapper
crw------- root root 10, 59 2013-02-05 01:39 control
brw-rw---- root 6 254, 0 2013-02-05 01:40 encrypt-fs
- # mount -t ext4 /dev/mapper/encrypt-fs ./mount
- # mount
/dev/mapper/encrypt-fs /data/local/mount ext4 rw,barrier=1,data=ordered 0 0
- # ls -al ./mount
lost+found
- # umount
- # ./cryptsetup luksClose encrypt-fs
- # ./busybox losetup -d /dev/block/loop0
5. Error #1
- goldfish 커널이 EXT4를 미지원
- CONFIG_EXT4_FS_XATTR=y 추가 및 커널 빌드
6. Error #2
- 아래와 같은 에러 발생
- EXT4-fs: dm-0: Filesystem with huge files cannot be mounted read-write without CONFIG_LBD.
- CONFIG_LBD=y 추가 및 커널 빌드
댓글
댓글 쓰기