FIDO/U8.2F 2 要素認証トークンをサポートする OpenSSH XNUMX のリリース

XNUMXか月の開発期間を経て 提示された 解放する OpenSSH 8.2、SSH 2.0 および SFTP プロトコルを介して動作するためのオープンなクライアントおよびサーバーの実装。

OpenSSH 8.2 のリリースにおける主な改善点は、プロトコルをサポートするデバイスを使用して XNUMX 要素認証を使用できるようになったことでした。 U2F、アライアンスによって開発されました フィドー。 U2F を使用すると、ユーザーの物理的な存在を確認するための低コストのハードウェア トークンを作成でき、USB、Bluetooth、または NFC 経由でユーザーと対話できます。 このようなデバイスは、Web サイトでの XNUMX 要素認証の手段として宣伝されており、すでに主要なブラウザでサポートされており、Yubico、Feitian、Thetis、Kensington などのさまざまなメーカーによって製造されています。

ユーザーの存在を確認するデバイスと対話するために、新しいキー タイプ「ecdsa-sk」および「ed25519-sk」が OpenSSH に追加されました。これらは、ECDSA および Ed25519 デジタル署名アルゴリズムと SHA-256 ハッシュを組み合わせて使用​​します。 トークンと対話するためのプロシージャは中間ライブラリに配置されます。中間ライブラリは、PKCS#11 サポートのライブラリと同様の方法でロードされ、ライブラリの最上位のラッパーです。 リビドー2、USB 経由でトークンと通信するためのツールを提供します (FIDO U2F/CTAP 1 および FIDO 2.0/CTAP 2 プロトコルがサポートされています)。 OpenSSH開発者が用意した中間ライブラリlibsk-libfido2 含まれています コア liffido2 と同様に HIDドライバー OpenBSD用。

認証してキーを生成するには、設定で「SecurityKeyProvider」パラメータを指定するか、外部ライブラリ libsk-libfido2.so へのパスを示す SSH_SK_PROVIDER 環境変数を設定する必要があります (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.それで)。 レイヤー ライブラリの組み込みサポート (--with-security-key-builtin) を使用して openssh を構築することができます。この場合、「SecurityKeyProvider=internal」パラメーターを設定する必要があります。
次に、「ssh-keygen -t ecdsa-sk」を実行するか、キーがすでに作成および設定されている場合は、「ssh」を使用してサーバーに接続する必要があります。 ssh-keygen を実行すると、生成された鍵ペアは「~/.ssh/id_ecdsa_sk」に保存され、他の鍵と同様に使用できます。

公開キー (id_ecdsa_sk.pub) は、authorized_keys ファイル内のサーバーにコピーする必要があります。 サーバー側ではデジタル署名のみが検証され、トークンとの対話はクライアント側で実行されます (サーバーに libsk-libfido2 をインストールする必要はありませんが、サーバーは「ecdsa-sk」キー タイプをサポートする必要があります)。 。 生成された秘密鍵 (id_ecdsa_sk) は本質的に鍵ハンドルであり、U2F トークン側に保管されている秘密シーケンスと組み合わせてのみ実際の鍵を形成します。 id_ecdsa_sk キーが攻撃者の手に渡った場合、認証に合格するにはハードウェア トークンへのアクセスも必要になります。これがなければ、id_ecdsa_sk ファイルに保存されている秘密キーは役に立ちません。

さらに、デフォルトでは、キーを使用して何らかの操作を実行するとき(生成中および認証中の両方)、ユーザーの物理的な存在をローカルで確認する必要があります。たとえば、トークンのセンサーに触れることが提案されていますが、これによりユーザーの物理的な存在を確認することが困難になります。接続されたトークンを使用してシステムに対してリモート攻撃を実行します。 別の防御線として、ssh-keygen の起動フェーズ中にパスワードを指定してキー ファイルにアクセスすることもできます。

OpenSSH の新しいバージョンでは、次の理由により、SHA-1 ハッシュを使用するアルゴリズムが今後廃止されることも発表されました。 プロモーション 特定のプレフィックスによる衝突攻撃の有効性 (衝突を選択するコストは約 45 ドルと推定されます)。 今後のリリースの XNUMX つでは、公開鍵デジタル署名アルゴリズム「ssh-rsa」を使用する機能をデフォルトで無効にする予定です。このアルゴリズムは、SSH プロトコルの元の RFC で言及されており、実際に広く普及しています (使用をテストするため)。システムに ssh-rsa が含まれていない場合は、オプション「-oHostKeyAlgorithms=-ssh-rsa」を使用して ssh 経由で接続を試みることができます。

