JP6908914B2 - Data transmitters, data receivers, communication systems, and programs - Google Patents

Data transmitters, data receivers, communication systems, and programs Download PDF

Info

Publication number
JP6908914B2
JP6908914B2 JP2017033847A JP2017033847A JP6908914B2 JP 6908914 B2 JP6908914 B2 JP 6908914B2 JP 2017033847 A JP2017033847 A JP 2017033847A JP 2017033847 A JP2017033847 A JP 2017033847A JP 6908914 B2 JP6908914 B2 JP 6908914B2
Authority
JP
Japan
Prior art keywords
data
unit length
scramble
unit
processing
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.)
Active
Application number
JP2017033847A
Other languages
Japanese (ja)
Other versions
JP2018139386A (en
Inventor
聰彦 加藤
聰彦 加藤
鈴木 信雄
信雄 鈴木
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.)
ATR Advanced Telecommunications Research Institute International
Original Assignee
ATR Advanced Telecommunications Research Institute International
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
Application filed by ATR Advanced Telecommunications Research Institute International filed Critical ATR Advanced Telecommunications Research Institute International
Priority to JP2017033847A priority Critical patent/JP6908914B2/en
Publication of JP2018139386A publication Critical patent/JP2018139386A/en
Application granted granted Critical
Publication of JP6908914B2 publication Critical patent/JP6908914B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、データを複数経路に分散させて送受信することで、セキュアな通信を実現するための技術に関する。 The present invention relates to a technique for realizing secure communication by distributing and transmitting data over a plurality of routes.

インターネット上の通信において、様々な脅威が指摘されている。そのような脅威の一つに転送データの盗聴がある。例えば、公衆無線LANによる通信では、アクセスポイントと端末との間の無線通信において、暗号化されずに通信が実行されることが多い。このため、通信中にユーザ識別子やパスワードといった重要な個人情報が盗まれたり、通信内容を傍受されたりする危険性がある。 Various threats have been pointed out in communication on the Internet. One such threat is eavesdropping of transferred data. For example, in communication by public wireless LAN, in wireless communication between an access point and a terminal, communication is often executed without encryption. Therefore, there is a risk that important personal information such as a user identifier and a password may be stolen or the communication contents may be intercepted during communication.

このような状況に対応するために、サーバとクライアントとの間の通信において、エンド・ツ・エンド(end−to−end)で暗号化を行うTLS(Transport Layer Security)が広く利用されているが、電子メールやVoIPなどの通信には適用されない場合が多い。 In order to deal with such a situation, TLS (Transport Layer Security), which performs end-to-end encryption in communication between a server and a client, is widely used. In many cases, it does not apply to communications such as e-mail and VoIP.

一方、近年の端末は、スマートフォンやタブレットに代表されるように、複数の通信インターフェースを搭載するものが広く普及している。そして、このような端末を有効に利用するために、1つのTCP通信を、異なるインターフェースを用いた複数のパスを介して実現するマルチパスTCPが用いられるようになってきている。 On the other hand, in recent years, terminals equipped with a plurality of communication interfaces, such as smartphones and tablets, have become widespread. Then, in order to effectively use such a terminal, multipath TCP that realizes one TCP communication via a plurality of paths using different interfaces has been used.

このような複数のパスを介して実現される通信において、通信中の転送データを複数のパスに分散させることにより、1つのパスの通信を盗聴しただけでは、全体の通信を把握することができないようにするための技術の研究開発がなされている。このような技術では、データを暗号化するのではなく、データを複数のパスに分散させることにより、秘匿性を高めることを目的としている。このため、このような技術では、事前暗号鍵の登録や、証明書の準備などが不要であるという長所を有する。 In the communication realized through such a plurality of paths, it is not possible to grasp the entire communication only by eavesdropping the communication of one path by distributing the transfer data during communication to the plurality of paths. Research and development of technology to do so is being done. Such a technique aims to improve confidentiality by distributing the data in a plurality of paths instead of encrypting the data. Therefore, such a technique has an advantage that it is not necessary to register a pre-encryption key or prepare a certificate.

このような技術の開発は、複数の無線アクセス網を積極的に利用する次世代(5G)移動通信網において、さらに重要となると考えられる。 The development of such technology is considered to be even more important in the next-generation (5G) mobile communication network that actively uses a plurality of radio access networks.

従来からも同様の技術の研究開発が行われている。 Research and development of similar technology has been carried out in the past.

例えば、非特許文献1には、TCPを用いた1つのデータ転送を、複数の経路の通信に分散させることにより、データの全体像を把握できなくするという方法の開示がある。非特許文献1に開示されている方法では、データ自身の秘匿性が保証されないため、ある経路を経由した通信が盗聴された場合、そのデータは解読されてしまう可能性がある。盗聴されたデータに重要な個人情報等が含まれていた場合、当該重要な個人情報等が流出しまう恐れがあり、その流出した情報をもとにして、不正な攻撃を受けるリスクが発生する。 For example, Non-Patent Document 1 discloses a method in which one data transfer using TCP is distributed over communication of a plurality of routes so that the entire image of data cannot be grasped. Since the method disclosed in Non-Patent Document 1 does not guarantee the confidentiality of the data itself, if the communication via a certain route is eavesdropped, the data may be deciphered. If the eavesdropped data contains important personal information, etc., there is a risk that the important personal information, etc. will be leaked, and there is a risk of being attacked illegally based on the leaked information.

また、秘密分散法と呼ばれる技術も研究されている。秘密分散法では、以下のようにして処理が実行される。
(1)ある秘密情報をn個(nは、2以上の自然数)に分割し、分割された秘密情報は、n人のユーザに分配される。
(2)分割されたn個の秘密情報のうち、k個の秘密情報が集められた場合(n人のユーザのうちk人のユーザから分割された秘密情報を集められた場合)、元の秘密情報が復元される。
A technique called the secret sharing method is also being researched. In the secret sharing method, the process is executed as follows.
(1) A certain secret information is divided into n pieces (n is a natural number of 2 or more), and the divided secret information is distributed to n users.
(2) When k secret information is collected out of n divided secret information (when divided secret information is collected from k users out of n users), the original Confidential information is restored.

この秘密分散法は、暗号鍵を複数のユーザに分割して持たせる場合などに使用される。 This secret sharing method is used when the encryption key is divided and held by a plurality of users.

しかしながら、秘密分散法では、転送するデータがn倍となるため、効率が悪い。 However, the secret sharing method is inefficient because the amount of data to be transferred is n times larger.

M. Nacher, et al., “Evaluation of the Impact of Multipath Data Dispersion for Anonymous TCP Connections,” in Proc. International Conference on Emerging Security Information, Systems and Technologies, pp. 24-29, Oct. 2007.M. Nacher, et al., “Evaluation of the Impact of Multipath Data Dispersion for Anonymous TCP Connections,” in Proc. International Conference on Emerging Security Information, Systems and Technologies, pp. 24-29, Oct. 2007.

上記のように、従来技術では、複数のパスを用いた通信において、転送するデータ量を増加させることなく、かつ、セキュリティを確保することが困難である。 As described above, in the prior art, it is difficult to ensure security without increasing the amount of data to be transferred in communication using a plurality of paths.

そこで、本発明は、上記問題点に鑑み、複数のパスを用いた通信において、転送するデータ量を増加させることなく、かつ、セキュリティを確保することができるデータ送信装置、データ受信装置、通信システム、および、プログラムを実現することを目的とする。 Therefore, in view of the above problems, the present invention has a data transmitting device, a data receiving device, and a communication system capable of ensuring security without increasing the amount of data to be transferred in communication using a plurality of paths. , And the purpose is to realize the program.

上記課題を解決するために、第1の発明は、データ受信装置に対して、複数の通信経路を用いてデータを送信する機能を有するデータ送信装置であって、スクランブル用キーデータ生成部と、スクランブルデータ生成部と、サブフローデータ生成部と、を備える。 In order to solve the above problems, the first invention is a data transmission device having a function of transmitting data to a data reception device using a plurality of communication paths, and includes a scramble key data generation unit and a scramble key data generation unit. It includes a scramble data generation unit and a subflow data generation unit.

スクランブル用キーデータ生成部は、送信データを所定の単位長のデータに区分した単位長データのうちの最初の単位長データである単位長送信データをスクランブル化するためのスクランブル処理用キーデータを取得する。そして、スクランブル用キーデータ生成部は、(1)1回目の処理では、自装置を識別するためのデータであるキーデータから導出された初期値データを所定の単位長のデータに区分した単位長データである単位長初期値データを用いて、所定の論理演算を行うことでスクランブル化処理のためのスクランブル処理用キーデータを取得し、(2)2回目以降の処理では、単位長初期値データ、および、スクランブル化が完了した単位長送信データの両方、または、スクランブル化が完了した単位長送信データのみを用いて、所定の論理演算を行うことでスクランブル処理用キーデータを取得する。 The scramble key data generation unit acquires scramble processing key data for scrambling the unit length transmission data, which is the first unit length data of the unit length data obtained by dividing the transmission data into data having a predetermined unit length. do. Then, the scramble key data generation unit (1) in the first process, divides the initial value data derived from the key data, which is the data for identifying the own device, into data having a predetermined unit length. Using the unit length initial value data, which is the data, the key data for scramble processing for scrambling processing is acquired by performing a predetermined logical operation. (2) In the second and subsequent processing, the unit length initial value data , And both the scrambled unit length transmission data, or only the scrambled unit length transmission data, and the scramble processing key data is acquired by performing a predetermined logical operation.

スクランブルデータ生成部は、スクランブル用キーデータ生成部により取得されたスクランブル処理用キーデータと、単位長送信データとを用いて、所定の論理演算を行うことで、スクランブル化した単位長データであるスクランブル化単位長送信データを取得するとともに、取得したスクランブル化単位長送信データを複数まとめることで、1つのスクランブル化送信データを生成する。 The scramble data generation unit is scrambled unit length data by performing a predetermined logical operation using the scramble processing key data acquired by the scramble key data generation unit and the unit length transmission data. A single scrambled transmission data is generated by acquiring the scrambled unit length transmission data and collecting a plurality of the acquired scrambled unit length transmission data.

サブフローデータ生成部は、スクランブルデータ生成部により生成されたスクランブル化送信データから、複数の経路を用いて送信するためのサブフローデータを生成する。 The subflow data generation unit generates subflow data for transmission using a plurality of routes from the scrambled transmission data generated by the scramble data generation unit.

このデータ送信装置では、上記処理を実行することにより、スクランブル化した送信データを取得することができ、取得したスクランブル化送信データを複数の経路(例えば、TCPサブフロー)を用いて送信することができる。 In this data transmission device, scrambled transmission data can be acquired by executing the above processing, and the acquired scrambled transmission data can be transmitted using a plurality of routes (for example, TCP subflow). ..

つまり、このデータ送信装置によりスクランブル化処理された送信データは、複数の経路(例えば、TCPサブフロー)により、分散して、送信側から受信側に送信されるため、通信経路の途中で、一部のデータが盗聴、傍受されたとしても、元のデータに戻すことができない。 That is, the transmission data scrambled by this data transmission device is distributed by a plurality of routes (for example, TCP subflow) and transmitted from the transmission side to the reception side, so that a part of the transmission data is transmitted in the middle of the communication path. Even if the data is eavesdropped or intercepted, the original data cannot be restored.

また、このデータ送信装置によりスクランブル化された送信データは、スクランブル前の送信データと同じ長さであり、転送するデータ量を増加させることがない。 Further, the transmission data scrambled by this data transmission device has the same length as the transmission data before scrambling, and does not increase the amount of data to be transferred.

このように、このデータ送信装置を用いることで、複数の通信経路を用いた通信において、転送するデータ量を増加させることなく、かつ、セキュリティを確保することができる。 In this way, by using this data transmission device, it is possible to ensure security without increasing the amount of data to be transferred in communication using a plurality of communication paths.

なお、データ送信装置は、受信機能を備えるものであってもよい。 The data transmission device may have a reception function.

第2の発明は、第1の発明であって、所定の論理演算は、排他的論理和演算である。 The second invention is the first invention, and the predetermined logical operation is an exclusive OR operation.

これにより、このデータ送信装置では、排他的論理和演算により、送信データのスクランブル化処理を実行することができる。 As a result, in this data transmission device, the scramble processing of the transmission data can be executed by the exclusive OR operation.

第3の発明は、第1または第2の発明であって、単位長データは、1バイトのデータである。 The third invention is the first or second invention, and the unit length data is 1 byte data.

これにより、このデータ送信装置では、1バイト単位での論理演算(例えば、排他的論理和演算)により、送信データのスクランブル化処理を実行することができる。 Thereby, in this data transmission device, the scramble processing of the transmission data can be executed by the logical operation in 1-byte units (for example, the exclusive OR operation).

第4の発明は、第1から第3のいずれかの発明であって、初期値データは、自装置を識別するためのデータであるキーデータをキーデータkeyAとしたとき、
MsgDig=SHA1(keyA)
IDSN=Lower_8bytes(MsgDig)
SHA1(x):xに対するSHA−1によるメッセージダイジェストを取得する関数。
Lower_8bytes(x):xの下位8バイトを取得する関数。
により取得されたIDSN値である。
The fourth invention is any one of the first to third inventions, and the initial value data is when the key data which is the data for identifying the own device is the key data keyA.
MsgDig = SHA1 (keyA)
IDSN = Lower_8bytes (MsgDig)
SHA1 (x): A function that obtains a message digest by SHA-1 for x.
Lower_8bytes (x): A function to get the lower 8 bytes of x.
Is the IDSN value obtained by.

これにより、このデータ送信装置では、初期値データにIDSN値を用いることができる。そして、IDSN値は、自装置のキーデータから導出するため、送信側と受信側との間で、例えば、コネクション確立時に、キーデータを送信しておけば、スクランブル処理、デスクランブル処理のための初期値を、別途、送信側から受信側に送信する必要がなくなる。 As a result, in this data transmission device, the IDSN value can be used as the initial value data. Then, since the IDSN value is derived from the key data of the own device, if the key data is transmitted between the transmitting side and the receiving side, for example, at the time of establishing a connection, for scrambling processing and descramble processing. It is not necessary to separately transmit the initial value from the transmitting side to the receiving side.

第5の発明は、第1から第4のいずれかの発明であって、MPTCPを用いた通信を実行する機能を有し、MPTCPコネクションの確立処理を実行するMPTCPコネクション確立処理部をさらに備える。 A fifth invention is any one of the first to fourth inventions, further including an MPTCP connection establishment processing unit that has a function of executing communication using MPTCP and executes an MPTCP connection establishment process.

MPTCPコネクション確立処理部は、MPTCPコネクションの確立処理時において、MP_CAPABLEオプションの所定のフラグを所定の値にセットしたSYNセグメントを生成し、当該SYNセグメントをデータ受信装置に送信することで、スクランブル機能を用いたデータ転送を行うことを、データ受信装置に通知する。 The MPTCP connection establishment processing unit generates a SYN segment in which a predetermined flag of the MP_CAPABLE option is set to a predetermined value at the time of the MPTCP connection establishment process, and transmits the SYN segment to the data receiving device to provide a scramble function. Notify the data receiving device that the used data transfer will be performed.

これにより、このデータ送信装置では、MPTCPコネクションの確立処理時にスクランブル機能を用いたデータ転送を行うことを、データ受信装置に通知することができる。したがって、別途、スクランブル機能を用いたデータ転送を行うことを、送信側から受信側に通知するための通信が不要となり、その結果、データ通信量を増加させることはない。 As a result, the data transmitting device can notify the data receiving device that the data is transferred using the scramble function at the time of establishing the MPTCP connection. Therefore, it is not necessary to separately communicate from the transmitting side to the receiving side to notify the data transfer using the scramble function, and as a result, the amount of data communication is not increased.

第6の発明は、データ送信装置が複数の通信経路を用いて送信したデータを受信する機能を有するデータ受信装置であって、MPTCPデータ取得部と、スクランブル用キーデータ生成部と、受信データ取得部と、を備える。 A sixth invention is a data receiving device having a function of receiving data transmitted by a data transmitting device using a plurality of communication paths, and is an MPTCP data acquisition unit, a scramble key data generation unit, and reception data acquisition. It has a part and.

MPTCPデータ取得部は、データ送信装置から、複数の通信経路により、受信した複数のサブフローデータを、当該サブフローデータに含まれるデータシーケンス番号の順に並べる処理を実行することで、複数のサブフローデータを1つにまとめた受信データを取得する。 The MPTCP data acquisition unit executes a process of arranging a plurality of subflow data received from the data transmission device in the order of the data sequence number included in the subflow data by a plurality of communication paths, thereby arranging the plurality of subflow data as one. Acquire the received data collected together.

スクランブル用キーデータ生成部は、MPTCPデータ取得部により取得された受信データを所定の単位長のデータに区分した単位長データのうちの最初の単位長データである単位長受信スクランブルデータをデスクランブル化するためのスクランブル処理用キーデータを取得する。そして、スクランブル用キーデータ生成部は、(1)1回目の処理では、通信相手であるデータ送信装置を識別するためのデータであるキーデータから導出された初期値データを所定の単位長のデータに区分した単位長データである単位長初期値データを用いて、所定の論理演算を行うことでデスクランブル化処理のためのスクランブル処理用キーデータを取得し、(2)2回目以降の処理では、単位長初期値データ、および、デスクランブル化が完了した単位長受信データの両方、または、デスクランブル化が完了した単位長受信データのみを用いて、所定の論理演算を行うことでスクランブル処理用キーデータを取得する。 The scramble key data generation unit descrambles the unit length reception scramble data, which is the first unit length data of the unit length data obtained by dividing the reception data acquired by the MPTCP data acquisition unit into data having a predetermined unit length. Acquire key data for scramble processing to do so. Then, the scramble key data generation unit (1) in the first process, uses the initial value data derived from the key data, which is the data for identifying the data transmission device as the communication partner, as the data having a predetermined unit length. Using the unit length initial value data, which is the unit length data divided into, the key data for scrambling processing for descramble processing is acquired by performing a predetermined logical operation, and (2) in the second and subsequent processing. , Unit length initial value data and unit length received data that has been descrambled, or only unit length received data that has been descrambled is used for scramble processing by performing a predetermined logical operation. Get key data.

受信データ取得部は、スクランブル用キーデータ生成部により取得されたスクランブル処理用キーデータと、単位長受信スクランブルデータとを用いて、所定の論理演算を行うことで、デスクランブル化した単位長データである単位長受信データを取得するとともに、取得した単位長受信データを複数まとめることで、1つのデスクランブル化された受信データを取得する。 The reception data acquisition unit is a descrambled unit length data by performing a predetermined logical operation using the scramble processing key data acquired by the scramble key data generation unit and the unit length reception scramble data. By acquiring a certain unit length reception data and collecting a plurality of acquired unit length reception data, one descrambled reception data is acquired.

なお、データ受信装置は、データ送信機能を有していてもよい。 The data receiving device may have a data transmitting function.

このデータ受信装置では、上記処理を実行することにより、データ送信装置から、複数の経路(例えば、TCPサブフロー)を用いて送信されてきた、スクランブル化データをデスクランブルして、受信データを取得することができる。 In this data receiving device, by executing the above processing, the scrambled data transmitted from the data transmitting device using a plurality of routes (for example, TCP subflow) is descrambled and the received data is acquired. be able to.

つまり、このデータ受信装置で受信するデータは、データ送信装置により、スクランブル化処理された送信データであり、当該送信データは、複数の経路(例えば、TCPサブフロー)により、分散して、送信側から受信側に送信される。このため、データ送信装置から送信されるデータは、通信経路の途中で、一部のデータが盗聴、傍受されたとしても、元のデータに戻すことができない。 That is, the data received by this data receiving device is the transmission data scrambled by the data transmitting device, and the transmitted data is distributed by a plurality of routes (for example, TCP subflow) from the transmitting side. It is sent to the receiving side. Therefore, the data transmitted from the data transmission device cannot be restored to the original data even if some data is eavesdropped or intercepted in the middle of the communication path.

