Coder Social home page Coder Social logo

shaw02 / cms Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 0.0 7.85 MB

CMS(RFC.5652 & PKCS#7)対応 暗号/復号ユーティリティ

Home Page: http://shaw.la.coocan.jp/aes/

C++ 86.40% Assembly 10.27% C 0.23% HTML 3.10%
aes-encryption des-encryption sha256 pbkdf2 pkcs7 cms-rfc sse2 windows

cms's Introduction

CMS(RFC.5652 & PKCS#7)対応 暗号/復号ユーティリティ

概要(Summary)

本ソフトについて

単一ファイルに対して、暗号・復号を行うソフトウェアです。 本ソフトウェアは、暗号化ファイルの構造や、各種のアルゴリズムについて、 国際的な標準類(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

疑似乱数 (※セッション鍵や、初期化ベクタIVに用います。)

- Mersenne Twister + SHA-256

使い方

CUI(コマンドライン・ユーザー・インターフェイス)アプリケーションです。 DOS窓や、コマンドプロンプトで使ってください。 バッチを組みたい人や、D&D用のショートカット用アイコンを作りたい人には、きっと便利かもしれません。 それ以上に、自分の作ったソフトに、クラスをそのまま組み込みたい人にも便利でしょう。 でも、単一ファイルにしか処理をかけないので、複数のファイルをまとめて暗号化したい場合は、別途に圧縮ソフトとかで圧縮して下さい。

注意

基本的に、ソースコードは全て公開していますが、本サイトにて公開されるクラスや、ソースコードの流用をする際は、ご一報ください。 又、本クラスや、ソースコードの利用により発生したいかなる損害につきましては 法律が許容する最大限において責任を負いませんので、使用者の責任の元、ご利用頂ければ幸いです。

元々、AES暗号をSSE2(SIMD)命令を用いて高速化する研究の副産物ですが、現在のCPUではAES暗号処理用のSIMD命令があるので、無用の長物だと思います。

cms's People

Contributors

shaw02 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.