(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024056470
(43)【公開日】2024-04-23
(54)【発明の名称】集積回路および演算方法
(51)【国際特許分類】
G06F 7/523 20060101AFI20240416BHJP
【FI】
G06F7/523
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2022163368
(22)【出願日】2022-10-11
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和3年度、国立研究開発法人情報通信研究機構「革新的情報通信技術研究開発委託研究/研究開発課題名:継続的進化を可能とするB5G IoT SoC及びIoTソリューション構築プラットホームの研究開発」、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】319006047
【氏名又は名称】シャープセミコンダクターイノベーション株式会社
(74)【代理人】
【識別番号】110000338
【氏名又は名称】弁理士法人 HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】島本 行博
(57)【要約】 (修正有)
【課題】SNOW-3G暗号回路のMUL64関数を簡易な組み合わせ回路で実現する集積回路及び演算方法を提供する。
【解決手段】集積回路1は、MUL64関数の第1引数であるVのxビット目の値及び第2引数であるPのyビット目の値の論理積の全ての排他的論理和の演算結果N(n)を算出する算出回路11と、M(n)を示すデータおよびN(n)を用いてMUL64関数値[63:0]を出力する出力回路12と、を備える。M(n)は、MUL64xPOW関数の第1引数に1を適用し、第2引数にnを適用し、第3引数に所定値を適用して算出された値である。
【選択図】
図1
【特許請求の範囲】
【請求項1】
SNOW-3G暗号回路のMUL64関数を実現する集積回路であって、
n=x+y(nは0~127の整数)を満たす整数xおよびyの組み合わせについて、前記MUL64関数の第1引数である64ビットのVのxビット目の値であるV[x]、および第2引数である64ビットのPのyビット目の値であるP[y]の論理積の全ての排他的論理和である128個の1ビットの演算結果N(n)を算出する算出回路と、
128個のM(n)を示すデータおよび128個の前記N(n)を用いて、論理積および排他的論理和の一方または両方による演算を行うことによりMUL64関数値[63:0]を出力する出力回路と、を備え、
前記M(n)は、前記MUL64関数に含まれるMUL64xPOW関数の第1引数に1を適用し、第2引数に前記nを適用し、第3引数に所定値を適用して算出された値である、
ことを特徴とする集積回路。
【請求項2】
前記出力回路は、
前記M(n)の各ビットおよび前記N(n)の論理積により算出される128個のM(n)×N(n)に対する排他的論理和を、前記MUL64関数値として出力する、
ことを特徴とする請求項1に記載の集積回路。
【請求項3】
前記出力回路は、
前記M(n)を示すデータであるGmであって、前記M(n)のmビット目(mは0~63の整数)についてM(n)[m]=1を満たす複数のnの集合であるGmに含まれる複数のnに対応するN(n)に対する排他的論理和を、前記MUL64関数値のmビット目として出力する、
ことを特徴とする請求項1に記載の集積回路。
【請求項4】
SNOW-3G暗号回路のMUL64関数を実現する演算方法であって、
n=x+y(nは0~127の整数)を満たす整数xおよびyの組み合わせについて、前記MUL64関数の第1引数である64ビットのVのxビット目の値であるV[x]、および第2引数である64ビットのPのyビット目の値であるP[y]の論理積の全ての排他的論理和である128個の1ビットの演算結果N(n)を算出する算出ステップと、
128個のM(n)を示すデータおよび128個の前記N(n)を用いて、論理積および排他的論理和の一方または両方による演算を行うことによりMUL64関数値[63:0]を出力する出力ステップと、を含み、
前記M(n)は、前記MUL64関数に含まれるMUL64xPOW関数の第1引数に1を適用し、第2引数に前記nを適用し、第3引数に所定値を適用して算出された値である、
ことを特徴とする演算方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はSNOW-3G暗号回路のMUL64関数を実現する集積回路および演算方法に関する。
【背景技術】
【0002】
通信におけるデータの暗号化方式として、SNOW-3Gが知られている。SNOW-3Gでは、完全性検証のためのMUL64関数が標準化されている。MUL64関数では、MUL64xPOW関数が再帰的に定義されている。再帰的に定義されている関数を回路によって実現した場合、入れ子構造の組み合わせ回路によって実現可能である。しかしながら、入れ子構造の回路を実行する回数が分からない場合、または入れ子構造の回路を実行する回数が多い場合、入れ子構造を作ることができないので、一般的に順序回路で実現される。
【0003】
一方、順序回路では、演算結果が出力されるまで時間が掛かるという問題がある。また、順序回路では、単純電力解析(SPA: Simple Power Analysis)および差分電力解析(DPA: Differential Power Analysis)といった電源電流解析によって値が読み取られやすいという問題もある。そのため、MUL64関数を組み合わせ回路で実現する技術が求められている。
【0004】
特許文献1には、MUL64関数を組み合わせ回路で実現する方法が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】中国特許出願公開第113971015号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、MUL64xPOW関数の第2引数の最大値は63であるため、特許文献1に記載の組み合わせ回路では64段のネスティング構造となり、複雑な構成になってしまう。
【0007】
本開示の一態様は、SNOW-3G暗号回路のMUL64関数を簡易な組み合わせ回路で実現することを目的とする。
【課題を解決するための手段】
【0008】
上記の課題を解決するために、本開示の一態様に係る集積回路は、SNOW-3G暗号回路のMUL64関数を実現する集積回路であって、n=x+y(nは0~127の整数)を満たす整数xおよびyの組み合わせについて、前記MUL64関数の第1引数である64ビットのVのxビット目の値であるV[x]、および第2引数である64ビットのPのyビット目の値であるP[y]の論理積の全ての排他的論理和である128個の1ビットの演算結果N(n)を算出する算出回路と、128個のM(n)を示すデータおよび128個の前記N(n)を用いて、論理積および排他的論理和の一方または両方による演算を行うことによりMUL64関数値[63:0]を出力する出力回路と、を備え、前記M(n)は、前記MUL64関数に含まれるMUL64xPOW関数の第1引数に1を適用し、第2引数に前記nを適用し、第3引数に所定値を適用して算出された値である。
【0009】
また、上記の課題を解決するために本開示の一態様に係る演算方法は、SNOW-3G暗号回路のMUL64関数を実現する演算方法であって、n=x+y(nは0~127の整数)を満たす整数xおよびyの組み合わせについて、前記MUL64関数の第1引数である64ビットのVのxビット目の値であるV[x]、および第2引数である64ビットのPのyビット目の値であるP[y]の論理積の全ての排他的論理和である128個の1ビットの演算結果N(n)を算出する算出ステップと、128個のM(n)を示すデータおよび128個の前記N(n)を用いて、論理積および排他的論理和の一方または両方による演算を行うことによりMUL64関数値[63:0]を出力する出力ステップと、を含み、前記M(n)は、前記MUL64関数に含まれるMUL64xPOW関数の第1引数に1を適用し、第2引数に前記nを適用し、第3引数に所定値を適用して算出された値である。
【発明の効果】
【0010】
本開示の一態様によれば、SNOW-3G暗号回路のMUL64関数を組み合わせ回路で実現できる。
【図面の簡単な説明】
【0011】
【
図1】本開示の実施形態1に係る集積回路の構成を示すブロック図である。
【
図2】本開示の実施形態1に係るM(n)の値の一部を示す表である。
【
図3】本開示の実施形態1に係るM(n,i)の値を示す表である。
【
図4】本開示の実施形態1においてMUL64関数値を算出するためのVerilogの記述の一部を示す図である。
【
図5】本開示の実施形態1に係る集積回路が実行する方法の一例を示すフローチャートである。
【
図6】本開示の実施形態2に係る集積回路の構成を示すブロック図である。
【
図7】本開示の実施形態2におけるGmの値を示す表である。
【
図8】本開示の実施形態2に係る集積回路が実行する方法の一例を示すフローチャートである。
【
図9】本開示の実施形態2に係る集積回路に含まれる回路の一例を示す図である。
【
図10】本開示の実施形態2においてMUL64関数値を算出するためのVerilogの記述の一部を示す図である。
【発明を実施するための形態】
【0012】
〔実施形態1〕
以下、本開示の一実施形態について、
図1~
図5を参照して詳細に説明する。
【0013】
(MUL64関数値の算出方法)
まず、3GPP(Third Generation Partnership Project:登録商標)において定義されているSNOW-3G暗号回路のMUL64関数の値であるMUL64関数値の算出方法について、以下に説明する。3GPPにおいて、MUL64関数値は以下のように定義されている。
【0014】
【0015】
ここで、Vは暗号化の対象となる文字列の64ビットのデータである。Pは暗号化のキーを示す64ビットのデータである。cは64ビットの固定値であり、3GPPではc=0x1bに固定されているが、本実施形態ではcは任意の値でもよい。
【0016】
また、MULxPOW(V,i,c)は、以下のように定義されている。
【0017】
【0018】
また、MULx(V,c)は、以下のように定義されている。
【0019】
【0020】
本実施形態では、以下のように式を変形、定義することにより、MUL64関数を3GPPに定義されている関数とは異なる形で算出する。
【0021】
まず、MUL64xPOWでは、以下の式(1)が成立する。
MUL64xPOW(X xor Y,i,c) = MUL64xPOW(X,i,c) xor MUL64xPOW(Y,i,c) ・・・(1)
式(1)が成立することは、帰納法によって証明できる。
【0022】
上記式(1)を利用して、M(n)を以下の式(2)のように定義する。
M(n)=MUL64xPOW(2^n,0,0x1b) ・・・(2)
式(2)に示すように、M(n)はV、Pには依存しない値であるため、予め算出することができる。M(n)の値の一部を
図2に示す。
図2は、本実施形態におけるM(n)の値の一部を示す表である。そして、式(2)を用いて算出したM(n)を使って、MUL64xPOWを以下のように表すことができる。
【0023】
【0024】
ここで、本明細書においては、
【0025】
【0026】
は、{}内をn=0~63まで計算して算出したそれぞれの値の排他的論理和を取る関数であると定義する。また、V[n]は、Vのnビット目の値(0または1)を示す。また、1ビットの変数と1ビットの変数との論理積を取る記号を「&」、異なるビット数の値の積を取る記号を「×」と記載する。
【0027】
式(3)では、引数であるVのnビット目が0であるn(n=0~63)については、式(3)の右辺は計算されない。一方、引数であるVのnビット目が1であるnについて、式(3)の右辺は、M(n)の排他的論理和を取る関数である。
【0028】
式(3)が成立することは、
V = {V[63], V[62], V[61], ... V[1], V[0]}
を、
V = (V[63]×2^63) xor (V[62]×2^62) xor (V[61]×2^61) xor ... xor (V[1]×2^1) xor (V[0]×2^0)
と表現を変更し、式(3)の左辺に代入し、展開することにより証明できる。
【0029】
さらに、MUL64xPOWでは、任意のi(i=0~63)において、以下の式(4)が成立する。
【0030】
【0031】
式(4)が成立することを、
図3を参照して説明する。
図3は、本実施形態におけるM(n,i)の値を示す表である。
【0032】
まず、以下の式(5)を定義する。
M(n,i) = MUL64xPOW(2^n,i,0x1b) ・・・(5)
そして、n=0~63、i=0~63の場合のそれぞれにおいて、M(n,i)を算出する。算出した結果が、
図3に示す表である。
【0033】
図3から、
M(n,i) = MUL64xPOW(2^n,i,0x1b)
と、
M(n,i) = MUL64xPOW(2^(n-x),(i+x),0x1b)
とが、等しいことがわかる。
【0034】
したがって、
M(n)=MUL64xPOW(2^n,0,0x1b)=MUL64xPOW(2^(n-x),(0+n),0x1b)=MUL64xPOW(1,n,0x1b)
と定義しても問題ないことがわかる。すなわち、M(n)は、MUL64関数に含まれるMUL64xPOW関数の第1引数に1を適用し、第2引数にnを適用し、第3引数に所定値(0x1b)を適用して算出された値である。ここでいう所定値とは、(0x1b)のみを示す値とは限らず、実施形態に応じて適宜変更しても良い値である。
【0035】
次に、MUL64関数は、第1引数P[63:0]に関して、値が1であるビット数の回数だけMUL64xPOW(V,i,c)の排他的論理和を取る関数である。すなわち、以下の式(6)である。
【0036】
【0037】
式(6)のMUL64xPOWに式(4)の右辺を代入すると、以下の式(7)になる。
【0038】
【0039】
式(7)の右辺を展開すると、以下の式(8)になる。
【0040】
【0041】
式(8)をM(n)で整理すると、以下の式(9)になる。
【0042】
【0043】
式(9)に基づいて記載された、MUL64関数値を算出するためのVerilogの記述の一部を、
図4に示す。
図4は、本実施形態においてMUL64関数値を算出するためのVerilogの記述の一部を示す図である。
【0044】
ここで、関数N(n)を以下の式(10)のように定義する。
【0045】
【0046】
すなわち、x+y=nを満たす全ての(x,y)においてPのxビット目の値とVのyビット目の値との論理積(P[x]&V[y])の値の排他的論理和を取った値をN(n)と定義する。
【0047】
式(10)を式(9)に代入すると、以下の式(11)となる。
【0048】
【0049】
式(11)より、MUL64関数の関数値は、N(n)と定数であるM(n)との論理積および排他的論理和の演算を行うことにより、算出されることがわかる。
【0050】
(集積回路1)
本実施形態に係る集積回路1は、3GPP(Third Generation Partnership Project)において定義されているSNOW-3G暗号回路のMUL64関数を実現する集積回路である。
【0051】
図1は、本実施形態に係る集積回路1の構成を示すブロック図である。集積回路1は、
図1に示すように、算出回路11および出力回路12を備えている。
【0052】
算出回路11には、暗号化の対象となる文字列である、MUL64関数の第1引数である64ビットのV[63:0]と、暗号化のキーを示す、MUL64関数の第2引数である64ビットのP[63:0]が入力される。
【0053】
算出回路11は、n=x+y(nは0~127の整数)を満たす整数xおよびyの組み合わせについて、Vのxビット目の値であるV[x]、およびPのyビット目の値であるP[y]の論理積の全ての排他的論理和である128個の1ビットの演算結果N(n)を算出する。算出回路11は、算出した演算結果N(n)を、出力回路12に出力する。
【0054】
出力回路12は、予め算出されたM(n)を示すデータおよび算出回路11によって算出されたN(n)を用いて、論理積および排他的論理和の一方または両方による演算を行うことによりMUL64関数値[63:0]を出力する。
【0055】
(集積回路1が実行する方法)
集積回路1が実行する方法(換言すると、SNOW-3G暗号回路のMUL64関数を実現する演算方法)の一例について、
図5を参照して説明する。
図5は、本実施形態に係る集積回路1が実行する方法の一例を示すフローチャートである。
【0056】
(ステップS12)
ステップS12において、算出回路11は、MUL64関数の第1引数である64ビットのV[63:0]と、暗号化のキーを示す、MUL64関数の第2引数である64ビットのP[63:0]を取得する。
【0057】
(ステップS13:算出ステップ)
ステップS13において、算出回路11は、既に説明した式(10)を用いてN(n)を算出する。
【0058】
【0059】
すなわち、ステップS13において算出回路11は、n=x+y(nは0~127の整数)を満たす整数xおよびyの組み合わせについて、ステップS12において取得したV[63:0]のxビット目の値であるV[x]、およびP[63:0]のyビット目の値であるP[y]の論理積の全ての排他的論理和である128個の1ビットの演算結果N(n)を算出する。
【0060】
(ステップS14:出力ステップ)
ステップS14において、出力回路12は、既に説明した式(11)を用いてMUL64関数値[63:0]を算出し、出力する。
【0061】
【0062】
ここで、M(n)は、既に説明した式(2)によって算出された値である。
M(n)=MUL64xPOW(2^n,0,0x1b) ・・・(2)
すなわち、ステップS14において出力回路12は、128個のM(n)を示すデータ、およびステップS13において算出された128個のN(n)を用いて、論理積および排他的論理和の両方による演算を行うことによりMUL64関数値[63:0]を出力する。
【0063】
より具体的には、出力回路12は、M(n)の各ビットおよびN(n)の論理積により算出される128個のM(n)×N(n)に対する排他的論理和を、MUL64関数値として出力する。
【0064】
(ステップS15)
ステップS15において、算出回路11は、入力されたデータが最終データか否かを判定する。
【0065】
ステップS15において、入力されたデータが最終データであると判定された場合(ステップS15:YES)、集積回路1は
図5に示す処理を終了する。
【0066】
一方、ステップS15において、入力されたデータが最終データではないと判定された場合(ステップS15:NO)、集積回路1はステップS12の処理に戻って実行する。
【0067】
(実施形態1の効果)
このように、本実施形態に係る集積回路1は、SNOW-3G暗号回路のMUL64関数を実現する集積回路であって、n=x+y(nは0~127の整数)を満たす整数xおよびyの組み合わせについて、MUL64関数の第1引数である64ビットのVのxビット目の値であるV[x]、および第2引数である64ビットのPのyビット目の値であるP[y]の論理積の全ての排他的論理和である128個の1ビットの演算結果N(n)を算出する算出回路11と、128個のM(n)を示すデータおよび128個のN(n)を用いて、論理積および排他的論理和の一方または両方による演算を行うことによりMUL64関数値[63:0]を出力する出力回路12と、を備える。また、M(n)は、MUL64関数に含まれるMUL64xPOW関数の第1引数に1を適用し、第2引数にnを適用し、第3引数に所定値を適用して算出された値である。
【0068】
このように、本実施形態に係る集積回路1は、予め算出されたM(n)と、MUL64関数の第1引数であるVおよび第2引数であるPとを演算することにより、MUL64関数値を出力する。したがって、本実施形態に係る集積回路1は、引数の範囲が広いMUL64関数を、簡易な組み合わせ回路で実現することができる。また、本実施形態に係る集積回路1は、MUL64関数を簡易な組み合わせ回路で実現することができるので、処理時間のばらつきが低減され、電源電流解析によって暗号化対象の文字列や暗号化のキーが解析されるリスクを低減することができる。
【0069】
また、例えば特許文献1に記載されている回路では、シフト回路があったり、処理において条件分岐があったりするので、構成が複雑である。また、特許文献1に開示されている演算方法では、64ビットデータとの排他的論理和を取ると上位59ビットは値が変わらないという性質を利用している。そのため、f0~f60までの記述はある一方、f61~f63の記述がない。そのため、特許文献1に開示されている演算方法では、f0と0x1bとの排他的論理和を取ったビットが、再度、最上位にくるため、上記の性質に依存した排他的論理和演算が発生する。したがって、特許文献1に開示されている演算方法では、場合分けが複雑になってしまう。
【0070】
一方、本実施形態に係る集積回路1は、特許文献1に記載されている回路に比べて、簡易な処理でMUL64関数値を算出することができる。
【0071】
〔実施形態2〕
本開示の他の実施形態について、
図6~
図10を参照して以下に説明する。なお、説明の便宜上、上記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を繰り返さない。
【0072】
(Gm)
上述した
図2はM(n)の値の一部を示す表であるが、
図2を参照すると、M(n)の値は、値が1のビットは非常に少ないことが分かる。ここで、MUL64関数値は、式(12)に示したように、M(n)の値において1が立っているビットの数だけN(n)の排他的論理和を取った値である。そこで、M(n)(n=0~127)において、mビット目であるM(n)[m]=1を満たす複数のnの集合を、Gmと定義する。Gmの値を、
図7に示す。
図7は、本実施形態におけるGmの値を示す表である。
【0073】
Gmを用いると、mビット目のMUL64関数値は、以下の式(12)のように表すことができる。
【0074】
【0075】
(集積回路1a)
本実施形態に係る集積回路1aは、上述した実施形態における集積回路1におけるM(n)を示すデータとして、Gmを用いる回路である。
【0076】
図6は、本実施形態に係る集積回路1aの構成を示すブロック図である。集積回路1aは、
図6に示すように、算出回路11および出力回路12aを備えている。
【0077】
算出回路11には、暗号化の対象となる文字列である、MUL64関数の第1引数である64ビットのV[63:0]と、暗号化のキーを示す、MUL64関数の第2引数である64ビットのP[63:0]が入力される。
【0078】
算出回路11は、n=x+y(nは0~127の整数)を満たす整数xおよびyの組み合わせについて、Vのxビット目の値であるV[x]、およびPのyビット目の値であるP[y]の論理積の全ての排他的論理和である128個の1ビットの演算結果N(n)を算出する。算出回路11は、算出した演算結果N(n)を、出力回路12に出力する。
【0079】
出力回路12aは、予め算出されたM(n)を示すデータであるGmであって、M(n)のmビット目(mは0~63の整数)についてM(n)[m]=1を満たす複数のnの集合であるGmに含まれる複数のnに対応するN(n)に対する排他的論理和を、MUL64関数値のmビット目として出力する。
【0080】
(集積回路1aが実行する方法)
集積回路1aが実行する方法の一例について、
図8を参照して説明する
図8は、本実施形態に係る集積回路1aが実行する方法の一例を示すフローチャートである。
【0081】
(ステップS12およびステップS13:算出ステップ)
ステップS12およびステップS13の処理は、上述した実施形態における処理と同じであるため、説明を省略する。
【0082】
(ステップS24:出力ステップ)
ステップS24において、出力回路12は、上述した式(12)を用いてMUL64関数値のmビット目を算出し、出力する。
【0083】
すなわち、ステップS24において出力回路12は、M(n)を示すデータであるGmであって、M(n)のmビット目(mは0~63の整数)についてM(n)[m]=1を満たす複数のnの集合であるGmに含まれる複数のnに対応するN(n)に対する排他的論理和を、MUL64関数値のmビット目として出力する。
【0084】
(ステップS15)
ステップS15の処理は、上述した実施形態における処理と同じであるため、説明を省略する。
【0085】
(回路例)
集積回路1aに含まれる回路の一例を
図9に示す。
図9は、本実施形態における集積回路1aに含まれる回路の一例を示す図である。
【0086】
図9は、MUL64関数値の最下位ビット(m=0)の値を出力する回路である。すなわち、
図9は、式(12)のmに0を適用したMUL64[V,P,0x16][0]を出力する回路である。
図9に示すように、MUL64[V,P,0x16][0]を出力する回路は、部分回路C1、部分回路C2、部分回路C3、および部分回路C4を含む。
【0087】
m=0の場合、M(n)[0]=1を満たすnの集合であるGmは、
図7に示すように、Gm={0,64,124,125,127}である。したがって、MUL64[V,P,0x16][0]は、以下の式(13)で表される。
MUL64[V,P,0x1b][0]=N[0] xor N[64] xor N[124] xor N[125] xor N[127]…(13)
図9において、部分回路C1は、式(13)におけるN[0]に対応する。また、部分回路C2は、式(13)におけるN[64]に対応する。また、部分回路C3は、式(13)におけるN[124]に対応する。また、部分回路C4は、式(13)におけるN[125]に対応する。N[127]に関しては、n=127を満たすx、y(x、yはそれぞれ0~63)は存在しないため、N[127]に対応する回路は
図9に存在しない。
【0088】
また、
図9の回路は、
図8に示したフローチャートのステップS13およびステップS24において、m=0の場合に対応する回路である。ステップS13において実行される処理に対応するのが、
図9に示す部分回路C1~部分回路C4である。ステップS24において実行される処理に対応するのが、
図9のXORゲートである。
【0089】
このように、MUL64関数値の最下位ビットの値は、69個のANDゲートの出力を、1個のXORゲートに入力することによって算出される。すなわち、MUL64関数値の最下位ビットを出力する回路は、MUL64関数を組み合わせ回路で実現することができる。同様に、MUL64関数値のm=1~63を出力する回路も、組み合わせ回路で実現することができる。
【0090】
(記述例)
図10は、本実施形態においてMUL64関数値を算出するためのVerilogの記述の一部を示す図である。
図10に示すように、本実施形態においてMUL64関数値を算出するためのVerilogの記述は、上述した実施形態1におけるVerilogの記述(
図4)に比べると、Gmに対応する記述になっているため、記述量が少なくなっている。
【0091】
(実施形態2の効果)
このように、本実施形態に係る集積回路1aでは、M(n)を示すデータであるGmであって、M(n)のmビット目(mは0~63の整数)についてM(n)[m]=1を満たす複数のnの集合であるGmに含まれる複数のnに対応するN(n)に対する排他的論理和を、MUL64関数値のmビット目として出力する。したがって、本実施形態に係る集積回路1aは、上述した集積回路1に比べて、簡易な構成でMUL64関数を組み合わせ回路で実現することができる。
【0092】
〔ソフトウェアによる実現例〕
集積回路1、1aの機能は、当該集積回路1、1aと同様の機能を有する装置としてコンピュータを機能させるためのプログラムであって、当該装置の各ブロック(特に算出回路11および出力回路12と同様の機能を有するブロック)としてコンピュータを機能させるためのプログラムにより実現することができる。
【0093】
また、集積回路1、1aの機能は、コンピュータにSNOW-3G暗号回路のMUL64関数を実現する演算方法の各処理を実行させるプログラムにより実現することができる。
【0094】
この場合、上記装置は、上記プログラムを実行するためのハードウェアとして、少なくとも1つの制御装置(例えばプロセッサ)と少なくとも1つの記憶装置(例えばメモリ)を有するコンピュータを備えている。この制御装置と記憶装置により上記プログラムを実行することにより、上記各実施形態で説明した各機能が実現される。
【0095】
上記プログラムは、一時的ではなく、コンピュータ読み取り可能な、1または複数の記録媒体に記録されていてもよい。この記録媒体は、上記装置が備えていてもよいし、備えていなくてもよい。後者の場合、上記プログラムは、有線または無線の任意の伝送媒体を介して上記装置に供給されてもよい。
【0096】
また、上記各ブロックの機能の一部または全部は、論理回路により実現することも可能である。例えば、上記各制御ブロックとして機能する論理回路が形成された集積回路も本発明の範疇に含まれる。この他にも、例えば量子コンピュータにより上記各制御ブロックの機能を実現することも可能である。
【0097】
〔まとめ〕
本開示の態様1に係る集積回路(1、1a)は、SNOW-3G暗号回路のMUL64関数を実現する集積回路であって、n=x+y(nは0~127の整数)を満たす整数xおよびyの組み合わせについて、前記MUL64関数の第1引数である64ビットのVのxビット目の値であるV[x]、および第2引数である64ビットのPのyビット目の値であるP[y]の論理積の全ての排他的論理和である128個の1ビットの演算結果N(n)を算出する算出回路(11)と、128個のM(n)を示すデータおよび128個の前記N(n)を用いて、論理積および排他的論理和の一方または両方による演算を行うことによりMUL64関数値[63:0]を出力する出力回路(12、12a)と、を備え、前記M(n)は、前記MUL64関数に含まれるMUL64xPOW関数の第1引数に1を適用し、第2引数に前記nを適用し、第3引数に所定値を適用して算出された値である。
【0098】
上記の構成によれば、SNOW-3G暗号回路のMUL64関数を簡易な組み合わせ回路で実現することができる。
【0099】
本開示の態様2に係る集積回路(1、1a)において、上記態様1における前記出力回路(12、12a)は前記M(n)の各ビットおよび前記N(n)の論理積により算出される128個のM(n)×N(n)に対する排他的論理和を、前記MUL64関数値として出力してもよい。
【0100】
上記の構成によれば、SNOW-3G暗号回路のMUL64関数を簡易な組み合わせ回路で実現することができる。
【0101】
本開示の態様3に係る集積回路(1a)において、上記態様1における前記出力回路(12a)は、前記M(n)を示すデータであるGmであって、前記M(n)のmビット目(mは0~63の整数)についてM(n)[m]=1を満たす複数のnの集合であるGmに含まれる複数のnに対応するN(n)に対する排他的論理和を、前記MUL64関数値のmビット目として出力してもよい。
【0102】
上記の構成によれば、SNOW-3G暗号回路のMUL64関数を簡易な組み合わせ回路で実現することができる。
【0103】
本開示の態様4に係る演算方法は、SNOW-3G暗号回路のMUL64関数を実現する演算方法であって、n=x+y(nは0~127の整数)を満たす整数xおよびyの組み合わせについて、前記MUL64関数の第1引数である64ビットのVのxビット目の値であるV[x]、および第2引数である64ビットのPのyビット目の値であるP[y]の論理積の全ての排他的論理和である128個の1ビットの演算結果N(n)を算出する算出ステップと、128個のM(n)を示すデータおよび128個の前記N(n)を用いて、論理積および排他的論理和の一方または両方による演算を行うことによりMUL64関数値[63:0]を出力する出力ステップと、を含み、前記M(n)は、前記MUL64関数に含まれるMUL64xPOW関数の第1引数に1を適用し、第2引数に前記nを適用し、第3引数に所定値を適用して算出された値である。
【0104】
上記の構成によれば、上述した集積回路と同様の効果を奏する。
【0105】
本開示は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本開示の技術的範囲に含まれる。さらに、各実施形態にそれぞれ開示された技術的手段を組み合わせることにより、新しい技術的特徴を形成することができる。
【符号の説明】
【0106】
1、1a 集積回路
11 算出回路
12、12a 出力回路