単一ファイルに対して、暗号・復号を行うソフトウェアです。 本ソフトウェアは、暗号化ファイルの構造や、各種のアルゴリズムについて、 国際的な標準類(ITU, Fips, PKCS, JIS, RFC等)に準拠しており、 これらに準拠している他のソフトウェアと互換性があります。 暗号化ファイルは、暗号メッセージ構文(CMS:RFC.5652)に準拠しており、以下の特徴があります。
- 疑似乱数を用いる事により、同じパスワードでも毎回異なった暗号文が生成されます。
その為、例えば定時報告等、一定時間で同一内容の文章が送られる場合において、暗号文が異なるため暗号化前の文章が推測不能になります。
- 用いたアルゴリズムとそのパラメータ(平文の鍵やパスワードを除く)はファイル中に保存されるため、
復号時の際は正しい鍵もしくはパスワードを指定するだけで復号できます。
又、AES暗号処理部では、アセンブリ言語にてSIMD(SSE2)命令セットを使用して記述されているため、従来より高速に処理可能です。
※CUI(コマンドライン・ユーザー・インターフェイス)アプリケーションです。
これらのデータの構造はASN.1(抽象構文表記法)にて定義されています。 本ソフトでは、DER(※BERをより厳しくした規則)での符号化に対応しています。
暗号文、電子証明書などの構文を定める規格で、PKCS#7の上位互換となる規格です。 本ソフトでは、暗号文の処理に対応しています。 対応するデータ・タイプ
- 暗号化データ(Encrypted-Data)
暗号ファイルには、暗号文のみが格納されます。鍵管理はされません。
- 封筒化データ(Enveloped-Data)
鍵管理手法(Key Management Algorithm)により暗号鍵を管理する暗号ファイルです。
コンテンツのダイジェスト値(バイト列)を求めるためのアルゴリズムです。 また、HMACアルゴリズムにおいても、このアルゴリズムが土台になります。
- SHA-1 … oid = 1.3.14.3.2.26
- SHA-224 … oid = 2.16.840.1.101.3.4.2.4
- SHA-256 … oid = 2.16.840.1.101.3.4.2.1
暗号鍵を管理する手法です。 本ソフトでは、パスワードによる鍵管理手法に対応しています。
- 鍵導出による鍵管理
パスワードを用いて暗号鍵を管理する手法です。
- id-alg-PWRI-KEK … oid = 1.2.840.113549.1.9.16.3.9
コンテンツを暗号・復号するためのアルゴリズムです。
- DES-CBC … oid = 1.3.14.3.2.7
- DES-3EDE-CBC … oid = 1.2.840.113549.3.7
- AES-128-CBC … oid = 2.16.840.1.101.3.4.1.2
- AES-192-CBC … oid = 2.16.840.1.101.3.4.1.22
- AES-256-CBC … oid = 2.16.840.1.101.3.4.1.42
コンテンツに改ざんが無いか確認するためのアルゴリズムです。 その他、鍵導出関数PBKDF2にも用いられ、本ソフトではこの用途にて使用しています。
- HMAC-SHA-1 … oid = 1.3.6.1.5.5.8.1.2
- HMAC-SHA-224 … oid = 1.2.840.113549.2.8
- HMAC-SHA-256 … oid = 1.2.840.113549.2.9
パスワードを用から、コンテンツ用の暗号鍵を計算するアルゴリズムです。
- PBKDF2 … oid = 1.2.840.113549.1.5.12
- Mersenne Twister + SHA-256
CUI(コマンドライン・ユーザー・インターフェイス)アプリケーションです。 DOS窓や、コマンドプロンプトで使ってください。 バッチを組みたい人や、D&D用のショートカット用アイコンを作りたい人には、きっと便利かもしれません。 それ以上に、自分の作ったソフトに、クラスをそのまま組み込みたい人にも便利でしょう。 でも、単一ファイルにしか処理をかけないので、複数のファイルをまとめて暗号化したい場合は、別途に圧縮ソフトとかで圧縮して下さい。
基本的に、ソースコードは全て公開していますが、本サイトにて公開されるクラスや、ソースコードの流用をする際は、ご一報ください。 又、本クラスや、ソースコードの利用により発生したいかなる損害につきましては 法律が許容する最大限において責任を負いませんので、使用者の責任の元、ご利用頂ければ幸いです。
元々、AES暗号をSSE2(SIMD)命令を用いて高速化する研究の副産物ですが、現在のCPUではAES暗号処理用のSIMD命令があるので、無用の長物だと思います。