したがって、このデータ受信装置をデータ送信装置とともに用いることで、複数の通信経路を用いた通信において、転送するデータ量を増加させることなく、かつ、セキュリティを確保することができる。 Therefore, by using this data receiving device together with the data transmitting device, it is possible to ensure security without increasing the amount of data to be transferred in communication using a plurality of communication paths.

なお、データ受信装置は、送信機能を備えるものであってもよい。 The data receiving device may have a transmission function.

第7の発明は、第6の発明であって、所定の論理演算は、排他的論理和演算である。 The seventh invention is the sixth invention, and the predetermined logical operation is an exclusive OR operation.

これにより、このデータ受信装置では、1バイト単位での論理演算(例えば、排他的論理和演算)により、スクランブル化された受信データのデスクランブル化処理を実行することができる。 As a result, in this data receiving device, the scrambled received data can be descrambled by a logical operation in 1-byte units (for example, an exclusive OR operation).

第8の発明は、第6または第7の発明であって、単位長データは、1バイトのデータである。 The eighth invention is the sixth or seventh invention, and the unit length data is 1 byte data.

これにより、このデータ受信装置では、1バイト単位での論理演算(例えば、排他的論理和演算)により、スクランブル化された受信データのデスクランブル化処理を実行することができる。 As a result, in this data receiving device, the scrambled received data can be descrambled by a logical operation in 1-byte units (for example, an exclusive OR operation).

第9の発明は、第6から第8のいずれかの発明であって、初期値データは、通信相手であるデータ送信装置を識別するためのデータであるキーデータをキーデータkeyAとしたとき、
MsgDig=SHA1(keyA)。
IDSN=Lower_8bytes(MsgDig)。
SHA1(x):xに対するSHA−1によるメッセージダイジェストを取得する関数。
Lower_8bytes(x):xの下位8バイトを取得する関数。
により取得されたIDSN値である。
The ninth invention is any one of the sixth to eighth inventions, when the initial value data is the key data key data keyA, which is the data for identifying the data transmission device which is the communication partner.
MsgDig = SHA1 (keyA).
IDSN = Lower_8bytes (MsgDig).
SHA1 (x): A function that obtains a message digest by SHA-1 for x.
Lower_8bytes (x): A function to get the lower 8 bytes of x.
Is the IDSN value obtained by.

これにより、このデータ受信装置では、初期値データにIDSN値を用いることができる。そして、IDSN値は、通信相手であるデータ送信装置のキーデータから導出するため、送信側と受信側との間で、例えば、コネクション確立時に、キーデータを送信しておけば、スクランブル処理、デスクランブル処理のための初期値を、別途、送信側から受信側に送信する必要がなくなる。 As a result, in this data receiving device, the IDSN value can be used as the initial value data. Then, since the IDSN value is derived from the key data of the data transmitting device which is the communication partner, if the key data is transmitted between the transmitting side and the receiving side, for example, when establishing a connection, scrambling processing and decoding are performed. It is not necessary to separately transmit the initial value for scrambling processing from the transmitting side to the receiving side.

第10の発明は、第6から第9のいずれかの発明であって、MPTCPを用いた通信を実行する機能を有し、MPTCPコネクションの確立処理を実行するMPTCPコネクション確立処理部をさらに備える。 The tenth invention is any one of the sixth to ninth inventions, further comprising an MPTCP connection establishment processing unit which has a function of executing communication using MPTCP and executes an MPTCP connection establishment process.

MPTCPコネクション確立処理部は、MPTCPコネクションの確立処理時において、データ送信装置により、MP_CAPABLEオプションの所定のフラグを所定の値にセットしたSYNセグメント受信することで、データ送信装置がスクランブル機能を用いたデータ転送を行う機能を有していると判定する。 The MPTCP connection establishment processing unit receives the SYN segment in which the predetermined flag of the MP_CAPABLE option is set to a predetermined value by the data transmission device at the time of the MPTCP connection establishment process, so that the data transmission device uses the scramble function. It is determined that it has a function to perform transfer.

これにより、このデータ受信装置では、MPTCPコネクションの確立処理時にスクランブル機能を用いたデータ転送を行うことを示す情報、データ送信装置から取得することができる。したがって、別途、スクランブル機能を用いたデータ転送を行うことを、送信側から受信側に通知するための通信が不要となり、その結果、データ通信量を増加させることはない。 As a result, in this data receiving device, information indicating that data transfer using the scramble function is performed during the MPTCP connection establishment process can be obtained from the data transmitting device. Therefore, it is not necessary to separately communicate from the transmitting side to the receiving side to notify the data transfer using the scramble function, and as a result, the amount of data communication is not increased.

第11の発明は、第1から第5のいずれかの発明であるデータ送信装置と、第6から第10のいずれかの発明であるデータ受信装置とを備える通信システムである。 The eleventh invention is a communication system including a data transmitting device according to any one of the first to fifth inventions and a data receiving device according to any one of the sixth to tenth inventions.

これにより、第1から第5のいずれかの発明であるデータ送信装置と、第6から第10のいずれかの発明であるデータ受信装置とを備える通信システムを実現することができる。 Thereby, it is possible to realize a communication system including the data transmitting device according to any one of the first to fifth inventions and the data receiving device according to any one of the sixth to tenth inventions.

第12の発明は、データ送信装置からデータ受信装置に対して、複数の通信経路を用いてデータを送信するときに用いられるデータ送信方法をコンピュータに実行させるためのプログラムである。 The twelfth invention is a program for causing a computer to execute a data transmission method used when transmitting data from a data transmission device to a data reception device using a plurality of communication paths.

データ送信方法は、スクランブル用キーデータ生成ステップと、スクランブルデータ生成ステップと、サブフローデータ生成ステップと、を備える。 The data transmission method includes a scramble key data generation step, a scramble data generation step, and a subflow data generation step.

スクランブル用キーデータ生成ステップは、送信データを所定の単位長のデータに区分した単位長データのうちの最初の単位長データである単位長送信データをスクランブル化するためのスクランブル処理用キーデータを取得する。そして、スクランブル用キーデータ生成ステップは、(1)1回目の処理では、データ送信装置を識別するためのデータであるキーデータから導出された初期値データを所定の単位長のデータに区分した単位長データである単位長初期値データを用いて、所定の論理演算を行うことでスクランブル化処理のためのスクランブル処理用キーデータを取得し、(2)2回目以降の処理では、単位長初期値データ、および、スクランブル化が完了した単位長送信データの両方、または、スクランブル化が完了した単位長送信データのみを用いて、所定の論理演算を行うことでスクランブル処理用キーデータを取得する。 The scramble key data generation step acquires scramble processing key data for scrambling the unit length transmission data, which is the first unit length data of the unit length data obtained by dividing the transmission data into data having a predetermined unit length. do. Then, in the scramble key data generation step, (1) in the first process, the initial value data derived from the key data, which is the data for identifying the data transmission device, is divided into data having a predetermined unit length. Using the unit length initial value data, which is long data, the key data for scramble processing for scrambling processing is acquired by performing a predetermined logical operation. (2) In the second and subsequent processing, the unit length initial value The scramble processing key data is acquired by performing a predetermined logical operation using both the data and the unit length transmission data for which scrambling has been completed, or only the unit length transmission data for which scramble has been completed.

スクランブルデータ生成ステップは、スクランブル用キーデータ生成ステップにより取得されたスクランブル処理用キーデータと、単位長送信データとを用いて、所定の論理演算を行うことで、スクランブル化した単位長データであるスクランブル化単位長送信データを取得するとともに、取得したスクランブル化単位長送信データを複数まとめることで、1つのスクランブル化送信データを生成する。 The scramble data generation step is scrambled unit length data by performing a predetermined logical operation using the scramble processing key data acquired by the scramble key data generation step and the unit length transmission data. A single scrambled transmission data is generated by acquiring the scrambled unit length transmission data and collecting a plurality of the acquired scrambled unit length transmission data.

サブフローデータ生成ステップは、スクランブルデータ生成ステップにより生成されたスクランブル化送信データから、複数の経路を用いて送信するためのサブフローデータを生成する。 The subflow data generation step generates subflow data for transmission using a plurality of routes from the scrambled transmission data generated by the scrambled data generation step.

これにより、第1の発明と同様の効果を奏するデータ送信方法をコンピュータに実行させるためのプログラムを実現することができる。 This makes it possible to realize a program for causing a computer to execute a data transmission method having the same effect as that of the first invention.

第13の発明は、データ受信装置において、データ送信装置から、複数の通信経路を用いて送信されたデータを受信するときに用いられるデータ受信方法をコンピュータに実行させるためのプログラムである。 A thirteenth invention is a program for causing a computer to execute a data receiving method used when receiving data transmitted by a plurality of communication paths from a data transmitting device in a data receiving device.

データ受信方法は、MPTCPデータ取得ステップと、スクランブル用キーデータ生成ステップと、受信データ取得ステップと、を備える。 The data receiving method includes an MPTCP data acquisition step, a scramble key data generation step, and a received data acquisition step.

MPTCPデータ取得ステップは、データ送信装置から、複数の通信経路により、受信した複数のサブフローデータを、当該サブフローデータに含まれるデータシーケンス番号の順に並べる処理を実行することで、複数のサブフローデータを1つにまとめた受信データを取得する。 The MPTCP data acquisition step executes a process of arranging a plurality of subflow data received from the data transmission device in the order of the data sequence number included in the subflow data by a plurality of communication paths, thereby arranging the plurality of subflow data as one. Acquire the received data collected together.

スクランブル用キーデータ生成ステップは、MPTCPデータ取得ステップにより取得された受信データを所定の単位長のデータに区分した単位長データのうちの最初の単位長データである単位長受信スクランブルデータをデスクランブル化するためのスクランブル処理用キーデータを取得する。そして、スクランブル用キーデータ生成ステップは、(1)1回目の処理では、データ送信装置を識別するためのデータであるキーデータから導出された初期値データを所定の単位長のデータに区分した単位長データである単位長初期値データを用いて、所定の論理演算を行うことでデスクランブル化処理のためのスクランブル処理用キーデータを取得し、(2)2回目以降の処理では、単位長初期値データ、および、デスクランブル化が完了した単位長受信データの両方、または、デスクランブル化が完了した単位長受信データのみを用いて、所定の論理演算を行うことでスクランブル処理用キーデータを取得する。 The scramble key data generation step descrambles the unit length reception scramble data, which is the first unit length data of the unit length data obtained by dividing the reception data acquired by the MPTCP data acquisition step into data of a predetermined unit length. Acquire key data for scramble processing to do so. Then, in the scramble key data generation step, (1) in the first process, the initial value data derived from the key data, which is the data for identifying the data transmission device, is divided into data having a predetermined unit length. Using the unit length initial value data, which is long data, the key data for scramble processing for descramble processing is acquired by performing a predetermined logical operation. (2) In the second and subsequent processing, the unit length initial value is obtained. Acquire key data for scramble processing by performing a predetermined logical operation using both the value data and the unit length received data for which descrambled completion, or only the unit length received data for which descrambled has been completed. do.

受信データ取得ステップは、スクランブル用キーデータ生成ステップにより取得されたスクランブル処理用キーデータと、単位長受信スクランブルデータとを用いて、所定の論理演算を行うことで、デスクランブル化した単位長データである単位長受信データを取得するとともに、取得した単位長受信データを複数まとめることで、1つのデスクランブル化された受信データを取得する。 The received data acquisition step is a descrambled unit length data by performing a predetermined logical operation using the scramble processing key data acquired by the scramble key data generation step and the unit length reception scramble data. By acquiring a certain unit length reception data and collecting a plurality of acquired unit length reception data, one descrambled reception data is acquired.

これにより、第6の発明と同様の効果を奏するデータ受信方法をコンピュータに実行させるためのプログラムを実現することができる。 This makes it possible to realize a program for causing a computer to execute a data receiving method having the same effect as that of the sixth invention.

本発明によれば、複数のパスを用いた通信において、転送するデータ量を増加させることなく、かつ、セキュリティを確保することができるデータ送信装置、データ受信装置、通信システム、および、プログラムを実現することができる。 According to the present invention, a data transmitting device, a data receiving device, a communication system, and a program capable of ensuring security without increasing the amount of data to be transferred are realized in communication using a plurality of paths. can do.

第1実施形態に係る通信システム1000の概略構成図。The schematic block diagram of the communication system 1000 which concerns on 1st Embodiment. 第1実施形態に係る通信システム1000で実行される処理、扱うデータについての概略を模式的に示した図。The figure which schematically showed the outline about the processing and the data to be handled by the communication system 1000 which concerns on 1st Embodiment. 第1実施形態に係る通信システム1000の第1データ通信モジュール1の概略構成図。The schematic block diagram of the 1st data communication module 1 of the communication system 1000 which concerns on 1st Embodiment. 第1実施形態に係る通信システム1000のスクランブル用キーデータ生成部12およびスクランブルデータ生成部13の概略構成図。The schematic block diagram of the scramble key data generation part 12 and the scramble data generation part 13 of the communication system 1000 which concerns on 1st Embodiment. 第1実施形態に係る通信システム1000の第2データ通信モジュール2の概略構成図。The schematic block diagram of the 2nd data communication module 2 of the communication system 1000 which concerns on 1st Embodiment. 第1実施形態に係る通信システム1000のデスクランブルデータ取得部24およびスクランブル用キーデータ生成部25の概略構成図。The schematic block diagram of the descramble data acquisition part 24 and the scramble key data generation part 25 of the communication system 1000 which concerns on 1st Embodiment. MPTCPコネクション確立処理のシーケンス図。Sequence diagram of MPTCP connection establishment processing. MPTCPコネクションによるデータ転送処理のシーケンス図。Sequence diagram of data transfer processing by MPTCP connection. MPTCPコネクションの解放処理のシーケンス図。Sequence diagram of MPTCP connection release processing. RFC6824で規定されているMP_CAPABLEオプションのデータフォーマット(横方向の幅を32ビットとして表示したデータフォーマット)を示す図。The figure which shows the data format (data format which displayed the width in a horizontal direction as 32 bits) of the MP_CAPABLE option specified in RFC6824. スクランブルデータの生成処理を説明するための図(1回目の処理(送信側))。The figure for demonstrating the scramble data generation process (the first process (sender side)). スクランブルデータの生成処理を説明するための図(2回目の処理(送信側))。The figure for demonstrating the scramble data generation processing (second processing (sending side)). スクランブルデータの生成処理を説明するための図(3回目の処理(送信側))。The figure for demonstrating the scramble data generation processing (third processing (sending side)). デスクランブルデータの取得処理を説明するための図(1回目の処理(受信側))。The figure for demonstrating the acquisition process of descramble data (the first process (reception side)). デスクランブルデータの取得処理を説明するための図(2回目の処理(受信側))。The figure for demonstrating the acquisition process of descramble data (second process (reception side)). デスクランブルデータの取得処理を説明するための図(3回目の処理(受信側))。The figure for demonstrating the acquisition process of descramble data (third process (reception side)). CPUバス構成を示す図。The figure which shows the CPU bus configuration.

