Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

ファイルのタイムスタンプつき存在証明

面白そうなのでちょっと調べてみた。

公証役場の電子公証

既存のサービスとしてまず思いつくのは公証役場で、公証役場が電子公証というサービスを提供している。

www.koshonin.gr.jp

これは単純に「書類に対して認証を付与する」という公証業務の対象を電子ファイルに拡張しただけのものなので、公証人とのやりとりを経て認証がなされる業務フローになっている。対象のファイルはPDFファイルのみで、証書の作成は私署証書の場合11,000円という価格設定。元ツイートの内容はAPIによる認証を想定しているので、これはマッチしない。

総務省認定の時刻認証業務

次に思いつくのは総務省認定の時刻認証業務。「ある時刻にその電子データが存在していたことと、それ以降改ざんされていないこと」を証明するもの。

www.soumu.go.jp

2023年11月現在では3社が時刻認証業務の認定を受けており、いずれも法人向けサービスのように見える。いずれも1ファイルあたりいくらという価格設定ではなさそうだ。

  • セイコータイムスタンプサービス*1、MINDタイムスタンプサービス*2はWeb上では価格設定が公開されていない。
  • アマノタイムスタンプサービスは従量制メニューだとアカウント発行に6,000円/アカウント、ランニング費用が8,000円/月+アカウント管理費用がかかり、これで1,000ファイルに対してタイムスタンプを付与できる*3

タイムスタンプつきコードサイニング証明

あらゆるファイルは自己解凍書庫形式にしてしまえばEXEファイルにできるんだから、EXEファイルをコードサイニング証明書で署名する際にタイムスタンプを付与すれば「ある時刻にその電子データが存在していたことと、それ以降改ざんされていないこと」は検証できるじゃない、というアイディア。

qiita.com

コードサイニング証明書を提供している会社は複数あるが、いずれも年あたりいくらという価格設定になっている。近年は価格変動が大きいようだが、2023年11月現在だと以下のような設定になっている。

  • digicertだと1年版で90,000円*4
  • GlobalSignだと1年版で60,000円*5
  • Sectigo(旧Comodo)だと1年版で55,000円*6

コードサイニング証明書はOV証明書かEV証明書で*7、Let's EncryptのようなDV証明書は使えない。なので、証明書の発行時には何らかの実在証明が走る業務フローになっている*8。なので、任意の人がお金を払っていきなり1ファイルだけ証明をする、という使いかたはできない。

なお、コードサイニング証明書をアプリケーションに付与する際には各社のタイムスタンプサーバにアクセスしてタイムスタンプを付与する必要がある。タイムスタンプサーバへのアクセスに関して金額設定がないか確認してみたが、見当たらなかった。コードサイニング証明書の用途から考えてCI/CDパイプラインに組込むことも想定されるだろうから、従量制の価格設定ではなく証明書の価格にコミコミになっていると考えるのが自然かな?

マイナンバーカードを用いたJPKIによる署名付与

(執筆中)

  • メリット:法的裏付けがある。J-LISが提供しているJPKIの機能だけで利用できれば、追加の費用なしで利用できるかも。また「たしかにこの人が署名した」ということを追加の手間なしに証明できる。
  • デメリット:マイナンバーカードの署名用証明書を使うので、個人でしか利用できず、たとえば法人が開発しているソフトウェアのCI/CDパイプラインへ組み込んだりはできないのでは*9

RFC3161/RFC5816を提供するサービス

(執筆中)

  • 1ファイルあたりいくらという価格設定のサービス、探せば出てくるんじゃないかな?
  • デメリット:総務省認定の時刻認証業務もRFC3161/RFC5816に準拠するよう仕様が定められているはず。総務省認定を受けていないサービスでの法的裏付けはどうなる? また、ファイルの作成者の実在証明・本人確認がなされないはず。

いずれのケースでも発生する問題

  • 「証明する書類がある時点で存在したか?」を証明することはできるが、「この書類は本人が作成したもののか?(たとえばどこかから盗み出した情報ではないか?)」を証明することはできない