OPPO内蔵ストレージの暗号化とデータ消去

使っていたOPPO Reno Aを売却することになり内蔵ストレージについて調べていたところ、内蔵ストレージが暗号化されていないことに気付きました。

OPPOのスマホには、アプリロックという機能があり、これはアプリ単位で暗号化するものなのですが、アプリ単位での暗号化機能が用意されているということは、すなわち内蔵ストレージ自体は暗号化されていないことを意味します。OPPOのFAQを調べてみても、そのように書かれています。

Does Encrypting Apps on OPPO Phone Encrypts Internal Storage?

How to Put App Lock on OPPO Phone

Situation: You want to know if app encryption on OPPO phones encrypts internal storage.

Applicable to: All OPPO Smartphones

No, encrypting app does not encrypt internal storage. App Encryption on OPPO phones lock applications and the app data.

Source: “Does Encrypting Apps on OPPO Phone Encrypts Internal Storage?”, https://support.oppo.com/jo-en/answer/?aid=neu12872, referred at July-18-2021.

内蔵ストレージが暗号化されていないので、単純に初期化しただけでは完全なデータ消去ができません。試行錯誤しながら、2つの方法で対処したので、以下にまとめます。

1. はじめに
2. 写真アプリを暗号化した上で動画撮影する
3. パソコン側で作ったランダムデータで埋め尽くす
4. 最後に

1. はじめに

OPPO Reno AのOSは、Android9ベースのColorOS 6.0.1で、素のAndroid9だと内蔵ストレージはデフォルトで暗号化されているのですが、ColorOSだと内蔵ストレージはなぜか暗号化なしとなります。iPhone(iOS)も内蔵ストレージはデフォルトで暗号化されています。(というか、iPhone(iOS)の場合、内蔵ストレージは強制的に暗号化されます。)

OPPO Reno Aは売却する予定なので、内蔵ストレージのデータが復旧可能な状態のままにしておくわけにはいきません。なんとかして、復号できないランダムデータで内蔵ストレージを埋め尽くす必要があります。

2. 写真アプリを暗号化した上で動画撮影する

そこで、アプリロックの機能を使い、以下のようにして内蔵ストレージの空き容量がなくなるまで、ランダムデータで内蔵ストレージを埋め尽くすことにしました。

「写真アプリを暗号化した上で、内蔵ストレージの空きがなくなるまで、4K動画を撮影し続ける」

以下のような手順で作業を行いました。

(1)インストールしたアプリやデータ等はすべて削除してしまうので、データや設定内容のバックアップをとります。

(2)再度、インストールされているすべてのアプリ(設定アプリを含む)を立ち上げて確認していき、データや設定内容のバックアップし忘れがないかどうかを十分に確認し、し忘れがあった場合は必ずバックアップ(コピー・控え)をとってから「設定→その他の設定→バックアップとリセット→データの初期化→すべてのデータを消去」とタップしてスマホを初期化します。誤って初期化したことによるデータ消失その他の損害について、毛流麦花は一切責任をとれません。十分過ぎるくらい、かつ、しつこいくらいに確認およびご注意を!

(3)初期化が完了してスマホが再起動され、新品購入時に行うような初期設定作業が完了したら「設定→セキュリティ」(OPPO A5 2020のColorOS 7.1(Android10ベース)だと「設定→プライバシー」)とタップします。

(4)アプリロックをタップします。

(5)アプリロックのパスワード設定を促されるので設定します。なおここで設定するパスワードは、暗号・復号の際の種として使われるらしいので、できるだけ複雑なパスワードが望ましいです。スクショ禁止なので以下には載せていないものの、「その他の暗号化モード」(OPPO A5 2020のColorOS 7.1(Android10ベース)だと「別のパスワードタイプを使用」)をタップすると、英数字16文字までのパスワードを設定できるようになるので、そのようにしてからパスワードを設定します。

(6)以下のような画面が出るので、写真アプリにチェックを入れてから、画面下の「暗号化を有効」ボタンをタップします。写真アプリだけ暗号化すれば大丈夫なはずですが、気になるようでしたら、すべてのアプリにチェックを入れて暗号化してもよいでしょう。(ただし、写真アプリを除いて、アプリ起動時にアプリロックのパスワードを入力する必要があります。)

(7)アプリの暗号化設定が終わったら、後は空き容量がなくなるまで動画を撮影し続けるのみですが、動画を撮影する際は、4Kで撮影した方がデータサイズが大きくなり、より迅速に内蔵ストレージをランダムデータで埋め尽くすことが可能になるので、以下のように写真アプリの設定画面でビデオの解像度を4Kに変更します。

(8)4K動画の撮影開始です。動画撮影といっても、内蔵ストレージをランダムデータで埋め尽くすのが目的なので、動画撮影中は、実際には何も写り込まないようにスマホを置いてしまって大丈夫です。ただし、動画を連続撮影するとスマホがけっこう熱を持つので、スマホのケース・バンパー等は取り外した上で風通しの良い場所に置く等、放熱には十分注意してください。また、言うまでもないことですが、充電しながら動画撮影するのは厳禁です。放電しながらの充電はバッテリーにダメージとなるだけでなく、スマホがますます熱くなってしまって望ましくないです。十分に充電してから、動画撮影を開始しましょう。