[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
[First Embodiment]
The first embodiment will be described below with reference to the drawings.

<1.1:通信システムの構成>
図1は、第1実施形態に係る通信システム1000の概略構成図である。
<1.1: Communication system configuration>
FIG. 1 is a schematic configuration diagram of the communication system 1000 according to the first embodiment.

図2は、第1実施形態に係る通信システム1000で実行される処理、扱うデータについての概略を模式的に示した図である。 FIG. 2 is a diagram schematically showing an outline of processing and data to be handled by the communication system 1000 according to the first embodiment.

図3は、第1実施形態に係る通信システム1000の第1データ通信モジュール1の概略構成図である。 FIG. 3 is a schematic configuration diagram of the first data communication module 1 of the communication system 1000 according to the first embodiment.

図4は、第1実施形態に係る通信システム1000のスクランブル用キーデータ生成部12およびスクランブルデータ生成部13の概略構成図である。 FIG. 4 is a schematic configuration diagram of a scramble key data generation unit 12 and a scramble data generation unit 13 of the communication system 1000 according to the first embodiment.

図5は、第1実施形態に係る通信システム1000の第2データ通信モジュール2の概略構成図である。 FIG. 5 is a schematic configuration diagram of a second data communication module 2 of the communication system 1000 according to the first embodiment.

図6は、第1実施形態に係る通信システム1000のデスクランブルデータ取得部24およびスクランブル用キーデータ生成部25の概略構成図である。 FIG. 6 is a schematic configuration diagram of a descramble data acquisition unit 24 and a scramble key data generation unit 25 of the communication system 1000 according to the first embodiment.

通信システム1000は、図1に示すように、第1通信装置H1と第2通信装置H2とを備える。なお、通信システム1000は、複数の通信装置を備えてもよい。以下では、説明便宜のために、第1通信装置H1がデータ送信を行うための機能を備えており、第2通信装置H2がデータ受信を行う機能を備えている場合について説明する。しかしながら、これに限定されることはなく、通信システム1000は、複数の通信装置を備えており、各通信装置の一部または全部が、送信機能、および、受信機能の両方を備えるものであってもよい。また、第1通信装置H1がデータ受信機能を備えるものであってもよい。また、第2通信装置H2がデータ送信機能を備えるものであってもよい。 As shown in FIG. 1, the communication system 1000 includes a first communication device H1 and a second communication device H2. The communication system 1000 may be provided with a plurality of communication devices. Hereinafter, for convenience of explanation, a case where the first communication device H1 has a function for transmitting data and the second communication device H2 has a function for receiving data will be described. However, the present invention is not limited to this, and the communication system 1000 includes a plurality of communication devices, and a part or all of each communication device has both a transmission function and a reception function. May be good. Further, the first communication device H1 may be provided with a data receiving function. Further, the second communication device H2 may have a data transmission function.

また、通信システム1000は、MPTCP(Multipath Transmission Control Protocol)による通信を実行できる機能を有しており、複数のパスにより、データ通信を行うことができる。なお、以下では、説明便宜のため、2つのパスを用いてMPTCPによる通信を行う場合について、説明する。 Further, the communication system 1000 has a function capable of executing communication by MPTCP (Multipath Transition Control Protocol), and data communication can be performed by a plurality of paths. In the following, for convenience of explanation, a case where communication by MPTCP is performed using two paths will be described.

第1通信装置H1は、図1に示すように、アプリケーション部H1_apと、第1データ通信モジュール1とを備える。第1通信装置H1は、図2に示すように、MPTCPによる通信を実行できる機能を有している。第1通信装置H1は、送信データをスクランブル処理してスクランブルデータを取得し、取得したスクランブルデータをTCPのサブフローにより送信する機能を有する。 As shown in FIG. 1, the first communication device H1 includes an application unit H1_ap and a first data communication module 1. As shown in FIG. 2, the first communication device H1 has a function capable of executing communication by MPTCP. The first communication device H1 has a function of scrambling transmission data to acquire scrambled data, and transmitting the acquired scrambled data by a TCP subflow.

アプリケーション部H1_apは、アプリケーション層の処理を行う。アプリケーション部H1_apは、送信データData_txを第1データ通信モジュール1に出力する。なお、送信データData_txは、第1通信装置H1の内部(例えば、記憶装置(不図示))で保持されているものであってもよく、あるいは、第1通信装置H1の外部から入力されるものであってもよい。 The application unit H1_ap processes the application layer. The application unit H1_ap outputs the transmission data Data_tx to the first data communication module 1. The transmission data Data_tx may be stored inside the first communication device H1 (for example, a storage device (not shown)), or may be input from the outside of the first communication device H1. It may be.

第1データ通信モジュール1は、図3に示すように、MPTCPコネクション確立処理部10と、送信データ取得部11と、スクランブル用キーデータ生成部12と、スクランブルデータ生成部13と、TCPサブフローデータ生成部14と、第1通信インターフェース15と、第2通信インターフェース16とを備える。なお、本実施形態では、MPTCP(Multipath Transmission Control Protocol)による通信のパスが2つであるため、第1データ通信モジュール1は、2つの通信部(第1通信インターフェース15と第2通信インターフェース16)を有している。MPTCP(Multipath Transmission Control Protocol)による通信のパスがN個(N:自然数)である場合、第1データ通信モジュール1は、N個の通信部を備える。 As shown in FIG. 3, the first data communication module 1 includes an MPTCP connection establishment processing unit 10, a transmission data acquisition unit 11, a scramble key data generation unit 12, a scramble data generation unit 13, and a TCP subflow data generation. A unit 14, a first communication interface 15, and a second communication interface 16 are provided. In the present embodiment, since there are two communication paths by MPTCP (Multipath Transition Control Protocol), the first data communication module 1 has two communication units (first communication interface 15 and second communication interface 16). have. When the number of communication paths by MPTCP (Multipath Transmission Control Protocol) is N (N: natural number), the first data communication module 1 includes N communication units.

MPTCPコネクション確立処理部10は、外部の通信装置(通信相手となる通信装置)とのMPTCPコネクションを確立するための処理を実行する機能部である。MPTCPコネクション確立処理部10は、第1通信インターフェース15を介して、外部の通信装置(通信相手となる通信装置)とのMPTCPコネクションを確立するための処理を実行する。また、MPTCPコネクション確立処理部10は、外部の通信装置(通信相手となる通信装置)とのMPTCPコネクションの解放処理も行う。MPTCPコネクション確立処理部10は、第1通信インターフェース15を介して、MPTCPコネクションを解放するための処理を実行する。 The MPTCP connection establishment processing unit 10 is a functional unit that executes processing for establishing an MPTCP connection with an external communication device (communication device as a communication partner). The MPTCP connection establishment processing unit 10 executes a process for establishing an MPTCP connection with an external communication device (communication device as a communication partner) via the first communication interface 15. The MPTCP connection establishment processing unit 10 also performs processing for releasing the MPTCP connection with an external communication device (communication device as a communication partner). The MPTCP connection establishment processing unit 10 executes a process for releasing the MPTCP connection via the first communication interface 15.

送信データ取得部11は、アプリケーション部H1_apから出力される送信データData_txを入力する。送信データ取得部11は、送信データData_txから所定の長さのデータ(例えば、1バイトのデータ)を取得し、取得したデータをデータD_tx[k]としてスクランブル用キーデータ生成部12およびスクランブルデータ生成部13に出力する。また、送信データ取得部11は、スクランブルデータ生成部13から制御信号Ctl1を入力する。なお、以下では、説明便宜のため、上記の「所定の長さ」が1バイトに相当するデータ長であるものとする。そして、データD_tx[k]は、送信データData_txがN1バイトからなる場合、kバイト目(k:整数、0≦k<N1)のバイトデータである。以下においても同様の表記(kバイト目のバイトデータであることを示す表記)を用いて説明する。 The transmission data acquisition unit 11 inputs the transmission data Data_tx output from the application unit H1_ap. The transmission data acquisition unit 11 acquires data of a predetermined length (for example, 1-byte data) from the transmission data Data_tx, and uses the acquired data as data D_tx [k] for scramble key data generation unit 12 and scramble data generation. Output to unit 13. Further, the transmission data acquisition unit 11 inputs the control signal Ctrl1 from the scramble data generation unit 13. In the following, for convenience of explanation, it is assumed that the above "predetermined length" is the data length corresponding to 1 byte. Then, the data D_tx [k] is byte data of the kth byte (k: integer, 0 ≦ k <N1) when the transmission data Data_tx consists of N1 bytes. In the following, the same notation (notation indicating that it is the k-th byte data) will be used for explanation.

スクランブル用キーデータ生成部12は、図4に示すように、シフトバッファ制御部121と、シフトバッファ122と、第1XOR演算部123とを備える。 As shown in FIG. 4, the scramble key data generation unit 12 includes a shift buffer control unit 121, a shift buffer 122, and a first XOR calculation unit 123.

シフトバッファ制御部121は、送信データ取得部11から出力されるデータD_tx[k]と、スクランブルデータ生成部13から出力される制御信号Ctl1とを入力する。また、シフトバッファ制御部121は、初期値を入力する。シフトバッファ制御部121は、初期値またはデータD_tx[k]をデータD_byteとしてシフトバッファ122に出力する。また、シフトバッファ制御部121は、制御信号Ctl1に基づいて、シフトバッファ122を制御するための制御信号Ctl2を生成し、生成した制御信号Ctl2をシフトバッファ制御部121に出力する。 The shift buffer control unit 121 inputs the data D_tx [k] output from the transmission data acquisition unit 11 and the control signal Ctrl1 output from the scramble data generation unit 13. Further, the shift buffer control unit 121 inputs an initial value. The shift buffer control unit 121 outputs the initial value or the data D_tx [k] to the shift buffer 122 as the data D_byte. Further, the shift buffer control unit 121 generates a control signal Ctl2 for controlling the shift buffer 122 based on the control signal Ctl1, and outputs the generated control signal Ctl2 to the shift buffer control unit 121.

シフトバッファ122は、所定の単位(例えば、バイト単位)で記憶保持しているデータをシフトさせるバッファ(例えば、FIFO(First In First Out)メモリ)である。シフトバッファ122は、シフトバッファ制御部121から出力されるデータD_byteを入力し、シフトバッファ122の所定の領域に記憶する。また、シフトバッファ122は、シフトバッファ制御部121から出力される制御信号Ctl2を入力し、制御信号Ctl2に基づいて、記憶されているデータを所定の単位(例えば、バイト単位)だけシフトさせる処理を行う。 The shift buffer 122 is a buffer (for example, a FIFO (First In First Out) memory) for shifting the data stored and held in a predetermined unit (for example, byte unit). The shift buffer 122 inputs the data D_byte output from the shift buffer control unit 121 and stores it in a predetermined area of the shift buffer 122. Further, the shift buffer 122 inputs the control signal Ctrl2 output from the shift buffer control unit 121, and shifts the stored data by a predetermined unit (for example, byte unit) based on the control signal Ctrl2. conduct.

第1XOR演算部123は、シフトバッファ122に記憶されているデータを所定の単位(例えば、バイト単位)で読み出し、読み出したデータに対して論理演算処理(例えば、XOR演算)を行い、当該論理演算処理の結果をデータDky[k]としてスクランブルデータ生成部13に出力する。 The first XOR operation unit 123 reads the data stored in the shift buffer 122 in a predetermined unit (for example, byte unit), performs a logical operation process (for example, XOR operation) on the read data, and performs the logical operation. The processing result is output to the scramble data generation unit 13 as data Dky [k].

スクランブルデータ生成部13は、図4に示すように、第2XOR演算部131と、スクランブルデータ取得部132とを備える。 As shown in FIG. 4, the scramble data generation unit 13 includes a second XOR calculation unit 131 and a scramble data acquisition unit 132.

第2XOR演算部131は、スクランブル用キーデータ生成部12から出力されるデータDky[k]と、送信データ取得部11から出力されるデータD_tx[k]とを入力する。第2XOR演算部131は、データDky[k]と、データD_tx[k]とを用いて論理演算処理(例えば、XOR演算)を行い、当該論理演算処理の結果をデータD_txs[k]としてスクランブルデータ取得部132に出力する。 The second XOR calculation unit 131 inputs the data Dky [k] output from the scramble key data generation unit 12 and the data D_tx [k] output from the transmission data acquisition unit 11. The second XOR calculation unit 131 performs a logical operation process (for example, an XOR operation) using the data Dky [k] and the data D_tx [k], and scrambles the result of the logical operation process as the data D_txs [k]. Output to the acquisition unit 132.

スクランブルデータ取得部132は、第2XOR演算部131から出力されるデータD_txs[k]を入力する。スクランブルデータ取得部132は、第2XOR演算部131からデータD_txs[k]を入力したら、シフトバッファ122を操作するための制御信号Ctl1を生成し、生成した制御信号Ctl1をシフトバッファ制御部121に出力する。また、スクランブルデータ取得部132は、データD_txs[k]を所定の個数分集めて、所定のデータ長の送信用データD_txsを生成する。例えば、送信用データD_txsがN1バイトである場合、N1バイト分のデータD_txs[k]が揃った後、N1バイト分のデータD_txs[k]から送信用データD_txsを取得し、取得した送信用データD_txsをTCPサブフローデータ生成部14に出力する。 The scramble data acquisition unit 132 inputs the data D_txs [k] output from the second XOR calculation unit 131. When the scramble data acquisition unit 132 inputs the data D_txs [k] from the second XOR calculation unit 131, the scramble data acquisition unit 132 generates a control signal Ctl1 for operating the shift buffer 122, and outputs the generated control signal Ctl1 to the shift buffer control unit 121. do. Further, the scramble data acquisition unit 132 collects a predetermined number of data D_txs [k] to generate transmission data D_txs having a predetermined data length. For example, when the transmission data D_txs is N1 bytes, after the N1 bytes of data D_txs [k] are prepared, the transmission data D_txs is acquired from the N1 bytes of data D_txs [k], and the acquired transmission data is acquired. Output D_txs to the TCP subflow data generation unit 14.

TCPサブフローデータ生成部14は、スクランブルデータ生成部13から出力される送信用データD_txsを入力する。TCPサブフローデータ生成部14は、送信用データD_txsから、複数のTCPサブフローで送信可能なデータを取得する。本実施形態では、TCPサブフローの数は「2」であるため、TCPサブフローデータ生成部14は、送信用データD_txsから、2つのTCPサブフローで送信可能なデータD_txs_sub1およびD_txs_sub2を取得する。そして、TCPサブフローデータ生成部14は、TCPサブフロー用データD_txs_sub1を第1通信インターフェース15に出力し、TCPサブフロー用データD_txs_sub2を第2通信インターフェース16に出力する。 The TCP subflow data generation unit 14 inputs the transmission data D_txs output from the scramble data generation unit 13. The TCP subflow data generation unit 14 acquires data that can be transmitted by a plurality of TCP subflows from the transmission data D_txs. In the present embodiment, since the number of TCP subflows is "2", the TCP subflow data generation unit 14 acquires the data D_txs_sub1 and D_txs_sub2 that can be transmitted by the two TCP subflows from the transmission data D_txs. Then, the TCP subflow data generation unit 14 outputs the TCP subflow data D_txs_sub1 to the first communication interface 15, and outputs the TCP subflow data D_txs_sub2 to the second communication interface 16.

第1通信インターフェース15は、MPTCPコネクション確立処理部10からの指令によりMPTCPコネクション確立処理に必要な通信用データを生成し、生成した通信用データを、外部の通信装置(通信相手となる通信装置)に送信する。また、第1通信インターフェース15は、外部の通信装置(通信相手となる通信装置)から受信したデータをMPTCPコネクション確立処理部10に出力する。 The first communication interface 15 generates communication data necessary for MPTCP connection establishment processing by a command from the MPTCP connection establishment processing unit 10, and uses the generated communication data as an external communication device (communication device to be a communication partner). Send to. Further, the first communication interface 15 outputs data received from an external communication device (communication device as a communication partner) to the MPTCP connection establishment processing unit 10.

また、第1通信インターフェース15は、TCPサブフローデータ生成部14から出力されるTCPサブフロー用データD_txs_sub1を入力し、TCPサブフロー用データD_txs_sub1に基づいて、送信用データD_sub1を生成し、生成した送信用データD_sub1を通信相手となる第2通信装置H2に送信する。 Further, the first communication interface 15 inputs TCP subflow data D_txs_sub1 output from the TCP subflow data generation unit 14, generates transmission data D_sub1 based on TCP subflow data D_txs_sub1, and generates transmission data. D_sub1 is transmitted to the second communication device H2 which is the communication partner.

第2通信インターフェース16は、TCPサブフローデータ生成部14から出力されるTCPサブフロー用データD_txs_sub2を入力し、TCPサブフロー用データD_txs_sub2に基づいて、送信用データD_sub2を生成し、生成した送信用データD_sub2を通信相手となる第2通信装置H2に送信する。 The second communication interface 16 inputs TCP subflow data D_txs_sub2 output from the TCP subflow data generation unit 14, generates transmission data D_sub2 based on TCP subflow data D_txs_sub2, and generates transmission data D_sub2. It transmits to the second communication device H2 which is the communication partner.

第2通信装置H2は、図1に示すように、アプリケーション部H2_apと、第2データ通信モジュール2とを備える。第2通信装置H2は、図2に示すように、MPTCPによる通信を実行できる機能を有している。 As shown in FIG. 1, the second communication device H2 includes an application unit H2_ap and a second data communication module 2. As shown in FIG. 2, the second communication device H2 has a function capable of executing communication by MPTCP.

アプリケーション部H2_apは、アプリケーション層の処理を行う。アプリケーション部H2_apは、第2データ通信モジュール2から出力される受信データData_rxを入力する。 The application unit H2_ap processes the application layer. The application unit H2_ap inputs the received data Data_rx output from the second data communication module 2.

第2データ通信モジュール2は、図5に示すように、MPTCPコネクション確立処理部20と、第3通信インターフェース21と、第4通信インターフェース22と、MPTCPデータ取得部23と、デスクランブルデータ取得部24と、スクランブル用キーデータ生成部25と、受信データ取得部26と、を備える。 As shown in FIG. 5, the second data communication module 2 includes an MPTCP connection establishment processing unit 20, a third communication interface 21, a fourth communication interface 22, an MPTCP data acquisition unit 23, and a descramble data acquisition unit 24. A scramble key data generation unit 25 and a reception data acquisition unit 26 are provided.

なお、本実施形態では、MPTCP(Multipath Transmission Control Protocol)による通信のパスが2つであるため、第2データ通信モジュール2は、2つの通信部(第3通信インターフェース21と第4通信インターフェース22)を有している。MPTCPによる通信のパスがN個(N:自然数)である場合、第2データ通信モジュール2は、N個の通信部を備える。 In the present embodiment, since there are two communication paths by MPTCP (Multipath Transmission Control Protocol), the second data communication module 2 has two communication units (third communication interface 21 and fourth communication interface 22). have. When the number of communication paths by MPTCP is N (N: natural number), the second data communication module 2 includes N communication units.

MPTCPコネクション確立処理部20は、外部の通信装置(通信相手となる通信装置)とのMPTCPコネクションを確立するための処理を実行する機能部である。MPTCPコネクション確立処理部20は、第3通信インターフェース21を介して、外部の通信装置(通信相手となる通信装置)とのMPTCPコネクションを確立するための処理を実行する。また、MPTCPコネクション確立処理部20は、外部の通信装置(通信相手となる通信装置)とのMPTCPコネクションの解放処理も行う。MPTCPコネクション確立処理部20は、第3通信インターフェース21を介して、MPTCPコネクションを解放するための処理を実行する。 The MPTCP connection establishment processing unit 20 is a functional unit that executes processing for establishing an MPTCP connection with an external communication device (communication device as a communication partner). The MPTCP connection establishment processing unit 20 executes a process for establishing an MPTCP connection with an external communication device (communication device as a communication partner) via the third communication interface 21. The MPTCP connection establishment processing unit 20 also performs processing for releasing the MPTCP connection with an external communication device (communication device as a communication partner). The MPTCP connection establishment processing unit 20 executes a process for releasing the MPTCP connection via the third communication interface 21.

第3通信インターフェース21は、MPTCPコネクション確立処理部20からの指令によりMPTCPコネクション確立処理に必要な通信用データを生成し、生成した通信用データを、外部の通信装置(通信相手となる通信装置)に送信する。また、第3通信インターフェース21は、外部の通信装置(通信相手となる通信装置)から受信したデータをMPTCPコネクション確立処理部20に出力する。 The third communication interface 21 generates communication data necessary for MPTCP connection establishment processing according to a command from the MPTCP connection establishment processing unit 20, and uses the generated communication data as an external communication device (communication device to be a communication partner). Send to. Further, the third communication interface 21 outputs the data received from the external communication device (communication device to be the communication partner) to the MPTCP connection establishment processing unit 20.

また、第3通信インターフェース21は、第1通信装置H1から送信されるデータD_sub1を受信し、受信したデータをデータD_rxs_sub1としてMPTCPデータ取得部23に出力する。 Further, the third communication interface 21 receives the data D_sub1 transmitted from the first communication device H1 and outputs the received data as the data D_rxs_sub1 to the MPTCP data acquisition unit 23.

第4通信インターフェース22は、第1通信装置H1から送信されるデータD_sub2を受信し、受信したデータをデータD_rxs_sub2としてMPTCPデータ取得部23に出力する。 The fourth communication interface 22 receives the data D_sub2 transmitted from the first communication device H1 and outputs the received data as the data D_rxs_sub2 to the MPTCP data acquisition unit 23.

MPTCPデータ取得部23は、第3通信インターフェース21から出力されるデータD_rxs_sub1と、第4通信インターフェース22から出力されるデータD_rxs_sub2と、を入力する。MPTCPデータ取得部23は、TCPサブフローデータであるデータD_rxs_sub1と、データD_rxs_sub2とから、MPTCPデータD_rxsを取得する。そして、MPTCPデータ取得部23は、取得したMPTCPデータD_rxsをデスクランブルデータ取得部24に出力する。 The MPTCP data acquisition unit 23 inputs data D_rxs_sub1 output from the third communication interface 21 and data D_rxs_sub2 output from the fourth communication interface 22. The MPTCP data acquisition unit 23 acquires MPTCP data D_rxs from the data D_rxs_sub1 and the data D_rxs_sub2, which are TCP subflow data. Then, the MPTCP data acquisition unit 23 outputs the acquired MPTCP data D_rxs to the descramble data acquisition unit 24.

デスクランブルデータ取得部24は、図6に示すように、バイトデータ抽出部241と、第3XOR演算部242とを備える。 As shown in FIG. 6, the descramble data acquisition unit 24 includes a byte data extraction unit 241 and a third XOR calculation unit 242.

バイトデータ抽出部241は、MPTCPデータ取得部23から出力されるデータD_rxsを入力する。バイトデータ抽出部241は、データD_rxsから所定の単位のデータ長(例えば、1バイト)のデータを抽出し、抽出したデータをデータD_rxs[k]として、第3XOR演算部242に出力する。 The byte data extraction unit 241 inputs the data D_rxs output from the MPTCP data acquisition unit 23. The byte data extraction unit 241 extracts data having a data length (for example, 1 byte) of a predetermined unit from the data D_rxs, and outputs the extracted data as data D_rxs [k] to the third XOR calculation unit 242.

第3XOR演算部242は、バイトデータ抽出部241から出力されるデータD_rxs[k]と、スクランブル用キーデータ生成部25から出力されるデータDky[k]とを入力する。第3XOR演算部242は、データD_rxs[k]と、データDky[k]とを用いて論理演算処理(例えば、XOR演算)を行い、当該論理演算処理の結果をデータD_rx[k]として受信データ取得部26に出力する。 The third XOR calculation unit 242 inputs the data D_rxs [k] output from the byte data extraction unit 241 and the data Dky [k] output from the scramble key data generation unit 25. The third XOR operation unit 242 performs a logical operation process (for example, an XOR operation) using the data D_rxs [k] and the data Dky [k], and receives the result of the logical operation process as the data D_rx [k]. Output to the acquisition unit 26.

スクランブル用キーデータ生成部25は、第1データ通信モジュール1に含まれるスクランブル用キーデータ生成部12と同じ構成を有している。 The scramble key data generation unit 25 has the same configuration as the scramble key data generation unit 12 included in the first data communication module 1.

スクランブル用キーデータ生成部25は、図6に示すように、シフトバッファ制御部251と、シフトバッファ252と、第1XOR演算部253とを備える。 As shown in FIG. 6, the scramble key data generation unit 25 includes a shift buffer control unit 251, a shift buffer 252, and a first XOR calculation unit 253.

シフトバッファ制御部251は、デスクランブルデータ取得部24から出力されるデータD_tx[k]と、受信データ取得部26から出力される制御信号Ctl3とを入力する。また、シフトバッファ制御部251は、初期値を入力する。シフトバッファ制御部251は、初期値またはデータD_tx[k]をデータD_byteとしてシフトバッファ252に出力する。また、シフトバッファ制御部251は、制御信号Ctl3に基づいて、シフトバッファ252を制御するための制御信号Ctl4を生成し、生成した制御信号Ctl4をシフトバッファ制御部121に出力する。 The shift buffer control unit 251 inputs the data D_tx [k] output from the descramble data acquisition unit 24 and the control signal Ctrl3 output from the reception data acquisition unit 26. Further, the shift buffer control unit 251 inputs an initial value. The shift buffer control unit 251 outputs the initial value or the data D_tx [k] to the shift buffer 252 as the data D_byte. Further, the shift buffer control unit 251 generates a control signal Ctrl4 for controlling the shift buffer 252 based on the control signal Ctrl3, and outputs the generated control signal Ctrl4 to the shift buffer control unit 121.

シフトバッファ252は、所定の単位(例えば、バイト単位)で記憶保持しているデータをシフトさせるバッファ(例えば、FIFOメモリ)である。シフトバッファ252は、シフトバッファ制御部251から出力されるデータD_byteを入力し、シフトバッファ252の所定の領域に記憶する。また、シフトバッファ252は、シフトバッファ制御部251から出力される制御信号Ctl4を入力し、制御信号Ctl4に基づいて、記憶されているデータを所定の単位(例えば、バイト単位)だけシフトさせる処理を行う。 The shift buffer 252 is a buffer (for example, a FIFO memory) for shifting the data stored and held in a predetermined unit (for example, byte unit). The shift buffer 252 inputs the data D_byte output from the shift buffer control unit 251 and stores it in a predetermined area of the shift buffer 252. Further, the shift buffer 252 inputs a control signal Ctrl4 output from the shift buffer control unit 251 and shifts the stored data by a predetermined unit (for example, byte unit) based on the control signal Ctrl4. conduct.

第1XOR演算部253は、シフトバッファ252に記憶されているデータを所定の単位(例えば、バイト単位)で読み出し、読み出したデータに対して論理演算処理(例えば、XOR演算)を行い、当該論理演算処理の結果をデータDky[k]としてデスクランブルデータ取得部24に出力する。 The first XOR operation unit 253 reads the data stored in the shift buffer 252 in a predetermined unit (for example, byte unit), performs a logical operation process (for example, XOR operation) on the read data, and performs the logical operation. The processing result is output to the descramble data acquisition unit 24 as data Dky [k].

受信データ取得部26は、デスクランブルデータ取得部24から出力されるデータD_rx[k]を入力する。受信データ取得部26は、データD_rx[k]を所定の個数分集めて、所定のデータ長のデータData_rxを取得する。そして、受信データ取得部26は、取得したデータData_rxをアプリケーション部H2_apに出力する。 The reception data acquisition unit 26 inputs the data D_rx [k] output from the descramble data acquisition unit 24. The reception data acquisition unit 26 collects a predetermined number of data D_rx [k] and acquires data Data_rx having a predetermined data length. Then, the received data acquisition unit 26 outputs the acquired data Data_rx to the application unit H2_ap.

<1.2:通信システムの動作>
以上のように構成された通信システム1000の動作について、以下、説明する。
<1.2: Operation of communication system>
The operation of the communication system 1000 configured as described above will be described below.

以下では、第1通信装置H1と第2通信装置との間においてMPTCPを用いて通信する場合について説明する。なお、第1通信装置H1が2つのIPアドレス(アドレスA1およびアドレスA2)を有しており、第2通信装置が1つのIPアドレス(アドレスB)を有しているものとし、アドレスA1とアドレスBとの間、および、アドレスA2とアドレスBとの間の2つのTCPサブフロー(2つの通信経路(通信パス))により通信が実行される場合について説明する。また、第1通信装置H1および第2通信装置は、通常のTCP/IPによる通信機能、および、MPTCPによる通信機能を備えているものとする。 Hereinafter, a case where MPTCP is used for communication between the first communication device H1 and the second communication device will be described. It is assumed that the first communication device H1 has two IP addresses (address A1 and address A2) and the second communication device has one IP address (address B), and the address A1 and the address. A case where communication is executed by two TCP subflows (two communication paths (communication paths)) between the address B and the address A2 and the address B will be described. Further, it is assumed that the first communication device H1 and the second communication device have a normal TCP / IP communication function and an MPTCP communication function.

図7は、MPTCPコネクション確立処理のシーケンス図である。 FIG. 7 is a sequence diagram of MPTCP connection establishment processing.

図8は、MPTCPコネクションによるデータ転送処理のシーケンス図である。 FIG. 8 is a sequence diagram of data transfer processing by MPTCP connection.

図9は、MPTCPコネクションの解放処理のシーケンス図である。 FIG. 9 is a sequence diagram of MPTCP connection release processing.

(1.2.1:MPTCPコネクション確立処理)
まず、MPTCPコネクション確立処理について、説明する。
(1.2.1: MPTCP connection establishment process)
First, the MPTCP connection establishment process will be described.

通信システム1000では、第1通信装置H1と第2通信装置H2との間でMPTCPコネクションを確立させるための処理が実行される。このMPTCPコネクション確立処理の基本手順は、RFC6824(Request for Comments: 6824、”TCP Extensions for Multipath Operation with Multiple Addresses”)に従う。 In the communication system 1000, a process for establishing an MPTCP connection between the first communication device H1 and the second communication device H2 is executed. The basic procedure of this MPTCP connection establishment process follows RFC6824 (Request for Comments: 6824, "TCP Extensions for Multipath Operation with Multiple Adlesses").

図7に示すように、第1通信装置H1は、アドレスA1を用いて、第2通信装置H2のアドレスB宛のTCPセグメントの1つであるSYNセグメント(TCPセグメント構造で規定されているフラグSYN(1ビット)をセットしたTCPセグメント)を生成する。そして、当該SYNセグメントのTCPオプションに、MP_CAPABLEオプションを含ませる。 As shown in FIG. 7, the first communication device H1 uses the address A1 and is one of the TCP segments addressed to the address B of the second communication device H2. (TCP segment with (1 bit) set) is generated. Then, the MP_CAPABLE option is included in the TCP option of the SYN segment.

図10は、RFC6824で規定されているMP_CAPABLEオプションのデータフォーマット(横方向の幅を32ビットとして表示したデータフォーマット)である。 FIG. 10 is a data format of the MP_CAPABLE option defined by RFC 6824 (a data format in which the width in the horizontal direction is displayed as 32 bits).

第1通信装置H1は、図7に示すように、MP_CAPABLEオプションの「Sender's Key」エリアに、第1通信装置H1のキー(これを「ホストAのキー」、または、「Aのキー」という)を含め、また、所定のフラグをセットして、MP_CAPABLEオプションのデータを生成し、生成したMP_CAPABLEオプションのデータを、SYNセグメントに含める。そして、このようにして生成したSYNセグメントを含むデータを、第1通信装置H1は、アドレスA1から、第2通信装置H2のアドレスB宛に送信する。 As shown in FIG. 7, the first communication device H1 has a key of the first communication device H1 (this is referred to as a “host A key” or an “A key”) in the “Sender's Key” area of the MP_CAPABLE option. Is included, and a predetermined flag is set to generate the data of the MP_CAPABLE option, and the generated data of the MP_CAPABLE option is included in the SYN segment. Then, the first communication device H1 transmits the data including the SYN segment generated in this way from the address A1 to the address B of the second communication device H2.

なお、「キー」は、64ビット(8バイト)の情報である。キーは、MPTCPコネクション内で確立されるTCPサブフローを認証するための情報であり、コネクション確立時にのみ転送される。また、「フラグ」は、チェックサムを要求するかどうか、暗号化アルゴリズムの種類(現在はSHA-1ベースのHMACの方式のみが定義)などを指定する。 The "key" is 64-bit (8-byte) information. The key is information for authenticating the TCP subflow established in the MPTCP connection, and is transferred only when the connection is established. The "flag" specifies whether to request a checksum, the type of encryption algorithm (currently only the SHA-1 based HMAC method is defined), and so on.

第1通信装置H1は、SYNセグメントにより、第1通信装置H1のキー(ホストAのキー)を第2通信装置H2に通知する(ステップS101)。 The first communication device H1 notifies the second communication device H2 of the key of the first communication device H1 (the key of the host A) by the SYN segment (step S101).

そして、第2通信装置H2は、SYN+ACKセグメント(SYNフラグとACKフラグをセットしたTCPセグメント)により、第2通信装置H2のキー(これを「ホストBのキー」、または、「Bのキー」という)を、第1通信装置H1に通知する(ステップS102)。 Then, the second communication device H2 is referred to as a key of the second communication device H2 (this is called a "host B key" or a "B key" by the SYN + ACK segment (TCP segment in which the SYN flag and the ACK flag are set). ) Is notified to the first communication device H1 (step S102).

最後に、3ウェイハンドシェークのACKセグメント(ACKフラグをセットしたTCPセグメント)により、第1通信装置H1は、第2通信装置H2に対して、ホストAのキーとホストBのキーの双方のキーを通知する(ステップS103)。 Finally, due to the 3-way handshake ACK segment (TCP segment with the ACK flag set), the first communication device H1 presses both the host A key and the host B key to the second communication device H2. Notify (step S103).

なお、キーは、MPTCPコネクションごとに異なる値が動的に生成される。 As for the key, a different value is dynamically generated for each MPTCP connection.

ステップS102において、MP_CAPABLEオプションを受信側である第2通信装置H2が認識しない場合、SYN+ACKセグメントには対応するオプション(ホストBのキー等の情報)が含まれない。この場合、第2通信装置H2は、MPTCPによる通信ができないと判定され、第1通信装置H1と第2通信装置H2との間に、通常のTCPコネクションを確立させ、通信を開始させる。 If the second communication device H2 on the receiving side does not recognize the MP_CAPABLE option in step S102, the SYN + ACK segment does not include the corresponding option (information such as the key of the host B). In this case, it is determined that the second communication device H2 cannot communicate by MPTCP, and a normal TCP connection is established between the first communication device H1 and the second communication device H2 to start the communication.

なお、上記のMPTCPコネクション確立処理は、第1通信装置H1のMPTCPコネクション確立処理部10、および、第1通信インターフェース15と、第2通信装置H2のMPTCPコネクション確立処理部20、および、第3通信インターフェース21とにより実行される。 The above-mentioned MPTCP connection establishment process is performed by the MPTCP connection establishment processing unit 10 of the first communication device H1, the first communication interface 15, the MPTCP connection establishment processing unit 20 of the second communication device H2, and the third communication. It is executed by the interface 21.

上記処理により、第1通信装置H1と第2通信装置H2との間に、MPTCPコネクション、つまり、第1のTCPサブフローのコネクションが確立された場合、通信システム1000では、第1通信装置H1と第2通信装置H1との間に、第2のTCPサブフロー(追加のTCPサブフロー)のコネクション確立のための処理が実行される。 When an MPTCP connection, that is, a connection of the first TCP subflow is established between the first communication device H1 and the second communication device H2 by the above processing, in the communication system 1000, the first communication device H1 and the first communication device H1 and the first communication device H1 are established. A process for establishing a connection of a second TCP subflow (additional TCP subflow) is executed between the two communication devices H1.

図7に示すように、第2のTCPサブフローのコネクション確立処理時において、第1通信装置H1は、SYNセグメントにおいて、MP_JOINオプション(RFC6824で規定されているMP_JOINオプション)を設定する。そして、MP_JOINオプションに、ホストBのトークン、ホストAのナンス、ホストAのアドレスID、フラグを含める。なお、以下では、「第1通信装置H1」を「ホストA」とよび、「第2通信装置H2」を「ホストB」とよぶことがある。 As shown in FIG. 7, at the time of connection establishment processing of the second TCP subflow, the first communication device H1 sets the MP_JOIN option (MP_JOIN option defined by RFC 6824) in the SYN segment. Then, the token of host B, the nonce of host A, the address ID of host A, and the flag are included in the MP_JOIN option. In the following, the "first communication device H1" may be referred to as "host A", and the "second communication device H2" may be referred to as "host B".

「トークン」とは、MPTCPコネクションを確立した時点で、送信側(第1通信装置H1)と受信側(第2通信装置H2)で交換したキーから生成される値で、サブフローがどのMPTCPコネクションに属するかを示す。トークンは、MP_CAPABLEオプションのキーの値(8バイト)に対して、SHA−1によるメッセージダイジェスト(20バイト)を計算し、その高位の32ビット(4バイト)を抜き出したものである。またナンスは32ビット(4バイト)の乱数である。 The "token" is a value generated from the key exchanged between the transmitting side (first communication device H1) and the receiving side (second communication device H2) when the MPTCP connection is established, and the subflow is to which MPTCP connection. Indicates whether it belongs. The token is obtained by calculating a message digest (20 bytes) by SHA-1 with respect to the key value (8 bytes) of the MP_CAPABLE option and extracting the high-order 32 bits (4 bytes). The nonce is a 32-bit (4 bytes) random number.

「ナンス」は、32ビットの乱数である。 The "nonce" is a 32-bit random number.

「アドレスID」は、送信アドレスを、途中にNATが存在して変更された場合でも識別できるようにするものである。 The "address ID" makes it possible to identify the transmission address even if a NAT exists in the middle and the address is changed.

なお、「トークン」、「ナンス」、「アドレスID」は、RFC6824で規定されている。 The "token", "nonce", and "address ID" are defined by RFC 6824.

ステップS104において、第1通信装置H1は、上記のようにして生成されたSYNセグメント(MP_JOINオプションを含むSYNセグメント)を含むデータを、アドレスA2から、第2通信装置H2のアドレスB宛に送信する。 In step S104, the first communication device H1 transmits data including the SYN segment (SYN segment including the MP_JOIN option) generated as described above from the address A2 to the address B of the second communication device H2. ..

ステップS105において、第2通信装置H2は、ステップS104で、第1通信装置H1から受信したデータから、ホストB(第2通信装置H2)のトークンBを取得する。第2通信装置H2は、自身が過去に発行したキーの中に、受信したトークンBと一致するものがあるかどうかを調べる。そして、一致するものがある場合、第2通信装置H2は、過去に確立したMPTCPコネクションを選び、当該MPTCPコネクションに対応する第1通信装置H1(ホストA)のキーを求めることができる。 In step S105, the second communication device H2 acquires the token B of the host B (second communication device H2) from the data received from the first communication device H1 in step S104. The second communication device H2 checks whether or not any of the keys issued by itself in the past matches the received token B. Then, if there is a match, the second communication device H2 can select the MPTCP connection established in the past and obtain the key of the first communication device H1 (host A) corresponding to the MPTCP connection.

第2通信装置H2は、MP_JOINオプションに、ホストBのHMAC、ホストBのナンス、ホストBのアドレスID、および、フラグを含め、そして、当該MP_JOINオプションを含むSYN+ACKセグメントを生成する。そして、第2通信装置H2は、生成したSYN+ACKセグメントを含むデータ、第1通信装置H1に送信する。 The second communication device H2 includes the HMAC of the host B, the nonce of the host B, the address ID of the host B, and the flag in the MP_JOIN option, and generates a SYN + ACK segment including the MP_JOIN option. Then, the second communication device H2 transmits the generated data including the SYN + ACK segment to the first communication device H1.

なお、SYN+ACKセグメントで、第2通信装置H2から第1通信装置H1に送られるHMACは、Bのナンス+Aのナンスを、Bのキー+AのキーでHMACを求めた20バイトのうちの、上位の64ビット(8バイト)をとったものである。これは、第1通信装置H1と第2通信装置H2との間の互いの認証に使用される。 In the SYN + ACK segment, the HMAC sent from the second communication device H2 to the first communication device H1 is the upper of the 20 bytes obtained by obtaining the nonce of B + the nonce of A with the key of B + the key of A. It is 64 bits (8 bytes). This is used to authenticate each other between the first communication device H1 and the second communication device H2.

ステップS106において、第1通信装置H1は、
MP_JOINオプションに、ホストAのHMACを含め、そして、当該MP_JOINオプションを含むACKセグメントを生成する。そして、第1通信装置H2は、生成したACKセグメントを含むデータを、第2通信装置H2に送信する。
In step S106, the first communication device H1
The MP_JOIN option includes the HMAC of host A, and an ACK segment containing the MP_JOIN option is generated. Then, the first communication device H2 transmits the data including the generated ACK segment to the second communication device H2.

なお、ACKセグメントで、第1通信装置H1から第2通信装置H2に送られるHMACは、Aのナンス+Bのナンスを、Aのキー+BのキーでHMACを求めた20バイトの値となる。 The HMAC sent from the first communication device H1 to the second communication device H2 in the ACK segment is a 20-byte value obtained by obtaining the nonce of A + the nonce of B with the key of A + the key of B.

以上の処理により、第1通信装置H1と第2通信装置H2との間に、2つのTCPサブフローのコネクションが確立され、第1通信装置H1と第2通信装置H2との間において、MPTCPによる通信が可能となる。 By the above processing, two TCP subflow connections are established between the first communication device H1 and the second communication device H2, and communication by MPTCP is established between the first communication device H1 and the second communication device H2. Is possible.

(1.2.2:MPTCPコネクションによるデータ転送処理)
次に、MPTCPコネクションによるデータ転送処理について、説明する。
(1.2.2: Data transfer processing by MPTCP connection)
Next, the data transfer process by the MPTCP connection will be described.

図9に示すように、第1通信装置H1は、第2通信装置H2に対して、2つのTCPサブフローにより、MPTCPによる通信を行う。 As shown in FIG. 9, the first communication device H1 communicates with the second communication device H2 by MPTCP by two TCP subflows.

MPTCPによるデータ転送では、MPTCPコネクションを流れるデータに64ビットのデータシーケンス番号(DSN)が付与される。 In data transfer by MPTCP, a 64-bit data sequence number (DSN) is assigned to the data flowing through the MPTCP connection.

さらに、このDSNとTCPサブフローの32ビットのシーケンス番号との対応をつけるために、図8に示すように、DATA_SEQUECE_SIGNALオプション(RFC6824を参照)が使用される。 In addition, the DATA_SEQUCE_SIGNAL option (see RFC 6824) is used to map this DSN to the 32-bit sequence number of the TCP subflow, as shown in FIG.

「データシーケンスマッピング」は、RFC6824で規定されており、データシーケンスマッピングには、DSNと対応するサブフローシーケンス番号、このデータ(転送データ)のマッピングが有効な長さの情報が含まれる。また、データシーケンスマッピングには、コネクションレベルの確認応答のデータACKも含まれる。 The "data sequence mapping" is defined by RFC 6824, and the data sequence mapping includes information on the subflow sequence number corresponding to the DSN and the length in which the mapping of this data (transfer data) is valid. The data sequence mapping also includes data ACK for connection-level acknowledgments.

なお、自身(自装置)のキーの値に対してSHA−1によるメッセージダイジェストを計算した結果(20バイト)の下位8バイトを、データシーケンス番号の初期値(Initial Data Sequence Number:IDSN)として使用する。これにより、送信側と受信側で、IDSNの値を明示的に交換する必要はなくなる。 The lower 8 bytes of the result (20 bytes) of the SHA-1 message digest calculation for the key value of its own (own device) are used as the initial value (Initial Data Sequence Number: IDSN) of the data sequence number. do. This eliminates the need to explicitly exchange IDSN values between the transmitting side and the receiving side.

(1.2.3:MPTCPコネクションの解放処理)
次に、MPTCPコネクションの解放処理について、説明する。
(12.3: MPTCP connection release process)
Next, the process of releasing the MPTCP connection will be described.

図9にMPTCPコネクションの解放のシーケンスを示す。 FIG. 9 shows a sequence of releasing MPTCP connections.

図9に示すように、第1通信装置H1は、第2通信装置H2に対して、DATA_SEQUECE_SIGNALの一部としてデータFINを含め、データを送信する。第2通信装置H2は、第1通信装置H1から、データFINを受信することで、対応するTCPサブフローのコネクションを解放する。本実施形態では、図9に示すように、2つのTCPサブフローのコネクションが解放されることで、第1通信装置H1と第2通信装置H2間のMPTCPコネクションが解放される。 As shown in FIG. 9, the first communication device H1 transmits data to the second communication device H2, including the data FIN as a part of DATA_SEQUCE_SIGNAL. The second communication device H2 releases the connection of the corresponding TCP subflow by receiving the data FIN from the first communication device H1. In the present embodiment, as shown in FIG. 9, the connection between the two TCP subflows is released, so that the MPTCP connection between the first communication device H1 and the second communication device H2 is released.

なお、上記のMPTCPコネクション解放処理は、第1通信装置H1のMPTCPコネクション確立処理部10、および、第1通信インターフェース15と、第2通信装置H2のMPTCPコネクション確立処理部20、および、第3通信インターフェース21とにより実行される。 The above-mentioned MPTCP connection release processing is performed by the MPTCP connection establishment processing unit 10 of the first communication device H1, the first communication interface 15, the MPTCP connection establishment processing unit 20 of the second communication device H2, and the third communication. It is executed by the interface 21.

(1.2.4:MPTCPコネクションによるスクランブルデータ転送処理)
次に、MPTCPコネクションによるスクランブルデータ転送処理について、説明する。
(12.4: Scrambled data transfer processing by MPTCP connection)
Next, the scrambled data transfer process by the MPTCP connection will be described.

第1通信装置H1は、MPTCPコネクションの確立処理時において、MP_CAPABLEオプションのフラグ、例えば、図10のフラグGを「1」にセットしたSYNセグメントを、第2通信装置H2に送信する。つまり、MP_CAPABLEオプションの所定のフラグ(上記では、フラグG)をセットすることで、スクランブル機能を用いたデータ転送を行うことを、受信側(第2通信装置H2)に通知するように予め決めておく。 The first communication device H1 transmits a flag of the MP_CAPABLE option, for example, a SYN segment in which the flag G of FIG. 10 is set to “1”, to the second communication device H2 at the time of establishing the MPTCP connection. That is, by setting a predetermined flag (flag G in the above case) of the MP_CAPABLE option, it is determined in advance to notify the receiving side (second communication device H2) that data transfer using the scramble function will be performed. back.

なお、スクランブル機能を用いたデータ転送を行うことを通知するためのフラグのパターンは、上記に限定されることはない。例えば、既に使用されている(あるいは予約されている)ビットパターン(フラグA〜Hによるビットパターン)以外のビットパターンに、各フラグの値を設定することで、送信側から受信側に、スクランブル機能を用いたデータ転送を行うことを通知するようにしてもよい。 The flag pattern for notifying that data transfer using the scramble function is performed is not limited to the above. For example, by setting the value of each flag to a bit pattern other than the bit pattern already used (or reserved) (bit pattern by flags A to H), a scramble function can be performed from the transmitting side to the receiving side. It may be notified that the data transfer is performed using.

第2通信装置H2は、上記のようにして生成されたSYNセグメントのMP_CAPABLEオプションの所定のフラグ(上記では、フラグG)がセットされていることを確認し、スクランブル機能を用いたデータの受信に備える。 The second communication device H2 confirms that a predetermined flag (flag G in the above) of the MP_CAPABLE option of the SYN segment generated as described above is set, and receives data using the scramble function. Be prepared.

≪送信側の処理≫
第1通信装置H1の送信データ取得部11は、アプリケーション部H1_apから出力される送信データData_txを入力し、送信データData_txから所定の長さ(1バイト)のデータを取得する。そして、送信データ取得部11は、取得したデータをデータD_tx[k]としてスクランブル用キーデータ生成部12およびスクランブルデータ生成部13に出力する。
≪Processing on the sending side≫
The transmission data acquisition unit 11 of the first communication device H1 inputs the transmission data Data_tx output from the application unit H1_ap, and acquires data of a predetermined length (1 byte) from the transmission data Data_tx. Then, the transmission data acquisition unit 11 outputs the acquired data as data D_tx [k] to the scramble key data generation unit 12 and the scramble data generation unit 13.

なお、以下では、送信データData_txがN1バイト(N1:自然数)のデータであり、送信データ取得部11は、送信データData_txの先頭バイト(N1−1バイト目のデータ)から0バイト目のデータまでを順番にバイト単位で取得(抽出)するものとする。 In the following, the transmission data Data_tx is N1 byte (N1: natural number) data, and the transmission data acquisition unit 11 is from the first byte (N1-1 byte data) to the 0th byte data of the transmission data Data_tx. Are sequentially acquired (extracted) in byte units.

したがって、送信データ取得部11は、最初に、送信データData_txの先頭バイト(N−1バイト目)のデータD_tx[N1−1]を取得し、スクランブル用キーデータ生成部12およびスクランブルデータ生成部13に出力する。 Therefore, the transmission data acquisition unit 11 first acquires the data D_tx [N1-1] of the first byte (N-1th byte) of the transmission data Data_tx, and the scramble key data generation unit 12 and the scramble data generation unit 13 Output to.

なお、以下では、説明便宜のため、N1=8、すなわち、送信データData_txが8バイトのデータである場合を一例として説明する。 In the following, for convenience of explanation, a case where N1 = 8, that is, the transmission data Data_tx is 8 bytes of data will be described as an example.

第1データ通信モジュール1では、スクランブルデータを作成するための初期値が設定される。具体的には、第1データ通信モジュール1は、データシーケンス番号の初期値であるIDSNを、初期値に設定する。つまり、第1データ通信モジュール1は、自装置(第1通信装置H1)のキーの値keyAに対して、SHA−1によるメッセージダイジェストを計算した結果(20バイト)の下位8バイトを、データシーケンス番号の初期値であるIDSNとする。すなわち、第1データ通信モジュール1は、
MsgDig=SHA1(keyA)
IDSN=Lower_8bytes(MsgDig)
SHA1(x):xに対するSHA−1によるメッセージダイジェストを取得する関数
Lower_8bytes(x):xの下位8バイトを取得する関数
により、IDSNを取得する。
In the first data communication module 1, initial values for creating scrambled data are set. Specifically, the first data communication module 1 sets the IDSN, which is the initial value of the data sequence number, to the initial value. That is, the first data communication module 1 sets the lower 8 bytes of the result (20 bytes) of the SHA-1 message digest calculation for the key value keyA of the own device (first communication device H1) as a data sequence. Let it be IDSN, which is the initial value of the number. That is, the first data communication module 1
MsgDig = SHA1 (keyA)
IDSN = Lower_8bytes (MsgDig)
SHA1 (x): Function to acquire a message digest by SHA-1 for x Lower_8bytes (x): Acquire IDSN by a function to acquire the lower 8 bytes of x.

スクランブル用キーデータ生成部12のシフトバッファ制御部121は、シフトバッファ122に、上記の初期値、すなわち、8バイトのデータであるIDSNを書き込む。IDSNは、D7〜D0のバイトデータから構成されているものとする。 The shift buffer control unit 121 of the scramble key data generation unit 12 writes the above initial value, that is, IDSN, which is 8-byte data, to the shift buffer 122. It is assumed that the IDSN is composed of byte data of D7 to D0.

図11は、スクランブルデータの生成処理を説明するための図であり、送信データData_txの最初(先頭)のバイトデータからスクランブルデータを生成する処理を説明するための図である(1回目の処理)。 FIG. 11 is a diagram for explaining the scramble data generation process, and is a diagram for explaining the process of generating the scramble data from the first (first) byte data of the transmission data Data_tx (first process). ..

図11に示すように、IDSNの7バイト目のデータであるD7から、順番に、IDSNの0バイト目のデータであるD0までが、シフトバッファ122に書き込まれる。 As shown in FIG. 11, from D7, which is the data of the 7th byte of the IDSN, to D0, which is the data of the 0th byte of the IDSN, are written to the shift buffer 122 in order.

なお、シフトバッファ122は、バイト単位で保持しているデータをシフトさせるバッファであり、図11の右端に新しいバイトデータが書き込まれ、図11の左方向に1バイトずつ、保持しているデータ(バイトデータ)をシフトさせるバッファである。そして、シフトバッファ122に保持されている最も古いデータ(図11の左端のバイトデータ)は、次のシフト動作が実行されると破棄される。 The shift buffer 122 is a buffer for shifting the data held in byte units, and new byte data is written at the right end of FIG. 11, and the data held one byte at a time in the left direction of FIG. 11 ( It is a buffer that shifts byte data). Then, the oldest data (byte data at the left end in FIG. 11) held in the shift buffer 122 is discarded when the next shift operation is executed.

また、説明便宜のため、シフトバッファ122は、64バイト分のデータを保持するバッファであるものとする。 Further, for convenience of explanation, the shift buffer 122 is assumed to be a buffer that holds 64 bytes of data.

スクランブル用キーデータ生成部12は、全てのバイトデータが0x00となっている状態から、シフトバッファ制御部121により、初期値であるIDSNの8バイト分のデータを、シフトバッファ122に書き込む。この処理が終了した時点で、シフトバッファ122は、図11に示した状態となる。なお、IDSNは、D7〜D0の8つの1バイトのデータからなるものとする。D7が7バイト目のデータであり、D0が0バイト目のデータである。 The scramble key data generation unit 12 writes the data for 8 bytes of the IDSN, which is the initial value, to the shift buffer 122 by the shift buffer control unit 121 from the state where all the byte data is 0x00. When this process is completed, the shift buffer 122 is in the state shown in FIG. The IDSN is composed of eight 1-byte data of D7 to D0. D7 is the 7th byte data, and D0 is the 0th byte data.

そして、第1XOR演算部123は、1回目の処理(図11に示した状態)において、シフトバッファ122の全てのバイトデータ、つまり、64個のバイトデータを読み出し、読み出した64個のバイトデータの排他的論理和をとる。つまり、第1XOR演算部123は、
Dky[N1−1]=Dbuf[63]^Dbuf[62]^・・・
^Dbuf[2]^Dbuf[1]^Dbuf[0]
に相当する論理演算を行い、1バイトのデータDky[N1−1](=Dky[7])を取得する。
Then, in the first process (state shown in FIG. 11), the first XOR calculation unit 123 reads out all the byte data of the shift buffer 122, that is, 64 byte data, and reads out 64 byte data. Take an exclusive OR. That is, the first XOR calculation unit 123
Dky [N1-1] = Dbuf [63] ^ Dbuf [62] ^ ...
^ Dbuf [2] ^ Dbuf [1] ^ Dbuf [0]
Performs a logical operation corresponding to 1 to acquire 1-byte data Dky [N1-1] (= Dky [7]).

なお、「^」は、排他的論理和をとる演算子を表している。 Note that "^" represents an operator that takes an exclusive OR.

また、Dbuf[x]は、シフトバッファ122のxバイト目のバイトデータ(1バイトのデータ)を表す。 Further, Dbuf [x] represents byte data (1 byte data) of the xth byte of the shift buffer 122.

1回目の処理(図11に示した状態)において、Dbuf[63]〜Dbuf[8]は、全て0x00であるので、
Dky[N1−1]=D7^D6^・・・^D2^D1^D0
となる。つまり、1回目の処理(図11に示した状態)では、IDSNの各バイトデータの排他的論理和をとった値が、Dky[N1−1](=Dky[7])となる。
In the first process (state shown in FIG. 11), Dbuf [63] to Dbuf [8] are all 0x00, so that
Dky [N1-1] = D7 ^ D6 ^ ... ^ D2 ^ D1 ^ D0
Will be. That is, in the first process (state shown in FIG. 11), the value obtained by taking the exclusive OR of each byte data of the IDSN becomes Dky [N1-1] (= Dky [7]).

そして、図11に示すように、第2XOR演算部131は、
D_txs[N1−1]=Dky[N1−1]^D_tx[N1−1]
に相当する処理(排他的論理和をとる処理)を実行し、D_txs[N1−1](=D_txs[7])を取得する。なお、図11では、D_txs[N1−1]をDs7と表示している。
Then, as shown in FIG. 11, the second XOR calculation unit 131
D_txs [N1-1] = Dky [N1-1] ^ D_tx [N1-1]
The process corresponding to (the process of exclusive-ORing) is executed, and D_txs [N1-1] (= D_txs [7]) is acquired. In FIG. 11, D_txs [N1-1] is displayed as Ds7.

上記の処理(1回目の処理)が完了し、D_txs[N1−1](=D_txs[7])がスクランブルデータ取得部132に入力されると、スクランブルデータ取得部132は、次の処理(2回目の処理)が実行されるように、制御信号Ctl1を、送信データ取得部11とシフトバッファ制御部121とに出力する。 When the above process (first process) is completed and D_txs [N1-1] (= D_txs [7]) is input to the scramble data acquisition unit 132, the scramble data acquisition unit 132 performs the next process (2). The control signal Ctrl1 is output to the transmission data acquisition unit 11 and the shift buffer control unit 121 so that the second process) is executed.

