PHPの暗号通信ライブラリphpseclib入門 (1.概要とインストール)

投稿者 : OSCA

[PR] "出川哲朗の充電させてもらえませんか?"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 本稿では、PHPのオープンソースの暗号通信ライブラリ「phpseclib」の概要について解説します。 また次稿では、具体的なライブラリの使い方についても解説していきます。

phpseclib とは?

 phpseclib (PHP Secure Communications Library) は、PHP のオープンソース暗号通信ライブラリで、MITライセンスのもとで開発・公開されているピュアPHPライブラリです。SSH, SFTP, SCP などの暗号通信機能を有しており、暗号方式も RSA, DES, 3DES, Rijndael, AES などに幅広く対応しています。

 2016年08月現在、v2.0系は v2.0.2 が最新、v1.0系は v1.0.2 が最新となっています。 v2.0系は、名前空間(namespace)が導入されたのと、Composer などのような autoloader の機能が必要要件となりました。 現時点ではプロジェクトの特性によって、v1.0系を使うかv2.0系を使うかを判断すればよいでしょう。

メリットとデメリット

 PHP では、PECL (The PHP Extension Community Library) でSSH2関数が提供されているので、SSH2関数を利用すれば SSH, SCFTP, SCP の機能は実現できてしまいます。 それにも関わらず phpseclib を利用したい場合というのは、以下のようなメリットの場合があります。

メリット(1)

 PHPアプリケーションを動かしているサーバーにPECLのSSH2関数がインストールされていない(できない)場合に、phpseclib を利用できます。 レンタルサーバーを利用している場合や、Windows Server で PHP を動かしている場合などは、SSH2 関数をインストールするのが難しいでしょう。 しかし phpseclib はピュアPHPライブラリなので、SSH2関数のようにlibssh2などのライブラリなどにも依存していません。

メリット(2)

 メリット(1)と同様の理由ではありますが、PHPアプリケーションの配布し易さが向上します。 配布するPHPアプリケーションがどのような設定のサーバー環境にデプロイされるかわからない場合でも、SSH2関数を利用するよりは安心して配布できるでしょう。

デメリット(1)

 逆にデメリットはと言えば、phpseclib がピュアPHPであることでしょう。 SSH2関数はC言語実装の libssh2 のラッパー関数なので、パフォーマンスに優れていますが、phpseclib は全てを PHP で実装しているため、パフォーマンスの面では劣ります。 とは言え、ループ処理で繰り返し呼び出さないのであればそこまで気になるパフォーマンスの差でもありません。

インストール

 phpseclib は、GitHub のプロジェクトページで公開されていますので、ここからダウンロードすることができます。

 また、パッケージ管理に Composer を利用している場合は、次の例のように Packagist リポジトリに登録されている phpseclib を利用することができます。

"require": {
    "phpseclib/phpseclib": "2.0.2"
}

おわりに

 本稿では PHP の暗号通信ライブラリ phpseclib の概要とインストール方法について解説しました。 次稿では phpseclib のサンプルを示します。

PHP環境構築トップページへ戻る

PHPのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca