本発明者は、先に上位アプリケーションのプログラムを変更することなく、データの漏洩、改竄、なりすまし、進入、攻撃の防止機能を強化するため、送信側と受信側とで暗号化・復号化ロジックの取決めを行い、これをトランスポート層に存在するTCP又はUDPに該当するプロトコルのペイロードに適用する新規な暗号化システムTCP2を提供している(例えば、特許文献1参照。)。
近年、インターネットを利用した通信は、パソコンさえあれば、それをネットワークに接続するだけで、誰でもネットワーク上のコンピュータにアクセスできるため、社会の中で急速に普及拡大している。一方、このインターネット通信の普及拡大に伴って、ハッカー(hacker)やクラッカー(Cracker)が他人のコンピュータシステムに侵入して、ソフトウエアやデータを盗み見たり、改竄や破壊を行ったりするという社会問題も大きくなっている。
具体的な不正妨害のケースとしては、まず第1に、中心的なシステムが使えなくなるように、ネットワークから大量のメッセージを送りつけコンピュータシステムの運用を妨害するシステム妨害がある。この妨害によってホストが過負荷になるとシステムダウンに陥ってしまうことも起こりうる。
また、ホストのパスワードを不正に入手し、機密情報を盗んだり、情報の改竄や破壊を行ったりする「不正アクセスとなりすまし」の不正妨害がある。この妨害にはコンピュータが保有する情報を勝手に書き換え、人を陥れる卑劣のものもある。また、特定のパソコンに忍び込み、メールアドレスやパスワードなど個人の機密データを搾取するスパイウエアといわれる不正行為も発生している。このようにネットワークに接続したコンピュータが持つデータベースの内容を不正に盗み見る、いわゆる盗聴行為も頻繁に行われている可能性も否定できない。
また、サイト若しくはサーバの運営元で、意図的に個人情報を盗むといった行為や、社内に潜むスパイなどによるサイバーテロ(Cyber terrorism)といった危機も全くないとはいえない状況である。
さらに、他人のコンピュータにコンピュータ障害をもたらすプログラムである「ウイルス」を送り込むという不正妨害が最近多くなっている。この送り込まれたウイルスに、メールなどを自宅で使用したパソコンが感染し、それを社内に接続した瞬間に社内のパソコン全体が感染したり、ウイルスがコンピュータの中のファイルを破壊させたり、更には、ネットワーク全体をダウンさせたりするといった問題も生じている。
このため、従来のTCP/IP(Transmission Control Protocol/Internet Protocol)やUDP(User Datagram Protocol)を利用したインターネット上での通信において、データの「漏洩」、「改竄」等を防ぐ機能として、IPsec(アイピーセック:Security Architecture for Internet Protocol)やSSL(Secure Socket Layer)といわれる暗号化通信が利用されている。
一般に、暗号化通信には、共通鍵(秘密鍵ともいう)暗号方式と公開鍵暗号方式があるが、IPsecは共通鍵暗号方式を用いたものが多い。共通鍵暗号方式の方が公開鍵暗号方式より暗号化・復号化の速度が速いという特徴がある。このIPsecに用いられる共通鍵暗号方式は、暗号化と復号化を同じ鍵で行う方式であり、鍵の生成は送信側又は受信側のいずれで生成してもよいが、受信側と送信側とで共通鍵を使うために、鍵の交換時に内容が外部に漏れないよう細心の注意を払わなければならない。
共通鍵暗号方式に用いられるアルゴリズムはDES(Data Encryption Standard:米国IBM社が開発した共通鍵(秘密鍵)暗号化アルゴリズム)が代表的である。IPsecもこのDESを暗号アルゴリズムの1つに採用している。IPsecは、IETF(Internet Engineer Task Force)が標準化を進めたものであり、この特徴は、単に特定のアプリケーションだけを暗号化するのではなく、ホストから送信されるあらゆる通信をIPレベルで暗号化する点にある。
これによりユーザはアプリケーションを意識することなく安全な通信を可能とすることができる。また、IPsecは、将来にわたって使えるように、それ自体の仕組みを変えることなく使用する暗号アルゴリズムを変更することを可能としている。IPsecで用いられる共通暗号鍵としては、SPI(Security Pointer Index)と呼ばれる32ビット符合が用いられ、鍵交換プロトコルとしては、IKE(Internet Key Exchange)が用いられる。さらに、IPsecには、完全性認証のためのプロトコルAH(Authentication Header)が用意されている。
また、SSLは、米ネットスケープ社(現在AOLに吸収合併)の開発したセキュリティ機能付HTTPプロトコルであり、これを利用することによりクライアントとサーバがネットワーク上でお互いを認証できるようになり、クレジットカード情報などの機密性の高い情報を暗号化してやり取りすることが可能となる。これにより、データの盗聴、再送攻撃(ネットワーク上に流れたデータを盗聴して何度も繰り返して送ってくる攻撃)、なりすまし(本人の振りをして通信する)、データの改竄などを防止することができる。
図8のAは従来のIPsecを用いた暗号化通信を行う場合のプロトコルスタックの例を示し、図8のBは従来のSSLを用いた暗号化通信を行う場合のプロトコルスタックの例を示している。
OSI参照モデルは、最下層(第1層)が物理層、第2層がデータリンク層、第3層がネットワーク層、第4層がトランスポート層、第5層がセッション層、第6層がプレゼンテーション層、最上層(第7層)がアプリケーション層になっている。このOSI参照モデルにおける7階層は、通信機能を7段階に分けたものであり、その階層毎に標準的な機能モジュールを定めている。図8のAでは、第5層のセッション層までが示されている。プロトコルスタックとは、ネットワークの各階層における機能を実現するためのプロトコルを選び、階層状に積み上げたソフトウエア群である。
まず、OSI参照モデルについて概略を説明すると、第1層の物理層は、信号線の物理的な電気特性や符号の変調方法などを規定した層である。ただ、この層だけが単独で定義・実装されることは少なく、通常は、第2層のデータリンク層と共に、たとえばイーサネットの規格、などとして定義される。
第2層のデータリンク層は、データのパケット化や物理的なノードアドレス、パケットの送受信方法などを規定する層である。この層は、物理的な通信媒体を通して、2つのノード間でパケットをやり取りするためのプロトコルを規定するものであり、各ノードに対して、何らかのアドレスを付け、そのアドレスに基づいてパケットの送信先を特定し、パケットを通信媒体上に送信する。
通信媒体としては、銅配線や無線、光ファイバなど、多様なものがある。また、接続形態(トポロジー)も、1対1の対向接続だけでなく、バス型やスター型、リング型など多くの種類がある。通信媒体上に送信されたパケットは、受信側ノードに到着した時点でそのノードに取り込まれ、さらに上位のプロトコル層へと渡される。
物理層とデータリンク層に渡って配置されるNIC(Network Interface Card)ドライバは、パソコンやプリンタなどを構内ネットワーク(LAN)につなぐための拡張ボードである。単にネットワークカードという場合はイーサネットにつなぐ場合が多い。
このNICドライバにより、データを送信したいノード(機器)がケーブルの空き状況を監視して、ケーブルが空くと送信を開始するようにしている。このとき、もし複数のノードが同時に送信を開始するとケーブル内でデータが衝突して破壊されるので、両者は送信を中止し、ランダムな時間を待って送信を再開するのである。これによって一本のケーブルを複数のノードが共有して互いに通信することができる。
第3層のネットワーク層は、任意の2つのノード間での通信方法を規定する層である。TCP/IPでいえばIP層に相当する。データリンク層では、同一ネットワーク媒体上のノード間での通信を行うことができるが、その機能を使って、ネットワーク上に存在する任意の2つのノード間で、ルーティング(routing)を行いながら通信するのがこのネットワーク層の役目である。
ここで、ルーティングとはTCP/IPネットワークにおいて目的のホストまでパケットを送信するときに、最適な経路を選択して送信することをいう。例えば、イーサネットでは、同一セグメント上のノード同士でしかお互いに通信できないが、ネットワーク層では、2つのイーサネットセグメント間でパケットをルーティングすることによって通信を行う。
また、電話回線を通じてコンピュータをネットワーク(イーサネット)に接続するダイヤルアップPPP(Point to Point Protocol)回線へのルーティング、また、光ファイバを使った専用線へのルーティングなど、物理的なネットワーク媒体によらずにパケットをルーティングすることができる。この目的のため、通常は、物理媒体に依存しないアドレス(TCP/IPならば、IPアドレス)を各ノードに割り当て、これに基づいてルーティングを行っている。
IPsecは、このネットワーク層で、つまりIPレベルでホストから送信されるあらゆる通信を暗号化するので、ユーザはアプリケーションを意識することなく安全な通信を可能とすることができるのである。
第4層のトランスポート層は、各ノード上で実行されている2つのプロセス間で通信を行う機能を提供している層であり、プロトコル層である。TCP/IPでいえばTCPがこれに相当する。またネットワーク層では、2つのノード間での通信を行う機能を提供しているが、これを使って、2つのプロセス(アプリケーション)間で、エラーのない、仮想的な通信路を提供するのがTCPの役目である。
すなわち、ネットワーク層ではデータを送ることはできるが、そのデータが確実に相手に届くという保証はない。また、送信した順に正しくデータが届くという保証もない。そこで、アプリケーションにとって使いやすくするために、エラーのない通信路を提供するのがTCPである。必要ならばデータの再送・回復処理などを行う。
このトランスポート層にはTCPの他にUDPも配置されるが、このUDPとTCPの違いは、TCPがデータの補償がされているプロトコルである分、UDPより低速であるのに対して、UDPはデータ補償がない分、高速になっている点である。コンピュータ間の通信のように主としてデータを送る場合にはTCPが用いられ、IP電話のように音声や画像を送る場合にはUDPが多く用いられる。この通信システムは、本発明者が特許文献1において初めて提案したものである。
第5層のセッション層は、セッション(通信の開始から終了まで)の手順を規定する層であり、アプリケーション間でコネクションを開設して通信ができる状態にする層である。この層に配置されるソケット(socket)は、コンピュータが持つネットワーク内の住所に当たるIPアドレスと、IPアドレスのサブアドレスであるポート番号を組み合わせたネットワークアドレスを意味している。
コンピュータ同士を接続する場合は、必ずソケット(IPアドレスとポート番号の組)を指定して行う。図8のBに示すように、従来の代表的な暗号化通信技術であるSSLは、このセッション層で暗号化通信を実現している。
第6層のプレゼンテーション層は、セッション(通信の開始から終了まで)でやり取りするデータの表現方法や符号化、暗号化などを規定する層である。TCP/IPプロトコルでは、この層に相当する部分はなく、通常はアプリケーション自身でストリームデータの処理をハンドリングしている。
また、第7層のアプリケーション層は、アプリケーション間でのデータのやり取りを規定するための層であり、TCP/IPプロトコルではこの層に相当する部分はない。例えば、電子メールのフォーマットや、文書の内部構造など、アプリケーション間で相互にデータをやり取りする場合に必要な、共通のデータ構造などを規定する層である。
図8のAは、IPsecを搭載した標準プロトコルスタックであるが、まず、物理層(第1層)とデータリンク層(第2層)に、NIC(Network Interface Card)ドライバが設けられている。このドライバは、コンピュータなどのハードウエアをネットワークに接続するためのインターフェースカードのドライバであり、その内容はデータ送受信制御ソフトウエアである。例えばEthernetに接続するためのLANボードまたはLANカードがこれに相当する。
第3層のネットワーク層は、一部がトランスポート層(第4層)まで伸びたIPエミュレータ(emulator)が存在している。このトランスポート層まで延びた部分には、トランスポートとしての機能は実装していない。セッション層に、ネットワーク層の機能を提供しているだけある。このIPエミュレータは、IPsecによる暗号化通信を行うプロトコルと、暗号化通信を行わないプロトコルであるIPを用途に応じて切り換えて使う働きをする。
また、第3層のネットワーク層にはARP(Address Resolution Protocol)が配置されている。このARPは、IPアドレスからEthernetの物理アドレスであるMAC(Media Access Control)アドレスを求めるのに使われるプロトコルである。MACは、媒体アクセス制御と呼ばれる、LANなどで利用される伝送制御技術であり、データの送受信単位であるフレームの送受信方法やフレームの形式、誤り訂正などを規定する技術として利用されている。
また、このネットワーク層には、IPのエラーメッセージや制御メッセージを転送するプロトコルであるICMP(Internet Control Message Protocol)と、同一のデータを複数のホストに効率よく配送するための又は配送を受けるために構成されるホストのグループを制御するためのプロトコルであるIGMP(Internet Group Management Protocol)が設けられている。そして、ネットワーク層の上位層のトランスポート層には、TCPとUDPが、そしてその上位層であるセッション層にはソケット(Socket)インターフェイスが配列されている。
図8のBは、暗号化処理プロトコルとしてSSLを具備した標準プロトコルの例であり、ネットワーク層にIPsecを搭載しない代わりにソケット(セッション層)にSSLが搭載されている。この他のプロトコルは図8のAに示したものと同じである。
従来の代表的な暗号化通信技術の中で、IPsecは、IPのパケットを暗号化して送受信するものであり、したがって、TCPやUDPなどの上位のプロトコルを利用するアプリケーションソフトはIPsecが使われていることを意識する必要がない。
一方、SSLでは、互いの認証レベルではRSA(Rivest Shamir Adleman:公開鍵暗号方式を開発者3人の頭文字)公開鍵暗号技術を用いたデジタル証明書が用いられ、データの暗号化ではDESなどの共通鍵暗号技術が用いられている。このSSLは第5層のセッション層にあるため、特定のアプリケーションに依存することになる。
IPsecは、OSIにおける第4層(トランスポート層)より下位の第3層(ネットワーク層)におけるデータの「漏洩」や「改竄」を防ぐ機能として実現したものである(非特許文献1を参照。)。これに対して、SSLは、第5層のセッション層における暗号化技術であり、現在インターネットで広く使われているWWW(World Wide Web)やFTP(File Transfer Protocol)などのデータを暗号化して、プライバシーに係る情報や企業秘密情報などを安全に送受信するためのものである。
図9に示す表1は、IPsecとSSLの機能を比較して記載したものである。この表から見る限り、IPsecとSSLは互いに相反する利点と欠点がある。
例えば、クライアント−クライアント間の通信では、SSLの場合、そのコマンド体系と通信内容が主従の関係、つまりクライアント/サーバとなってしまうことから、サーバを介することなくクライアント−クライアント間の通信はできなかった。すなわち、端末Aから端末Bに秘密のデータをSSLにより暗号化して送る場合には、必ず間にサーバを介在する必要があった。これに対して、IPsecではこのような制約がないので直接通信が可能となる。
また、PPP(Point to Point Protocol)モバイル環境あるいはADSL(Asymmetric Digital Subscriber Line)環境においては、IPsecは、データの暗号化通信を開始する前に、暗号化方式の決定、鍵の交換、相互認証に使用するプロトコルであるIKE(Internet Key Exchange)プロトコルを使用した通信の中で、接続先相手の認証を行っている。
したがって、PPPモバイル環境(リモートクライアント)又は、ADSL環境の場合、IPアドレスが固定できないため、IPsecのゲートウェイ間で、最も使用しているIKEのMainモード、つまり認証の際に通信相手のIPアドレス情報を使用するモードを使用することができない。
なお、解決策としては、Aggressiveモードを使用することで、ID情報にIPアドレスを使用しなくてもよく、ID情報に例えばユーザ情報を使用し、既知共有鍵にユーザのパスワードを使用することで相手を特定することができる。但し、Aggressiveモードでは鍵交換情報と同じメッセージの中で接続先相手のIDを送信するため、IDは暗号化されずに平文のまま送信することになる。
また、XAUTH(Extended Authentication within IKE)を利用することにより、認証の問題を解決することができるが、ファイアウォールの設定で、リモートクライアントからのアクセスは、IPアドレスが不明であるため、IKE、IPsecを全て許可にする必要があり、セキュリティ上問題が残る。SSLは、この環境下であっても、通信することが可能である。
また、IPsecは、NAT(Network Address Translation)やIPマスカレードに対応することができないという問題がある。これらに対応するためには、例えばUDPのペイロードに載せるといった他の機能と併用しなければならない。
NATは、インターネットに接続された企業などが1つのグローバルなIPアドレスを複数のコンピュータで共有する技術であり、組織内でのみ通用するIPアドレス(ローカルアドレス)とインターネット上のアドレス(グローバルアドレス)を相互変換する技術である。NATに対応できないのは、IPヘッダがAH(Authentication Header)の認証範囲に入っているため、このローカルアドレスからグローバルアドレスの相互変換ができなくなり、サブネットの異なるローカルアドレス同士の通信ができなくなるからである。
また、IPマスカレードとは、LAN内のプライベートアドレスを持つ複数のクライアントからインターネットにアクセスすることを可能とするような仕組みであり、これを利用すると、外部(インターネット)からはIPマスカレードが動作している端末しか見えないのでセキュリティ上から見て望ましいといえるものである。IPsecがIPマスカレードに対応できない理由は、IPsecのESP(Encapsulating Security Payload:暗号ペイロード)ヘッダがIPヘッダのすぐ後にあるためである。
IPマスカレードを実装している通常のルータは、IPヘッダのすぐ後ろには、TCP/UDPのポート番号があると判断している。したがって、IPマスカレードを実装しているルータを経由すると、このポート番号を変更してしまうため、IPsecは、改竄されたと判断して、ホストの認証ができないという問題が生じる。この問題は、UDPのペイロードに乗せるためのNAT−T(NAT-Traversal)をサポートする製品を利用することで回避することができる。
但し、NAT−Tのドラフトバージョンが異なると、NAT−T対応製品同士でも接続することができない。SSLは、この環境下であっても、通信することが可能である。
これに対し、ハッカーやクラッカーといわれるネットワークの不正侵入者によるTCP/IPへのさまざまな攻撃、いわゆるDoS攻撃(Denial of Service:サービスを停止させる攻撃)に対しては、SSLは無力である。TCP/IPプロトコルスタックへのDoS攻撃、例えば、TCP切断攻撃が行われると、TCPセッションが切れてしまいSSLのサービスは停止してしまうのである。
IPsecは第3層(IP層)に実装しているため、IP層にセキュリティ機能を持つので、TCP/IP(第4層、第3層)へのDoS攻撃を防ぐことができる。しかし、SSLは、TCP/IP(第4層、第3層)より上の層(第5層)に実装されている暗号化プロトコルであるため、TCP/IPへのDoS攻撃を防ぐことができない。
さらに、物理ノイズが多く通信エラーが多発するような劣悪な通信環境化における通信に対しては、SSLの方がIPsecに比べて効果的である。すなわち、IPsecは、エラーの検出をした場合、再送動作を上位のTCPに任せることになる。TCPは、再送データをIPsecに送るが、IPsecはこの再送データであることが認識できず、再暗号を行ってしまうのである。SSLはTCPでエラー回復処理を行うので同じデータを再暗号化することはない。
また、IPsecでは異なったLAN間の通信ができない。すなわち、LAN内のサブネットアドレスの配布管理は、LAN内にあるDHCP(Dynamic Host Configuration Protocol)サーバが管理しているため、LAN内では、同一のサブネットアドレスが割り振られることはないが、異なったLAN間の通信の場合、お互いのLAN内にあるDHCPサーバが個別にサブネットアドレスを割り振っているため、同一アドレスが割り振られる可能性がある。
このように同一アドレスが割り振られた場合には、IPsecでは通信することができない。但し、別にIPsec−DHCPサーバを立てて、同一アドレスにならないように管理すれば、通信することができる。SSLは上述したようにOSI参照モデルの第5層(セッション層)に位置しているため、下位層のTCPでエラー回復処理を行うことができ、上記のような劣悪な環境下でも通信することが可能となる。
また、異なったネットワーク環境下における通信に対しては、IPsecは、経由するノード全てを管理し、IPsecが通過できるように設定変更しなければならないため、管理が大変であるが、SSLは、この環境下であっても、経由するノードの環境を意識せず通信することが可能である。
また、SSLは、UDPの通信をサポートしていないため、UDPを暗号通信することができない。TCPも特定のポートしかサポートしていないため、TCP全てのポートを暗号通信することができない。これに対して、IPsecは、UDPでもTCPでも暗号通信することができる。
さらに、SSLはアプリケーションに対する互換性を持たない点において問題がある。アプリケーションは、インターネット通信を行う際にソケット(第5層)をプログラムインターフェースとして使用する。このため、アプリケーションがSSL(第5層)を使用する場合には、このソケットインターフェースをSSLインターフェースに変更しなければならない。従って、SSLにアプリケーションの互換性はない。
これに対し、IPsecは、ソケット(第5層)の下に位置しているため、アプリケーションは、ソケット(第5層)をプログラムインターフェースとしてそのまま使用することができるのでアプリケーションの互換性がある。また、IPsecは、IPアドレス単位で制御することができるのに対し、SSLは、ソース単位(URL単位、フォルダー単位)で制御することになる。
さらに、IPsecは最大セグメントサイズが小さくなるという問題がある。すなわち、IPsecでは、ESPヘッダ、ESPトレーラを使用するため、ペイロードが小さくなるため、フラグメント(パケットの分割)が発生し、スループットが低下する。また、TCPパケットでは、フラグメントが禁止であるため、エンドエンドで、IPsecの通過する環境を把握し、フラグメントが発生しない最大セグメントサイズを設定する必要がある。これに対し、SSLは、通過する環境を把握する必要がないため、最大セグメントサイズを設定する必要はない。
以上、表1(図9)にもとづいてIPsecとSSLの機能比較について説明したが、上述のようにIPsecとSSLには、互いに相反する長所と短所が混在しているものである。これに対して、本発明者は先に、これらIPsecとSSLのすべての長所を含み、さらに他にも多くのメリットを有する画期的な暗号通信プロトコルであるTCP2を提案した(特許文献1参照。)。
すなわち特許文献1に記載の発明においては、コンピュータ端末への不正侵入を防ぐための「暗号化の機能」をアプリケーション・プログラムそれぞれに実装する必要がなく、したがって、アプリケーション・プログラム自体を再作成する必要もなく、かつ上記暗号化機能に対応していない通信相手とも従来の平文による通信でき、さらにはIPsecが利用できない環境(あるいは利用したくない状況)でも暗号化や認証の恩恵を受けることができる。
図10は、本発明者が先に特許文献1において提案した暗号化通信システムの一実施の形態に用いられるプロトコルスタックを示すものである。
この特許文献1に記載の発明に用いられるプロトコルスタックは、図10に示すように、OSI7階層の物理層(第1層)とデータリンク層(第2層)に相当する階層に、NIC(Network Interface Card)ドライバ11が配列される。このドライバは、既に述べたように、コンピュータなどのハードウエアをネットワークに接続するためのインターフェースカードのドライバであり、その内容はデータ送受信制御ソフトウエアである。例えばEthernetに接続するためのLANボードまたはLANカードがこれに相当する。
第3層のネットワーク層には、一部がトランスポート層(第4層)まで延びたIPエミュレータ(emulator)3が存在している。上記延びた部分には、トランスポートとしての機能は実装していない。セッション層に、ネットワーク層の機能を提供しているだけある。このIPエミュレータ3は、暗号化通信を行うプロトコルである「IPsec on CP」13bと、「IP on CP」13aを用途に応じて切り換えて使う働きをする。ここで、「on CP」とは、クラッキング・プロテクタ(CP)による、「進入」、「攻撃」の監視、破棄、切断ないし通過制限の対象となっていること、又は、設定によりなりうることを示している。
また、ネットワーク層には「ARP on CP(Address Resolution Protocol on Cracking Protector)」が配列されている。この「ARP on CP」は、クラッカー(Cracker)への保護対策を具備したIPアドレスからEthernetの物理アドレスであるMAC(Media Access Control)アドレスを求めるのに使われるプロトコルである。MACは、媒体アクセス制御と呼ばれる、LANなどで利用される伝送制御技術であり、データの送受信単位であるフレームの送受信方法やフレームの形式、誤り訂正などを規定する技術として利用されている。
ここで、IPエミュレータ13は、本発明による各種のセキュリティ機能を、従来のIP周辺のスタックに整合させるためのソフトウエア又はファームウエアである。すなわち、IPのエラーメッセージや制御メッセージを転送するプロトコルであるICMP(Internet Control Message Protocol)14a、同一のデータを複数のホストに効率よく配送するための又は配送を受けるために構成されるホストのグループを制御するためのプロトコルであるIGMP(Internet Group Management Protocol)14b、TCP15、UDP16さらにソケット(Socket)インターフェイス17に整合させるためのソフトウエア、又はファームウエア、ないしはハードウエア(電子回路、電子部品)である。このIPエミュレータ13により、IPsecの暗号化・復号化及び必要な認証情報付加・認証等の前後の適合処理を行うことができる。
このIPエミュレータ13の上層のトランスポート層(第4層)には、TCPエミュレータ15とUDPエミュレータ16が配置されている。TCPエミュレータ15は、暗号化通信を行うプロトコルである「TCPsec on CP」15bと、通常の通信プロトコルである「TCP on CP」15aを用途に応じて切り換えて使う働きをする。同様に、UDPエミュレータ16は、暗号化通信を行うプロトコルである「UDPsec on CP」16bと、通常の通信プロトコルである「UDP on CP」16aを用途に応じて切り換えて使う働きをする。
この特許文献1の最も特徴とするべき点は、このトランスポート層(第4層)に、TCPsec15bと、UDPsec16bの暗号化通信プロトコルを搭載したことである。TCPsec15bとUDPsec16bについては後述する。
このトランスポート層(第4層)の上層のセッション層(第5層)には、TCP及びUDP等のプロトコルとデータのやりとりを行うソケット(socket)インターフェイス17が設けられている。このソケットの意味は、既に述べたようにコンピュータが持つネットワーク内の住所に当たるIPアドレスと、IPアドレスのサブアドレスであるポート番号を組み合わせたネットワークアドレスを意味しており、実際には、一連のヘッダの追加ないし削除をまとめて行う、単一のソフトウエアプログラムモジュール(実行プログラム等)あるいは単一のハードウエアモジュール(電子回路、電子部品等)からなっている。
このソケットインターフェース17は、さらに上位のアプリケーションからの統一的なアクセス方式を提供するものであり、引数の種類や型など従来と同様のインターフェイスを保つようにしている。
TCPエミュレータ15は、トランスポート層において、データの漏洩・改竄の防止の機能、すなわち暗号化、完全性認証及び相手認証等の機能を持つTCPsec15bと、このような暗号化、完全性認証、及び相手認証等の機能を持たない通常のプロトコルTCP15aのいずれかにパケットを振り分ける働きをもっている。また、TCPsec15b及びTCP15aのいずれもクラッキング・プロテクタ(CP)を備えているため、そのいずれを選択した場合でも、クラッカーによる「進入」、「攻撃」に対して防御する機能を実現することができる。TCPエミュレータ15は上位層であるソケットとのインターフェイスの役割も果たしている。
また、既に述べたようにTCPがエラー補償機能を有するのに対して、UDPはエラー補償機能を持たないが、その分転送速度が速く、かつブロードキャスト機能を備えているという特徴がある。UDPエミュレータ16は、TCPエミュレータ15と同様に、データの漏洩・改竄の防止の機能、すなわち暗号化、完全性認証及び相手認証等の機能を持つUDPsec16bと、このような暗号化、完全性認証、及び相手認証等の機能を持たない通常のプロトコルUDP16aのいずれかにパケットを振り分ける働きを持っている。
図10に示すように、ソケット17、TCPエミュレータ15、UDPエミュレータ16、「TCPsec on CP」15b、「UDPsec on CP」16b、「TCP on CP」15a、「UDP on CP」16a、「ICMP on CP」14a、「IGMP on CP」14b、IPエミュレータ13、「IP on CP」13a、及び「ARP on CP」12からなるプロトコルスタックが本発明の暗号化処理を行うためのプロトコルスタックであり、以下、このプロトコルスタックを総称してTCP2と呼ぶことにする。
なお、TCP2には「IPsec on CP」13bは必須のものとして含まれていないが、「IPsec on CP」13bを含めてTCP2とすることもできる。
特許文献1に開示されているTCP2には、上述した暗号化処理を行うためのプロトコルスタックの他に、TCP、UDP、IP、IPsec、ICMP、IGMP、ARPの標準プロトコルスタックも含んでいる。そして、これらの標準プロトコルにCP(クラッキング・プロテクト)を実装し、各プロトコルスタックに対する通信からの攻撃、及び、アプリケーション・プログラムからの攻撃(トロイの木馬、プログラムの改竄、正規ユーザの不正使用など)を防御することができるようにしている。
また、TCP2では、TCPエミュレータ15を実装し、このTCPエミュレータ15は、セッション層にあるソケット(Socket)17、及びネットワーク層にあるIPエミュレータ13から見て、互換性を保つため、外向きには標準TCPと同じに見せることができる。実際は、TCP2の機能として、TCPとTCPsecを切り替えて実行する。TCPsecは、本発明であるトランスポート層での暗号化及び認証機能である。
また、同様に、TCP2では、UDPエミュレータ16を実装しており、UDPエミュレータ16は、セッション層であるソケット(Socket)17、及び、ネットワーク層であるIPエミュレータ13から見て、互換性を保つため、外部からは標準UDPとして見せることができる。実際は、TCP2の機能として、UDP、UDPsecを切り替えて実行する。UDPsecは、特許文献1に記載の発明であるトランスポート層での暗号化及び認証機能である。
次に、TCP2において、特に重要な機能である「データ漏洩」を防ぐ機能であるTCPsec15b及びUDPsec16bについて説明する。
TCPsec15b及びUDPsec16bのための暗号化・復号化の方法(アルゴリズム、ロジック(論理))としては、公知の秘密鍵(共通鍵)暗号アルゴリズムが用いられる。例えば、1960年代にIBM社によって開発された秘密鍵暗号アルゴリズムであるDES(Data Encryption Standard)や、その改良版としての3DESが用いられる。
また、その他の暗号アルゴリズムとしては、1992年にスイス工科大学のJames L.Massey氏とXuejia Lai氏によって発表されたIDEA(International Data Encryption Algorithm)も用いられる。この暗号アルゴリズムは、データを64ビットのブロックに区切って暗号化するもので暗号鍵の長さは128ビットである。秘密鍵暗号を効率よく解読する線形解読法や差分解読法に対しても十分な強度を持つように設計されている。
また、特許文献1に記載の発明に用いられるTCPsec15b及びUDPsec16bの暗号方式として、FEAL(Fast data Encipherment Algorithm)、MISTY、AES(Advanced Encryption Standard)といった暗号方式も利用されるほか、また、独自に作成した秘密の暗号化・復号化アルゴリズムを利用することもできる。ここで、FEALは、日本電信電話株式会社(当時)が開発した暗号方式で、暗号化と復号化に同じ鍵をもちいる秘密鍵型の暗号方式である。このFEALは、DESに比べて高速に暗号化と復号化ができるという利点がある。
次に、同じく特許文献1に記載の発明に利用される暗号方式であるMISTYは、三菱電機株式会社が開発した秘密鍵型の暗号方式であり、IDEAと同様にデータを64ビットのブロックに区切って暗号化する。鍵の長さは128ビットである。暗号化と復号化には同じプログラムが使われる点はDESなどと同じである。この方式も秘密鍵暗号を効率よく解読する線形解読法や差分解読法に対しても十分な強度を持つように設計されている。
また、AESは、米国商務省標準技術局によって選定作業が行われている、米国政府の次世代標準暗号化方式であり、現在の標準的な暗号方式であるDESに代わる次世代の暗号標準として開発が進められたものである。世界に公募して集められて幾つかの暗号方式の中から、2000年10月に、ベルギーの暗号開発者Joan Daemen氏とVincent Rijmen氏が開発したRijndaelという方式が採用された。
このように、特許文献1に記載の発明に適用されるTCPsec15b及びUDPsec16bの暗号方式としては、既に知られているさまざまな秘密鍵の暗号アルゴリズムを採用することができるほか、ユーザが独自に開発した秘密鍵(共通鍵)暗号方式も利用することが可能である。
さらに、いわゆる「なりすまし」及び「データの改竄」などを防ぐための「相手認証」及び「完全性認証」の方法として、公開鍵や事前秘密共有(Pre-shared)を利用したアルゴリズム、例えば、MD5(Message Digest 5)、SHA1(Secure Hash Algorithm 1)などの認証アルゴリズムが用いられる。また、このような公知の認証アルゴリズムに代えて独自の一方向関数を利用したアルゴリズムを採用することもできる。
このMD5は、認証やデジタル署名に用いられるハッシュ関数(一方向要約関数)の一つであり、原文を元に固定長のハッシュ値を発生し、これを通信経路の両端で比較することにより、通信途中で原文が改竄されていないかを検出することができるものである。このハッシュ値は擬似的な乱数のような値をとり、これを基にしては原文を再生できないようになっている。また、同じハッシュ値を生成する別のメッセージを作成することも困難になっている。
SHA1も、認証やデジタル署名などに使われるハッシュ関数の一つであり、2の64乗ビット以下の原文から160ビットのハッシュ値を生成し、通信経路の両端で比較することにより、通信途上の原文の改竄を検出するものである。この認証アルゴリズムは従来のインターネットの暗号化通信の代表的なものであるIPsecにも採用されている。
なお、これらの認証アルゴリズムについては、DH(Diffie-Hellman)公開鍵配送法や、IPsecと同様のIKE(Internet Key Exchange)プロトコル(UDPの500番)などにより安全な鍵交換ができるように設計され、しかも、定期的に暗号化/完全性認証アルゴリズム(論理)自体やそのための鍵の集合/定義域が変更されるように、プロトコルドライバープログラム(TCPsec15b、UDPsec16bなど)によりスケジュールされている。
国際公開WO 2005/015827 A1号公報
R.Atkinson,1995年8月「Security Architecture for the Internet Protocol」RFC1825
以下、図面を参照して本発明を説明するに、図1は本発明を適用した中継装置の一実施形態例の構成を示すブロック図である。
図1において、中継装置100は、それ自体がパーソナルコンピュータと同等の機能を有しているものである。そこでこの中継装置100には、それぞれネットワーク200、300と接続されるNIC(Network Interface Card)ドライバ1a、1bが設けられる。またこれらのNICドライバ1a、1bを含む物理層とデータリンク層に対して、ネットワーク200、300上に存在する任意の2つのノード間で、ルーティング(routing)を行いながら通信するための通信方法を規定するアプリケーション解析(Application Analysis)機能20を含むネットワーク層とトランスポート層が設けられる。
そして、これらのデータリンク層とネットワーク層との間に、本発明者が先に提案した「TCP2」30の機能を設ける。なお、この「TCP2」30には、旧来のTCP/IPを併設することもできる。さらに、この「TCP2」30の機能は、ソフトウエア、若しくはハードウエアとして設けることができるものであり、この「TCP2」30の機能を制御したり、暗号化及び復号化ロジックを定期的に変更したり、必要に応じて暗号化をしないで平文を取り扱う旨の取り決めをしたりするための手段として、外部機能(EXP.)40が設けられている。
このように、本実施形態例において、本発明者が先に提案したTCP2の機能を中継装置に装備したことによって、例えばネットワーク200、300がインターネット等の公衆ネットワークであった場合にも、インターネット上でのデータの「漏洩」及び「改竄」、さらには「なりすまし」、「進入」ないし「攻撃」を防ぐことができる。
図2は、上述のTCP2の機能を装備した中継装置100を用いて構築される通信ネットワークの具体的な実施形態例を示している。
この図2において、クライアント装置(パーソナルコンピュータ)410には、MUA(Mail User Agent)411が設けられており、このMUR411によって電子メールの作成や表示が行われる。また、クライアント装置410には、上述のTCP2の機能を実現する暗号化アプリケーション412が設けられており、このTCP2が搭載された暗号化アプリケーション412によりMUA411で作成された平文の電子メールが暗号化される。なお、図中の◎は暗号化、●は復号化の機能を表している。
上述したMUA411には、電子メールの送受信のためのソフトウエアが搭載されており、このMUA411において、SMTPコマンドが生成されて、送信時に作成された電子メールに添付される。また、受信の際には、MUA411において受信パケットが形成されると共に、受信されたパケットに添付されたPOPコマンドの解析が行われる。そして、このPOPコマンドの解析によって受信が完了し、受信された電子メールを表示するなどの処理がなされる。
これにより、クライアント装置410からはTCP2で暗号化された電子メール文書が中継装置100に送信される(◎印)。そこでこの中継装置100には、上述のTCP2の機能101が装備されており、予めクライアント装置410との間で対応する暗号化及び復号化ロジックの取り決めがIKE(鍵交換)等により行われている。そしてクライアント装置410から送信された情報を受信すると、受信した情報単位としてのパケットのうち、少なくともTCPプロトコルのペイロードを予め取り決めた復号化ロジックに従って復号化する(●印)。
また、中継装置100には、アプリケーション解析(Application Analysis)の機能102が設けられ、このアプリケーション解析機能102によって、復号化したパケットのSMTPコマンドの解析が行われる。そして、この中継装置100は、解析されたSMTPコマンドに従ってパケットの電子メールのタイトル、本文、添付ファイルを再度暗号化して(◎印)インターネット500等を通じて相手装置に送信する。なお、中継装置100における再度の暗号化には上述のTCP2の機能101が用いられる。但し、この場合には、予め電子メール通信を行う相手側の中継装置600との間で対応する暗号化及び復号化ロジックの取り決めをIKE(鍵交換)等により行う必要があることは言うまでもない。
また、中継装置600では、上述と同様のTCP2の機能601で復号化が行われ(●印)、アプリケーション解析の機能602により復号化したパケットのSMTPコマンドの解析が行われる。そして、解析されSMTPコマンドに基づいてメールサーバ装置700のSMTPサーバ701にパケットの電子メールのタイトル、本文、添付ファイルが保存される。また、受信の要求があると、メールサーバ装置700のPOP3サーバ702から再度中継装置600のアプリケーション解析の機能602でPOP3コマンドが生成され、TCP2の機能601で暗号化されて送信が行われる(◎印)。
中継装置600からの暗号化され中継装置100で受信された電子メールは、中継装置100のTCP2機能101で復号化され(●印)、アプリケーション解析の機能102によって、この復号化したパケットのPOP3コマンドの解析が行われる。さらに解析されたPOP3コマンドとパケットの電子メールのタイトル、本文、添付ファイルに対してTCP2の機能101で暗号化が行われる(◎印)。なお上述の説明では、送信時と受信時の中継装置100を同じものとしたが、この中継装置100は別物であってもよいことは当然である。ただしその場合には、別物の中継装置と中継装置600の間で暗号化及び復号化ロジックの取り決めがIKE(鍵交換)等により行われることが不可欠である。
一方、クライアント装置410では、中継装置100からのパケットがTCP2の機能を実現する暗号化アプリケーション412で復号化される(●印)。そして、復号化された平文の電子メールがMUA411に供給されて、受信された電子メールのPOP3コマンド等に基づき電子メール文書の表示等が行われる。なお、ここでは送信時と受信時のクライアント装置410を同じものとして説明したが、別のクライアント装置であってもよいことは言うまでもない。このようにして、トランスポート層のTCPプロトコルを用いて暗号化及び復号化ロジックに基づいた電子メールの通信を行うことができる。
図2に示された通信ネットワークにおいては、クライアント装置410とメールサーバ側の中継装置600との間の全ての区画でトランスポート層のプロトコルを用いて暗号化及び復号化ロジックに基づいた通信が行われる。そしてこのような通信が行われることにより、クライアント装置(パーソナルコンピュータ)と外部との通信における全ての通信区画で、データの「漏洩」及び「改竄」、さらには「なりすまし」、「進入」ないし「攻撃」を防ぐことができる。
図3は、本発明者が先に提案したTCP2のパケット構造を示した図である。この図3のAは、例えばEthernetのフレームを示したものであり、このフレームには先頭の同期用信号に続いて、開始信号と受信側MAC(Media Access Control)アドレス、送信側MACアドレスが設けられ、その後にフレーム長/タイプの領域とデータ領域、CRC(Cyclic Redundancy Check)等の誤り訂正符号が配置されている。そしてこのデータ領域には図3のBに示すように、IPパケットが設けられ、このIPパケットはIPヘッダとペイロードとからなる。
また、IPパケットのペイロードには図3のCに示すTCPパケットが設けられ、このTCPパケットはTCPヘッダとペイロードとからなる。さらにTCPパケットのペイロードには図3のDに示すアプリケーションデータが設けられる。そして、電子メールの場合には、このアプリケーションデータはSMTPコマンドまたはPOP3コマンドと電子メール文書のデータとから構成されることになる。
そしてこの場合に、本発明者が先に提案したTCP2による暗号化では、図3のCに示すTCPパケットのペイロードの全体が暗号化されるために、SMTPコマンドやPOP3コマンドも暗号化され、外部からは当該情報を電子メール文書として認識することができなくなってしまう。これに対して本発明では、アプリケーションデータのSMTPコマンドまたはPOP3コマンドを解析して、これらのコマンドを除いた部分のみ暗号化することで、外部からも電子メール文書として認識できるようにするものである。
図4は、送信時の処理を示したフローチャートである。
図4において、まず、MUA411において送信メールが作成され(ステップS11)、メールの送信処理が開始される(ステップS12)。その後、クライアント装置410内の暗復号アプリケーション412にパケットが送られると、クライアント装置410は中継装置100のTCP2と相互認証を行う(ステップS13)。ステップS13における認証がNGの場合、つまり認証に失敗した場合は、TCP2の設定の見直しが行われ(ステップS14)、再送信が行われる(ステップS15)。
ステップS13において相互認証がOKの場合、つまり認証に成功した場合は、パケットは暗号化されて中継装置100に送られることになる(ステップS16)。続いて、中継装置100にてパケットが復号化され、アプリケーション解析機能101でSMTPコマンドの解析が行われる(ステップS17)。その後、中継装置100と中継装置600のTCP2で相互認証が行われ(ステップS18)、ここで認証がNG(失敗)の場合は、TCP2の設定の見直しが行われる(ステップS19)。そして、再送信が行われる(ステップS20)。
ステップS18で認証がOK(成功)の場合は、送信されるパケットのSMTPコマンド以外が暗号化され、中継装置600に送られる(ステップS21)。そして、中継装置600にてパケットが復号化されて、アプリケーション解析機能602でSMTPコマンドの解析が行われる(ステップS22)。そして、平文に変換されたパケットがメールサーバ700内のSMTPサーバ701に送られ(ステップS23)、送信が完了する(ステップS24)。以上が、電子メールの送信動作の説明である。
次に、電子メールの受信時の処理について説明する。図5は、受信時の処理を示すフローチャートである。
図5に示されるように、メール受信の処理が開始されると(ステップS31)、メールサーバ700内のPOP3サーバ702が受信メールをクライアントに送る(ステップS32)。このとき、この受信メールのパケットは、まず中継装置600に送られる(ステップS33)。そして、中継装置600におけるアプリケーション解析機能602によりPOPコマンドの解析が行われる(ステップS34)。続いて、中継装置600は中継装置100のTCP2と相互認証を行う(ステップS35)。このステップS35で相互認証がNG(失敗)であった場合は、TCP2の設定の見直しが行われ(ステップS36)、受信メールパケットの再送信が行われる(ステップS37)。
一方、ステップS35で認証がOK(成功)の場合は、電子メールのパケットのPOP3コマンド以外が暗号化され、中継装置100に送られる(ステップS38)。続いて中継装置100にて電子メールの受信パケットが復号化され、中継装置100のアプリケーション解析機能102でPOP3コマンドの解析が行われる(ステップS39)。
その後、中継装置100はクライアント装置410のTCP2と相互認証を行い(ステップS40)、このステップS40で認証がNG(失敗)の場合は、TCP2の設定の見直しが行われ(ステップS41)、受信メールの再送信が行われる(ステップS42)。
一方、ステップS40で認証がOK(成功)の場合は、受信メールのパケットが暗号化され、クライアント装置410に送られ、クライアント装置410内の暗復号アプリケーション機能412で復号化される(ステップS43)。そしてクライアント端末410のMUA411に受信メールパケットが送られ(ステップS44)、受信が完了する(ステップS45)。以上が、電子メールの受信処理の説明である。
以上説明した本発明の中継装置によれば、パーソナルコンピュータと外部との通信において、インターネット上でのデータの「漏洩」及び「改竄」、さらには「なりすまし」、「進入」ないし「攻撃」を防ぐことができる。
最後に、本発明のTCP2が、従来のIPsecあるいはSSLと比べて如何に優位であるかという点について、図6及び図7に基づいて説明する。図6は、図9に示したIPsecとSSLの機能比較表にTCP2の機能を追加して示したものである。
この図6から明らかなように、IPsec及びSSLが持っている様々な問題点(これらについては背景技術において示した)を、TCP2を採用することによりことごとく解決していることが分かる。例えば、SSLでは対応が困難であった、クライアント−クライアント間の通信、TCP/IPプロトコルへのDoS攻撃、全てのUDPポートあるいはTCPポートのセキュアな通信、ソケットプログラムを変更しなければならなかったアプリケーションでの制限などに、TCP2は完全に対応している。
また、IPsecでは対応が困難であった、エラーが多発する劣悪な環境下での通信、異なったLAN間での通信、複数キャリア経由の接続、PPPモバイル環境、ADSL環境での通信に対しても、TCP2は完全にサポートしている。さらに、モバイル環境下やADSL環境下でVoIP(Voice over Internet Protocol)を使ったインターネットに対しては、IPsec及びSSLとも表1及び表2に示すように問題があるが、本発明のTCP2によれば、どちらの環境下でも対応可能である。
また、異なったLAN間でVoIPを使ったインターネット電話に対しても、IPsecとSSLでは対応不可能であったが、本発明のTCP2によれば完全に対応することができる。
図7は、TCP2の優位性を説明するための図であるが、セキュリティのないプロトコルスタック(a)に、従来のSSLを適用したケース(b)と、IPsecを適用したケース(c)と、本発明のTCP2(TCPsec/UDPsec)を適用したケース(d)を比較して示している。
図7(b)のSSLは既に述べたように、セッション層(第5層)のソケットに設けられているので、上位のアプリケーションに対する互換性がない。このため、SSL自体、上述のような問題を抱えることになっている。また図7(c)のIPsecは、ネットワーク層(第3層)にあり、IP層での互換性がないため、ネットワークを構成する上で上述したような様々な制約を受けることになる。
これに対して、図7(d)のTCP2(TCPsec/UDPsec)は、トランスポート層(第4層)に導入する暗号化技術であり、このためアプリケーションから見るとソケットをそのまま利用することができ、またネットワークから見るとIPもそのまま利用できるのでネットワークを構成する上での制約は受けない。
以上のように、本発明の中継装置は、本発明者が先に提案したTCP2を用いることによって、既存の暗号化処理システムに比べても、特にデータの漏洩、改ざん、なりすまし、進入そして攻撃に対して極めて高いセキュリティ機能を有するものである。
なお、本発明は、以上説明した実施の形態例に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない範囲において、さらに多くの実施形態を含むものであることは言うまでもない。