図12は、スクランブルデータの生成処理を説明するための図であり、送信データData_txの先頭からの2バイト目のバイトデータからスクランブルデータを生成する処理を説明するための図である(2回目の処理)。 FIG. 12 is a diagram for explaining the scramble data generation process, and is a diagram for explaining the process of generating the scramble data from the second byte data from the beginning of the transmission data Data_tx (second time). process).

送信データ取得部11は、送信データData_txから次のバイトデータD_tx[N1−2](=D_tx[6])を抽出し、シフトバッファ制御部121に出力する。 The transmission data acquisition unit 11 extracts the next byte data D_tx [N1-2] (= D_tx [6]) from the transmission data Data_tx and outputs it to the shift buffer control unit 121.

シフトバッファ制御部121は、制御信号Ctl1に従い、シフトバッファ122を1バイトシフトさせるとともに、1回目の処理で使用した送信データのバイトデータD_tx[N1−1](=D_tx[7])(図12では、「Dx7」と表示)をシフトバッファ122に書き込む。 The shift buffer control unit 121 shifts the shift buffer 122 by 1 byte according to the control signal Ctrl1 and byte data D_tx [N1-1] (= D_tx [7]) of the transmission data used in the first processing (FIG. 12). Then, "Dx7" is displayed) is written in the shift buffer 122.

