[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JPH10190649A - Bidirectional data stream transmitting device - Google Patents

Bidirectional data stream transmitting device

Info

Publication number
JPH10190649A
JPH10190649A JP9265227A JP26522797A JPH10190649A JP H10190649 A JPH10190649 A JP H10190649A JP 9265227 A JP9265227 A JP 9265227A JP 26522797 A JP26522797 A JP 26522797A JP H10190649 A JPH10190649 A JP H10190649A
Authority
JP
Japan
Prior art keywords
encryption
data
function
stream
sth
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9265227A
Other languages
Japanese (ja)
Inventor
R Claus Michael
マイケル・アール・クロウス
Ishijima Yoshihiro
ヨシヒロ・イシジマ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US08/732,176 external-priority patent/US6070198A/en
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH10190649A publication Critical patent/JPH10190649A/en
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

PROBLEM TO BE SOLVED: To execute a cipher function to the data passing through a protocol stack by ciphering or decoding the data by means of a module or driver which includes a cipher algorithm based on the software or by means of a driver which is connected to a cipher mechanism based on the hardware. SOLUTION: A computer system 100 includes a user space 102 and a kernel space 104. The space 102 includes a user application 106 and a socket 108, and the space 104 includes a stream head 110, a ciphering mechanism module 112, a TCP layer 114, an IP layer 116 and a DLPI layer 118. Then the system 100 calls a copy-in function to move the data to the space 104 from the space 102. The module 112 ciphers the data and both layers 114 and 116 execute the due processing based on a protocol.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、コンピュータ・シ
ステム内およびコンピュータ・システム間のデータ通信
に関するもので、特にデータ暗号化を行うように修正さ
れるプロトコル・スタックを使用するコンピュータ・シ
ステム内およびコンピュータ・システム間のデータ通信
に関するものである。
FIELD OF THE INVENTION The present invention relates to data communications within and between computer systems, and more particularly, to computer systems and computers that use a protocol stack that is modified to provide data encryption. -It is related to data communication between systems.

【0002】[0002]

【従来の技術】暗号は、コンピュータ分野においてます
ます重要性を増している。インターネットのような無保
護のネットワーク上に送られる情報量は増加し続けてい
る。加えて、無保護のネットワークが、金融上のトラン
ザクション処理を行うためのみならず、その他種々のタ
イプの秘密を要する個人データを伝送するため使用され
つつある。
BACKGROUND OF THE INVENTION Cryptography is becoming increasingly important in the computer field. The amount of information sent over unprotected networks such as the Internet continues to increase. In addition, unprotected networks are being used not only to perform financial transaction processing, but also to transmit various other types of sensitive personal data.

【0003】無保護のネットワーク上で伝送されるデー
タが意図された受け取り人以外のだれによっても横取り
されないことを保証する上で暗号は役立つ。従来技術に
おいては、暗号機能は、暗号化されたデータを生成する
アプリケーションによって通常制御されてきた。アプリ
ケーションは、暗号アルゴリズムを含むか、さもなけれ
ばコンピュータのオペレーティング・システムによって
提供される関数ライブラリに記憶されるアルゴリズムを
使用する。このアプローチはいくつかの制約を持つ。第
1に、暗号アルゴリズムがアプリケーションに含められ
るとすれば、その更新は簡単ではない。第2に、関数ラ
イブラリ(典型的には安全保護されたソケット・ライブ
ラリ)に記憶された暗号アルゴリズムの使用は、ユーザ
空間およびカーネル空間の両方においてデータが何度も
コピーされ処理されなければならないため、非効率であ
る。最後に、アプリケーションが暗号をサポートしなけ
れば、アプリケーションのデータを暗号化することは非
常に困難である。
[0003] Cryptography helps to ensure that data transmitted over an unprotected network is not intercepted by anyone other than the intended recipient. In the prior art, cryptographic functions have usually been controlled by applications that generate encrypted data. Applications use cryptographic algorithms or algorithms stored in a function library otherwise provided by the computer's operating system. This approach has several limitations. First, if a cryptographic algorithm were to be included in the application, updating it would not be easy. Second, the use of cryptographic algorithms stored in a function library (typically a secure socket library) requires that data be copied and processed many times in both user space and kernel space. Is inefficient. Finally, if the application does not support encryption, it is very difficult to encrypt the application's data.

【0004】[0004]

【発明が解決しようとする課題】このように、アプリケ
ーションに基づく暗号化から、接続(または入出力)に基
づく暗号化へ暗号パラダイムをシフトさせることが、コ
ンピュータ・ネットワーク技術において必要とされてい
る。
Thus, there is a need in computer network technology to shift the cryptographic paradigm from application-based encryption to connection (or input / output) -based encryption.

【0005】[0005]

【課題を解決するための手段】本発明は、プロトコル・
スタックを通過するデータに対して暗号機能を実行する
方法および装置を提供する。本発明の第1の局面におい
て、ソフトウェアに基づく暗号アルゴリズムを含むモジ
ュールまたはドライバを使用する構成によってまたは、
ハードウェアに基づく暗号機構に接続されるドライバを
使用する構成によって、データが暗号化されまた復号さ
れる。
SUMMARY OF THE INVENTION The present invention provides a protocol
A method and apparatus for performing a cryptographic function on data passing through a stack is provided. In the first aspect of the present invention, by using a module or a driver including a software-based cryptographic algorithm, or
Data is encrypted and decrypted by using a driver connected to a hardware-based cryptographic mechanism.

【0006】本発明の第2の局面において、プロトコル
・スタック・マルチプレクサが暗号化モジュールまたは
ドライバへデータを渡す。この形態においても上記ハー
ドウェア型構成およびソフトウェア型構成がサポートさ
れる。いくつかの上記ハードウェア型暗号機構が使用可
能でありかつ上記マルチプレクサが使用可能な暗号機能
を選択するスケジューリング・アルゴリズムを実施する
ように構成される場合、特にこの形態は有益である。
In a second aspect of the invention, a protocol stack multiplexer passes data to a cryptographic module or driver. This embodiment also supports the above-mentioned hardware type configuration and software type configuration. This configuration is particularly beneficial if some of the above hardware-based cryptographic mechanisms are available and the multiplexer is configured to implement a scheduling algorithm that selects available cryptographic functions.

【0007】本発明の第3の局面において、動的関数登
録を使用してストリーム・ヘッドに暗号化関数が登録さ
れる。暗号化関数は、ソフトウェア型暗号化を実施する
ことができるし、あるいはまたハードウェア型暗号機構
にインターフェースするドライバとしての役目を果たす
こともできる。この形態の1つの構成において、データ
がユーザ空間からカーネル空間へコピーされる際にその
データは暗号化され、カーネル空間からユーザ空間へコ
ピーされる際データは復号される。
[0007] In a third aspect of the invention, an encryption function is registered at the stream head using dynamic function registration. The encryption function may implement software-based encryption, or may also act as a driver to interface to a hardware-based encryption mechanism. In one configuration of this embodiment, when data is copied from the user space to the kernel space, the data is encrypted, and when the data is copied from the kernel space to the user space, the data is decrypted.

【0008】本発明の第4の局面において、暗号プロセ
スを制御する動的取り替え可能関数を含むドライバまた
はモジュールによって、データは暗号化されまた復号さ
れる。この形態においても上記ハードウェア型構成およ
びソフトウェア型構成はサポートされる。
[0008] In a fourth aspect of the invention, data is encrypted and decrypted by a driver or module that includes a dynamically replaceable function that controls the cryptographic process. Also in this embodiment, the above-mentioned hardware type configuration and software type configuration are supported.

【0009】このように、発明の課題を解決するため本
発明が提供する手段には、コンピュータ・システム内に
配置され、デバイスとユーザ・プロセスの間で双方向デ
ータストリームを伝送する装置が含まれる。該装置は、
上記デバイスに接続され、上記双方向データストリーム
を上記デバイスへ伝送するデバイス・ドライバ、上記デ
バイスと上記ユーザ・プロセスの間に配置され上記ユー
ザ・プロセスと上記デバイス・ドライバの間で上記双方
向データストリームを伝送するストリーム・ヘッド、お
よび上記双方向性データストリームの形態で伝送される
データに関して暗号化関数を実行する暗号化機構を備え
る。
Thus, the means provided by the present invention to solve the problems of the present invention include an apparatus disposed in a computer system for transmitting a bidirectional data stream between a device and a user process. . The device comprises:
A device driver connected to the device for transmitting the bidirectional data stream to the device; a bidirectional data stream disposed between the device and the user process between the user process and the device driver; And a cryptographic mechanism for performing an encryption function on the data transmitted in the form of the bidirectional data stream.

【0010】[0010]

【発明の実施の形態】図1は、従来技術のコンピュータ
・システム10を示す図である。コンピュータ・システ
ム10は、ユーザ空間11とカーネル空間20を含む。
ユーザ空間11は、ユーザ・アプリケーション12、ソ
ケット14および安全保護ソケット16を含む。カーネ
ル空間20は、暗号化機構18、ストリーム・ヘッド2
2、伝送制御プロトコル(TCP)レーヤ24、インター
ネット・プロトコル(IP)レーヤ26およびデータ・リ
ンク・プロバイダ・インターフェース(DLPI)レーヤ
28を含む。暗号化機構18は、ハードウェアに基づく
暗号アルゴリズム(以下単にハードウェア型暗号アルゴ
リズムと呼ぶ)あるいはソフトウェアに基づく暗号アル
ゴリズム(以下単にフトウェア型暗号アルゴリズムと呼
ぶ)のいずれを使用しても実施することができる。スト
リーム・ヘッド22、TCPレーヤ24、IPレーヤ2
6およびDLPIレーヤ28が、STREAMS型プロ
トコル・スタックを実現する。STREAMSフレーム
ワークの詳細は、S.Rago著"UNlX System V Network Pro
gramming"(Addison Wesley professional computing se
ries(1993))の95ページから始まる第3章および42
5ページから始まる第9章ないし第11章に記載されて
いる。
FIG. 1 is a diagram showing a prior art computer system 10. As shown in FIG. The computer system 10 includes a user space 11 and a kernel space 20.
The user space 11 includes a user application 12, a socket 14, and a secure socket 16. The kernel space 20 includes the encryption mechanism 18, the stream head 2
2, including a Transmission Control Protocol (TCP) layer 24, an Internet Protocol (IP) layer 26, and a Data Link Provider Interface (DLPI) layer 28. The encryption mechanism 18 can be implemented using either a hardware-based encryption algorithm (hereinafter simply referred to as a hardware-based encryption algorithm) or a software-based encryption algorithm (hereinafter simply referred to as a software-based encryption algorithm). it can. Stream head 22, TCP layer 24, IP layer 2
6 and DLPI layer 28 implement a STREAMS-type protocol stack. For details on the STREAMS framework, see "UNlX System V Network Pro" by S.Rago.
gramming "(Addison Wesley professional computing se
ries (1993)), Chapters 3 and 42 starting at page 95
It is described in Chapters 9 to 11 beginning on page 5.

【0011】本明細書において、「暗号」または「暗号
化」という用語は「暗号化」のみならず「復号」をも含
む。従って、「暗号キー」は復号に必要なキーをも含
む。同様に、ハードウェア型暗号化機構は、データを復
号する機能をも持つ。当然ではあるが、文脈的に見て
「暗号化」が「復号」を含まないこともあり、そのよう
な文脈は当業者にとって明白である。
In this specification, the term "encryption" or "encryption" includes not only "encryption" but also "decryption". Therefore, the “encryption key” also includes a key required for decryption. Similarly, the hardware encryption mechanism has a function of decrypting data. Of course, in context, "encryption" may not include "decryption", and such a context will be apparent to those skilled in the art.

【0012】図1に示されるように、ユーザ・アプリケ
ーション12はネットワークを経由して暗号化されたデ
ータを送受信するように構成されている。暗号化された
データを送るためには、安全保護ソケット16を経由し
て暗号化機構18に未暗号化データを送ることによって
アプリケーション12は先ずデータを暗号化しなければ
ならない。典型的には、この動作は、ユーザ・アプリケ
ーション12がsend()コマンドのようなシステム・コー
ルを呼び出すことによって達成される。安全保護ソケッ
ト16に関連づけられた安全保護ソケット・ライブラリ
が、暗号化されるべきデータを暗号化機構18に提供す
る(実施形態依存型)書込みコマンドにそのsend()コマン
ドを対応づける。データが暗号化された後、ユーザ・ア
プリケーション12は、暗号化されたデータを取り戻す
recv()コマンドのようなシステム・コールを呼び出す。
recv()コマンドは、暗号化機構18から暗号化されたデ
ータを取り戻す(実施形態依存型)読取りコマンドに対応
づけされ、次に、暗号化されたデータがユーザ・アプリ
ケーション12に渡される。その後、ユーザ・アプリケ
ーション12は、(別のsend()コマンドのような)システ
ム・コールを呼び出すことによってソケット14を経由
してストリーム・ヘッド22へ暗号化されたデータを送
ることによって、暗号化されたデータをネットワーク上
に送る。暗号化されたデータは、ストリーム・ヘッド2
2から、TCPレーヤ24、IPレーヤ26およびDL
PIレーヤ28へと流れる。DLPIレーヤ28は、メ
モリと物理的ネットワーク・ハードウェアの間のDMA
動作を始動させて、物理的ネットワーク上へ暗号化され
たデータを送り出す。
As shown in FIG. 1, the user application 12 is configured to transmit and receive encrypted data via a network. To send encrypted data, application 12 must first encrypt the data by sending the unencrypted data to encryption mechanism 18 via secure socket 16. Typically, this is accomplished by the user application 12 calling a system call, such as a send () command. A secure socket library associated with the secure socket 16 maps the send () command to a write command that provides the data to be encrypted to the encryption mechanism 18 (embodiment dependent). After the data has been encrypted, the user application 12 retrieves the encrypted data
Invoke system calls such as the recv () command.
The recv () command is associated with a read command that retrieves the encrypted data from the encryption mechanism 18 (an embodiment-dependent type), and then the encrypted data is passed to the user application 12. The user application 12 is then encrypted by sending the encrypted data via the socket 14 to the stream head 22 by invoking a system call (such as another send () command). Data sent over the network. The encrypted data is sent to stream head 2
2, TCP layer 24, IP layer 26 and DL
It flows to the PI layer 28. DLPI layer 28 provides a DMA between memory and physical network hardware.
Initiate the action and send the encrypted data over the physical network.

【0013】send()またはrecv()コマンド、あるいは実
施形態依存型の読取りまたは書き込みコマンドが呼び出
されるたび毎にデータはユーザ空間11とカーネル空間
20の間を移動されなければならない。これらのデータ
移動は、Unixのcopyin()またはcopyout()関数のいずれ
かを呼び出すコマンドによって達成される。copyin()関
数はデータをユーザ空間からカーネル空間へ移動し、co
pyout()関数はデータをカーネル空間からユーザ空間へ
移動させる。
Each time a send () or recv () command or an embodiment-dependent read or write command is invoked, data must be moved between user space 11 and kernel space 20. These data movements are accomplished by commands that call either the Unix copyin () or copyout () function. The copyin () function moves data from user space to kernel space,
The pyout () function moves data from kernel space to user space.

【0014】暗号化されたデータを読むためにはプロセ
スは逆にされる。すなわち、DLPIレーヤ28が、物
理的ネットワーク・ハードウェアとメモリの間のDMA
動作を始動し、暗号化されたデータがIPレーヤ26、
TCPレーヤ24およびストリーム・ヘッド22に流れ
る。ユーザ・アプリケーション12は、recv()コマンド
のようなシステム・コールを呼び出すことによってソケ
ット14経由でストリーム・ヘッド22から暗号化され
たデータを受け取る。次に、ユーザ・アプリケーション
12は、send()コマンドのような別のシステム・コール
を呼び出すことによって安全保護ソケット16を経由し
て暗号化機構18へ暗号化されたデータを送ることによ
って暗号化されたデータを復号し、もう1つ別のrecv()
コマンドのような最終的システム・コールを呼び出すこ
とによって安全保護ソケット16を経由して暗号化機構
18から復号されたデータを受け取る。
[0014] To read the encrypted data, the process is reversed. That is, the DLPI layer 28 performs DMA between physical network hardware and memory.
The operation is started, and the encrypted data is transferred to the IP layer 26,
It flows to TCP layer 24 and stream head 22. User application 12 receives encrypted data from stream head 22 via socket 14 by invoking a system call such as a recv () command. Next, the user application 12 is encrypted by sending the encrypted data to the encryption mechanism 18 via the secure socket 16 by invoking another system call, such as a send () command. Decrypted data and another recv ()
The decrypted data is received from the encryption mechanism 18 via the secure socket 16 by invoking a final system call, such as a command.

【0015】図1で示される暗号プロセスは機能的では
あるが、いくつかの欠点がある。第1に、処理性能は最
適でない。データは、安全保護ソケット16および暗号
化機構18との間で出し入れされ、更に、ソケット1
4、ストリーム・ヘッド22および諸レーヤ24,2
6,28の間を転送される。このようなデータの移動
は、典型的には、ユーザ空間とカーネル空間の間でデー
タを繰り返しコピーすることを必要とする。それに加え
て、システム資源は、各アプリケーション・インスタン
スのために複数のソケット、バッファおよび他の資源を
保持するため占有されなければならず、これらのタスク
すべてが管理されるのにともなってCPU使用度が増加
する。
While the cryptographic process shown in FIG. 1 is functional, it has several disadvantages. First, processing performance is not optimal. Data is passed in and out of the secure socket 16 and the encryption mechanism 18 and the socket 1
4. Stream head 22 and layers 24, 2
Transfer between 6,28. Such data movement typically requires repeated copying of data between user space and kernel space. In addition, system resources must be occupied to hold multiple sockets, buffers and other resources for each application instance, and the CPU usage as all these tasks are managed. Increase.

【0016】もう一つの欠点は、暗号化プロセスがユー
ザ空間11から制御されるということである。悪意のあ
る攻撃に対して、ユーザ空間におけるデータおよび活動
はカーネル空間における場合より弱く、従って、ユーザ
空間から制御される暗号化プロセスは、カーネル空間か
ら制御される暗号化プロセスに比較して、そのような攻
撃を受けやすい。この脆弱さは、(University of Calif
ornia-Berkelyの)EricBrewer, Paul Gauthier, Ian Gol
dbergおよびDavid Wagnerの諸氏によって実証されてい
る。Brewer氏らは、安全保護セッション・レーヤ・プロ
トコルの重視および暗号化キーの十分な無作為性が、末
端間のセキュリティのより基本的な傷を隠蔽したと主張
する。具体的には、プロトコルが安全でなければならな
いだけではなく、ユーザ・コードもまた各エンド・ポイ
ントで安全でなければならない。Brewer氏らは、彼らの
論点を証明するため、ネットワーク上を伝送されている
間にプログラムのバイナリ・コードを変えることができ
る方法を示した。彼らは、その方法を使用してネットス
ケープのナビゲータ・ブラウザの合法的コピーを彼らだ
けが知っている固定的キーを使用したバージョンに変更
した。これは目に見えない形のセキュリティ侵害であ
る。従って、たとえユーザが特定のアプリケーションの
供給業者を信頼することができるとしても、無保護のネ
ットワーク上で伝送されるとすれば、そのコード自体は
信頼できない。
Another disadvantage is that the encryption process is controlled from user space 11. Data and activity in user space are less vulnerable to malicious attacks than in kernel space, and therefore, encryption processes controlled from user space are more likely than encryption processes controlled from kernel space. Vulnerable to such attacks. This vulnerability is based on the University of Calif
Eric Brewer, Paul Gauthier, Ian Gol (ornia-Berkely)
Demonstrated by dberg and David Wagner. Brewer et al. Argue that the emphasis on secure session layer protocols and the sufficient randomness of the encryption keys masked the more fundamental flaw in end-to-end security. Specifically, not only must the protocol be secure, but the user code must also be secure at each end point. Brewer and his colleagues have shown how they can change the binary code of a program while it is being transmitted over a network to prove their point. They used that method to change a legal copy of Netscape's navigator browser to a version using a fixed key that only they knew. This is an invisible form of security breach. Thus, even if a user can trust the supplier of a particular application, the code itself is unreliable if transmitted over an unprotected network.

【0017】最後に、図1で示された暗号プロセスに関
連するもう1つの欠点は、ユーザ・アプリケーション1
2が暗号化を始動しなければならないことである。アプ
リケーション12が、暗号をサポートするように設計さ
れなかった過去の遺産のアプリケーションであるとすれ
ば、アプリケーション12がネットワーク上に送り出す
データを暗号化すことはできない。また、たとえユーザ
・アプリケーション12が暗号をサポートするように設
計されていたとしても、例えば一層大きい暗号キーまた
は異なる形式を使用する可能性のある新しい暗号アルゴ
リズムをサポートできるほどそれは柔軟でないかもしれ
ない。
Finally, another disadvantage associated with the cryptographic process shown in FIG.
2 is that encryption must be triggered. If the application 12 is a legacy application that was not designed to support encryption, the data that the application 12 sends over the network cannot be encrypted. Also, even if the user application 12 is designed to support encryption, it may not be flexible enough to support, for example, larger encryption keys or new encryption algorithms that may use different formats.

【0018】本発明は、暗号機能をプロトコル・スタッ
クに移動することによって図1で示された暗号プロセス
に関連した諸問題を解決する。プロトコル・スタックに
暗号機能を含むことによってデータのコピーおよび移動
は最小にされる。加えて、暗号化および復号がカーネル
空間で実行されるので、暗号プロセスは、悪意がある攻
撃または「嗅ぎまわり」に対してさほど弱くない。本発
明を使用することによって、データはアプリケーション
ではなくカーネルによって与えられるキーを使用して暗
号化されることができる。これは、暗号化されたデータ
伝送を行う際のユーザ・アプリケーションの役割を減少
させ、それによってセキュリティが増加する結果とな
る。更に、ユーザ・アプリケーションは暗号化をサポー
トする必要はない。本発明は、プロトコル・スタックを
通過するいかなる情報をも暗号化し復号するように構成
することができる。
The present invention solves the problems associated with the cryptographic process shown in FIG. 1 by moving cryptographic functions to the protocol stack. Copying and moving data is minimized by including cryptographic functions in the protocol stack. In addition, since encryption and decryption are performed in kernel space, the cryptographic process is not very vulnerable to malicious attacks or "sniffing". By using the present invention, data can be encrypted using keys provided by the kernel rather than the application. This reduces the role of the user application in performing the encrypted data transmission, which results in increased security. Further, the user application does not need to support encryption. The present invention can be configured to encrypt and decrypt any information passing through the protocol stack.

【0019】本発明は、ハードウェア型暗号アルゴリズ
ムまたはソフトウェア型暗号アルゴリズムのいずれを使
用する暗号化をもサポートする。暗号化技術の現在の状
態においては、いくつかの理由のため、ハードウェア型
暗号アルゴリズムがソフトウェア型暗号アルゴリズムよ
り好ましい。第1に、組み込まれたハードウェアの処理
速度は速い。現在市販されている暗号化ハードウェア
は、毎秒1メガバイト以上のデータ率でデータを暗号化
する能力を持つ。第2に、暗号化機構が専用ハードウェ
アに装填されているので、CPUは他の処理を並列的に
実行するために利用できる。第3に、多くのハードウェ
ア型暗号化装置が標準的SCSI装置として動作するの
で、ハードウェアは、非保護のオペレーティング・シス
テムにおいてまた多数のプラットホームにおいて使用で
きる。第4に、物理的ハードウェアは変更や妨害が比較
的難しい。物理的装置は水銀破壊装置を備えることもで
きる。最後に、暗号技術の更新は比較的簡単である。例
えば、暗号化技術や暗号化キーはPCMCIAカードで
提供することができ、そのカードは暗号化技術を更新す
る時簡単に交換することができる。
The present invention supports encryption using either hardware or software encryption algorithms. In the current state of encryption technology, hardware-based cryptographic algorithms are preferred over software-based cryptographic algorithms for several reasons. First, the processing speed of the embedded hardware is high. Currently available encryption hardware has the ability to encrypt data at data rates of 1 megabyte per second or more. Second, since the encryption mechanism is mounted on dedicated hardware, the CPU can be used to execute other processing in parallel. Third, because many hardware-based encryption devices operate as standard SCSI devices, the hardware can be used in unsecured operating systems and on many platforms. Fourth, physical hardware is relatively difficult to modify or interfere. The physical device can also include a mercury destruction device. Finally, updating cryptography is relatively simple. For example, the encryption technology and encryption key can be provided on a PCMCIA card, which can be easily exchanged when updating the encryption technology.

【0020】当然のことながら、ハードウェア暗号化機
構にも種々の欠点があり、それら欠点はソフトウェア暗
号化によって今や解決される傾向にある。第1に、暗号
化プロトコルの数が増大していて、現在のハードウェア
暗号化実施形態は、最高4つの暗号化プロトコルをサポ
ートするだけである。ソフトウェアはいかなる数のプロ
トコルをもサポートするることができ、使用現場で導入
または更新できる。第2に、ホストCPU能力は組み込
まれたプロセッサ能力より一層迅速になる傾向があり、
並列処理およびスケーリング技術は向上し続けている。
最終的にソフトウェア型暗号化技術が、ハードウェア型
暗号化技術に優る性能を示すかもしれない。第3に、ハ
ードウェアは、データが入出力経路を通して移動される
かDMA動作によってアクセスされることを必要とする
が、一方、ソフトウェアは、DMA動作またはハードウ
ェア割り込み処理を必要とすることなく同じメモリ位置
内でデータを暗号化することができる。加えて、メモリ
・バンド幅は典型的には多くの入出力バンド幅より数倍
も大きい。第4に、ソフトウェアは、複数の文脈切り替
えを必要とせず、従ってCPUキャッシュを汚染しな
い。最後に、ソフトウェアは、なにかセキュリティ問題
が発見されれば、迅速にパッチを当てることができる。
Of course, hardware encryption mechanisms also have various shortcomings, which are now likely to be resolved by software encryption. First, with the number of encryption protocols growing, current hardware encryption embodiments only support up to four encryption protocols. The software can support any number of protocols and can be installed or updated on site. Second, host CPU power tends to be faster than embedded processor power,
Parallel processing and scaling techniques continue to improve.
Eventually, software-based encryption techniques may outperform hardware-based encryption techniques. Third, hardware requires that data be moved through the I / O path or accessed by DMA operations, while software requires the same without requiring DMA operations or hardware interrupt handling. Data can be encrypted within the memory location. In addition, memory bandwidth is typically several times greater than many input / output bandwidths. Fourth, the software does not require multiple context switches and therefore does not pollute the CPU cache. Finally, software can be quickly patched if any security issues are discovered.

【0021】本発明は、ハードウェアおよびソフトウェ
ア両者の暗号化をサポートすることによって最大限の柔
軟性を提供する。本発明に従うSTREAMS型プロト
コル・スタックが、スタックを通過するすべてのデータ
のハードウェア型暗号化および復号を実行するように構
成されると仮定する。ハードウェア型暗号化においてセ
キュリティ問題が発見されると、ソフトウェア型暗号化
アルゴリズムは、アプリケーションまたはユーザへ影響
を及ぼすことなくハードウェア型アルゴリズムと交換す
ることができる。セキュリティ問題が解決され、ハード
ウェアが利用できるようになると、ハードウェア暗号化
は暫定的ソフトウェア暗号化ルーチンと簡単に取り替え
ることができる。
The present invention provides maximum flexibility by supporting both hardware and software encryption. Assume that a STREAMS-type protocol stack according to the present invention is configured to perform hardware-based encryption and decryption of all data passing through the stack. When security issues are discovered in hardware-based encryption, software-based encryption algorithms can be exchanged for hardware-based algorithms without affecting applications or users. As security issues are resolved and hardware becomes available, hardware encryption can be easily replaced with a provisional software encryption routine.

【0022】到来データを暗号化し送出データを復号す
ることもまた本発明の範囲内にあり、そのような結果を
達成するため本明細書に記述される技術を適応させる方
法を当業者は容易に認めることであろう。しかしなが
ら、このような形態でデータを暗号化することは非常に
少数のアプリケーションに限定され、送出データを暗号
化し到来データを復号する方がより典型的であることが
予想される。従って、本発明の実施形態は、送出データ
を暗号化し到来データを復号するSTREAMS型TC
P/IPスタックを参照して記述される。本明細書で記
述される技術はいかなるタイプのプロトコル・スタック
にも適用できる点に注意する必要がある。
Encrypting incoming data and decrypting outgoing data is also within the scope of the present invention, and those skilled in the art will readily know how to adapt the techniques described herein to achieve such a result. Would admit. However, encrypting data in this manner is limited to a very small number of applications, and it is expected that encrypting outgoing data and decrypting incoming data will be more typical. Therefore, an embodiment of the present invention provides a STREAMS TC that encrypts outgoing data and decrypts incoming data.
It is described with reference to the P / IP stack. It should be noted that the techniques described herein can be applied to any type of protocol stack.

【0023】図2は、本発明の実施形態を示すコンピュ
ータ・システム100の図である。コンピュータ・シス
テム100は、ユーザ空間102およびカーネル空間1
04を含む。ユーザ空間102は、ユーザ・アプリケー
ション106およびソケット108を含む。カーネル空
間104は、ストリーム・ヘッド110、暗号化機構モ
ジュール112、TCPレーヤ114、IPレーヤ11
6およびDLPIレーヤ118を含む。
FIG. 2 is a diagram of a computer system 100 illustrating an embodiment of the present invention. The computer system 100 includes a user space 102 and a kernel space 1
04. User space 102 includes user application 106 and socket 108. The kernel space 104 includes a stream head 110, an encryption module 112, a TCP layer 114, and an IP layer 11.
6 and DLPI layer 118.

【0024】図2において、ユーザ・アプリケーション
106がTCP/IP接続を経由してデータを書き出す
ことを望む時、アプリケーション106は、send()コマ
ンドのようなシステム・コールを呼び出すことによって
データをソケット108に送り出す。システム・コール
は、データをユーザ空間102からカーネル空間104
に移動させるcopyin()関数を呼び出す。暗号化機構モジ
ュール112がデータを暗号化し、TCPレーヤ114
およびIPレーヤ116がTCP/IPプロトコルに従
って処理を実行し、DLPIレーヤ118が物理的ネッ
トワーク・ハードウェアにデータを提供するDMA動作
を始動する。図2に示される実施形態は、標準的STR
EAMS型モジュールを使用して、暗号化技術をSTR
EAMS型プロトコル・スタックに追加する。図2にお
いて、暗号化機構モジュール112は、図に示される位
置以外に、TCPレーヤ114とIPレーヤ116の間
またはIPレーヤ116とDLPIレーヤ118の間の
ようなその他の種々の位置に置くことも可能である。
In FIG. 2, when the user application 106 wants to write data over a TCP / IP connection, the application 106 sends the data to the socket 108 by invoking a system call such as a send () command. To send out. System calls transfer data from user space 102 to kernel space 104.
Call the copyin () function to move to. The encryption mechanism module 112 encrypts the data and sends the data to the TCP layer 114.
And the IP layer 116 performs processing according to the TCP / IP protocol, and the DLPI layer 118 initiates a DMA operation to provide data to the physical network hardware. The embodiment shown in FIG.
STR encryption technology using EAMS type module
Add to EAMS type protocol stack. In FIG. 2, the cryptographic module 112 may be located in various other locations besides those shown, such as between the TCP layer 114 and the IP layer 116 or between the IP layer 116 and the DLPI layer 118. It is possible.

【0025】暗号化機構モジュール112は、当業界に
おいてよく知られているソフトウェア型アルゴリズムま
たはハードウェア型アルゴリズムを使用してデータを暗
号化する。加えて、ユーザ・アプリケーション106
は、暗号化機構モジュール112をスタックに入れたり
暗号化機構モジュール112をスタックから引き出すこ
とによって暗号化機能の付加および削除の選択をおこな
うことができる。これは、暗号化機構モジュール112
が図2に示されるようにストリーム・ヘッド110の次
の最初のモジュールである場合特にうまく動作する。
The encryption module 112 encrypts data using software-based or hardware-based algorithms that are well known in the art. In addition, the user application 106
Can add or delete an encryption function by putting the encryption mechanism module 112 on the stack or pulling out the encryption mechanism module 112 from the stack. This is because the encryption module 112
Works especially well if is the first module next to the stream head 110 as shown in FIG.

【0026】加えて、コンピュータ100は、STRE
AMSのautopush(自動スタック入れ)機能を使用してい
かなるTCP/IPスタックにも暗号機能を追加できる
ように構成することができる。autopush機構は、あらか
じめ定義されたタイプのスタックがオープンされる時は
いつでもモジュールがオペレーティング・システムによ
って自動的にスタックに入れられることを可能にするも
のである。例えば、適切に構成されたautopush機構を備
えていれば、ユーザ・アプリケーションがTCP/IP
スタックをオープンする時は必ず暗号化モジュールもT
CPレーヤ114の後の位置においてスタックに入れら
れる。
In addition, the computer 100 executes the STRE
AMS can be configured to add cryptographic functionality to any TCP / IP stack using the autopush function. The autopush mechanism allows a module to be automatically pushed onto the stack by the operating system whenever a predefined type of stack is opened. For example, if a properly configured autopush mechanism is provided, the user application
When opening the stack, the encryption module must be
It is placed on the stack at a position after the CP layer 114.

【0027】また、暗号化機構モジュール112をDL
PIレーヤ118のすぐ上の位置に置き、単一DLPI
レーヤ・インスタンスを通過するすべてのデータを暗号
化するように構成することもできる。しかしながら、そ
のような構成は、DLPIレーヤで暗号化するスタック
とそうではないスタックとを区別するなんらかのメカニ
ズムを必要とする。1つのメカニズムとして、単一のハ
ードウェア・デバイス・インスタンスに関して種々のデ
バイス・ファイル名を使用し、暗号化をサポートするプ
ロトコル・スタックにある1つにファイル名を関連付
け、暗号化をサポートしないプロトコル・スタックに別
のファイル名を関連付ける。暗号化に関連付けられたフ
ァイル名を参照するストリームがオープンされる時は必
ず自動的に暗号化機構モジュール112をDLPIレー
ヤ118にプッシュし暗号化機構モジュール112をI
Pレーヤに116にリンクするようにオペレーティング
・システムを構成することができるので、上記のメカニ
ズムはautopush機構を用いてうまく動作する。加えて、
暗号化を行わないスタックに関連付けられたファイル名
を参照するストリームがオープンされる時は暗号化機構
モジュール112をDLPIレーヤ118にプッシュし
ないようにutopush機構を構成することもできる。
Also, the encryption mechanism module 112
Place it just above PI layer 118 and use a single DLPI
All data passing through the layer instance can also be configured to be encrypted. However, such an arrangement requires some mechanism to distinguish between stacks that encrypt with the DLPI layer and those that do not. One mechanism is to use different device filenames for a single hardware device instance, associate the filename with one in a protocol stack that supports encryption, and use a protocol protocol that does not support encryption. Associate another file name with the stack. Whenever a stream referring to a file name associated with encryption is opened, the encryption mechanism module 112 is automatically pushed to the DLPI layer 118 and the encryption mechanism module 112
The above mechanism works well with the autopush mechanism, as the operating system can be configured to link 116 to the P-layer. in addition,
The utopush mechanism can be configured so that the encryption mechanism module 112 is not pushed to the DLPI layer 118 when a stream that refers to the file name associated with the stack that does not perform encryption is opened.

【0028】また、DLPIレーヤにおいて復号するス
タックと復号しないスタックを区別する別のメカニズム
を使用することによって、ifconfig関数を用いてネット
ワーク接続を構成する時暗号化が必要であるか否かを指
定することができる。Unixオペレーティング・システム
においては、ifconfig関数呼び出しは、ネットワーク・
インターフェースにアドレスを割り当てるためあるいは
ネットワーク・インターフェース・パラメータを構成す
るため使用することができる。ifconfig関数呼び出し
は、コンピュータ・システムに現在あるインターフェー
スの各々のネットワーク・アドレスを定義するため起動
時に使用されなければならず、また、その他の時点で特
定のアドレスやその他の動作パラメータを再定義するた
めに使用することができる。従って、本発明は、他のネ
ットワーク・インターフェース・パラメータとともに暗
号化パラメータを定義する能力を持つ修正ificonfig関
数呼び出しを含む。
Also, by using another mechanism for distinguishing between decrypting and non-decoding stacks in the DLPI layer, the ifconfig function is used to specify whether encryption is required when configuring a network connection. be able to. On Unix operating systems, the ifconfig function call is
It can be used to assign addresses to interfaces or to configure network interface parameters. The ifconfig function call must be used at startup to define the network address of each of the interfaces currently on the computer system, and at other times to redefine specific addresses and other operating parameters. Can be used for Thus, the present invention includes a modified ificonfig function call that has the ability to define encryption parameters along with other network interface parameters.

【0029】図3は、本発明の別の1つの実施形態を示
すコンピュータ・システム120の図である。コンピュ
ータ・システム120はユーザ空間122およびカーネ
ル空間124を含む。ユーザ空間122はユーザ・アプ
リケーション126およびソケット128を含む。カー
ネル空間124は、ストリーム・ヘッド130、暗号化
マルチプレクサ132、TCPレーヤ134、IPレー
ヤ136、DLPIレーヤ138および暗号化機構ドラ
イバ140を含む。ユーザ・アプリケーション126、
ソケット128、ストリーム・ヘッド130、TCPレ
ーヤ134、IPレーヤ136およびDLPIレーヤ1
38は、図2において対応する名前を持つコンポーネン
トと同様に動作する。しかしながら、図2のように暗号
化モジュールをその他のスタック・モジュールと同列に
配置するのではなく、暗号化マルチプレクサ132が暗
号化機構ドライバ140との間でデータを転送するよう
に構成する。
FIG. 3 is a diagram of a computer system 120 illustrating another embodiment of the present invention. Computer system 120 includes a user space 122 and a kernel space 124. User space 122 includes user application 126 and socket 128. The kernel space 124 includes a stream head 130, an encryption multiplexer 132, a TCP layer 134, an IP layer 136, a DLPI layer 138, and an encryption mechanism driver 140. User application 126,
Socket 128, stream head 130, TCP layer 134, IP layer 136 and DLPI layer 1
38 operates similarly to the component with the corresponding name in FIG. However, instead of placing the encryption module in the same row as the other stack modules as in FIG. 2, the encryption multiplexer 132 is configured to transfer data to and from the encryption mechanism driver 140.

【0030】STREAMS型マルチプレクサ・モジュ
ールは、データを宛先に送り分けるために使用される標
準的STREAMSコンポーネントである。例えば、マ
ルチプレクサ・モジュールは、複数のユーザとおそらく
複数の伝送媒体の間で複数メッセージを多重送信するた
めネットワーキング・プロトコルによって使用される。
同様に、暗号マルチプレクサ132によって、単一のハ
ードウェア型暗号化機構が複数のSTREAMSスタッ
ク・インスタンスによって同時に共用されることが可能
とされる。代替的には、暗号マルチプレクサ132は、
単純なスケジューリング・アルゴリズムを使用すること
によって、複数のハードウェア型暗号化機構から、1つ
の使用可能ハードウェア型暗号化機構を選択するように
構成することもできる。
A STREAMS-type multiplexer module is a standard STREAMS component used to route data to a destination. For example, multiplexer modules are used by networking protocols to multiplex multiple messages between multiple users and possibly multiple transmission media.
Similarly, cryptographic multiplexer 132 allows a single hardware-based cryptographic mechanism to be shared by multiple STREAMS stack instances simultaneously. Alternatively, cryptographic multiplexer 132
By using a simple scheduling algorithm, it can be configured to select one available hardware-based encryption mechanism from a plurality of hardware-based encryption mechanisms.

【0031】従来技術において、安全保護ソケットライ
ブラリ(すなわちSecured Socket Library略してSSL)
仕様v.3.0は、ユーザ・アプリケーションとの間でメッ
セージを受け渡しする暗号パッケージが、使用される暗
号キーおよび暗号化される接続などを含め暗号復号処理
形態を構成できるようにするプロトコルを定義してい
る。最大限の互換性を提供しプログラミング・コストを
最小にするため、本発明はこのプロトコルを活用して、
暗号キーを保存し暗号化および復号を指示する図3の暗
号化マルチプレクサ132を使用する。図2で示された
実施形態では、暗号化機構モジュール112が暗号キー
を保存し暗号化および復号を指示した。
In the prior art, a secure socket library (ie, Secured Socket Library, SSL)
Specification v.3.0 defines a protocol that allows a cryptographic package that passes messages to and from a user application to configure cryptographic processing, including cryptographic keys used and encrypted connections. I have. To provide maximum compatibility and minimize programming costs, the present invention takes advantage of this protocol,
The encryption multiplexer 132 of FIG. 3 is used to store the encryption key and direct encryption and decryption. In the embodiment shown in FIG. 2, the encryption mechanism module 112 stores the encryption key and instructs encryption and decryption.

【0032】図2および図3で示される両方の実施形態
ともソフトウェア型暗号化またはハードウェア型暗号化
いずれをも使用するように構成できるが、図2の実施形
態はソフトウェア型暗号化に関する使用の方がより適し
ていて、一方図3の実施形態はハードウェア型暗号化に
関する使用の方がより適している。以下の記述は、暗号
マルチプレクサ132および暗号化機構ドライバ140
をハードウエァ型暗号化機構と動作できるように適応さ
せる方法を説明するが、同様の技術を使用して、図2の
暗号化機構モジュール112をハードウエァ型暗号化機
構と動作できるようにに適応させることができる点は同
業者に認められるであろう。
While both embodiments shown in FIGS. 2 and 3 can be configured to use either software-based encryption or hardware-based encryption, the embodiment of FIG. 2 uses the same for software-based encryption. Are more suitable, while the embodiment of FIG. 3 is more suitable for use with hardware-based encryption. The following description describes the cryptographic multiplexer 132 and the cryptographic mechanism driver 140
Will be described, but similar techniques may be used to adapt the encryption mechanism module 112 of FIG. 2 to operate with a hardware encryption mechanism. Will be recognized by those skilled in the art.

【0033】暗号化されるべきデータを指し示すデータ
・メッセージがマルチプレクサ132に到着すると、マ
ルチプレクサ132はメッセージを検査し適切な暗号キ
ーを調べる。特定のアプリケーションから出されるすべ
てのデータが特定のキーを使用するような形態で暗号キ
ーがアプリケーション・インスタンスに結合されている
かもしれないし、あるいは、特定のIPアドレスに送ら
れるすべてのデータが特定のキーを使用して暗号化され
るような形態で暗号キーがIPアドレスに結合されてい
る場合もある。暗号化キーを取得した後、暗号化マルチ
プレクサ132は、"処理中"カウンタを自動的に増分す
るために使用されるスピンロック(spinlock)を取得す
る。この"処理中"カウンタは、TCP/IPスタックが
仕掛かり中の暗号処理を持ち、このカウンタが仕掛かり
中の暗号要求がないことを示す値のゼロに等しくなるま
で当該ストリームをクローズすることはできないこを標
示する。"処理中"カウンタは、暗号マルチプレクサ13
2のインスタンスの各々と関連づけられるプライベート
・データ構造の一部として定義される。このカウンタは
を検査することによって、システム・パニックにつなが
る可能性のあるクローズ競合状態が防止される。
When a data message indicating the data to be encrypted arrives at the multiplexer 132, the multiplexer 132 examines the message and looks up the appropriate encryption key. An encryption key may be bound to an application instance in such a way that all data originating from a particular application uses a particular key, or if all data sent to a particular IP address is The encryption key may be bound to the IP address in such a way that it is encrypted using the key. After obtaining the encryption key, the encryption multiplexer 132 obtains a spinlock that is used to automatically increment a "working" counter. This "in progress" counter indicates that the TCP / IP stack has in-progress cryptographic processing and will not close the stream until this counter is equal to zero, indicating that there is no pending cryptographic request. Indicate that you cannot. The “in process” counter is the
2 instances are defined as part of a private data structure associated with each instance. By checking this counter, a close race condition that could lead to a system panic is prevented.

【0034】暗号マルチプレクサ132は、次に、スタ
ック(この場合TCPレーヤ134)における次のモジュ
ールの書込み待ち行列を目標として持つコールバック機
能(通常はSTREAMS putnext()関数)を含むデータ
構造を設定する。データ構造は、また、暗号化されるべ
きデータを保持するメモリ・ブロックへのポインタを含
む。次に、マルチプレクサは暗号化要求を逐次化する同
期待ち行列を取得する。暗号マルチプレクサ132が、
別の暗号化動作が進行中のため同期待ち行列を取得する
ことができない場合は、マルチプレクサはハードウェア
の待機待ち行列スピンロックを取得して将来の処理に備
えて待機待ち行列にトランザクションを入れる。次に、
暗号マルチプレクサ132は、スタックを通過するその
他のメッセージの処理へ戻る。
The cryptographic multiplexer 132 then sets up a data structure that includes a callback function (usually a STREAMS putnext () function) that targets the write queue of the next module in the stack (in this case, the TCP layer 134). . The data structure also includes a pointer to a memory block that holds the data to be encrypted. Next, the multiplexer obtains a synchronization queue that serializes the encryption request. The cryptographic multiplexer 132
If the synchronization queue cannot be acquired because another encryption operation is in progress, the multiplexer acquires the hardware wait queue spinlock and places the transaction in the wait queue for future processing. next,
The cryptographic multiplexer 132 returns to processing other messages passing through the stack.

【0035】同期待ち行列が取得されると、ハードウェ
ア型暗号化プロセスはソフトウェア割り込みサービスを
使用して始動される。このソフトウェア割り込みサービ
スは、ユーザ・アプリケーション126と並列して実行
することによってユーザ・アプリケーション126の実
行に影響を与えることなくハードウェア型暗号化機構が
暗号処理を実行することを可能にする。データを暗号化
した後、ハードウェア型暗号化機構は割込みサービスル
ーチン(すなわちinterrupt service routine略してIS
R)を呼び出す。ISRはコールバック関数を起動し、
コールバック関数がTCPレーヤ134の書込み待ち行
列へ暗号化されたデータを送り、"処理中"フラグをフラ
グのスピンロックを取得することによって消去する。暗
号ハードウェアがメモリ・ブロックに記憶されているデ
ータに対して直接暗号化を実行したので、不必要なメモ
リ管理もデータの移動も行わずに暗号化はその場で行わ
れた。
When the synchronization queue is obtained, the hardware-based encryption process is started using a software interrupt service. This software interrupt service allows hardware-based encryption mechanisms to perform cryptographic operations without affecting the execution of user application 126 by executing in parallel with user application 126. After encrypting the data, the hardware-based encryption mechanism provides an interrupt service routine (ie, an interrupt service routine, IS).
Call R). The ISR invokes a callback function,
The callback function sends the encrypted data to the write queue of TCP layer 134 and clears the "in process" flag by acquiring the flag's spinlock. Because the cryptographic hardware performed the encryption directly on the data stored in the memory blocks, the encryption was performed on the fly without unnecessary memory management or data movement.

【0036】到来データに関してもプロセスは基本的に
同様であるが、相違するのは、暗号マルチプレクサ13
2によって設定されたデータ構造に含められるコールバ
ック機能が目標としてストリーム・ヘッド130の読み
取り待ち行列を持つ点である。 図2および図3が、標
準STREAMSモジュールおよびドライバを使用して
STREAMS型プロトコル・スタックに暗号機能がど
のように付加されるかを例示しているが、米国特許出願
第08/593,313号および同第08/545,561号に記載されてい
る技術を適用して、STREAMS型プロトコル・スタ
ックにおける暗号機能を提供するよりすぐれたメカニズ
ムを提供することもできる。
Although the process is basically the same for incoming data, the only difference is that the encryption multiplexer 13
2 is that the callback function included in the data structure set by 2 has a read queue for stream head 130 as a target. FIGS. 2 and 3 illustrate how cryptographic functions are added to a STREAMS-type protocol stack using standard STREAMS modules and drivers. The techniques described in 08 / 545,561 can also be applied to provide a better mechanism for providing cryptographic functions in a STREAMS-type protocol stack.

