スポンサーリンク

RPC(3) FreeBSD ライブラリ関数マニュアル RPC(3)

名称

rpc_secure − 安全なリモートプロシージャコールのためのライブラリルーチン

書式

#include <rpc/rpc.h>

AUTH *

       authdes_create(char *name, unsigned window, struct sockaddr *addr,des_block *ckey);
int

authdes_getucred(struct authdes_cred *adc, uid_t *uid, gid_t *gid, int *grouplen, gid_t *groups);

int
getnetname
(char *name);

int
host2netname
(char *name, char *host, char *domain);

int
key_decryptsession
(const char *remotename, des_block *deskey);

int
key_encryptsession
(const char *remotename, des_block *deskey);

int
key_gendes
(des_block *deskey);

int
key_setsecret
(const char *key);

int
netname2host
(char *name, char *host, int hostlen);

int
netname2user
(char *name, uid_t *uidp, gid_t *gidp, int *gidlenp, gid_t *gidlist);

int
user2netname
(char *name, uid_t uid, char *domain);

解説

このルーチンは、 RPC ライブラリの一部で、 DES 認証を実現しています。 RPC の詳細については、 rpc(3) を参照してください。

DES 認証として知られる、 RPC 安全認証システムのインタフェースとなる最初の ルーチンは、 authdes_create() です。次のルーチンは authdes_getucred() で す。

注意: DES 認証システムを動作させるには、キーサーバデーモン keyserv(8) を 実行する必要があります。

クライアント側で使用する authdes_create() は、安全認証システムを使用でき るようにする認証ハンドルを戻します。最初のパラメータ name は、サーバプロ セスの所有者のネットワーク名、つまり netname です。通常の場合、このフィー ルドは、ユーティリティルーチン host2netname() から引き出された hostname を表しますが、 user2netname() を使用してユーザ名を表すこともできます。第 2 フィールドは、クライアント証明書の正当性に関するウィンドウで、秒単位で 指定されます。小さいウィンドウの方が大きいウィンドウより安全ですが、ウィ ンドウを小さくしすぎると、クロックの揺れのため、再同期化の頻度が上がりま す。第 3 パラメータ addr はオプションです。このパラメータを NULL にする と、ローカルクロックとサーバのクロックで常に同期が取られていることを認証 システムが仮定するため、再同期化は実行されなくなります。しかしアドレスを 指定すると、システムは、再同期化が必要な時は常に、そのアドレスを使用して リモートタイムサービスから情報を得ます。通常の場合、このパラメータは RPC サーバのアドレスになります。最後のパラメータ ckey もオプションです。この パラメータを NULL にすると、認証システムは、証明書の暗号化に使用するラン ダムな DES キーを作成します。このパラメータを指定すると、それがランダムな キーの代わりに使用されます。

DES 認証の第 2 ルーチン authdes_getucred() は、オペレーティングシステムに 依存しない DES 証明書を UNIX 証明書に変換するためにサーバ側で使用されま す。 authdes_getucred() はキャッシュから情報を引き出すので、情報を得よう として関数が呼び出されるたびに Yellow Page 検索をする必要はないという面 で、ユーティリティルーチン netname2user() とは異なります。

getnetname() は、固有でありオペレーティングシステムに依存しない、呼び出し 側のネット名を固定長配列 name にインストールします。問題がない場合は TRUE を戻し、問題がある場合は FALSE を戻します。

host2netname() は、ドメイン特有なホスト名をオペレーティングシステムに依存 しないネット名に変換します。問題がない場合は TRUE を戻し、問題がある場合 は FALSE を戻します。これは、 netname2host() の逆です。

key_decryptsession() は、 RPC の安全認証システム ( DES 認証) に関連した キーサーバデーモンとのインタフェースです。このルーチン、およびこのルーチ ンに関連した key_encryptsession(), key_gendes(), key_setsecret() をユーザ プログラムが呼び出す必要はほとんどありません。 login(1) などのシステムコ マンドと RPC ライブラリが、この 4 つのルーチンの主なクライアントです。

key_decryptsession() は、サーバのネット名と DES キーを受け取り、サーバの 公開鍵と呼び出しプロセスの実効ユーザ ID に関連した秘密鍵を使用してキーを 復号化します。これは、 key_encryptsession() の逆です。

key_encryptsession() は、キーサーバインタフェースルーチンです。サーバの ネット名と DES キーを受け取り、サーバの公開鍵と呼び出しプロセスの実効ユー ザ ID に関連した秘密鍵を使用してキーを暗号化します。これは、 key_decryptsession() の逆です。

key_gendes() は、キーサーバインタフェースルーチンです。安全な変換キーを キーサーバに要求するために使用します。大抵の場合、 1 つの "ランダム" を選 択するだけでは十分ではありません。なぜなら、現在時刻を利用する様なランダ ム数値のよくある選択方法はとても容易に推測できるからです。

key_setsecret() は、キーサーバインタフェースルーチンです。呼び出しプロセ スの実効 uid のキーを設定するために使用します。

netname2host() は、オペレーティングシステムに依存しないネット名をドメイン 特有のホスト名に変換します。問題がない場合は TRUE を戻し、問題がある場合 は FALSE を戻します。これは、 host2netname() の逆です。

netname2user() は、オペレーティングシステムに依存しないネット名をドメイン 特有のユーザ ID に変換します。問題がない場合は TRUE を戻し、問題がある場 合は FALSE を戻します。これは、 user2netname() の逆です。

user2netname() は、ドメイン特有のユーザ名をオペレーティングシステムに依存 しないネット名に変換します。問題がない場合は TRUE を戻し、問題がある場合 は FALSE を戻します。これは、 netname2user() の逆です。

関連項目

rpc(3), xdr(3), keyserv(8)

以下のマニュアル

       Remote Procedure Calls: Protocol Specification.
       Remote Procedure Call Programming Guide.
       Rpcgen Programming Guide.
       RPC: Remote Procedure Call Protocol Specification,                                                            RFC1050, SunMicrosystems Inc., USC-ISI.
FreeBSD 10.0                   February 16, 1988                  FreeBSD 10.0
スポンサーリンク