そして、第1XOR演算部123は、2回目の処理(図12に示した状態)において、シフトバッファ122の全てのバイトデータ、つまり、64個のバイトデータを読み出し、読み出した64個のバイトデータの排他的論理和をとる。つまり、第1XOR演算部123は、
Dky[N1−2]=Dbuf[63]^Dbuf[62]^・・・
^Dbuf[2]^Dbuf[1]^Dbuf[0]
に相当する論理演算を行い、1バイトのデータDky[N1−2](=Dky[6])を取得する。
Then, in the second process (state shown in FIG. 12), the first XOR calculation unit 123 reads out all the byte data of the shift buffer 122, that is, 64 byte data, and reads out 64 byte data. Take an exclusive OR. That is, the first XOR calculation unit 123
Dky [N1-2] = Dbuf [63] ^ Dbuf [62] ^ ...
^ Dbuf [2] ^ Dbuf [1] ^ Dbuf [0]
Performs a logical operation corresponding to 1 to acquire 1-byte data Dky [N1-2] (= Dky [6]).

2回目の処理(図12に示した状態)において、Dbuf[63]〜Dbuf[9]は、全て0x00であるので、
Dky[N1−2]=D7^D6^・・・^D2^D1^D0^Dx7
となる。つまり、2回目の処理(図12に示した状態)では、IDSNの各バイトデータと送信データのバイトデータD_tx[N1−2](=D_tx[6]=Dx6)との排他的論理和をとった値が、Dky[N1−2](=Dky[6])となる。
In the second process (state shown in FIG. 12), Dbuf [63] to Dbuf [9] are all 0x00, so that
Dky [N1-2] = D7 ^ D6 ^ ... ^ D2 ^ D1 ^ D0 ^ Dx7
Will be. That is, in the second process (state shown in FIG. 12), the exclusive OR of each byte data of the IDSN and the byte data D_tx [N1-2] (= D_tx [6] = Dx6) of the transmission data is taken. The value is Dky [N1-2] (= Dky [6]).

そして、図12に示すように、第2XOR演算部131は、
D_txs[N1−2]=Dky[N1−2]^D_tx[N1−2]
に相当する処理(排他的論理和をとる処理)を実行し、D_txs[N1−2](=D_txs[6])を取得する。なお、図12では、D_txs[N1−2]をDs6と表示している。
Then, as shown in FIG. 12, the second XOR calculation unit 131
D_txs [N1-2] = Dky [N1-2] ^ D_tx [N1-2]
The process corresponding to (the process of exclusive-ORing) is executed, and D_txs [N1-2] (= D_txs [6]) is acquired. In FIG. 12, D_txs [N1-2] is displayed as Ds6.

上記の処理(2回目の処理)が完了し、D_txs[N1−2](=D_txs[6])がスクランブルデータ取得部132に入力されると、スクランブルデータ取得部132は、次の処理(3回目の処理)が実行されるように、制御信号Ctl1を、送信データ取得部11とシフトバッファ制御部121とに出力する。 When the above process (second process) is completed and D_txs [N1-2] (= D_txs [6]) is input to the scramble data acquisition unit 132, the scramble data acquisition unit 132 performs the next process (3). The control signal Ctrl1 is output to the transmission data acquisition unit 11 and the shift buffer control unit 121 so that the second process) is executed.

図13は、スクランブルデータの生成処理を説明するための図であり、送信データData_txの先頭からの3バイト目のバイトデータからスクランブルデータを生成する処理を説明するための図である(3回目の処理)。 FIG. 13 is a diagram for explaining the scramble data generation process, and is a diagram for explaining the process of generating the scramble data from the byte data of the third byte from the beginning of the transmission data Data_tx (third time). process).

送信データ取得部11は、送信データData_txから次のバイトデータD_tx[N1−3](=D_tx[5])を抽出し、シフトバッファ制御部121に出力する。 The transmission data acquisition unit 11 extracts the next byte data D_tx [N1-3] (= D_tx [5]) from the transmission data Data_tx and outputs it to the shift buffer control unit 121.

シフトバッファ制御部121は、制御信号Ctl1に従い、シフトバッファ122を1バイトシフトさせるとともに、2回目の処理で使用した送信データのバイトデータD_tx[N1−2](=D_tx[6])(図13では、「Dx6」と表示)をシフトバッファ122に書き込む。 The shift buffer control unit 121 shifts the shift buffer 122 by 1 byte according to the control signal Ctrl1 and byte data D_tx [N1-2] (= D_tx [6]) of the transmission data used in the second processing (FIG. 13). Then, "Dx6" is displayed) is written in the shift buffer 122.

そして、第1XOR演算部123は、3回目の処理(図13に示した状態)において、シフトバッファ122の全てのバイトデータ、つまり、64個のバイトデータを読み出し、読み出した64個のバイトデータの排他的論理和をとる。つまり、第1XOR演算部123は、
Dky[N1−3]=Dbuf[63]^Dbuf[62]^・・・
^Dbuf[2]^Dbuf[1]^Dbuf[0]
に相当する論理演算を行い、1バイトのデータDky[N1−3](=Dky[5])を取得する。
Then, in the third process (state shown in FIG. 13), the first XOR calculation unit 123 reads out all the byte data of the shift buffer 122, that is, 64 byte data, and reads out 64 byte data. Take an exclusive OR. That is, the first XOR calculation unit 123
Dky [N1-3] = Dbuf [63] ^ Dbuf [62] ^ ...
^ Dbuf [2] ^ Dbuf [1] ^ Dbuf [0]
Performs a logical operation corresponding to 1 to acquire 1-byte data Dky [N1-3] (= Dky [5]).

3回目の処理(図13に示した状態)において、Dbuf[63]〜Dbuf[10]は、全て0x00であるので、
Dky[N1−3]=D7^D6^・・・^D2^D1^D0^Dx7^Dx6
となる。つまり、3回目の処理(図13に示した状態)では、IDSNの各バイトデータと送信データのバイトデータD_tx[N1−3](=D_tx[5]=Dx5)との排他的論理和をとった値が、Dky[N1−3](=Dky[5])となる。
In the third process (state shown in FIG. 13), Dbuf [63] to Dbuf [10] are all 0x00, so that
Dky [N1-3] = D7 ^ D6 ^ ... ^ D2 ^ D1 ^ D0 ^ Dx7 ^ Dx6
Will be. That is, in the third process (state shown in FIG. 13), the exclusive OR of each byte data of the IDSN and the byte data D_tx [N1-3] (= D_tx [5] = Dx5) of the transmission data is taken. The value is Dky [N1-3] (= Dky [5]).

