特許第6023852号(P6023852)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧

特許6023852検知機能付加装置、検知装置、およびプログラム
<>
  • 特許6023852-検知機能付加装置、検知装置、およびプログラム 図000006
  • 特許6023852-検知機能付加装置、検知装置、およびプログラム 図000007
  • 特許6023852-検知機能付加装置、検知装置、およびプログラム 図000008
  • 特許6023852-検知機能付加装置、検知装置、およびプログラム 図000009
  • 特許6023852-検知機能付加装置、検知装置、およびプログラム 図000010
  • 特許6023852-検知機能付加装置、検知装置、およびプログラム 図000011
  • 特許6023852-検知機能付加装置、検知装置、およびプログラム 図000012
  • 特許6023852-検知機能付加装置、検知装置、およびプログラム 図000013
  • 特許6023852-検知機能付加装置、検知装置、およびプログラム 図000014
  • 特許6023852-検知機能付加装置、検知装置、およびプログラム 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6023852
(24)【登録日】2016年10月14日
(45)【発行日】2016年11月9日
(54)【発明の名称】検知機能付加装置、検知装置、およびプログラム
(51)【国際特許分類】
   H04L 9/32 20060101AFI20161027BHJP
【FI】
   H04L9/00 675A
【請求項の数】8
【全頁数】16
(21)【出願番号】特願2015-109793(P2015-109793)
(22)【出願日】2015年5月29日
【審査請求日】2015年5月29日
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100121706
【弁理士】
【氏名又は名称】中尾 直樹
(74)【代理人】
【識別番号】100128705
【弁理士】
【氏名又は名称】中村 幸雄
(74)【代理人】
【識別番号】100147773
【弁理士】
【氏名又は名称】義村 宗洋
(72)【発明者】
【氏名】五十嵐 大
【審査官】 中里 裕正
(56)【参考文献】
【文献】 特開昭59−221812(JP,A)
【文献】 特開平09−062656(JP,A)
【文献】 米国特許出願公開第2001/0046292(US,A1)
【文献】 米国特許出願公開第2002/0051537(US,A1)
【文献】 Halevi, S. and Krawczyk, H.,MMH: Software Message Authentication in the Gbit/Second Rates,Lecture Notes in Computer Science,1997年,Vol.1267,p.172-189
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
Nが1以上の整数であり、Mが2以上の整数であり、n=0,…,N−1であり、m=0,…,M−1であり、N個のブロックb,…,bN−1のそれぞれのブロックbがM個の部分列cn,0,…,cn,M−1を含み、
前記部分列c0,m,…,cN−1,mに対して乗算を含む演算を行って部分検知符号Cを得る部分処理部と、
前記部分検知符号C,…,CM−1に対応する検知符号を得る統合部と、
を有し、
前記部分検知符号C,…,CM−1のそれぞれの部分検知符号Cの長さがLであり、k=0,…,K−1であり、K<Mであり、前記部分列cn,0,…,cn,M−1のそれぞれの部分列cn,mの長さがLであり、
前記統合部は、前記部分検知符号C,…,CM−1をK個の部分集合Sub,…,SubK−1に区分し、前記部分集合Sub,…,SubK−1のそれぞれについて部分集合Subの要素の線形結合演算を行って、K個の中間検知符号SC,…,SCK−1を得、前記中間検知符号SC,…,SCK−1からなる長さがLのK倍である列を前記検知符号とする、検知機能付加装置。
【請求項2】
請求項1の検知機能付加装置であって、
QおよびLが1以上の整数であり、Kが2以上の整数であり、q=0,…,Q−1であり、
入力された処理単位ブロックB,…,BQ−1から前記ブロックb,…,bN−1または前記部分列c0,m,…,cN−1,mを得る区分部を有し、
前記部分列c0,m,…,cN−1,mのそれぞれの部分列cn,mの長さがLであり、
前記処理単位ブロックB,…,BQ−1のそれぞれの処理単位ブロックBの長さがLのK倍である、検知機能付加装置。
【請求項3】
請求項1または2の検知機能付加装置であって、
前記統合部は、前記部分検知符号C,…,CM−1を被演算子とした線形結合演算を行って前記検知符号を得る、検知機能付加装置。
【請求項4】
請求項1からの何れかの検知機能付加装置であって、
前記部分処理部は、何れか複数のmについて並列に前記乗算を含む演算を行って前記部分検知符号Cを得る、検知機能付加装置。
【請求項5】
請求項1からの何れかの検知機能付加装置であって、
N≧2であり、
前記部分処理部は、
任意値Rを得る任意値選択部と、
初期値C0,m=R0,mを得る初期値生成部と、
i=0,…,N−2での再帰処理によって中間値Ci+1,m=(ci+1,m+Ci,m)Rを得、CN−1,mを前記部分検知符号Cとする再帰処理部と、を含む、検知機能付加装置。
【請求項6】
Nが1以上の整数であり、Mが2以上の整数であり、n=0,…,N−1であり、m=0,…,M−1であり、N個のブロックb’,…,b’N−1のそれぞれのブロックb’がM個の部分列c’n,0,…,c’n,M−1を含み、
前記部分列c’0,m,…,c’N−1,mに対して乗算を含む演算を行って部分検知符号C’を得る部分処理部と、
前記部分検知符号C’,…,C’M−1を被演算子とした線形結合演算を行って検知符号を得る統合部と、
入力符号と前記検知符号とが一致するかを判定する判定部と
を有し、
前記部分検知符号C’,…,C’M−1のそれぞれの部分検知符号C’の長さがLであり、k=0,…,K−1であり、K<Mであり、前記部分列c’n,0,…,c’n,M−1のそれぞれの部分列c’n,mの長さがLであり、
前記統合部は、前記部分検知符号C’,…,C’M−1をK個の部分集合Sub’,…,Sub’K−1に区分し、前記部分集合Sub’,…,Sub’K−1のそれぞれについて部分集合Sub’の要素の線形結合演算を行って、K個の中間検知符号SC’,…,SC’K−1を得、前記中間検知符号SC’,…,SC’K−1からなる長さがLのK倍である列を前記検知符号とする検知装置。
【請求項7】
請求項6の検知装置であって、
QおよびLが1以上の整数であり、Kが2以上の整数であり、q=0,…,Q−1であり、
入力された処理単位ブロックB’,…,B’Q−1から前記ブロックb’,…,b’N−1または前記部分列c’0,m,…,c’N−1,mを得る区分部を有し、
前記部分列c0,m,…,cN−1,mのそれぞれの部分列cn,mの長さがLであり、
前記処理単位ブロックB’,…,B’Q−1のそれぞれの処理単位ブロックB’の長さがLのK倍である、検知装置。
【請求項8】
請求項1からの何れかの検知機能付加装置もしくは請求項6または7の検知装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの改ざんまたは誤りを検知する技術に関する。
【背景技術】
【0002】
暗号文の改ざんまたは誤りを検知する機能(以下「検知機能」)を有するブロック暗号方式としてGCM(Galois/Counter Mode)がある(例えば、非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】NIST: Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC, NIST Special Publication 800-38D, November, 2007.
【発明の概要】
【発明が解決しようとする課題】
【0004】
GCMでは「検知機能」を付加するためにブロックごとに乗算を含む演算を行う必要があり、その処理速度に改善の余地がある。これはGCMに限られたことではなく、ブロックごとに区分されたデータに対し、ブロックごとの乗算を含む演算を行って「検知機能」を付加する場合に共通する。
【0005】
本発明の課題は、検知機能を付加するための演算を高速化することである。
【課題を解決するための手段】
【0006】
本発明では、Nが1以上の整数であり、Mが2以上の整数であり、n=0,…,N−1であり、m=0,…,M−1であり、N個のブロックb,…,bN−1のそれぞれのブロックbがM個の部分列cn,0,…,cn,M−1を含む。部分列c0,m,…,cN−1,mに対して乗算を含む演算を行って部分検知符号Cを得、部分検知符号C,…,CM−1に対応する検知符号を得る。
【発明の効果】
【0007】
これにより、検知機能を付加するための演算を高速化できる。
【図面の簡単な説明】
【0008】
図1図1は、実施形態の検知システムの機能構成を例示したブロック図である。
図2図2Aおよび図2Bは、実施形態の部分処理部の機能構成を例示したブロック図である。
図3図3は、実施形態の処理を説明するためのフロー図である。
図4図4は、実施形態の処理の具体例を説明するためのフロー図である。
図5図5は、実施形態の処理の具体例を説明するためのフロー図である。
図6図6Aから図6Cは、実施形態の処理の具体例を説明するための図である。
図7図7Aから図7Cは、実施形態の処理の具体例を説明するための図である。
図8図8Aおよび図8Bは、実施形態の処理の具体例を説明するための図である。
図9図9Aおよび図9Bは、実施形態の統合部の機能構成を例示したブロック図である。
図10図10Aおよび図10Bは、実施形態の処理の具体例を説明するための図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態を説明する。
[概要]
本実施形態では、検知機能付加装置が検知符号Cを生成し、検知装置が入力された検知符号C(入力符号)を用いて改ざんおよび誤りの少なくとも一方を検知する。
【0010】
本形態の検知機能付加装置は、N個のブロックb,…,bN−1のそれぞれのブロックbがM個の部分列cn,0,…,cn,M−1を含むものとし、部分列c0,m,…,cN−1,mに対して乗算を含む演算を行って部分検知符号Cを得、部分検知符号C,…,CM−1に対応する検知符号Cを得る。ただし、Nは1以上の整数であり、Mは2以上の整数であり、n=0,…,N−1であり、m=0,…,M−1である。乗算に必要な演算量は被演算子が長いほど大きくなり、通常、被演算子の長さの増加に対して指数関数的に増加する。本形態では、ブロックbよりも短い部分列cn,mに対して乗算を含む演算を行うため、ブロックbに対して乗算を含む演算を行うよりも演算量を削減でき、高速化できる。このような演算は、例えば拡大体上で行われる。ある有限体F(p)(ただし、pは2以上の整数。例えば、p=2。)を基礎体とした拡大次数w(ただし、wは1以上の整数)の拡大体F(p)での演算は、有限体F(p)のw個の元からなる列の演算(例えば、w次元ベクトルの演算)として実装できる。
【0011】
ブロックb,…,bN−1または部分列c0,m,…,cN−1,mは、検知機能付加装置にそのまま入力されてもよいし、検知機能付加装置に入力された処理単位ブロックB,…,BQ−1から得られてもよい。後者の場合、処理単位ブロックB,…,BQ−1そのものをブロックb,…,bN−1としてもよいし、処理単位ブロックB,…,BQ−1またはそれにパディングした列を再区分してブロックb,…,bN−1または部分列c0,m,…,cN−1,mを得てもよい。ただし、処理単位ブロックBの長さが部分列cn,mの長さLのK倍でとする。ここで、QおよびLは1以上の整数(例えば2以上の整数)であり、Kは2以上の整数であり、q=0,…,Q−1である。N>Qであってもよいし、N=Qであってもよいし、N<Qであってもよい。M>Kであってもよいし、M=Kであってもよいし、M<Kであってもよい。この場合、処理単位ブロックBよりも短い部分列cn,mに対して乗算を含む演算を行うことになるため、処理単位ブロックBに対して乗算を含む演算を行うよりも演算量を削減でき、高速化できる。
【0012】
検知機能付加装置は、部分検知符号C,…,CM−1そのものを検知符号C=(C,…,CM−1)としてもよいし、部分検知符号C,…,CM−1を被演算子とした線形結合演算によって得られる値を検知符号Cとしてもよい。前者の例はC,…,CM−1の連結C|…|CM−1である。後者の場合、線形結合演算が必要となるが、このような線形結合演算の演算量は非常に小さく、検知符号Cを得るための演算量の合計は、ブロックbまたは処理単位ブロックBごとに乗算を含む演算を行って検知符号Cを得るための演算量よりも小さい。線形結合演算の例は和であり、例えば、拡大体上の和(p=2の場合にはw個の元のそれぞれでの排他的論理和)である。
【0013】
検知符号Cの長さを処理単位ブロックBの長さと同一にしてもよい。例えば、検知機能付加装置が、部分検知符号C,…,CM−1をK個の部分集合Sub,…,SubK−1に区分し、部分集合Sub,…,SubK−1のそれぞれについて部分集合Subの要素の線形結合演算を行って、K個の中間検知符号SC,…,SCK−1を得、中間検知符号SC,…,SCK−1からなる長さがLのK倍である列を検知符号Cとしてもよい。ただし、各部分検知符号Cの長さがLであり、k=0,…,K−1である。これにより、処理単位ブロックB,…,BQ−1と検知符号Cとを同一長のブロックとして扱うことができ、取り扱い上の利便性が向上する。なお、M≧Kであってもよいし、M<Kであってもよい。部分集合Sub,…,SubK−1は互いに重複する要素を含んでいてもよいし、含んでいなくてもよい。一部の部分集合Subk’(ただし、k’∈{0,…,K−1})が空集合であってもよく、それに対応する中間検知符号SCk’が固定値であってもよい。検知機能の面からは、K個の部分集合Sub,…,SubK−1の和集合が部分検知符号C,…,CM−1を要素とする集合Setとなることが望ましいが、この和集合が集合Setの部分集合となってもよい。
【0014】
また、本形態の部分検知符号Cはmごとに独立しているため、検知機能付加装置が、いくつか複数のmについて並列に前述の「乗算を含む演算」を行い、部分検知符号C,…,CM−1を得てもよい。例えば、すべてのm=0,…,M−1について並列にこの演算を行い、部分検知符号C,…,CM−1を得てもよい。これにより、演算速度をさらに向上できる。
【0015】
「乗算を含む演算」に特に限定はない。例えば、以下のように部分検知符号Cを得る演算であってもよい。ただし、N≧2であり、Rを任意値とする。
【数1】

式(1)の例の場合、検知機能付加装置は、例えば、任意値Rを得、初期値C0,m=R0,mを得、i=0,…,N−2での再帰処理によって中間値Ci+1,m=(ci+1,m+Ci,m)Rを得、CN−1,mを部分検知符号Cとする。任意値Rの例は、擬似乱数、乱数、または定数である。その他、C=c0,mN+1+c1,m…+cN−1,mであってもよいし、C=c0,m1,m…cN−1,mであってもよいし、C=c0,m+c1,m…+cN−1,mであってもよい。
【0016】
処理単位ブロックB,…,BQ−1またはブロックb,…,bN−1および検知符号Cは検知装置に入力される。説明の便宜上、検知装置で扱う処理単位ブロックB,…,BQ−1を「処理単位ブロックB’,…,B’Q−1」と表記し、ブロックb,…,bN−1を「ブロックb’,…,b’N−1」と表記し、検知符号Cを「入力符号C’」と表記する。上述と同様、各ブロックb’はM個の部分列c’n,0,…,c’n,M−1を含む。部分列c’n,0,…,c’n,M−1は前述の部分列cn,0,…,cn,M−1と同じ基準に基づいて区分される。検知装置は、部分列c’0,m,…,c’N−1,mに対して乗算を含む演算を行って部分検知符号C’を得、部分検知符号C’,…,C’M−1を被演算子とした線形結合演算を行って検知符号C”を得、入力符号C’と検知符号C”とが一致するかを判定する。ここで、C’=C”であれば成功とし、そうでなければ失敗とする。
【0017】
[第1実施形態]
図面を参照して、第1実施形態を説明する。
<構成>
図1に例示するように、本形態の検知システム1は、検知機能付加装置11および検知装置12を有し、インターネット等の安全ではないネットワーク13を通じて通信可能に構成されている。検知機能付加装置11は、入力部111、区分部112、部分処理部113、統合部114、合成部115、および出力部116を有する。図2Aに例示するように、部分処理部113は、例えば、制御部1130、任意値選択部1131、初期値生成部1132−0〜1132−(M−1)、および再帰処理部1133−0〜1133−(M−1)を有する。
【0018】
検知装置12は、入力部121、区分部122、部分処理部123、統合部124、および判定部126を有する。図2Bに例示するように、部分処理部123は、例えば、制御部1230、初期値生成部1232−0〜1232−(M−1)、および再帰処理部1233−0〜1233−(M−1)を有する。
【0019】
各装置は、例えば、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)およびRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される装置である。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。また、1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
【0020】
<検知機能付加処理>
検知機能付加装置11(図1)が、入力されたQ個の処理単位ブロックB,…,BQ−1に検知符号Cを付加する処理を説明する。図3に例示するように、まず、入力部111に処理単位ブロックB,…,BQ−1が入力される。処理単位ブロックB,…,BQ−1の例は、ブロック暗号方式の暗号文に含まれたブロックである。ただし、これは本発明を限定するものではない。例えば、時間フレームごとに区分された時系列データ、周波数バンドごとに区分された周波数領域データ、その他の区分データを処理単位ブロックB,…,BQ−1としてもよい。また、本形態の処理単位ブロックB(ただし、q=0,…,Q−1)は、K×L個の有限体F(p)の元からなる列(長さK×L)である。例えば、p=2、L=64、K=2、w=128の場合、処理単位ブロックBは128ビット列である。入力された処理単位ブロックB,…,BQ−1は、区分部112および合成部115に送られる(ステップS111)。
【0021】
区分部112は、処理単位ブロックB,…,BQ−1からブロックb,…,bN−1を得、さらに各ブロックbから部分列c0,m,…,cN−1,m(ただし、m=0,…,M−1)を得るか、または、処理単位ブロックB,…,BQ−1から直接に部分列c0,m,…,cN−1,m(ただし、m=0,…,M−1)を得る。本形態の各ブロックb(ただし、n=0,…,N−1)は、M×L個の有限体F(p)の元からなる列(長さM×L)であり、M個の部分列cn,0,…,cn,M−1からなる。本形態の各部分列cn,m(ただし、n=0,…,N−1)は、L個の有限体F(p)の元からなる列(長さL)であり、拡大次数Lの拡大体F(p)の元である。図6Aおよび図6Bは、K=MかつQ=Nの場合の例である。この場合には、処理単位ブロックBがそのままブロックbとなり、区分部112は処理単位ブロックB=bをK等分して部分列cn,0,…,cn,M−1を得る。この場合、B=b=(cn,0,…,cn,M−1)を満たす。図7Aおよび図7Bは、K<MかつQ>NかつK×L×Q=M×L×Nの場合の例である。この場合、区分部112は、処理単位ブロック(B,…,BQ−1)全体をM×N等分して部分列c0,0,…,c0,M−1,…,cN−1,0,…,cN−1,M−1を得る。図8Aは、M>KかつK×L×Q<M×L×Nの例である。この場合、区分部112は、処理単位ブロックB,…,BQ−1に長さM×L×N−K×L×QのパディングPD(すなわち、M×L×N−K×L×Q個の有限体F(p)の元からなる列)を付加し、(B,…,BQ−1,PD)全体をM×N等分して部分列c0,0,…,c0,M−1,…,cN−1,0,…,cN−1,M−1を得る。図8Bは、M<KかつQ<NかつK×L×Q=M×L×Nの場合の例である。この場合、区分部112は、処理単位ブロック(B,…,BQ−1)全体をM×N等分して部分列c0,0,…,c0,M−1,…,cN−1,0,…,cN−1,M−1を得る。図8Cは、M<KかつK×L×Q<M×L×Nの例である。この場合、区分部112は、処理単位ブロックB,…,BQ−1に長さM×L×N−K×L×QのパディングPDを付加し、(B,…,BQ−1,PD)全体をM×N等分して部分列c0,0,…,c0,M−1,…,cN−1,0,…,cN−1,M−1を得る。部分列c0,m,…,cN−1,m(ただし、m=0,…,M−1)は部分処理部113に送られる(ステップS112)
【0022】
部分処理部113は、入力された部分列c0,m,…,cN−1,mに対し、拡大体F(p)上で乗算を含む演算を行って部分検知符号C∈F(p)(ただし、m=0,…,M−1)を得る(図6Bおよび図7B)。部分処理部113は、各mについて順番にこの演算を行ってもよいし、いくつか複数のmについて並列にこの演算を行ってもよい。
【0023】
≪部分処理部113の処理の具体例≫
N≧2であり、すべてのm=0,…,M−1について並列に前述の式(1)の演算を行って部分検知符号C,…,CM−1を得る例を示す。
【0024】
図4に例示するように、部分処理部113の制御部1130(図2A)がi:=0に設定する。なお、「α:=β」はαがβであると定義すること(αにβを代入すること)を意味する(ステップS1130a)。任意値選択部1131は、M個の任意値R,…,RM−1を得る。ただし、R∈F(p)である。例えば、任意値選択部1131は、M×L個の拡大体F(p)の元からなる擬似乱数列Rを生成し、R:=(R,…,RM−1)とする。擬似乱数に代え、予め定められたM×L個の拡大体F(p)の元(例えば、零元)からなる列(零ブロック)をRとしてもよい。各任意値R(ただし、m=0,…,M−1)は初期値生成部1132−mおよび再帰処理部1133−mに送られる(ステップS1131)。各初期値生成部1132−mは、部分列c0,mおよび任意値Rを入力とし、初期値C0,m:=R0,m∈F(p)を得て出力する。これらは各m=0,…,M−1について並列に実行され、(C0,0,…,C0,M−1):=(R0,0,…,R0,M−1)が得られる。各初期値C0,mは再帰処理部1133−mに送られる(ステップS1132)。各再帰処理部1133−mは、Ci,m,ci+1,m,Rを用い、中間値Ci+1,m:=(ci+1,m+Ci,m)R∈F(p)を得る。これらも並列に実行され、(Ci+1,0,…,Ci+1,M−1):=((ci+1,0+Ci,0)R,…,(ci+1,M−1+Ci,M−1)RM−1)が得られる(ステップS1133a)。制御部1130は、i=N−2であるかを判定する。ここで、i=N−2でなければ、制御部1130は、i+1を新たなi(すなわち、i:=i+1)とし(ステップS1130c)、処理をステップS1133aに戻す。一方、i=N−2であれば、各再帰処理部1133−mは、CN−1,mを部分検知符号C∈F(p)として出力する。これにより、部分検知符号C,…,CM−1が得られる(ステップS1133b)。
【0025】
得られた部分検知符号C,…,CM−1は統合部114に送られる(ステップS113)。
【0026】
統合部114は、部分検知符号C,…,CM−1に対応する検知符号C∈F(p)を得て出力する(図6Bおよび図7B)。例えば、C=(C,…,CM−1)としてもよいし、部分検知符号C,…,CM−1を被演算子とした線形結合演算を行って検知符号Cを得てもよい。この線形結合演算は拡大体F(p)上で実行される。以下に線形結合演算の具体例を示す。
【0027】
≪例1≫
【数2】
【0028】
≪例2≫
【数3】

