2023-11-20
信頼の実装、公開鍵暗号は秘密鍵の管理が肝です。秘密鍵を漏洩させない運用が重要ですが、もし漏洩して危殆化(きたいか、他人によって使用され得る状態になること)しても過去の契約書を捏造できないようにしたいですね。


「trustday」

一つの実現方法は、信頼できるタイムスタンプです。trustdayサービスは、毎日変わる秘密鍵を使って電子署名するサービスです。日付に対応する公開鍵を公開しているので、署名した日で検証が可能で、秘密鍵は破棄するため過去の日付を捏造することができません。

安全なハードウェアでサービスを立ち上げ、下記のコードで署名します。 import { fetchCBOR } from "https://js.sabae.cc/fetchCBOR.js"; const url = "http://localhost:8000/api/"; const data = new Uint8Array([1, 2, 3]); const sign = await fetchCBOR(url, data); console.log(sign); 日付で公開鍵を取得し、sec.jsを使って、検証できます。 import { fetchBin } from "https://js.sabae.cc/fetchBin.js"; import { Day, TimeZone } from "https://js.sabae.cc/DateTime.js"; import * as sec from "https://code4fukui.github.io/sec.js/sec.js"; // set sign, data const day = new Day(TimeZone.JST).toString(); const url2 = "http://localhost:8000/" + day + ".pubkey"; const pubkey = await fetchBin(url2); const b = sec.verify(sign, pubkey, data); console.log("verify", b); 唯一のサービスとして動かしてしまうと弱いため、一人ひとりが日付証明サービスを持ち、互いに利用し合う、自律分散型にするのもいいですね。

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS