JP6901004B2 - 置換装置、置換方法、およびプログラム - Google Patents

置換装置、置換方法、およびプログラム Download PDF

Info

Publication number
JP6901004B2
JP6901004B2 JP2019548144A JP2019548144A JP6901004B2 JP 6901004 B2 JP6901004 B2 JP 6901004B2 JP 2019548144 A JP2019548144 A JP 2019548144A JP 2019548144 A JP2019548144 A JP 2019548144A JP 6901004 B2 JP6901004 B2 JP 6901004B2
Authority
JP
Japan
Prior art keywords
integer
replacement
distribution destination
elements
vector
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
JP2019548144A
Other languages
English (en)
Other versions
JPWO2019073858A1 (ja
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2019073858A1 publication Critical patent/JPWO2019073858A1/ja
Application granted granted Critical
Publication of JP6901004B2 publication Critical patent/JP6901004B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/766Generation of all possible permutations
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/462Track or segment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

この発明は、置換処理を高速に行う技術に関する。
置換技術はコンピュータ等での基本的なデータ処理の一つであり、様々な場面で利用されている。従来の置換技術としては、置換情報に記載された位置へ順番にデータを移動する自明な置換や、配列をランダムに入れ替えるFisher-Yatesアルゴリズム(例えば、非特許文献1参照)などが知られている。
Fisher, Ronald A., Yates, Frank, "Statistical tables for biological, agricultural and medical research",Oliver & Boyd, pp. 26-27, 1938.
従来の置換技術では、置換処理を行う際にIOアクセスがランダムアクセスとなる。また、対象データがキャッシュメモリより大きいと非キャッシュメモリへのアクセスが発生する。通常、キャッシュメモリと非キャッシュメモリとでは1桁以上、シーケンシャルアクセスとランダムアクセスとでは1桁以上速度が異なる。そのため、従来の置換技術では、対象データが大きい場合、非キャッシュメモリへのランダムアクセスが発生し、処理が低速になるという課題がある。
この発明の目的は、上記のような点を鑑みて、従来よりも高速に置換処理を行うことができる置換技術を提供することである。
上記の課題を解決するために、この発明の第一の態様の置換装置は、Dを所定の分割数とし、aを長さmのベクトルとし、bをバッファ内の振り分け先を表すD未満の値の列とし、xを各振り分け先の中での置換先を表す値の列とし、dを長さmのバッファを表すベクトルとし、iを0以上D未満の各整数とし、jを0以上m未満の各整数とし、Siをi番目の振り分け先に対応する開始位置とし、Niをi番目の振り分け先に含まれる要素の数とし、各整数iについて、i番目の振り分け先に対応する処理中の位置を示す値Piに開始位置Siを設定する初期位置設定部と、各整数jについて、バッファdのPb_j番目の要素dP_b_jへベクトルaのj番目の要素ajを設定する並べ替え部と、各整数iについて、バッファdのSi番目の要素からNi個の要素dS_i, …, dS_i+N_i-1に対して列xのSi番目の要素からNi個の要素を用いて任意の逆置換アルゴリズムを実行することで、出力ベクトルcのSi番目の要素からNi個の要素cS_i, …, cS_i+N_i-1を生成する置換実行部と、を含む。
上記の課題を解決するために、この発明の第二の態様の置換装置は、Dを所定の分割数とし、aを長さmのベクトルとし、bをバッファ内の振り分け先を表すD未満の値の列とし、xを各振り分け先の中での置換先を表す値の列とし、dを長さmのバッファを表すベクトルとし、iを0以上D未満の各整数とし、jを0以上m未満の各整数とし、Siをi番目の振り分け先に対応する開始位置とし、Niをi番目の振り分け先に含まれる要素の数とし、各整数iについて、ベクトルaのSi番目の要素からNi個の要素に対して列xのSi番目の要素からNi個の要素を用いて任意の置換アルゴリズムを実行することで、バッファdのSi番目の要素からNi個の要素dS_i, …, dS_i+N_i-1を設定する置換実行部と、各整数iについて、i番目の振り分け先に対応する処理中の位置を示す値Piに開始位置Siを設定する初期位置設定部と、各整数jについて、出力ベクトルcのj番目の要素cjへバッファdのPb_j番目の要素dP_b_jを設定する並べ替え部と、を含む。
この発明によれば、事前に置換の対象データをキャッシュに収まるバッファに振り分ける処理を行うことで、非キャッシュメモリへのランダムアクセスを抑えることができるため、従来よりも高速に置換処理を行うことができる。
図1は、第一実施形態の置換装置の機能構成を例示する図である。 図2は、第一実施形態の置換方法の処理手続きを例示する図である。 図3は、第二実施形態の置換装置の機能構成を例示する図である。 図4は、第二実施形態の置換方法の処理手続きを例示する図である。 図5は、第三実施形態の置換装置の機能構成を例示する図である。 図6は、第三実施形態の置換方法の処理手続きを例示する図である。 図7は、第四実施形態の置換装置の機能構成を例示する図である。 図8は、第四実施形態の置換方法の処理手続きを例示する図である。 図9は、第五実施形態の置換装置の機能構成を例示する図である。 図10は、第五実施形態の置換方法の処理手続きを例示する図である。
本明細書中で使用する「x」はベクトルxまたは列xを表す。「」の直前の文字に対する下付き添え字はベクトルまたは列中の要素の番号を表す。例えば、「xi」は、ベクトルxのi番目の要素を表す。
下付き添え字の中で使用する記号「_」は、直後の文字を下付き添え字とすることを表す。例えば、Ab_cは、Aにbcが下付き添え字として付くことを表している。同様に、AB_c_dは、AにBc_dが下付き添え字として付くことを表している。
本発明の置換技術は、m(≧2)個のデータを置換する際に、キャッシュに収まる大きさのD(≧2)個のバッファに粗く振り分ける処理をE(≧1)回実行し(この部分は非キャッシュメモリへのシーケンシャルアクセス処理である)、m/DE個のデータでのキャッシュヒット率が十分に高くなったところでランダムアクセスを伴う通常の置換(この部分はキャッシュメモリへのランダムアクセス処理である)に切り替え、低速な非キャッシュメモリへのランダムアクセスを抑えることで高速な置換を実現する。以降、Dは分割数と呼び、Eは再帰深さと呼ぶ。
“キャッシュに収まるD個のバッファ”とは、D個の各バッファのサイズがキャッシュメモリのサイズ以下という意味ではない。プログラムがある記憶領域にアクセスしたとき、キャッシュ機構はその周辺のデータをキャッシュに格納する。その格納単位をXとし、キャッシュサイズをCとすれば、アクセス箇所がC/X個程度に限定されれば、キャッシュは常にヒットすることになる。また、D箇所それぞれでシーケンシャルアクセスを行えば、各箇所でシーケンシャルにアクセスしてキャッシュに入っていない領域に突入したときのみのキャッシュミスとなり、この場合は通常のシーケンシャルアクセスと同じ速度となる。したがって、DはC/X程度の値とすることが望ましい。
上述したとおり、キャッシュメモリと非キャッシュメモリとでは1桁以上、またシーケンシャルアクセスとランダムアクセスとでは1桁以上速度が異なる。そのため、非キャッシュメモリへのランダムアクセスを1回行う従来技術よりも、非キャッシュメモリへのシーケンシャルアクセスを数回とキャッシュメモリへのランダムアクセスを1回行う本発明の方が高速である。例えば、4バイトのデータ100万個で、キャッシュメモリが256キロバイト、キャッシュの格納単位が16キロバイトのとき、データサイズは4メガバイトでキャッシュヒット率は8%ほどになる。一方、分割数Dを16とし、再帰深さEを1として本発明による置換を行うと、1回のシーケンシャルアクセス相当の処理でデータを16分割して256キロバイトずつに分割でき、残りの処理をキャッシュヒット率がほぼ100%のランダムアクセスとすることができる。これにより、最も遅い非キャッシュメモリへのランダムアクセスを回避することができる。
本発明の方法でランダム置換を行う場合のアルゴリズム(Scheme 1)を以下に示す。分割はランダムに行われるため、分割後のバッファの各部分のサイズは不定である。ただし、mの値が十分に大きければ非常に高い確率で各部分のサイズがそれぞれm/D付近のサイズになる。また、本発明を適用するのはデータがキャッシュに収まらない場合であるため、元々mは大きい前提である。
再帰深さEは、データ数mの大きさに依存して定める。バッファの各部分のサイズ(上記の例ではm/D程度)がキャッシュに収まる大きさであれば、E=1とする。バッファの各部分のサイズがキャッシュに収まらない場合、E≧2として、キャッシュに収まるサイズになるまで各部分のデータを対象として再帰的にアルゴリズムを実行すればよい。
Scheme 1 ランダム置換アルゴリズム
入力:長さmのベクトルa、再帰深さE(≧1)
パラメータ:分割数D(≧2)
出力:一様ランダムに置換されたπa
1: ランダム置換生成
2: D未満のm個の乱数b0, b1, …, bm-1を生成しb:=(b0, b1, …, bm-1)とする。
3: bのうち、各i<Dについて、iが何個現れたか集計しNiとする。
4: 置換実施
5: 各i<Dで、Si=Pi:=Σj<iNjとする。ただしS0=P0:=0とする。
6: for j=0 to m-1
7: dP_b_j:=ajとする。
8: Pb_j:=Pb_j+1とする。
9: for i=0 to D-1
10: dS_i, …, dS_i+N_i-1を入力ベクトルとして、E≧2なら再帰深さをE-1としてScheme 1を再帰的に実行する。E=1なら任意のランダム置換アルゴリズムを実行し、結果として得られる置換後のベクトルcS_i, …, cS_i+N_i-1を出力する。
本発明は、ランダムでない置換に適用することもできる。その場合、以下に示すアルゴリズム(Scheme 2)を用いて本発明の処理手続きに合致するように与えられた通常の置換を振り分け先を表す値の列と振り分け先の中での置換先を表す値の列とに形式変換する。
Scheme 2 通常の置換からの形式変換アルゴリズム
入力:通常の置換π
出力:振り分け先を表すD未満の値の列b、振り分け先の中での置換先を表す値の列x
1: q:=m/D
2: r:=m mod D
3: 各i<Dで、Si=Pi:=iq+min(r, i)とおく。
4: for j=0 to m-1
5: πjのqによる商をk'とおき、余りをsとおく。
6: bj:=k'-(s<min(r, k')?1:0)とする。
7: xP_b_j:=πj-Sjとする。
8: Pb_j:=Pb_j+1と更新する。
ただし、「?1:0」は直前の命題が真の場合は1、偽の場合は0とする演算子である。
Scheme 2の中で商k'と余りsを求めているが、そのまま除算で計算すると低速になってしまう。そのため、qが反復中は固定であることを利用し、除算を乗算に変換する方法を用いることが望ましい。例えば、Mは一定以上の桁の2べき数とし、qp≧Mを満たす最小のpを計算し、πj÷qをπjp>>Mにより計算する(>>はシフト演算)。qp≒Mであるため、pはほぼqの逆数Mとなる。除算を乗算に変換する方法は、例えば、下記参考文献1に記載されている。
〔参考文献1〕Torbjorn Granlund, Peter L. Montgomery, "Division by invariant integers using multiplication", PLDI 1994, pp. 61-72.
上記のScheme 2を適用すると、長さmをD箇所の部分に均等に振り分けるための振り分け先を表す値の列bと、各振り分け先の中での置換先を表す値の列xが出力される。なお、“長さmをD箇所の部分に均等に振り分ける”とは、例えば、m=80のとき、D=16だと5要素ずつの部分に分割し、その中で例えば置換先が6番である値は、16箇所のうち1番目の部分、つまり全体で5〜9番に当たる部分へ出現順に移動する、ということである。なお、ここでは、順番はすべて0スタートである。
以下で説明するScheme 3, 4では、Ni, Siを用いるが、Scheme 2とScheme 3, 4とを組み合わせて実行する場合、Ni, Siを以下として実行すればよい。
各i番目の部分の要素数:Ni=q+(i<r?1:0)
各i番目の部分の開始位置:Si=iq+min(r, i)
この方法が適用できるのはm≧256のときであるが、前述したように、mはかなり大きい値である前提のため問題とはならない。Ni, Siが上記となることの証明は後述する。
例えばE=1のときのScheme 1において、Scheme 2で生成した振り分け先を表す値の列bをScheme 1のステップ1で生成するランダム置換bの代わりに用い、さらにScheme 1のステップ10のi番目の置換においてSi番目の要素からNi個の要素を置換として逆置換を行うと、aを置換として見て逆置換を行ったときと同じ結果となる。各iに対してxのSi番目の要素からNi個の要素が置換になっているため、再帰的にScheme 2を行うことで、E≧2のときのScheme 1に対応する置換を生成することができる。なお、置換は入力のどの位置から値を取得するかを記述する形式のときに通常の置換になるため、Scheme 2とScheme 1とを組み合わせたときは逆写像である逆置換となることに注意すべきである。
具体的に、E=1の場合にScheme 2の出力を使って逆置換するアルゴリズム(Scheme 3)を以下に示す。E≧2の場合、Scheme 3のステップ7で実行する任意の逆置換アルゴリズムをScheme 3自身として再帰的に処理すればよい。
Scheme 3 逆置換アルゴリズム
入力:長さmのベクトルa、振り分け先を表すD未満の値の列b、振り分け先の中での置換先を表す値の列x、再帰深さE(≧1)
パラメータ:分割数D(≧2)
出力:aをb, xで逆置換した列c
1: 長さmのバッファdを確保する。
2: 各i<Dで、Pi:=Siとする。
入力されたb, xがScheme 1を用いて生成したものである場合、Si:=Σj<iNjを計算すればよい。このとき、NiはScheme 1で生成したものを記憶しておけばよい。
入力されたb, xがScheme 2を用いて生成したものである場合、Si:= iq+min(r, i)を計算すればよい。このとき、q, rは、q:=m/D, r:=m mod Dにより計算すればよい。
3: for j=0 to m-1
4: dP_b_j:=ajとする。
5: Pb_j:=Pb_j+1とする。
6: for i=0 to D-1
7: dS_i, …, dS_i+N_i-1を入力ベクトルとして、E≧2なら再帰深さをE-1としてScheme 3を再帰的に実行する。E=1なら任意の逆置換アルゴリズムを実行し、結果として得られる置換後のベクトルcS_i, …, cS_i+N_i-1を出力する。
なお、ステップ6〜7の繰り返しは並列に処理することができる。
具体的に、E=1の場合にScheme 2の出力を使って置換するアルゴリズム(Scheme 4)を以下に示す。E≧2の場合、Scheme 3と同様に、Scheme 4のステップ3で実行する任意の置換アルゴリズムをScheme 4自身として再帰的に処理すればよい。
Scheme 4 置換アルゴリズム
入力:長さmのベクトルa、振り分け先を表すD未満の値の列b、振り分け先の中での置換先を表す値の列x、再帰深さE(≧1)
パラメータ:分割数D(≧2)
出力:aをb, x で置換した列c
1: 長さmのバッファdを確保する。
2: for i=0 to D-1
3: aS_i, …, aS_i+N_i-1とxS_i, …, xS_i+N_i-1とを入力ベクトルとして、E≧2なら再帰深さをE-1としてScheme 4を再帰的に実行する。E=1なら任意の置換アルゴリズムを実行し、結果として得られる置換後のベクトルdS_i, …, dS_i+N_i-1を出力する。
入力されたb, xがScheme 1を用いて生成したものである場合、NiはScheme 1で生成したものを記憶しておき、Si:=Σj<iNjを計算すればよい。
入力されたb, xがScheme 2を用いて生成したものである場合、Si:= iq+min(r, i), Ni=q+(i<r?1:0)を計算すればよい。このとき、q, rは、q:=m/D, r:=m mod Dにより計算すればよい。
4: 各i<Dで、Pi:=Siとする。
5: for j=0 to m-1
6: cj:=dP_b_jとする。
7: Pb_j:=Pb_j+1とする。
なお、ステップ2〜3の繰り返しは並列に処理することができる。一方、ステップ5〜7の繰り返しは並列に処理することはできない。
<証明>
Scheme 2とScheme 3, 4とを組み合わせて実行する場合に、Ni, Siが上述した値となることの証明を以下に示す。
ある移動先j=k'q+sの要素がk番目のバッファに格納される必要十分条件は、処理の定義から以下となる。
(k'=k∧s≧min(r, k'))∨(k'=k+1∧s<min(r, k'))
k'=kとk'=k+1が排反だから、∨で挟まれた左項と右項は排反であり、k番目のバッファに格納される要素数は左項を満たすjと右項を満たすjの数の和となる。
左項を考える。k'=kを満たすjについて考えると、k'=kなのでmin(r, k')=min(r, k)である。k≧rのとき、min(r, k)=rであり、s≧min(r, k)⇔s≧rである。k<rのときは同様にs≧kであり、左項は
k'=k∧((k≧r∧s≧r)∨(k<r∧s≧k))
と同値となる。右項を考えると同様に、
k'=k+1∧((k≧r∧s<r)∨(k<r∧s<k+1))
と同値となる。合計して、k≧rのとき
(k'=k∧s≧r)∨(k'=k+1∧s<r)
k < r のとき
(k'=k∧s≧k)∨(k'=k+1∧s<k+1)
となる。ここで、m≧256のときq≧16である。
(i) mが16の倍数でないときk'≦16であり、k'=16を満たすjは、j=16q, 16q+1, …, 16q+r-1である(mが16の倍数でないのでr>0であることに注意)。
上記は背理法による。k'≧17とすると、q≧16よりk'q>16q+r=mとなり矛盾する。k'=16にならないとすると、jの最大値はm-1だから、m-1≦15q+(q-1)となり、m=16q+rに矛盾する。よってk'≦16であり、m-1=16q+r-1に注意すると、k'=16を満たすjはj=16q, 16q+1, …,16q+r-1である。
k≦15のとき、sは0〜q-1の全ての値をとり、k'=kとなるjはq個でsとなる。このとき、k'=k∧s≧rを満たすjの数はq-r個、k'=k∧s≧kを満たすjの数はq-k個となる。
k≦14のとき、k'=k+1∧s<rを満たすjの数はr個、k'=k+1∧s<k+1を満たすjの数はk+1個となる。よってk≦14では、k<rのときjの個数はq+1個、k≧rのときq個となる。
k=15では、常にk≧rであり、k'=k∧s≧rを満たすjの数はq-r個で、k'=16を満たすjはj=16q, 16q+1, …, 16q+r-1だから、s<rとなるjはr個である。よってk=15となるjの個数はq個である。するとk≦15で、k<rでq+1個、k≧rでq個なので、q+(k<r?1:0)に等しい。なおk≦15の合計が16q+rになるので、k=16の個数は0である。
(ii) mが16の倍数のとき、r=0だから、s<min(r, k')は常に偽であり、k=k'となる。すると0番から15番目までの全てのバッファで、jの個数はq個である。rが0なのでk<rも常に偽で、q+(k<r?1:0)=qなので命題は正しい。
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
<第一実施形態>
本発明の第一実施形態は、Scheme 1に示したランダム置換を実行する置換装置および方法である。
第一実施形態の置換装置1は、図1に例示するように、振り分け先決定部11、要素数決定部12、開始位置決定部13、初期位置設定部14、並べ替え部15、および置換実行部16を含む。置換装置1は、長さmのベクトルa:=(a0, a1, …, am-1)と、再帰深さE(≧1)とを入力とし、ベクトルaを一様ランダムに置換した出力ベクトルcを出力する。この置換装置1が、図2に例示する各ステップの処理を行うことにより第一実施形態の置換方法が実現される。
置換装置1は、例えば、中央演算処理装置(CPU: Central Processing Unit)、主記憶装置(RAM: Random Access Memory)などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。置換装置1は、例えば、中央演算処理装置の制御のもとで各処理を実行する。置換装置1に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。置換装置1の各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。
図2を参照して、第一実施形態の置換装置1が実行する置換方法について説明する。
ステップS11において、振り分け先決定部11は、D未満のm個の乱数b0, b1, …, bm-1を生成し、乱数の列b:=(b0, b1, …, bm-1)を生成する。乱数b0, b1, …, bm-1は、置換対象となるベクトルaの各要素a0, a1, …, am-1をバッファ内で振り分けるときの振り分け先を表す値である。
ステップS12において、要素数決定部12は、0以上D未満の各整数iについて、列bにおける整数iの出現数を集計することで、i番目の振り分け先の要素数Niを決定する。
ステップS13において、開始位置決定部13は、0以上D未満の各整数iについて、Si:=Σj<iNjを計算することで、i番目の振り分け先に対応する開始位置Siを決定する。ただし、S0:=0とする。
ステップS14において、初期位置設定部14は、0以上D未満の各整数iについて、バッファのi番目の振り分け先に対応する処理中の位置を示す値Piにi番目の振り分け先の開始位置Siを設定する。すなわち、Pi:=Siを計算する。
ステップS15において、並べ替え部15は、あらかじめ確保しておいた長さmのバッファを表すベクトルd:=(d0, d1, …, dm-1)に対して、乱数の列bに従って、長さmのベクトルaの各要素を設定する。具体的には、0以上m未満の各整数jについて、バッファdのPb_j番目の要素へベクトルaのj番目の要素ajを設定する。すなわち、dP_b_j:=ajを計算する。その後、Pb_j:=Pb_j+1と更新する。
ステップS16において、置換実行部16は、0以上D未満の各整数iについて、E≧2の場合には、ベクトルdのSi番目の要素からNi個の要素dS_i, …, dS_i+N_i-1を入力ベクトルとし、再帰深さEをE-1として、ステップS11〜S16を再帰的に実行する。E=1の場合には、ベクトルdのSi番目の要素からNi個の要素dS_i, …, dS_i+N_i-1に対して任意の逆置換アルゴリズムを実行することで、出力ベクトルc:=(c0, c1, …, cm-1)のSi番目の要素からNi個の要素cS_i, …, cS_i+N_i-1を生成する。
<第二実施形態>
本発明の第二実施形態は、Scheme 2に示した形式変換により生成されたバッファ内の振り分け先を表す値の列と各振り分け先の中での置換先の列とを用いてScheme 3に示した逆置換を実行する置換装置および方法である。
第二実施形態の置換装置2は、図3に例示するように、除算部21、要素数決定部22、開始位置決定部23、振り分け先決定部24、置換生成部25、初期位置設定部31、並べ替え部32、および置換実行部33を含む。置換装置2は、長さmのベクトルa:=(a0, a1, …, am-1)と、長さmの置換π:=(π0, π1, …, πm-1)とを入力とし、ベクトルaを置換πに従って置換した後のベクトルc:=(c0, c1, …, cm-1)を出力する。この置換装置2が、図4に例示する各ステップの処理を行うことにより第二実施形態の置換方法が実現される。
図4を参照して、第二実施形態の置換装置2が実行する置換方法について説明する。
ステップS21において、除算部21は、q:=m/D, r:=m mod Dを計算する。
ステップS22において、要素数決定部22は、0以上D未満の各整数iについて、Ni:=q+(i<r?1:0)を計算することで、i番目の振り分け先に含まれる要素の数Niを決定する。
ステップS23において、開始位置決定部23は、0以上D未満の各整数iについて、Si:=iq+min(r, i)を計算することで、i番目の振り分け先に対応する開始位置Siを決定する。
ステップS24において、振り分け先決定部24は、0以上m未満の各整数jについて、πjのqによる商をk'とおき、余りをsとおき、bj:=k'-(s<min(r, k')?1:0)を計算し、バッファ内の振り分け先を表す値の列b:=(b0, b1, …, bm-1)を生成する。
ステップS25において、置換生成部25は、0以上m未満の各整数jについて、xP_b_j:=πj-Sjを計算し、各振り分け先の中での置換先を表す値の列x:=(x0, x1, …, xm-1)を生成する。
ステップS31において、初期位置設定部31は、0以上D未満の各整数iについて、バッファのi番目の振り分け先に対応する処理中の位置を示す値Piにi番目の振り分け先の開始位置Siを設定する。すなわち、Pi:=Siを計算する。
ステップS32において、並べ替え部32は、あらかじめ確保しておいた長さmのバッファを表すベクトルd:=(d0, d1, …, dm-1)に対して、バッファ内の振り分け先を表す値の列bに従って、長さmのベクトルaの各要素を設定する。具体的には、0以上m未満の各整数jについて、バッファdのPb_j番目の要素へベクトルaのj番目の要素ajを設定する。すなわち、dP_b_j:=ajを設定する。その後、Pb_j:=Pb_j+1と更新する。
ステップS33において、置換実行部33は、0以上D未満の各整数iについて、ベクトルdのSi番目の要素からNi個の要素dS_i, …, dS_i+N_i-1に対して任意の逆置換アルゴリズムを実行することで、出力ベクトルc:=(c0, c1, …, cm-1)のSi番目の要素からNi個の要素cS_i, …, cS_i+N_i-1を生成する。
<第三実施形態>
本発明の第三実施形態は、Scheme 2に示した形式変換により生成されたバッファ内の振り分け先を表す値の列と各振り分け先の中での置換先を表す値の列とを用いてScheme 4に示した置換を実行する置換装置および方法である。
第三実施形態の置換装置3は、図5に例示するように、除算部21、要素数決定部22、開始位置決定部23、振り分け先決定部24、置換生成部25、置換実行部41、初期位置設定部42、および並べ替え部43を含む。置換装置3は、長さmのベクトルa:=(a0, a1, …, am-1)と、長さmの置換π:=(π0, π1, …, πm-1)とを入力とし、ベクトルaを置換πに従って置換した後のベクトルc:=(c0, c1, …, cm-1)を出力する。この置換装置3が、図6に例示する各ステップの処理を行うことにより第三実施形態の置換方法が実現される。
図6を参照して、第三実施形態の置換装置3が実行する置換方法について説明する。以下では、上述の各実施形態との相違点を中心に説明する。
ステップS21からステップS25の処理は、第二実施形態と同様である。
ステップS41において、置換実行部41は、0以上D未満の各整数iについて、長さmのベクトルaのSi番目の要素からNi個の要素に対して各振り分け先の中での置換先を表す値の列xのSi番目の要素からNi個の要素を用いて任意の置換アルゴリズムを実行することで、あらかじめ確保しておいた長さmのベクトルd:=(d0, d1, …, dm-1)のSi番目の要素からNi個の要素を設定する。
ステップS42において、初期位置設定部42は、0以上D未満の各整数iについて、バッファのi番目の振り分け先に対応する処理中の位置を示す値Piにi番目の振り分け先の開始位置Siを設定する。すなわち、Pi:=Siを計算する。
ステップS43において、並べ替え部43は、出力ベクトルc:=(c0, c1, …, cm-1)に対して、バッファ内の振り分け先を表す値の列bに従って、長さmのベクトルdの各要素を設定する。具体的には、0以上m未満の各整数jについて、出力ベクトルcのj番目の要素cjへバッファdのPb_j番目の要素dP_b_jを設定する。すなわち、cj:=dP_b_jを設定する。その後、Pb_j:=Pb_j+1と更新する。
<第四実施形態>
本発明の第四実施形態は、Scheme 1により生成される2個のランダム置換(b, x)をバッファ内の振り分け先を表す値の列と各振り分け先の中での置換先を表す値の列とし、Scheme 3に示した逆置換を実行する置換装置および方法である。
第四実施形態の置換装置4は、図7に例示するように、振り分け先決定部11、要素数決定部12、開始位置決定部13、置換生成部17、初期位置設定部31、並べ替え部32、および置換実行部33を含む。置換装置4は、長さmのベクトルa:=(a0, a1, …, am-1)を入力とし、ベクトルaを一様ランダムに置換した出力ベクトルcを出力する。この置換装置4が、図8に例示する各ステップの処理を行うことにより第四実施形態の置換方法が実現される。
図8を参照して、第四実施形態の置換装置4が実行する置換方法について説明する。以下では、上述の各実施形態との相違点を中心に説明する。
ステップS11からステップS13の処理は、第一実施形態と同様である。
ステップS17において、置換生成部17は、0以上D未満の各整数iについて、任意の逆置換アルゴリズムを利用し、m個の置換πiを生成する。この置換πiを順に連結した値の列を各振り分け先の中での置換先を表す値の列xとして扱う。
ステップS31からステップS33の処理は、第二実施形態と同様である。
<第五実施形態>
本発明の第五実施形態は、Scheme 1により生成される2個のランダム置換(b, x)をバッファ内の振り分け先を表す値の列と各振り分け先の中での置換先を表す値の列とし、Scheme 4に示した置換を実行する置換装置および方法である。
第五実施形態の置換装置5は、図9に例示するように、振り分け先決定部11、要素数決定部12、開始位置決定部13、置換生成部17、置換実行部41、初期位置設定部42、および並べ替え部43を含む。置換装置5は、長さmのベクトルa:=(a0, a1, …, am-1)を入力とし、ベクトルaを一様ランダムに置換した出力ベクトルcを出力する。この置換装置5が、図10に例示する各ステップの処理を行うことにより第五実施形態の置換方法が実現される。
図10を参照して、第五実施形態の置換装置5が実行する置換方法について説明する。以下では、上述の各実施形態との相違点を中心に説明する。
ステップS11からステップS13の処理は、第四実施形態と同様である。
ステップS17の処理は、第四実施形態と同様である。
ステップS41からステップS43の処理は、第三実施形態と同様である。
<変形例>
第一実施形態の置換装置によりランダム置換を実行し、何らかのデータ処理を行った後に、ランダム置換を元に戻すことが可能である。その場合、任意の置換アルゴリズムを実行する際に生成された置換πiを順に連結して各振り分け先の中での置換先を表す値の列xとし、第一実施形態の置換装置を実行した際に生成されたバッファ内の振り分け先を表す値の列bと共に用いて、第二実施形態および第四実施形態に示したステップS31〜S33の処理を実行すればよい。このとき、バッファ内の振り分け先を表す値の列bと振り分け先の中での置換先を表す値の列xとを置換装置内の図示していない記憶部等に保存しておき、適宜読み込んで利用するように構成することも可能である。
本発明のポイントは以下のとおりである。本発明は、非キャッシュのランダムアクセスよりも、処理量は増えてもシーケンシャルアクセス数回とキャッシュのランダムアクセス1回の方が高速であること、数カ所へのランダムアクセスであればシーケンシャルアクセス相当の速度でアクセスできること、を利用して高速な置換を実現している。また、通常の置換からの形式変換(Scheme 2)では、1要素につき乗算1回の他は、現代のコンピュータで最も高速な演算に類する加減比較演算数回のみで均等に振り分けられるように工夫されている。
このように構成することにより、本発明の置換技術は、以下の効果を奏する。非キャッシュのランダムアクセスがほぼ無くなり、高速に置換および逆置換処理を行うことができる。例えば、32bitのデータ100万件で、従来の自明な置換やFisher-Yatesアルゴリズムでは10Gbps程度の速度であるが、E=1のときの本発明では20Gbps程度、E=2のときの本発明では12Gbps程度である。1000万件では、従来技術では3Gbps程度であるが、E=1のときの本発明では10Gbps程度、E=2のときの本発明では12Gbps程度である。1億件では、従来技術では2Gbps程度であるが、E=1のときの本発明では5Gbps程度、E=2のときの本発明では10Gbps程度である。データ数が増えるとランダムアクセスの排除のためにはEを増やす必要があるが、Eを増やすと逆にアクセス回数自体は増加するため、データ量ごとに最適なEの値があることがわかる。
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
[プログラム、記録媒体]
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。

Claims (7)

  1. Dを所定の分割数とし、aを長さmのベクトルとし、bをバッファ内の振り分け先を表すD未満の値の列とし、xを各振り分け先の中での置換先を表す値の列とし、dを長さmのバッファを表すベクトルとし、iを0以上D未満の各整数とし、jを0以上m未満の各整数とし、Siをi番目の振り分け先に対応する開始位置とし、Niをi番目の振り分け先に含まれる要素の数とし、
    各整数iについて、i番目の振り分け先に対応する処理中の位置を示す値Piに上記開始位置Siを設定する初期位置設定部と、
    各整数jについて、上記バッファdのPb_j番目の要素dP_b_jへ上記ベクトルaのj番目の要素ajを設定する並べ替え部と、
    各整数iについて、上記バッファdのSi番目の要素からNi個の要素dS_i, …, dS_i+N_i-1に対して上記列xのSi番目の要素からNi個の要素を用いて任意の逆置換アルゴリズムを実行することで、出力ベクトルcのSi番目の要素からNi個の要素cS_i, …, cS_i+N_i-1を生成する置換実行部と、
    を含む置換装置。
  2. Dを所定の分割数とし、aを長さmのベクトルとし、bをバッファ内の振り分け先を表すD未満の値の列とし、xを各振り分け先の中での置換先を表す値の列とし、dを長さmのバッファを表すベクトルとし、iを0以上D未満の各整数とし、jを0以上m未満の各整数とし、Siをi番目の振り分け先に対応する開始位置とし、Niをi番目の振り分け先に含まれる要素の数とし、
    各整数iについて、上記ベクトルaのSi番目の要素からNi個の要素に対して上記列xのSi番目の要素からNi個の要素を用いて任意の置換アルゴリズムを実行することで、上記バッファdのSi番目の要素からNi個の要素dS_i, …, dS_i+N_i-1を設定する置換実行部と、
    各整数iについて、i番目の振り分け先に対応する処理中の位置を示す値Piに上記開始位置Siを設定する初期位置設定部と、
    各整数jについて、出力ベクトルcのj番目の要素cjへ上記バッファdのPb_j番目の要素dP_b_jを設定する並べ替え部と、
    を含む置換装置。
  3. 請求項1または2に記載の置換装置であって、
    D未満のm個の乱数bjを生成して上記列bとする振り分け先決定部と、
    各整数iについて、上記列bにおける整数iの出現数を集計することで上記要素数Niを決定する要素数決定部と、
    各整数iについて、Si:=Σj<iNjを計算することで上記開始位置Siを決定する開始位置決定部と、
    任意のランダム置換アルゴリズムにより上記列xを生成する置換生成部と、
    をさらに含む置換装置。
  4. 請求項1または2に記載の置換装置であって、
    π:=(π0, π1, …, πm-1)を長さmの置換とし、q:=m/Dとし、r:=m mod Dとし、
    各整数iについて、Ni:=q+(i<r?1:0)を計算することで上記要素数Niを決定する要素数決定部と、
    各整数iについて、Si:=iq+min(r, i)を計算することで上記開始位置Siを決定する開始位置決定部と、
    各整数jについて、上記置換πのj番目の要素πjのqによる商をk'とし、その余りをsとし、bj:=k'-(s<min(r, k')?1:0)を計算することで上記列bを生成する振り分け先決定部と、
    各整数jについて、xP_b_j:=πj-Sjを計算することで上記列xを生成する置換生成部と、
    をさらに含む置換装置。
  5. Dを所定の分割数とし、aを長さmのベクトルとし、bをバッファ内の振り分け先を表すD未満の値の列とし、xを各振り分け先の中での置換先を表す値の列とし、dを長さmのバッファを表すベクトルとし、iを0以上D未満の各整数とし、jを0以上m未満の各整数とし、Siをi番目の振り分け先に対応する開始位置とし、Niをi番目の振り分け先に含まれる要素の数とし、
    初期位置設定部が、各整数iについて、i番目の振り分け先に対応する処理中の位置を示す値Piに上記開始位置Siを設定し、
    並べ替え部が、各整数jについて、上記バッファdのPb_j番目の要素dP_b_jへ上記ベクトルaのj番目の要素ajを設定し、
    置換実行部が、各整数iについて、上記バッファdのSi番目の要素からNi個の要素dS_i, …, dS_i+N_i-1に対して上記列xのSi番目の要素からNi個の要素を用いて任意の逆置換アルゴリズムを実行することで、出力ベクトルcのSi番目の要素からNi個の要素cS_i,…, cS_i+N_i-1を生成する、
    置換方法。
  6. Dを所定の分割数とし、aを長さmのベクトルとし、bをバッファ内の振り分け先を表すD未満の値の列とし、xを各振り分け先の中での置換先を表す値の列とし、dを長さmのバッファを表すベクトルとし、iを0以上D未満の各整数とし、jを0以上m未満の各整数とし、Siをi番目の振り分け先に対応する開始位置とし、Niをi番目の振り分け先に含まれる要素の数とし、
    置換実行部が、各整数iについて、上記ベクトルaのSi番目の要素からNi個の要素に対して上記列xのSi番目の要素からNi個の要素を用いて任意の置換アルゴリズムを実行することで、上記バッファdのSi番目の要素からNi個の要素dS_i, …, dS_i+N_i-1を設定し、
    初期位置設定部が、各整数iについて、i番目の振り分け先に対応する処理中の位置を示す値Piに上記開始位置Siを設定し、
    並べ替え部が、各整数jについて、出力ベクトルcのj番目の要素cjへ上記バッファdのPb_j番目の要素dP_b_jを設定する、
    置換方法。
  7. 請求項1から4のいずれかに記載の置換装置としてコンピュータを機能させるためのプログラム。
JP2019548144A 2017-10-12 2018-10-02 置換装置、置換方法、およびプログラム Active JP6901004B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2017198385 2017-10-12
JP2017198385 2017-10-12
PCT/JP2018/036838 WO2019073858A1 (ja) 2017-10-12 2018-10-02 置換装置、置換方法、およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2019073858A1 JPWO2019073858A1 (ja) 2020-11-05
JP6901004B2 true JP6901004B2 (ja) 2021-07-14

Family

ID=66100848

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019548144A Active JP6901004B2 (ja) 2017-10-12 2018-10-02 置換装置、置換方法、およびプログラム

Country Status (6)

Country Link
US (1) US11099984B2 (ja)
EP (1) EP3696796B1 (ja)
JP (1) JP6901004B2 (ja)
CN (1) CN111201559B (ja)
AU (1) AU2018349732B2 (ja)
WO (1) WO2019073858A1 (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0954676A (ja) * 1995-08-11 1997-02-25 Yamaha Corp 整順列化方法および整順列化装置
JP3344383B2 (ja) * 1999-10-04 2002-11-11 日本電気株式会社 スケジューラ
JP3938124B2 (ja) * 2002-11-20 2007-06-27 ソニー株式会社 データ検索装置
AU2007254663A1 (en) * 2007-12-24 2009-07-09 Canon Kabushiki Kaisha Efficient shuffling
JP5156540B2 (ja) * 2008-08-22 2013-03-06 株式会社日立製作所 ハッシュ値生成装置
CN104011672A (zh) * 2011-12-30 2014-08-27 英特尔公司 转置指令
US10002547B2 (en) * 2014-01-17 2018-06-19 Nippon Telegraph And Telephone Corporation Secret calculation method, secret calculation system, random permutation device, and program
JP5957126B1 (ja) * 2015-06-24 2016-07-27 日本電信電話株式会社 秘密計算装置、秘密計算方法、およびプログラム

Also Published As

Publication number Publication date
JPWO2019073858A1 (ja) 2020-11-05
US11099984B2 (en) 2021-08-24
AU2018349732B2 (en) 2021-01-07
EP3696796B1 (en) 2023-07-05
US20200310970A1 (en) 2020-10-01
EP3696796A1 (en) 2020-08-19
WO2019073858A1 (ja) 2019-04-18
AU2018349732A1 (en) 2020-04-16
CN111201559A (zh) 2020-05-26
EP3696796A4 (en) 2021-08-11
CN111201559B (zh) 2023-08-18

Similar Documents

Publication Publication Date Title
JP5957120B1 (ja) 秘密分散方法、秘密分散システム、分散装置、およびプログラム
CN112162723B (zh) 一种量子减法运算方法、装置、电子装置及存储介质
US9240237B2 (en) Semiconductor device and method of writing/reading entry address into/from semiconductor device
CN112199707A (zh) 一种同态加密中的数据处理方法、装置以及设备
JP6300796B2 (ja) 算術及び論理ユニットを伴わないコンピュータプロセッサ及びシステム
CN101479698A (zh) 将两数相乘
US11763021B2 (en) Efficient secure string search using homomorphic encryption
KR102594656B1 (ko) 보안 프로세서, 이를 포함하는 어플리케이션 프로세서 및 보안 프로세서의 동작 방법
CN113467750A (zh) 用于基数为4的srt算法的大整数位宽除法电路及方法
US7143272B2 (en) Using computation histories to make predictions
JP6901004B2 (ja) 置換装置、置換方法、およびプログラム
CN115567199B (zh) 一种随机数种子生成方法、装置、电子设备及存储介质
JP5927323B1 (ja) 行列作用装置、行列作用方法、およびプログラム
US9304972B2 (en) Lookup table sharing for memory-based computing
JP2007218997A (ja) 素数生成装置、プログラム及び方法
CN108075889B (zh) 一种降低加解密运算时间复杂度的数据传输方法及系统
AU2020423805B2 (en) Secure selective product computation system, secure selective product computation method, secure computation apparatus, and program
CN117353923B (zh) 轻量级哈希加密算法的演练方法及相关设备
JP7173282B2 (ja) データ置換装置、データ置換方法、プログラム
JP7359225B2 (ja) 秘密最大値計算装置、方法及びプログラム
John Privacy leakage via write-access patterns to the main memory
US20230102267A1 (en) Secure computation apparatus, secure computation method, and program
US10740098B2 (en) Aligning most significant bits of different sized elements in comparison result vectors
CN116301710A (zh) 数据处理方法及装置
JP6093718B2 (ja) 拡大体乗算装置、拡大体乗算方法及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200324

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200324

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: 20210518

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210531

R150 Certificate of patent or registration of utility model

Ref document number: 6901004

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150