【0037】従来技術のSTREAMS型プロトコル・
スタックにおいては、ストリームはLIFO(すなわち
後入れ先出し)スタックにモジュールを入れる(すなわち
プッシュ)することによって構築される。(図1のTCP
レーヤ24のような)モジュールがスタックにプッシュ
されると、モジュールは、スタックに以前にプッシュさ
れている(IPレーヤ26のような)モジュールまたはド
ライバの読み取りおよび書き込み待ち行列にリンクさ
れ、スタックにプッシュされているモジュールの読み取
りおよび書き込み待ち行列は(ストリーム・ヘッド22
のような)ストリーム・ヘッドにリンクされる。スタッ
クの底部には、(DLPIレーヤ28)のようなドライバ
があって、データを物理的ハードウェアにリンクするか
あるいは処理関数などを実行する。ストリーム・ヘッド
はスタックの先頭にあって、ユーザ空間およびカーネル
空間の間でデータをコピーする。ストリーム・ヘッド
は、また、ユーザ・アプリケーションの観点からストリ
ームに対する入り口の役目を果たす。ドライバおよびス
トリーム・ヘッド間のモジュールは種々の処理機能を実
行する。
Prior art STREAMS type protocol
In a stack, a stream is constructed by putting (ie, pushing) modules into a LIFO (ie, last-in-first-out) stack. (TCP of FIG. 1
When a module (such as layer 24) is pushed onto the stack, the module is linked to the read and write queue of the module or driver (such as IP layer 26) that was previously pushed onto the stack and pushed onto the stack. The read and write queues for the module being
(Like). At the bottom of the stack is a driver such as (DLPI layer 28) that links data to physical hardware or performs processing functions and the like. The stream head is at the top of the stack and copies data between user space and kernel space. The stream head also serves as the entry point to the stream from the point of view of the user application. Modules between the driver and the stream head perform various processing functions.

【0038】従来技術においては、ストリームの機能性
の変更は、ストリームを引き離し再構築することを必要
とした。ドライバに隣接するモジュールの機能性を変更
する必要がある場合、ドライバより上のあらゆるモジュ
ールはスタックから引き離されなければならず、(新し
い機能性を含む)モジュールの更新されたバージョンが
スタックにプッシュされなければならず、変更されたモ
ジュールより上流に以前から存在していたすべてのモジ
ュールはスタックに再度プッシュされなければならなか
った。このプロセスは遅くプロセッサは忙殺され、再構
成の間スタックは利用できない。
In the prior art, changing the functionality of a stream required that the stream be separated and reconstructed. If the functionality of a module adjacent to the driver needs to be changed, any modules above the driver must be pulled off the stack, and the updated version of the module (including the new functionality) will be pushed onto the stack. All previously existing modules upstream from the changed module had to be pushed back onto the stack. This process is slow and the processor is busy, and the stack is unavailable during the reconfiguration.

【0039】動的関数置き換え機能(すなわちdynamic f
unction replacement)は、モジュールが代替実行経路を
持つことを可能にする。コマンドを出すことによって、
実行中に、種々の機能を切り換えてSTREAMS型プ
ロトコル・スタックから出し入れすることができる。動
的機能置き換えは、スタックを通過するデータの暗号化
および復号を選択的に実行する能力をTCP/IPスタ
ックに与える理想的なメカニズムである。それに加え
て、TCP/IPスタックは複数の暗号プロトコルに関
して構成することができ、これらのプロトコルは必要に
応じて動的に変更することができる。
The dynamic function replacement function (ie, dynamic f
unction replacement) allows the module to have an alternative execution path. By issuing the command
During execution, various functions can be switched into and out of the STREAMS-type protocol stack. Dynamic function replacement is an ideal mechanism that gives the TCP / IP stack the ability to selectively perform encryption and decryption of data passing through the stack. In addition, the TCP / IP stack can be configured for multiple cryptographic protocols, which can be changed dynamically as needed.

【0040】対照的に、動的関数登録(すなわちdynamic
function registration)は、いろいろな関数がストリ
ーム・ヘッドに登録されることを可能にする。ストリー
ム・ヘッドには、登録された関数の実行を指示する機能
をもつコントローラが備えられる。動的関数登録に関す
る1つの特徴的アプリケーションは、32ビットから6
4ビットへの変換である。32ビットのアプリケーショ
ンが64ビットのオペレーティング・システムのストリ
ーム・ヘッドにデータを書き込む場合、データが64ビ
ット形式に変換される必要があることを認識し、STR
EAMS型スタックにおけるモジュールに変換の実行を
指示するようにストリーム・ヘッドを構成することがで
きる。用語が示す通り、暗号化関数を登録したり、プロ
トコル・スタックを流れるデータに対してそれら関数の
実行を制御するため、動的関数登録を使用することがで
きる。関数の登録は、ユーザ・プロセスあるいはSTR
EAMS型モジュールまたはドライバによって始動され
る。
In contrast, dynamic function registration (ie, dynamic
function registration) allows various functions to be registered with the stream head. The stream head includes a controller having a function of instructing execution of a registered function. One characteristic application for dynamic function registration is 32-bit to 6-bit.
Conversion to 4 bits. When a 32-bit application writes data to a 64-bit operating system stream head, it recognizes that the data needs to be converted to 64-bit format and
The stream head can be configured to direct the modules in the EAMS-type stack to perform the conversion. As the terminology implies, dynamic function registration can be used to register cryptographic functions and to control the execution of those functions on data flowing through the protocol stack. Registration of functions can be done by user process or STR
Initiated by an EAMS type module or driver.

【0041】動的関数登録によって機能性のストリーム
・ヘッドへの追加またはそこからの削除が可能にされ
る。対照的に、動的関数置き換えは、ストリーム・ヘッ
ドへの種々の実行経路およびそこからの種々の実行経路
を入れ替えることによって、ストリームにおけるいかな
るモジュールまたはドライバへも機能性を追加するこを
可能にしあるいはそこから削除することを可能にする。
Dynamic function registration allows functionality to be added to or removed from the stream head. In contrast, dynamic function replacement allows adding functionality to any module or driver in the stream by swapping different execution paths to and from the stream head, or Allows you to delete from there.

【0042】本発明の1つの実施形態は、図1のストリ
ーム・ヘッド22においてデータを暗号化し復号する。
暗号機能がストリーム・ヘッドにおいて付加されるの
で、動的関数登録を使用して、ストリームを流れるデー
タの暗号化および復号が制御される。別の実施形態は、
ストリーム・スタックとは異なるTCP/IPスタック
の別の点で(例えば図1のTCPレーヤ24とIPレー
ヤ26の間で)データを暗号化し復号する。暗号化機能
がモジュールまたはドライバに付加されるので、モジュ
ールまたはドライバを暗号機能を提供するように構成す
るか、または動的関数置き換えを使用してモジュールま
たはドライバの実行経路に暗号化関数を選択的に挿入す
ることができる。
One embodiment of the present invention encrypts and decrypts data at the stream head 22 of FIG.
Since cryptographic functions are added at the stream head, dynamic function registration is used to control the encryption and decryption of data flowing through the stream. Another embodiment is
At another point in the TCP / IP stack, which is different from the stream stack (eg, between TCP layer 24 and IP layer 26 in FIG. 1), the data is encrypted and decrypted. Because the encryption function is added to the module or driver, configure the module or driver to provide the encryption function, or use dynamic function replacement to selectively select the encryption function in the execution path of the module or driver. Can be inserted.

【0043】以下に記述するハードウェア型実施形態お
よびソフトウェア型実施形態の各々は、当業者が既知の
UDP/IPスタックまたはその他のプロトコル・スタ
ックに応用できるように容易に適応することができる。
Each of the hardware and software embodiments described below can be readily adapted by those skilled in the art to apply to known UDP / IP stacks or other protocol stacks.

【0044】図4は、本発明に従ってSTREAMS型
プロトコル・スタックを通過するデータを暗号化し復号
するように適応されたコンピュータ・システム30の図
である。コンピュータ・システム30はユーザ空間32
およびカーネル空間34を含む。ユーザ空間32はユー
ザ・アプリケーション36およびソケット38を含む。
カーネル空間34は、ストリーム・ヘッド40、暗号化
技術42、TCPレーヤ44、IPレーヤ46およびD
LPIレーヤ48を含む。ストリーム・ヘッド40はレ
ジスタ50およびコントローラ52を含み、TCPレー
ヤ44は関数ポインタ54を含む。
FIG. 4 is a diagram of a computer system 30 adapted to encrypt and decrypt data passing through a STREAMS type protocol stack in accordance with the present invention. The computer system 30 includes a user space 32
And a kernel space 34. User space 32 includes user application 36 and socket 38.
The kernel space 34 includes a stream head 40, an encryption technology 42, a TCP layer 44, an IP layer 46 and a D layer.
Includes LPI layer 48. The stream head 40 includes a register 50 and a controller 52, and the TCP layer 44 includes a function pointer 54.

【0045】暗号化技術42は実際にSTREAMSモ
ジュールまたはドライバではない。むしろ、暗号化技術
42は、ストリーム・ヘッド40において登録される関
数によってアクセスされるハードウェア型またはソフト
ウェア型暗号化機構である。ソフトウェア型暗号化機構
の場合、ストリーム・ヘッドに登録される関数に暗号コ
ードが含められる。ハードウェア型暗号化機構の場合、
ストリーム・ヘッドに登録される関数は、物理的暗号ハ
ードウェアとインターフェースする暗号化ドライバと通
信する機能を持つ関数である。
The encryption technique 42 is not actually a STREAMS module or driver. Rather, encryption technique 42 is a hardware or software encryption mechanism accessed by a function registered at stream head 40. In the case of a software encryption mechanism, a function registered in the stream head includes an encryption code. For hardware-based encryption,
The function registered in the stream head is a function that has the function of communicating with the encryption driver that interfaces with the physical cryptographic hardware.

【0046】ストリーム・ヘッドにおいてSTREAM
S型プロトコル・スタックへ暗号機能を提供するため、
動的関数登録を使用して、暗号化技術42によって実施
される暗号アルゴリズムの実行が制御される。動的関数
登録は、以下の表1のパブリック・データ構造をストリ
ーム・ヘッド・ライブラリ・ファイル<stream.h>に追加
することによって、ストリーム・ヘッドを定義した標準
Cライブラリを変更する。
STREAM at stream head
To provide cryptographic functions to the S-type protocol stack,
The dynamic function registration is used to control the execution of cryptographic algorithms implemented by the encryption technique 42. Dynamic function registration modifies the standard C library that defines the stream head by adding the public data structures in Table 1 below to the stream head library file <stream.h>.

【0047】[0047]

【表1】 struct sth_func_reg { int (*sth_copyin)(); /* 書込側copyin */ int sth_copyin_threshold; /* sth_copyin()へ渡されるアーギュメント */ int (*sth_32_to_64)(); /* 書込側32対64ビット変換関数 */ int(*sth_write_opt)(); /* 書込側オプション関数 */ int(*sth_read_opt)(); /* 読取側オプション関数 */ int(*sth_ioctl_opt)() /* ioctlオプション関数 */ int(*sth_64_to_32)(); /* 読取側64対32ビット変換関数 */ }[Table 1] struct sth_func_reg {int (* sth_copyin) (); / * write side copyin * / int sth_copyin_threshold; / * Arguments passed to sth_copyin () * / int (* sth_32_to_64) (); / * write side 32 to 64-bit conversion function * / int (* sth_write_opt) (); / * Write-side option function * / int (* sth_read_opt) (); / * Read-side option function * / int (* sth_ioctl_opt) () / * ioctl option function * / int (* sth_64_to_32) (); / * 64 to 32-bit conversion function on reading side * /}

【0048】本発明は、以下を加えることによって上記
パブリック・データ構造を修正する。 int (*str_copyout)(); /* 読取側copyout */ パブリック構造へのアクセスを可能にするため以下の表
2のプライベート・データ構造がそのストリーム・ヘッ
ド宜言自体に加えられた。
The present invention modifies the above public data structure by adding: int (* str_copyout) (); / * reader copyout * / The private data structures in Table 2 below have been added to the stream head declaration itself to allow access to public structures.

【0049】[0049]

【表2】 struct sth_s { ... struct sth_func_reg sth_f_reg; int32 sth_in_Progress; ... }[Table 2] struct sth_s {... struct sth_func_reg sth_f_reg; int32 sth_in_Progress; ...}

【0050】従来技術のSTREAMS型プロトコル・
スタックにおいては、ストリーム・ヘッドは、カーネル
空間およびユーザ空間の間のインターフェースを提供す
るもので、非常に単純な構造である。動的関数登録によ
ってストリーム・ヘッドを変えたことによって、ストリ
ーム・ヘッドがいろいろな関数へのポインタを記憶し、
ストリーム・ヘッドによって処理されるデータに対して
それら関数を実行することが可能となった。上述のよう
に定義されたsth_f_reg構造は、諸関数へのポインタが
記憶される場所を与える。ストリーム・ヘッドのsth_f_
reg構造が、ある関数へのポインタを含むとすれば、デ
ータがストリーム・ヘッドによって処理される時その関
数が実行される。
Prior art STREAMS type protocol
In a stack, the stream head provides an interface between kernel space and user space, and is a very simple structure. By changing the stream head by dynamic function registration, the stream head stores pointers to various functions,
It is now possible to perform these functions on the data processed by the stream head. The sth_f_reg structure defined above provides a location where pointers to functions are stored. Stream head sth_f_
If the reg structure contains a pointer to a function, that function will be executed when the data is processed by the stream head.

【0051】copyinおよびcopyout関数を例外として、s
th_f_reg構造に定義される関数エントリのすべてはオプ
ションの関数を実行する。言い換えると、sth_f_reg構
造における対応するエントリが関数ポインタを含まなけ
れば、その関数は実行されない。対照的に、copyinおよ
びcopyout関数は代替関数である。copyinに対するエン
トリが存在しなければ、デフォルトのUnix copyinルー
チンが呼び出されて、ユーザ空間およびカーネル空間の
間でデータをコピーする。同様に、copyoutに対するエ
ントリが存在しなければ、デフォルトのUnix copyoutル
ーチンが呼び出されて、ユーザ空間およびカーネル空間
の間でデータをコピーする。
With the exception of the copyin and copyout functions, s
All of the function entries defined in the th_f_reg structure execute optional functions. In other words, if the corresponding entry in the sth_f_reg structure does not contain a function pointer, the function will not be executed. In contrast, the copyin and copyout functions are alternative functions. If there is no entry for copyin, the default Unix copyin routine is called to copy data between user space and kernel space. Similarly, if there is no entry for copyout, the default Unix copyout routine is called to copy data between user space and kernel space.

【0052】書き込み側の暗号化は、暗号化技術42の
実施形態に応じて、代替関数sth_copyinまたはオプショ
ン関数sth_write_optのいずれかによって実施される。
同様に、読み取り側の暗号化は、代替関数sth_copyout
またはオプション関数sth_read_optのいずれかによって
実施される。
The encryption on the write side is performed by either the alternative function sth_copyin or the optional function sth_write_opt, depending on the embodiment of the encryption technique 42.
Similarly, the encryption on the read side is based on the alternative function sth_copyout
Or by one of the optional functions sth_read_opt.

【0053】代替関数sth_copyinおよびsth_copyoutは
ソフトウェア型暗号化に非常に適していて、この場合、
暗号化技術42は、暗号アルゴリズムをsth_copyinおよ
びsth_copyoutに組み込むことによって実施される。こ
れら関数を使用して、データは、ユーザ空間32からカ
ーネル空間34へコピーされる際に暗号化され、カーネ
ル空間34からユーザ空間32へコピーされる際に復号
され、それによってデータを取り扱わねばならない回数
が最小限にとどめられる。チェックサム機能性がcopyin
関数に継続的に含まれるとすれば、sth_copyin_thresho
ldは、米国特許出願第08/593,313号に開示されている通
り、TCP MTUサイズを継続的に反映する。
The alternative functions sth_copyin and sth_copyout are very suitable for software-based encryption, where
The encryption technique 42 is implemented by incorporating a cryptographic algorithm into sth_copyin and sth_copyout. Using these functions, data must be encrypted when copied from user space 32 to kernel space 34 and decrypted when copied from kernel space 34 to user space 32, thereby handling the data. The number of times is kept to a minimum. Checksum functionality is copyin
Sth_copyin_thresho
ld continuously reflects the TCP MTU size, as disclosed in US patent application Ser. No. 08 / 593,313.

【0054】オプション関数sth_read_optおよびsth_wr
ite_optは、ソフトウェア型暗号暗号アルゴリズム、ハ
ードウェア型暗号暗号アルゴリズムいずれとでも使用す
ることができ、いくつかの利点を提供する。第1に、st
h_write_optは、カプセル化されたデータに関して呼び
出すことができる。カプセル化されたデータを形成する
1つの方法は、esballoc()システム・コールを呼び出す
ことである。esballoc()システム・コールは、STRE
AMSプログラミング技法において既知の通り、カーネ
ル空間において任意の大きさのメモリを取り出し、b_da
tapおよびb_rptrポインタを介してこのメモリをポイン
トするmblkヘッダを割り当てる。例えば、バッファ・キ
ャッシュに記憶されているデータを暗号化してネットワ
ーク上にデータを伝送することを望む場合、esballoc()
システム・コールは、キャッシュにおけるデータに関し
て呼び出される。カプセル化されているメモリがカーネ
ル空間に既に存在しているので、copyin関数は必要とさ
れない。従って、copyin/encrypt組み合わせ関数をその
データに対して実行することができないが、sth_write_
optがカーネルに既に存在するデータを暗号化すること
ができる。
Optional functions sth_read_opt and sth_wr
ite_opt can be used with either software-based cryptographic algorithms or hardware-based cryptographic algorithms, and offers several advantages. First, st
h_write_opt can be called on the encapsulated data. One way to form encapsulated data is to call the esballoc () system call. The esballoc () system call is
As is known in AMS programming techniques, fetch memory of any size in kernel space and b_da
Allocate an mblk header pointing to this memory via tap and b_rptr pointers. For example, if you want to encrypt the data stored in the buffer cache and transmit the data over the network, esballoc ()
System calls are invoked on data in the cache. The copyin function is not required because the encapsulated memory already exists in kernel space. Therefore, the copyin / encrypt combination function cannot be executed on the data, but sth_write_
opt can encrypt data already in the kernel.

【0055】第2の利点は、sth_write_optおよびd sth
_read_optは、mblk連鎖全体が使用可能な時呼び出さ
れ、連鎖がどのように暗号化されるべきかを指示するた
め個々のmblkタイプを暗号アルゴリズムが利用すること
ができることである。対照的に、sth_copyinは、すべて
のデータがカーネル空間34にコピーされ暗号化される
までmblk連鎖全体に対するアクセスは行わない。例え
ば、1つまたは複数のM_DATAメッセージが後に続く1つ
のM_PROTOメッセージを含むmblk連鎖を考察する。この
場合、M_PROTOメッセージはデータがどのように暗号化
されるかを記述するデータ構造を含んでいる。そのよう
なデータ構造は、暗号化技術識別子、パブリック暗号キ
ー、識別サーバー識別子および暗号化プロセスを制御す
るためのその他の情報を含むことができる。この方法を
使用して、暗号化技術をメッセージ単位、または任意の
間隔で変えることが可能で、それによって暗号の類型化
を避けることができる。
The second advantage is that sth_write_opt and d sth
_read_opt is called when the entire mblk chain is available, so that the cryptographic algorithm can use the individual mblk type to indicate how the chain should be encrypted. In contrast, sth_copyin does not access the entire mblk chain until all data has been copied to kernel space 34 and encrypted. For example, consider an mblk chain that includes one M_PROTO message followed by one or more M_DATA messages. In this case, the M_PROTO message contains a data structure that describes how the data is encrypted. Such a data structure may include an encryption technology identifier, a public encryption key, an identification server identifier, and other information for controlling the encryption process. Using this method, the encryption technique can be changed on a message-by-message basis, or at arbitrary intervals, thereby avoiding cryptographic typology.

【0056】暗号化技術42がハードウェア型暗号化機
構を使用する場合、ハードウェア型暗号化機構を駆動す
る能力を持つドライバが、sth_write_optおよびsth_rea
d_opt関数としてストリーム・ヘッド40に登録され
る。図3に示される実施形態におけるように、ハードウ
ェア型暗号化機構は、クローズ競合状態を監視されなけ
ればならない。しかし、上述の通り、図3において、ク
ローズ競合状態は、暗号化マルチプレクサ132内で変
更され検査される"処理中"カウンタによって検出され
る。従って、暗号化マルチプレクサ132に関連するcl
ose()ルーチンは、"処理中"カウンタへのアクセスを持
つ。状況は、図4に示される実施形態においてはいくぶ
ん異なる。ストリーム・ヘッド40がデータを暗号化し
復号するドライバを制御しているので、sth_in_progres
sカウンタは、ストリーム・ヘッド40のプライベート
・データ構造の一部として定義され、sth_in_progress
カウンタがゼロにならない限りストリームをクローズす
ることはできない。従って、スタック内の種々のモジュ
ールおよびドライバのclose()関数が"処理中"カウンタ
にアクセスすることを可能にし、レジスタ関数がカウン
タを増分および減分することことを可能にするように、
STREAMSカーネル・インターフェースは要求され
る。そのようなインターフェースの種々の形態は種々の
Unixバージョンに含められている。伝送非依存STRE
AMSカーネル・インターフェースはヒューレット・パ
ッカード社版Unixリリース10.10以後にも含まれている
が、リリーズ10.30によって開発者に公式に提供される
予定である。
When the encryption technology 42 uses a hardware-type encryption mechanism, a driver capable of driving the hardware-type encryption mechanism uses sth_write_opt and sth_rea.
It is registered in the stream head 40 as a d_opt function. As in the embodiment shown in FIG. 3, the hardware encryption mechanism must be monitored for a close race condition. However, as described above, in FIG. 3, a close race condition is detected by an "in process" counter that is modified and checked in the encryption multiplexer 132. Therefore, the cl associated with the encryption multiplexer 132
The ose () routine has access to a "working" counter. The situation is somewhat different in the embodiment shown in FIG. Since the stream head 40 controls a driver that encrypts and decrypts data, sth_in_progres
The s counter is defined as a part of the stream head 40 private data structure, and sth_in_progress
The stream cannot be closed unless the counter reaches zero. Thus, to allow the close () function of the various modules and drivers in the stack to access the "in process" counter, and to allow the register function to increment and decrement the counter
The STREAMS kernel interface is required. The various forms of such interfaces are
Included in the Unix version. Transmission independent STRE
The AMS kernel interface has been included since Hewlett-Packard's version of Unix release 10.10, but will be officially provided to developers by release 10.30.

【0057】暗号化が実行されているレベルに隣接する
すべてのモジュールおよびドライバのclose()ルーチン
は、それぞれのモジュールまたはドライバのクローズを
許容するまえに"処理中"カウンタを検査するように変更
されなければならない。close()ルーチンは、当業者に
周知の方法でモジュールのコードを変更することによっ
て、あるいは米国特許出願第08/545,561号に開示されて
いる技法を使用して代替実行経路を定義することによっ
て、変更することができる。
The close () routine of all modules and drivers adjacent to the level at which encryption is being performed has been modified to check the "in progress" counter before allowing the respective module or driver to be closed. There must be. The close () routine can be implemented by modifying the code of the module in a manner well known to those skilled in the art, or by defining an alternate execution path using the techniques disclosed in U.S. patent application Ser. No. 08 / 545,561. Can be changed.

【0058】下記(表3の)プログラム・コードは、ハー
ドウェア型暗号化機構をサポートするようにclose()ル
ーチンをどのように変更するかを示す。close()ルーチ
ンは以下のコードを含むように修正されなければならな
い。
The following program code (from Table 3) shows how to modify the close () routine to support a hardware encryption mechanism. The close () routine must be modified to include the following code:

【0059】[0059]

【表3】 do { spinlock(sth->sth_in_progress_flag_lock) ; if (sth->sth_in_progress) { /* 仕掛かり中の暗号処理がある */ get_sleep_10ck((int) &sth->sth_in_progress_sleep_addr); spinunlock(sth->sth_in_progress_flag_lock); error = sleep(&sth->sleep(&sth->sth_in_progress_sleep_addr); if (error) error=EINTR; } } while (error == 0);[Table 3] do {spinlock (sth-> sth_in_progress_flag_lock); if (sth-> sth_in_progress) {/ * There is a cryptographic process in progress * / get_sleep_10ck ((int) & sth-> sth_in_progress_sleep_addr); spinunlock (sth-> sth_in_progress_flag_lock); error = sleep (& sth-> sleep (& sth-> sth_in_progress_sleep_addr); if (error) error = EINTR;}} while (error == 0);

【0060】上記のループによって、close()ルーチン
はシステム・パニックまたはデッドロックを引き起こす
ことなく休止することができる。スレッドは、暗号化ハ
ードウェアをサポートするために使用されている現在時
スレッドが以下の動作(表4)を行うまで存在することは
できない。
The above loop allows the close () routine to pause without causing a system panic or deadlock. Threads cannot exist until the current thread used to support the cryptographic hardware performs the following operations (Table 4).

【0061】[0061]

【表4】 spinlock(sth->sth_in_progress_flag_lock) ; sth->sth_in_progress++; spinunlock(sth->sth_in_progress_flag_lock) ; /* 処理を実行 */ /* フラグをリセットして休止中のすべてのスレッドを起動させる */ spinlock(sth->sth_in_progress_flag_lock); sth->sth_in_progress--; spinunlock(sth->sth_in_progress_flag_lock) ; wake up(&sth->sth_in_progress_sleep_addr) ;[Table 4] spinlock (sth-> sth_in_progress_flag_lock); sth-> sth_in_progress ++; spinunlock (sth-> sth_in_progress_flag_lock); / * Execute processing * / / * Reset flags and start all sleeping threads * / spinlock (sth-> sth_in_progress_flag_lock); sth-> sth_in_progress--; spinunlock (sth-> sth_in_progress_flag_lock); wake up (& sth-> sth_in_progress_sleep_addr);

【0062】sth_write_optおよびsth_read_optがスト
リーム・ヘッド40のレジスタ50に登録されると、コ
ントローラ52がsth_write_optを実行して送出データ
を暗号化し、sth_read_optを実行して到来データを復号
する。暗号化技術42がハードウェア型暗号化機構とし
て実施され、ユーザ・アプリケーションがソケット38
を経由してデータを書き込む時、sth_write_optがまず
スピンロック(spinlock)にアクセスして"処理中"カウン
タを増分する。上述のように、このフラグはSTREA
MSカーネル・インターフェースを使用してセットされ
なければならず、close()動作はカウンタがゼロでなけ
れば待機しなければならない。
When sth_write_opt and sth_read_opt are registered in the register 50 of the stream head 40, the controller 52 executes sth_write_opt to encrypt outgoing data, and executes sth_read_opt to decrypt incoming data. The encryption technique 42 is implemented as a hardware encryption mechanism, and the user application
When writing data via sth_write_opt, the sth_write_opt first accesses the spinlock and increments the "working" counter. As described above, this flag is
It must be set using the MS kernel interface and the close () operation must wait if the counter is not zero.

【0063】次に、ハードウェア型暗号化機構のハード
ウェア同期待ち行列が、sth_write_optによって取得さ
れなければならない。サービスしなければならないので
同期待ち行列を待つことができない(図3の)暗号化マル
チプレクサ132と相違して、sth_write_optはハード
ウェアが利用できるようになるまで休止する。sth_writ
e_optが同期待ち行列を取得すると、sth_write_optはmb
lkデータ・アドレスをハードウェア型暗号化機構に渡
し、ハードウェア暗号化ルーチンを呼び出す。その後の
ある時点でハードウェア型暗号化機構は暗号化されたデ
ータを戻し、sth_write_optが"処理中"カウンタを減分
し、ルーチンは終了する。次に、STREAMSフレー
ムワークがTCPレーヤ44へmblkデータ・アドレスを
渡し、処理は続行する。
Next, the hardware synchronization queue of the hardware encryption mechanism must be obtained by sth_write_opt. Unlike the encryption multiplexer 132 (of FIG. 3), which cannot wait for the synchronization queue because it must be serviced, sth_write_opt pauses until hardware becomes available. sth_writ
When e_opt gets the synchronization queue, sth_write_opt returns mb
Pass the lk data address to the hardware encryption mechanism and call the hardware encryption routine. At some point thereafter, the hardware encryption mechanism returns the encrypted data, sth_write_opt decrements the "working" counter, and the routine ends. Next, the STREAMS framework passes the mblk data address to the TCP layer 44 and processing continues.

【0064】暗号化技術42がハードウェア型暗号化機
構として実施され、ユーザ・アプリケーションがソケッ
ト38を経由してデータを読み取る時、sth_read_optが
まずスピンロック(spinlock)にアクセスして"処理中"カ
ウンタを増分する。次に、ハードウェア型暗号化機構の
ハードウェア同期待ち行列が、sth_read_optによって取
得されなければならない。sth_read_optが同期待ち行列
を取得すると、sth_read_optはmblkデータ・アドレスを
ハードウェア型暗号化機構に渡し、ハードウェア暗号化
ルーチンを呼び出す。その後のある時点でハードウェア
型暗号化機構は復号されたデータを戻し、sth_read_opt
が"処理中"カウンタを減分し、ルーチンは終了する。次
に、STREAMSフレームワークはユーザ空間122
へのデータの移動を完了し、それによってユーザ・アプ
リケーション126によって要求された読取り動作が完
了する。
When the encryption technique 42 is implemented as a hardware-type encryption mechanism, and a user application reads data via the socket 38, sth_read_opt first accesses the spinlock (spinlock) and reads the "processing" counter. Is incremented. Next, the hardware synchronization queue of the hardware encryption mechanism must be obtained by sth_read_opt. When sth_read_opt gets the synchronization queue, sth_read_opt passes the mblk data address to the hardware encryption mechanism and calls the hardware encryption routine. At some point thereafter, the hardware encryption mechanism returns the decrypted data and sth_read_opt
Decrements the "in process" counter and the routine ends. Next, the STREAMS framework uses the user space 122
Completes the transfer of data to, thereby completing the read operation requested by the user application 126.

【0065】モジュールまたはドライバがstr_func_ins
tallと呼ばれる関数を実行することによってストリーム
・ヘッドに関数を登録することができ、それによって、
モジュールまたはドライバによって識別された関数の関
数ポインタをsth_f_regデータ構造のエントリに送るこ
とができることが、米国特許出願第08/593,313号に記載
されている。例えば、図4において、TCPレーヤ44
は、str_func_installを呼び出すことによって1つの暗
号化関数を登録し、関数ポインタ・テーブル54に記憶
されている関数ポインタをsth_f_regデータ構造におけ
る適切なエントリへ伝送する。この場合伝送される関数
ポインタはストリーム・ヘッドにおけるレジスタ50に
よって表されている。
If the module or driver is str_func_ins
You can register a function with the stream head by executing a function called tall,
It is described in US patent application Ser. No. 08 / 593,313 that the function pointer of the function identified by the module or driver can be sent to an entry in the sth_f_reg data structure. For example, in FIG.
Registers one encryption function by calling str_func_install and transmits the function pointer stored in function pointer table 54 to the appropriate entry in the sth_f_reg data structure. The function pointer transmitted in this case is represented by a register 50 in the stream head.

【0066】本発明は、2つのSTREAMSのioctl
コマンドを追加する。これらコマンドは、ユーザ・アプ
リケーション36が暗号化を構成することを可能にし、
また、その他の動的関数登録アプリケーションにおいて
も役立つものである。ioctlコマンドI_GET_FUNC_REG
は、アプリケーション36によってプロトコル・スタッ
クにおけるドライバおよびモジュールの各々へストリー
ム・ヘッド40を経由して転送される。スタックにおけ
るドライバおよびモジュールの各々は、可能な関数の各
々に関する名前およびユニークな識別子を含む関数登録
リストを戻し、それによって、ユーザ・アプリケーショ
ン36は登録することができるすべての関数の存在を通
知される。この情報を使用して、ユーザ・アプリケーシ
ョン36は、第2のioctlコマンドI_SET_FUNC_REGを発
することができる。このコマンドによって、米国特許出
願第08/593,313号に記載されているようにモジュールま
たはドライバがstr_func_install関数を実行するかまた
はM_SETOPTSメッセージを送出することによって関数を
登録することができるのと同じ方法でユーザ・アプリケ
ーション36が関数を登録することを可能にする。
The present invention provides two STREAMS ioctls.
Add commands. These commands allow the user application 36 to configure encryption,
It is also useful in other dynamic function registration applications. ioctl command I_GET_FUNC_REG
Is transferred by the application 36 via the stream head 40 to each of the drivers and modules in the protocol stack. Each of the drivers and modules in the stack returns a function registration list containing the name and unique identifier for each of the possible functions, so that the user application 36 is notified of the presence of all functions that can be registered. . Using this information, the user application 36 can issue a second ioctl command I_SET_FUNC_REG. This command allows the user to register a function in the same way that a module or driver can execute the str_func_install function or register an M_SETOPTS message by sending the M_SETOPTS message, as described in U.S. patent application Ser. No. 08 / 593,313. Enable the application 36 to register functions.

【0067】別の1つの構成においては、上述のioctl
を使用する安全保護機能を持つスレッドが実行される。
このスレッドは、アプリケーションまたは環境に基づい
て適切な暗号化機能を自動的に登録することができる。
この構成は、暗号化をサポートするように設計されてい
ないアプリケーションについて使用される時特に有益で
ある。また、安全保護機能を有するスレッドは、ユーザ
・ログイン、アプリケーション、宛先IPアドレスまた
はその他の特性に基づく暗号化方法および暗号キーを提
供する認証サーバと連携動作するように構成することも
できる。そのようなスレッドは、ケルベロス(Kerberos)
認証システムのような周知の認証サーバと連携動作する
ように構成することもできる。
In another configuration, the above ioctl
A thread that has a security feature that uses is executed.
This thread can automatically register the appropriate encryption function based on the application or environment.
This configuration is particularly beneficial when used for applications that are not designed to support encryption. The thread having the security function may be configured to cooperate with an authentication server that provides an encryption method and an encryption key based on a user login, an application, a destination IP address or other characteristics. One such thread is Kerberos
It may be configured to operate in cooperation with a well-known authentication server such as an authentication system.

【0068】関数登録の一層洗練された方法は、メッセ
ージを選別し関数を登録しメッセージに基づいた暗号化
を構成するようにTCPレーヤ44を修正することを必
要とする。TCPレーヤ44の修正は、周知の方法でモ
ジュール・コードを修正することによって、または、米
国特許出願第08/545,561号に従って置き換え関数を定義
することによって、実行できる。例えば、TPIのT_CO
NN_REQおよびT_BIND_REQメッセージのようなメッセージ
を調べる置き換えTCPモジュール書込み関数putを定
義することができる。例えば、TPI T_CONN_REQメッ
セージは、特定のIPアドレスへの接続を確立するため
に使用される。置き換えput関数は、IPアドレスを検
査し、IPアドレスが安全保護された遠隔のものか否か
を(暗号化サーバへのアクセスまたはその他の手段によ
って)判断するように構築することができる。安全保護
されたものであれば暗号化は不要である。そうでない場
合は、置き換えputルーチンは適切な暗号関数を登録す
ることができる。更に、置き換えputルーチンは、暗号
化キーを供給するか、暗号サーバのような別のソースか
らキーを取得することができる。
A more sophisticated method of function registration involves modifying the TCP layer 44 to filter messages, register functions and configure message-based encryption. Modification of TCP layer 44 can be performed by modifying the module code in a well-known manner, or by defining a replacement function according to US patent application Ser. No. 08 / 545,561. For example, TPI T_CO
A replacement TCP module write function put can be defined that checks for messages such as NN_REQ and T_BIND_REQ messages. For example, a TPI T_CONN_REQ message is used to establish a connection to a specific IP address. The replacement put function can be configured to check the IP address and determine (by accessing the encryption server or other means) whether the IP address is secure and remote. No encryption is required if it is secure. Otherwise, the replacement put routine can register the appropriate cryptographic function. Further, the replacement put routine can supply the encryption key or obtain the key from another source, such as a cryptographic server.

【0069】置き換えputルーチンはTPIのT_BIND_RE
Qメッセージを調べるように構築することもできる。T
PIのT_BIND_REQメッセージは、指定されたプロトコル
・スタックおよびポートにアプリケーションを結合する
ために使用される。上述と同様な方法で、置き換えput
機能は、どのレベルの暗号化が必要とされるかを決定
し、暗号キーを決定し、ストリーム・ヘッドに暗号化関
数を登録することができる。そのような置き換えput関
数は、暗号化を使用するように元々設計されなかったア
プリケーションに関連して使用される場合特に有益であ
る。
The replacement put routine is T_BIND_RE of TPI.
It can be built to look at Q messages. T
The PI's T_BIND_REQ message is used to bind the application to the specified protocol stack and port. Replace put in the same way as above
The function can determine what level of encryption is needed, determine the encryption key, and register the encryption function with the stream head. Such replacement put functions are particularly beneficial when used in connection with applications that were not originally designed to use encryption.

【0070】以上の記述はTCP/IPスタックに関す
るものではあるが、同様の技法を他のプロトコル・スタ
ックにも使用できる点は留意されるべきであろう。更
に、UDP/IPスタックのような特定タイプのプロト
コル・スタックに関してはより簡単な技法を使用するこ
とが可能である。大部分の実施形態において、UDPは
無接続データグラム・プロトコルである。図4におい
て、TCP/IPプロトコル・スタックは、TCPレー
ヤ44をUDPレーヤと置き換えることによってUDP
/IPプロトコル・スタックに変換することができる。
UDPメッセージは、M_DATAメッセージが後に続くT_UN
ITDATA_REQメッセージを含むM_PROTOメッセージから成
る。T_UNITDATA_REQメッセージがIPアドレスを含むの
で、登録された関数は、メッセージ単位に必要に応じて
暗号化を単純に実行することができる。
Although the above description is for the TCP / IP stack, it should be noted that similar techniques can be used for other protocol stacks. Further, for certain types of protocol stacks, such as UDP / IP stacks, simpler techniques can be used. In most embodiments, UDP is a connectionless datagram protocol. In FIG. 4, the TCP / IP protocol stack provides a UDP by replacing TCP layer 44 with a UDP layer.
/ IP protocol stack.
UDP message is T_UN followed by M_DATA message
It consists of an M_PROTO message containing an ITDATA_REQ message. Since the T_UNITDATA_REQ message includes the IP address, the registered function can simply perform encryption on a message-by-message basis as needed.

【0071】図5は、本発明のもう1つ別の実施形態に
従ってデータを暗号化および復号するコンピュータ・シ
ステム150を示している。コンピュータ・システム1
50は、ユーザ空間152およびカーネル空間154を
含む。ユーザ空間152は、ユーザ・アプリケーション
156およびソケット158を含み、カーネル空間15
4は、ストリーム・ヘッド160、TCPレーヤ16
2、IPレーヤ164、DLPIレーヤl66および暗
号化技術168を含む。
FIG. 5 illustrates a computer system 150 for encrypting and decrypting data in accordance with another embodiment of the present invention. Computer system 1
50 includes a user space 152 and a kernel space 154. User space 152 includes user application 156 and socket 158, and kernel space 15
4 is a stream head 160, a TCP layer 16
2, including an IP layer 164, a DLPI layer 166, and an encryption technique 168.

【0072】図5において、IPレーヤ164およびD
LPIレーヤ166のputルーチンは、データを暗号化
技術168との間でやりとりするように修正されてい
る。しかしながら、暗号化技術168は、TCP/IP
スタック内の別の位置に配置することも可能である。当
業者に周知の技術を使用してputルーチンを修正するこ
とができるし、あるいは、置き換えputルーチンを、米
国特許出願第08/545,561号に開示されている動的関数置
き換えを使用してモジュール実行経路に挿入することも
できる。ソフトウェア型暗号アルゴリズムが使用される
場合、アルゴリズムを直接置き換えputルーチンに含め
ることもできる。
In FIG. 5, IP layers 164 and D
The put routine of LPI layer 166 has been modified to pass data to and from encryption technology 168. However, the encryption technology 168 is based on TCP / IP
It is also possible to place it elsewhere in the stack. The put routine can be modified using techniques well known to those skilled in the art, or the replacement put routine can be implemented using the dynamic function replacement disclosed in U.S. patent application Ser. No. 08 / 545,561. It can also be inserted into the path. If a software cryptographic algorithm is used, the algorithm can be directly replaced and included in the put routine.

【0073】図6は、IPレーヤ164、DLPIレー
ヤ166および暗号化ドライバ168の詳細な図であ
る。図6は、ハードウェア型暗号化機構を使用してデー
タを暗号化するように構成される実施形態を示す。図6
において、DLPIレーヤ166の書込み側putルーチ
ンが、出力データを暗号化ドライバ168に送る置き換
えputルーチンと置き換えられている。暗号化された
後、データは暗号化ドライバ168によってDLPIレ
ーヤ166の書込み待ち行列に置かれる。IPレーヤ1
64の読取り側putルーチンも、到来データを暗号化ド
ライバ168に送る置き換えputルーチンと置き換えら
れている。復号された後、データはIPレーヤ164の
読取り待ち行列に置かれる。
FIG. 6 is a detailed diagram of the IP layer 164, the DLPI layer 166, and the encryption driver 168. FIG. 6 illustrates an embodiment configured to encrypt data using a hardware-based encryption mechanism. FIG.
In, the write-side put routine of the DLPI layer 166 has been replaced with a replacement put routine that sends output data to the encryption driver 168. After being encrypted, the data is placed on the DLPI layer 166 write queue by the encryption driver 168. IP layer 1
The 64 read put routines have also been replaced with replacement put routines that send incoming data to the encryption driver 168. After being decoded, the data is placed in a read queue of the IP layer 164.

【0074】ハードウェア型暗号化をプロトコル・スタ
ックに付加することに伴なう問題は、上述の実施形態に
関連したものと同様である。従って、暗号化ドライバ1
68は、"処理中"カウンタ、同期待ち行列および処理さ
れているメモリ・ブロックのmblkアドレスを記憶するレ
ジスタを含む。
The problems associated with adding hardware-based encryption to the protocol stack are similar to those associated with the embodiments described above. Therefore, the encryption driver 1
68 includes a "working" counter, a synchronization queue, and a register that stores the mblk address of the memory block being processed.

【0075】動的関数置き換えを使用して暗号化をコン
ピュータ・システム150に付加するためには、IPレ
ーヤ164およびDLPIレーヤ166に関する置き換
えputおよびcloseルーチンが定義されなければならな
い。動的関数置き換えは、標準的Unix System V Releas
e 4.2 (SVR4.2) Device Driver ReferenceのSTREA
MSデータ構造を使用する。動的関数置き換えを実施す
るため修正されるデータ構造は、streamtabおよびqinit
構造である。各モジュールまたはドライバは、qinit構
造へのポインタを含むstreamtab構造を定義する。
In order to add encryption to computer system 150 using dynamic function replacement, replacement put and close routines for IP layer 164 and DLPI layer 166 must be defined. Dynamic function replacement is a standard Unix System V Release
e 4.2 (SVR4.2) STREA of Device Driver Reference
Uses MS data structure. The data structures modified to implement dynamic function replacement are streamtab and qinit.
Structure. Each module or driver defines a streamtab structure that contains a pointer to a qinit structure.

【0076】qinit構造は、読取り、書込み、書込みマ
ルチプレクサおよびSTREAMSフレームワークによ
って作成されるマルチプレクサ待ち行列に関するもので
ある。qinit構造は、open、close、put、service、およ
び、モジュールまたはドライバのような待ち行列の所有
者に代わってSTREAMSフレームワークによって呼
び出される管理上の関数に関する関数アドレスを含む。
The qinit structure is for a read, write, write multiplexer and a multiplexer queue created by the STREAMS framework. The qinit structure contains function addresses for open, close, put, service, and administrative functions called by the STREAMS framework on behalf of the queue owner, such as a module or driver.

【0077】qinit構造内で定義される関数は、実際に
はモジュールまたはドライバ開発者によって書かれ、ス
トリームを行き来するメッセージのような現在時アプリ
ケーション実行経路に基づいてフレームワークによって
自動的に実行される。STREAMSフレームワーク
が、これらのデータ構造のすべての位置を知っていて、
アプリケーション、モジュールまたはドライバから独立
してそれらにアクセスするかもしれないので、動的関数
置き換えは、これらの構造アドレスを、新しい関数アド
レスを定義する代替的streamtabsおよびqinit構造に対
応づけし直す。以下の表5は、基本的STREAMSフ
レームワーク・データ構造である。
The functions defined within the qinit structure are actually written by the module or driver developer and are automatically executed by the framework based on the current application execution path, such as messages traversing the stream. . If the STREAMS framework knows the location of all of these data structures,
Dynamic function replacement remaps these structure addresses to alternative streamtabs and qinit structures that define new function addresses, as they may access them independently of the application, module or driver. Table 5 below is the basic STREAMS framework data structure.

【0078】[0078]

【表5】 /* STREAMS待ち行列初期化構造 */ struct qinit { int (*qi_putp)(); /* 待ち行列putプロシジャ */ int (*qi_srvp)(); /*待ち行列serviceプロシジャ */ int (*qi_qopen)(); /*待ち行列openプロシジャ */ int (*qiqclose)(); /*待ち行列closeプロシジャ */ int (*qi_qadmin)(); /*待ち行列administrativeプロシジャ */ struct module_info*qi_minfo; struct module_stat*qi_mstat: }; /* STREAMSドライバおよびモジュール宣言構造 */ struct streamtab { struct qinit * st_rdinit; /* 読み取り待ち行列定義 */ struct qinit * st_wrinit; /* 書き込み待ち行列定義 */ struct qinit * st_muxrinit; /* マルチプレクサ・ドライバに関してのみ */ struct qinit * st_muxwinit; /* 同上 */ }Table 5 / * STREAMS queue initialization structure * / struct qinit {int (* qi_putp) (); / * queue put procedure * / int (* qi_srvp) (); / * queue service procedure * / int (* qi_qopen) (); / * queue open procedure * / int (* qiqclose) (); / * queue close procedure * / int (* qi_qadmin) (); / * queue administrative procedure * / struct module_info * qi_minfo; struct module_stat * qi_mstat:}; / * STREAMS driver and module declaration structure * / struct streamtab {struct qinit * st_rdinit; / * Read queue definition * / struct qinit * st_wrinit; / * Write queue definition * / struct qinit * st_muxrinit; / * Only for multiplexer driver * / struct qinit * st_muxwinit; / * Same as above * /}

【0079】これらのデータ構造内の基礎的フィールド
は、デバイス・ドライバ・インターフェースと一般に呼
ばれるSVR4.2 Device Driver Referenceによって標準化
されている。
The basic fields in these data structures are standardized by the SVR4.2 Device Driver Reference, commonly called a device driver interface.

【0080】IPモジュールが以下(表6)の標準的置き
換え構造を持つとする。
Assume that the IP module has the following standard replacement structure (Table 6).

【0081】[0081]

【表6】 /* 標準読取側qinit構造 */ struct qinit IP_rinit = { IP_rput,IP_rsrv,IP_open,IP_close,NULL,&IP_minfo,NULL} /* 標準書込側qinit構造 */ struct qinit IP_winit = { IP_wput,IP_wsrv,IP_open,IP_close,NULL,&IP_minfo,NULL} /* 置き換え読取側qinit構造 */ struct qinit IP_rinit_encrypt = { IP_rput_encrypt,IP_rsrv_encrypt,IP_open, IP_close_encrypt,NULL,&IP_minfo,NULL } /* 置き換え書込側qinit構造 */ struct qinit IP_winit_encrypt = { IP_wput_encrypt,IP_wsrv_encrypt,IP_open, IP_close_encrypt,NULL,&IP_info,NULL } /* 標準streamtab */ struct streamtab IP = {&IP_rinit,&IP_winit}; /* 置き換え(暗号化)streamtab */ struct streamtab IP_encrypt ={&IP_rinit_encrypt,&IP_rinit_encrypt};[Table 6] / * Standard read side qinit structure * / struct qinit IP_rinit = {IP_rput, IP_rsrv, IP_open, IP_close, NULL, & IP_minfo, NULL} / * Standard write side qinit structure * / struct qinit IP_winit = {IP_wput, IP_wsrv , IP_open, IP_close, NULL, & IP_minfo, NULL} / * Replacement reading side qinit structure * / struct qinit IP_rinit_encrypt = {IP_rput_encrypt, IP_rsrv_encrypt, IP_open, IP_close_encrypt, NULL, & IP_minfo, NULL} / * Replacement writing side qinit structure * / struct qinit IP_winit_encrypt = {IP_wput_encrypt, IP_wsrv_encrypt, IP_open, IP_close_encrypt, NULL, & IP_info, NULL} / * Standard streamtab * / struct streamtab IP = {& IP_rinit, &IP_winit}; / * Replace (encrypt) streamtab * / struct streamtab IP_encrypt = _ , &IP_rinit_encrypt};

【0082】動的関数置き換えは、STREAMSモジ
ュールおよびドライバに関して代替streamtabsを構成す
るstr_alt_install()ルーチンを定義する。代替streamt
absは、STREAMSioctl呼び出しを使用してストリ
ームの実行経路との間で動的にスワップされることがで
きる。str_alt_install()ルーチンは、以下(表7)の呼
び出しによって呼び出される。
Dynamic Function Replacement defines a str_alt_install () routine that constitutes alternative streamtabs for STREAMS modules and drivers. Alternative streamt
abs can be dynamically swapped with the stream's execution path using a STREAMS ioctl call. The str_alt_install () routine is called by the following call (Table 7).

【0083】[0083]

【表7】 str_alt_install (name, flags, n, streamtabs) 但し char *name; /* モジュールまたはドライバの名 */ unsigned int flags; /* STR_IS_MODULE/DEVICE */ int n; /* 代替streamtabsの数 */ struct streamtab *streamtabs[] ; /* streamtabsへのポインタ・アレイ */[Table 7] str_alt_install (name, flags, n, streamtabs) where char * name; / * module or driver name * / unsigned int flags; / * STR_IS_MODULE / DEVICE * / int n; / * number of alternative streamtabs * / struct streamtab * streamtabs []; / * pointer array to streamtabs * /

【0084】ユーザ・アプリケーション156にとって
利用できるSTREAMSioctlコマンドは、I_ALTSTRT
AB_ACTIVEおよび I_ALTSTRTAB_FUTUREである。I_ALTSTR
TAB_ACTIVEはモジュール・インスタンスの活動的stream
tabを選択し、一方、I_ALTSTRTAB_FUTUREは、そのモジ
ュール・タイプの将来のインスタンスがオープンされる
時、モジュール・タイプに関する活動streamtabを選択
する。
The STREAMSioctl command available to user application 156 is I_ALTSTRT
AB_ACTIVE and I_ALTSTRTAB_FUTURE. I_ALTSTR
TAB_ACTIVE is the active stream of the module instance
tab, while I_ALTSTRTAB_FUTURE selects the active streamtab for the module type when a future instance of that module type is opened.

【0085】IPレーヤ164に関して定義される置き
換え関数に加えて、DLPIレーヤ166に関する置き
換え関数も同様の方法で定義されなければならない。置
き換え関数が一旦定義されると、ユーザ・アプリケーシ
ョン156は、「暗号化」streamtabsを起動することに
よって暗号化機能を使用可能にし、「デフォルト」stre
amtabsを起動することによって暗号化機能を除去する。
別の構成においては、暗号モジュールがSTREAMS
型プロトコル・スタックにプッシュされる。この場合、
暗号モジュールは、データを通過させる働きをし暗号化
が必要でない時活動的である通常の機能を持ち、暗号化
が必要な時使用される暗号置き換え関数を持つ。
In addition to the replacement functions defined for IP layer 164, the replacement functions for DLPI layer 166 must be defined in a similar manner. Once the replacement function is defined, the user application 156 enables the encryption function by invoking the "encryption" streamtabs and "default" stre
Remove the encryption function by starting amtabs.
In another configuration, the cryptographic module is STREAMS
Pushed onto the type protocol stack. in this case,
The cryptographic module has the usual functions of passing data and being active when encryption is not required, and has a cryptographic replacement function used when encryption is required.

【0086】Secured Socket Library(SSL)仕様v.3 .O
のような従来技術暗号パッケージはいくつかの目的にか
なう。そのようなパッケージは、使用されるべき暗号化
技術を決定し、使用されるべきパブリックおよびプライ
ベート暗号キーを決定し、暗号化技術との間でデータを
やり取りする。本発明はこれらの特徴を内包しいくつか
の新しい利点を提供する。例えば、ネットワーク通信お
よび暗号化技術の両方に使用される単一の共通インター
フェースが使用され、それによってユーザ・アプリケー
ションは単純化される。暗号パッケージは、暗号化技術
との間でのデータ移動を調整する責任をもはや有してい
ない。これは今やSTREAMSフレームワークによっ
て取り扱われる。
Secured Socket Library (SSL) Specification v.3.0
Prior art cryptographic packages such as serve several purposes. Such packages determine the encryption technology to be used, determine the public and private encryption keys to be used, and exchange data with the encryption technology. The present invention incorporates these features and offers several new advantages. For example, a single common interface used for both network communication and encryption techniques is used, thereby simplifying user applications. Cryptographic packages no longer have a responsibility to coordinate the movement of data with the cryptographic technology. This is now handled by the STREAMS framework.

【0087】加えて、本発明は、処理性能およびスルー
プットを向上させる。データは、ユーザ空間およびカー
ネル空間の間の保護領域をただ1度だけ通過するだけで
よく、それによって、必要とされる文脈切り替えの数が
減少する。本発明は、また、従来技術の暗号パッケージ
と比較してシステム資源利用度を減少させる。SSL
は、複数のソケット、バッファ、ファイル・テーブル・
エントリ等々を必要とする。対照的に、暗号をサポート
するため既存のプロトコル・スタックを使用できるの
で、暗号化技術との間でデータをやり取りするために付
加される資源だけが、本発明を実施するために必要とさ
れるすべてである。
In addition, the present invention improves processing performance and throughput. The data need only pass through the protection zone between user space and kernel space only once, thereby reducing the number of required context switches. The present invention also reduces system resource utilization as compared to prior art cryptographic packages. SSL
Means multiple sockets, buffers, file tables,
Requires entries, etc. In contrast, because existing protocol stacks can be used to support cryptography, only the additional resources required to exchange data with encryption techniques are needed to implement the present invention. Is all.

【0088】本発明は、また、より基礎的なシステム・
レベルで暗号機能を提供する。本発明を使用して、コン
ピュータ・システムは統一的システム・レベル暗号戦略
を実施するように構成することができる。例えば、TC
P/IPを通過するすべてのデータは、TCP/IPス
タックを使用する可能性のあるいかなるユーザ・アプリ
ケーションからも独立して、暗号化されることができ
る。これによって、暗号化の制御を複数のアプリケーシ
ョン開発者から取り除き単一のシステム開発者に与える
ことができるので、セキュリティが改善される。また、
暗号化および復号がカーネル空間で行われるので、シス
テムはより安全で、ユーザ・アプリケーションによる攻
撃の可能性は少なくなる。最後に、Unixの標準STRE
AMSインターフェースが使用されるので、ユーザ・ア
プリケーションとの継ぎ目のない統合と更新を維持しな
がら、暗号パッケージの継続的改良および更新を実施す
ことができる。
The present invention also provides a more basic system
Provide cryptographic functions at the level. Using the present invention, a computer system can be configured to implement a unified system-level cryptographic strategy. For example, TC
All data passing through P / IP can be encrypted independently of any user applications that may use the TCP / IP stack. This improves security because encryption control can be removed from multiple application developers and given to a single system developer. Also,
Because encryption and decryption are performed in kernel space, the system is more secure and less likely to be attacked by user applications. Finally, Unix standard STRE
Since the AMS interface is used, continuous improvement and updating of the cryptographic package can be performed while maintaining seamless integration and updating with the user application.

【0089】以上本発明を特定の好ましい実施形態を参
照して記述したが、本発明の理念および有効範囲を逸脱
することなく本発明の形態および細部を変更することが
できる点は当業者に認められるであろう。
Although the present invention has been described with reference to specific preferred embodiments, workers skilled in the art will recognize that changes may be made in form and detail of the invention without departing from the spirit and scope of the invention. Will be.

【0090】本発明には、例として次のような実施様態
が含まれる。 (1)コンピュータ・システム内に配置され、デバイス
とユーザ・プロセスの間で双方向データストリームを伝
送する装置であって、上記デバイスに接続され、上記双
方向データストリームを上記デバイスへ伝送するデバイ
ス・ドライバと、上記デバイスと上記ユーザ・プロセス
の間に配置され、上記ユーザ・プロセスと上記デバイス
・ドライバの間で上記双方向データストリームを伝送す
るストリーム・ヘッドと、上記双方向性データストリー
ムの形態で伝送されるデータに関して暗号化関数を実行
する暗号化機構と、を備える双方向データストリーム伝
送装置。 (2)上記ストリーム・ヘッドが上記暗号化機構を制御
する関数コントローラを含む、上記(1)に記載の双方
向データストリーム伝送装置。 (3)上記暗号化機構が、関数ポインタによって識別さ
れる暗号化関数を備え、上記ストリーム・ヘッドが上記
暗号化関数を識別する関数ポインタを受け取るように構
成される活動関数レジスタを含み、上記暗号化関数コン
トローラが、上記活動関数レジスタに記憶される関数ポ
インタによって識別される上記暗号化関数の実行を制御
する、上記(2)に記載の双方向データストリーム伝送
装置。 (4)上記デバイス・ドライバが、暗号化関数を識別す
る上記関数ポインタを記憶する使用可能関数レジスタを
含む、上記(3)に記載の双方向データストリーム伝送
装置。
The present invention includes the following embodiments as examples. (1) An apparatus disposed in a computer system for transmitting a bidirectional data stream between a device and a user process, the device being connected to the device and transmitting the bidirectional data stream to the device. A driver, a stream head disposed between the device and the user process for transmitting the bidirectional data stream between the user process and the device driver, and in the form of the bidirectional data stream. An encryption mechanism for performing an encryption function on the data to be transmitted. (2) The bidirectional data stream transmission device according to (1), wherein the stream head includes a function controller that controls the encryption mechanism. (3) the encryption mechanism comprises an encryption function identified by a function pointer, the stream head including an activity function register configured to receive a function pointer identifying the encryption function; The bidirectional data stream transmission device according to (2), wherein an encryption function controller controls execution of the encryption function identified by a function pointer stored in the activity function register. (4) The bidirectional data stream transmission device according to (3), wherein the device driver includes an available function register that stores the function pointer that identifies an encryption function.

【0091】(5)上記使用可能関数レジスタに記憶さ
れる上記関数ポインタを上記ストリーム・ヘッドの上記
活動関数レジスタへ伝送する動作を上記デバイス・ドラ
イバが始動する、上記(4)に記載の双方向データスト
リーム伝送装置。 (6)該デバイス・ドライバの上記使用可能関数レジス
タに記憶される上記関数ポインタを上記ユーザ・プロセ
スに対して確認するように指示するコマンドを上記デバ
イス・ドライバが上記ユーザ・プロセスから受け取るよ
うに構成される、上記(5)に記載の双方向データスト
リーム伝送装置。 (7)上記ストリーム・ヘッドが、上記関数ポインタを
確認するコマンドをユーザ・プロセスから受け取り、上
記関数ポインタを上記ストリーム・ヘッドの上記活動関
数レジスタに記憶させるように構成される、上記(3)
に記載の双方向データ・ストリーム伝送装置。 (8)上記コンピュータ・システムが、上記使用可能暗
号化関数を上記ユーザ・プロセスに対して確認するスレ
ッドを実行するように構成される、上記(3)に記載の
双方向データストリーム伝送装置。 (9)上記使用可能暗号化関数から選択される暗号化関
数を上記スレッドに対して確認するように上記ユーザ・
プロセスが構成され、上記ストリーム・ヘッドの活動関
数レジスタの中から選択される暗号化関数を識別する関
数ポインタを記憶するように上記スレッドが構成され
る、上記(8)に記載の双方向データストリーム伝送装
置。
(5) The bidirectional communication according to (4), wherein the device driver starts an operation of transmitting the function pointer stored in the available function register to the activity function register of the stream head. Data stream transmission device. (6) The device driver is configured to receive from the user process a command instructing the user process to check the function pointer stored in the available function register of the device driver. The bidirectional data stream transmission device according to (5), wherein: (7) (3) wherein the stream head is configured to receive a command confirming the function pointer from a user process and store the function pointer in the active function register of the stream head.
2. The bidirectional data stream transmission device according to claim 1. (8) The bidirectional data stream transmission device according to (3), wherein the computer system is configured to execute a thread for confirming the usable encryption function to the user process. (9) The user and the user are required to confirm an encryption function selected from the available encryption functions to the thread.
The bidirectional data stream of claim 8, wherein a process is configured and the thread is configured to store a function pointer identifying an encryption function selected from among the stream head activity function registers. Transmission equipment.

【0092】(10)上記ユーザ・プロセスが上記ユー
ザ空間に存在し、上記デバイス・ドライバがカーネル空
間に存在し、上記暗号化機構が暗号化とcopyinの組み合
わせ関数を備え、データが上記ユーザ空間と上記カーネ
ル空間の間でコピーされる時上記組み合わせ関数を実行
することによって、上記関数コントローラが上記双方向
データストリームの暗号化を制御する、上記(2)に記
載の双方向データストリーム伝送装置。 (11)上記デバイス・ドライバがカーネル空間に存在
し、上記双方向性データストリームが上記カーネル空間
に存在するデータ・ブロックを含み、上記暗号化機構が
カーネル空間に存在するデータ・ブロックに対して上記
暗号化関数を実行する、上記(2)に記載の双方向デー
タストリーム伝送装置。 (12)カーネル空間に存在するデータ・ブロックが1
つのM_PROTOメッセージおよび少くとも1つのM_DATAメ
ッセージによって識別される、上記(11)に記載の双
方向データストリーム伝送装置。 (13)上記データ・ブロックに含まれるデータを暗号
化する時上記暗号化機構によって使用されるべき暗号ア
ルゴリズムを上記M_PROTOメッセージが識別する、上記
(12)に記載の双方向データストリーム伝送装置。 (14)上記データ・ブロックに含まれるデータに対し
て上記暗号化関数を実行する時上記暗号化機構によって
使用されるべき暗号キーを上記M_PROTOメッセージが識
別する、上記(12)に記載の双方向データストリーム
伝送装置。 (15)M_PROTOメッセージが認証サーバを識別し、上
記データ・ブロックに含まれるデータに対して上記暗号
化関数を実行する時上記暗号化機構によって使用される
べき暗号キーを上記認証サーバが識別する、上記(1
2)に記載の双方向データ・ストリーム伝送装置。
(10) The user process exists in the user space, the device driver exists in the kernel space, the encryption mechanism has a combination function of encryption and copyin, and data is stored in the user space. The bidirectional data stream transmission device of (2), wherein the function controller controls encryption of the bidirectional data stream by executing the combination function when copied between the kernel spaces. (11) the device driver is in a kernel space, the bidirectional data stream includes a data block existing in the kernel space, and the encryption mechanism performs the above operation on the data block existing in the kernel space. The bidirectional data stream transmission device according to the above (2), which performs an encryption function. (12) 1 data block exists in the kernel space
The bidirectional data stream transmission device according to (11), wherein the transmission device is identified by one M_PROTO message and at least one M_DATA message. (13) The bidirectional data stream transmission device according to (12), wherein the M_PROTO message identifies an encryption algorithm to be used by the encryption mechanism when encrypting data included in the data block. (14) The bidirectional communication according to (12), wherein the M_PROTO message identifies an encryption key to be used by the encryption mechanism when performing the encryption function on data included in the data block. Data stream transmission device. (15) the M_PROTO message identifies an authentication server, and the authentication server identifies an encryption key to be used by the encryption mechanism when performing the encryption function on the data contained in the data block; The above (1
The bidirectional data stream transmission device according to 2).

【0093】(16)上記暗号化機構がソフトウェア関
数を含み、上記デバイス・ドライバと上記ストリーム・
ヘッドの間に接続され両者の間で双方向データストリー
ムを伝送しその双方向データストリームを上記暗号化機
構へ送るモジュールを更に備える、上記(1)に記載の
双方向データ・ストリーム伝送装置。 (17)上記暗号化機構がハードウェア暗号デバイスを
含み、上記ハードウェア暗号デバイスに接続され、上記
双方向データストリームに対する暗号化関数を実行する
ため上記ハードウェア暗号デバイスを制御する暗号化ド
ライバと、上記デバイス・ドライバと上記ストリーム・
ヘッドの間に配置され、上記暗号化ドライバに接続さ
れ、上記デバイス・ドライバと上記ストリーム・ヘッド
の間で上記双方向データストリームを伝送し、その双方
向データストリームを上記暗号化機構へ送るモジュール
と、を更に備える上記(1)に記載の双方向データスト
リーム伝送装置。 (18)上記双方向性データストリームが複数のメモリ
・ブロックに細分化され、基準カウントが開始値に初期
化され、上記基準カウントは上記複数のメモリ・ブロッ
クの第1のメモリ・ブロックが上記暗号化ドライバに送
られる時増分され、上記基準カウントは上記複数のメモ
リ・ブロックの第2のメモリ・ブロックが上記暗号化ド
ライバから送られる時減分され、上記基準カウントが上
記開始値と等しくならない限り上記モジュールがクロー
ズされない、上記(17)に記載の双方向データストリ
ーム伝送装置。
(16) The encryption mechanism includes a software function, and the device driver and the stream
The bidirectional data stream transmission device according to (1), further comprising a module connected between the heads for transmitting a bidirectional data stream between the two and transmitting the bidirectional data stream to the encryption mechanism. (17) an encryption driver, wherein the encryption mechanism includes a hardware encryption device, connected to the hardware encryption device, and controlling the hardware encryption device to execute an encryption function on the bidirectional data stream; The device driver and the stream
A module disposed between the heads and connected to the encryption driver for transmitting the bidirectional data stream between the device driver and the stream head and sending the bidirectional data stream to the encryption mechanism; The bidirectional data stream transmission device according to (1), further comprising: (18) The bidirectional data stream is subdivided into a plurality of memory blocks, a reference count is initialized to a start value, and the reference count is determined by a first memory block of the plurality of memory blocks. Incremented when sent to the encryption driver and the reference count is decremented when the second memory block of the plurality of memory blocks is sent from the encryption driver, unless the reference count is equal to the starting value. The bidirectional data stream transmission device according to (17), wherein the module is not closed.

【0094】(19)双方向データストリームが未暗号
化部分および既暗号化部分を持ち、入出力デバイスがカ
ーネル空間に存在するデバイス・ドライバに接続され、
ユーザ・プロセスがカーネル空間とユーザ空間の間のイ
ンターフェースを提供するストリーム・ヘッドに接続さ
れるように構成されたコンピュータ・システムにおい
て、上記双方向データストリームが上記ユーザ・プロセ
スと上記入出力デバイスの間を通過する際に該双方向デ
ータストリームに対し暗号関数を実行する方法であっ
て、上記ユーザ空間と上記カーネル空間の間で上記双方
向データストリームの上記未暗号化部分を通信するステ
ップと、上記双方向データストリームの上記未暗号化部
分と上記双方向データストリームの上記既暗号化部分の
間でデータを移動させる暗号化関数を実行するステップ
と、上記双方向データストリームの上記既暗号化部分を
上記デバイス・ドライバに通信するステップと、上記双
方向データストリームの上記既暗号化部分を上記デバイ
ス・ドライバから上記入出力デバイスに通信するステッ
プと、を含む暗号関数実行方法。 (20)上記双方向データストリームの上記未暗号化部
分と上記双方向データストリームの上記既暗号化部分の
間でデータを移動させる暗号化関数を実行する上記ステ
ップが、上記ストリーム・ヘッドの活動関数レジスタに
記憶されている関数ポインタに基づいて活動暗号化関数
を識別するサブステップと、上記双方向データストリー
ムの上記未暗号化部分と上記双方向データストリームの
上記既暗号化部分の間でデータを移動するため上記活動
暗号化関数を実行するサブステップと、を含む上記(1
9)に記載の暗号関数実行方法。
(19) The bidirectional data stream has an unencrypted part and an encrypted part, and the input / output device is connected to a device driver existing in the kernel space.
In a computer system wherein a user process is configured to be connected to a stream head providing an interface between kernel space and user space, the bi-directional data stream is transmitted between the user process and the input / output device. Communicating an unencrypted portion of the bidirectional data stream between the user space and the kernel space; Executing an encryption function that moves data between the unencrypted portion of the bidirectional data stream and the encrypted portion of the bidirectional data stream; Communicating to the device driver; and the bidirectional data stream. Cryptographic function execution method comprising the steps of communicating with the input and output devices the already encrypted part from the device driver. (20) the step of executing an encryption function that moves data between the unencrypted portion of the bidirectional data stream and the encrypted portion of the bidirectional data stream, the activity function of the stream head; Sub-step of identifying an active encryption function based on a function pointer stored in a register; and transmitting data between the unencrypted portion of the bidirectional data stream and the encrypted portion of the bidirectional data stream. Performing the activity encryption function to move.
A method for executing a cryptographic function according to 9).

【0095】(21)上記デバイス・ドライバの使用可
能関数レジスタに記憶される関数ポインタに基づいて使
用可能暗号化関数を識別するステップと、上記デバイス
・ドライバの使用可能関数レジスタに上記デバイス・ド
ライバの使用可能関数レジスタに記憶される関数ポイン
タを伝送して使用可能暗号化関数を活動暗号化関数にす
るステップと、を更に含む、上記(20)に記載の暗号
関数実行方法。 (22)使用可能関数を識別する関数ポインタを上記ユ
ーザ・プロセスから上記ストリーム・ヘッドの活動関数
レジスタへ伝送して、使用可能暗号化関数を活動暗号化
関数にするステップと、を更に含む、記(20)に記載
の暗号関数実行方法。 (23)ユーザ・プロセスに対して使用可能暗号化関数
を識別するスレッドを実行するステップと、使用可能暗
号化関数から1つの暗号化関数を選択するステップと、
選択された暗号化関数を識別する関数ポインタを上記ス
トリーム・ヘッドの活動関数レジスタに送り、上記選択
された暗号化関数を活動暗号化関数にするステップと、
を更に含む、上記(20)に記載の暗号関数実行方法。 (24)上記ユーザ空間と上記カーネル空間の間で上記
双方向データストリームの上記未暗号化部分を通信する
ステップおよび上記双方向データストリームの上記未暗
号化部分と上記双方向データストリームの上記既暗号化
部分の間でデータを移動させる暗号化関数を実行するス
テップが、ともに、ユーザ空間から双方向データストリ
ームの未暗号化部分を読み取り、該未暗号化部分を暗号
化して上記双方向データストリームの上記既暗号化部分
に移動させ、上記双方向データストリームの上記未暗号
化部分を上記カーネル空間に記憶する暗号化/copyin組
み合わせ関数を実行するサブステップを含む、上記(1
9)に記載の暗号関数実行方法。
(21) identifying an available encryption function based on a function pointer stored in the available function register of the device driver; and storing the available function register of the device driver in the available function register of the device driver. Transmitting the function pointer stored in the available function register to make the available encryption function an active encryption function. (22) transmitting a function pointer identifying an available function from the user process to the active function register of the stream head to make the available encryption function an active encryption function. The cryptographic function execution method according to (20). (23) executing a thread that identifies an available encryption function to a user process; and selecting one encryption function from the available encryption functions.
Sending a function pointer identifying the selected encryption function to an activity function register of the stream head, making the selected encryption function an active encryption function;
The cryptographic function execution method according to (20), further comprising: (24) communicating the unencrypted portion of the bidirectional data stream between the user space and the kernel space; and the encrypted portion of the bidirectional data stream and the unencrypted portion of the bidirectional data stream. Executing an encryption function to move data between encrypted portions, both reading an unencrypted portion of the bidirectional data stream from user space, encrypting the unencrypted portion, and encrypting the unencrypted portion of the bidirectional data stream. (1) moving to the encrypted portion and executing a combined encryption / copyin function that stores the unencrypted portion of the bidirectional data stream in the kernel space.
A method for executing a cryptographic function according to 9).

