EN JA
RPC(3)
RPC(3) FreeBSD Library Functions Manual 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, const char *host, const 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, const uid_t uid, const char *domain);

解説

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

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

注意: DES 認証システムを動作させるには、キーサーバ (keyserver) デーモン keyserv(8) が動いていなければなりません。

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

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

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 キーを受け取り、サーバの公開鍵と呼び出しプロセスの実効 UID に関連した秘密鍵を使用してキーを復号化します。これは、 key_encryptsession() の逆です。

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

key_gendes() 関数は、キーサーバインタフェースルーチンです。安全な会話キーをキーサーバに問い合わせるために使用されます。現在時刻を使用するような乱数選択する共通の方法は容易に推測できるので、通常、1 つの“ランダム”を選択することは十分によくありません。

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

netname2host() 関数は、オペレーティングシステム独立のネット名をドメイン特有のホスト名に変換します。成功すれば TRUE を返し、失敗すれば FALSE を返します。これは、 host2netname() の逆です。

netname2user() 関数は、オペレーティングシステム独立のネット名をドメイン特有のユーザ ID に変換します。成功すれば TRUE を返し、失敗すれば FALSE を返します。 TRUE これは、 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, Sun Microsystems Inc., USC-ISI.

February 16, 1988 FreeBSD