TclDES

TclDESはDESまたは3DESアルゴリズムを使った暗号化/復号化パッケージです。
100% Pure Tclで記述されています。パッケージを使うにはTcl8.3以上が必要です。

DESは1種類の鍵を使って暗号化/復号化を行う標準的な暗号化処理なのに対して、
3DESは3種類の鍵を組み合わせることで、最高水準の堅牢性を持つ暗号化処理を実現できます。
DESにはブロックと鍵の使い方によって ECB 、CBC 、OFB 、CFB の4つのモードがあります。
バージョン0.6では、すべてのモードに対応しています。

モード説明
ECB 基本型と言えるモードで、データをブロックに分割した後、各ブロックを秘密鍵で暗号化します。
CBC 暗号化された前ブロックと、まだ暗号化されていない現在のブロックとの XORをとり、
これを秘密鍵で暗号化します。
ブロックの最初はその前のブロックがないので初期ベクトル(iv)を与えます。
OFB 前ブロックの暗号化結果が次ブロックの XOR をとる値としてフィードバックされます。
CFB ブロックごとに乱数を生成し、これと対応するブロックの XOR をとります。

あいまいな米国の暗号輸出規制

最近のアメリカの暗号製品の輸出規制は緩やかになってきているようですが、
現在も輸出規制を受けない鍵のbit数の上限があいまいになっています。
TclDESのマニュアルによると、64bit(鍵部56bit+チェックサム部8bit)まで
利用可能になっているようです。

インストール

インストールは簡単です。TclDES-0.6.zipまたはTclDESjr-0.6.zipを解凍して、
TclDES0.6またはTclDESjr0.6のフォルダをTcl/libにコピーするだけです。
TclDESjrの方がDESのパッケージで、TclDESの方が3DESのパッケージになります。

DESの使い方

DESは64bitの鍵を1つ使ってデータを64bit単位に暗号化/復号化します。
以下の例はCBCモードを使い、暗号化/復号化時に乱数ivを与えています。

package require tclDESjr

# Keyの生成
set key [::des::keyset create passwd01]
# CBCモード
set mode cbc
# CBCモードのiv
set iv [binary format H16 11224488eeddbb77]
# 文字列
set str {Hello World!}
# 暗号化する
set code [::des::encrypt $key $str $mode $iv]
# 復号化する
set code [::des::decrypt $key $code $mode $iv]
=> Hello World!
# Keyの破棄
::des::keyset destroy $key

3DES (TripleDES)の使い方

3DESは64bitの鍵を3つ使ってデータを64bit単位に暗号化/復号化します。
以下の例はCBCモードを使い、暗号化/復号化時に乱数ivを与えています。

package require tclDES

# Keyの生成
set key [::des::keyset create passwd01passwd02passwd03]
# CBCモード
set mode cbc
# CBCモードのiv
set iv [binary format H16 11224488eeddbb77]
# 文字列
set str {Hello World!}
# 暗号化する
set code [::des::encrypt $key $str $mode $iv]
# 復号化する
set code [::des::decrypt $key $code $mode $iv]
=> Hello World!
# Keyの破棄
::des::keyset destroy $key

今後の課題

TclDESの今後の予定として、暗号化/復号化の性能改善などが挙がっています。
米国の暗号輸出規制の問題さえ片付けば、Tcllibに入る候補となるかもしれません。

マニュアル

参考文献