【0096】(25)上記双方向データストリームの未
暗号化部分がカーネル空間に存在する未暗号化データ・
ブロックを含み、上記未暗号化データ・ブロックは、1
つのM_PROTOメッセージおよび少くとも1つのM_DATAメ
ッセージによって識別され、上記双方向データストリー
ムの上記未暗号化部分と上記双方向データストリームの
上記既暗号化部分の間でデータを移動させる暗号化関数
を実行するステップが、上記双方向データストリームの
上記既暗号化部分の一部分である未暗号化データ・ブロ
ックを暗号化データ・ブロックへ暗号化するサブステッ
プを含む、上記(19)に記載の暗号関数実行方法。 (26)M_PROTOメッセージに基づいて上記未暗号化デ
ータ・ブロックを暗号化するために使用されるべき暗号
化アルゴリズムを識別するステップを更に含む、上記
(25)に記載の暗号関数実行方法。 (27)M_PROTOメッセージに基づいて上記未暗号化デ
ータ・ブロックを暗号化するために使用されるべき暗号
キーを識別するステップを更に含む、上記(25)に記
載の暗号関数実行方法。 (28)上記M_PROTOメッセージに基づいて認証サーバ
を識別し、該認証サーバに基づいて上記未暗号化データ
・ブロックを暗号化するために使用されるべき暗号キー
を識別するステップを更に含む、上記(25)に記載の
暗号関数実行方法。
(25) The unencrypted part of the bidirectional data stream is the unencrypted data that exists in the kernel space.
Block, wherein the unencrypted data block is 1
Performing an encryption function, identified by one M_PROTO message and at least one M_DATA message, for moving data between the unencrypted portion of the bidirectional data stream and the encrypted portion of the bidirectional data stream. The method of claim 19, wherein the step includes sub-encrypting an unencrypted data block that is part of the encrypted portion of the bidirectional data stream into an encrypted data block. . (26) The method according to (25), further comprising identifying an encryption algorithm to be used to encrypt the unencrypted data block based on the M_PROTO message. (27) The cryptographic function execution method according to (25), further comprising a step of identifying an encryption key to be used for encrypting the unencrypted data block based on the M_PROTO message. (28) further comprising: identifying an authentication server based on the M_PROTO message; and identifying an encryption key to be used to encrypt the unencrypted data block based on the authentication server. 25) The cryptographic function execution method according to 25).

