Skip to content

自動保存とローカルヒストリ #17

Description

@seraphy

自動保存とローカルヒストリ.

[自動保存のコンセプト]

初回起動時、または設定から回復パスワードを入力する.
RSA暗号で秘密キーを回復パスワードで暗号化.
(以後、秘密キーについては回復が必要になるまで使わない.)

自動保存するときは、
起動のたびにランダムに生成したAES暗号化キーを、公開キーで暗号化して保存する.

復元するときは、回復パスワードを入れて秘密キーを復元したのち、
復元された秘密キーでAES暗号化キーを復元して、それを用いて暗号化解除する.

[リカバリと、ローカルヒストリーのコンセプト]

ファイルのフルパスをSHAでハッシュ化し、タイムスタンプのサフィックスをつけて保存する.
(SHAのソルトは固定値で良い。ファイル名は暗号化する必要がないか、もしくは、もともと暗号化されているため。)
(Purgeでは、ファイルの更新日時から古いものを削除する.)

ファイルを手動保存・自動保存・閉じるたびに、ステータスファイルにログを追記する.
アプリケーションが正常に終了した場合はステータスファイルを削除する.

次回起動時、ステータスファイルが残っている場合は異常終了したと判断する。
ステータスファイルをさかのぼり、クローズされていないファイルの最終バージョンを復元する.
(すべてクローズされていれば問題ない.)

ファイル名から、そのパスに合致するSHAハッシュ値のものがローカルヒスト上にあれば、
保存されている複数のタイムスタンプから保存日時を割り出して、取得可能とする.

[ファイル形式]

保存するファイルの中身は、
RSAの公開キーで暗号化されたAES暗号化キー(64bit) と、
ファイル名と、コンテンツタイプなどのヘッダとデータ本体からなる、シリアライズデータとする.
(簡略化のため、およびファイルのポータビリティは考慮する必要がないため、明示的な形式を持たないことにする.)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions