j2meのための ssh2の実装の開発 ―jsch for j2me―...

7
1 / 7 J2ME のための SSH2 の実装の開発 ―JSch for J2ME 1.背景 今般、モバイル環境における認証やネットワーク上のデータ暗号化の方法として、SSL 1 の暗号化通信を HTTP 2 に実装した HTTPS が広く使われるようになっており、クレジット カードの決裁等もHTTPS を介して行なわれている。 しかしながら、モバイル端末の高機能化や無線 LAN の活用等によるインターネットへ のアクセスが、今後より一層一般化してくる。このため、普段我々がデスクトップ上で利 用している HTTP 以外の TCP 3 ベースのネットワークサービス(例えば、SMTP 4 ,POP 5 等) をモバイル端末からでも安全に利用したいというニーズがますます強くなることが予想 される。そのようなニーズはオープンソースソフトウェアの開発に携わる者であればあ るほど、そのニーズは更に強くなることが容易に想定される。このため、オープンソー スソフトウェアによるこの問題解決は、オープンソースソフトウェアコミュニティとっても 重要であると考える。 先にあげた、SSL でもそういったニーズに鑑み、各ネットワークサービスを暗号化する 手法を規定している。この場合、SSL はクライアント側及びサーバ側で各々のネットワ ークサービス毎に実装する必要があり、相応のコスト負担が発生する。モバイル端末 であっても同様である。また、SSL では公開鍵暗号によるクライアント認証も規定され ているが、証明書の取り扱いが容易でないため、一般にはあまり普及していない。一 方で、強力な暗号によるクライアント認証は、サーバ上の重要なデータへのアクセスを 一意に特定するのに非常に重要な機能である。 2.目的 前述した課題に対し本プロジェクトでは、モバイル環境におけるJavaアプリケーション 実行環境である J2ME において、インターネット上ですでに広く使われている SSH2 プロ 1 インターネット上で情報を暗号化して送受信するプロトコル。公開鍵暗号や秘密鍵暗号、デジ タル証明書、ハッシュ関数などのセキュリティ技術を組み合わせ、データの盗聴や改ざん、なり すましを防ぐことができる。 2 Web サーバとクライアント(Web ブラウザなど)がデータを送受信するのに使われるプロトコル。 3 インターネットで利用される標準プロトコルで、 OSI 参照モデルのトランスポート層にあたる。 4 インターネットやイントラネットで電子メールを送信するためのプロトコル。 5 インターネットやイントラネット上で、電子メールを保存しているサーバからメールを受信す るためのプロトコル。

Upload: phamkhanh

Post on 06-Mar-2018

216 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: J2MEのための SSH2の実装の開発 ―JSch for J2ME― 実行環境は利用可能な計算機資源によって、J2EE、J2SE、J2MEのように分類 されている. J2EEは、主にサーバサイドでの利用を、J2SEはデスクトップ、J2MEはモ

1 / 7

J2ME のための SSH2 の実装の開発 ―JSch for J2ME―

1.背景

今般、モバイル環境における認証やネットワーク上のデータ暗号化の方法として、SSL1

の暗号化通信をHTTP 2に実装した HTTPS が広く使われるようになっており、クレジット

カードの決裁等もHTTPS を介して行なわれている。

しかしながら、モバイル端末の高機能化や無線 LAN の活用等によるインターネットへ

のアクセスが、今後より一層一般化してくる。このため、普段我々がデスクトップ上で利

用しているHTTP 以外の TCP3ベースのネットワークサービス(例えば、SMTP 4,POP5等)

をモバイル端末からでも安全に利用したいというニーズがますます強くなることが予想

される。そのようなニーズはオープンソースソフトウェアの開発に携わる者であればあ

るほど、そのニーズは更に強くなることが容易に想定される。このため、オープンソー

スソフトウェアによるこの問題解決は、オープンソースソフトウェアコミュニティとっても

重要であると考える。

先にあげた、SSL でもそういったニーズに鑑み、各ネットワークサービスを暗号化する

手法を規定している。この場合、SSL はクライアント側及びサーバ側で各々のネットワ

ークサービス毎に実装する必要があり、相応のコスト負担が発生する。モバイル端末

