web-dev-qa-db-ja.com

キーを「取り消す」とは、実際には何をしますか?

現在、gpgを使用して一部の個人情報を暗号化しています(実際にはgpgdir)。秘密鍵のデジタルコピーを紛失しないように、データマトリックスの形式で用紙に印刷した秘密鍵のコピーを持っています。

しかし、暗号化のベストプラクティスについて読んでいると、キーを「取り消す」という概念に出くわすことがよくあります。 gpgでは、gpg --gen-revoke KEYを使用して失効キーを生成できます。これは、後でキーを「取り消す」ために使用できます。

しかし、それは実際にはどういう意味ですか?そして、それはどのように便利ですか?キーを取り消して取り消しキーを生成するためのhowに関する大量の情報をオンラインで見つけましたが、キーを「取り消し」たときに実際に何が起こるかはわかりません。

暗号化されたデータの唯一の対象ユーザーである場合、この機能は役立ちますか?

13
quant

キーファイルに追加されたコメントとしてキーを取り消すことを考えてください。このコメントは、存在する場合、あなたのキーを他のユーザー(例:暗号化されたgpgメールを送信するユーザー)に、キーが取り消されていること、および使用してはいけないことを知らせます。

キーを取り消すのは、キーサーバーにキーを送信して、取り消されたことを他の人に知らせる場合にのみ役立ちます。

8
WayToDoor

Gnupgはオープンソース(ええ!)なので、何が起きているかを調べることができます。キーの失効証明書を作成するとき、つまり「gpg --gen-revoke name」を介して

内部的に次の機能/主要ステップを移動します

  1. main() in gpg.c (gpgコマンドラインツール)が呼び出され、
  2. パラメータが解析され、次にgen_revoce( const char *uname) in revoce.c が呼び出されます、
  3. 内部では、una​​meの秘密キーと公開キーを取得します
  4. 次に、このように_make_keysig_packet_を sign.c で呼び出します
        rc = make_keysig_packet(&sig、pk、NULL、NULL、sk、0x20、0、
     opt.force_v4_certs?4:0、0、0、
     revocation_reason_build_cb、reason); 
    
    鍵ペア(公開pkおよび秘密sk)を使用し、_revocation_reason_build_cb_への関数ポインターと取り消しreason)を備えた文字列を追加で提供します。
  5. 内部で_make_keysig_packet_は次にhash_algoを使用してメッセージダイジェストmdを作成します。これは最終的にcomplete_sig( sig, sk, md );に提供され、内部で_do_sign_を呼び出し、mdで非対称暗号化を使用します。
  6. 作成された失効証明書(秘密/秘密鍵メッセージで署名されたタイプの一種)が作成されます。

次に、キーサーバーに提供されるこの証明書では、これを許可します(@WayToDoorと同じ)、サーバー上のキーへのコメント。

秘密の秘密鍵を所持する人だけが、公開鍵で検証するメッセージに署名できます。したがって、取り消しは、「秘密鍵で署名されたメッセージの送信、生成されたメッセージのハッシュ、非対称暗号化」のようなものです。

さらに、私の失効は、いったん取り消されると、キーペアが焼かれるということです(信頼できる価値はありません)。

したがって、より安全な(エアギャップ)マスター暗号化キーにサブキーを使用して、新しいサブキーの公開キーを安全にチャネル検証する必要なしに、取り消されたキーを置き換えるために新しい有効なサブキーを再発行できるようにするのが賢明です。 -keypair。

3