【0097】(29)入出力デバイスがカーネル空間に
存在するデバイス・ドライバに接続され、ユーザ・プロ
セスが上記カーネル空間とユーザ空間の間のインターフ
ェースを提供するストリーム・ヘッドに接続されるよう
に構成されたコンピュータ・システムにおいて、データ
ストリームが上記ユーザ・プロセスと上記入出力デバイ
スの間を通過する際未暗号化データストリームを既暗号
化ストリームへと暗号化する方法であって、上記ユーザ
空間から未暗号化データストリームを読み取るステップ
と、上記未暗号化データストリームを既暗号化データス
トリームへ暗号化するステップと、上記既暗号化データ
ストリームを上記カーネル空間へ記憶するステップと、
上記既暗号化データストリームをデバイス・ドライバに
送るステップと、上記既暗号化データストリームを上記
デバイス・ドライバから上記入出力デバイスへ送るステ
ップと、を含む方法。
(29) An input / output device is connected to a device driver existing in the kernel space, and a user process is connected to a stream head for providing an interface between the kernel space and the user space. A method of encrypting an unencrypted data stream into an encrypted stream when the data stream passes between the user process and the input / output device, comprising: Reading the encrypted data stream; encrypting the unencrypted data stream into an encrypted data stream; storing the encrypted data stream in the kernel space;
A method comprising: sending the encrypted data stream to a device driver; and sending the encrypted data stream from the device driver to the input / output device.

