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 추가 및 커널 빌드

댓글

이 블로그의 인기 게시물

SSH 연결 Delay 해결

[ELK] search guard를 이용한 보안 설정 (사용자 권한)

공공데이터(openapi) 사용법 (특정 정류소, 버스의 남은 좌석 확인 하기)