ただし、mevenは0以上M−1以下の偶数を表し、moddは0以上M−1以下の奇数を表す。
【0029】
得られた検知符号Cは合成部115に入力される。検知符号Cの生成過程で任意値R,…,RM−1が利用された場合には、これらの任意値R,…,RM−1も合成部115に送られる。ただし、任意値R,…,RM−1が予め定められた値である場合にはこれらが合成部115に送られなくてもよい(ステップS114)。
【0030】
合成部115は、処理単位ブロックB,…,BQ−1に検知符号Cを付加した列BS:=(B,…,BQ−1,C)を得て出力する(図6C)。任意値R,…,RM−1が入力された場合、合成部115は、さらにこれらを付加した列BS:=(B,…,BQ−1,C,R,…,RM−1)を得て出力してもよい(図7C)(ステップS114)。列BSは出力部116から出力され、ネットワーク13を通じて検知装置12に送られる(ステップS116)。
【0031】
<検知処理>
次に、検知装置12(図1)による検知処理を説明する。図3に例示するように、まず検知装置12に列BSが入力される。列BSは(B’,…,B’Q−1,C’)または(B’,…,B’Q−1,C’,R’,…,R’M−1)である。列BSに改ざんや誤りがなければ、(B’,…,B’Q−1)は(B,…,BQ−1)であり、C’はCであり、(R’,…,R’M−1)は(R,…,RM−1)である。列BSは区分部122に送られ、列BSが含む入力符号C’は判定部126に送られる(ステップS121)。
【0032】
区分部122は、前述の区分部112と同じ基準に則って、列BSに含まれた処理単位ブロックB’,…,B’Q−1からブロックb’,…,b’N−1を得、さらに各ブロックb’から部分列c’0,m,…,c’N−1,m(ただし、m=0,…,M−1)を得るか、または、処理単位ブロックB’,…,B’Q−1から直接に部分列c’0,m,…,c’N−1,m(ただし、m=0,…,M−1)を得る。本形態の各ブロックb’(ただし、n=0,…,N−1)は、M×L個の有限体F(p)の元からなる列(長さM×L)であり、M個の部分列c’n,0,…,c’n,M−1からなる。本形態の各部分列c’n,m(ただし、n=0,…,N−1)は、L個の有限体F(p)の元からなる列(長さL)であり、拡大次数Lの拡大体F(p)の元である。部分列c’0,m,…,c’N−1,m(ただし、m=0,…,M−1)は部分処理部123に送られる。BS=(B’,…,B’Q−1,C’,R’,…,R’M−1)の場合には、(R’,…,R’M−1)も部分処理部123に送られる(ステップS122)
【0033】
部分処理部123は、前述の部分処理部113と同じ基準に則って、入力された部分列c’0,m,…,c’N−1,mに対し、拡大体F(p)上で乗算を含む演算を行って部分検知符号C’∈F(p)(ただし、m=0,…,M−1)を得る。部分処理部123は、各mについて順番にこの演算を行ってもよいし、いくつか複数のmについて並列にこの演算を行ってもよい。
【0034】
≪部分処理部123の処理の具体例≫
N≧2であり、すべてのm=0,…,M−1について並列に前述の式(1)の演算を行って部分検知符号C’,…,C’M−1を得る例を示す。
【0035】
図5に例示するように、部分処理部123の制御部1230(図2B)がi:=0に設定する(ステップS1230a)。各初期値生成部1232−mは、部分列c’0,mおよび任意値R’を用い、初期値C’0,m:=R’c’0,m∈F(p)を得て出力する。なお、任意値R’は区分部122から送られたものであるか、予め定められた値(R’=R)である。これらは各m=0,…,M−1について並列に実行され、(C’0,0,…,C’0,M−1):=(R’0,0,…,R’c’0,M−1)が得られる。各初期値C’0,mは再帰処理部1233−mに送られる(ステップS1232)。各再帰処理部1233−mは、C’i,m,c’i+1,m,R’を用い、中間値C’i+1,m:=(c’i+1,m+C’i,m)R’∈F(p)を得る。これらも並列に実行され、(C’i+1,0,…,C’i+1,M−1):=((c’i+1,0+C’i,0)R’,…,(c’i+1,M−1+C’i,M−1)R’M−1)が得られる(ステップS1233a)。制御部1230は、i=N−2であるかを判定する。ここで、i=N−2でなければ、制御部1230は、i+1を新たなi(すなわち、i:=i+1)とし(ステップS1230c)、処理をステップS1233aに戻す。一方、i=N−2であれば、各再帰処理部1233−mは、C’N−1,mを部分検知符号C’∈F(p)として出力する。これにより、部分検知符号C’,…,C’M−1が得られる(ステップS1233b)。
【0036】
得られた部分検知符号C’,…,C’M−1は統合部124に送られる(ステップS123)。
【0037】
統合部124は、前述の統合部114と同じ基準に則って、部分検知符号C’,…,C’M−1に対応する検知符号C”∈F(p)を得て出力する。検知符号C”は判定部126に送られる(ステップS124)。
【0038】
判定部126は、入力符号C’と検知符号C”との等号判定を行う。ここで、C’=C”であれば、判定部126は、成功である(改ざんおよび誤りが存在しない)旨の結果を出力し(ステップS1252)、処理を終了する。一方、C’≠C”であれば、判定部126は、失敗である(改ざんまたは誤りが存在する)旨の結果を出力し(ステップS1253)、処理を終了する。
【0039】
[第2実施形態]
本形態は第1実施形態の変形例であり、検知符号Cの長さを処理単位ブロックBの長さと同一にする。本形態では、検知機能付加装置が、部分検知符号C,…,CM−1をK個の部分集合Sub,…,SubK−1に区分し、部分集合Sub,…,SubK−1のそれぞれについて部分集合Subの要素の線形結合演算を行って、K個の中間検知符号SC,…,SCK−1を得、中間検知符号SC,…,SCK−1からなる長さがLのK倍である列を検知符号Cとする。ただし、各部分検知符号Cの長さはLであり、k=0,…,K−1であり、M≧Kである。以下ではこれまで説明した事項との相違点を中心に説明し、すでに説明した事項については既に使用された参照番号を引用して説明を簡略化する。
【0040】
<構成>
図1に例示するように、本形態の検知システム2は、検知機能付加装置21および検知装置22を有し、インターネット等の安全ではないネットワーク13を通じて通信可能に構成されている。検知機能付加装置21は、入力部111、区分部112、部分処理部113、統合部214、合成部115、および出力部116を有する。検知装置22は、入力部121、区分部122、部分処理部123、統合部224、および判定部126を有する。図9Aに例示するように、本形態の統合部214は、区分部2141、線形結合部2142−0〜2142−(K−1)、および統合部2143を有する。図9Bに例示するように、本形態の統合部224は、区分部2241、線形結合部2242−0〜2242−(K−1)、および統合部2143を有する。
【0041】
<検知機能付加処理>
第1実施形態との相違点は、ステップS114がステップS214に置換される点である。以下ではステップS214の処理のみを説明する。
【0042】
≪ステップS214の処理≫
統合部214(図9A)の区分部2141に部分検知符号C,…,CM−1が入力される。区分部2141は、M個の部分検知符号C,…,CM−1をK個の部分集合Sub,…,SubK−1に区分する(図10A)。この区分方法に限定はない。例えば、K=2とし、m=meven(偶数)の部分検知符号Cを部分集合Subの要素とし、m=modd(奇数)の部分検知符号Cを部分集合Subの要素としてもよい。例えば、K=2、Yを1<Y<M−1の整数とし、Sub={C,…,C},Sub={CY−1,…,CM−1}としてもよい。例えば、2以上の整数TについてM=K×Tとし、Sub={CT×k,…,CT×k+T−1}としてもよい。例えば、K>Mとし、0≦k≦M−1についてSub={C}とし、M≦k≦K−1についてSub={固定値}としてもよい。各部分集合Sub(ただし、k=0,…,K−1)は、線形結合部2142−kに送られる。
【0043】
各線形結合部2142−kは、入力された部分集合Subの要素の線形結合演算を行って中間検知符号SC∈F(p)を得て出力する。例えば、各線形結合部2142−kは、部分集合Subの要素の和(拡大体F(p)上の和)によって中間検知符号SC∈F(p)を得る。例えば、m=meven(偶数)の部分検知符号Cを部分集合Subの要素とし、m=modd(奇数)の部分検知符号Cを部分集合Subの要素とした場合、以下のように中間検知符号SC,SCを得る。
【数4】

