EN JA
NG_MPPC(4)
NG_MPPC(4) FreeBSD Kernel Interfaces Manual NG_MPPC(4)

名称

ng_mppcMicrosoft MPPC/MPPE 圧縮と暗号化 netgraph ノードタイプ

書式

#include < sys/types.h>
#include < netgraph/ng_mppc.h>

解説

mppc ノードタイプは、PPP プロトコルの Microsoft ポイントツーポイント圧縮 (MPPC) と Microsoft ポイントツーポイント暗号化 (MPPE) サブプロトコルを実装します。これらのプロトコルは、しばしばポイントツーポイントトンネリングプロトコル (PPTP) に連動して使用されます。

ノードは、圧縮のための comp と圧縮復元のための decomp の 2 つのフックがあります。通常、これらのフックの 1 つか両方は、同じ名前の ng_ppp(4) ノードタイプフックに接続されます。トラフィックフローのそれぞれの指示は、もう一方から独立しています。

フック

このノードタイプは、次のフックをサポートします:
comp
ng_ppp(4) comp フックに接続します。着信フレームは、圧縮される、および/または、暗号化されて同じフックを逆に送信します。
decomp
ng_ppp(4) decomp フックに接続します。着信フレームは、圧縮復元される、および/または、復号化されて同じフックを逆に送信します。

コントロールメッセージ

このノードタイプは、次を加えて、一般的なコントロールメッセージをサポートします:
NGM_MPPC_CONFIG_COMP
このコマンドは、発信トラフィック指示の (すなわち、圧縮、および/または、暗号化のための) セッションのためのノードをリセットして設定します。このコマンドは、引数として struct ng_mppc_config を取ります。

/* MPPE キーの長さ */ 
#define MPPE_KEY_LEN      16 
 
/* MPPC/MPPE PPP negotiation bits */ 
#define MPPC_BIT          0x00000001      /* mppc 圧縮ビット */ 
#define MPPE_40           0x00000020      /* 40 ビットキーを使用 */ 
#define MPPE_56           0x00000080      /* 56 ビットキーを使用 */ 
#define MPPE_128          0x00000040      /* 128 ビットキーを使用 */ 
#define MPPE_BITS         0x000000e0      /* mppe 暗号化ビット  */ 
#define MPPE_STATELESS    0x01000000      /* 状態なしモードを使用  */ 
#define MPPC_VALID_BITS   0x010000e1      /* 有効ビット可能性 */ 
 
/* セッションの設定 */ 
struct ng_mppc_config { 
    u_char    enable;                 /* 利用可能 */ 
    uint32_t  bits;                   /* 設定ビット */ 
    u_char    startkey[MPPE_KEY_LEN]; /* 開始キー */ 
}; 

enabled フィールドは、ノードを通るトラフィックフローを有効にします。 bits フィールドは、PPP の圧縮制御プロトコル (Compression Control Protocol (CCP)) によって交渉されるようなビットを含んでいます。 startkey は、MPPE が交渉された場合にだけ必要であり、 MPPE のために定義されるようにセッション開始キーと等しくなければなりません。このキーは、リンク認証時に使用された MS-CHAP 資格証明に基づいています。

NGM_MPPC_CONFIG_DECOMP
このコマンドは、着信トラフィック指示の (すなわち、圧縮復元、および/または、復号化のための) セッションのためのノードをリセットして設定します。このコマンドは、引数として struct ng_mppc_config を取ります。
NGM_MPPC_RESETREQ
このメッセージは、引数を全く含んでいなくて双方向です。圧縮復元の間にエラーを検出する場合、このメッセージは、ノードによってセッションを開始する NGM_MPPC_CONFIG_DECOMP メッセージを発送者に送信されます。受信者は、PPP CCP リセット-要求をピア (相手側) に送信することによって応答するべきです。

また、CCP リセット-要求がローカル PPP エンティティで受信されるとき、このメッセージは、このノードタイプによって受信できます。ノードは、リモート側が再同期化することができるようにその発信する圧縮と暗号化状態をフラッシュすることによって応答します。

シャットダウン

このノードは、 NGM_SHUTDOWN コントロールメッセージを受け取るか、すべてのフックが切断されている時、シャットダウンします。

コンパイル

カーネルオプションの NETGRAPH_MPPC_COMPRESSIONNETGRAPH_MPPC_ENCRYPTION は、どちらかか両方のケーパビリティで選択的にコンパイルするために提供されます。少なくともこれらの 1 つは、定義しなければなりません。さもなければ、このノードタイプは、役に立ちません。

MPPC プロトコルは、Hi/Fn (以前は、STAC) から利用可能な特許の圧縮コードを必要とします。このノードタイプを NETGRAPH_MPPC_COMPRESSION オプションでコンパイルする前に、これらのファイルは、ほかの場所で取得して、カーネルソースに追加しなければなりません。

関連項目

netgraph(4), ng_ppp(4), ngctl(8) G. Pall, Microsoft Point-To-Point Compression (MPPC) Protocol, RFC 2118. G. S. Pall and G. Zorn, Microsoft Point-To-Point Encryption (MPPE) Protocol, draft-ietf-pppext-mppe-04.txt. K. Hamzeh, G. Pall, W. Verthein, J. Taarud, W. Little, and G. Zorn, Point-to-Point Tunneling Protocol (PPTP), RFC 2637.

作者

Archie Cobbs <archie@FreeBSD.org>

バグ

PPP では、暗号化は、CCP よりむしろ暗号化制御プロトコル (Encryption Control Protocol (ECP)) によって扱われるべきです。しかしながら、Microsoft は、混乱させられますが、それらの ``圧縮'' アルゴリズムに圧縮と暗号化の両方を組み合わせます。
December 8, 1999 FreeBSD