【0098】(30)入出力デバイスがカーネル空間に
存在するデバイス・ドライバに接続され、ユーザ・プロ
セスが上記カーネル空間とユーザ空間の間のインターフ
ェースを提供するストリーム・ヘッドに接続され、モジ
ュールが上記ストリーム・ヘッドと上記ユーザ空間の間
のインターフェースを提供するように構成されたコンピ
ュータ・システムにおいて、データストリームが上記ユ
ーザ・プロセスと上記入出力デバイスの間を通過する際
未暗号化データストリームを既暗号化ストリームへと暗
号化する方法であって、未暗号化データストリームをユ
ーザ空間におけるユーザ・プロセスからカーネル空間に
おけるストリーム・ヘッドへ送信するステップと、上記
未暗号化データストリームを上記ストリーム・ヘッドか
ら上記モジュールへ送信するステップと、上記未暗号化
データストリームを暗号化関数へ渡すステップと、上記
暗号化関数から暗号化されたデータストリームを受け取
るステップと、既暗号化データストリームを上記デバイ
ス・ドライバに送信するステップと、上記既暗号化デー
タストリームを上記デバイス・ドライバから上記入出力
デバイスに送信するステップと、を含む方法。 (31)上記未暗号化データストリームが複数の未暗号
化メモリ・ブロックに細分化され、上記既暗号化データ
ストリームが、対応する複数の既暗号化データ・ブロッ
クに細分化されるように構成され、基準カウントを開始
値に初期化するステップと、上記複数の未暗号化メモリ
・ブロックの1つの未暗号化メモリ・ブロックが上記暗
号化関数に渡される時上記基準カウントを増分するステ
ップと、上記複数の既暗号化メモリ・ブロックの1つの
既暗号化メモリ・ブロックが上記暗号化関数から受け取
られる時上記基準カウントを減分するステップと、上記
基準カウントが上記開始値と等しくならない限り上記モ
ジュールのクローズ動作を禁止するステップと、を含む
上記(30)に記載の方法。 (32)コンピュータ・システム内のプロトコル・スタ
ックに暗号化関数を付加する方法であって、上記暗号化
関数を識別するステップと、上記暗号化関数が上記プロ
トコル・スタックを第1の方向で通過するデータを暗号
化し、上記プロトコル・スタックを第2の方向で通過す
るデータを復号することを可能にするため、上記暗号化
関数をストリーム・ヘッドに登録するステップと、を含
む方法。
(30) An input / output device is connected to a device driver existing in the kernel space, a user process is connected to a stream head providing an interface between the kernel space and the user space, and a module is connected to the stream head. A computer system configured to provide an interface between the head and the user space, wherein an unencrypted data stream is encrypted as the data stream passes between the user process and the input / output device; Transmitting an unencrypted data stream from a user process in user space to a stream head in kernel space; and transmitting the unencrypted data stream from the stream head to the module. Transmitting; passing the unencrypted data stream to an encryption function; receiving an encrypted data stream from the encryption function; and transmitting the encrypted data stream to the device driver And transmitting the encrypted data stream from the device driver to the input / output device. (31) The unencrypted data stream is subdivided into a plurality of unencrypted memory blocks, and the encrypted data stream is subdivided into a corresponding plurality of encrypted data blocks. Initializing a reference count to a starting value; incrementing the reference count when an unencrypted memory block of the plurality of unencrypted memory blocks is passed to the encryption function; Decrementing the reference count when one encrypted memory block of the plurality of encrypted memory blocks is received from the encryption function; and deactivating the module unless the reference count is equal to the starting value. Prohibiting the closing operation. (32) A method for adding an encryption function to a protocol stack in a computer system, the method including the step of identifying the encryption function, and the encryption function passing through the protocol stack in a first direction. Registering the encryption function with a stream head to enable encrypting data and decrypting data passing through the protocol stack in a second direction.

