CyanogenMod 12.1を実行しているデバイスをどのように暗号化しますか?


9

CyanogenMod 12および12.1 「電話の暗号化」設定が壊れており、かなり長い間使用されていました。他の方法で電話を暗号化する方法はありますか?/ dataディレクトリが暗号化された電話にCMをサイドロードできますか?データを安全かつ健全に保つ他の方法はありますか?私が取り組んでいるデバイスはVerizon LG G3です。

回答:


6

シェルでユーザーデータパーティションを暗号化するために使用できる低レベルのコマンドがあります。免責事項/警告:次の手順でデータを消去します。必要に応じてバックアップを作成してください。

次の手順に従って、あなたがすべきであるあなたのデータパーティションを消去でき、それがその後(工場出荷時のリセットに類似)暗号化があります。

  1. スマートフォンを通常どおり起動します(リカバリが機能しないか、別の問題が発生しました)。
  2. USBデバッグモード(adb)と ADBのルートアクセスが有効になっていることを確認します
  3. ルートシェルにadb root続けてを入力しadb shellます。
  4. オプション:adb logcat別のシェルで呼び出してログを監視します。
  5. このコマンドを入力し、パスワードを入力してEnterキーを押します。これにより、実際にパスワードが設定されます。このコマンドは、1行の入力(head -1)を読み取り、Enter(tr -d '\n')から末尾の改行を取り除いて、16進表記(hexdump ...)に変換します。恐ろしいように見える場合、またはこのコマンドの動作がわからない場合は、以下を参照してください。

    vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
    
  6. すべてが正常に完了すると、デバイスはキーを設定し、再起動して暗号化を完了します。

(Volume Daemon)vdcと通信する上記のコマンド( "Volume Daemon Client" vold)にはcryptfs、暗号化などのいくつかのサブコマンドがあります。enablecrypto:サブコマンドは、2つのモードがありますwipe(クリア/data完全に)とinplace(元のコピー中におそらく暗号化を適用する/dataコンテナ内)。

次に、Android 5.0以降、4つのオプションが利用可能になりました。そのうちの1つpasswordは、単一の16進シーケンスをキーとして受け入れるものです。パスワードがある場合はこのようにfoo、その後、16進数表現である666f6ffある66、進にoされて6f参照、http://www.asciitable.com/を)。このためのコマンドは次のとおりです。

vdc cryptfs enablecrypto wipe password 666f6f

これは、メタデータを格納するための個別のパーティションを持つNexus 5(コード名hammerhead、cm-12.1-20150814を実行)でテストされました。userdataパーティションにフラグセットがあり、その後にパーティションへのパスまたは特別な文字列が続くことが重要です。私のファイルの(省略された)行:encryptablefooter/fstab.hammerhead

/dev/block/platform/msm_sdcc.1/by-name/userdata /データ ext4の...、チェック、暗号化可能 = /dev/block/platform/msm_sdcc.1/by-name/metadata

特別な文字列footerencryptable=footer)が存在する場合、データパーティションの最後にある16 KiBを使用して暗号化メタデータが保存されます。

詳細については、以下を参照してください。


付録:暗号化コマンドを実行した瞬間から終了して再起動するまでのlogcatの抜粋(最後に関係のないグラフィックスメッセージを省略)。このNexus 5にはハードウェアアクセラレーション暗号化(QSEECom)があることに注意してください。

