問題 7★★★

取引先から電子データで発注を受けている。後日、取引先が「その発注は送っていない」 と主張した場合に、当社が作ったり書き換えたりしたものではなく、取引先が作成した データであることを第三者に示せるようにしたい。最も適切な仕組みはどれか。

正解:ア

各選択肢の解説

  1. ア取引先が自身の署名鍵でデジタル署名を付け、当社は取引先の検証鍵で検証する。

    正解。署名鍵(秘密鍵)は取引先だけが持っているので、検証鍵(公開鍵)で 検証が通る署名は取引先にしか作れません。当社にも作れないことが、 第三者に示せる根拠になります。

  2. イ両社で共有した秘密の鍵からメッセージ認証符号を作って添付し、当社が照合する。

    誤り。メッセージ認証は、改ざんがないことと、鍵を知る相手から届いたことを 確かめられます。しかし同じ鍵を当社も持っているので、当社でも同じ符号を作れます。 当事者どうしの確認には使えても、第三者には「取引先が作った」と示せません。

  3. ウ発注データのメッセージダイジェストを算出し、データと一緒に当社へ送信する。

    誤り。メッセージダイジェストはハッシュ関数で求めた要約で、鍵を使いません。 データを書き換えた者が計算し直して差し替えられるので、作成者の証明にはなりません。 ダイジェストは署名やメッセージ認証の「材料」として使われます。

  4. エTLSで暗号化した通信路で送信させ、送信途中での盗聴や改ざんを防ぐ。

    誤り。TLSが守るのは送受信の途中だけで、受け取った後のデータには 誰が作ったかの証拠が残りません。通信路の保護と、データそのものに 作成者の印を付けることは別の話です。

理解を深めるために

「本人にしか作れない」から第三者に示せる

第三者に「この発注は取引先が作った」と示すには、取引先にしか作れない印が データに付いている必要があります。デジタル署名は、取引先だけが持つ署名鍵(秘密鍵)で 作り、誰でも手に入る検証鍵(公開鍵)で確かめます。受け取った当社にも署名は作れないので、 後から「送っていない」と言われても反論の根拠になります。この性質を否認防止といいます。

なぜメッセージ認証では足りないのか

似た仕組みにメッセージ認証があります。どちらも改ざんを見つけられますが、鍵の持ち方が違います。

  • デジタル署名: 署名鍵は送り手だけが持つ。作れるのは送り手1人
  • メッセージ認証: 同じ秘密の鍵を送り手と受け手の両方が持つ。受け手にも同じ符号が作れる

受け手が作れる以上、第三者から見ると「受け手が自分で作ったのでは」という疑いを 消せません。メッセージ認証は、鍵を共有する当事者どうしで改ざんと相手を確かめる用途に向きます。

メッセージダイジェストは鍵を使わない要約なので、単独では改ざんした者が作り直せます。 署名もメッセージ認証も、ダイジェストに鍵を組み合わせて作るものです。

混同しやすいものとの違い

仕組み 改ざんの検知 作成者を第三者に示せるか
デジタル署名 できる できる(署名鍵は送り手だけ)
メッセージ認証 できる できない(受け手も同じ鍵を持つ)
メッセージダイジェストのみ 作り直されると見抜けない できない(鍵を使わない)
TLS 通信の途中だけ できない(受信後に証拠が残らない)

「第三者に示す」「後から否定させない」とあれば、鍵を1人だけが持つデジタル署名を選びます。

前の問題へ次の問題へ