Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
seraphy opened this issue Jan 12, 2013 · 0 comments
Open

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

seraphy opened this issue Jan 12, 2013 · 0 comments

Comments

@seraphy
Copy link
Owner

seraphy commented Jan 12, 2013

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

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

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

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

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

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

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

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

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

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

[ファイル形式]

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant