マンガ作成アシストツールを作ろう③認証系と暗号化データの持ち方考察、そしてO/Rマッパーへ

暗号化のDBデータをスマートに取り扱いたいとの願いを叶えるため思索をつぶやいた
2
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

認証情報のバックアップ まずはユーザー登録編。UAはバージョン情報の数字を固定文字列に置換しないとバージョンアップでキーが変わって復号化できなくなっちゃうね バージョン番号以前にいろいろ変わる奴は知らん(WinのIEとか) pic.twitter.com/I5HIdJ02Rb

2017-08-09 01:19:16
拡大
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

じゃあどうやったらログイン出来るんだよの図。 結局データコピペして違う環境で使いましょうを防ぐのが目的。 でもPINコードを別ストレージに暗号化して払い出さないとより確実なコピペ対策にはならないかもしれない。まあPINコードの代わりにユーザ登録時とアクティベートの時間使ってるけど pic.twitter.com/C3WNWyRtBm

2017-08-09 01:23:55
拡大
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

ロジックは割れているので後は鍵の種を推測されない以外に防衛方法はない。 まあ、本気な人が頑張ったらすぐ割れるんかな?割れるよなぁ・・・ でも動作環境、jsが失われたデータonlyならワンちゃんあるで! 続いてはストレージ本体の格納とアクセス方法 pic.twitter.com/YVb3vqSxO0

2017-08-09 01:31:00
拡大
拡大
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

ということは・・・ オンメモ暗号化ロジックでXSS上等な何を作ればあるいは・・・ ロゴの中に透かしで暗号化ロジックが入ってるとか、 不正競争防止法に抵触するDCSSの画像をOCRして使うとか胸熱じゃない?

2017-08-09 01:34:14
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

こんな時こそ、WebAssembyをまぜまぜして撹乱するんだ! いいね。なんかやる気が湧いてきたぞ。

2017-08-09 01:35:44
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

Q1:DBの中身を見られたくない。 A1:暗号化しましょう! 何が入っているか見られない自由が有りますからね。 開発者ツールで覗くだけじゃ見えませんね。 でも鍵がソースコードに書いてあったらOSSにするとツール作られて誰でも見放題ですね。

2017-08-10 00:38:10
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

Q2:複数のユーザで共有するマシンでも使いたい。 A2:ログインして、暗号化キーを分けましょう。ログインユーザのIDとパスワードが違えば、データは互いに見ることはできませんね。でも気をつけないと誰がどのデータ使っているかバレるかもしれません。

2017-08-10 00:41:35
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

Q3:こっそり別マシンに持ち去られたくない。 A3:UAを混ぜれば、別ブラウザではログインできなくなります。同じ種類には無力ですが。 あとバージョン番号はバージョンアップでキーが変わるので使えませんね。PINコードという手もあるのですが、残念なことに開発者ツールでコピペされます。

2017-08-10 00:45:48
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

Q4:暗号化キーがデータと一緒に入ってるからコピペで盗まれて解読されるんじゃ A4:ユーザID(公開)とパスワード(秘密)はログイン時間とアクティベート時間を混ぜた2個の非可逆ハッシュを暗号化して格納。実暗号化キーは再度2個を組み合わせた暗号化キー用非可逆ハッシュを生成し使います

2017-08-10 00:48:43
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

Q5:別ドメインでデータを使われたくない。 A5:暗号化キーのソルトにドメインを入れます。※ローカルDNSは防げない ドメインの概念を理解していない人物には有効だと思います。 でもインターネットに公開状態に置けば誰でも使えますね(^o^)

2017-08-10 00:51:57
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

Q6:キーロガー入れられている模様。この状況下でもデータ盗難されて使われないためには? A6:キー入力履歴は諦めましょう。IDもパスもそのPCでは有効です。アンチOCRなグリフでキートップシャッフルな仮想キーボードを使ってPINコードを保存でPINコード除くコピペ流出には有効です

2017-08-10 00:56:45
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

A7:パスワード忘れたのでリフレッシュしたい。 Q7:今のところ対応策はありません。キーはもう誰も知らない事になります。試行回数は無限なのでがんばりましょう。それとも無慈悲に規定回数失敗で復号化キーの削除を実装すべきですかね?試行回数を3秒に1回とするとか。

2017-08-10 00:59:44
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

Q8:ログイン後、パスワード変更したいです。 A8:これは2個の種キーの保存暗号化キーを切り替えれば可能ですね。何時パスワードが変わったかわからなくするために、ログイン、更新する度にPINコードを払い出して切り替えるというのは有りですね。保存される値は同じだけどキーが変わるので。

2017-08-10 01:06:40
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

Q9:別マシンに正当なユーザとして移行したい。 A9:Import/Export機能作るしかないですね。暗号化パスワードを入力してもらって、復号化データを暗号化し、適当にzip圧縮でもしてFileAPIでダウンロード、アップロードしたらOKなのでは。その際、パスワード再設定で

2017-08-10 01:13:10
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

さて、ORマッパーを書かねばならない。 Entityクラスでそのままデータ投入的な便利さを作るしかない。 が、そのクラスが正当なデータが格納されているかはjsゆえに微妙。 ES2015ってtypeOfとかでクラス見れるんだっけ?

2017-08-10 22:29:43
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

さて、どうするか。 欲しい機能は以下の通り。 追加 ①クラスにものを入れる。 ②Entityマネージャによろしく頼む ③データは暗号化されてDBに入っている。 編集 ①Selectをかけるとクラスに入ったインスタンスが返る ②値を編集する。 ③レイジーコミットで反映される。

2017-08-10 22:38:45
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

検索時 ①Entityを指定して検索が出来る ②検索結果がEntityクラスに入って帰ってくる。 ③リファレンス指定したクラスの内容も芋づる式にロードされる。 ④この芋づるの長さは指定できる。 ⑤検索には条件を指定できる。でも全件ロードだよねぇ。IDBの機能使えない。

2017-08-10 22:41:43
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

JavaとかのORマッパーを考えれば Queryオブジェクトにクエリー条件の入ったインスタンスをぶっこんで取ってくるイメージか。 ページャーで使う範囲指定は? そもそもそんなのどうでも良くない?全部オンメモだしーとか? データの堅牢性、操作による破壊を何処まで予見するか。

2017-08-10 22:43:58
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

ある、リードオンリーインスタンスをconstより内部まで見て規定するなら、どうすればいい?触る直前にJSONでハッシュ取って比較するのか? なんか非常に層が足りないので岩盤ないといけないのと分厚く不安定になりそうでやだなー

2017-08-10 22:46:32

コメント

コメントがまだありません。感想を最初に伝えてみませんか?