OpenSSH の新しいアルゴリズムへの移行をスムーズにするために、将来のリリースでは UpdateHostKeys 設定がデフォルトで有効になり、クライアントがより信頼性の高いアルゴリズムに自動的に移行されます。 移行に推奨されるアルゴリズムには、RFC2 RSA SHA-256 に基づく rsa-sha512-8332/2 (OpenSSH 7.2 以降サポートされ、デフォルトで使用される)、ssh-ed25519 (OpenSSH 6.5 以降サポート)、および ecdsa-sha2-nistp256/384/521 ベースが含まれます。 RFC5656 ECDSA (OpenSSH 5.7 以降でサポート)。

OpenSSH 8.2 では、「ssh-rsa」を使用して接続する機能は引き続き利用できますが、このアルゴリズムは、新しい証明書のデジタル署名に許可されるアルゴリズムを定義する CASignatureAlgorithms リストから削除されました。 同様に、diffie-hellman-group14-sha1 アルゴリズムは、サポートされているデフォルトの鍵交換アルゴリズムから削除されました。 証明書での SHA-1 の使用は追加のリスクを伴うことに注意してください。これは、攻撃者が既存の証明書の衝突を検索する時間は無制限ですが、ホスト キーに対する攻撃の時間は接続タイムアウト (LoginGraceTime) によって制限されるためです。 )。

ssh-keygen を実行すると、デフォルトで rsa-sha2-512 アルゴリズムが使用されるようになりました。これは OpenSSH 7.2 以降でサポートされており、古い OpenSSH リリースを実行しているシステムで OpenSSH 8.2 で署名された証明書を処理しようとすると、互換性の問題が発生する可能性があります (この問題を回避するため)。署名を生成する場合は、「ssh-keygen -t ssh-rsa」を明示的に指定するか、OpenSSH 2 以降でサポートされている ecdsa-sha256-nistp384/521/5.7 アルゴリズムを使用できます。

その他の変更:

  • Include ディレクティブが sshd_config に追加されました。これにより、構成ファイルの現在の位置に他のファイルの内容を含めることができます (ファイル名を指定するときにグロブ マスクを使用できます)。
  • 「no-touch-required」オプションが ssh-keygen に追加されました。これにより、キーの生成時にトークンへのアクセスを物理的に確認する必要がなくなります。
  • 公開キー認証に関連するさまざまなオプションを組み合わせる PubkeyAuthOptions ディレクティブが sshd_config に追加されました。 現在、トークン認証の物理的存在チェックをスキップするには、「no-touch-required」フラグのみがサポートされています。 同様に、「no-touch-required」オプションがauthorized_keysファイルに追加されています。
  • 「-O write-attestation=/path」オプションを ssh-keygen に追加して、キーの生成時に追加の FIDO 構成証明証明書を書き込むことができるようにしました。 OpenSSH はまだこれらの証明書を使用しませんが、後でキーが信頼できるハードウェア ストアに配置されていることを確認するために使用できます。
  • ssh および sshd 設定で、IPQoS ディレクティブを介してトラフィックの優先順位付けモードを設定できるようになりました。 LE DSCP (ホップごとの労力が少ない動作)。
  • ssh では、値「AddKeysToAgent=yes」を設定すると、キーにコメント フィールドが含まれていない場合、キーへのパスをコメントとして示すキーが ssh-agent に追加されます。 で
    ssh-keygen と ssh-agent も、ライブラリ パスの代わりに PKCS#11 ラベルと X.509 サブジェクト名をキー内のコメントとして使用するようになりました。

  • DSA および ECDSA キーの PEM を ssh-keygen にエクスポートする機能が追加されました。
  • FIDO/U2F トークン アクセス ライブラリを分離するために使用される新しい実行可能ファイル ssh-sk-helper を追加しました。
  • zlib ライブラリのサポートを使用してコンパイルするために、ssh および sshd に「--with-zlib」ビルド オプションを追加しました。
  • RFC4253の要求に従い、接続中に表示されるバナーにMaxStartupsの制限超過によるアクセスブロックに関する警告が表示されます。 診断を簡素化するために、ps ユーティリティの使用時に表示される sshd プロセス ヘッダーに、現在認証されている接続の数と MaxStartups 制限のステータスが表示されるようになりました。
  • ssh および ssh-agent では、$SSH_ASKPASS で指定された画面に招待を表示するプログラムを呼び出すときに、招待のタイプを示すフラグが追加で送信されるようになりました: 「confirm」 - 確認ダイアログ (はい/いいえ)、「なし」 「」 - 情報メッセージ、「空白」 - パスワード要求。
  • 指定されたデジタル署名に関連付けられたユーザーの allowed-signers ファイルを検索するための、新しいデジタル署名操作「find-principals」を ssh-keygen に追加しました。
  • seccomp メカニズムを使用した Linux での sshd プロセス分離のサポートが改善されました。IPC システム コールを無効にし、 Clock_gettime64()、 Clock_nanosleep_time64 および Clock_nanosleep() を許可しました。

出所: オープンネット.ru

コメントを追加します