8月 25

暗号化にはひばらみつひろ氏が作成した定番の暗号化ソフトであるWindows版のAttachecaseまるうお氏がjava版にして公開しているattachecase.jarを利用させて頂きました。

大変、価値のあるソフトウェアをソースコード毎、公開して頂き感謝いたします。

アッタッシェケース for javaをほぼそのままライブラリとして利用している為、全てに置いて互換性を保っております。
zCloakServerで暗号化した録音ファイルはどのAttachecaseでも復号化する事が可能です。

パスワードファイルにも対応しているので、暗号化時にパスワードファイルとして使ったファイルをパソコン等に保存して復号する事も可能です。

アタッシェケースで利用している暗号化の詳しい内容は本家のWindows版アタッシェケースのサイトを参照して下さい。

Androidアプリに組み込む時にattachecase.jarから不要なファイルを削除して専用のライブラリにして取り込んでおります。

基本的な使い方は下記の様にしました。

Options options = new Options(new
String[]{“-c”,”-e”,pathToFile.getAbsolutePath(), “-p”, “hirakegoma”});
AttacheCase4CUI obj = new AttacheCase4CUI(options);
obj.run();

但し、この方法では制御がattachcase.jarに行ったきり返ってくるまでアプリが止まります。
それなので下記の使い方に変更しました。

String OP = new String[]{“-c”,”-e”,”暗号化したいファイルのフルパス”, “-p”,”パスワード文字列”,”-o”,”-s”};
Options options = new Options(OP);
Encrypt encrypt = new FileEncrypt(false, options);
encrypt.setPassword(options.getEncryptPassword());
encrypt.run(new AbstractProgressListener() {
@Override
public void publishProgress(int value) {
**プログレス処理**
}
@Override
public void publishFileName(String fileName) {
}
@Override
public boolean isCancel() {
return false;
}});

これをAndroidのソースのスレッドに入れて実行することでプログレスカウントも取得出来る様になります。
復号の場合はFileEncrypt(false, options);をFileDecrypt2(false, options);にして後は同じです。
パスワードファイルを利用する場合はshaを渡してやります。
Encrypt encrypt = new FileEncrypt(false, options);
Digest digest = new Digest();
ShaEntity sha = null;
try {
sha = digest.getHash(options.getEncryptPasswordFileName());
} catch (IOException e) {
e.printStackTrace();
}
encrypt.setSha(sha);

平文のパスワードとパスワードファイルの違いは
encrypt.setPassword(options.getEncryptPassword());と
encrypt.setSha(sha);
のセットの違いで、これをちゃんと切り替えないとうまくいきませんのでご注意を。
また、パスワードファイルで暗号化したファイルを復号する場合
options.setUsePasswordFile(true);
が必要です。
大体、こんな感じでattachecase.jarをAndroidアプリのライブラリとして利用する事が出来ると思います。

zCloakServerとzSuperRecorderでは単純に暗号化と復号が出来れば良かったので他の機能は固定です。
圧縮率が0~9段階で選択出来るので、zCloakServerでは7の圧縮率で設定しています。
圧縮をする事で、サーバーへ送信するパケット量を多少は落とせるので良いと思いました。

何よりも、パソコン版のAttachecaseと互換と言う事と、Mac、Linux、Windowsそれぞれでjava版のAttachecaseが稼働するので大変便利に高度な暗号化ファイルを取り扱う事が出来ます。

端末内に保存される録音ファイルも暗号化した状態で保持した場合、リストの暗号化ファイルをタップすると自動で復号化して再生するので多少の待時間はある物の、操作は至って簡単です。

通話録音アプリを運用していて、そんなに頻繁に聞き返す事も無く、ファイルは残り続けるので、セキュリティー上脆弱だなぁと言う事で暗号化機能の実装に早くからアッタシェケースは気になっていました。
暗号化ライブラリは他にも結構探すと見つかったのですが、アプリとして定番なアタッシェケース互換の方がメリットも多く、java版が大変良く作られていて参考にしながら取り込んで利用する方法を採用しました。

当初は、どうやって使えば良いのか検討もつかず、最初の取っつき部分をまるうお氏に聞いてやっと辿りつけました。
Android版のアッタシェケースも公開されているので非常に便利に利用出来る様になりました。