Coding - Crypto - Data - Data Security - Digital Signature - OpenSSL - PHP - Software

OpenSSL関数

 OpenSSLの関数はPHPのドキュメントではジャンルが混ざり合って説明されていてわかりにくいのでジャンルごとに分類整理します。

一般

 OpenSSLで一般的に使われる機能です。

openssl_error_string OpenSSL エラーメッセージを返す
openssl_random_pseudo_bytes 疑似ランダムなバイト文字列を生成する

公開鍵暗号

 公開鍵暗号に使う関数です。公開鍵暗号は「秘密鍵」と「公開鍵」のペアを用いてデータの暗号化と復号化を行うのが特徴です。公開鍵は広く公開し、秘密鍵は公開せずに保持しておきます。公開鍵で暗号化したデータは秘密鍵でしか復号できず、秘密鍵で暗号化したデータは公開鍵でしか複合できないという特徴があります。

openssl_cipher_iv_length 暗号 iv の長さを取得
openssl_decrypt データを復号する
openssl_encrypt データを暗号化する
openssl_free_key キーリソースを開放する
openssl_get_cipher_methods 利用可能な暗号メソッドを取得
openssl_get_curve_names ECC で利用可能な楕円曲線の名前を取得する
openssl_get_privatekey openssl_pkey_get_private のエイリアス
openssl_get_publickey openssl_pkey_get_public のエイリアス
openssl_open シール(暗号化)されたデータをオープン(復号)する
openssl_pkcs7_decrypt S/MIME 暗号化されたメッセージを復号する
openssl_pkcs7_encrypt S/MIME メッセージを暗号化する
openssl_pkey_export_to_file エクスポート可能な形式で、キーをファイルに取得する
openssl_pkey_export エクスポート可能な形式で、キーを文字列に取得する
openssl_pkey_free 秘密鍵を開放する
openssl_pkey_get_details キーの詳細の配列を返す
openssl_pkey_get_private 秘密鍵を取得する
openssl_pkey_get_public 証明書から公開鍵を抽出し、使用できるようにする
openssl_pkey_new 新規に秘密鍵を生成する
openssl_private_decrypt 秘密鍵でデータを復号する
openssl_private_encrypt 秘密鍵でデータを暗号化する
openssl_public_decrypt 公開鍵でデータを復号する
openssl_public_encrypt 公開鍵でデータを暗号化する
openssl_seal データをシール(暗号化)する

認証

 通常のUser IDとPasswordを使った認証に加えて公開鍵暗号化(秘密鍵と公開鍵のペア)を使って認証を行う際に使う関数です。あまり聞き慣れないでしょうが、利用事例としては弊社が取り扱う分野である企業間商取引の「cXMLを使ったRequest/Response通信」があります。

openssl_dh_compute_key ローカルのDH秘密鍵とリモート側のDH公開鍵を使い、共有シークレットを計算する

要約関数

 要約関数は「ハッシュ関数」とも呼ばれ、ダイジェストを計算する関数です。ダイジェストは任意の入力に対して特定長の文字列を出力として返す関数で、出力から入力を特定することが非常に困難であることが特徴です。この特徴を生かしてデータの改竄を見極めることに用いられます。

openssl_digest ダイジェストを計算する
openssl_get_md_methods 利用可能なダイジェスト・メソッドを取得

署名リクエスト

 電子署名のリクエスト(CSR)を取り扱う関数です。署名リクエストというのは自身の公開鍵を含めて「この公開鍵が私のものであると誰かに認めてもらう」際に手渡すデータです。署名リクエストには住所や名前も含まれますが、それらのアイデンティティーを保証するものではなく、あくまでも公開鍵に対する裏書きです。

openssl_csr_export_to_file CSR をファイルにエクスポートする
openssl_csr_export CSR を文字列としてエクスポートする
openssl_csr_get_public_key CSR の公開鍵を返す
openssl_csr_get_subject CSR の subject を返す
openssl_csr_new CSR を作成する
openssl_csr_sign CSRに他の証明書(あるいは自分自身)で署名して証明書を作成する

署名

 電子署名を扱うのに使う関数です。電子署名というのは何かに同意することを表すわけではなく、単に「この文書は送信者である秘密キーの保持者が送ったものが改竄されることなく手元に来ているか」を判別するための情報です。実社会で同意を表す際に使われる「署名」に相当するのは「電子サイン」です。

openssl_pkcs7_sign S/MIME メッセージに署名する
openssl_pkcs7_verify S/MIME で署名されたメッセージの署名を検証する
openssl_sign 署名を生成する
openssl_spki_export_challenge 署名済みの公開鍵とチャレンジに関連するチャレンジをエクスポートする
openssl_spki_export 署名済みの公開鍵とチャレンジから、有効なPEMフォーマットの公開鍵をエクスポートする
openssl_spki_new 署名された公開鍵とチャレンジを新規に作成する
openssl_spki_verify 署名済みの公開鍵とチャレンジを検証する
openssl_verify 署名を検証する

証明書

 証明書を扱うのに使う関数です。証明書は「誰かによって署名された署名リクエスト」です。一般的によく知られた署名に「サーバー証明書」があります。自分で生成した署名リクエストに自分で署名した場合は第三者が署名したわけでは無いので署名としてのデータは機能しますが、あくまでも「自称」なので「オレオレ証明書」とも言われます。

openssl_get_cert_locations 有効な証明書の格納場所を検索する
openssl_pbkdf2 PKCS5 v2 の PBKDF2 文字列を生成する
openssl_pkcs12_export_to_file PKCS#12 互換の証明書保存ファイルをエクスポートする
openssl_pkcs12_export PKCS#12 互換の証明書保存ファイルを変数にエクスポートする
openssl_pkcs12_read PKCS#12 認証ストアをパースして配列形式にする
openssl_pkcs7_read PKCS7 ファイルを PEM証明書 の配列にエクスポートする
openssl_x509_check_private_key 秘密鍵が証明書に対応するかを確認する
openssl_x509_checkpurpose 証明書が特定の目的に使用可能かどうか確認する
openssl_x509_export_to_file 証明書をファイルにエクスポートする
openssl_x509_export 証明書を文字列としてエクスポートする
openssl_x509_fingerprint 与えられた X.509 証明書のフィンガープリントあるいはダイジェストを計算する
openssl_x509_free 証明書リソースを開放する
openssl_x509_parse X509 証明書をパースし、配列として情報を返す
openssl_x509_read X.509 証明書をパースし、リソース ID を返す
openssl_x509_verify x509証明書のデジタル署名を公開鍵で検証する
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments