自動保存とローカルヒストリ.
[自動保存のコンセプト]
初回起動時、または設定から回復パスワードを入力する.
RSA暗号で秘密キーを回復パスワードで暗号化.
(以後、秘密キーについては回復が必要になるまで使わない.)
自動保存するときは、
起動のたびにランダムに生成したAES暗号化キーを、公開キーで暗号化して保存する.
復元するときは、回復パスワードを入れて秘密キーを復元したのち、
復元された秘密キーでAES暗号化キーを復元して、それを用いて暗号化解除する.
[リカバリと、ローカルヒストリーのコンセプト]
ファイルのフルパスをSHAでハッシュ化し、タイムスタンプのサフィックスをつけて保存する.
(SHAのソルトは固定値で良い。ファイル名は暗号化する必要がないか、もしくは、もともと暗号化されているため。)
(Purgeでは、ファイルの更新日時から古いものを削除する.)
ファイルを手動保存・自動保存・閉じるたびに、ステータスファイルにログを追記する.
アプリケーションが正常に終了した場合はステータスファイルを削除する.
次回起動時、ステータスファイルが残っている場合は異常終了したと判断する。
ステータスファイルをさかのぼり、クローズされていないファイルの最終バージョンを復元する.
(すべてクローズされていれば問題ない.)
ファイル名から、そのパスに合致するSHAハッシュ値のものがローカルヒスト上にあれば、
保存されている複数のタイムスタンプから保存日時を割り出して、取得可能とする.
[ファイル形式]
保存するファイルの中身は、
RSAの公開キーで暗号化されたAES暗号化キー(64bit) と、
ファイル名と、コンテンツタイプなどのヘッダとデータ本体からなる、シリアライズデータとする.
(簡略化のため、およびファイルのポータビリティは考慮する必要がないため、明示的な形式を持たないことにする.)
自動保存とローカルヒストリ.
[自動保存のコンセプト]
初回起動時、または設定から回復パスワードを入力する.
RSA暗号で秘密キーを回復パスワードで暗号化.
(以後、秘密キーについては回復が必要になるまで使わない.)
自動保存するときは、
起動のたびにランダムに生成したAES暗号化キーを、公開キーで暗号化して保存する.
復元するときは、回復パスワードを入れて秘密キーを復元したのち、
復元された秘密キーでAES暗号化キーを復元して、それを用いて暗号化解除する.
[リカバリと、ローカルヒストリーのコンセプト]
ファイルのフルパスをSHAでハッシュ化し、タイムスタンプのサフィックスをつけて保存する.
(SHAのソルトは固定値で良い。ファイル名は暗号化する必要がないか、もしくは、もともと暗号化されているため。)
(Purgeでは、ファイルの更新日時から古いものを削除する.)
ファイルを手動保存・自動保存・閉じるたびに、ステータスファイルにログを追記する.
アプリケーションが正常に終了した場合はステータスファイルを削除する.
次回起動時、ステータスファイルが残っている場合は異常終了したと判断する。
ステータスファイルをさかのぼり、クローズされていないファイルの最終バージョンを復元する.
(すべてクローズされていれば問題ない.)
ファイル名から、そのパスに合致するSHAハッシュ値のものがローカルヒスト上にあれば、
保存されている複数のタイムスタンプから保存日時を割り出して、取得可能とする.
[ファイル形式]
保存するファイルの中身は、
RSAの公開キーで暗号化されたAES暗号化キー(64bit) と、
ファイル名と、コンテンツタイプなどのヘッダとデータ本体からなる、シリアライズデータとする.
(簡略化のため、およびファイルのポータビリティは考慮する必要がないため、明示的な形式を持たないことにする.)