今日の昼間は使えてたんだけどね。お疲れサマー
内側からのデフォルトルートはあらかじめ変更したり、メールの配送のバックアップルートを作ったりしていたが、 DNSのキャッシュサーバ設定がいまいちだった模様。 手でいろいろ設定変更して対処。
基本は手で入力したパスワードをSHA256でハッシュ化したものをキーとした、AES 256bit暗号化。 暗号化に関するソースはGNU TLS由来のものっぽい。
乱数の生成についてはエントロピープールから値を読み出してSHA256でモニョモニョしていて、 エントロピープールへの乱数供給をイベントループで行っている。
static void
EventLoop (void)
{
EventType event;
UInt16 error;
do
{
// wait a bit for an event
EvtGetEvent (&event, 50);
/* Dont seed with empty events!*/
if(event.eType != nilEvent)
random_seed((byte *) &event, sizeof(event));
// first the system gets the event, then the Menu event handler, then the application
// event handler, then finally the form event handler
if (!SysHandleEvent (&event))
if (!MenuHandleEvent (0, &event, &error))
if (!ApplicationHandleEvent (&event))
FrmDispatchEvent (&event);
}
while (event.eType != appStopEvent);
}
5ticks(標準では0.5秒?)毎にイベントを読み出して、 nilEventでない有効なイベントだったらEventType構造体の中身をそのまま乱数の供給源としている。
というわけで Strip を利用している間は無駄に画面をタップするのが望ましい。 とりあえず最初のパスワード入力画面でパスワードを入れる前に画面ぐりぐりするとか、 Graffitiの練習をしてみるのが吉か。
「強制的に画面ぐりぐりしてからでないとパスワード入力もさせない」 という初期画面のインターフェースの方がより安全だとは思うけど、 Palmアプリケーションは書いたことないっす。
暗号強度・乱数強度的には問題ないプロダクトという確信は得られたので、本格的にパスワード管理に使うことにしよう。
Stripが使っているPDBファイルをPerlで読んじゃうよん、なモジュールらしい。
PDBの中身のおおざっぱなところは、実は先にこっちを読んで把握した。