rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

linuxでもandroidでも使える文書暗号化

 

2020 Dec. 19.
2019 Dec. 01.
2019 Feb. 16.
2018 Nov. 11.
2018 Aug. 25.
2017 May 20.

openssl

共通鍵方式の暗号化・復号化が可能。

opensslでのaes-256-cbc暗号化

入力したパスワードから共通鍵と初期化ベクトルが自動生成される。パスワード自体が共通鍵ではない。
共通鍵は、パスワードと自動設定されるsaltから生成される。
初期化ベクトルは、パスワードとsaltと共通鍵から生成される。
制裁される共通鍵・初期化ベクトルは、ver1.0まではmd5、ver1.1.1以降はsha256でハッシュされる。
ver1.1.1以降はハッシュ化に -iter N もしくは -pbkdf2 オプション指定が推奨。
Padding 方式には PKCS#5 が使用される。

androidアプリcrNoteで復号できる暗号化例
$ openssl aes-256-cbc -md md5 -e -in FILE -out FILE.x
$ openssl aes-256-cbc -md md5 -e -in FILE -out FILE.x file:./password.txt
        CrNoteと共用するために拡張子は .x にする。

(オプションを付けなければsha256でハッシュされる)
$ openssl aes-256-cbc -e -in FILE -out FILE.x
 
(crNoteでは復号できないがWarningが出ない暗号化コマンド)
$ openssl enc -e -aes-256-cbc -md md5 -pbkdf2 -in FILE -out FILE.X

復号化

共通鍵生成に必要な暗号化時のsaltは、暗号化されたファイルの先頭に書き込まれている。
Padding 方式は PKCS#5。
暗号化方式・ハッシュ化の方式を暗号化時と同じにする。

md5ハッシュ鍵)
$ openssl aes-256-cbc -d -in FILE.x  -md md5
$ openssl aes-256-cbc -d -in FILE.x  -md md5 -pass file:./password.txt

(sha256ハッシュ鍵)

$ openssl aes-256-cbc -d -in FILE.x
$ openssl aes-256-cbc -d -in FILE.x -pass file:./password.txt

(Warningが出ない復号コマンド)
$ openssl enc -d -aes-256-cbc -md md5 -pbkdf2 -in FILE.X

android

CrNote を利用すれば、md5ハッシュ化鍵でのaes-256-cbc暗号化ファイルの復号が可能。