暗号化(C#)

ファイル、文字列の暗号化
・DESを使用して暗号化したバイト列をBASE64化する。
・キーは2個使用する。1個はCFW.dll が保持。もう1個はクライアント
(復号化呼び出しモジュールが保持)
・暗号化文字列 = Encrypt(original,hash(hash(クライアントキー) + coreキー))
・復号化文字列 = Decrypt(暗号化文字列,hash(hash(クライアントキー) + coreキー))

・core dll キー md5("craftdevel")



アプリケーションユーザーパスワード
・「暗号化」ではなく1方向ハッシュを使った値を保持する。。
・つまり、パスワードを決定した人物以外はオリジナルを知ることが出来ない。
・ユーザープロフィールのテーブルとログインID,パスワードのテーブルは分けるほうが
望ましい
・パスワードを忘れた場合、管理者が再発行して通知するかメールによるリマインダー
機能を実装する。
・管理者が再発行するのは避けたほうが良い。
(通知方法の問題、「管理者でさえも知りえない」という保障)
・(web)「暗号化したパスワード」をcookieに保存しない
→復号できるから
→復号しなくてもそのcookieを持っていけば何処でもログインできるから
→しかも有効期限がない(無いに等しい。1ヶ月でパスワード変更とか現実的じゃない)
・上のため、自動ログインなどを実装する場合は「所謂セッション機能」とは別の
「ログインセッション情報」をサーバーに保持する必要がある。
→一定期間(たとえば一週間)後には必ず変わるキー(セッションキー)を発行
→「ログインセッション情報」にセッションキーがあれば認証許可。
→一定期間経過後にセッションキー更新

・保存するパスワード hash(hash(入力パスワード) + salt)


