web-dev-qa-db-ja.com

ユビキーのPKCS#11キーファイルは実際にVeracryptのセキュリティを向上させますか?

Veracryptボリュームに関して、YubiKeyなどのスマートカードに保存されているPKCS#11キーファイルの利点を理解しようとしています。使用するハードウェアデバイスからファイルが削除されることは正しいですか?もしそうなら、これはシステム上で実行されているソフトウェアにそれを公開するように思われるため、ハードウェアトークンの利点のほとんどまたはすべてが無効になります。

何か不足していますか?

1
Jonathan Cross

使用するハードウェアデバイスからファイルが削除されることは正しいですか?

公開キーはエクスポートされ、Veracryptによって使用され、YubiKeyに残っている関連する秘密キー(キーペア)を認証し、暗号化されたVeracryptボリュームへのアクセスを許可します。また、設計上、秘密鍵をエクスポートしたり、YubiKeyを複製したりすることはできません。それは盗まれた可能性があります(あなたが持っていた何か^^)

もしそうなら、これはシステム上で実行されているソフトウェアにそれを公開するように見えるので、ハードウェアトークンの利点のほとんどまたはすべてを無効にします

暗号化されたボリュームを復号化して読み取ることが認証および承認されると、データが状態から別の状態に移行するたびに、「保管中」のデータは「使用中のデータ」になり、転送中/移動中のデータではない場合アプリケーションに公開され、場合によってはOSにも公開されます。ただし、機密の暗号材料は公開されず、YubiKeyにのみ存在します。

1
Florian Bidabe

この質問は確かに非常に良いものです。私は専門家ではありませんが、誰も飛び込んでいないためです(少なくとも1つの回答が既にある質問は魅力が低いためです)。

この質問に対するFlorianの答えは、PKCS11で動作することを想定がどのように機能するかについてのボイラープレートにすぎませんが、-Veracryptでの標準の実装方法ではありませんです。

開発者が最近認めたように here Veracrypt 非対称キーをサポートしていません。スマートカードのRSAキーをキーファイルとして使用しようとすると、ウィンドウ "Select Security Token Keyfiles"が空になります。リンクからの引用:

...また、このようなカードまたはトークンに格納されている非対称キー(RSAまたは楕円曲線)の使用をサポートするために、VeraCrypt形式を変更するというアイデアがあります。これらのキーは、リレーする代わりにヘッダーボリュームを復号化するために使用されます[sic]パスワード。これはより強力なセキュリティを提供しますが、同時に非常に少数の潜在的なユーザーを対象とすると同時に、多大な開発努力も必要とします...

つまり、秘密鍵(CKO_PRIVATE_KEY)は問題外です。対称鍵(CKO_SECRET_KEY)はどうでしょうか。いいえ、それもサポートされていません。

PKCS11はどの程度正確にサポートされていますか?ええと...コードを見てみると、 SecurityToken.cpp 行215でCKO_DATAへの参照に気付くでしょう。 PKCS11標準 を見て、それが何であるかを調べてみましょう。

データオブジェクト(オブジェクトクラスCKO_DATA)は、アプリケーションによって定義された情報を保持します。データオブジェクトへのアクセスを提供する以外は、Cryptokiはデータオブジェクトに特別な意味を付けません

したがって、それがキー(パブリック、プライベート、またはシークレット)ではなく、証明書でもない場合、それはデータオブジェクトになります(文字列や特別な意味は付加されません)。私はこの種のオブジェクトの背後にある元のアイデアが何であったか正確にはわかりません。私が知っているのは、それらがさまざまな目的で使用されることになったということです。 1つの例としては、ヨーロッパの国民eIDカードの名前と住所、またはICAO準拠の電子パスポートの写真があります。

このCKO_DATAオブジェクトは、キーまたはパスワードを保持するために使用されることになっていますか?あなたがそうするなら、あなたは基本的にスマートカードまたはトークンのすべての暗号化機能を放棄しているので、私はそうは思いません。

これは、保護されていない暗号化されていないディスクにキーを保存するよりも優れていますか?少なくとも、ほとんどのトークンでは、キーはパスワードで保護されていると思います。パスワードで保護された暗号化されていないUSBドライブにキーを保存するのと同じだと思います。

この話題については、きっと色々な意見が出てくると思います。少し前にopensc githubに 興味深い議論 がありました。

0
Marcos G.