であっても同様である。また、SSL では公開鍵暗号によるクライアント認証も規定され

ているが、証明書の取り扱いが容易でないため、一般にはあまり普及していない。一

方で、強力な暗号によるクライアント認証は、サーバ上の重要なデータへのアクセスを

一意に特定するのに非常に重要な機能である。

2.目的

前述した課題に対し本プロジェクトでは、モバイル環境における Java アプリケーション

実行環境であるJ2ME において、インターネット上ですでに広く使われているSSH2 プロ

1 インターネット上で情報を暗号化して送受信するプロトコル。公開鍵暗号や秘密鍵暗号、デジタル証明書、ハッシュ関数などのセキュリティ技術を組み合わせ、データの盗聴や改ざん、なりすましを防ぐことができる。 2 Web サーバとクライアント(Web ブラウザなど)がデータを送受信するのに使われるプロトコル。 3 インターネットで利用される標準プロトコルで、OSI 参照モデルのトランスポート層にあたる。 4 インターネットやイントラネットで電子メールを送信するためのプロトコル。 5 インターネットやイントラネット上で、電子メールを保存しているサーバからメールを受信するためのプロトコル。

Page 2: J2MEのための SSH2の実装の開発 ―JSch for J2ME― 実行環境は利用可能な計算機資源によって、J2EE、J2SE、J2MEのように分類 されている. J2EEは、主にサーバサイドでの利用を、J2SEはデスクトップ、J2MEはモ

2 / 7

トコルを利用可能にするライブラリをオープンソースライセンスのもとで実装した。本実

装は、本プロジェクト開発担当者(JCraft6)がデスクトップ向けJava 上で開発・提供して

いるSSH2 の実装(以下、JSch7と記す)をモバイル環境向けJava へ移植することにより

実現した。本実装により、モバイル端末上のアプリケーションからのリモートの TCP ネ

ットワークサービスへの通信を容易に暗号化することができる(ポートフォワーディング

機能)。また、SSH2 で規定されているクライアント認証は、SSL と比較すれば取り扱い

が容易であり、インターネット上で広く利用されている。

3.開発の内容

(1)動作環境

以下に、Java の実行環境の違いによる分類を示す。

図1 Java 実行環境の分類

Javaの実行環境は利用可能な計算機資源によって、J2EE、J2SE、J2MEのように分類

されている. J2EE は、主にサーバサイドでの利用を、J2SE はデスクトップ、J2ME はモ

バイル環境を想定した Java 実行環境である。J2ME はさらに、想定する実行環境の違

いにより CDC(Connected Device Configuration)、CLDC(Connected Limited Device

Configuration)に分類される。前者はカーナビや高性能 PDA といった 32 ビットCPU と

十分なメモリを持った環境を、後者では、携帯電話やネットワーク家電、通常の PDA と

