暗号エンジン「C4S」 の COM ラッパー 「ComC4S.dll」





変更履歴





暗号エンジン「C4S」 の COM ラッパー「ComC4S.dll」 とは


「ComC4S.dll」 は、(株)フォーカスシステムズが提供しているカオス理論に基づく暗号エンジン「C4S」 を COM 経由でアクセスするための COM ラッパーです。
これにより、ASP(Active Server Pages) や WSH(Windows Script Host)などから「C4S」を用いた暗号化処理が可能となります。
この COM ラッパーは、セントラル・コンピュータ・サービス(株)が無償で提供しているツールです。


「ComC4S.dll」 のダウンロード


「ComC4S.dll」 は こちら からダウンロードできます。
ComC4S.dll is 258,162byte
ComC4S.LZH is 103,311byte


「ComC4S.dll」 のインストール


  1. まず、(株)フォーカスシステムより「C4S」 のライセンスを取得して、C4S.dll をシステムディレクトリ(%SystemRoot%\System32) にインストールしてください。
  2. BASE64 符号化に sBase64.dll を用いていますので、ここからタウンロードして、システムディレクトリ(%SystemRoot%\System32) に sBase64.dll をコピーしてください。
    付属している他のファイルは必要ありませんので削除して結構です。
  3. 「ComC4S.dll」をダウンロードしてください。
  4. 解凍して出来た 「ComC4S.dll」を任意のディレクトリにコピーしてください。
    (ComC4S.dll に関する注意を参照)
  5. コピーされたディレクトリで、regsvr32.exe を実行して ComC4S.dll をレジストリに登録。
    (同梱されている regsvr32.bat を ComC4S.dll と同一ディレクトリにコピーして実行することでも可能)
  6. C4S.dll,ComC4S.dll,sBase64.dll のアクセス権を適切に設定してください。
    (ASP で利用する場合は、インターネット匿名ユーザの実行アクセス権が必要です)
  7. 以上で、
    VBScript,JScript,VisualBASIC などから C4S 暗号エンジンを利用する事ができます。
    同梱されている ComC4STest.vbs は WSH&VBScript でのサンプルです。



ComC4S.dll に関する注意


現在提供されている ComC4S.dll は、「C4S」の評価版を元にコンパイルされています。
よって、「C4S」の製品版では動作しません。
製品版での動作をご希望の場合、製品版のライブラリファイル、及びヘッダファイルを元に再コンパイルを行ってください。


ComC4S.dll の使い方


WSH(Windows Script Host)を例にとります。
REM オブジェクトを生成
Set obj = WScript.CreateObject("ComC4S.Crypt.1")

REM いろいろとメソッドを実行
REM 例えば、暗号化


REM まず、キー文字列(パスワードみたいなもの)をセット
obj.SetKeyValue("chaos")

REM 暗号化メソッドを実行
ret = Obj.EnCrypt("暗号化したい文字列")

REM オブジェクトを解放
Set obj = Nothing


ComC4S.dll のメソッド一覧


SetKeyValue(文字列)
内容 暗号化/復号化を行うためのキー文字列(パスワード)をセットする。
引数 キー文字列(パスワードみたいなものです)
戻り値 なし
IsError 値
成功 0
失敗 0 以外
2 : キー文字列がセットできない
引数が空文字列です


EnCrypt(文字列)
内容 暗号化をしてから、Base64 エンコードを行う。
引数 暗号化したい文字列
戻り値 暗号化され BASE64 エンコードされた文字列
IsError 値
成功 0
失敗 0 以外
1 : メモリが確保できなかった
2 : キー文字列がセットされていない
SetKeyValue() を実行してください
5 : 不測のエラー


DeCrypt(文字列)
内容 暗号化され BASE64 化されている文字列を、元に戻します。
引数の文字列が、BASE64 符号化として正当かどうかのチェックは実施していない。
(byte 数が 4 の倍数かどうか程度しかチェックしていない)
引数 復号化したい BASE64 エンコードされた暗号文字列
戻り値 復号化された文字列
IsError 値
成功 0
失敗 0 以外
1 : メモリが確保できなかった
2 : キー文字列がセットされていない
SetKeyValue() を実行してください
3 : 引数が Base64 デコード文字列として不適当
(byte 数が 4 の倍数ではない)
5 : 不測のエラー


