IBM iが提供するデータの暗号化API
IBM iが提供するAPIの仕様の詳細な説明は、IBM i Information Centerで「Cryptographic Services API」を参照すると確認できます。
Cryptographic Services APIは、データ暗号化の機能を多岐にわたって提供しているため、APIも数多くありますが、
基本的なデータの暗号化・復号化に際して使用するAPIは、以下の3種です。
1.ハッシュ値計算 Calcurate Hash (QC3CALHA)
ハッシュ値計算は、データ暗号化・復号化の際に指定するパスワードを保管する目的で使用されます。
パスワード自体を、そのまま保管すると、機密情報の漏洩につながりますので、
パスワードの内容からハッシュ値計算を行い、その計算結果をデータベースファイルに保管します。
機密情報を扱う処理を実行する際は、パスワードを入力させ、その入力内容のハッシュ値計算を行い、
その計算結果と、保管されているパスワードのハッシュ値とを比較してパスワードの正誤判定を行います。
ハッシュ値計算とは、元のデータの内容から特定のアルゴリズムで計算処理を行って値を得る計算方法ですが、
計算結果から元の値を逆算することは理論的に困難であり、且つ、異なるデータ内容からは異なる計算結果のハッシュ値が一般的に得られ、
同じハッシュ値が得られる別々のデータを求めることも理論的に困難であることから、
パスワードをファイルに保管する際に用いられる計算処理です。
ハッシュ値計算は、回数が少ないと総当たり攻撃によりパスワードが判明してしまう脆弱性につながりますので、
1回目はパスワード自体を元にハッシュ値計算を行い、2回目は1回目の結果を元にハッシュ値計算を行う、
次は2回目の結果を元に3回目の計算を行うという繰り返しの計算処理を、1,000回、10,000回などシステム要件に応じて十分な回数行うことで、
総当たり攻撃によるパスワード判明を時間的に困難にすることで、脆弱性を防ぎます。
2.データ暗号化 Encrypt Data (QC3ENCDT)
機密情報データを登録する際に、データを暗号化するのに用いるAPIです。
処理の実行時にはパスワードを入力させて、ハッシュ値計算により正誤判定して、
正しいパスワードであることが確認できたら、そのパスワードをパラメータにして機密情報データの暗号化を行います。
暗号化した結果を、データベースファイルに保管します。
機密情報データを暗号化する際のアルゴリズムは、IBM i のAPIにおいて、複数の種類のものが提供されていて、
パラメータの指定により選択できるようになっています。各種の暗号化アルゴリズムは、
無線LANなどでも使用されている、世界標準として採用されているものから選択できるようになっており、
データのサイズや、アルゴリズムの強度、計算処理速度など、システム要件に応じて適したものを選択できるようになっています。
3.データ復号化 Decrypt Data (QC3DECDT)
機密情報データを出力する際に、データを復号化するのに用いるAPIです。
処理の実行時にはパスワードを入力させて、ハッシュ値計算により正誤判定して、
正しいパスワードであることが確認できたら、そのパスワードをパラメータにして
データベースファイルに保管されている、暗号化された機密情報データの復号化を行います。
復号化した結果を、画面・帳票・出力データなどに出力します。
データの復号化の際も、アルゴリズムの選択などパラメータで処理方法は選択できるようになっていますので、
暗号化の際に選択したパラメータと合わせることで、暗号化と復号化を正しくセットで行うことが出来ます。