6 株式会社ジェイクラフト(http://www.jcraft.com/) 7 Java Secure Channel(http://www.jcraft.com/jsch/)

アプリ

KVM

CLDC CDC

JVM

J2SE

J2EE

MIDP Foundation

Personal

Optional Optional

J2ME

Optional

携帯電話

エントリーレベル

PDA

ハイエンドPDA

組み込みデバイス

Optional

デスクトップ Web サービス

Page 3: J2MEのための SSH2の実装の開発 ―JSch for J2ME― 実行環境は利用可能な計算機資源によって、J2EE、J2SE、J2MEのように分類 されている. J2EEは、主にサーバサイドでの利用を、J2SEはデスクトップ、J2MEはモ

3 / 7

いった低速なCPU と少ないメモリからなる環境を対象としている。

本プロジェクトの目標は、J2ME に対し、TCP 上の通信を暗号化する SSH2 をJ2ME 上

に実装することにある。そこで、現在、TCP による通信が利用可能な次の二つの環境

を本プロジェクトの実装対象とした。

l J2ME CDC Foundation Profile 1.28(以下、FP1.2 と略す)

l J2ME CLDC MIDP2.09(以下、MIDP2.0 と略す)

(2)構成・機能

本プロジェクトで開発する3つの機能「暗号機構」「SSH2 プロトコル実装」「SSH2 サービ

ス実装」の関係を以下の図に示す。

図2 機能ブロック図

いずれの機能もハードウェア組み込みの「J2ME プラットフォーム」上に実装される。

「暗号機構」は「SSH2 プロトコル実装」に対し暗号に関する API 群を提供する。「SSH2

プロトコル実装」は「SSH2サービス実装」からのリクエストをリモートの SSHサーバへ送

るための API 群を提供する。外部アプリケーションは、SSH2 による暗号化通信を行う

ために、「SSH2 サービス実装」で提供されるAPI 群を利用する。

前節で触れたように、本プロジェクトの開発担当者はすでに、フルスクラッチから、

J2SE 上で利用可能なSSH2 の実装 JSch を開発し、修正BSD ライセンスで広く提供し

ている。 上述した構成・機能は、このJSchでも同様であり、J2SEと比較して想定でき

る計算機資源や利用可能なAPI が貧弱なJ2ME に対して、FP1.2 および MIDP2.0 で動

作可能なように、アーキテクチャの見直しから始まって、利用可能なAPI の検討、メモリ

の使用方法等の軽量化等を行なった。 8 JSR-46(http://jcp.org/en/jsr/detail?id=46)で定義されている。 9 JSR-118(http://jcp.org/en/jsr/detail?id=118)で定義されており、オプショナルながら TCP をサポートしている。

SSH2 プロトコル実装

J2ME プラットフォーム

SSH2 サービス実装

暗号機構

アプリ アプリ アプリ アプリ

API 群の提供

API 群の提供

Page 4: J2MEのための SSH2の実装の開発 ―JSch for J2ME― 実行環境は利用可能な計算機資源によって、J2EE、J2SE、J2MEのように分類 されている. J2EEは、主にサーバサイドでの利用を、J2SEはデスクトップ、J2MEはモ

4 / 7

(3)成果物

l FP1.2 上で動作するSSH2 ライブラリ

l MIDP2.0 上で動作するSSH2 ライブラリ

また、本成果物をつかったアプリケーションとして、

l J2ME 向けの端末エミュレータ JCTerm10(図3)

l J2MEVNC over SSH211(図4)

をオープンソースライセンスで開発し公開した。

図3 JCTerm for MIDP

図4 J2MEVNC over SSH2

4.従来の技術(または機能)との相違

既存ソフトウェアのうち、オープンソースライセンスでJ2ME 上で利用可 SSH2 の実装

は本プロジェクト開始時点において知られていなかった12。プロラエタリなものでは以

下のようなものがある。

10 http://www.jcraft.com/jcterm/ 11 J2MEVNC は http://j2menvc.sf.net/ で開発されている、MIDP 向けの VNC クライアント。このプラグラムに本成果物を適用した。ソースコード、実行形式は、http://j2me.jsch.org/ より入手可能。 12 2004 年 10 月、http://www.xk72.com/midpssh/ において、MIDP 向けの SSH 1/2 をサポートする端末エミュレータがリリースされている。もともと GPL ライセンスで利用可能な SSH 1 向けの端末エミュレータをもとに JSch のコードを参照して開発されている。

Page 5: J2MEのための SSH2の実装の開発 ―JSch for J2ME― 実行環境は利用可能な計算機資源によって、J2EE、J2SE、J2MEのように分類 されている. J2EEは、主にサーバサイドでの利用を、J2SEはデスクトップ、J2MEはモ

5 / 7

l J2SSH Maverick13

l Idocorromobile14

これらに対する本成果物の優位点としては、本 成果物はオープンソースであるので、

(ライセンスに従って)無償で利用可能であることは言うまでもなく、ソースコードが自由

に参照可能であることから多くの人に問題の有無を検証してもらえる可能性があること

が挙げられる。後者の優位点は、セキュリティーに関わるソフトウェアでは特に重要だ

と考える。

5.期待される効果

本成果物を活用するエンドユーザとしては、企業の業務に携わる人々が考えられる。

このようなユーザは、例えば外出先でモバイル端末から一般のインターネット接続サー

ビスを介して社内の情報にアクセスする必要が多くの局面であり得る。しなしながら、

一般のそのような経路による社内の情報へのアクセスでは、重要な情報がインターネ

ット上をそのまま流れるため、途中経路で情報の盗聴や改ざん、なりすましの恐れが

あり、暗号処理を介した通信が必須になる。

企業ユーザは、モバイル端末から社内の情報へのアクセスを可能にするアプリケーシ

ョンに本成果物を組み込むことにより、安全な通信を簡単に行うことができるようになる。

例えば以下のような利用法が考えられる。

l 例1. 企業の業務システムに組み込まれた携帯端末へのファイル転送及び同

期の暗号化

l 例 2. 携帯端末用メール送受信の暗号化

l 例 3. IT 技術者向けのサーバへのリモートログイン機能の暗号化

13 http://3sp.com/catalog/product_info.php?products_id=28 14 http://www.idokorro.com/products.html

Page 6: J2MEのための SSH2の実装の開発 ―JSch for J2ME― 実行環境は利用可能な計算機資源によって、J2EE、J2SE、J2MEのように分類 されている. J2EEは、主にサーバサイドでの利用を、J2SEはデスクトップ、J2MEはモ

6 / 7

図5 利用イメージ

いずれの利用例においても、はじめに社内 LAN にアクセス可能な SSH サーバに対し

てモバイル端末から本成果物により暗号化通信路を確立する。上記例1では、暗号化

通信路を介して社内LAN 上のファイルサーバとの間でファイルの送受信を行う。例2で

は、同様に POP、SMTP による通信を社内 LAN 上のメールサーバに対して行い、安全

なメールの送受信をモバイル端末から行う。例3では、暗号化通信路を用いて社内の

サーバにリモートログインし社外からリモートメンテナンスを行う。

6.普及(または活用)の見通し

普及活動等の戦略は以下の4つからなる。

l コミュニティサイト(jsch.org)を通じたユーザコミュニティへの浸透

l 開発コミュニティを巻き込んだ、ソフトウェアのバージョンアップ、メンテナンス

l JCraft 独自の、広報活動による認知度の向上

l JCraft 主導の、サポートサービス、アライアンス模索によるユーザ事例開発

(1)コミュニティサイトを通じたユーザコミュニティへの浸透

プロジェクト実施中、JSch などのユーザをターゲットとして、コミュニティサイトを開設

し、フォーラムやメーリングリストを通じて、本成果の普及活動を行う。フィードバックに

関しては、取りまとめを行い、サイトを通じて発信していく。

(2)開発コミュニティを巻き込んだ、本成果のバージョンアップ、メンテナンス

インターネット

SSH2 による 暗 号 化 通 信

SSH サーバ

ファイルサーバ

メールサーバ

社内 LAN

Page 7: J2MEのための SSH2の実装の開発 ―JSch for J2ME― 実行環境は利用可能な計算機資源によって、J2EE、J2SE、J2MEのように分類 されている. J2EEは、主にサーバサイドでの利用を、J2SEはデスクトップ、J2MEはモ

7 / 7

継続的な開発体制の確立および開発スピードの維持のため、開発コミュニティとのコ

ミュニケーションを図り、開発協力者を求めていく。プロジェクト実施中は開発終了とな

ったコンポーネントから順次公開して認知度向上を図り、開発者ニーズの把握に努め

る。

(3)JCraft 独自の、広報活動による認知度の向上

JCraft は、ネット媒体等を通じたプレスリリースや寄稿などによる本成果の広報活動

を実施していく。

(4)JCraft 主導の、サポートサービス、アライアンス模索によるユーザ事例開発

自社ビジネスでの活用に向け、本成果を利用した J2ME 上のアプリケーションを公

開・告知し、有用性をアピールしていく。プロジェクト期間終了後に、MIDP2.0 が実際に

稼動するハードウェアを速やかに入手し、本成果の稼動検証を行い、当該ハードウェ

ア向けにソフトウェアを提供するベンダ等に対し、コンサルティング、サポートサービス

を提供してユーザ事例を開発していく。また、本成果をベースとしたアライアンスを模索

してビジネスレベルでの普及の拡大を目指す。

7.開発者名(所属) * 山中淳彦(株式会社ジェイクラフト) (参考)開発者URL http://www.jcraft.com/