empress android sdk 1.2 日本語版

25
Empress SDK for Android with Encryption v1.2 Empress SDK for Android with Encryption v1.2 Empress Android 暗号化機能解説書) 株式会社 Empress Software Japan 182-0025 東京都調布市多摩川 5-29-2 調布パレス 527 ビル 4F 電話番号: 042-488-6985 [email protected] 1

Upload: itdoraku

Post on 06-Jul-2015

562 views

Category:

Technology


0 download

DESCRIPTION

Empress SDK for Android 日本語訳

TRANSCRIPT

Page 1: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

Empress SDK for Android with Encryption v1.2 (Empress Android 暗号化機能解説書)

株式会社 Empress Software Japan

〒182-0025東京都調布市多摩川 5-29-2 調布パレス 527ビル 4F

電話番号: 042-488-6985

[email protected]

1

Page 2: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

目次

1.概要 ........................................................................................................................ 3

2.1 Empress SDK for Android with Encryption v1.2 のコンテンツ ................ 5

3.インストール .......................................................................................................... 6

3-1. Empress SDK for Android with Encryption v1.2 のインストール ......... 6

4. Empress Java Applications for Android .................................................................. 7

4-1. Empress ワーキングディレクトリのセットアップ

.............................................................................................................................. 11

4-3. Java 環境のデータベース管理機能の使用方法

.............................................................................................................................. 12

4-4.暗号化データベースの使用方法 .............................................................................................................................. 13

5.暗号化を実装した場合のメリット ........................................................................ 16

6.サンプルアプリケーション ................................................................................... 17

7.リファレンス ........................................................................................................ 18

7-1.新規データベースの作成 ........................................................................ 18

7-2.データベースの削除 ............................................................................... 19

7-3.データベースのエクスポート ................................................................. 20

7-4.データベースのインポート ..................................................................... 21

7-5.データベースの修復 .............................................................................. 23

7-6. Empress システム変数の設定 ................................................................ 23

7-7.暗号化データベースの JDBC による接続

.............................................................................................................................. 23

.................................................................................................................................. 24

8. Empress と SQLite との性能比較 ......................................................................... 25

2

Page 3: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

1.概要

Google Androidはモバイル組込み機器をターゲットとした変形リナックスプラットホームです。Androidはリナックス技術に基づくモバイル機器のためのミドルウェアと主要アプリケーションを含む制限されたオペレーティングシステムとソフトウェアスタックといえます。

Androidは開発者がDalvik Virtual MachineとGoogleで開発された Javaライブラリを使用し、実行可能な組込み機器に移植するため Javaコードでのプログラム作成を可能にします。

Empressは、活発化するAndroid市場のニーズを担うために、開発者がより強力で、高度で、高い信頼性を持ち、かつ効率的なAndroidデータベースアプリケーション開発を可能とするためにEmpress SDK for Android v1.2を発表いたしました。

Empress SDK for Android v1.2 with Encryptionは、オープンデータベースアクセス標準の JDBC APIをサポートします。SDKは新しいデータベースアプリケーションの作成、もしくは、すでに作成済のデータベースアプリケーションの迅速なAndroid移行を可能とします。このリリースでは、Empress Softwareはデータベースの暗号化機能を導入し、データベース管理機能の使用法、Empressシステム変数をAndroid環境への移植を実装いたしました。

2.Empress SDK for Android v1.2のシステム要件Empress SDK for Android v1.2 with Encryptionは、Microsoft

Windows、Linux、Apple Mac OS Xホストマシン上のEclipseベースのAndroid開発環境で稼働可能です。以下のソフトウェアをご準備下さい。

- Android SDK r08 もしくはそれ以上- Android Platform 2.2 もしくはそれ以上- JDK 6

- Eclipse 3.5 and ADT Plugin for Eclipse

- Empress SDK for Android with Encryption v1.2

3

Page 4: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

4

Page 5: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

2.1 Empress SDK for Android with Encryption v1.2のコンテンツ

SDKは ZIPファイルとして提供されます。

Empress_sdk_android_enc_v1.2.zip

展開後、以下のコンポーネントにより構成されます。

empress_sdk_android_enc_v1.2

├─ Empress SDK for Android with Encryption v1.2 Getting Started.pdf

this file

├─ version.txt file with Empress product identification info

└─ docs Empress Ultra Embedded v10.20 documentation

└─ classes

└─ empressJDBC.jar provides database access via JDBC

└─ libs

└─ arm

└─ libjdbcbcs.so Empress native library for Android ARM

