技術情報

実装技術的なことの情報です。

インストールと64ビット環境

本アプリの実行に必要な、Framework,J#,SQL Server Compactをインストールします。

コンパイルをX86コンパイルで行っているため、64ビットOS上ではWOWにより32ビットアプリケーションとして動作します。
以下に、インストール手順を示します。
各ステップのインストール毎に、セキュリティパッチの適用が必要な場合があるので、ダウンロード場所の説明をご確認ください。
  1. .NET Framework 3.5 Service Pack 1のインストール
    インストーラの指示に従ってインストールしてください。

  2. ライセンスキーをインストールする場合は、J#ライブラリをインストールします。
    アプリの使用開始後(フリー状態)でも、必要になった時にインストールできます。(アプリの再インストールは不要)
    Visual J# 2.0 再頒布可能パッケージ Second Edition (x86)のインストール
    インストーラの指示に従ってインストールしてください。
    64ビット用はこちら
    動作リストには載っていませんが、Windows 2008 Serverでの動作を確認。こちらは、参考までに。

  3. Visual J# 2.0 再頒布可能パッケージ Second Edition 日本語 Language Pack (x86) のインストール
    インストーラの指示に従ってインストールしてください。
    64ビット用はこちら

  4. Microsoft SQL Server Compact 3.5 Service Pack 2
    インストールについては、ダウンロードページの中段以降にある、注意書きを参照してください。
    簡単に説明すると、このページで取得したファイル(SSCERuntime-JPN.exe)を実行して、更にファイルを展開後、
    32ビット環境で実行する場合は、32ビット用のインストーラSSCERuntime_x86-JPN.msiを適用します。そして、
    64ビット環境で実行する場合は、更に64ビット用のインストーラSSCERuntime_x64-JPN.msiも適用します。
    本アプリでは、SQL Compactの実行に必要なdllをアプリケーションとともにインストールしているため、32ビット環境では
    SQL Compactをインストールしなくても動作可能ですが、64ビット環境では前述のWOWで動作するため、
    64ビット用のインストールと、そのための32ビット用もインストールします。

  5. 必要な全てのインストールを完了後、本アプリのSetup.exeを実行します。

先頭↑

再インストールとアップデートインストール


先頭↑

暗号化処理

本アプリで実装している、各暗号化方式の技術情報です。
公開鍵暗号方式
RSA  鍵長は1024~4096bitで任意(デフォルトは2048)
   これは2011年時点で、RSA1024bitの安全性が懸念されているための対応です。
   ベリサインなどのデジタル証明書も、2048bit化が進んでいます。
共通鍵暗号方式
AES  鍵長は256bit
3DES  鍵長は192bit
DES  鍵長は64bit

各方式とも、実装時点での最長値です。

暗号化には、.NETライブラリ(Framework3.5SP1)を使用しています。
共通鍵はいずれの場合も、パスワードを元にRFC2898による暗号情報を用いて暗号化をしています。

先頭↑

圧縮処理


圧縮処理は、J#ライブリ(vjslib)または、統合アーカイバ(7Zipを同梱)を使用しています。デフォルトは7Zipです。
先頭↑

鍵・パスワード・ライセンスキーの保管

公開鍵
暗号化して保管しています。
個人用鍵は、オプション設定で、DPAPIAESの選択になります。
共用鍵・グループ鍵は、AESです。
AESは、前述の暗号化処理と同じものです。DPAPIは、PCの固有情報から暗号化するため
そのPCでしか復号できない方式です。
暗号データが何らかの手段で盗難されても比較的安全な反面、ディスククラッシュなどで
別PCでレスキュー作業をしても、復号できないリスクがあります。(データベースの定期的なバックアップを推奨します)
パスワード
ハッシュ化して保管しています。
方式は、HMAC-SHA512です。
これは不可逆値(この値からは元の情報には戻せない)なので、パスワードそのものがわからない限り、
盗難されても現実的な解読は不可能とされています。
ライセンスキー
暗号化して保管しています。
DPAPIを使用しているため、上記の通り、他のPCでは復号できない為、ライセンスキーの保護になります。

先頭↑

アプリケーションデータ

システム固定データのうち、DBパスワード等の秘匿データを、Qcrypt.exe.configに持たせています。
これは、インストール時に、暗号化処理(DPAPI)しているため、インストーラを使用しないでセットアップ(インストール先PCを換える)しても 起動できない仕組みになっています。インストールフォルダにあります。
一部のユーザ設定(起動時のReadme表示抑制と、最後に選択した暗号化方式の識別情報)も、app.configに保持していますが、これは非暗号化データです。
これは、各ユーザの環境にある、user.configになります。
例:vistaの場合、C:\Users\ユーザ名\AppData\Local\トムキャットシステム\QCrypt.exe_Url_x1y04bkxglw5huta1emkksjvs3ioohkc\2.0.0.0
このファイルはアンインストールしても残るため、同じセットアップを使用すれば再インストール時に設定を流用できます。
完全に削除する場合は、手作業での削除になります。
先頭↑

ショートカットファイル

右クリックメニュー「送る」の機能と、スタートアップについての説明です。
これらは、対応するシステムフォルダにショートカットファイルを作成することで実現しています。
また、パラメータ指定により、それぞれの動作を特定しています。
右クリック
Vista システムドライブ:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\SendTo
XP    システムドライブ:\Documents and Settings\ユーザ名\SendTo
スタートアップ
Vista システムドライブ:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
XP    システムドライブ:\Documents and Settings\ユーザ名\スタート メニュー\プログラム\スタートアップ

アンインストール時に、これらのショートカットが作成されていれば削除しますが、なんらかの要因で
残ってしまう場合は、お手数ですが上記フォルダより直接ショートカットを削除してください。

先頭↑

クリップボード自動○○化

クリップボードイベントをフック(イベントを通知してもらうようにイベントハンドラを登録する)することで
コピー操作を検出しています。なお、カット(Ctrl+X)操作でも作動します。
先頭↑

右クリックで渡せるファイル数の制限

右クリックで暗号化・復号化する際のファイルの選択数には一部制限があります。
NTカーネル系のVistaは2048文字分のファイル名になります。
これは、アプリ本体と、コマンドオプションも含むため、更に減ります。
1ファイル20文字のフルパスとして100件ぐらいが目安になります。
このような場合は、一旦フォルダに移し、フォルダの暗号化とすると、件数によらずに暗号化できます。
先頭↑

関連付けファイル

拡張子、.encを本アプリケーションに関連付けた場合、ダブルクリックで復号できます。
暗号化方式の切替は、タスクトレイメニュー・環境設定より切替えられますが、パスワード(共通鍵)は設定したものになります。
パスワードを動的に変更して復号化する場合は、右クリックメニューでの操作になります。
先頭↑

鍵ファイルのフォーマット

個人鍵・グループ鍵ファイルのフォーマットについては、以下のように定義しています。
先頭↑

統合アーカイバ

統合アーカイバについて、簡単に補足します。
先頭↑