お米の国サービス寄生型「電子署名システム」考

やあ (´・ω・`) ようこそ、セルフまとめへ。 このテキーラはサービスだから、まず飲んで落ち着いて欲しい。 うん、「また」なんだ。済まない。 仏の顔もって言うしね、謝って許してもらおうとも思っていない。 でも、このまとめタイトルを見たとき、君は、きっと言葉では言い表せない 「ときめき」みたいなものを感じてくれたと思う。 殺伐とした世の中で、そういう気持ちを忘れないで欲しい 続きを読む
2
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

そう、この法的要件をクリアしたFLOSSな 寄生型ソフトウェアを作れば一発当たりそう。 寄生型というのは、自分で一切のサーバ資源を持たないという、こうスパムを考えついた営業がピコーン!と来そうな いかがわしい方法だ! まあ、要件を満たせれば良いんですよ。要件を。

2020-07-08 02:54:43
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

書類ファイルが存在して、 そのファイルに対して判子を押す この判子押す、確認作業が1個にまとまっていれば良い。 問題はファイルの構造なんだ。 それは何かと言うと、みんなが大好きな編集が出来て 1ファイルにまとまってて、判子押すやつ。 PDFとかが良いんだろうが、アレはアレで地獄。

2020-07-10 01:33:39
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

・何か画像が取り込めるファイルフォーマットが存在して ・それに判子=電子署名を押す=QRコードを貼る ・判子を押した時間をURL先にJWTで保存する ・押した後に改変されていないことを保証するハッシュを張り出す第三者公開ストレージ が有れば良い。 うーんExcel、ODFファイルかなー

2020-07-11 03:35:13
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

手順としては ・サービスHTMLを開く ・ファイルと電子署名用の証明書、秘密鍵を入れる ・データ+署名時間のハッシュを算出、秘密鍵で署名 ・署名データ+公開鍵をTwitter等に投稿、URLを取得 ・TwitterのURLをQRコードにしてファイルに追加 ・署名済みデータのシグネチャを取って再度TwitterにUP

2020-07-11 03:41:33
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

・UPデータにはシグネチャ+ファイル名ハッシュ+時刻+署名者名ハッシュで投稿済みデータのURLを再取得 ・署名完了として、上記URLとQRコード付きファイルがダウンロードされる。※ファイル名にTwitterの投稿IDが付く さて、じゃあ真正性確認はどうするか?

2020-07-11 03:46:22
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

・確認用HTMLを用意 ・ファイルを入れる ・ファイル名とQRコードを見てTwitterにアクセスをかけてデータを取得する ・署名が正しいかを公開鍵とデータからVerifyする。 ・また不要なデータが追加されてないかシグネチャを比較する ・署名者名、ファイル名も一致の確認をする →結果署名日が出てくる

2020-07-11 03:55:58
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

これを入れ子署名を可能にする。 ただし、問題があって どんなファイルでもOKにするとZipファイルにしないといけない。 付属する画像ファイルにQRコードがくっつく もしくはSVGにして非表示領域にバイナリを押し込めるか。 なんにしても透過的には難しい。うーむ。

2020-07-11 03:58:33
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

ファイルをその場で判子と一緒に見る と言うUXを実現するには難しいなぁ。 しかし、紙と同じUXだと言い張るなら それはPDFやHTML、SVGでも構わないはずなのだが 多分、更新できないとか言ってユーザー側が拒否するのかな? うーむ。

2020-07-11 20:55:49
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

まあPDFならスクショを取れるやろ。 ブラウザ実装的に考えて。 なので、 ・目視に寄る真正確認はスクショを見る他ない ・そして判子を押すと、QRコードがドンドン繋がる ・URLを見ると公開鍵と相まって確認できる。 ・上記の手続きを人力で別ツールでも出来ること。

2020-07-12 01:42:46
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

もう一度ユースケースを整理すると ①捺印対象ファイルを用意 ②当サービス静的HTMLを開く ③ファイルと自分の秘密鍵、名前を投入 ④裏で捺印済み処理を行う ⑤捺印済みファイル作成が完了 ⑥ダウンロードし、それを捺印済みと扱う ⑦同時に公開鍵もDL出来る

2020-07-12 02:13:06
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

上記の捺印をされた書類を人力で検証する場合 ①捺印者は自身の公開鍵を公式サイトで公開 ②検証者書類を入手 ③QRコードとファイル名のURLにあるTweetを取得 ④署名の一致を確認 ⑤署名を公開鍵を使ってVerify ⑥ファイルシグネチャもファイル名Tweetから確認 以上が出来れば改変なしの捺印済みとなる

2020-07-12 02:17:22
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

と、これでは面倒極まりないので 捺印ページと同じ場所にあればいい。 ただ、Twitterスクレイピング出来ないのか うーむ、利用規約に違反するとBANされちゃうからねぇ まあそうするとTwitter以外のサービスとなる。 極力迷惑をかけないように、片利共生で生きていきたい。 まあGithubに公開かな?

2020-07-12 02:32:06
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

まあスクレイピングしなくても同じデスを自動で出来ればいいだけだから、 Twitterはバックアップ、Githubに活用データが存在すればいい。 こう、データも読み取りがしやすいようにTwitterにQRコードを添付してしまえばいい。 そうしたらスマホでもスムーズな導線が確保出来るはず。

2020-07-12 02:59:11
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

QRコードのおばけには2953byteまで入れられるから まあ実際はQRコードのおばけをTwitterに本丸データとして入れたほうが良いのかもしれない。140文字じゃ、4byte文字でも480byteだからね。 で、Github Pagesの静的ページを呼び出して引数に渡せば静的ページ上で照合が出来ると cman.jp/QRcode/faq/qa2…

2020-07-12 03:05:14
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

まあ別にURL埋め込んでもいいっちゃいいか。 同じ情報を担保としてQRコードにしたほうがポータビリティが上がる界隈はありそうだし、良いんじゃないだろうか。 後は署名をもう少し強固な物にしたい場合はどうするの?と言うところか。

2020-07-12 03:14:53
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

しかしCA局による証明とか必要なのだろうか。 失効管理とか必須なのだろうか? あの時、有効だったかと言うのは誰が保障するのだろうか? Twitter上で有効期限何時までですよ?的な情報を持つことはできるが・・・まあめんどくさいので、JWTを払い出すとなるのか。鍵を生成するサービス作って。

2020-07-12 03:18:04
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

その払い出した、秘密鍵と公開鍵のペアの署名を検証する公開鍵は誰が配布してくれるのじゃ? という問いに、GithubPagesで配ればよくね?的な気はしなくもない まあリポジトリ管理者ならまあいいか 結局TLSのキーチェーンに乗せるとドメインで仕切れるので良いんだが、証明書取りに行くの誰?というね

2020-07-12 03:23:44
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

成る程、 サインをした人間が本人なのかの確認が有るのか SMS認証とかメール認証とか言う奴か・・・ まあメールならGASから送れるとして、秘密鍵を送りつければいいのか?うーん? サービスに登録時にその捺印は本人で有るだなんて保障は本人だけが持っている秘密鍵でしかありえない。

2020-07-12 03:38:32
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

だとするとJWTの中にメールアドレスのハッシュを含めて送信し、受け取っていれば本人という図式は成り立つ。 それぐらいしか意味はない。 後は本人以外知りようのない署名情報※陰影等 のハッシュを込めるぐらいか。 成る程。で、その情報は検証可能なようにTwitter上に上げられるべきな気はする。

2020-07-12 03:41:35
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

でTwitterアカウントもJWTに込めると。 これでガチガチやな!(ドヤァ で、秘密鍵と公開鍵をGAS上で作ってGmailで送信と。 で、それを人間の手で検証可能なように公開すべきものを公開してもらえれば成立すると。 これを如何にスマホの操作で完結させるかで変わってくると。

2020-07-12 03:45:50
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

問題はGAS上で電子署名を行えるかだが monotalk.xyz/blog/google-ap… を見る限り大丈夫そう。 まあ、最後の署名だけすればいいから 実際に使う鍵自体はブラウザ上で作っても問題ないか。 署名がないから怪しいと言うだけで。 途中で抜かれる可能性は否定できないけど。 偽造さえ防げたらいいので無視するか

2020-07-12 03:57:06
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

単純にGASに処理をあまり置きたくないというのがありましてん。 GASはリソースが限られてるので リソース無制限のローカルで処理を完結させたい。 データだけはTwitterに置くとしてもね。 スクレイピングさえしなければセーフセーフ

2020-07-12 03:58:33
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

qiita.com/nwtgck/items/e… Twitterで呟けるURLの長さはこれか・・・ まあ、十分じゃなかろうか。だいたい4kbyteでCookie並と。 で、そのサイズにdeflateするなりしてbase64urlで押し込めればOK。 公開鍵の公開もTwitterのリンクかQRコードでGithubPagesに連携、これでOKや!

2020-07-12 05:52:51
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(parody) @ryunosinfx

このアイデアの利点はなんですか? と言われると簡単で 企業が運営する専門サービスは本来提供すべき価値に対して利用者情報を握りすぎている。 不必要に情報を握りらずに使えればOKじゃね? それも本当に必要な価値だけならFLOSSであるべき。 利用がサービスに登録前提なの意味わからないし

2020-07-12 05:56:23