そして、図13に示すように、第2XOR演算部131は、
D_txs[N1−3]=Dky[N1−3]^D_tx[N1−3]
に相当する処理(排他的論理和をとる処理)を実行し、D_txs[N1−3](=D_txs[5])を取得する。なお、図13では、D_txs[N1−3]をDs5と表示している。
Then, as shown in FIG. 13, the second XOR calculation unit 131
D_txs [N1-3] = Dky [N1-3] ^ D_tx [N1-3]
The process corresponding to (the process of exclusive-ORing) is executed, and D_txs [N1-3] (= D_txs [5]) is acquired. In FIG. 13, D_txs [N1-3] is displayed as Ds5.

上記の処理(3回目の処理)が完了し、D_txs[N1−3](=D_txs[5])がスクランブルデータ取得部132に入力されると、スクランブルデータ取得部132は、次の処理(4回目の処理)が実行されるように、制御信号Ctl1を、送信データ取得部11とシフトバッファ制御部121とに出力する。 When the above process (third process) is completed and D_txs [N1-3] (= D_txs [5]) is input to the scramble data acquisition unit 132, the scramble data acquisition unit 132 performs the next process (4). The control signal Ctrl1 is output to the transmission data acquisition unit 11 and the shift buffer control unit 121 so that the second process) is executed.

上記と同様の処理を繰り返すことで、スクランブルデータData_txsが取得される。 By repeating the same process as above, scramble data Data_txs is acquired.

そして、N1バイト(=8バイト)分のバイトデータが揃うと、スクランブルデータ取得部132は、スクランブルデータData_txsをTCPサブフローデータ生成部14に出力する。 Then, when the byte data for N1 bytes (= 8 bytes) is prepared, the scramble data acquisition unit 132 outputs the scramble data Data_txs to the TCP subflow data generation unit 14.

TCPサブフローデータ生成部14は、送信用データD_txsから、複数のTCPサブフローで送信可能なデータを取得する。本実施形態では、TCPサブフローの数は「2」であるため、TCPサブフローデータ生成部14は、送信用データD_txsから、2つのTCPサブフローで送信可能なデータD_txs_sub1およびD_txs_sub2を取得する。そして、TCPサブフローデータ生成部14は、TCPサブフロー用データD_txs_sub1を第1通信インターフェース15に出力し、TCPサブフロー用データD_txs_sub2を第2通信インターフェース16に出力する。 The TCP subflow data generation unit 14 acquires data that can be transmitted by a plurality of TCP subflows from the transmission data D_txs. In the present embodiment, since the number of TCP subflows is "2", the TCP subflow data generation unit 14 acquires the data D_txs_sub1 and D_txs_sub2 that can be transmitted by the two TCP subflows from the transmission data D_txs. Then, the TCP subflow data generation unit 14 outputs the TCP subflow data D_txs_sub1 to the first communication interface 15, and outputs the TCP subflow data D_txs_sub2 to the second communication interface 16.

第1通信インターフェース15は、TCPサブフローデータ生成部14から出力されるTCPサブフロー用データD_txs_sub1を入力し、TCPサブフロー用データD_txs_sub1に基づいて、送信用データD_sub1を生成する。そして、第1通信インターフェース15は、生成した送信用データD_sub1を通信相手となる第2通信装置H2に送信する。このとき、第1通信インターフェース15は、第1通信装置H1のアドレスA1と第2通信装置H2のアドレスBとの間に確立されているTCPサブフローのコネクションのコネクションと使って、データ送信を行う。 The first communication interface 15 inputs the TCP subflow data D_txs_sub1 output from the TCP subflow data generation unit 14, and generates the transmission data D_sub1 based on the TCP subflow data D_txs_sub1. Then, the first communication interface 15 transmits the generated transmission data D_sub1 to the second communication device H2 which is a communication partner. At this time, the first communication interface 15 transmits data by using the connection of the TCP subflow connection established between the address A1 of the first communication device H1 and the address B of the second communication device H2.

第2通信インターフェース16は、TCPサブフローデータ生成部14から出力されるTCPサブフロー用データD_txs_sub2を入力し、TCPサブフロー用データD_txs_sub2に基づいて、送信用データD_sub2を生成し、生成した送信用データD_sub2を通信相手となる第2通信装置H2に送信する。このとき、第2通信インターフェース16は、第1通信装置H1のアドレスA2と第2通信装置H2のアドレスBとの間に確立されているTCPサブフローのコネクションを使って、データ送信を行う。 The second communication interface 16 inputs TCP subflow data D_txs_sub2 output from the TCP subflow data generation unit 14, generates transmission data D_sub2 based on TCP subflow data D_txs_sub2, and generates transmission data D_sub2. It transmits to the second communication device H2 which is the communication partner. At this time, the second communication interface 16 transmits data using the TCP subflow connection established between the address A2 of the first communication device H1 and the address B of the second communication device H2.

なお、アプリケーション部H1_apが、次の送信データData_rxを送信することを第1データ通信モジュールに要求した場合、その時点のシフトバッファ122(送信用スクランブルバッファ)に格納されているバイトデータを用いて、上記と同様の処理を行い、スクランブル用のキーデータのバイトデータDky[k]を取得し、当該バイトデータを用いて、上記と同様の処理により、送信データのスクランブル化処理を実行すればよい。 When the application unit H1_ap requests the first data communication module to transmit the next transmission data Data_rx, the byte data stored in the shift buffer 122 (transmission scramble buffer) at that time is used. The same processing as above may be performed to acquire the byte data Dky [k] of the key data for scrambling, and the transmission data may be scrambled by the same processing as above using the byte data.

≪受信側の処理≫
第2通信装置H2の第3通信インターフェース21は、第1通信装置H1のアドレスA1と第2通信装置H2のアドレスBとの間に確立されているTCPサブフローのコネクションを使って、第1通信装置H1から送信されるデータD_sub1を受信する。そして、第3通信インターフェース21は、受信したデータをデータD_rxs_sub1としてMPTCPデータ取得部23に出力する。
≪Processing on the receiving side≫
The third communication interface 21 of the second communication device H2 uses the TCP subflow connection established between the address A1 of the first communication device H1 and the address B of the second communication device H2 to use the first communication device. Receives the data D_sub1 transmitted from H1. Then, the third communication interface 21 outputs the received data as data D_rxs_sub1 to the MPTCP data acquisition unit 23.

第2通信装置H2の第4通信インターフェース22は、第1通信装置H1のアドレスA2と第2通信装置H2のアドレスBとの間に確立されているTCPサブフローのコネクションを使って、第1通信装置H1から送信されるデータD_sub2を受信する。そして、第4通信インターフェース22は、受信したデータをデータD_rxs_sub2としてMPTCPデータ取得部23に出力する。 The fourth communication interface 22 of the second communication device H2 uses the TCP subflow connection established between the address A2 of the first communication device H1 and the address B of the second communication device H2 to use the first communication device. Receives the data D_sub2 transmitted from H1. Then, the fourth communication interface 22 outputs the received data as data D_rxs_sub2 to the MPTCP data acquisition unit 23.

MPTCPデータ取得部23は、第3通信インターフェース21から出力されるデータD_rxs_sub1と、第4通信インターフェース22から出力されるデータD_rxs_sub2と、を入力する。MPTCPデータ取得部23は、TCPサブフローデータであるデータD_rxs_sub1と、データD_rxs_sub2とを、データシーケンス番号の順に並べる処理を実行することで、MPTCPデータD_rxsを取得する。そして、MPTCPデータ取得部23は、取得したMPTCPデータD_rxsをデスクランブルデータ取得部24に出力する。 The MPTCP data acquisition unit 23 inputs data D_rxs_sub1 output from the third communication interface 21 and data D_rxs_sub2 output from the fourth communication interface 22. The MPTCP data acquisition unit 23 acquires MPTCP data D_rxs by executing a process of arranging the data D_rxs_sub1 and the data D_rxs_sub2, which are TCP subflow data, in the order of the data sequence numbers. Then, the MPTCP data acquisition unit 23 outputs the acquired MPTCP data D_rxs to the descramble data acquisition unit 24.

デスクランブルデータ取得部24のバイトデータ抽出部241は、MPTCPデータ取得部23から出力されるデータD_rxsから、所定の単位のデータ長(1バイト)のデータを抽出し、抽出したデータをデータD_rxs[k]として、第3XOR演算部242に出力する。 The byte data extraction unit 241 of the descramble data acquisition unit 24 extracts data having a data length (1 byte) of a predetermined unit from the data D_rxs output from the MPTCP data acquisition unit 23, and extracts the extracted data into data D_rxs [ As k], it is output to the third XOR calculation unit 242.

第3XOR演算部242は、データD_rxs[k]と、データDky[k]とを用いて論理演算処理(例えば、XOR演算)を行い、当該論理演算処理の結果をデータD_rx[k]として受信データ取得部26に出力する。 The third XOR operation unit 242 performs a logical operation process (for example, an XOR operation) using the data D_rxs [k] and the data Dky [k], and receives the result of the logical operation process as the data D_rx [k]. Output to the acquisition unit 26.

第2データ通信モジュール2では、スクランブルデータを作成するための初期値が設定される。具体的には、第2データ通信モジュール2は、データシーケンス番号の初期値であるIDSNを、初期値に設定する。つまり、第2データ通信モジュール2は、通信相手である第2通信装置H2のキーの値keyAに対して、SHA−1によるメッセージダイジェストを計算した結果(20バイト)の下位8バイトを、データシーケンス番号の初期値であるIDSNとする。すなわち、第2データ通信モジュール2は、
MsgDig=SHA1(keyA)
IDSN=Lower_8bytes(MsgDig)
SHA1(x):xに対するSHA−1によるメッセージダイジェストを取得する関数
Lower_8bytes(x):xの下位8バイトを取得する関数
により、IDSNを取得する。
In the second data communication module 2, initial values for creating scrambled data are set. Specifically, the second data communication module 2 sets the IDSN, which is the initial value of the data sequence number, to the initial value. That is, the second data communication module 2 sets the lower 8 bytes of the result (20 bytes) of the result of calculating the message digest by SHA-1 with respect to the key value keyA of the second communication device H2, which is the communication partner, as a data sequence. Let it be IDSN, which is the initial value of the number. That is, the second data communication module 2
MsgDig = SHA1 (keyA)
IDSN = Lower_8bytes (MsgDig)
SHA1 (x): Function to acquire a message digest by SHA-1 for x Lower_8bytes (x): Acquire IDSN by a function to acquire the lower 8 bytes of x.

スクランブル用キーデータ生成部25のシフトバッファ制御部251は、シフトバッファ122に、上記の初期値、すなわち、8バイトのデータであるIDSNを書き込む。IDSNは、D7〜D0のバイトデータから構成されているものとする。 The shift buffer control unit 251 of the scramble key data generation unit 25 writes the above initial value, that is, IDSN, which is 8-byte data, to the shift buffer 122. It is assumed that the IDSN is composed of byte data of D7 to D0.

図14は、デスクランブルデータの取得処理を説明するための図であり、受信したスクランブルデータData_rxsの最初(先頭)のバイトデータからデスクランブルされたデータを生成する処理を説明するための図である(1回目の処理(受信側))。 FIG. 14 is a diagram for explaining a process of acquiring descrambled data, and is a diagram for explaining a process of generating descrambled data from the first (first) byte data of the received scrambled data Data_rxs. (First process (reception side)).

図14に示すように、IDSNの7バイト目のデータであるD7から、順番に、IDSNの0バイト目のデータであるD0までが、シフトバッファ252に書き込まれる。 As shown in FIG. 14, from D7, which is the data of the 7th byte of the IDSN, to D0, which is the data of the 0th byte of the IDSN, are written to the shift buffer 252 in order.

なお、シフトバッファ252は、バイト単位で保持しているデータをシフトさせるバッファであり、図14の右端に新しいバイトデータが書き込まれ、図14の左方向に1バイトずつ、保持しているデータ(バイトデータ)をシフトさせるバッファである。そして、シフトバッファ122に保持されている最も古いデータ(図14の左端のバイトデータ)は、次のシフト動作が実行されると破棄される。 The shift buffer 252 is a buffer for shifting the data held in byte units, and new byte data is written at the right end of FIG. 14, and the data held one byte at a time in the left direction of FIG. 14 ( It is a buffer that shifts byte data). Then, the oldest data (byte data at the left end in FIG. 14) held in the shift buffer 122 is discarded when the next shift operation is executed.

また、シフトバッファ252は、送信側のシフトバッファ122と同じく64バイト分のデータを保持するバッファである。 Further, the shift buffer 252 is a buffer that holds 64 bytes of data like the shift buffer 122 on the transmitting side.

スクランブル用キーデータ生成部25は、全てのバイトデータが0x00となっている状態から、シフトバッファ制御部251により、初期値であるIDSNの8バイト分のデータを、シフトバッファ252に書き込む。この処理が終了した時点で、シフトバッファ252は、図14に示した状態となる。なお、IDSNは、D7〜D0の8つの1バイトのデータからなるものとする。D7が7バイト目のデータであり、D0が0バイト目のデータである。 The scramble key data generation unit 25 writes the data for 8 bytes of the IDSN, which is the initial value, to the shift buffer 252 by the shift buffer control unit 251 from the state where all the byte data is 0x00. When this process is completed, the shift buffer 252 is in the state shown in FIG. The IDSN is composed of eight 1-byte data of D7 to D0. D7 is the 7th byte data, and D0 is the 0th byte data.

そして、第1XOR演算部253は、1回目の処理(図14に示した状態)において、シフトバッファ252の全てのバイトデータ、つまり、64個のバイトデータを読み出し、読み出した64個のバイトデータの排他的論理和をとる。つまり、第1XOR演算部253は、
Dky[N1−1]=Dbuf[63]^Dbuf[62]^・・・
^Dbuf[2]^Dbuf[1]^Dbuf[0]
に相当する論理演算を行い、1バイトのデータDky[N1−1](=Dky[7])を取得する。
Then, in the first process (state shown in FIG. 14), the first XOR calculation unit 253 reads out all the byte data of the shift buffer 252, that is, 64 byte data, and reads out 64 byte data. Take an exclusive OR. That is, the first XOR calculation unit 253
Dky [N1-1] = Dbuf [63] ^ Dbuf [62] ^ ...
^ Dbuf [2] ^ Dbuf [1] ^ Dbuf [0]
Performs a logical operation corresponding to 1 to acquire 1-byte data Dky [N1-1] (= Dky [7]).

なお、「^」は、排他的論理和をとる演算子を表している。 Note that "^" represents an operator that takes an exclusive OR.

また、Dbuf[x]は、シフトバッファ122のxバイト目のバイトデータ(1バイトのデータ)を表す。 Further, Dbuf [x] represents byte data (1 byte data) of the xth byte of the shift buffer 122.

1回目の処理(図14に示した状態)において、Dbuf[63]〜Dbuf[8]は、全て0x00であるので、
Dky[N1−1]=D7^D6^・・・^D2^D1^D0
となる。つまり、1回目の処理(図14に示した状態)では、IDSNの各バイトデータの排他的論理和をとった値が、Dky[N1−1](=Dky[7])となる。
In the first process (state shown in FIG. 14), Dbuf [63] to Dbuf [8] are all 0x00, so that
Dky [N1-1] = D7 ^ D6 ^ ... ^ D2 ^ D1 ^ D0
Will be. That is, in the first process (state shown in FIG. 14), the value obtained by taking the exclusive OR of each byte data of the IDSN becomes Dky [N1-1] (= Dky [7]).

そして、図14に示すように、第3XOR演算部242は、
D_rx[N1−1]=Dky[N1−1]^D_rxs[N1−1]
に相当する処理(排他的論理和をとる処理)を実行し、D_rx[N1−1](=D_rx[7])を取得する。なお、図14では、D_rxs[N1−1]をDs7と表示し、D_rx[N1−1]をDx7と表示している。
Then, as shown in FIG. 14, the third XOR calculation unit 242
D_rx [N1-1] = Dky [N1-1] ^ D_rxs [N1-1]
The process corresponding to (the process of exclusive-ORing) is executed, and D_rx [N1-1] (= D_rx [7]) is acquired. In FIG. 14, D_rxs [N1-1] is displayed as Ds7, and D_rx [N1-1] is displayed as Dx7.

上記の処理(1回目の処理)が完了し、D_rx[N1−1](=D_rx[7])が受信データ取得部26に入力されると、受信データ取得部26は、次の処理(2回目の処理)が実行されるように、制御信号Ctl3を、デスクランブルデータ取得部24とシフトバッファ制御部251とに出力する。 When the above process (first process) is completed and D_rx [N1-1] (= D_rx [7]) is input to the received data acquisition unit 26, the received data acquisition unit 26 performs the next process (2). The control signal Ctrl3 is output to the descramble data acquisition unit 24 and the shift buffer control unit 251 so that the second process) is executed.

図15は、デスクランブルデータの取得処理を説明するための図であり、受信したスクランブルデータData_rxsの先頭から2バイト目のバイトデータからデスクランブルされたデータを生成する処理を説明するための図である(2回目の処理(受信側))。 FIG. 15 is a diagram for explaining the process of acquiring the descrambled data, and is a diagram for explaining the process of generating the descrambled data from the byte data of the second byte from the beginning of the received scrambled data Data_rxs. Yes (second processing (reception side)).

バイトデータ抽出部241は、受信したスクランブルデータData_txsから次のバイトデータD_txs[N1−2](=D_txs[6]=Ds6)を抽出し、第3XOR演算部242に出力する。 The byte data extraction unit 241 extracts the next byte data D_txs [N1-2] (= D_txs [6] = Ds6) from the received scrambled data Data_txs and outputs it to the third XOR calculation unit 242.

シフトバッファ制御部251は、制御信号Ctl3に従い、シフトバッファ252を1バイトシフトさせるとともに、1回目の処理で取得した受信データのバイトデータD_rx[N1−1](=D_rx[7])(図15では、「Dx7」と表示)をシフトバッファ252に書き込む。 The shift buffer control unit 251 shifts the shift buffer 252 by 1 byte according to the control signal Ctrl3, and the byte data D_rx [N1-1] (= D_rx [7]) of the received data acquired in the first process (FIG. 15). Then, "Dx7" is displayed) is written in the shift buffer 252.

そして、第1XOR演算部253は、2回目の処理(図15に示した状態)において、シフトバッファ252の全てのバイトデータ、つまり、64個のバイトデータを読み出し、読み出した64個のバイトデータの排他的論理和をとる。つまり、第1XOR演算部253は、
Dky[N1−2]=Dbuf[63]^Dbuf[62]^・・・
^Dbuf[2]^Dbuf[1]^Dbuf[0]
に相当する論理演算を行い、1バイトのデータDky[N1−2](=Dky[6])を取得する。
Then, in the second processing (state shown in FIG. 15), the first XOR calculation unit 253 reads out all the byte data of the shift buffer 252, that is, 64 byte data, and reads out 64 byte data. Take an exclusive OR. That is, the first XOR calculation unit 253
Dky [N1-2] = Dbuf [63] ^ Dbuf [62] ^ ...
^ Dbuf [2] ^ Dbuf [1] ^ Dbuf [0]
Performs a logical operation corresponding to 1 to acquire 1-byte data Dky [N1-2] (= Dky [6]).

2回目の処理(図15に示した状態)において、Dbuf[63]〜Dbuf[9]は、全て0x00であるので、
Dky[N1−2]=D7^D6^・・・^D2^D1^D0^Dx7
となる。つまり、2回目の処理(図15に示した状態)では、IDSNの各バイトデータと受信したスクランブルデータのバイトデータD_rxs[N1−2](=D_rxs[6]=Ds6)との排他的論理和をとった値が、Drx[N1−2](=Dx[6]=Dx6)となる。
In the second process (state shown in FIG. 15), Dbuf [63] to Dbuf [9] are all 0x00, so that
Dky [N1-2] = D7 ^ D6 ^ ... ^ D2 ^ D1 ^ D0 ^ Dx7
Will be. That is, in the second process (state shown in FIG. 15), the exclusive OR of each byte data of the IDSN and the byte data D_rxs [N1-2] (= D_rxs [6] = Ds6) of the received scrambled data. The value obtained by taking is Drx [N1-2] (= Dx [6] = Dx6).

