BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Android上のファイルを暗号化するFacebook Conceal

Android上のファイルを暗号化するFacebook Conceal

原文(投稿日:2014/01/29)へのリンク

Facebookは,Android用のファイル暗号化および認証Java APIのセットであるConcealをオープンソースとして公開した。ライブラリを小さく保つためにConcealでは,OpenSSLのアルゴリズムと定義済みオプションのサブセットを使用する。現時点でのサイズは85KBだ。

ライブラリがターゲットするのは,FroyoからJelly Beanまでの古いAndroidデバイスである。これらの上ではAndroidのネイティブサポートよりはるかにパフォーマンスがよい,とFacebookは述べている。

上記のベンチマークはGalaxy Y上で,ネイティブのAndroidのアルゴリズム(ES-CTR-HMAC-SHA1)とBouncycastle(AES-GCM),Conceal(AES-GCM)とを比較したものだ。

GoogleはKitKatでOpenSSLのサポートを導入しているが,Facebookによると},デフォルトの暗号ストリームの “パフォーマンスはあまりよくない” という。“私たちの暗号ストリーム (BetterCipherInputStream参照)に置き換えれば,Concealと比較できるレベルになります。”

以下のコードは,Concealを使ってファイルを暗号化する方法を示したものだ。

// Creates a new Crypto object with default implementations of 
// a key chain as well as native library.
Crypto crypto = new Crypto(
  new SharedPrefsBackedKeyChain(context),
  new SystemNativeCryptoLibrary());

// Check for whether the crypto functionality is available
// This might fail if Android does not load libraries correctly.
if (!crypto.isAvailable()) {
  return;
}

OutputStream fileStream = new BufferedOutputStream(
  new FileOutputStream(file));

// Creates an output stream which encrypts the data as
// it is written to it and writes it out to the file.
OutputStream outputStream = crypto.getCipherOutputStream(
  fileStream,
  entity);

// Write plaintext to it.
outputStream.write(plainText);
outputStream.close();

Concealは大規模な暗号化ファイルに使用することができる。Facebookではこれを,スマートフォン/タブレットのSDカード内のデータやイメージの暗号化に利用している。

ConcealのGitHubのページには,OpenSSLをベースとした小型ライブラリ作成の手順が公開されている。

この記事に星をつける

おすすめ度
スタイル

BT