└─ samples

└─ AdminAPITest Empress Eclipse sample project

└─ EmpressJDBCSample Empress Eclipse sample project

Empress Ultra Embedded v10.20ドキュメンテーションは標準のHTML形式で提供されます。ドキュメント中Android Javaアプリケーション開発のための最も役立つチャプターは以下の通りです

- A4: SQL Reference

- B5: JDBC Interface

- A5: Database Administrator's Guide

5

Page 6: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

3.インストール

Empress SDK for Android v1.2 with Encryptionのインストール前にホストマシンに適切なAndroid SDKをセットアップする必要があります。Android SDKをセットアップするために以下のステップで実行します。

(1)システム要求を満たす開発用コンピュータを用意します。(2)Android SDK starter packageをインストールします。(3)Eclipseで開発する場合、ADT Plugin for Eclipseをインストールします。(4)Android2.2プラットホームと他のコンポーネントを SDKに追加します。

3-1.Empress SDK for Android with Encryption v1.2のインストール

empress_sdk_android_v1.2.zipを解凍してください。デフォルトでは 、empress_sdk_android_v1.2というディレクトリに展開されます。

6

Page 7: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

4. Empress Java Applications for Android

Empressデータベースを使用して Java JDBCコードを開発する前に、Empress SDK

with EncryptionをAndroid Javaにプラグインするために2つのステップが必要になります。

手順1: 以下の図に示されているようにAndroidアプリケーションプロジェクトのJava Build PathにEmpressJDBC.jarを追加してください。

(1)パッケージエクスプローラーパネルで、プロジェクトで右クリックし 、Properties をポイントしてください。

(2)Java Build Path、Librariesタブを選択してください。(3)Add External JARs…ボタンをクリックし、EmpressJDBC.jarファイルを選択して下さい。Empress SDK がインストールされます。

図1Androidアプリケーションプロジェクトの Javaビルドパスに empressJDBC.jar

を追加したところ

7

Page 8: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

手順2: EMPRESSのネイティブライブラリ libjdbcbcs.soをアプリケーションプロジェクトに追加してください。libjdbcbcs.soファイルを「<プロジェクトディレクトリ>/libs/armeabi」にコピーして下さい。

EmpressのサンプルプロジェクトEmpressJDBCSampleはEmpress SDK for

Android with Encryption zip fileに含まれます。また、Empressのコンポーネントは設定済ですのでユーザは、Andorid上でも実機でも試すことも稼働させることも可能です。

図2 EmpressのサンプルプロジェクトEmpressJDBCSampleのストラクチャー

8

Page 9: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

9

Page 10: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

典型的なEmpress Androidアプリケーションは下図のように実行されます。この図はEmpressデータベースに対してデータベースタスクを実行するためのEmpress JDBC

Local Access Driverを含む稼働中のアプリケーションを示しています。

10

Page 11: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

4-1.Empressワーキングディレクトリのセットアップ

ランタイム時、Empressデータベースエンジンは一時ファイルを保存するワーキングディレクトリを必要とします。デフォルトで、Empressデータベースシステムは「Empress/tmp」というテンポラリーディレクトリをデバイス上に作成します。これは、Javaのプロパティ値"java.io.tmpdir"に対してクエリーを発行することによりシステムテンポラリーディレクトリの作成を可能とします。もし、Empressの稼働するアプリケーションを特定な場所に指定したい場合は 「com.Empress.jdbc.EmpressDriver.setWorkingDir("絶対パス")」を設定することで可能です。

たとえば、プログラムで JDBCコネクションを作成する前に以下のように記述します。

Class.forName("com.Empress.jdbc.EmpressDriver");

com.Empress.jdbc.EmpressDriver.setWorkingDir(this.getApplicationInfo().dat

aDir);

Connection con = DriverManager.getConnection(database_url, "USERID",

"PASSWORD");

詳細についてはEmpressJDBDSampleプロジェクトを参照してください。

11

Page 12: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

4-2.システム変数のアンドロイド環境への実装

Empressシステム変数はEmpress環境のコントロール能力をアプリケーション開発者に付与します。システム変数は、テーブルキーの作成を試みる回数、Empressがソーティング中に取得するメモリースペースの合計の上限などを設定する場合に使用されます。変数のシステム・デフォルトについてはA5 Database Administrator's Guideで説明されています。いくつかのEmpressシステム変数、例えばMSEDITOR(オペレーティングシステムエディタがセットを呼び出す変数)などのEmpressシステム変数はAndroid環境に関連性はありません。