そして、図15に示すように、第3XOR演算部242は、
D_rx[N1−2]=Dky[N1−2]^D_rxs[N1−2]
に相当する処理(排他的論理和をとる処理)を実行し、D_rx[N1−2](=D_rx[6]=Dx6)を取得する。
Then, as shown in FIG. 15, the third XOR calculation unit 242
D_rx [N1-2] = Dky [N1-2] ^ D_rxs [N1-2]
The process corresponding to (the process of exclusive-ORing) is executed, and D_rx [N1-2] (= D_rx [6] = Dx6) is acquired.

上記の処理(2回目の処理)が完了し、D_rx[N1−2](=D_rx[6])が受信データ取得部26に入力されると、受信データ取得部26は、次の処理(3回目の処理)が実行されるように、制御信号Ctl3を、デスクランブルデータ取得部24とシフトバッファ制御部251とに出力する。 When the above process (second process) is completed and D_rx [N1-2] (= D_rx [6]) is input to the received data acquisition unit 26, the received data acquisition unit 26 performs the next process (3). The control signal Ctrl3 is output to the descramble data acquisition unit 24 and the shift buffer control unit 251 so that the second process) is executed.

図16は、デスクランブルデータの取得処理を説明するための図であり、受信したスクランブルデータData_rxsの先頭から3バイト目のバイトデータからデスクランブルされたデータを生成する処理を説明するための図である(3回目の処理(受信側))。 FIG. 16 is a diagram for explaining the process of acquiring the descrambled data, and is a diagram for explaining the process of generating the descrambled data from the byte data of the third byte from the beginning of the received scrambled data Data_rxs. Yes (third processing (reception side)).

バイトデータ抽出部241は、受信したスクランブルデータData_txsから次のバイトデータD_txs[N1−3](=D_txs[5]=Ds5)を抽出し、第3XOR演算部242に出力する。 The byte data extraction unit 241 extracts the next byte data D_txs [N1-3] (= D_txs [5] = Ds5) from the received scrambled data Data_txs and outputs it to the third XOR calculation unit 242.

シフトバッファ制御部251は、制御信号Ctl3に従い、シフトバッファ252を1バイトシフトさせるとともに、2回目の処理で取得した受信データのバイトデータD_rx[N1−2](=D_rx[6]=Dx7)をシフトバッファ252に書き込む。 The shift buffer control unit 251 shifts the shift buffer 252 by 1 byte according to the control signal Ctrl3, and shifts the byte data D_rx [N1-2] (= D_rx [6] = Dx7) of the received data acquired in the second process. Write to shift buffer 252.

そして、第1XOR演算部253は、3回目の処理(図16に示した状態)において、シフトバッファ252の全てのバイトデータ、つまり、64個のバイトデータを読み出し、読み出した64個のバイトデータの排他的論理和をとる。つまり、第1XOR演算部253は、
Dky[N1−3]=Dbuf[63]^Dbuf[62]^・・・
^Dbuf[2]^Dbuf[1]^Dbuf[0]
に相当する論理演算を行い、1バイトのデータDky[N1−3](=Dky[5])を取得する。
Then, in the third process (state shown in FIG. 16), the first XOR calculation unit 253 reads out all the byte data of the shift buffer 252, that is, 64 byte data, and reads out 64 byte data. Take an exclusive OR. That is, the first XOR calculation unit 253
Dky [N1-3] = Dbuf [63] ^ Dbuf [62] ^ ...
^ Dbuf [2] ^ Dbuf [1] ^ Dbuf [0]
Performs a logical operation corresponding to 1 to acquire 1-byte data Dky [N1-3] (= Dky [5]).

3回目の処理(図16に示した状態)において、Dbuf[63]〜Dbuf[10]は、全て0x00であるので、
Dky[N1−3]=D7^D6^・・・^D2^D1^D0^Dx7^Dx6
となる。つまり、3回目の処理(図16に示した状態)では、IDSNの各バイトデータと受信したスクランブルデータのバイトデータD_rxs[N1−3](=D_rxs[5]=Ds5)との排他的論理和をとった値が、Drx[N1−3](=Dx[5]=Dx5)となる。
In the third process (state shown in FIG. 16), Dbuf [63] to Dbuf [10] are all 0x00, so that
Dky [N1-3] = D7 ^ D6 ^ ... ^ D2 ^ D1 ^ D0 ^ Dx7 ^ Dx6
Will be. That is, in the third process (state shown in FIG. 16), the exclusive OR of each byte data of the IDSN and the byte data D_rxs [N1-3] (= D_rxs [5] = Ds5) of the received scrambled data. The value obtained by taking is Drx [N1-3] (= Dx [5] = Dx5).

そして、図16に示すように、第3XOR演算部242は、
D_rx[N1−3]=Dky[N1−3]^D_rxs[N1−3]
に相当する処理(排他的論理和をとる処理)を実行し、D_rx[N1−3](=D_rx[5]=Dx5)を取得する。
Then, as shown in FIG. 16, the third XOR calculation unit 242
D_rx [N1-3] = Dky [N1-3] ^ D_rxs [N1-3]
The process corresponding to (the process of exclusive-ORing) is executed, and D_rx [N1-3] (= D_rx [5] = Dx5) is acquired.

上記の処理(3回目の処理)が完了し、D_rx[N1−3](=D_rx[5])が受信データ取得部26に入力されると、受信データ取得部26は、次の処理(4回目の処理)が実行されるように、制御信号Ctl3を、デスクランブルデータ取得部24とシフトバッファ制御部251とに出力する。 When the above process (third process) is completed and D_rx [N1-3] (= D_rx [5]) is input to the received data acquisition unit 26, the received data acquisition unit 26 performs the next process (4). The control signal Ctrl3 is output to the descramble data acquisition unit 24 and the shift buffer control unit 251 so that the second process) is executed.

上記と同様の処理を繰り返すことで、デスクランブルされた受信データData_rxが取得される。 By repeating the same process as above, the descrambled received data Data_rx is acquired.

このように、通信システム1000では、送信側と受信側とで、同じスクランブル用のキーデータであるデータDky[k]を用いて、排他的論理和をとる処理を行うので、送信側(第1通信装置H1)でスクランブルされたデータを、受信側(第2通信装置H2)でデスクランブルして、元のデータに戻すことができる。 In this way, in the communication system 1000, the transmitting side and the receiving side perform a process of exclusive-oring using the data Dky [k], which is the same key data for scrambling, so that the transmitting side (first). The data scrambled by the communication device H1) can be descrambled on the receiving side (second communication device H2) and returned to the original data.

つまり、通信システム1000では、送信側(第1通信装置H1)で
D_txs[k]=D_tx[k]^Dky[k]
に相当する処理を行うことで、送信データのバイトデータD_tx[k]からスクランブル化された送信データのバイトデータD_txs[k]が取得され、
受信側(第2通信装置H2)で
D_rx[k]=D_txs[k]^Dky[k]
に相当する処理を行うことで、スクランブル化された送信データのバイトデータD_txs[k](=D_rxs[k])をデスクランブルして、送信データのバイトデータD_tx[k]と一致する受信データのバイトデータD_rx[k]を取得できる。
That is, in the communication system 1000, D_txs [k] = D_tx [k] ^ Dky [k] on the transmitting side (first communication device H1).
By performing the process corresponding to, the scrambled byte data D_txs [k] of the transmitted data is acquired from the byte data D_tx [k] of the transmission data.
D_rx [k] = D_txs [k] ^ Dky [k] on the receiving side (second communication device H2)
By performing the process corresponding to, the scrambled byte data D_txs [k] (= D_rxs [k]) of the transmitted data is descrambled, and the received data that matches the byte data D_tx [k] of the transmitted data Byte data D_rx [k] can be acquired.

そして、通信システム1000では、送信側のスクランブル処理に使用されるスクランブル用のキーデータであるデータDky[k]の初期値を、送信側(第1通信装置H1)のIDSN(8バイトデータ)の各バイトの排他的論理和をとる処理を行うことで取得した1バイトのデータDky[k]とする。そして、次の送信データのバイトデータD_tx[k+1]のスクランブル化処理には、スクランブル化処理が済んだ送信データのバイトデータD_tx[k]と送信側(第1通信装置H1)のIDSN(8バイトデータ)の各バイトの排他的論理和をとる処理を行うことで取得した1バイトのデータDky[k+1]をスクランブルキーデータとする。 Then, in the communication system 1000, the initial value of the data Dky [k], which is the key data for scrambling used for the scrambling process on the transmitting side, is set to the IDSN (8-byte data) of the transmitting side (first communication device H1). The 1-byte data Dky [k] obtained by performing the process of exclusive-oring each byte is used. Then, in the scrambling process of the next transmission data byte data D_tx [k + 1], the scrambled transmission data byte data D_tx [k] and the IDSN (8 bytes) of the transmitting side (first communication device H1) are used. The 1-byte data Dky [k + 1] acquired by performing the process of exclusive-oring each byte of the data) is used as the scramble key data.

通信システム1000では、受信側のデスクランブル処理に使用されるスクランブルキーデータDkyを、上記の送信側のスクランブル処理に使用されるスクランブル用のキーデータDkyと同じにする。したがって、通信システム1000では、送信側でスクランブル化されたデータが、受信側でデスクランブルして、元のデータに戻すことができる。 In the communication system 1000, the scramble key data Dky used for the scramble processing on the receiving side is made the same as the key data Dky for scrambling used for the scrambling processing on the transmitting side. Therefore, in the communication system 1000, the data scrambled on the transmitting side can be descrambled on the receiving side and returned to the original data.

さらに、通信システム1000では、スクランブルキーデータのバイトデータが、既にスクランブル化処理された送信データのバイトデータ(既にデスクランブルされた受信データのバイトデータ)を用いて、常に更新されるため、スクランブルキーデータの値が常に変化する。したがって、通信システム1000では、セキュリティ強度の高いスクランブル化処理を実現することができる。 Further, in the communication system 1000, the byte data of the scrambled key data is constantly updated by using the byte data of the transmitted data that has already been scrambled (the byte data of the received data that has already been descrambled), so that the scramble key is used. The value of the data is constantly changing. Therefore, in the communication system 1000, scrambling processing with high security strength can be realized.

また、通信システム1000では、上記のようにしてスクランブル化処理された送信データは、MPTCPにより、複数のTCPサブフローにより、分散して、送信側から受信側に送信されるため、通信経路の途中で、一部のデータが盗聴、傍受されたとしても、元のデータに戻すことができない。 Further, in the communication system 1000, the transmission data scrambled as described above is distributed by MPTCP by a plurality of TCP subflows and transmitted from the transmission side to the reception side, so that the transmission data is transmitted in the middle of the communication path. , Even if some data is eavesdropped or intercepted, the original data cannot be restored.

さらに、通信システム1000では、MPTCPコネクションの確立処理時において、MP_CAPABLEオプションの所定のフラグを所定の値にセットしたSYNセグメント(例えば、フラグGを「1」に設定したMP_CAPABLEオプションを含むSYNセグメント)を生成し、当該SYNセグメントを送信側(第1通信装置H1)から受信側(第2通信装置H2)に送信する。これにより、通信システム1000では、スクランブル機能を用いたデータ転送を行うことを、送信側(第1通信装置H1)から受信側(第2通信装置H2)に通知する。 Further, in the communication system 1000, at the time of establishing the MPTCP connection, a SYN segment in which a predetermined flag of the MP_CAPABLE option is set to a predetermined value (for example, a SYN segment including the MP_CAPABLE option in which the flag G is set to "1") is provided. It is generated and the SYN segment is transmitted from the transmitting side (first communication device H1) to the receiving side (second communication device H2). As a result, in the communication system 1000, the transmitting side (first communication device H1) notifies the receiving side (second communication device H2) that the data transfer using the scramble function is performed.

つまり、通信システム1000では、従来のMPTCPにより、スクランブル機能を用いたデータ転送を行うことを、送信側(第1通信装置H1)から受信側(第2通信装置H2)に通知することができる。したがって、通信システム1000では、転送するデータ量を増加させることなく、スクランブル機能を実現することができる。 That is, in the communication system 1000, it is possible to notify the receiving side (second communication device H2) from the transmitting side (first communication device H1) that the data transfer using the scramble function is performed by the conventional MPTCP. Therefore, in the communication system 1000, the scramble function can be realized without increasing the amount of data to be transferred.

以上の通り、通信システム1000では、複数のパスを用いた通信において、転送するデータ量を増加させることなく、かつ、セキュリティを確保することができる。 As described above, in the communication system 1000, in communication using a plurality of paths, security can be ensured without increasing the amount of data to be transferred.

[他の実施形態]
上記実施形態では、スクランブル処理、デスクランブル処理において、1バイト単位で処理が実行される場合について、説明したが、これに限定されることはない。例えば、2バイト単位、Nバイト単位、あるいは、所定のビット数単位で、スクランブル処理、デスクランブル処理が実行するようにしてもよい。
[Other Embodiments]
In the above embodiment, the case where the process is executed in 1-byte units in the scramble process and the descramble process has been described, but the present invention is not limited to this. For example, the scramble processing and the descramble processing may be executed in units of 2 bytes, N bytes, or a predetermined number of bits.

また、上記実施形態では、通信システム1000において、2つのTCPサブフローにより、MPTCPを用いた通信を行う場合について説明したがこれに限定されることはなく、3以上のTCPサブフローにより、MPTCPを用いた通信を行うようにしてもよい。 Further, in the above embodiment, the case where communication using MPTCP is performed by two TCP subflows in the communication system 1000 has been described, but the present invention is not limited to this, and MPTCP is used by three or more TCP subflows. Communication may be performed.

また、通信システム1000において、送信側のキーと受信側のキーとを交換する通信処理(図7のステップS101〜S103の処理)を信頼度の高い(セキュリティ強度の高い)通信網(例えば、携帯電話通信網)を使って行い、スクランブル化されたデータの送受信をセキュリティ強度が低い通信網(例えば、無線LANの通信網)を使って行うようにしてもよい。 Further, in the communication system 1000, a communication process (processing of steps S101 to S103 in FIG. 7) for exchanging a transmission side key and a reception side key is performed on a highly reliable (high security strength) communication network (for example, a mobile phone). It may be performed using a communication network (telephone communication network), and scrambled data may be transmitted / received using a communication network having low security strength (for example, a wireless LAN communication network).

つまり、通信システム1000において、送信側のキーと受信側のキーとを交換する通信処理を行うTCPサブフローを信頼度の高い(セキュリティ強度の高い)通信網(例えば、携帯電話通信網)を用いて実現し、スクランブル化されたデータの送受信をセキュリティ強度が低い通信網(例えば、無線LAN(WiFi)の通信網)を用いて実現するようにしてもよい。 That is, in the communication system 1000, a TCP subflow that performs communication processing for exchanging a transmission side key and a reception side key is performed by using a highly reliable (high security strength) communication network (for example, a mobile phone communication network). It may be realized and transmission / reception of scrambled data may be realized by using a communication network having low security strength (for example, a communication network of wireless LAN (WiFi)).

また、上記実施形態では、スクランブル化処理、デスクランブル化処理において、論理演算処理として、排他的論理和(XOR)を用いる場合について説明したが、これに限定されることはなく、例えば、スクランブル化処理、デスクランブル化処理において、論理演算処理として、排他的論理和の代わりに、「排他的論理和+NOT」(XOR+NOT)、あるいは、「NOT+排他的論理和」(NOT+XOR)による論理演算処理を行ってもよい。 Further, in the above embodiment, the case where the exclusive OR (XOR) is used as the logical operation process in the scrambled process and the descrambled process has been described, but the present invention is not limited to this, and for example, scrambling is performed. In the processing and descramble processing, as the logical operation processing, instead of the exclusive OR, the logical operation processing by "exclusive OR" (XOR + NOT) or "NOT + exclusive OR" (NOT + XOR) is performed. You may.

また、上記実施形態で説明した通信システム1000、第1通信装置H1、第2通信装置H2において、各ブロックは、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。 Further, in the communication system 1000, the first communication device H1, and the second communication device H2 described in the above embodiment, each block may be individually integrated into one chip by a semiconductor device such as an LSI, or a part or all of the blocks. It may be made into one chip so as to include.

なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。 Although it is referred to as an LSI here, it may be referred to as an IC, a system LSI, a super LSI, or an ultra LSI depending on the degree of integration.

また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。 Further, the method of making an integrated circuit is not limited to LSI, and may be realized by a dedicated circuit or a general-purpose processor. An FPGA (Field Programmable Gate Array) that can be programmed after the LSI is manufactured, or a reconfigurable processor that can reconfigure the connection and settings of the circuit cells inside the LSI may be used.

また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。 Further, a part or all of the processing of each functional block of each of the above embodiments may be realized by a program. Then, a part or all of the processing of each functional block of each of the above embodiments is performed by the central processing unit (CPU) in the computer. Further, the program for performing each process is stored in a storage device such as a hard disk or a ROM, and is read and executed in the ROM or the RAM.

また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。 Further, each process of the above embodiment may be realized by hardware, or may be realized by software (including a case where it is realized together with an OS (operating system), middleware, or a predetermined library). Further, it may be realized by mixed processing of software and hardware.

例えば、上記実施形態の各機能部を、ソフトウェアにより実現する場合、図17に示したハードウェア構成(例えば、CPU、ROM、RAM、入力部、出力部等をバスBusにより接続したハードウェア構成)を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。 For example, when each functional unit of the above embodiment is realized by software, the hardware configuration shown in FIG. 17 (for example, a hardware configuration in which a CPU, ROM, RAM, input unit, output unit, etc. are connected by a bus Bus). May be used to realize each functional unit by software processing.

また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。 Further, the execution order of the processing methods in the above-described embodiment is not necessarily limited to the description of the above-described embodiment, and the execution order can be changed without departing from the gist of the invention.

前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。 A computer program that causes a computer to perform the above-mentioned method and a computer-readable recording medium on which the program is recorded are included in the scope of the present invention. Here, examples of computer-readable recording media include flexible disks, hard disks, CD-ROMs, MOs, DVDs, DVD-ROMs, DVD-RAMs, large-capacity DVDs, next-generation DVDs, and semiconductor memories. ..

上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。 The computer program is not limited to the one recorded on the recording medium, and may be transmitted via a telecommunication line, a wireless or wired communication line, a network represented by the Internet, or the like.

なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。 The specific configuration of the present invention is not limited to the above-described embodiment, and various changes and modifications can be made without departing from the gist of the invention.

1000 通信システム
H1 第1通信装置(データ送信装置)
H2 第2通信装置(データ受信装置)
1 第1データ通信モジュール
10 MPTCPコネクション確立処理部
11 送信データ取得部
12 スクランブル用キーデータ生成部
13 スクランブルデータ生成部
14 TCPサブフローデータ生成部(サブフローデータ生成部)
2 第2データ通信モジュール
20 MPTCPコネクション確立処理部
23 MPTCPデータ取得部
24 デスクランブルデータ取得部
25 スクランブル用キーデータ生成部
26 受信データ取得部
1000 Communication system H1 1st communication device (data transmission device)
H2 2nd communication device (data receiving device)
1 1st data communication module 10 MPTCP connection establishment processing unit 11 Transmission data acquisition unit 12 Scramble key data generation unit 13 Scramble data generation unit 14 TCP subflow data generation unit (subflow data generation unit)
2 Second data communication module 20 MPTCP connection establishment processing unit 23 MPTCP data acquisition unit 24 Desk rumble data acquisition unit 25 Scramble key data generation unit 26 Received data acquisition unit

Claims (13)

