BDES(1) FreeBSD 一般コマンドマニュアル BDES(1)
名称
bdes − Data Encryption Standard (DES) による暗号化 / 復号化 |
書式
bdes [−abdp] [−F N] [−f N] [−k key] [−m N] [−o N] [−v vector] |
解説 |
bdes ユーティリティは FIPS PUB 81 で規定されるすべての DES モード処理を実 装しています。新しい暗号化フィードバックモード (alternative cipher feedback mode (CFB)) と両方の認証モードも含まれます。 bdes ユーティリティ は標準入力を読んで標準出力へ書き出します。オプションを指定しなければ、入 力は暗号化ブロック連鎖モード (cipher block chaining mode (CBC)) で暗号化 されます。暗号化と復号化に同一の鍵を使うことで平文を復元します。 電子暗号表モード (electronic code book mode (ECB)) 以外のすべてのモードは 初期化ベクトル (initialization vector) を必要とし、指定されない場合は 0 ベクトルが使われます。コマンドラインに key (鍵) を指定しない場合は、対話 的に入力を求めます (詳しくは getpass(3) を参照して下さい)。 オプションは次の通りです: |
−a
鍵と初期化ベクトル文字列は ASCII 文字列として扱われ、 ‘‘0X’’, ‘‘0x’’, ‘‘0B’’, ‘‘0b’’ ではじまる文字列に対する特別の変換はされま せん。このフラグは、鍵と初期化ベクトルの 両方に作用します。 −b −d −F N −f N −k key −m N −o N −p −v vector 鍵と初期化ベクトルは ASCII 文字列として与えられ、そのままのビット並びとし て扱われます。 ‘‘0X’’ あるいは ‘‘0x’’ ではじまっている場合、ビット並びを 表す 16 進数値として扱われます。 ‘‘0B’’ あるいは ‘‘0b’’ ではじまっている 場合は、ビット並びを表す 2 進数値として扱われます。どちらの場合でも、最初 の 64 ビットまでが鍵あるいは初期化ベクトルとして使われ、 64 ビットに満た ない場合は 64 ビットになるまで 0 のビットが追加されます。 DES 標準に従い、鍵文字列の各文字の最下位ビットは削られます。ほとんどの ASCII 文字の最上位ビットは 0 なので、単純に下位ビットを削ると、有効な鍵空 間の大きさは 2^56 個から 2^48 個まで縮小します。これを防ぐため、最上位 ビットは最下位ビットに部分的に依存する関数であることが必要です。例えば、 最上位ビットは奇数パリティを満たすような値になるように設定されるようにす る方法があります。これで鍵空間の大きさが保持されます。このパリティビット の再設定は、鍵が 2 進数あるいは 16 進数で与えられた場合には 行なわれませ ん。さらに、 ASCII の鍵であっても再設定しないようにできることを注意してお きます。 DES は非常に強固な暗号法とされており、 table lookup attacks, key search attacks, および Hellman’s time-memory tradeoff (これらはすべてたいへんな 手間と時間を要します) を除けば、公の文献に関する限り DES を突破する解析法 は知られていません。鍵の選択と鍵そのものの保安が bdes の信頼性を決定する ものと信じて間違いありません。 実装に関する注 |
このプログラムと互換性のあるソフトウェアを実装したい人は、以下の点に注意 してください。このソフトウェアは Sun Microsystems, Inc. が公開している data encryption standard の実装と互換であるものとされています。 電子暗号表 (ECB) モードおよび暗号化ブロック連鎖 (CBC) モードでは、平文が 64 ビット (8 バイト = 1 ブロック) 単位で暗号化されます。平文のファイルが 正しく暗号化されることを保証するために、 bdes は (内部動作として) 1 から 8 バイトを追加し、そのうちの最後のバイトは、最後のブロックが平文のファイ ルからの入力として何バイトを読み込んで暗号化したかを示します。したがっ て、復号化のときには最後のブロックは 0 から 7 文字までの平文データと、末 尾のバイトとしてその文字数を含みます。復号化の際にファイルの最後のバイト が 0 から 7 までの間の整数でなかった場合、ファイルが破壊されているか間 違った鍵が指定されたかのどちらかであることに注意してください。同様の機構 が OFB と CFB のモードでも利用されていますが、それらでは入力の長さがモー ドサイズの倍数であることが必要なだけで、最後のバイトは、0 か、モードサイ ズとして使われるバイト数から 1 を減じた数値になります。 (これはモードサイ ズが 8 の倍数であることが必要な理由の一つです。) Sun の実装と異なり、最後のブロック内の利用されないバイトは不定ではなく、 一つ前のブロックの対応するバイトと同じになります。これにより、暗号化の強 度を損なうことなく、処理速度と移植性を改善しています。 鍵が ASCII 文字列で入力された場合、鍵の各文字のパリティビットは奇数パリ ティとなるように設定されます。 Sun の実装と異なり、 2 進あるいは 16 進の 鍵もコマンドラインで指定できますが、その場合、パリティビットが再設定され ることは ありません。これにより任意のビットパターンを鍵として試すことがで きます。 Sun の実装では常に初期化ベクトルを 0 (全部 0) としています。 bdes でも既 定動作は同様ですが、コマンドラインから指定して変更できます。 |
関連項目
Data Encryption Standard, Federal Information Processing Standard#46, National Bureau of Standards, U.S. Department of Commerce,Washington DC, January 1977. DES Modes of Operation, Federal Information Processing Standard #81, National Bureau of Standards, U.S. Department of Commerce, WashingtonDC, December 1980. Dorothy Denning, Cryptography and Data Security, Addison-WesleyPublishing Co., Reading, MA, 1982. Matt Bishop, Implementation Notes on bdes(1), Technical ReportPCS-TR-91-158, Department of Mathematics and Computer Science,Dartmouth College, Hanover, NH 03755, April 1991.
免責条項
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ‘‘AS IS’’ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
バグ
DES が今後の数年間も安全であるかどうかについて激しい論争がありました。専 用ハードウェアの出現により前述の各種攻撃方法の費用が低減されることはあり 得るので、これらの攻撃方法が計算量の点から非現実的とはもはや言えません。 鍵あるいは鍵の一覧がメモリに納められるので、メモリを読み出せる場合は暗号 化の安全性が損なわれる可能性があります。さらに、コマンドラインで鍵や初期 化ベクトルを指定したときには、プログラムの引数を表示するプログラムによっ て傍受される可能性もあります。これを回避するために bdes は引数を上書きし ますが、残念ながら、これらが競合することは明らかで、現状では回避できませ ん。 ある種の鍵は潜在的な危険を持ち込むことになるので、使用を避けるべきです。 これらの鍵は、 弱い鍵 (weak key) と やや弱い鍵 (semiweak key) と呼ばれて おり、以下のものです (16 進数表記で p を 0 あるいは 1 とし、 P を ‘e’ あ るいは ‘f’ とする) : |
0x0p0p0p0p0p0p0p0p 0x0p1P0p1P0p0P0p0P これは DES アルゴリズムに固有の性質です ( |
Moore and Simmons, " Cyclestructure of the DES with weak and semi-weak keys", Advances inCryptology − Crypto ’86 Proceedings, pp. 9-32, Springer-Verlag NewYork, 1987. を参照)。 FreeBSD 10.0 June 29, 1993 FreeBSD 10.0