アプリケーションバイナリの署名にYubiKey4(RSA 2048ビットキー)を使い始めようとしています。これを設定する方法についてはかなりの数のチュートリアルがあります。オリジナルのYubicoガイド( Android 、 MacOS )に基づくほとんどのチュートリアルは、私を混乱させているようです。
PIV証明書スロット情報 を確認したところ、スロット9c
、デジタル署名が、デジタルでのコード署名に適したスロットであるという結論に達しました。私の秘密鍵でバイナリに署名します。
ただし、たとえばYubicoの Android ガイド、および他のガイドの場合、選択された証明書スロットは9a
で、これはPIV認証用です。スロットの使用法は、「システムログインのようなもの」に対して「カードとカード所有者を認証する」ためのものであり、これは明らかに誤用ですコード署名の使用法。
YubiKey 4のPIVアプレットを使用したコード署名証明書の正しい(セマンティック)スロットは何ですか?そして、スロット9a
を使用/使用する理由はありますか?
YubiKeyツールは、特定のスロットのキーまたは証明書にいかなる種類の制限も適用しません。一部のサードパーティツールはそうします。
さまざまなスロット間の最大の違いは、それらに適用されるPINポリシーです。9aは認証を目的としているため、PINを1回入力するだけで済みます。システムログインに使用できるようにすることを目的としており、その後に任意の数のWebブラウザセッションが続きます。
一方、9cでは、トランザクションごとにPINを入力する必要があります。これは、署名に望ましいプロパティです。
署名にスロット9aを使用する場合、カードの電源を切るか取り外すまで、カードはそれ以上の署名を許可します。
9dは9aと同様に機能しますが、認証ではなく暗号化を目的としています。個別のスロットを使用すると、9aでの認証証明書(カードで生成されたキーを使用)や9cでの暗号化(カードにキーをロードし、カードを紛失した場合に備えて他の場所にエスクローする)などを行うことができます。
エスクローは、なりすましの可能性につながるため、一般的に認証には望ましいプロパティではありません。これは暗号化に非常に適したプロパティです(カードがロック、紛失、破損した場合、または従業員が雇用主を離れた場合にファイルがすべて失われるわけではないことを意味します)。
9eは認証を必要とせず、ドアロックなどを対象としています。そのスロットを使用すると、任意のアプリケーションがユーザーの操作なしで署名できるようになります。
要するに、スロット9cは実際にはコード署名のための正しいスロットです。 YubiKeysを使用するほとんどのガイドは、(暗号化や署名ではなく)認証をサポートすることを目的としているため、スロット9aを使用する傾向があります。