SQL Anywhereテーブルの暗号化の使用
目的
このページの目的は、暗号化の基礎とSQL Anywhere 10以降のデータベースに対してテーブルの暗号化を構成する方法を説明します。
概要
暗号化は、情報の閲覧を許可されていないユーザから情報を保護するために使用するセキュリティ・ツールです。SQL Anywhereはバージョン8.0.0で強力な暗号化が採用されました。
バージョン10以降では、データベース全体または、選択したテーブルのみを暗号化することができます。
これにより更に柔軟性が向上し、データベースの一部のみを暗号化する必要がある暗号化ユーザのためにパフォーマンスを高めることができます。
暗号化は、情報の閲覧を許可されていないユーザに対して、その情報の解読を困難にするプロセスです。暗号化されたデータベース・ファイルに物理的にアクセスできても、ファイルを分析したり、データベースに含まれるデータを表示することはできません。
暗号化には2種類のタイプがあります:単純暗号化と強力な暗号化です。
単純暗号化は、データを難読化しますが、暗号化キーを使用していません。ディスク・ユーティリティを使用して権限のないユーザがデータを見ることを防止する簡単な方法です。
強力暗号化は、暗号化アルゴリズムを使用してデータを暗号化し、キーを持つユーザのみにアクセスを許可します。
暗号化方式とは、情報の暗号化と復号化に使用するアルゴリズムです。暗号化方式を使用して、読みやすいプレーン・テキストを人間には判読不能な暗号文に変換します。ブロック暗号は、プレーン・テキストのブロックを暗号文のブロックに変換します。ブロックとは、固定バイト数のテキストの集合です。
SQL Anywhere暗号化の概要
SQL Anywhere 10 は、強力暗号化のためにAES暗号化を実装しています。アルゴリズムは、ラインダール(Rijndael)と呼ばれ、米国政府により次世代標準暗号化方式として選択されています。
AES-FIPS暗号化は、SQL Anywhereで特定のプラットフォームで利用可能です。AES-FIPSは、基本的にAESと同じです。唯一の違いは、AES-FIPSでは、Certicomによって提供された実装を使用していることです。この実装は、FIPS規格に準拠して米国政府の承認を得ています。FIPSは、Federal Information Processing Standard(連邦情報処理標準)の略語です。
SQL Anywhere 10 では、データベースのページサイズと同じサイズのブロックが使用されます。また、SQL Anywhere 10 は、AES及び、AES-FIPSの実装に128ビット・ブロックを使用しています。
暗号化キーの選択
強力な暗号化を使用する場合は、使用する暗号化キーを指定する必要があります。強力な暗号化で使用するキーを作成する時には、簡単に推測のできないキーを作成することが重要です。キーがより長いほど、推測することが困難になります。
暗号化キーは、大文字、小文字、数字、特殊文字を使用して作成することができます。暗号化キーを覚えておくことは非常に重要です。キーを紛失した場合、データベースは永久にアクセスできなくなります。
暗号化キーの変更
Interactive SQLでCREATE ENCRYPTED FILE文を使用して、暗号化キーを変更することが可能です。
このSQL文は、新しい暗号化キーを設定した新しいデータベースを構築して新しいデータベースに既存のデータベースをロードすることによって暗号化キーを変更します。
次のSQL構文は、既存のデータベース(oldfile.db)から新しいデータベース(newfile.db)を作成します。
新しい暗号化キーは、new_keyで、古い暗号化キーは、old_keyです。暗号化アルゴリズムは、AESです。
CREATE ENCRYPTED FILE ‘c:\newfile.db’
FROM ‘c:\oldfile.db’
KEY ‘new_key’
OLD KEY ‘old_key’
ALGORITHM ‘AES’;
この文を、トランザクション・ログ・ファイルと、すべての dbspace またはミラー・ログ・ファイルに対しても実行する必要があります。
暗号化を有効にする
データベース内のテーブルで暗号化を行うには、データベースの作成時に暗号化を有効にする必要があります。暗号化を有効にする場合、単純暗号化と強力な暗号化のどちらを使用するかを決定する必要があります。
テーブルの単純暗号化を有効にする
テーブルに単純暗号化を指定してデータベースを作成するには、次の手順に従います。(コマンドプロンプト)
コマンドプロンプトで次のコマンドを実行します。
dbinit -e -et demo.db
このコマンドは、dbinit ユーティリティを使用して新しいデータベースを作成します。このコマンドは、単純暗号化 (-e)とテーブルの暗号化 (-et)を有効にして、新しいデータベースの名前をdemo.db に設定します。
テーブルに単純暗号化を指定してデータベースを作成するには、次の手順に従います。(SQL)
1. Interactive SQL を起動します。
2. 以下の SQL 文を実行します。
CREATE DATABASE ‘c:\demo.db’
ENCRYPTED TABLE ALGORITHM ‘simple’;
この CREATE DATABASE 文は、テーブルに単純暗号化を指定して新しいデータベースを作成します。
強力な暗号化を有効にする
テーブルに強力な暗号化を指定してデータベースを作成するには、次の手順に従います。(コマンドプロンプト)
コマンドプロンプトで次のコマンドを実行します。
dbinit -ea AES -et -ek myencryptionkey c:\demo.db
このコマンドは、dbinit ユーティリティを使用して新しいデータベースを作成します。このコマンドは、強力な AES 暗号化(-ea AES)とテーブルの暗号化 (-et)を有効にして、暗号化キー (-ek myencryptionkey)を指定し、新しいデータベースの名前を demo.db に設定します。
テーブルに強力な暗号化を指定してデータベースを作成するには、次の手順に従います。(SQL)
1. Interactive SQL を起動します。
2. 以下の SQL 文を実行します。
CREATE DATABASE ‘c:\demo.db’
ENCRYPTED TABLE KEY ‘myencryptionkey’
ALGORITHM ‘AES’;
この CREATE DATABASE 文は、テーブルに強力な AES 暗号化を指定して新しいデータベースを作成し、暗号化キー (myencryptionkey) を指定します。
SQL Central からテーブルの暗号化を有効にする
SQL Central から強力な暗号化されたデータベースを作成するには、次の手順に従います。
1. SQL Central では、[ツール] メニューから [データベースの作成] を選択します。ウィザードの指示に従います。
2. ウィザードの [暗号化設定] ページで、データベースの暗号化を設定します。
a.テーブルの単純暗号化を使用するには、[暗号化を有効にする] チェックボックスをオンにして[単純暗号化] を選択し、[暗号化するようにマーク付けされたテーブルのみを暗号化] を選択します。
b.テーブルの強力な暗号化を使用するには、[暗号化を有効にする] チェックボックスをオンにして[強力な暗号化] を選択し、暗号化キーを指定して [暗号化するようにマーク付けされたテーブルのみを暗号化] を選択します。
テーブルの暗号化
テーブルは、作成時に暗号化できます。
1.Interactive SQL を起動し、データベースに接続します。
2.以下のコマンドを実します。
CREATE TABLE Employees (
UserName CHAR (50),
UserID INTEGER )
ENCRYPTED;
SQL Centralでテーブルを暗号化するには、次の手順に従います。
1. SQL Central を起動し、データベースに接続します。
2. Tables フォルダを選択します。
3. [ファイル] - [新規] - [テーブル] を選択します。
[テーブル作成] ウィザードが表示されます。
[テーブルのデータの暗号化] オプションが選択されていることを確認し、ウィザードの指示に従います。
暗号化されたデータベースのアクセス
単純暗号化が使用されているまたは、テーブルの単純暗号化が使用されているデータベースを起動する場合は、キーは必要ありません。単純暗号化ではキーを使用しないため、データベースまたは、テーブルのデータには接続パラメータだけでアクセスできます。データベース・ファイル自体は難読化されています。
強力な暗号化が使用されているデータベースまたは、テーブルに強力な暗号化が使用されているデータベースを起動する場合は、暗号化キーを指定する必要があります。指定するには、データベース・サーバ起動時に -ep または -ek オプションを使用します。
-ep オプションを使用した場合、暗号化キー入力用ウィンドウが表示されます。このキーは、プレーン・テキストでは表示されません。
dbeng17 -ep c:\demo.db
間違ったキーを入力した場合、エラー・メッセージが表示されデータベース・サーバが終了します。
-ek オプションを使用して暗号化キーを指定することもできます。-ek オプションは、データベース・サーバ・コマンドでデータベース・ファイル名の後に使用します。暗号化キーは、プレーン・テキストで入力します。
dbeng17 c:\demo.db -ek myencryptionkey
データベースに接続する別の方法は、[SQL Central 接続] ダイアログ・ボックス使用します。接続パラメータを入力する場合、データベースの暗号化キーを指定できます。
このページは、以下の英語ページの抄訳です。
https://wiki.scn.sap.com/wiki/display/SQLANY/Using+SQL+Anywhere+Table+Encryption