【0099】(33)コンピュータ・システムにおいて
ユーザ・プロセス、モジュールおよびデバイス・ドライ
バの間の双方向性データ経路を提供するデータ構造であ
って、上記デバイス・ドライバはシステム・カーネルに
常駐して該カーネルとデバイの間のデータを転送する該
デバイスを制御し、ユーザ・プロセスによって書き込ま
れるデータは上記デバイス・ドライバからデバイス方向
へ流れ、上記ドライバによって受け取られるデータはユ
ーザ・プロセスによって受け取られるようにデバイスか
らデバイス・ドライバ方向へ流れるように構成され、通
常関数と、暗号化関数と、上記通常関数を上記暗号化関
数と置き換える手段と、を備えるデータ構造。 (34)上記通常関数がデータ受け渡し関数である、上
記(33)に記載のデータ構造。
(33) A data structure for providing a bidirectional data path between a user process, a module, and a device driver in a computer system, wherein the device driver is resident in a system kernel. And the device that transfers data between the device and the device, data written by the user process flows from the device driver in the device direction, and data received by the driver is transmitted from the device to the device so that the data is received by the user process. A data structure configured to flow in the direction of a device driver and comprising a normal function, an encryption function, and means for replacing the normal function with the encryption function. (34) The data structure according to (33), wherein the normal function is a data transfer function.

【0100】(35)双方向データストリームがデバイ
スとユーザ・プロセスの間を流れる際該双方向データス
トリームを暗号化し復号する機能を持つコンピュータ読
取可能プログラム・コードを保持するプログラム記憶媒
体であって、上記デバイスに接続されるデバイス・ドラ
イバが上記双方向データストリームを上記デバイスに転
送するようにさせるコンピュータ読取可能プログラム・
コードの第1のセグメントと、上記デバイスと上記ユー
ザ・プロセスの間に接続されるストリーム・ヘッドが上
記双方向データストリームを上記ユーザ・プロセスと上
記デバイス・ドライバの間で転送するようにさせるコン
ピュータ読取可能プログラム・コードの第2のセグメン
トと、暗号化機構が、第1の方向で上記双方向データス
トリームを通過するデータを暗号化し、第2の方向で上
記双方向データストリームを通過するデータを復号する
ようようにさせるコンピュータ読取可能プログラム・コ
ードの第3のセグメントと、を含むプログラム記憶媒
体。
(35) A program storage medium holding computer readable program code having a function of encrypting and decrypting an interactive data stream when the interactive data stream flows between a device and a user process, A computer readable program for causing a device driver connected to the device to transfer the bidirectional data stream to the device;
Computer-readable means for causing a first segment of code and a stream head connected between the device and the user process to transfer the bidirectional data stream between the user process and the device driver. A second segment of the enabled program code and an encryption mechanism encrypts data passing through the bidirectional data stream in a first direction and decrypts data passing through the bidirectional data stream in a second direction. And a third segment of computer readable program code.

【0101】(36)未暗号化部分および既暗号化部分
を持つ双方向データストリームに対して暗号化関数を実
行するためコンピュータによって実行される命令プログ
ラムを含むコンピュータ読取可能記憶媒体であって、上
記データストリームがユーザ・プロセスと入出力デバイ
スの間を流れ、上記入出力デバイスがカーネル空間に存
在するデバイス・ドライバに接続され、上記ユーザ・プ
ロセスが上記カーネル空間およびユーザ空間の間のイン
ターフェースを提供するストリーム・ヘッドに接続され
るように構成されていて、上記命令プログラムが、上記
双方向データストリームの未暗号化部分を上記ユーザ空
間から上記カーネル空間へ伝送するステップ、暗号化関
数を実行して、上記双方向データストリームの未暗号化
部分から上記双方向データストリームの既暗号化部分へ
データを移動させるステップ、上記双方向データストリ
ームの既暗号化部分を上記入出力デバイスへ伝送するス
テップ、および上記双方向データストリームの既暗号化
部分を上記入出力デバイスから伝送するステップを含
む、コンピュータ読取可能記憶媒体。
(36) A computer-readable storage medium including an instruction program to be executed by a computer to execute an encryption function on a bidirectional data stream having an unencrypted part and an encrypted part, A data stream flows between a user process and an input / output device, the input / output device is connected to a device driver residing in kernel space, and the user process provides an interface between the kernel space and user space. Wherein the instruction program is configured to be coupled to a stream head, the instruction program transmitting an unencrypted portion of the bidirectional data stream from the user space to the kernel space, performing an encryption function; From the unencrypted part of the bidirectional data stream Moving data to an encrypted portion of the data stream, transmitting the encrypted portion of the bidirectional data stream to the input / output device, and transferring the encrypted portion of the bidirectional data stream to the input / output device Computer readable storage medium comprising transmitting from a computer.

【0102】[0102]

【発明の効果】本発明に従って、プロトコル・スタック
に暗号機能を含むことによってデータのコピーおよび移
動が最小限にとどめられる。また、暗号化および復号が
カーネル空間で実行されるので、ユーザ空間で制御する
従来技術に比較して、悪意ある攻撃に対する暗号プロセ
スの保護が強化される。更に、本発明を使用することに
よって、データはアプリケーションではなくカーネルに
よって与えられるキーを使用して暗号化される。これ
は、暗号化されたデータ伝送を行う際のユーザ・アプリ
ケーションの役割を減少させ、それによってセキュリテ
ィが増加する結果となる。更にまた、本発明はプロトコ
ル・スタックを通過するいかなる情報をも暗号化し復号
するように構成することができるので、ユーザ・アプリ
ケーションが暗号化をサポートする必要はない。
In accordance with the present invention, copying and moving data is minimized by including cryptographic functions in the protocol stack. Also, since encryption and decryption are performed in kernel space, the protection of the cryptographic process against malicious attacks is enhanced compared to the prior art in which control is performed in user space. Further, by using the present invention, data is encrypted using a key provided by the kernel rather than the application. This reduces the role of the user application in performing the encrypted data transmission, which results in increased security. Furthermore, since the present invention can be configured to encrypt and decrypt any information passing through the protocol stack, there is no need for the user application to support encryption.

【図面の簡単な説明】[Brief description of the drawings]

【図1】従来技術のプロトコル・スタックおよび従来技
術の安全保護ソケット・レイヤ暗号パッケージを有する
従来技術のコンピュータ・システムのブロック図であ
る。
FIG. 1 is a block diagram of a prior art computer system having a prior art protocol stack and a prior art secure socket layer cryptographic package.

【図2】STREAMS型モジュールおよびドライバを
使用してデータの暗号化および復号を制御する本発明に
従ったコンピュータ・システムの1つの実施形態を示す
ブロック図である。
FIG. 2 is a block diagram illustrating one embodiment of a computer system in accordance with the present invention that controls data encryption and decryption using STREAMS-type modules and drivers.

【図3】STREAMS型暗号化マルチプレクサを使用
して暗号化モジュールまたは暗号化ドライバへデータを
送信する本発明に従ったコンピュータ・システムの1つ
の実施形態を示すブロック図である。
FIG. 3 is a block diagram illustrating one embodiment of a computer system according to the present invention for transmitting data to an encryption module or driver using a STREAMS-type encryption multiplexer.

【図4】ストリーム・ヘッドに登録された機能によって
暗号化技術が制御されるコンピュータ・システムのブロ
ック図である。
FIG. 4 is a block diagram of a computer system in which an encryption technique is controlled by a function registered in a stream head.

【図5】暗号化技術がプロトコル・スタックのレイヤと
レイヤの間に挿入される本発明に従ったコンピュータ・
システムの1つの実施形態を示すブロック図である。
FIG. 5 shows a computer according to the invention in which encryption technology is inserted between the layers of the protocol stack.
FIG. 1 is a block diagram illustrating one embodiment of a system.

【図6】図5に示されたコンピュータ・システムのIP
レーヤとDLPIレーヤの間に挿入された暗号化ドライ
バを示すブロック図である。
6 is an IP of the computer system shown in FIG.
FIG. 3 is a block diagram showing an encryption driver inserted between a layer and a DLPI layer.

【符号の説明】[Explanation of symbols]

10、30、100、120、150 コンピュータ
・システム 11、32、102、122、152 ユーザ空間 12、36、106、126、156 ユーザ・アプ
リケーション 14、38、108、128、158 ソケット 16 安全保護ソケ
ット 18、112 暗号化機構
(モジュール) 20、34、104、124、154 カーネル空間 22、40、110、130、160 ストリーム・
ヘッド 24、44、114、134、162 TCP 26、46、116、136、164 IP 28、48、118、138、166 DLPI 42、168 暗号化技術 50 レジスタ 52 コントローラ 54 関数ポインタ 132 暗号化マルチプレクサ 140 暗号化ドライバ
10, 30, 100, 120, 150 Computer system 11, 32, 102, 122, 152 User space 12, 36, 106, 126, 156 User application 14, 38, 108, 128, 158 socket 16 Security socket 18 , 112 encryption mechanism
(Module) 20, 34, 104, 124, 154 Kernel space 22, 40, 110, 130, 160 streams
Heads 24, 44, 114, 134, 162 TCP 26, 46, 116, 136, 164 IP 28, 48, 118, 138, 166 DLPI 42, 168 Encryption technology 50 Register 52 Controller 54 Function pointer 132 Encryption multiplexer 140 Encryption Driver

Claims (1)

【特許請求の範囲】[Claims] 【請求項1】コンピュータ・システム内に配置され、デ
バイスとユーザ・プロセスの間で双方向データストリー
ムを伝送する装置であって、 上記デバイスに接続され、上記双方向データストリーム
を上記デバイスへ伝送するデバイス・ドライバと、 上記デバイスと上記ユーザ・プロセスの間に配置され、
上記ユーザ・プロセスと上記デバイス・ドライバの間で
上記双方向データストリームを伝送するストリーム・ヘ
ッドと、 上記双方向性データストリームの形態で伝送されるデー
タに関して暗号化関数を実行する暗号化機構と、 を備える双方向データストリーム伝送装置。
1. An apparatus disposed within a computer system for transmitting a bidirectional data stream between a device and a user process, the apparatus being connected to the device and transmitting the bidirectional data stream to the device. A device driver, located between the device and the user process,
A stream head for transmitting the bidirectional data stream between the user process and the device driver; an encryption mechanism for performing an encryption function on data transmitted in the form of the bidirectional data stream; A bidirectional data stream transmission device comprising:
JP9265227A 1996-10-16 1997-09-30 Bidirectional data stream transmitting device Pending JPH10190649A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US732,176 1996-10-16
US08/732,176 US6070198A (en) 1995-10-19 1996-10-16 Encryption with a streams-based protocol stack

Publications (1)

Publication Number Publication Date
JPH10190649A true JPH10190649A (en) 1998-07-21

Family

ID=24942487

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9265227A Pending JPH10190649A (en) 1996-10-16 1997-09-30 Bidirectional data stream transmitting device

Country Status (1)

Country Link
JP (1) JPH10190649A (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007183738A (en) * 2006-01-05 2007-07-19 Sony Corp Information processor, processing method, and program
JP2009194559A (en) * 2008-02-13 2009-08-27 Panasonic Corp Encryption processing method, and encryption processor
JPWO2014061334A1 (en) * 2012-10-17 2016-09-05 株式会社ソニー・インタラクティブエンタテインメント Information processing device
JP2018511956A (en) * 2015-03-25 2018-04-26 インテル・コーポレーション Technology to enhance data encryption using secure enclaves
JP2022500889A (en) * 2018-07-29 2022-01-04 ヌーヴェン コーポレイションNouvenn Corporation Data communication network security method
CN117254976A (en) * 2023-11-15 2023-12-19 杭州海康威视数字技术股份有限公司 National standard IPsec VPN realization method, device and system based on VPP and electronic equipment

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007183738A (en) * 2006-01-05 2007-07-19 Sony Corp Information processor, processing method, and program
JP4506676B2 (en) * 2006-01-05 2010-07-21 ソニー株式会社 Information processing apparatus and method, and program
JP2009194559A (en) * 2008-02-13 2009-08-27 Panasonic Corp Encryption processing method, and encryption processor
JPWO2014061334A1 (en) * 2012-10-17 2016-09-05 株式会社ソニー・インタラクティブエンタテインメント Information processing device
US9449179B2 (en) 2012-10-17 2016-09-20 Sony Corporation Information processor
JP2018511956A (en) * 2015-03-25 2018-04-26 インテル・コーポレーション Technology to enhance data encryption using secure enclaves
JP2022500889A (en) * 2018-07-29 2022-01-04 ヌーヴェン コーポレイションNouvenn Corporation Data communication network security method
CN117254976A (en) * 2023-11-15 2023-12-19 杭州海康威视数字技术股份有限公司 National standard IPsec VPN realization method, device and system based on VPP and electronic equipment
CN117254976B (en) * 2023-11-15 2024-03-19 杭州海康威视数字技术股份有限公司 National standard IPsec VPN realization method, device and system based on VPP and electronic equipment

Similar Documents

Publication Publication Date Title
US6070198A (en) Encryption with a streams-based protocol stack
US9361163B2 (en) Managing containerized applications on a mobile device while bypassing operating system implemented inter process communication
US10762204B2 (en) Managing containerized applications
US8412854B2 (en) Secure communication port redirector
KR101712080B1 (en) Key refresh between trusted units
US7475257B2 (en) System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data
US6101255A (en) Programmable cryptographic processing system and method
JP4298971B2 (en) Interface for security coprocessor
KR100959748B1 (en) A method for processing programs and data associated with the programs on a computer processor
US8266338B2 (en) Data flow control within and between DMA channels
TWI244288B (en) Network interface and protocol
US20020141424A1 (en) Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism
US20020071450A1 (en) Host-fabric adapter having bandwidth-optimizing, area-minimal, vertical sliced memory architecture and method of connecting a host system to a channel-based switched fabric in a data network
US7181541B1 (en) Host-fabric adapter having hardware assist architecture and method of connecting a host system to a channel-based switched fabric in a data network
Foster et al. Managing security in high‐performance distributed computations
JP5107570B2 (en) Network architecture, method, and computer program for network protocol stack isolation
Keromytis et al. The design of the OpenBSD cryptographic framework
JPH10190649A (en) Bidirectional data stream transmitting device
US7287276B2 (en) Coordinated network initiator management that avoids security conflicts
JP3628514B2 (en) Data transmission / reception method between computers
JP2004328359A (en) Packet processor
JP2003345664A (en) Transmission device, data processing system, and data processing program
US7895344B2 (en) Method and apparatus for remote management
Salz tesla: A transparent, extensible session-layer framework for end-to-end network services
US20150095635A1 (en) Secure Communication Port Redirector

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040518

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060725

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070117