システム変数のための新しい値は以下の機能で設定されます。

DatabaseAdmin.setEnv (String key, String value)

DatabaseAdmin.setEnv("MSCIPHERKEYINFO",

"'/mnt/sdcard/db5':1.22244");

4-3.Java環境のデータベース管理機能の使用方法

Java環境でEmpressのコール可能な機能は特定のEmpressユーティリティにより機能をサポートするために実装されます。以下の機能は静的なクラスDatabaseAdminを通してサポートされます。

DatabaseAdmin.setEnv - Empressシステム変数の設定DatabaseAdmin.createDB - databaseの作成DatabaseAdmin.removeDB - databaseの削除DatabaseAdmin.exportDB - databaseからのテーブルのエクスポートDatabaseAdmin.importDB - databaseへのテーブルのインポートDatabaseAdmin.checkAndRepair - databaseで問題が発生時のチェック・修正

アプリケーションが完全にコントロールしているデータベース管理タスクを要求するときコールできる管理ルーチン・機能としてEmpressユーティリティを呼び出すことが可能です。アンドロイド Javaフレームワークは別々のプロセスとしてEmpressユー

12

Page 13: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

ティリティを実行できません。Empressがコールできる管理機能を使用するのは、アプリケーションがデータベース管理タスクを実行する方法です。すべてのコール可能な管理機能の使用法を示している例はサンプルプロジェクトAdminAPITestで出力されます。

4-4.暗号化データベースの使用方法

Androidの新しいバージョンはデバイス上のデータベースの暗号化を可能としました 。Empressは独自の暗号化機能を構築していますので、アプリケーション開発者はどのデータを暗号化するかに関してより広いオプションを提供されます。

図 4はEmpressデータベースエンジンに暗号化機能を追加する概念について解説しています。このソリューションはセキュリティ・ライブラリを含みます。事実、Empress

データベースエンジンはOpen SSL libcryptoライブラリと統合され、データ暗号化と復号化を実行します。暗号キーはファイルシステムで保護された場所、アプリケーション/プロセス環境またはユーザと共に保護されます。

図4:暗号化を使用した場合のEmpressのAndroidアプリケーション

13

Page 14: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

以下はEmpress暗号化ソリューションをAndroid アプリケーション追加することに関する基本的な手順です。

コラムレベルで暗号化をします。ユーザには、どのカラムが暗号化されている定義することが可能です。シナリオを想定してみましょう。データベースのテーブル customerに cust_no, name,

ssn、addressの 4のカラムがあるとし、cust_no、name、ssnが暗号化されているとします。

Empressデータベースでそのようなテーブルを作成するのは SQL CREATE TABLE

コマンドを使用します。

