JP7700960B2 - 情報処理装置、方法及びプログラム - Google Patents

情報処理装置、方法及びプログラム Download PDF

Info

Publication number
JP7700960B2
JP7700960B2 JP2024515190A JP2024515190A JP7700960B2 JP 7700960 B2 JP7700960 B2 JP 7700960B2 JP 2024515190 A JP2024515190 A JP 2024515190A JP 2024515190 A JP2024515190 A JP 2024515190A JP 7700960 B2 JP7700960 B2 JP 7700960B2
Authority
JP
Japan
Prior art keywords
function
bits
tag
input
encryption
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
JP2024515190A
Other languages
English (en)
Other versions
JPWO2023199379A1 (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.)
NTT Inc
Original Assignee
Nippon Telegraph and Telephone Corp
NTT Inc
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, NTT Inc filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2023199379A1 publication Critical patent/JPWO2023199379A1/ja
Application granted granted Critical
Publication of JP7700960B2 publication Critical patent/JP7700960B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Description

本開示は、情報処理装置、方法及びプログラムに関する。
一般に、暗号技術は、ブラックボックス攻撃に対して安全性が担保されるように設計される。ブラックボックス攻撃とは、暗号化関数や復号関数に関して、入出力のペアを攻撃者が知ることができるという設定の攻撃のことである。一方で、入出力のペアだけでなく、暗号化関数や復号関数を実装したソフトウェアの中身までも攻撃者が見ることができる、というような攻撃をホワイトボックス攻撃という。ブラックボックス攻撃に対して安全なことを「ブラックボックス安全」ともいい、ホワイトボックス攻撃に対して(或る程度)安全なことを「ホワイトボックス安全」ともいう。
暗号技術は主に機密性を得るための技術であるが、近年では、機密性だけでなく真正性を得る技術も重要となっている。真正性を得る技術としてはメッセージ認証符号(MAC:Message Authentication Code)が知られている。また、機密性だけでなく真正性も同時に得ることができる技術として認証付き暗号又はAEAD(Authenticated Encryption with Associated Data)と呼ばれるものが知られている(例えば、非特許文献1等)。AEADは、例えば、CTRやCBC等といった共通鍵暗号とメッセージ認証符号とを組み合わせて構成されることが多い。
Phillip Rogaway and Thomas Shrimpton. A provable-security treatment of the key-wrap problem. In Serge Vaudenay, editor, Advances in Cryptology - EUROCRYPT 2006, 25th Annual International Conference on the Theory and Applications of Cryptographic Techniques, St. Petersburg, Russia, May 28 - June 1, 2006, Proceedings, Vol. 4004 of Lecture Notes in Computer Science, pp. 373-390. Springer, 2006.
しかしながら、これまでにホワイトボックス安全なAEADは存在しなかった。一方で、AEADの多くは共通鍵暗号とメッセージ認証符号とを組み合わせて構成できるため、ホワイトボックス安全なメッセージ認証符号を実現できれば、それとホワイトボックス安全な共通鍵暗号とを組み合わせることで、ホワイトボックス安全なAEADを構成することできる。
本開示は、上記の点に鑑みてなされたもので、ホワイトボックス安全なメッセージ認証符号を実現する技術を提供する。
本開示の一態様による情報処理装置は、ホワイトボックス攻撃に対して安全なメッセージ認証符号のタグ生成関数MAC1K(ただし、Kは鍵)を用いて、データXの真正性を検証するためのタグT=MAC1K(X)を生成するように構成されているタグ生成部、を有し、前記タグ生成関数MAC1Kは、ホワイトボックス攻撃に対して安全で入出力長がnビットのブロック暗号の暗号化関数EKと、出力長がm≧2nビットの所定のハッシュ関数Hと、所定の関数f1,f2:{0,1}m→{0,1}n及びf3:{0,1}n×{0,1}n→{0,1}nとを用いて構成される。
ホワイトボックス安全なメッセージ認証符号を実現する技術が提供される。
検証関数のアルゴリズムの一例を示す図である。 SIVの暗号化関数のアルゴリズムの一例を示す図である。 SIVの暗号化関数の構成例を示す図である。 SIVの復号関数のアルゴリズムの一例を示す図である。 ホワイトボックス安全なメッセージ認証符号のタグ生成関数のアルゴリズムの一例を示す図である。 ホワイトボックス安全なメッセージ認証符号の構成例を示す図である。 第一の実施形態に係る通信システムの構成例を示す図である。 第二の実施形態に係る通信システムの構成例を示す図である。 コンピュータのハードウェア構成例を示す図である。
以下、本発明の第一の実施形態及び第二の実施形態について説明する。第一の実施形態では、ホワイトボックス安全なメッセージ認証符号を構成した上で、このメッセージ認証符号により真正性を満たすデータ通信を可能にする通信システム1について説明する。また、第二の実施形態では、第一の実施形態で構成したメッセージ認証符号からAEADを構成し、このAEADにより機密性及び真正性を満たすデータ通信を可能にする通信システム1について説明する。
なお、第一の実施形態に係る通信システム1は真正性を担保する必要があるデータ通信が発生する様々なシステムに適用可能である。同様に、第二の実施形態に係る通信システム1は機密性及び真正性を担保する必要があるデータ通信が発生する様々なシステムに適用可能である。
[準備]
以下、第一の実施形態及び第二の実施形態で用いる用語や技術等について説明する。
<機密性と真正性>
情報セキュリティの重要な概念に機密性と真正性がある。機密性とは、保護したいデータに関する情報を、悪意を持った攻撃者が不正に得ることはできないという状態のことである。機密性を得るための技術としては、共通鍵暗号や公開鍵暗号等がある。また、真正性とは、保護したいデータが攻撃者により不正に改ざんされていないという状態、又は、攻撃者が不正にデータを捏造できないという状態のことである。真正性を得るための技術としては、メッセージ認証符号やデジタル署名等がある。
<共通鍵暗号技術>
共通鍵暗号技術とは、利用者が共通の秘密鍵を用いるような暗号技術のことである。例えば、或る人が別の人にデータを共通鍵暗号技術で暗号化して送る際には、暗号化と復号で同一の秘密鍵を使う必要がある。共通鍵暗号技術は、RSA暗号等の公開鍵暗号技術と違って鍵(の一部)を公開することはできない。その反面、素因数分解問題等の代数的問題を用いる必要がなく、処理が高速だという長所がある。SSL/TLS等をはじめとした多くのデータ保護技術は、鍵(の一部)を公開できる公開鍵暗号技術と高速な共通鍵暗号技術の双方の長所を上手く組み合わせて実現されている。公開鍵暗号技術と共通鍵暗号技術は両者ともにセキュリティの基盤技術として欠かせない存在である。以下で説明する第一の実施形態及び第二の実施形態は共通鍵暗号技術に関するものである。
以下、単に「共通鍵暗号」といえば、様々な長さのデータを暗号化して機密性を守ることが主目的の、狭義の共通鍵暗号を指すものとする。狭義の共通鍵暗号には、CTRモードやCBCモード等の秘匿モード、KCipher-2等のストリーム暗号等が挙げられる。なお、AES(Advanced Encryption Standard)やCamellia、SPACE(参考文献1)、SPNBox(参考文献2)等のブロック暗号も本来は狭義の共通鍵暗号に分類しても差し支えないものであるが、本明細書では説明の都合上、「(狭義の)共通鍵暗号」といったときは、ブロック暗号は含まないものとする。
近年では、データを暗号化する際に機密性のみでなく真正性も同時に提供しようという共通鍵暗号が広く使われている。そのような暗号は、認証付き暗号又はAEADと呼ばれる。AEADの代表例としては、GCM、CCM、SIV(Synthetic Initialization Vector)(非特許文献1)等が挙げられる。AEADは狭義の共通鍵暗号とメッセージ認証符号(MAC)とを組み合わせて構成されることが多い。ここで、メッセージ認証符号とは、機密性は考慮せずに真正性のみを提供することが目的の共通鍵暗号技術である。以下で説明する第一の実施形態はメッセージ認証符号、第二の実施形態はAEADに関するものである。
以下、ブロック暗号、狭義の共通鍵暗号、メッセージ認証符号、及びAEADに関してより詳細に説明する。また、暗号学的ハッシュ関数についても説明する。なお、本明細書においては、すべてのデータや関数の入出力はビット列で表されているものとする。
・ブロック暗号
ブロック暗号とは、固定長(例:256ビット)の鍵Kと固定長(例:128ビット)の平文Mとを入力に取り、平文と同じ長さの暗号文Cを出力する暗号Eのことである。CがM及びKに対応する暗号文であることをC=EK(M)と書く。EKは暗号化関数とも呼ばれる。ブロック暗号は復号可能であることが要請される。すなわち、暗号文を元に戻す復号関数DKが存在し、DK(EK(M))=Mが任意の平文Mに対して成り立つ。また、DK(EK(C))=Cが任意の暗号文Cに対して成り立つ。ブロック暗号の代表例としては、AESやCamellia等が挙げられる。
ここで、たとえ短い固定長データを安全に暗号化するような良いブロック暗号があったとしても、任意長データ(特に長いデータ)をどうすれば安全に暗号化できるかは自明でないことに注意されたい。
・狭義の共通鍵暗号
本明細書で狭義の共通鍵暗号といえば、固定長の鍵Kと固定長の初期ベクトルIVと任意長の平文Mとを入力に取り、暗号文Cを出力する暗号Eのことであるものとする。ここで、IVは、原則として、暗号化処理を一度行うごとに代わる値である。IVは暗号化処理ごとにランダムに選ばれることもある。また、単一のIVが繰り返し使われることを許容する方式も存在する。ブロック暗号ではMが固定長(例:128ビット)であったが、狭義の共通鍵暗号ではMは任意長であり、例えば、Mは1ビットでもよいし、1ギガバイト等であってもよい。Cが(K,IV,M)に対応する暗号文であることをC=EncK(IV,M)と書く。EncKは暗号化関数とも呼ばれる。ブロック暗号と同様に、狭義の共通鍵暗号も復号可能である。すなわち、暗号文を元に戻す復号関数DecKが存在し、DecK(IV,EncK(IV,M))=Mが任意の平文Mに対して成り立つ。
任意長の平文を暗号化するための共通鍵暗号は、ブロック暗号を利用して作ることが多い。狭義の共通鍵暗号やメッセージ認証符号、AEAD等の構成であってブロック暗号を利用するものをブロック暗号利用モード又は単にモードという。モードでは、必要に応じてブロック暗号以外の共通鍵暗号技術を用いることもある。本明細書では、特に、狭義の共通鍵暗号を作るためのモードを秘匿モードと呼ぶことにする。秘匿モードの代表例としては、CTRモードやCBCモード等が挙げられる。
・メッセージ認証符号(MAC)
メッセージ認証符号は、固定長の鍵Kと任意長のメッセージMとを入力に取り、タグと呼ばれる固定長の出力Tを出す関数(タグ生成関数)MACK(M)と、(K,M,T)を入力に取り、記号
Figure 0007700960000001
を出力する検証関数VERK(M,T)とで構成される。ここで、
Figure 0007700960000002
は「TがMとKから生成された正当なタグである」ということを意味し、VERK(M,T)=⊥は「Tは不正に生成されたタグである」ということを意味する。安全なメッセージ認証符号は大雑把にいえば「秘密鍵Kを知っている者しか正当なTの値を計算することはできない」、「異なるメッセージに対応するタグの値は異なる」という性質を満たし、不正な改ざんの検知(つまり、真正性の獲得)に用いることができる。
本明細書では、検証関数VERKが図1に示すAlgorithm1のようにして計算されるようなメッセージ認証符号のみを考えるものとする。すなわち、検証関数VERKは、メッセージMとタグTとを入力に取り、T'←MACK(M)を計算(1行目)した後、T'=TであればTは正当なタグであることを表す記号を出力し(2~3行目)、そうでなければTは不正なタグであることを表す記号を出力する(4~5行目)。
狭義の共通鍵暗号と同様に、メッセージ認証符号(のタグ生成関数)もブロック暗号を用いて(つまり、ブロック暗号利用モードとして)実現されることがある。タグ生成関数がブロック暗号利用モードとして実現されるメッセージ認証符号の代表例としては、CMAC等が挙げられる。
・認証付き暗号(AEAD)
AEADの暗号化関数Eは、狭義の共通鍵暗号が入力として取る(K,IV,M)に加えて、任意長の関連データAも入力に取る。また、この暗号化関数Eは、暗号文Cに加えて、タグTも出力する。(T,C)が(K,IV,A,M)に対応するタグ及び暗号文であることを(T,C)=EK(IV,A,M)と書く。狭義の共通鍵暗号と同様に、暗号文を元に戻る復号関数DKが存在し、DK(IV,A,EK(IV,A,M))=Mが任意の平文Mに対して成り立つ。
AEADの復号関数DKはメッセージ認証符号の検証関数と同様に、改ざんを検知する機能を持つ。つまり、暗号文C及びタグTが不正に生成された値であれば、DKは検証に失敗したことを示す記号⊥を出力する(つまり、DK(IV,A,(T,C))=⊥となる。)。TとCが暗号化関数により正当に計算された値である場合は、上述した通り、元のメッセージMが出力される。
安全なAEADは、メッセージMを暗号文Cに変換して機密性を守り、かつ、改ざんからも保護して真正性を保障する。攻撃者はMの値が何であるかCを見ただけではわからない。一方で、関連データAに関しては機密性が保障されない。すなわち、大雑把にいって、Aの値は暗号化されず攻撃者から見えることを前提とする。しかしAについても真正性は保障され、改ざんからは保護される。つまり、もしAが途中で別の値A'に改ざんされた場合、復号関数は検証に失敗し、DK(IV,A',(T,C))=⊥となる。このため、機密性はなくてもよいが真正性は保障したいデータ(例えば、IPパケットのヘッダ等)がAとなる。
AEADは狭義の共通鍵暗号とメッセージ認証符号とを組み合わせて構成されることが多い。そのような構成の代表的なものとしては、GCM、CCM、SIV(非特許文献1)等が挙げられる。例えば、狭義の共通鍵暗号(EncK',DecK')とメッセージ認証符号のタグ生成関数MACKとが与えられたものとする。このとき、SIVの暗号化関数E(K,K')は、例えば、図2に示すAlgorithm2で定義される。すなわち、SIVの暗号化関数E(K,K')は、(IV,A,M)を入力に取り、T←MACK(pad(IV,A,M))及びC←EncK'(adj(T),M)を計算(1~2行目)した後、(T,C)を出力する(3行目)。このように構成される暗号化関数E(K,K')を模式的に表すと図3のようになる。ここで、padは、ビット列の三つ組(IV,A,M)を入力に取り、単一のビット列IV||A||M||len(M)を出力する関数である。なお、x||yは2つのビット列xとyのビット結合を表し、len(M)はMのビット長を何等かのビット列で表現したものである。また、adjは、MACKの出力であるTを入力に取り、Tの長さ(以下、この長さをτビットとする。)が、EncK'やDecK'で使われるIVの長さ(以下、この長さをνビットとする。このIVはSIVが入力に取るIVとは別であることに注意されたい。)と違う場合に、Tの一部のビットを切り捨てたり、Tに対して余分なビットを付け加えたりして長さをνビットに調節する関数である。具体的には、τ=νの場合、adj(T)は入力Tをそのまま出力する。一方で、τ>νの場合、adj(T)は入力Tの下位νビットを出力する。また、τ<νの場合、adj(T)は0ν-τ||Tを出力する。ここで、0ν-τは、すべてのビットが0であるような(ν-τ)ビットのビット列である。
また、SIVの復号関数D(K,K')は、例えば、図4に示すAlgorithm3で定義される。すなわち、SIVの復号関数D(K,K')は、(IV,A,T,C)を入力に取り、M←DecK'(adj(T),C)及びT'←MACK(pad(IV,A,M))を計算(1~2行目)した後、T=T'であればMを出力し(3~4行目)、そうでなければ⊥を出力する(5~6行目)。
なお、図2に示すAlgorithm2と図4に示すAlgorithm3では、MACとEnc及びDecとで独立した異なる鍵(KとK')を用いているが、KとK'とが独立していない(つまり、K=K')としてもよい。
図2に示すAlgorithm2と図4に示すAlgorithm3では、説明の都合上、SIVの構成が提案された原論文(非特許文献1)から変更している箇所が何点かある。まず、原論文ではIVを入力に取ることはない(Aの一部として見做されている)が、図2に示すAlgorithm2と図4に示すAlgorithm3ではIVも入力に取るものとしている。また、原論文では、MACKとpadを組み合わせる代わりに、ビット列の組を入力として取れる疑似ランダム関数が用いられている。adjも、説明の都合上、図2に示すAlgorithm2と図4に示すAlgorithm3に導入したものである。SIVの本質は「鍵付き関数に(IVと)AとMを入力し、出力TをEncK'のIVの代わりに使う」というものであるため、上記の変更はその本質を変えるものではない。
・暗号学的ハッシュ関数
暗号学的ハッシュ関数(以下、単にハッシュ関数と呼ぶ)Hは、任意長のデータMを入力に取り、固定長(例:256ビット)のビット列H(M)を出力する。ハッシュ関数は基本的にその仕様が公開されており、誰でも計算ができる固定された関数である。特に、ハッシュ関数は鍵を入力に取らない。安全なハッシュ関数は、原像攻撃や衝突攻撃に対して耐性を持つことが求められる。安全かつ広く使われているハッシュ関数の例としては、SHA-2やSHA-3等が挙げられる。ハッシュ関数は鍵を入力に取らないが、慣例的に共通鍵暗号技術に分類される。
<ホワイトボックス暗号技術>
一般に、暗号技術は、ブラックボックス攻撃に対して安全性が担保されるように設計される。ブラックボックス攻撃とは、暗号化関数や復号関数に関して、入出力のペアを攻撃者が知ることができるという設定の攻撃のことである。例えば、攻撃対象がブロック暗号の場合、攻撃者は、任意の平文Mを選び、それに対する暗号文C:=EK(M)を知ることが許される(あるいは、攻撃者は、任意の暗号文Cに対する平文M:=DK(C)を知ることが許される。)。攻撃者は、複数の平文に対応する暗号文を学習した後、秘密鍵Kを暴いたり、本来完全にランダムに見えるべきであるはずの暗号文に何等かの偏りがあることを発見したりすることを目指す。
ここで重要なのは、ブラックボックス攻撃の攻撃者は暗号アルゴリズムがどのように実装されているかまでは知ることができないということである。攻撃者に許されるのはあくまで、暗号化関数EK又は復号関数DKの入出力ペアを学習することである。
一方で、攻撃者がEKやDKの入出力ペアだけでなく、EKやDKを実装したソフトウェア(秘密鍵に関する情報も含む)の中身までも見ることができる、というような攻撃をホワイトボックス攻撃という。ホワイトボックス攻撃の例としては、暗号技術が実装されたソフトウェアを利用するPCにマルウェアが忍び込み、そのソフトウェアのデータを外部に送信するというものが考えられる。ホワイトボックス攻撃に対しても安全性を或る程度担保できるような暗号技術をホワイトボックス暗号技術という。
当然、数十ビット~数千ビット程度の短い秘密鍵がソフトウェアに愚直に埋め込まれたような実装では、ホワイトボックス攻撃に対して安全性を一切担保できない。攻撃者が短い秘密鍵を見てコピーしてしまえば、すべての暗号文が自由に復号できるようになるためである。また、暗号技術が実装されたソフトウェアを攻撃者が自由に実行できる状況では何ら安全性を保障することはできない。例えば、復号関数が実装されたソフトウェアを攻撃者がいつでも自由に実行できる場合、任意の暗号文がその攻撃者によって自由に復号され、元の平文が見られてしまう。
そこで、ホワイトボックス攻撃に対する安全性を議論する際は、以下の1や2のような設定を前提とする。
1.秘密鍵が何等かの方法で非常に大きな(例:数十ギガバイト)データに拡大されている。
2.攻撃者の能力に一定の制限がある。例えば、ソフトウェア実装のデータのうち、外部に送信可能なデータ量の上限が決まっていたり、ソフトウェアの中身を見られる時間に上限があったりする等。
上記のような設定においてホワイトボックス安全な既存技術として、SPACE(参考文献1)やSPNBox(参考文献2)といったブロック暗号が存在する。これらブロック暗号の主張する安全性を破るようなホワイトボックス攻撃は現在のところ知られていない。
ホワイトボックス攻撃は明らかにブラックボックス攻撃よりも強力で攻撃者の自由度が大きい攻撃である。ゆえに、ホワイトボックス安全な暗号技術はブラックボックス安全であることに注意されたい。
[第一の実施形態]
以下、第一の実施形態について説明する。
真正性は機密性に劣らず重要な性質であるため、共通鍵暗号技術で暗号化を行う際にはAEADを用いて機密性と真正性の両方を同時に保障しよう、というのが最近の共通鍵暗号設計の主な流れである。しかしながら、これまでにホワイトボックス安全なAEADは存在していなかった。GCMやCCMといった既存のAEADはホワイトボックス攻撃を考慮に入れていない。特に、GCMやCCMはブロック暗号利用モードであるが、たとえ利用するブロック暗号がホワイトボックス安全であっても、AEADとしてのGCMやCCMはホワイトボックス安全とは限らない。
一方で、上述したように、AEADは狭義の共通鍵暗号とメッセージ認証符号とを組み合わせて構成されることが多い。このため、ホワイトボックス安全なメッセージ認証符号を実現できれば、このメッセージ認証符号とホワイトボックス安全な狭義の共通鍵暗号とを組み合わせることで、ホワイトボックス安全なAEADを構成することができる。
そこで、第一の実施形態では、ホワイトボックス安全なメッセージ認証符号を構成した上で、このメッセージ認証符号により真正性を満たすデータ通信を可能にする通信システム1について説明する。
<ホワイトボックス安全なメッセージ認証符号を構成するためのアイデアの概要>
メッセージ認証符号やAEADは任意長の入力から短い固定長のタグTを生成する必要がある。特に、入力が非常に長いときは、その長いデータを何等かの方法で短いデータへ圧縮せねばならない。GCMやCCMといった(ホワイトボックス攻撃を考慮に入れていない)既存方式では、秘密鍵Kに依存した方法で圧縮を行っている。ブラックボックス攻撃者には圧縮の過程が見えないためGCMやCCMはブラックボックス攻撃に対して安全であるが、ホワイトボックス攻撃者はソフトウェアの中身が見えるため、圧縮の過程も見えてしまう。この「圧縮の過程が見える」ということが、メッセージ認証符号やAEADの安全性を破ることに繋がりかねない。
そこで、メッセージ認証符号(及びAEADのタグ生成)における圧縮の大半を、秘密鍵Kに依存しない暗号学的ハッシュ関数Hで行うことを考える。ハッシュ関数は元から「長いビット列を短いビット列に圧縮する」、「圧縮の過程は攻撃者にも見える」ということを前提にして設計されているため、暗号学的ハッシュ関数Hを用いて圧縮を行うようなタグ生成関数はホワイトボックス攻撃に対して安全であることが期待できる。
一方で、真正性を担保するためには、タグTの値が秘密鍵に依存するようにしなければならない。ハッシュ関数は秘密鍵を入力に取らないため、Hだけでは安全性が保障できない。そこで、ハッシュ関数で圧縮した後に(ホワイトボックス安全な)ブロック暗号を複数回呼ぶことにより真正性を担保することを目指す。
<ホワイトボックス安全なメッセージ認証符号の構成例>
・記法
EKを入出力長がnビットのブロック暗号の暗号化関数、Hを出力長がm≧2nビットの暗号学的ハッシュ関数とする。また、(EncK',DecK')を狭義の共通鍵暗号とする。加えて、f1,f2:{0,1}m→{0,1}nとf3:{0,1}n×{0,1}n→{0,1}nを以下の設定例1又は設定例2のいずれかで定まる関数とする。
≪f1~f3の設定例1≫
f1:mビットの入力xのうちの上位nビットを出力する。
f2:mビットの入力xのうち、まず上位2nビットを取り出し、これをdとおく。このdの下位nビットを出力する。なお、m=2nならばf2は単に入力の下位nビットを出力することになり、x=f1(x)||f2(x)が成り立つことに注意されたい。
f3:入力(x,y)∈{0,1}n×{0,1}nが与えられたとき、xとyの排他的論理和、つまり
Figure 0007700960000003
を出力する。
≪f1~f3の設定例2≫
f1:mビットの入力xのうち、まずその上位nビットをd1とする。このd1のうち更に下位(n-2)ビットをd1'として、01||d1'を出力する。
f2:mビットの入力xのうち、まずその上位2nビットを取り出し、これをdとおく。このdのうち更に下位(n-2)ビットをd2'として、10||d2'を出力する。
f3:入力(x,y)∈{0,1}n×{0,1}nが与えられたとき、xとyの排他的論理和の下位(n-2)ビットをs3として、11||s3を出力する。
・ホワイトボックス安全なメッセージ認証符号のタグ生成関数
以上のような記法及び設定の下、上述したアイデアに基づいて、任意長のデータXを入力に取り、図5に示すAlgorithm4のようにしてタグT=MAC1K(X)を計算及び出力するタグ生成関数を考える。すなわち、任意長のデータXを入力に取り、h←H(X)を計算(1行目)した後、s1←EK(f1(h))及びs2←EK(f2(h))を計算(2行目)し、その後、T←EK(f3(s1,s2))を計算及び出力(3~4行目)するタグ生成関数MAC1Kを考える。このとき、ハッシュ関数Hが安全で、かつ、EKがホワイトボックス安全であれば、MAC1Kもホワイトボックス安全であることが期待できる。このように構成されるタグ生成関数MAC1Kを模式的に表すと図6のようになる。
なお、f1~f3の設定例2を用いた場合、3回呼ばれるブロック暗号の暗号化関数EKの入力が重複しない。このため、f1~f3の設定例1よりも安全性の向上が期待できる。
・ホワイトボックス安全なメッセージ認証符号の検証関数
図1に示すAlgorithm1において、入力の「メッセージMおよびタグT」を「データXおよびタグT」、1行目の「T'←MACK(M)」を「T'←MAC1K(X)」にそれぞれ変更すれば、ホワイトボックス安全なメッセージ認証符号の検証関数(これをVER1K(X,T)と表す。)が構成できる。
<通信システム1の構成例>
第一の実施形態に係る通信システム1の構成例を図7に示す。図7に示すように、第一の実施形態に係る通信システム1では、送信側の端末である通信端末10と、受信側の端末である通信端末20とがインターネット等の通信ネットワーク30を介して通信可能に接続されている。なお、通信端末10及び通信端末20としては、例えば、PC、スマートフォン、タブレット端末、ウェアラブルデバイス、車載器、電化製品等といった通信可能な各種情報処理装置が挙げられる。
通信端末10は、認証部101と送信部102とを有する。認証部101及び送信部102は、例えば、通信端末10にインストールされた1以上のプログラムが、CPU(Central Processing Unit)等のプロセッサに実行させる処理により実現される。
認証部101は、送信対象のメッセージX=Mに対するタグTをタグ生成関数MAC1K(X)により生成する。送信部102は、(X,T)を通信端末20に送信する。これにより、通信端末10は、送信対象のメッセージXに対するタグT=MAC1K(X)を認証部101により生成した上で、(X,T)を送信部102により通信端末20に送信することができる。
通信端末20は、受信部201と検証部202とを有する。受信部201及び検証部202は、例えば、通信端末20にインストールされた1以上のプログラムが、CPU等のプロセッサに実行させる処理により実現される。
受信部201は、(X,T)を通信端末10から受信する。検証部202は、受信した(X,T)をVER1K(X,T)により検証する。これにより、通信端末20は、通信端末10から(X,T)を受信部201により受信し、その(X,T)の真正性を検証部202により検証することができる。
<変形例>
以下では、タグ生成関数MAC1Kのアルゴリズム(図5に示すAlgorithm4)の変形例について説明する。
・変形例1-1
図5に示すAlgorithm4の1行目の「h←H(X)」を「h←H(EK(0n)||X)」に変更する。秘密鍵に依存する値であるEK(0n)を追加で結合させることにより、安全性の向上が期待できる。
・変形例1-2
図5に示すAlgorithm4の3行目の「T←EK(f3(s1,s2))」を
Figure 0007700960000004
に変更する。ブロック暗号の暗号化関数EKを呼び出す回数が削減されるため、処理効率の向上が期待できる。
・変形例1-3
変形例1-1と変形例1-2とを組み合わせる。すなわち、図5に示すAlgorithm4の1行目の「h←H(X)」を「h←H(EK(0n)||X)」に変更すると共に、3行目の「T←EK(f3(s1,s2))」を「T←(s1とs2の排他的論理和)」と変更する。安全性をあまり損なわずに処理効率の向上が期待できる。
[第二の実施形態]
以下、第二の実施形態について説明する。第二の実施形態では、第一の実施形態で構成したメッセージ認証符号からAEADを構成し、このAEADにより機密性及び真正性を満たすデータ通信を可能にする通信システム1について説明する。
<ホワイトボックス安全なAEADの構成例>
安全なハッシュ関数Hとホワイトボックス安全なブロック暗号の暗号化関数EKとに加えて、狭義の共通鍵暗号(EncK',DecK')であってホワイトボックス安全なものがあったとすれば、第一の実施形態で説明したMAC1Kと(EncK',DecK')からSIVを構成することで、ホワイトボックス安全なAEADを構成することができる。
すなわち、(EncK',DecK')をホワイトボックス安全な狭義の共通鍵暗号とする。このとき、図2に示すAlgorithm2の1行目の「T←MACK(pad(IV,A,M))」を「T←MAC1K(pad(IV,A,M))」としてSIVの暗号化関数E(K,K')を構成する。また、図4に示すAlgorithm3の2行目の「T'←MACK(pad(IV,A,M))」を「T'←MAC1K(pad(IV,A,M))」としてSIVの復号関数D(K,K')を構成する。これにより、ホワイトボックス攻撃という非常に強力な攻撃に対しても真正性と機密性の両方を担保したデータ通信を実現することができる。
なお、メッセージ認証符号と狭義の共通鍵暗号からAEADを得るための構成はSIVの他にも存在するが、SIVはDAE(deterministic authenticated-encryption)という非常に強い安全性定義を満足するため、強力なホワイトボックス攻撃に対して安全性を担保するにはSIVを用いるのが好ましい。
<通信システム1の構成例>
第二の実施形態に係る通信システム1の構成例を図8に示す。図8に示すように、第二の実施形態に係る通信システム1では、送信側の端末である通信端末10と、受信側の端末である通信端末20とがインターネット等の通信ネットワーク30を介して通信可能に接続されている。なお、通信端末10及び通信端末20としては、例えば、PC、スマートフォン、タブレット端末、ウェアラブルデバイス、車載器、電化製品等といった通信可能な各種情報処理装置が挙げられる。
通信端末10は、暗号化部103と送信部102とを有する。暗号化部103及び送信部102は、例えば、通信端末10にインストールされた1以上のプログラムが、CPU等の演算装置に実行させる処理により実現される。
暗号化部103は、送信対象のメッセージX=Mの暗号文CとそのメッセージXに対するタグTとを、上記のホワイトボックス安全なAEADの暗号化関数E(K,K')(IV,A,M)により生成する。暗号化部103には認証部101が含まれており、メッセージXに対するタグTを生成する際には、第一の実施形態と同様に、この認証部101がMAC1KによりタグTを生成(例えば、図2に示すAlgorithm2の1行目)する。送信部102は、(T,C)を通信端末20に送信する。これにより、通信端末10は、送信対象のメッセージXの暗号文CとそのメッセージXに対するタグTを暗号化部103により生成した上で、(T,C)を送信部102により通信端末20に送信することができる。
通信端末20は、受信部201と復号部203とを有する。受信部201及び復号部203は、例えば、通信端末20にインストールされた1以上のプログラムが、CPU等の演算装置に実行させる処理により実現される。
受信部201は、(T,C)を通信端末10から受信する。復号部203は、上記のホワイトボックス安全なAEADの復号関数D(K,K')(IV,A,T,C)によりタグTを検証すると共に、その検証に成功した場合は暗号文Cを復号する。復号部203には検証部202が含まれており、タグTを検証する際には、この検証部202がMAC1KによりタグT'を生成し、このタグT'がタグTと一致する否かを検証する(例えば、図4に示すAlgorithm4の2~3行目)。これにより、通信端末20は、通信端末10から(T,C)を受信部201により受信し、その(T,C)の真正性の検証と復号とを復号部203により行うことができる。
<変形例>
以下では、ホワイトボックス安全なSIVの暗号化関数E(K,K')及び復号関数D(K,K')のアルゴリズムの変形例について説明する。なお、SIVの暗号化関数E(K,K')のアルゴリズムは、図2に示すAlgorithm2の1行目の「T←MACK(pad(IV,A,M))」を「T←MAC1K(pad(IV,A,M))」としたものである。また、SIVの復号関数D(K,K')のアルゴリズムは、図4に示すAlgorithm3の2行目の「T'←MACK(pad(IV,A,M))」を「T'←MAC1K(pad(IV,A,M))」としたものである。
・変形例2-1
第一の実施形態の変形例1-1~変形例1-3のいずれかのアルゴリズムで実現されるMAC1Kを用いる。
・変形例2-2
K'=Kとする。これにより、保持しておくべき秘密鍵の長さが削減され、処理効率の向上が期待できる。
・変形例2-3
変形例2-1と変形例2-2とを組み合わせる。すなわち、第一の実施形態の変形例1-1~変形例1-3のいずれかのアルゴリズムで実現されるMAC1Kを用いると共に、K'=Kとする。
[ハードウェア構成例]
第一の実施形態及び第二の実施形態に係る通信端末10及び通信端末20は、例えば、図9に示すコンピュータ500のハードウェア構成で実現可能である。図9に示すコンピュータ500は、入力装置501と、表示装置502と、外部I/F503と、通信I/F504と、RAM(Random Access Memory)505と、ROM(Read Only Memory)506と、補助記憶装置507と、プロセッサ508とを有する。これらの各ハードウェアは、それぞれがバス509を介して通信可能に接続されている。
入力装置501は、例えば、キーボード、マウス、タッチパネル、物理ボタン等である。表示装置502は、例えば、ディスプレイ、表示パネル等である。なお、コンピュータ500は、例えば、入力装置501及び表示装置502の少なくとも一方を有していなくてもよい。
外部I/F503は、記録媒体503a等の外部装置とのインタフェースである。コンピュータ500は、外部I/F503を介して、記録媒体503aの読み取りや書き込み等を行うことができる。記録媒体503aとしては、例えば、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
通信I/F504は、通信ネットワークに接続するためのインタフェースである。RAM505は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。ROM506は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。補助記憶装置507は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、フラッシュメモリ等のストレージ装置(記憶装置)である。プロセッサ508は、例えば、CPU等の演算装置である。
第一の実施形態及び第二の実施形態に係る通信端末10及び通信端末20は、図9に示すコンピュータ500のハードウェア構成を有することにより、上述した各種処理を実現することができる。なお、図9に示すコンピュータ500のハードウェア構成は一例であって、これに限られるものではない。例えば、図9に示すコンピュータ500は、複数の補助記憶装置507や複数のプロセッサ508を有していてもよいし、図示したハードウェア以外の様々なハードウェアを有していてもよい。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
[参考文献]
参考文献1:Andrey Bogdanov and Takanori Isobe. White-box cryptography revisited: Space-hard ciphers. In Indrajit Ray, Ninghui Li, and Christopher Kruegel, editors, Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security, Denver, CO, USA, October 12-16, 2015, pp. 1058-1069. ACM, 2015.
参考文献2:Andrey Bogdanov, Takanori Isobe, and Elmar Tischhauser. Towards practical whitebox cryptography: Optimizing efficiency and space hardness. In Jung Hee Cheon and Tsuyoshi Takagi, editors, Advances in Cryptology - ASIACRYPT 2016 - 22nd International Conference on the Theory and Application of Cryptology and Information Security, Hanoi, Vietnam, December 4-8, 2016, Proceedings, Part I, Vol. 10031 of Lecture Notes in Computer Science,
pp. 126-158, 2016.
1 通信システム
10 通信端末
20 通信端末
30 通信ネットワーク
101 認証部
102 送信部
103 暗号化部
201 受信部
202 検証部
203 復号部
500 コンピュータ
501 入力装置
502 表示装置
503 外部I/F
503a 記録媒体
504 通信I/F
505 RAM
506 ROM
507 補助記憶装置
508 プロセッサ
509 バス

Claims (8)

  1. ホワイトボックス攻撃に対して安全なメッセージ認証符号のタグ生成関数MAC1K(ただし、Kは鍵)を用いて、データXの真正性を検証するためのタグT=MAC1K(X)を生成するように構成されているタグ生成部、を有し、
    前記タグ生成関数MAC1Kは、
    ホワイトボックス攻撃に対して安全で入出力長がnビットのブロック暗号の暗号化関数EKと、出力長がm≧2nビットの所定のハッシュ関数Hと、所定の関数f1,f2:{0,1}m→{0,1}n及びf3:{0,1}n×{0,1}n→{0,1}nとを用いて構成される、情報処理装置。
  2. 前記タグ生成関数MAC1Kは、
    前記データXを入力に取り、
    h←H(X)又はh←H(EK(0n)||X)(ただし、|| はビット結合)、
    s1←EK(f1(h))、s2←EK(f2(h))、
    T←EK(f3(s1,s2))又はT←(s1とs2の排他的論理和)、
    により前記タグTを出力する、請求項1に記載の情報処理装置。
  3. 前記関数f1は、mビットの入力のうちの上位nビットを出力し、
    前記関数f2は、mビットの入力のうちの上位2nビットを取り出した後、前記上位2nビットの下位nビットを出力し、
    前記関数f3は、(x,y)∈{0,1}n×{0,1}nが入力されたとき、xとyの排他的論理和を出力する、請求項2に記載の情報処理装置。
  4. 前記関数f1は、mビットの入力のうちの上位nビットを取り出した後、前記上位nビットから下位(n-2)を表すd1を更に取り出し、01||d1を出力し、
    前記関数f2は、mビットの入力のうちの上位2nビットを取り出した後、前記上位2nビットから下位(n-2)を表すd2を更に取り出し、10||d2を出力し、
    前記関数f3は、(x,y)∈{0,1}n×{0,1}nが入力されたとき、xとyの排他的論理和の下位(n-2)ビットを表すs3を取り出し、11||s3を出力する、請求項2に記載の情報処理装置。
  5. ホワイトボックス攻撃に対して安全な認証付き暗号の暗号化関数E(K,K')(ただし、K'は鍵)を用いて、データMの暗号文Cを生成すると共に、前記タグTとして前記暗号文Cの真正性を検証するためのタグを前記タグ生成部により生成するように構成されている暗号化部、を有し、
    前記暗号化関数E(K,K')は、
    前記タグ生成関数MAC1Kと、ホワイトボックス攻撃に対して安全な共通鍵暗号の暗号化関数EncK'とを用いて構成される、請求項1乃至3の何れか一項に記載の情報処理装置。
  6. 前記暗号化関数E(K,K')は、
    初期ベクトルIVと、関連データAと、前記データMとを入力に取り、
    X=IV||A||M||len(M)(ただし、|| はビット結合、len(M)はMの長さを表すビット列)として前記タグ生成部によりタグT←MAC1K(X)を計算し、
    C←EncK'(adj(T),M)(ただし、adj(T)は、Tの長さを、前記共通鍵暗号の初期ベクトルの長さに調整する所定の関数)を計算し、
    前記タグTと前記暗号文Cとを出力する、請求項5に記載の情報処理装置。
  7. ホワイトボックス攻撃に対して安全なメッセージ認証符号のタグ生成関数MAC1K(ただし、Kは鍵)を用いて、データXの真正性を検証するためのタグT=MAC1K(X)を生成するように構成されているタグ生成手順、をコンピュータが実行し、
    前記タグ生成関数MAC1Kは、
    ホワイトボックス攻撃に対して安全で入出力長がnビットのブロック暗号の暗号化関数EKと、出力長がm≧2nビットの所定のハッシュ関数Hと、所定の関数f1,f2:{0,1}m→{0,1}n及びf3:{0,1}n×{0,1}n→{0,1}nとを用いて構成される、方法。
  8. ホワイトボックス攻撃に対して安全なメッセージ認証符号のタグ生成関数MAC1K(ただし、Kは鍵)を用いて、データXの真正性を検証するためのタグT=MAC1K(X)を生成するように構成されているタグ生成手順、をコンピュータに実行させ、
    前記タグ生成関数MAC1Kは、
    ホワイトボックス攻撃に対して安全で入出力長がnビットのブロック暗号の暗号化関数EKと、出力長がm≧2nビットの所定のハッシュ関数Hと、所定の関数f1,f2:{0,1}m→{0,1}n及びf3:{0,1}n×{0,1}n→{0,1}nとを用いて構成される、プログラム。
JP2024515190A 2022-04-11 2022-04-11 情報処理装置、方法及びプログラム Active JP7700960B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2022/017506 WO2023199379A1 (ja) 2022-04-11 2022-04-11 情報処理装置、方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2023199379A1 JPWO2023199379A1 (ja) 2023-10-19
JP7700960B2 true JP7700960B2 (ja) 2025-07-01

Family

ID=88329215

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2024515190A Active JP7700960B2 (ja) 2022-04-11 2022-04-11 情報処理装置、方法及びプログラム

Country Status (2)

Country Link
JP (1) JP7700960B2 (ja)
WO (1) WO2023199379A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180359081A1 (en) 2017-06-07 2018-12-13 Nxp B.V. Cmac computation using white-box implementations with external encodings
US20200099525A1 (en) 2018-09-24 2020-03-26 Nxp B.V. Password authentication using white-box cryptography

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180359081A1 (en) 2017-06-07 2018-12-13 Nxp B.V. Cmac computation using white-box implementations with external encodings
US20200099525A1 (en) 2018-09-24 2020-03-26 Nxp B.V. Password authentication using white-box cryptography

Also Published As

Publication number Publication date
JPWO2023199379A1 (ja) 2023-10-19
WO2023199379A1 (ja) 2023-10-19

Similar Documents

Publication Publication Date Title
US12101415B2 (en) Method of RSA signature or decryption protected using a homomorphic encryption
US8358781B2 (en) Nonlinear feedback mode for block ciphers
US8300828B2 (en) System and method for a derivation function for key per page
US11063743B2 (en) Method of RSA signature of decryption protected using assymetric multiplicative splitting
US8744078B2 (en) System and method for securing multiple data segments having different lengths using pattern keys having multiple different strengths
CN111448779A (zh) 用于混合秘密共享的系统、设备和方法
US11336425B1 (en) Cryptographic machines characterized by a Finite Lab-Transform (FLT)
JP2015104119A (ja) 完全性検証を含むブロック暗号化方法およびブロック復号化方法
US12609809B2 (en) Method and apparatus for activating a remote device
US20210135851A1 (en) Encryption processing system and encryption processing method
US7894608B2 (en) Secure approach to send data from one system to another
CN116881865A (zh) 一种许可证生成方法以及系统
JP5992651B2 (ja) 暗号化方法、プログラム、および、システム
Muhammed et al. A hybrid approach to cloud data security using ChaCha20 and ECDH for secure encryption and key exchange
Schulman Entropy: An essential component of cryptographic security
JP6631989B2 (ja) 暗号化装置、制御方法、及びプログラム
US12328397B2 (en) Memory processing apparatus, memory verification apparatus, memory updating apparatus, memory protection system, method, and computer readable medium
WO2023199379A1 (ja) 情報処理装置、方法及びプログラム
Mohammed et al. Cryptography and network security in modern era
Aghili Improving security using blow fish algorithm on deduplication cloud storage
JP7466791B2 (ja) 暗号化装置、復号装置、復号可能検証装置、暗号システム、暗号化方法、及び暗号化プログラム
WO2025215393A1 (en) Improved encryption and authentication method with associated data
JP2001222218A (ja) 暗号化装置、方法、復号装置、方法、暗号システム及びプログラムを記憶した記憶媒体
JP2000244479A (ja) 暗号化方法および装置、ならびに、復号化方法および装置
JP2017129779A (ja) 暗号生成装置、データ伝送システム、暗号生成方法及びデータ伝送方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240726

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250602

R150 Certificate of patent or registration of utility model

Ref document number: 7700960

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350