データ受信装置に対して、複数の通信経路を用いてデータを送信する機能を有するデータ送信装置であって、
送信データを所定の単位長のデータに区分した単位長データである単位長送信データをスクランブル化するためのスクランブル処理用キーデータを取得するスクランブル用キーデータ生成部であって、(1)1回目の処理では、自装置を識別するためのデータであるキーデータから導出された初期値データを所定の単位長のデータに区分した単位長データである単位長初期値データを用いて、所定の論理演算を行うことでスクランブル化処理のためのスクランブル処理用キーデータを取得し、(2)2回目以降の処理では、前記単位長初期値データ、および、現時刻よりも前の時刻においてスクランブル化処理の対象とされた単位長送信データであってスクランブル化される前の単位長送信データの両方、または、現時刻よりも前の時刻においてスクランブル化処理の対象とされた単位長送信データであってスクランブル化される前の単位長送信データのみを用いて、所定の論理演算を行うことで前記スクランブル処理用キーデータを取得する前記スクランブル用キーデータ生成部と、
前記スクランブル用キーデータ生成部により取得された前記スクランブル処理用キーデータと、前記単位長送信データとを用いて、所定の論理演算を行うことで、スクランブル化処理を実行し単位長データであるスクランブル化単位長送信データを取得するとともに、取得した前記スクランブル化単位長送信データを複数まとめることで、1つのスクランブル化送信データを生成するスクランブルデータ生成部と、
前記スクランブルデータ生成部により生成された前記スクランブル化送信データから、複数の経路を用いて送信するためのサブフローデータを生成するサブフローデータ生成部と、
を備えるデータ送信装置。
A data transmitting device having a function of transmitting data to a data receiving device using a plurality of communication paths.
It is a scramble key data generation unit that acquires scramble processing key data for scrambling the unit length transmission data, which is unit length data obtained by dividing the transmission data into data having a predetermined unit length. In the process of, the initial value data derived from the key data, which is the data for identifying the own device, is divided into the data of the predetermined unit length, and the unit length initial value data, which is the unit length data, is used to perform a predetermined logic. By performing the calculation, the key data for the scramble processing for the scramble processing is acquired, and (2) in the second and subsequent processing, the unit length initial value data and the scramble processing at a time before the current time. Both the unit length transmission data that is the target of the unit length transmission data before being scrambled , or the unit length transmission data that is the target of scramble processing at a time before the current time. The scramble key data generation unit that acquires the scramble processing key data by performing a predetermined logical operation using only the unit length transmission data before being scrambled.
By performing a predetermined logical operation using the scramble processing key data acquired by the scramble key data generation unit and the unit length transmission data, scrambling processing is executed and scramble which is unit length data. A scrambled data generation unit that generates one scrambled transmission data by acquiring the scrambled unit length transmission data and collecting a plurality of the acquired scrambled unit length transmission data.
A subflow data generation unit that generates subflow data for transmission using a plurality of routes from the scrambled transmission data generated by the scrambled data generation unit.
A data transmitter equipped with.
前記所定の論理演算は、排他的論理和演算である、
請求項1に記載のデータ送信装置。
The predetermined logical operation is an exclusive OR operation.
The data transmission device according to claim 1.
前記単位長データは、1バイトのデータである、
請求項1又は2に記載のデータ送信装置。
The unit length data is 1 byte data.
The data transmission device according to claim 1 or 2.
前記初期値データは、
自装置を識別するためのデータであるキーデータをキーデータkeyAとしたとき、
MsgDig=SHA1(keyA)
IDSN=Lower_8bytes(MsgDig)
SHA1(x):xに対するSHA−1によるメッセージダイジェストを取得する関数
Lower_8bytes(x):xの下位8バイトを取得する関数
により取得されたIDSN値である、
請求項1から3のいずれかに記載のデータ送信装置。
The initial value data is
When the key data, which is the data for identifying the own device, is the key data keyA,
MsgDig = SHA1 (keyA)
IDSN = Lower_8bytes (MsgDig)
SHA1 (x): Function for acquiring a message digest by SHA-1 for x Lower_8bytes (x): IDSN value acquired by a function for acquiring the lower 8 bytes of x.
The data transmission device according to any one of claims 1 to 3.
MPTCPを用いた通信を実行する機能を有し、
MPTCPコネクションの確立処理を実行するMPTCPコネクション確立処理部をさらに備え、
前記MPTCPコネクション確立処理部は、
MPTCPコネクションの確立処理時において、MP_CAPABLEオプションの所定のフラグを所定の値にセットしたSYNセグメントを生成し、当該SYNセグメントを前記データ受信装置に送信することで、スクランブル機能を用いたデータ転送を行うことを、前記データ受信装置に通知する、
請求項1から4のいずれかに記載のデータ送信装置。
It has a function to execute communication using MPTCP, and has a function to execute communication.
It also has an MPTCP connection establishment processing unit that executes MPTCP connection establishment processing.
The MPTCP connection establishment processing unit is
At the time of establishing an MPTCP connection, a SYN segment in which a predetermined flag of the MP_CAPABLE option is set to a predetermined value is generated, and the SYN segment is transmitted to the data receiving device to perform data transfer using the scramble function. Notify the data receiving device of the fact.
The data transmission device according to any one of claims 1 to 4.
データ送信装置が複数の通信経路を用いて送信したデータを受信する機能を有するデータ受信装置であって、
前記データ送信装置から、複数の通信経路により、受信した複数のサブフローデータを、当該サブフローデータに含まれるデータシーケンス番号の順に並べる処理を実行することで、複数のサブフローデータを1つにまとめた受信データを取得するMPTCPデータ取得部と、
MPTCPデータ取得部により取得された前記受信データを所定の単位長のデータに区分した単位長データである単位長受信スクランブルデータをデスクランブル化するためのスクランブル処理用キーデータを取得するスクランブル用キーデータ生成部であって、(1)1回目の処理では、通信相手である前記データ送信装置を識別するためのデータであるキーデータから導出された初期値データを所定の単位長のデータに区分した単位長データである単位長初期値データを用いて、所定の論理演算を行うことでデスクランブル化処理のためのスクランブル処理用キーデータを取得し、(2)2回目以降の処理では、前記単位長初期値データ、および、現時刻よりも前の時刻においてデスクランブル化処理の対象とされた単位長受信データであってスクランブル化された後の単位長送信データの両方、または、現時刻よりも前の時刻においてデスクランブル化処理の対象とされた単位長送信データであってスクランブル化された後の単位長受信データのみを用いて、所定の論理演算を行うことで前記スクランブル処理用キーデータを取得する前記スクランブル用キーデータ生成部と、
前記スクランブル用キーデータ生成部により取得された前記スクランブル処理用キーデータと、前記単位長受信スクランブルデータとを用いて、所定の論理演算を行うことで、デスクランブル化処理を実行し単位長データである単位長受信データを取得するとともに、取得した前記単位長受信データを複数まとめることで、1つのデスクランブル化された受信データを取得する受信データ取得部と、
を備えるデータ受信装置。
A data receiving device having a function of receiving data transmitted by a data transmitting device using a plurality of communication paths.
By executing a process of arranging a plurality of subflow data received from the data transmission device in the order of the data sequence numbers included in the subflow data by a plurality of communication paths, the plurality of subflow data are collectively received. MPTCP data acquisition unit to acquire data and
Scramble key data for acquiring scramble processing key data for descrambled unit length reception scramble data, which is unit length data obtained by dividing the received data acquired by the MPTCP data acquisition unit into data having a predetermined unit length. In the generation unit, (1) in the first processing, the initial value data derived from the key data, which is the data for identifying the data transmission device as the communication partner, is divided into data having a predetermined unit length. Using the unit length initial value data, which is the unit length data, the key data for scramble processing for descramble processing is acquired by performing a predetermined logical operation, and (2) in the second and subsequent processing, the unit is described. Both the long initial value data and the unit length received data that was descrambled at a time earlier than the current time and the unit length transmitted data after being scrambled , or more than the current time. The scramble processing key data is obtained by performing a predetermined logical operation using only the unit length transmission data that was the target of the descramble processing at the previous time and the unit length reception data after being scrambled. The scramble key data generation unit to be acquired and
By performing a predetermined logical operation using the scramble processing key data acquired by the scramble key data generation unit and the unit length reception scramble data, the descramble processing is executed and the unit length data is used. A reception data acquisition unit that acquires one descrambled reception data by acquiring a certain unit length reception data and collecting a plurality of the acquired unit length reception data.
A data receiver comprising.
前記所定の論理演算は、排他的論理和演算である、
請求項6に記載のデータ受信装置。
The predetermined logical operation is an exclusive OR operation.
The data receiving device according to claim 6.
前記単位長データは、1バイトのデータである、
請求項6又は7に記載のデータ受信装置。
The unit length data is 1 byte data.
The data receiving device according to claim 6 or 7.
前記初期値データは、
通信相手である前記データ送信装置を識別するためのデータであるキーデータをキーデータkeyAとしたとき、
MsgDig=SHA1(keyA)
IDSN=Lower_8bytes(MsgDig)
SHA1(x):xに対するSHA−1によるメッセージダイジェストを取得する関数
Lower_8bytes(x):xの下位8バイトを取得する関数
により取得されたIDSN値である、
請求項6から8のいずれかに記載のデータ受信装置。
The initial value data is
When the key data, which is the data for identifying the data transmission device that is the communication partner, is the key data keyA,
MsgDig = SHA1 (keyA)
IDSN = Lower_8bytes (MsgDig)
SHA1 (x): Function for acquiring a message digest by SHA-1 for x Lower_8bytes (x): IDSN value acquired by a function for acquiring the lower 8 bytes of x.
The data receiving device according to any one of claims 6 to 8.
MPTCPを用いた通信を実行する機能を有し、
MPTCPコネクションの確立処理を実行するMPTCPコネクション確立処理部をさらに備え、
前記MPTCPコネクション確立処理部は、
MPTCPコネクションの確立処理時において、前記データ送信装置により、MP_CAPABLEオプションの所定のフラグを所定の値にセットしたSYNセグメント受信することで、前記データ送信装置がスクランブル機能を用いたデータ転送を行う機能を有していると判定する、
請求項6から9のいずれかに記載のデータ受信装置。
It has a function to execute communication using MPTCP, and has a function to execute communication.
It also has an MPTCP connection establishment processing unit that executes MPTCP connection establishment processing.
The MPTCP connection establishment processing unit is
At the time of establishing an MPTCP connection, the data transmission device receives a SYN segment in which a predetermined flag of the MP_CAPABLE option is set to a predetermined value, so that the data transmission device performs a function of performing data transfer using the scramble function. Judge to have,
The data receiving device according to any one of claims 6 to 9.
請求項1から5のいずれかに記載のデータ送信装置と、
請求項6から10のいずれかに記載のデータ受信装置と、
を備える通信システム。
The data transmission device according to any one of claims 1 to 5.
The data receiving device according to any one of claims 6 to 10.
Communication system including.
データ送信装置からデータ受信装置に対して、複数の通信経路を用いてデータを送信するときに用いられるデータ送信方法であって、
送信データを所定の単位長のデータに区分した単位長データである単位長送信データをスクランブル化するためのスクランブル処理用キーデータを取得するスクランブル用キーデータ生成ステップであって、(1)1回目の処理では、前記データ送信装置を識別するためのデータであるキーデータから導出された初期値データを所定の単位長のデータに区分した単位長データである単位長初期値データを用いて、所定の論理演算を行うことでスクランブル化処理のためのスクランブル処理用キーデータを取得し、(2)2回目以降の処理では、前記単位長初期値データ、および、現時刻よりも前の時刻においてスクランブル化処理の対象とされた単位長送信データの両方、または、現時刻よりも前の時刻においてスクランブル化処理の対象とされた単位長送信データであってスクランブル化される前の単位長送信データのみを用いて、所定の論理演算を行うことで前記スクランブル処理用キーデータを取得する前記スクランブル用キーデータ生成ステップと、
前記スクランブル用キーデータ生成ステップにより取得された前記スクランブル処理用キーデータと、前記単位長送信データとを用いて、所定の論理演算を行うことで、スクランブル化処理を実行し単位長データであるスクランブル化単位長送信データを取得するとともに、取得した前記スクランブル化単位長送信データを複数まとめることで、1つのスクランブル化送信データを生成するスクランブルデータ生成ステップと、
前記スクランブルデータ生成ステップにより生成された前記スクランブル化送信データから、複数の経路を用いて送信するためのサブフローデータを生成するサブフローデータ生成ステップと、
を備えるデータ送信方法をコンピュータに実行させるためのプログラム。
A data transmission method used when data is transmitted from a data transmission device to a data reception device using a plurality of communication paths.
This is a scramble key data generation step for acquiring scramble processing key data for scrambling the unit length transmission data, which is unit length data obtained by dividing the transmission data into data having a predetermined unit length. (1) The first time. In the process of, the initial value data derived from the key data, which is the data for identifying the data transmission device, is divided into the data of a predetermined unit length, and the unit length initial value data, which is the unit length data, is used. By performing the logical calculation of, the key data for scrambling processing for scrambling processing is acquired, and (2) in the second and subsequent processing, the unit length initial value data and scrambled at a time before the current time. both unit length transmission data subjected to the processing, or only the unit length transmission data before being scrambled by a unit length transmission data subjected to the scramble process at the time before the current time The scramble key data generation step of acquiring the scramble processing key data by performing a predetermined logical operation using
By performing a predetermined logical operation using the scramble processing key data acquired in the scramble key data generation step and the unit length transmission data, scrambling processing is executed and scramble which is unit length data. A scramble data generation step of acquiring one scrambled transmission data and aggregating a plurality of the acquired scrambled unit length transmission data to generate one scrambled transmission data.
A subflow data generation step for generating subflow data for transmission using a plurality of routes from the scrambled transmission data generated by the scrambled data generation step, and a subflow data generation step.
A program that causes a computer to execute a data transmission method.
データ受信装置において、データ送信装置から、複数の通信経路を用いて送信されたデータを受信するときに用いられるデータ受信方法であって、
前記データ送信装置から、複数の通信経路により、受信した複数のサブフローデータを、当該サブフローデータに含まれるデータシーケンス番号の順に並べる処理を実行することで、複数のサブフローデータを1つにまとめた受信データを取得するMPTCPデータ取得ステップと、
MPTCPデータ取得ステップにより取得された前記受信データを所定の単位長のデータに区分した単位長データである単位長受信スクランブルデータをデスクランブル化するためのスクランブル処理用キーデータを取得するスクランブル用キーデータ生成ステップであって、(1)1回目の処理では、前記データ送信装置を識別するためのデータであるキーデータから導出された初期値データを所定の単位長のデータに区分した単位長データである単位長初期値データを用いて、所定の論理演算を行うことでデスクランブル化処理のためのスクランブル処理用キーデータを取得し、(2)2回目以降の処理では、前記単位長初期値データ、および、現時刻よりも前の時刻においてデスクランブル化処理の対象とされた単位長受信データであってスクランブル化された後の単位長送信データの両方、または、現時刻よりも前の時刻においてデスクランブル化処理の対象とされた単位長送信データであってスクランブル化された後の単位長受信データのみを用いて、所定の論理演算を行うことで前記スクランブル処理用キーデータを取得する前記スクランブル用キーデータ生成ステップと、
前記スクランブル用キーデータ生成ステップにより取得された前記スクランブル処理用キーデータと、前記単位長受信スクランブルデータとを用いて、所定の論理演算を行うことで、デスクランブル化処理を実行し単位長データである単位長受信データを取得するとともに、取得した前記単位長受信データを複数まとめることで、1つのデスクランブル化された受信データを取得する受信データ取得ステップと、
を備えるデータ受信方法をコンピュータに実行させるためのプログラム。
A data receiving method used when receiving data transmitted from a data transmitting device using a plurality of communication paths in a data receiving device.
By executing a process of arranging a plurality of subflow data received from the data transmission device in the order of the data sequence numbers included in the subflow data by a plurality of communication paths, the plurality of subflow data are collectively received. MPTCP data acquisition step to acquire data and
Scramble key data for acquiring scramble processing key data for descrambled unit length reception scramble data, which is unit length data obtained by dividing the received data acquired by the MPTCP data acquisition step into data having a predetermined unit length. In the generation step, (1) in the first process, the initial value data derived from the key data, which is the data for identifying the data transmission device, is divided into the unit length data having a predetermined unit length. Using a certain unit length initial value data, the key data for scramble processing for descramble processing is acquired by performing a predetermined logical operation, and (2) in the second and subsequent processing, the unit length initial value data is obtained. , and both unit length transmission data after being a unit length received data subjected to the descrambling process scrambled in time before the current time, or at time before the current time The scramble that acquires the scramble processing key data by performing a predetermined logical operation using only the unit length transmission data that is the target of the descramble processing and the unit length reception data that has been scrambled. Key data generation step and
By performing a predetermined logical operation using the scramble processing key data acquired in the scramble key data generation step and the unit length reception scramble data, the descramble processing is executed and the unit length data is used. A reception data acquisition step of acquiring a certain descrambled reception data by acquiring a certain unit length reception data and collecting a plurality of the acquired unit length reception data.
A program that causes a computer to execute a data receiving method.
JP2017033847A 2017-02-24 2017-02-24 Data transmitters, data receivers, communication systems, and programs Active JP6908914B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017033847A JP6908914B2 (en) 2017-02-24 2017-02-24 Data transmitters, data receivers, communication systems, and programs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017033847A JP6908914B2 (en) 2017-02-24 2017-02-24 Data transmitters, data receivers, communication systems, and programs

Publications (2)

Publication Number Publication Date
JP2018139386A JP2018139386A (en) 2018-09-06
JP6908914B2 true JP6908914B2 (en) 2021-07-28

Family

ID=63451096

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017033847A Active JP6908914B2 (en) 2017-02-24 2017-02-24 Data transmitters, data receivers, communication systems, and programs

Country Status (1)

Country Link
JP (1) JP6908914B2 (en)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3625540B2 (en) * 1995-09-11 2005-03-02 三洋電機株式会社 Descrambling device
JPH1022994A (en) * 1996-07-04 1998-01-23 Hitachi Ltd Ciphering device, deciphering device, ciphering method, deciphering method and communication system using the same
JP2000174745A (en) * 1998-12-07 2000-06-23 Fujitsu Ltd Encipherment communication method and system therefor
JP4036199B2 (en) * 2004-03-05 2008-01-23 日本電気株式会社 Secret communication method
US20100063996A1 (en) * 2006-07-03 2010-03-11 Kouichi Kanemura Information processing device, information recording device, information processing system, program update method, program, and integrated circuit
EP2153365A1 (en) * 2007-05-22 2010-02-17 Koninklijke Philips Electronics N.V. Data security
EP2854357A1 (en) * 2013-09-30 2015-04-01 Thomson Licensing Method for connecting a first host and a second host within at least one communication network through a relay module, corresponding relay module

Also Published As

Publication number Publication date
JP2018139386A (en) 2018-09-06

Similar Documents

Publication Publication Date Title
US20230224148A1 (en) System and method for quantum-safe authentication, encryption and decryption of information
US20200274871A1 (en) Encryption key updates in wireless communication systems
CN107104977B (en) Block chain data secure transmission method based on SCTP
CN104023013A (en) Data transmission method, server side and client
CN104660602A (en) Quantum key transmission control method and system
CN111566990A (en) Secure key agreement with untrusted devices
TW201513626A (en) Data protecting apparatus and method thereof
CN111224974A (en) Method, system, electronic device and storage medium for network communication content encryption
US7627747B2 (en) Hardware/software partitioning for encrypted WLAN communications
CN106850191A (en) The encryption and decryption method and device of distributed memory system communication protocol
US20220069995A1 (en) System and method for securing data
US10419212B2 (en) Methods, systems, apparatuses, and devices for securing network communications using multiple security protocols
CN106453314A (en) Data encryption and decryption method and device
CN109067527A (en) A kind of quantum encryption communication method, communication terminal and computer readable storage medium
TW200935827A (en) Method and apparatus for handling packets in a wireless communications system
CN108322464B (en) Key verification method and device
CN101515853B (en) Information terminal and information safety device thereof
JP6908914B2 (en) Data transmitters, data receivers, communication systems, and programs
US10057054B2 (en) Method and system for remotely keyed encrypting/decrypting data with prior checking a token
KR101224383B1 (en) Security Communication method between devices
Kato et al. Protecting Eavesdropping over Multipath TCP Communication Based on Not-Every-Not-Any Protection
Kato et al. Proposal and Study on Implementation of Data Eavesdropping Protection Method over Multipath TCP Communication Using Data Scrambling and Path Dispersion
CN113923029B (en) Internet of things information encryption method based on ECC (error correction code) hybrid algorithm
CN113411347B (en) Transaction message processing method and processing device
KR101008896B1 (en) Secure Data Transmission for ATA-based Virtual Storage System

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210622

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210625

R150 Certificate of patent or registration of utility model

Ref document number: 6908914

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150