(9)内蔵ストレージの空き容量が少なくなると、音が鳴って動画撮影が自動的に終了します。(スマホが高温になった場合や、バッテリー残量が少なくなった場合も自動終了する可能性があります。)なお動画撮影が自動終了しても、ファイルマネージャー等で確認すると、内蔵ストレージに若干の空き容量が残っていることがあります。これについては、例えば、動画撮影開始前に動画ではなく写真を1枚撮影しておき(※)、動画撮影終了後にファイルマネージャーで空き容量を確認してから、空き容量が限りなくゼロに近づくように、写真データをファイルマネージャーで他のフォルダに何回もコピーして埋め尽くす、といった方法が良いでしょう。(※: 写真自体には何も写っていなくて大丈夫ですが、位置情報が写真データに付加されないように設定しておくことを推奨します。)

(10)内蔵ストレージのランダムデータでの埋め尽くしが完了したら、スマホを再度初期化して、作業完了。

3. パソコン側で作ったランダムデータで埋め尽くす

上記の作業が終わってから、「ランダムデータをわざわざスマホ側で作らなくても、パソコン側でランダムデータを作って、パソコンとスマホをBluetoothで接続して、パソコン側からスマホ側に転送すればいいのでは?」と気付きました。

この方法だと動画を撮影するわけではないので、動画撮影時ほどスマホが熱を持つことはありません。ただし、Bluetoothでファイルを転送するので、ファイル転送に若干時間がかかりますが、一旦スマホを初期化してから作業を行うことを前提としているため、敢えてWi-FiではなくBluetoothでの転送としています。Bluetoothのペアリング設定情報程度であれば、仮に復元されてもあまり実害はないだろう、と考えていることもあります。

ただし、以下の方法はUnix系OS(Linux等)を触った経験があることが前提です。備忘録として、以下に記します。(と言いつつ、OPPO A5 2020はこの方法で内蔵ストレージをランダムデータで埋め尽くしました。)

(1)ファイルサイズが100MB、10MB、1MB、100KB、10KB、1KBの6種類のランダムデータを作る。(macOSのターミナルで作業した場合)

% dd if=/dev/urandom of=100m.dat bs=1m count=100
% dd if=/dev/urandom of=10m.dat bs=1m count=10
% dd if=/dev/urandom of=1m.dat bs=1m count=1
% dd if=/dev/urandom of=100k.dat bs=1k count=100
% dd if=/dev/urandom of=10k.dat bs=1k count=10
% dd if=/dev/urandom of=1k.dat bs=1k count=1

(2023/5/4追記)OPPO Reno3A売却のために再度ストレージをランダムデータで上書きする必要が生じ、Windows11のWSL2(Ubuntu)上で同様の作業を行ったのでメモしておきます。今回は100MB、10MB、1MB、100KB、10KB、1KBに加えて、100byteのデータも作りました。WSL2上で作ったデータの保存されているディレクトリは、エクスプローラのアドレスバーに「¥¥wsl$」を入力すれば開けます。

% dd if=/dev/urandom of=100m.dat bs=1M count=100
% dd if=/dev/urandom of=10m.dat bs=1M count=10
% dd if=/dev/urandom of=1m.dat bs=1M count=1
% dd if=/dev/urandom of=100k.dat bs=1K count=100
% dd if=/dev/urandom of=10k.dat bs=1K count=10
% dd if=/dev/urandom of=1k.dat bs=1K count=1
% dd if=/dev/urandom of=100b.dat bs=100c count=1

(2)スマホとパソコンをBluetoothで接続し、ファイル転送できるようにする。(macOSだと、「システム環境設定→共有」で、「Bluetooth共有」を有効化する必要があります。)

(3)パソコン側からスマホ側に向けて、上記6ファイルを転送する。数十分かかりますので、気長に待ちましょう。

(4)ファイル転送が完了したら、スマホ側でBluetoothペアリング設定を解除する。(ペアリング設定情報を削除し、その跡をランダムデータで上書きできるようにするため)

(5)スマホ側でファイルマネージャーを起動してBluetoothフォルダを開き、6ファイルが受信・保存されていることを確認したら、内蔵ストレージの空き容量が限りなくゼロに近づくように、ファイルコピーができなくなるまで、残容量を確認しながら6ファイルを他フォルダに何回もコピーする。例えば、フォルダを作り、そこにサイズが100MBのランダムデータを10回コピーして(同じフォルダに同じファイル名ではコピーできないので、コピーの都度、コピー先のファイル名に01,02といったサフィックスを付けて変更する等して)から、別のフォルダを作り、そこにサイズが1GBのフォルダを同様に10回コピーする、といった感じで、内蔵ストレージの空き容量が限りなくゼロに近づくように、コピーを繰り返します。

(6)内蔵ストレージのランダムデータでの埋め尽くしが完了したら、スマホを再度初期化して、作業完了。

4. 最後に

スマホを初期化すると、プリインストールアプリが復活してしまいますが、プリインストールアプリの中にはアンインストールできるもの、アンインストールはできないもののアプリデータを消去できるものがありますので、設定画面から、アンインストールできるものはアンインストール、アプリデータ消去ができるものはアプリデータ消去をすると、残容量が増えて、内蔵ストレージのより多くの領域をランダムデータで埋め尽くすことが可能になります。

OPPO Reno AのColorOS 6.0(Android9ベース)、OPPO A5 2020のColorOS 7.1(Android10ベース)の2つについては内蔵ストレージが暗号化されていないことを確認しましたが、後継のColorOS 11(Android11ベース)では果たしてどうなっているのかどうか? 素のAndroidだと内蔵ストレージがデフォルトで暗号化されているのであれば、ColorOSも同様にデフォルトで暗号化して欲しいですね。スマホの内蔵ストレージが暗号化なしという仕様は、スマホ売却・譲渡時に非常に面倒ですし、スマホ盗難時にも第三者に簡単に内蔵ストレージを見られてしまうリスクがあるので、止めて欲しいです。

スポンサーリンク
スポンサーリンク
error: Content is protected !!