得られたK個の中間検知符号SC,…,SCK−1は統合部2143に送られる(図10A)。なお、各中間検知符号SCは同一の線形結合演算によって得られてもよいし、そうでなくてもよい。また、中間検知符号SC,…,SCK−1が並列に計算されてもよいし、そうでなくてもよい。
【0044】
統合部2143は、入力された中間検知符号SC,…,SCK−1からなる長さがLのK倍である列を検知符号Cとして出力する。例えば、C=(SC,…,SCK−1)を出力する(図10A)。
【0045】
このように得られた検知符号Cの長さは、処理単位ブロックBの長さと同一(K×L)となり、列BSを長さK×Lのブロックに統一することができる(図10B)。
【0046】
<検知処理>
第1実施形態との相違点は、ステップS124がステップS224に置換される点である。以下ではステップS224の処理のみを説明する。
【0047】
≪ステップS224の処理≫
統合部224(図9B)の区分部2241に部分検知符号C’,…,C’M−1が入力される。区分部2241は、区分部2141と同じ基準に則って、M個の部分検知符号C’,…,C’M−1をK個の部分集合Sub’,…,Sub’K−1に区分する。各部分集合Sub’(ただし、k=0,…,K−1)は、線形結合部2242−kに送られる。
【0048】
各線形結合部2242−kは、線形結合部2142−kと同じ基準に則って、入力された部分集合Sub’の要素の線形結合演算を行って中間検知符号SC’∈F(p)を得て出力する。得られたK個の中間検知符号SC’,…,SC’K−1は統合部2243に送られる。
【0049】
統合部2243は、統合部2143と同じ基準に則って、入力された中間検知符号SC’,…,SC’K−1からなる長さがLのK倍である列を検知符号C’として出力する。
【0050】
[その他の変形例等]
なお、本発明は上述の実施の形態に限定されるものではない。例えば、各装置がネットワークを通じて情報をやり取りするのではなく、少なくとも一部の組の装置が可搬型記録媒体を介して情報をやり取りしてもよい。或いは、少なくとも一部の組の装置が非可搬型の記録媒体を介して情報をやり取りしてもよい。すなわち、これらの装置の一部からなる組み合わせが、同一の装置であってもよい。
【0051】
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0052】
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
【0053】
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0054】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。
【0055】
上記実施形態では、コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されたが、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
【産業上の利用可能性】
【0056】
各実施形態の技術は、例えば、ブロック暗号方式の暗号文の改ざん検知や誤り検知に利用できる。
【符号の説明】
【0057】
1,2 検知システム
11,21 検知機能付加装置
12,22 検知装置
【要約】
【課題】改ざんや誤りの検知機能を付加するための演算を高速化する。
【解決手段】Nが1以上の整数であり、Mが2以上の整数であり、n=0,…,N−1であり、m=0,…,M−1であり、N個のブロックb,…,bN−1のそれぞれのブロックbがM個の部分列cn,0,…,cn,M−1を含むものとする。部分列c0,m,…,cN−1,mに対して乗算を含む演算を行って部分検知符号Cを得、部分検知符号C,…,CM−1に対応する検知符号を得る。
【選択図】図1
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10