1997年 2月 8日

ファイルの暗号化とdes のmake

Linux 上でファイルを暗号化する方法を紹介します。
これはLinux 以外のUNIX にもあてはまります。
具体的には、Linux でのdes-dist のmake 方法と使い方についてのおはなしです。

ファイルの暗号化

内容を見られたくない重要なファイルがあるとします。
UNIX では、持ち主だけがread できるようにパーミッション を設定することで、そのようなファイルを保護することができそうです。

本当ですか?

root ユーザは何でもありなので、root さんには見られてしまいますね。
あなただけがroot パスワードを知っている場合でも、Linux の場合はインストール用ブートフロッピー などで起動するとパスワードなしでroot になれます。
そのあとターゲットパーティションを適当にマウントすると、 パーミッション保護を突破できてしまうのも怖いところです。

大切なファイルは暗号化しましょう。
暗号化したファイルは暗号化パスワードをしられないかぎり、root 権限が あっても解読は困難です。

暗号化を行うプログラムとしては、crypt, des, pgp などがあげられます。
Slackware などのLinux インストールパッケージでは、 各国の法律に違反することがないように、 暗号化を行うためのプログラムが一切含まれていません。
crypt は暗号化の手法があまり複雑ではなく、 とりわけ英文テキストファイルがもとのデータである場合は比較的容易に解読されてしまうそうです。

ここではある程度の強度(解読されにくさ)をもった des コマンドのmake 方法と使い方を紹介します。

ファイルの暗号化に関心をもってもらったり、 ファイルの暗号化をしたいけど何をどうすればよいかわからない方の参考になれば幸いです。

des-dist をLinux 上でmake

des は、それが開発されたアメリカから取ってくることは禁じられています。
そこでヨーロッパで作成されたdes-dist.tar.gz をarchie で検索して取り寄せます。
日本国内では、例えば東京大学からget できるようです。
東京大学からget

このパッケージはそのままではSlackware3.1 でインストールしたLinux システムでmake できませんでした。
私が行った修正をパッチにしましたので、これも持っていって下さい。
des-dist.linux.patch

make 方法

  1. ファイルの展開
          % zcat des-dist.tar.gz | tar xvf -
        
    crypt-dist というディレクトリが作成され、 その中にファイルが展開されます。
    ディレクトリの名前にcrypt という文字が入っていますが、crypt コマンドではなくdes コマンドのキットです。御心配なく。


  2. パッチをあてる
    crypt-dist のひとつ上のディレクトリで次のようにパッチをあてて下さい。
          % cat des-dist.linux.patch | patch -p0
        
  3. make の実行
          % cd crypt-dist
          % make -f Makefile
        
  4. インストール
          % cd alodes/prog
          % su
          Password:
          # cp des /usr/local/bin
          # cd ../man
          # cp des.1 /usr/local/man/man1/
          # cp libdes.3 /usr/local/man/man3
        

des の使い方

以下の説明で、

target 暗号化したい元のファイル
target.des 暗号化を実施したファイル
target.org 復号化を行い、復元した元のファイル

とします。

  1. 暗号化
  2. 暗号化は次のように -e オプション を用いて行います。
        % des -e target target.des
        Enter Keyward:
        Verify:
    
    考えたパスワードと打ち込んだパスワードがもし違っていると復号できなくなってしまいます。そこで確認のために2回入力するわけです。

    これはパイプを使い、次のようにすることもできます。
        % cat target | des -e > target.des
        Enter Keyward:
        Verify:
    
    暗号化した後、元のファイルを消しておくことをお忘れなく。

  3. 復号化
  4. 復号する場合は暗号化の時に用いたパスワードで次のようにします。
    -d オプションで復号化を指示します。
        % des -d target.des target.org
        Enter Keyward:
        Verify:
    
    これは次のように行うこともできます。
        % cat target.des | des -d > target.org
        Enter Keyward:
        Verify:
    

  5. テープに暗号化してバックアップ
  6. 私が暗号コマンドを使うのはテープにバックアップする時がほとんどです。
    テープにバックアップする場合、次のようにパイプでdes を通すと暗号化されたデータを書き込めます。
        % tar cvf - ./project | des -e | dd of=/dev/st0
        Enter Keyward:
        Verify:
    
    ここで、project はバックアップしたいディレクトリ名で/dev/st0 は使用しているテープデバイスに置き換えて下さい。

    こうして書き込んだテープを読む場合は次のようにします。
        % dd if=/dev/st0 | des -d | tar xvf -
        Enter Keyward:
        Verify:
    
    ですが、des による暗号化は結構CPU 負荷がかかります
    直接テープに書く場合と比べ、かなり遅くなるので注意して下さい。

わたし流のLinux メニューへ戻る
メインメニュー へ戻る

ご意見箱