xyzzy を用いたパスワード管理
1. はじめに
xyzzy を用いたパスワード管理について述べます。
パスワードを覚えておこうとすると、
- 強度の低いパスワードになりがちで、総当り攻撃に脆弱である。
- 多くのマシンやサイトで同じパスワードを使用しがちであるので、芋づる式にクラックされる危険がある。
といった問題が生じます。
そこで、紫藤は原則としてマシンやサイトごとに異なるパスワードを使用し、
暗号化したファイルにそれらを書き留めています。こうすれば、上に挙げた2つの欠点はなくなり、
紙に書き留めた場合のように盗み見られる危険もありません。
この方法でパスワードを管理するには、
- 強度が強く、かつタイプしやすいパスワードを自動生成するスクリプト
- 暗号化ファイルを取り扱うスクリプト
が必要です。
xyzzy-lisp でそのようなスクリプトを書いてみたので、紹介します。
2. インストールと設定
2.1. インストール
インストールの手順は以下の通りです。
- pw.lzh を解凍すると
以下のディレクトリやファイルが生成します。これらのファイルの説明は表1を見てください。
/ccrypt-1.7.cygwin-i386 -- ccrypt.exe
-- cygwin1.dll
-- その他
/xyzzy -- pw.cpt
-- stat-spell.dat
-- /site-lisp -- pw.l
-- pw.lc
- ccrypt.exe, cygwin1.dll を PATH の通ったディレクトリにコピーする。
- pw.cpt, stat-spell.dat を xyzzy.exe のあるディレクトリにコピーする。
- pw.l, pw.lc を /site-lisp にコピーし、ダンプファイルを再作成する。
- .xyzzy に以下の行を追加する。
(in-package "editor")
(autoload 'open-pw "pw" t)
(autoload 'make-pw "pw" t)
(in-package "user")
(import '(ed::make-pw ed::open-pw ed::save-pw ed::*pw-file* ed::*crypt-app* ed::make-ss ed::*spell-dat*))
表1:ファイルの説明
ファイル |
説明 |
ccrypt.exe |
Peter Selinger 作の暗号化プログラムです。アルゴリズムとして
AES を使用しています。
詳しくは http://ccrypt.sourceforge.net/ をみてください。 |
cygwin1.dll |
ccrypt.exe などの UNIX 由来のプログラムを Win32 で動かすための DLL です。 |
pw.cpt |
パスワードファイルの雛形です。復号鍵は 'qwerty' です。 |
stat-spell.dat |
不思議の国のアリス から作成した連続する2文字の頻度データです。 |
pw.l |
スクリプトのソースです。 |
pw.lc |
pw.l をバイトコンパイルしたものです。 |
2.2. 設定
このスクリプトは、頻度データ (*spell-dat*)、暗号化されたパスワードファイル (*pw-file*)を使用します。
pw.l の冒頭にグローバルパラメターのリストがありますので、そこをいじるか、
.xyzzy に記述して、頻度データとパスワードファイルを好みの名前に変えてください。
3. 使い方
3.1. パスワードの作成
M-x make-pw
と入力すると、下に示すように、頻度データを基にそれらしいパスワードが 10 個作られます。
その中から気に入ったものを選んで使います。
1: "shee v)358"
2: "W)g,-pEv.660"
3: "m,s_t, S,223"
4: "sAtoPt)482"
5: "ioN Te?h_321"
6: "aveaNg@486"
7: "wsou_mp)462"
8: "Hit oLeR_551"
9: "ng_stth?275"
10: "inckY@tH_218"
パスワード生成のアルゴリズムは
(もうひとつの Scheme 入門) 13. 連想リスト、ハッシュ表
に書いたものとほとんど同じです。
3.2. 暗号化されたパスワードファイルを開く
M-x open-pw と入力すると復号鍵を聞いてきます。
復号鍵を入力するとパスワードファイルが開きます。
初期値は 'qwerty' なので、それを入力すると雛形が *Passwd* というバッファに開きます。
3.3. 開いたパスワードファイルを編集して保存する
*Passwd* バッファを編集して、M-x save-pw と入力すると、
復号鍵を2回聞かれます。両者が一致するとパスワードファイルが更新され、バッファは閉じます。
パスワードファイルの復号鍵は忘れないようにしましょう。忘れると中身が見れなくなります。
3.4. 頻度データの作成
頻度データの作成は以下のようにします。
- *scratch* バッファに行く。
- (load-library "pw") とタイプして Ctrl-j を押す。
すると pw.lc がロードされる。pw.lc を直前に
ロードしたほうがなぜか実行時間が短くて済む。
- (make-ss filename) と入力して Ctrl-j。
例えば、(make-ss "C:/doc/alice30.txt")
4. 終わりに
これで、サイトやマシンごとに違うパスワードを使うことが簡単になり。本人は、快適に使っています。
必要なファイル一式はここに置いておきますので気に入ったら使ってみてください。