--------- beginning of main
08-16 12:57:15.459 W/DrmManagerClientImpl(Native)( 2108): DrmManager server died!
08-16 12:57:15.459 I/ServiceManager(  184): service 'drm.drmManager' died
08-16 12:57:15.467 D/Cryptfs (  186): Just asked init to shut down class main
08-16 12:57:15.470 D/Cryptfs (  186): unmounting /mnt/shell/emulated succeeded
08-16 12:57:15.599 I/ServiceManager(  184): service 'media.audio_flinger' died
08-16 12:57:15.599 I/ServiceManager(  184): service 'media.player' died
08-16 12:57:15.599 I/ServiceManager(  184): service 'media.camera' died
...
08-16 12:57:16.695 D/Cryptfs (  186): unmounting /data succeeded
08-16 12:57:16.695 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.696 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:16.697 I/Cryptfs (  186): keymaster version is 3
08-16 12:57:16.697 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory 
08-16 12:57:16.697 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:16.697 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.697 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:18.058 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory 
08-16 12:57:18.058 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:18.058 I/Cryptfs (  186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:18.208 D/BootAnimation( 2683): Use save memory method, maybe small fps in actual.
08-16 12:57:18.208 E/QCOM PowerHAL( 2683): Failed to acquire lock.
08-16 12:57:18.691 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:18.691 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:18.692 I/Cryptfs (  186): Signing safely-padded object
08-16 12:57:18.797 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory 
08-16 12:57:18.797 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:20.056 I/Cryptfs (  186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:20.690 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:20.691 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:20.691 I/Cryptfs (  186): Signing safely-padded object
08-16 12:57:20.796 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory 
08-16 12:57:20.796 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:21.429 I/Cryptfs (  186): Enabling support for allow_discards in dmcrypt.
08-16 12:57:21.429 I/Cryptfs (  186): load_crypto_mapping_table: target_type = crypt
08-16 12:57:21.429 I/Cryptfs (  186): load_crypto_mapping_table: real_blk_name = /dev/block/platform/msm_sdcc.1/by-name/userdata, extra_params = 1 allow_discards
08-16 12:57:21.431 I/Cryptfs (  186): Making empty filesystem with command /system/bin/make_ext4fs -a /data -l 13725837312 /dev/block/dm-0
08-16 12:57:21.447 I/make_ext4fs(  186): SELinux: Loaded file_contexts from /file_contexts
08-16 12:57:21.447 I/make_ext4fs(  186): Creating filesystem with parameters:
08-16 12:57:21.447 I/make_ext4fs(  186):     Size: 13725835264
08-16 12:57:21.448 I/make_ext4fs(  186):     Block size: 4096
08-16 12:57:21.448 I/make_ext4fs(  186):     Blocks per group: 32768
08-16 12:57:21.448 I/make_ext4fs(  186):     Inodes per group: 8144
08-16 12:57:21.448 I/make_ext4fs(  186):     Inode size: 256
08-16 12:57:21.448 I/make_ext4fs(  186):     Journal blocks: 32768
08-16 12:57:21.449 I/make_ext4fs(  186):     Label: 
08-16 12:57:21.449 I/make_ext4fs(  186):     Transparent compression: none
08-16 12:57:21.449 I/make_ext4fs(  186):     Blocks: 3351034
08-16 12:57:21.449 I/make_ext4fs(  186):     Block groups: 103
08-16 12:57:21.459 I/make_ext4fs(  186):     Reserved block group size: 823
08-16 12:57:21.465 I/make_ext4fs(  186): Created filesystem with 11/838832 inodes and 93654/3351034 blocks
08-16 12:57:21.465 I/make_ext4fs(  186):     Total files: 0
08-16 12:57:21.465 I/make_ext4fs(  186):     Total bytes: 0
08-16 12:57:42.926 D/Cryptfs (  186): Successfully created filesystem on /dev/block/dm-0

すごい@Lekensteyn、これを書いてくれてありがとう。今週末、これをセットアップするために少し時間を費やす必要があります。効果が出た場合は、TWRPからすべてを消去して、もう一度試すことができます。
Zlatty、2015

1
はい、それは単なるデータパーティションです。私は実験をしているときに、わざと地雷を数回拭きました。
Lekensteyn

2
LPT:6.0(Marshmallow)以降、vdcはパラメーター(= cleartext)としてASCIIエンコードされていないパスワードを使用します。このことを見つけたら、ASCIIテーブルを使って練習するのはとても良かった-ブート時にパスワードの入力を求められてから数分。私の過失のため、パスワードをASCIIで入力する必要がありましたlol
Denys Vitali

4

私にとって、元の答えは期待どおりに機能しませんでした。正常に暗号化されたように見えましたが、UIはすぐに戻ってきて、「暗号化」設定はデバイスが暗号化されていることを示していませんでした。次に、updateで指定されたコマンドを適用しましたが、それでも機能しませんでした。次に、データパーティションのサイズを縮小すると、暗号化に成功しました。すなわち

mount | grep dataデータパーティションの実際のブロックデバイスを検索します。それがそうだとしましょう/dev/block/mmcblk0p26

umount /data ext-toolsが機能するようにします。

e2fsck -f -p /dev/block/mmcblk0p26 今後のサイズ変更で問題が発生しないようにします。

tune2fs -l /dev/block/mmcblk0p26 ブロック数を取得します。それがそうだとしましょう3057395

resize2fs /dev/block/mmcblk0p26 3057375つまり、元のブロック数から20などの十分な量を差し引きます。

e2fsck -f -p /dev/block/mmcblk0p26 誤って配置されたiノードを見つけました。

また、/systemを取得するためにパーティションをマウントする必要がありましたresize2fs。私のシステムでは、そのバイナリは64ビットバージョンのlibcにリンクされていましたが、私が使用したTWRPはそれを提供していないようです。したがって、コマンドの前にを付ける必要がありましたenv LD_LIBRARY_PATH=/system/lib64


:F2FSファイルシステムのandroid.stackexchange.com/questions/146081/...
Marc.2377

2

以下のようCM12.1 2015年10月15日の答え Lekensteynによっては動作しなくなります。

どうやら、ファイルシステムの作成に必要なmkfs.f2fsはからに移動され/system/bin/ました/sbin/

また、SELINUXと競合する必要があります。つまり、さらにいくつかの手順を実行する必要があります。

  1. adbルート
  2. adbシェル
  3. setenforce 0
  4. mount -oremount、rw / system
  5. ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
  6. vdc cryptfs enablecryptoワイプパスワード666f6f

2

別の アップデート-CM13 2016年1月9日ビルド、Nubia Z7 Max、NX505J電話を使用

ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fsファイルが再びここに存在するため、このコマンド()は不要になりました。シンボリックリンクを作成する必要はありません。

このコマンドはHEXである必要がなくなり、16進数を入力するとPWは16進数になります。
cryptfs enablecrypto wipe password 666f6f-これは文字通り私のためのパスワードを作成しません666f6fでしたfoo

メタデータに必要な追加のブロックを通過したので、私はまだこの問題を調査しています。次に、GUIと手動で両方を暗号化するコマンドを実行すると、1回のブートサイクルでしか実行できない暗号化が発生するという事実を回避する必要があります。暗号化が成功したら、報告します。

現在、私は暗号化し、それは正常に動作し、私は初めて起動し、電話は暗号化されていると言います。TWRPを使用すると、/ dataが暗号化されていることを確認できますが、TWRPで試行したHEXパスワードとASCIパスワードはどちらも機能しません。次の再起動時に、Android OSはCM13を完全に起動できません。正しい暗号化パスワードがあることを確認し、暗号化されたブートを1つだけ取得します。最初の暗号化された起動が成功した後、それはその後の起動サイクルのアニメーションステージにロックします。セキュリティのベストプラクティスでは、AES256電話暗号化を推奨しています。


システムはCM13のAES256電話暗号化でどの程度信頼できますか?私はここでの事についてのスレッドを開いたandroid.stackexchange.com/q/134981/9897
レオ・レオポルド・ヘルツ준 영

2

Moto X 2013でCyanogenmod 12.1を実行していると、暗号化することもできませんでした。最後に、私はこれらのステップで成功しました:

  1. 電話の開発者設定でルートを有効にしてシェルを開きます(ターミナルアプリ、開発者設定でも有効にできます)
  2. と入力しsu、ルートアクセスを確認します。
  3. 入る setenforce 0
  4. 次に[設定]を開き、[ セキュリティ]に移動して[ 電話暗号化]を選択します。Androidが再起動し、電話の暗号化を開始します。

Artの回答このフォーラムスレッドを組み合わせることで、このソリューションに到達しました


私のために働いていませんでした。ところで、この後、SELinuxステータスを1に戻すことはできますか?
Marc.2377 2016年

1

6時間の精神的な痛みと汗の後で、自分にとって有効な解決策を見つけたかもしれません。そしてそれも事故でした。CyanogenMod 13.0とAndroid 6.0.1を搭載したSamsung S4 Miniでこれを行いました。ここで重要な重要な要素は、クリーンな電話(新しいファームウェアとルート化されていない)から始めたことです。これは、以前にルート化された電話はまったく機能しないためです。

私はFirelordとLekensteynの問題の解決策を使用しましたが、コマンドから1行を忘れることができました。

ここに私がそれをした方法があります:

  1. 私はオンにAndroidのデバッグおよびルートのアクセスのみADB開発者向けのオプション

  2. ADBコマンドプロンプトでは、adb rootand adb shellコマンドを使用しました。その後、別のADBコマンドプロンプトを開いてadb logcatコマンドを使用しました。

  3. 最初のADBシェルでは、setenforce 0それ以降に進みましたvdc cryptfs enablecrypto wipe password YOUR-PASSWORD

重要なお知らせ:パスワードコマンドは、使用しているAndroidバージョンと異なる場合があります。Android 5.Xを使用している場合は、16進法を使用する必要あります(Chr行はパスワードの記号で、16進値はHx行にあります)。Android 6.Xを使用している場合、YOUR-PASSWORDはそこで入力したパスワードになります。

お気づきのように、mount -oremount,rw /systemコマンドを使用するのを忘れました。その後、画面が真っ暗になります。私が見たとき、ログのあるADBシェルが停止して終了したので、電話を再起動しました。しかし、誰にとっても問題は、CyanogenModが読み込まれないことです。そして私はそれを非常に簡単に修正することができました:

  1. ホールド巻アップ&ホーム&パワーを TWRPが起動するまでダウン。暗号化パスワードの入力を求められます。
  2. やるCyanogenModをインストールし、追加のGoogle Apps(ガイドの第二部)との一部を。
  3. 完了したら、デバイスを再起動します。起動すると、しばらく時間がかかります。最初に電話を起動し、次に暗号化パスワードを尋ね、起動するまでしばらく時間がかかります。

これでうまくいきます。最初に、電話のセットアップが表示されたら、しばらく待ちます。急いでセットアップウィザードを起動すると、少しクラッシュする可能性がありますが、クラッシュすると自動的に再起動します。

CyanogenModとAndroid暗号化がどのように機能するかについての非常に小さな知識の中で、フォーマット中に重要なCyanogenファイルまたはAndroidファイルが削除されて、起動できなくなると思います。


1

暗号化が私の電話で機能しませんでした(SGS5; CM13、TWRP 3.0.2-2)-常に黒い画面が表示されました。

シェルコマンドを使用したくなかったので、別の方法を見つけました。

SuperSUをインストールし、アプリでそれをアンインストールしてから、SU-Removerをフラッシュしました。

その後、メニューから暗号を使うことができました。

警告:

  • 暗号化によってすべてのデータとアプリ(内部SD上のファイルを含む)が削除されたので、最初にバックアップを作成してください!
  • 暗号化後、残ったのは2 GBの内部スペース(通常は11 GB)だけでした-フルワイプ(Cyanogenmod自体も削除)を実行し、Cyanogenmodを再インストールして、スペースを元に戻すための別の暗号化を試みました。
  • また、ルートを再アクティブ化する必要があります。そのためにBETA-SuperSU-v2.68-20160228150503を使用しました(twrpでフラッシュ)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.