楕円曲線演算ライブラリ (OpenSSL)

概要

OpenSSL ライブラリには,ECDSA などの楕円曲線暗号アルゴリズムを実現するために楕円曲線演算のライブラリ関数が用意されている.

楕円曲線ライブラリで用いられる基本オブジェクト(構造体) は以下である.

 typedef struct ec_method_st EC_METHOD; /* 楕円演算系の構造体 */
	/* 楕円曲線演算関数へのポインタなどを含む */

 typedef struct ec_group_st EC_GROUP;   /* 楕円曲線の構造体 */
	/* EC_METHOD,体の定義,楕円曲線パラメータなどを含む */

 typedef struct ec_key_st EC_KEY;       /* 楕円暗号鍵の構造体 */
	/* EC_GROUP,秘密鍵,公開鍵などを含む */

 typedef struct ec_point_st EC_POINT;   /* 楕円点の構造体 */
	/* EC_METHOD,点の座標などを含む */

楕円曲線暗号で用いられる楕円曲線は,楕円曲線 ID (整数値:NID)または,楕円曲線名称 (文字列)で指定される.OpenSSLの暗号ライブラリでは,内部テーブルとして楕円曲線パラメータを保持している(openssl/obj_mac.h).内部テーブルの楕円曲線を取得する時に,以下の構造体が用いられる.

 typedef struct {
	int nid;
	const char *comment;
 } EC_builtin_curve;

楕円点 (x, y) のオクテット列への変換方式を指定するパラメータとして以下が使われる.

 typedef enum {
	POINT_CONVERSION_COMPRESSED = 2,   /* 圧縮形式 */
	POINT_CONVERSION_UNCOMPRESSED = 4, /* 非圧縮形式 */
	POINT_CONVERSION_HYBRID = 6        /* ハイブリッド形式 */
 } point_conversion_form_t;

なお,楕円曲線ライブラリを用いるときは,"openssl/ec.h" をインクルードする. また,これらの関数を使ったプログラムの例は,暗号プログラム (C言語版) にあります.

関数

関数群は,機能により幾つかのグループに分けられる.各関数に共通的な仕様を示す.

以下,主な関数を示す(有限体に依存する関数は素体の関数のみ).

inserted by FC2 system