CREATE TABLE customer (

cust_no INTEGER NOT NULL ENCRYPTED,

name CHAR(20),

ssn CHAR(9) ENCRYPTED,

address VARCHAR(64);

14

Page 15: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

カラム cust_noは検索を必要とするのでインデックスを作成されなければなりません。

CREATE UNIQUE INDEX customer_index ON customer(cust_no);

Empressはアプリケーションが必要とするとき、カラム cust_noと ssnのデータを暗号化します。テーブル customerにアクセスするユーザアプリケーションは変更の必要がありません。同じシナリオはEmpressが提供するすべてのインタフェースとEmpress

ユーティリティも適応されます。

ユーザは暗号化、非暗号化のデータベース・スキーマを変更するだけで実装可能です。

例ALTER TABLE customer CHANGE ssn NOT ENCRYPTED;

または、再びコラムで暗号化を定義するために

ALTER TABLE customer CHANGE ssn ENCRYPTED;

複数のカラムの暗号化を定義するために 1つのALTERコマンドで変更可能です。ユーザは暗号化されたカラムのデータ型、サイズを変更する必要はありません。

新しいデータベースの暗号化機能を追加して作成してください。暗号化で新しいデータベースを作成するには、参照をチェックしてください。暗号化機能はサンプルプロジェクトAdminAPITestに記述されています。Android v1.2と共にEmpress SDKに含まれています。

15

Page 16: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

5.暗号化を実装した場合のメリット

暗号化ソリューションの主なメリットは以下の通りです。

1.部分的なデータベースの暗号化部分的なデータベースデータの暗号化を可能とします。たとえばログ、バックアップファイルなどデータを保護するために非常に有効です。

2.効率的なセキュリティソリューション暗号化/復号化を実行時のパフォーマンスオーバヘッドを最小限する機能を実装しました。Empressは暗号化のためのデータベース増加のサイズを最小量にするための追加条項を実装しました。

3.アプリケーションコードの変更なし非暗号化Empressデータベースのデータを暗号化に変更する際、既に書かれたAndroidアプリケーションに何の影響を与えません。

4.外部条項の変更なしストアド・プロシージャ、トリガー、ビューなど暗号化データを収容するデータベ

ースの外部の条項に変更を加える必要性がありません。

16

Page 17: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

6.サンプルアプリケーション

Empress SDK for Android with EncryptionはAndoroidフレームワークで使用するEmpressデータベース 2つのサンプルアプリケーションが含まれています。それらはプロジェクトとして以下で提供されます。

EmpressJDBCSample

AdminAPITest

Android環境でプロジェクトを使用するためにプロジェクトをEclipse環境にインポートすることが可能です。

Eclipseを起動して、Importを選択してください。既存のプロジェクトからのインポー トソースをワークスペースに選択してください。ブラウズして、サンプルプロジェクト

をインポートします。選択されたプロジェクトをインポートする際、ユーザが実行する唯一の追加は正しい empressJDBC.jarファイルを定義することです。ステップ1中のDevelop Empress Java Applications for AndroidでプロジェクトはすでにRunの準備は完了しています

17

Page 18: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

7.リファレンス

Empress SDK for Adroid v1.2SDK は多くの新機能が含まれます。 このセクションでは、これらの機能について解説します。Android用のEmpressデータベース管理ユーティティAPIのために com.empress.util.DatabaseAdminクラスを提供します。

7-1.新規データベースの作成

DatabaseAdmin.createDB (String dbName)

where

dbName: 新しいデータベースの物理パス名

暗号化と主要な情報を指定することによって新規データベースを作成するために:

DatbaseAdmin.createDB (String dbName,

String cipher, String keyInfo)

wheredbName: 新しいデータベースの物理パス名.

cipher: 新しい暗号名

keyInfo: 暗号キー

暗号化した新規データベース、myDBを作成するためにAES256暗号化と暗号キー'00FFEE'を使用する作成例

DatabaseAdmin.createDB ("myDB", "AES256", "00FFEE")

暗号化で新規データベースを作成する別の例:

DatabaseAdmin.createDB (String dbName,

boolean withSharedMem, boolean withLock,

18

Page 19: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

String cipher, String keyInfo)

where

dbName: 新しいデータベースの物理パス

withSharedMem: trueであるなら共有メモリセグメントを作成してください、false、

そして、共有メモリを全く使用しないでください。

withLock: trueであるならデータ辞書テーブルを登録にロックし、falseであるなら

データ辞書テーブルをヌルにロックします。

cipher: 暗号名

keyInfo: 暗号化キー

例,

DatabaseAdmin.createDB("/sdcard/db3",

false, false, "aes256", keyInfo)

共有メモリセグメントとデータ辞書テーブルをつながずに、暗号化されたデータベースを作成します。

7-2.データベースの削除

DatabaseAdmin.removeDB (String dbName, boolean silent)

where

dbName: データベースの物理パス

silent: もし silentが falseでデータベースが存在しない、もしくはエラーが発生した

場合は例外が提供されます。もし silentが trueの場合では例外は適用されません。

Silentでデータベースを削除:

DatabaseAdmin.removeDB (String dbName)

DatabaseAdmin.removeDB(db3, false);

19

Page 20: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

以下も同様です。

DatabaseAdmin.removeDB (dbName, true).

例:

DatabaseAdmin.removeDB(db3);

7-3.データベースのエクスポート

DatabaseAdmin.exportDB (String dbName,

String tables, String fileName, String keyFile)

wheredbName: データベースの物理パス名

tables: エクスポートするテーブルのリスト、ヌルであればすべてのテーブルはエクス

ポートされる。

fileName: the physical path to the output file.アウトプットファイルへの物理パス

keyFile: 出力ファイルを暗号化するのに使用される主要な情報を含むファイルの名、

ヌルであるなら、出力ファイルのために暗号化されません。

構文は以下の通りです:

DatabaseAdmin.exportDB (String dbName,

String tables, String fileName)

以下も同様です。

DatabaseAdmin.exportDB (dbName,

tables, fileName, null)

以下の構文をご使用下さい。

DatabaseAdmin.exportDB (String dbName,

20

Page 21: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

String filename)

以下も同様です。

DatabaseAdmin.exportDB (dbName,

null, fileName, null)

例:

// export table 't' from /sdcard/db1 to /sdcard/db1.exp

DatabaseAdmin.exportDB("/mnt/sdcard/db1",

"t", "/sdcard/db1.exp");

// export all tables from /sdcard/db1 to /sdcard/db1.exp

DatabaseAdmin.exportDB("/mnt/sdcard/db1",

"/sdcard/db1.exp");

File kf = new File ("/sdcard/keyfile");

FileWriter fw = new FileWriter (kf);

fw.write("aes256:" + "1.22244" + "\n");

fw.close();

// export all tables from /sdcard/db1 to /sdcard/db1.exp and encrypt

the output file with aes256 and key equals "1.22244"

DatabaseAdmin.exportDB("/mnt/sdcard/db1",

null, "/sdcard/db1.exp", kf.getCanonicalPath());

7-4.データベースのインポート

DatabaseAdmin.importDB (String dbName,

String tables, String fileName,

boolean importPriv, String keyFile)

where

dbName: データベースの物理パス名

tables: インポートするテーブルのリスト、ヌルであればすべてのテーブルはインポ

21

Page 22: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

ートされる。

fileName: インポートするファイルの物理パス名.

importPriv: If true, import grant privilege information.もし trueなら権限情報を

インポート

keyFile:入力ファイルを暗号化するのに使用される主要な情報を含むファイルの名

前。 ヌルならインプットファイルの暗号化はない.

以下の構文を使用します:

DatabaseAdmin.importDB (String dbName,

String fileName, boolean importPriv)

以下も使用可能です:

DatabaseAdmin.import (dbName,

null, fileName, importPriv, null).

例:

// import all tables from /sdcard/db2.exp into /sdcard/db2

DatabaseAdmin.importDB("/sdcard/db2",

"/sdcard/db2.exp", false);

File kf = new File ("/sdcard/keyfile");

FileWriter fw = new FileWriter (kf);

fw.write("aes256:" + "1.22244" + "\n");

fw.close();

// import all tables from /sdcard/db2.exp into /sdcard/db2. Input file

/sdcard/db2.exp is encrypted with aes256 and key equals "1.22244"

DatabaseAdmin.importDB("/sdcard/db2",

null,"/sdcard/db2.exp", false, kf.getCanonicalPath());

22

Page 23: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

7-5. データベースの修復

int DatabaseAdmin.checkAndRepair (String dbName,

boolean quickCheck)

wheredbName: データベースの物理パス名

quickCheck: もし trueならチェックとリペアーを行わないクイックパフォーマンス、

もし faulseならフルチェックとリペアーを行う

Return Value: 0成功; -1エラー; 1警告付の成功,

あなたは dbaではないのでいくつかのプロセスはパスされました。

解消されないロック、トランザクション、一時ファイル、コーディネータ情報、インデックスもしくはほかのデータベースの問題は検出され解決されます。

7-6.Empressシステム変数の設定

DatabaseAdmin.setEnv (String key, String value)

Empressシステム変数はEmpress Manualで説明されます: A5: データベースアドミニストレータガイドに記載されています。

例:

DatabaseAdmin.setEnv("MSCIPHERKEYINFO",

"'/mnt/sdcard/db5':1.22244");

7-7.暗号化データベースの JDBCによる接続

暗号化されたデータベース JDBCを使用して接続する場合、主要なインフォメーションを設定するのにDatabaseAdmin.setEnv()を使用する必要はありません

23

Page 24: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

JDBCを使用し暗号化されたデータベースに接続する代替の方法は 、DriverManger.getConnection()をコールします。これは接続URLの暗号化されたデー

タベース接続のための主要な情報を提供します。 主要な情報は主要な_KEYINFO=値 と定義されます。

例:

Connection con = DriverManager.getConnection(

"jdbc:empress://server=NONE;

database=/sdcard/db4;KEYINFO=1.22244", "", "");

24

Page 25: Empress android sdk 1.2 日本語版

Empress SDK for Android with Encryption v1.2

8.Empressと SQLiteとの性能比較

性能 Empress SQLite完全な Outer Join ○ ×トリガーサポート ○ ×ストアドプロシージャサポート ○ ×権限設定とその取り消し ○ ×リプリケーション ○ ×暗号化 ○ ×マルチプロセススレッドサポート ○ ×全文検索エンジン ○ ×空間検索 ○ ×ビットマップ INDEX ○ ×In Memory機能 ○ ×ロックのグラニュイティ ○ ×クライアントサーバ ○ ×断電回復機能 ○ ×非断片化構造 ○ ×

25