FileEnCrypt(ファイル1,ファイル2)
内容 ファイルに対する暗号化処理
(暗号処理後に BASE64 符号化は実施していない)
引数 ファイル1 に暗号化したい(絶対パス指定の)ファイル名
ファイル2 に暗号結果を記録する(絶対パス指定)のファイル名
ファイル2 を "" (つまり空文字列)で指定した場合、ファイル1 に .c4s がついたファイル名となる
戻り値 なし
IsError 値
成功 0
失敗 0 以外
1 : メモリが確保できなかった
2 : キー文字列がセットされていない
SetKeyValue() を実行してください
5 : 不測のエラー
6 : 入力ファイルがオープンできなかった
7 : 出力ファイルがオープンできなかった


FileDeCrypt(ファイル1,ファイル2)
内容 ファイルに対する復号化処理
引数 ファイル1 に復号化したい(絶対パス指定の)ファイル名
ファイル2 に復号結果を記録する(絶対パス指定)のファイル名
ファイル2 を "" (つまり空文字列)で指定した場合、ファイル1 に .c4s がついたファイル名となる
戻り値 なし
IsError 値
成功 0
失敗 0 以外
1 : メモリが確保できなかった
2 : キー文字列がセットされていない
SetKeyValue() を実行してください
5 : 不測のエラー
6 : 入力ファイルがオープンできなかった
7 : 出力ファイルがオープンできなかった


IsError()
内容 直前のメソッドが成功したかどうか。
引数 なし
戻り値 前のメソッドが成功したかどうか
0 : 成功した
1 : メモリが確保できなかった 2 : キー文字列が指定されていない、指定できない。
SetKeyValue() を実行してください。 3 : 引数が BASE64 デコードされていない。
byte 数が 4 の倍数ではない。
5 : 不測のエラー
6 : 入力ファイルがオープンできなかった
7 : 出力ファイルがオープンできなかった


IsC4SVersion()
内容 C4S エンジンのバージョンを取得
引数 なし
戻り値 バージョンを示す文字列
IsError 値
成功 0
失敗 0 以外
1 : メモリが確保できなかった



使用上の注意


データを暗号化してもキー文字列(SetKeyValue() で指定するパスワードみたいなもの)が漏洩しては意味がありません。
キー文字列の管理は厳重に行わなければどんな強固な暗号システムでも解読されてしまいます。
あくまで、一つのアイデアとして、ASP の場合を取り上げます。
以下のように キー文字列をレジストリに保管するという方法です。
(当然ですが、レジストリのアクセス権、監査などが適切に設定されている事)
(さらに、ASP ソースコードの流出問題にも気を使う必要があります。)
Application("KeyValue") 変数に HKLM\Software\Web\Password からキー文字列を取得する。
Sub Application_OnStart
Dim WSHObj
Set WSHObj = Server.CreateObject("Wscript.Shell")
Application("KeyValue") = WSHObj.RegRead("HKLM\Software\Web\Password")
Set WSHObj = Nothing
End Sub
WSH のオブジェクトを利用することで ASP でもレジストリを読み出せるので、HKLM\Software\Web\Password という値にキー文字列を格納している。
Application_OnStart 関数なので、IIS の起動時(再起動時)以外は、このレジストリに対してはアクセスがないはずである。


注意事項


本ソフトウェアは所属する組織内部および個人のコンピュータ上において、自由にコピーおよび使用ができます。
ソースコードを改変して使用する場合については、ソースコードやドキュメントにおける原作者の著作権表示を保持するように願います。
本ソフトウェアの再配布を希望される場合は、作者の許可を得るよう願います。

なお、本ソフトウェアの機能、動作、性能について、作者は一切保証いたしません。また本ソフトウェアの使用に起因する障害、動作不良、セキュリティ侵害等、いかなる結果に対して、作者および作者の雇用者は一切の責任を負いません。すべて使用者の責任において、ご使用願います。バグ報告は作者まで直接、電子メールでお願いします。


ソースコードの説明





「ComC4S.dll」 作者 佐名木智貴
セントラル・コンピュータ・サービス株式会社