日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
KTLS(4) FreeBSD カーネルインタフェースマニュアル KTLS(4) 名称 ktls -- カーネルのトランスポートレイヤのセキュリティ 書式 options KERN_TLS 解説 ktls 機能によって、カーネルは、TCP ソケットでトランスポートレイヤセキュリ ティ (Transport Layer Security; TLS) フレーミングを実行することができま す。ktls で、TLS を使用するソケットの最初のハンドシェイクは、ユーザランド で実行されます。いったんセッションキーがネゴシエートされると、それらは、 TCP_TXTLS_ENABLE と TCP_RXTLS_ENABLE ソケットオプションを通してカーネルに 提供されます。両方のソケットオプションは、それらの引数として struct tls_enable 構造体を受け付けます。この構造体のメンバは、TLS セッションのた めに使用される暗号スイートを記述し、それぞれの方向のために使用されるセッ ションキーを提供しています。 ktls は、セッションキーを各方向に一度だけ設定することを許可しています。結 果として、アプリケーションは、ktls を使用するとき、キーの再入力を無効にし なければなりません。 モード ktls は、異なるモードで操作することができます。与えられたソケットは、送信 と受信のために異なるモードを使用するか、または単一の方向のみをオフロード しします。利用可能なモードは、次の通りです: TCP_TLS_MODE_NONE ktls は、有効にされません。 TCP_TLS_MODE_SW TLS レコードは、ソケットレイアのカーネルで暗号化ま たは暗号解読されます。通常、暗号化または暗号解読 は、ソフトウェアで実行されますが、また crypto(9) を通してコプロセッサによって実行されます。 TCP_TLS_MODE_IFNET TLS レコードは、ネットワークインタフェースカード (NIC) によって暗号化または暗号解読されます。この モードで、ネットワークスタックは、暗号化されたデー タで動作しません。代わりに、NIC は、送信している TLS レコードを暗号化し、受信した TLS レコードをホ ストに提供する前に、暗号解読します。 この機能をサポートするネットワークインタフェース は、ifconfig(8) によって報告されるように TXTLS4 (IPv4 のために) および/または TXTLS6 (IPv6 のため に) ケイパビリティを通知します。これらのケイパビリ ティは、また ifconfig(8) によって制御することがで きます。 ネットワークインタフェースが TLS オフロードのため の (パケットペーシングとしても知られている) 速度制 限をサポートしているなら、インタフェースは、 TXTLS_RTLMT ケイパビリティを通知します。 TCP_TLS_MODE_TOE TLS レコードは、TCP オフロードエンジン (TOE) を使 用して NIC によって暗号化されます。これは、ネット ワークスタックが暗号化されたデータで動作しないとい う点において、TCP_TLS_MODE_IFNET に似ています。し かしながら、このモードは、TOE と連携して TCP と TLS の間の相互作用を処理します。 送信 いったん TLS 送信が TCP_TXTLS_ENABLE ソケットオプションの成功したせってに よって有効にされると、ソケットで書き込まれるすべてのデータは、TLS レコー ドに格納され、暗号化されます。ほとんどのデータは、アプリケーションレイア の TLS レコードで送信され、カーネルは、TLS レコードの間でデータをどのよう に分割するかを選択します。固定の長さとレコードタイプがある個別の TLS レ コードは、TLS_SET_RECORD_TYPE 制御メッセージで TLS レコードタイプを設定し た sendmsg(2) によって送信することができます。この制御メッセージのペイ ロードは、希望する TLS レコードタイプを保持する単一のバイトです。これは、 アプリケーションのデータ以外のタイプがある TLS レコード (例えば、ハンド シェイクメッセージ) を送信ために、または特定のコンテンツ (例えば、空のフ ラグメント) があるアプリケーションデータのレコードを送信するために使用す ることができます。 TLS の送信は、マッピングされていない mbuf の使用を必要とします。マップさ れていない mbuf は、デフォルトで有効にされませんが、 kern.ipc.mb_use_ext_pgs sysctl ノードを 1 に設定することによって有効にす ることができます。 ソケットの現在の TLS 送信モードは、TCP_TXTLS_MODE ソケットオプションを通 して問い合わせることができます。TLS 送信オフロードを使用するソケットは、 また TCP_TLS_MODE_SW と TCP_TLS_MODE_IFNET の間を切り替えるために TCP_TXTLS_MODE ソケットオプションを設定することができます。 受信 いったん TLS 受信が TCP_RXTLS_ENABLE ソケットオプションの成功した設定に よって有効にされると、ソケットから読み込んだすべてのデータは、暗号解読さ れた TLS レコードとして返されます。各受信された TLS レコードは、 recvmsg(2) を使用してソケットから読み込まなければなりません。各受信された TLS レコードは、暗号解読されたペイロードと共に TLS_GET_RECORD 制御メッ セージを含んでいます。制御メッセージは、TLS レコードヘッダからフィールド を含む struct tls_get_record を含んでいます。無効であるか、または壊れた TLS レコードが受信されるなら、recvmsg(2) は、次のエラーの 1 つで失敗しま す: [EINVAL] TLS レコードのヘッダのバージョンフィールドは、カーネル 内 TLS を有効にするために使用される struct tls_enable 構造体によって要求されるバージョンと一致しませんでし た。 [EMSGSIZE] TLS レコードの長さは、小さすぎたか、または大きすぎまし た。 [EMSGSIZE] 切り詰められた TLS レコードを送信した後に、接続は、ク ローズされました。 [EBADMSG] 含まれている認証タグと一致する失敗した TLS レコード。 ソケットの現在の TLS 受信モードは、TCP_RXTLS_MODE ソケットオプションを通 して問い合わせることができます。現在のところ、モードを変更することはでき ません。 sysctl ノード ktls は、kern.ipc.tls ノードの下でいくつかの sysctl ノードを使用します。 そのうちのいくつかは、以下に説明されています: kern.ipc.tls.enable 新しいカーネルの TLS セッションを作成することが できるかどうかを判断します。 kern.ipc.tls.cbc_enable AES-CBC を使用した暗号スイートがある新しいカーネ ル TLS セッションを作成することができるかどうか を判断します。 kern.ipc.tls.sw TCP_TLS_MODE_SW を使用して TLS セッションのため の統計情報を含むノードのツリー。 kern.ipc.tls.ifnet TCP_TLS_MODE_IFNET を使用して TLS セッションのた めの統計情報を含むノードのツリー。 kern.ipc.tls.toe TCP_TLS_MODE_TOE を使用して TLS セッションの統計 情報を含むノードのツリー。 kern.ipc.tls.stats 様々なカーネルの TLS 統計情報を含むノードのツ リー。 バックエンド ベースシステムは、TLS レコードを暗号化と暗号解読のために crypto(9) を使用 して、TCP_TLS_MODE_SW モードのためのソフトウェアバックエンドが含まれてい ます。このバックエンドは、ktls_ocf.ko カーネルモジュールをロードするこに よって有効にすることができます。 cxgbe(4) と mlx5en(4) ドライバは、TCP_TLS_MODE_IFNET モードのためのサポー トを含んでいます。 cxgbe(4) ドライバは、TCP_TLS_MODE_TOE モードのためのサポートを含んでいま す。 サポートされているライブラリ OpenSSL 3.0 以降は、ktls のためのサポートを含んでいます。 security/openssl-devel ポートは、また KTLS オプションを有効にすることに よって ktls のためのサポートで構築されます。ベースシステムの OpenSSL は、 WITH_OPENSSL_KTLS で構築するとき、KTLS サポートを含んでします。 サポートされているライブラリを使用しているアプリケーションは、そららが、 SSL_read(3) と SSL_write(3) のような標準的なインタフェースを使用して提供 されているあらゆる変更なして、ktls で一般的に動作するはずです。追加の性能 は、SSL_sendfile(3) の使用によって得られます。 実装に関する注 ktls は、ソフトウェアの暗号化と暗号解読を行うとき、物理的なメモリのダイレ クトマップが存在することを仮定しています。結果として、直接マップがある アーキテクチャでのみサポートされています。 関連項目 cxgbe(4), mlx5en(4), tcp(4), src.conf(5), ifconfig(8), sysctl(8), crypto(9) 歴史 カーネル TLS は、FreeBSD 13.0 ではじめて登場しました。 FreeBSD 13.2 March 8, 2021 FreeBSD 13.2