JP6830635B1 - データ管理方法 - Google Patents

データ管理方法 Download PDF

Info

Publication number
JP6830635B1
JP6830635B1 JP2020028802A JP2020028802A JP6830635B1 JP 6830635 B1 JP6830635 B1 JP 6830635B1 JP 2020028802 A JP2020028802 A JP 2020028802A JP 2020028802 A JP2020028802 A JP 2020028802A JP 6830635 B1 JP6830635 B1 JP 6830635B1
Authority
JP
Japan
Prior art keywords
data
distributed ledger
trusted server
trusted
server
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
JP2020028802A
Other languages
English (en)
Other versions
JP2021136470A (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.)
LayerX Inc
Original Assignee
LayerX 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 LayerX Inc filed Critical LayerX Inc
Priority to JP2020028802A priority Critical patent/JP6830635B1/ja
Priority to JP2021002705A priority patent/JP2021136686A/ja
Application granted granted Critical
Publication of JP6830635B1 publication Critical patent/JP6830635B1/ja
Publication of JP2021136470A publication Critical patent/JP2021136470A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

【課題】秘密性の高いデータを安全に管理することができるようにする。【解決手段】データ管理方法であって、分散台帳により管理しようとするデータの内容を、トラステッド実行環境を備えるトラステッドサーバに記録し、分散台帳には、データを暗号化した暗号データを記録し、トラステッドサーバでデータの内容が更新された場合には、更新された内容を暗号化した暗号データを分散台帳に追加し、分散台帳に暗号データが追加された場合には、トラステッドサーバは、追加された暗号データを復号化してデータの内容を更新すること、を特徴とする。【選択図】図4

Description

本発明は、データ管理方法に関する。
特許文献1では、ブロックチェーンに暗号化したデータを記録し、暗号化したまま演算可能な秘密計算方式を採用している。
特開2020−021048号公報
しかしながら、特許文献1に記載の技術では特殊な計算方式しか用いることができず、一般的な処理を行うことができない。
本発明はこのような背景を鑑みてなされたものであり、秘密性の高いデータを安全に管理することのできる技術を提供することを目的とする。
上記課題を解決するための本発明の主たる発明は、データ管理方法であって、分散台帳により管理しようとするデータの内容を、トラステッド実行環境を備えるトラステッドサーバに記録し、前記分散台帳には、前記データを暗号化した暗号データを記録し、前記トラステッドサーバで前記データの内容が更新された場合には、前記更新された内容を暗号化した前記暗号データを前記分散台帳に追加し、前記分散台帳に前記暗号データが追加された場合には、前記トラステッドサーバは、追加された前記暗号データを復号化して前記データの内容を更新すること、を特徴とする。
その他本願が開示する課題やその解決方法については、発明の実施形態の欄及び図面により明らかにされる。
本発明によれば、秘密性の高いデータを安全に管理することができる。
一般的なコンピュータの構成を説明する図である。 トラステッド実行環境(TEE;Trusted Execution Environment)を説明する図である。 TEEにより対策可能な脅威を説明する図である。 本発明の一実施形態に係るデータ管理システムの全体構成例を示す図である。 ユーザ端末1、TEEサーバ2及びBCノード3を実現するコンピュータのハードウェア構成例を示す図である。 本実施形態のデータ管理システムにおけるデータ管理の概要を説明する図である。 ユーザからのデータアクセスを説明する図である。 本実施形態のデータ管理システムにおけるデータ管理に係るサブプロトコルを説明する図である。 アテステーションサービスについて説明する図である。 アテステーションサービスから応答されるREPORT構造体の主要項目を示す図である。 REPORTの検証処理を説明する図である。 TEEサーバ2を追加するときの動作を説明する図である。 TEEサーバ2を追加する処理の流れを示す図である。 TreeKEM形式のグループステートを説明する図である。 グループステートに含まれるアプリケーションキーチェーンの構成例を示す図である。 図12の動作におけるハンドシェイクの詳細を説明する図である。 書き込みの衝突を説明する図である。 書き込み競合時のブロックチェーンネットワーク30におけるブロック高を説明する図である。 書き込み衝突判定について説明する図である。 衝突検証を行う場合の秘密情報の状態遷移について説明する図である。 エンクレーブ21における状態遷移の改ざん検出のための仕組みを説明する図である。
<発明の概要>
本発明の実施形態の内容を列記して説明する。本発明は、たとえば、以下のような構成を備える。
[項目1]
分散台帳により管理しようとするデータの内容を、トラステッド実行環境を備えるトラステッドサーバに記録し、
前記分散台帳には、前記データを暗号化した暗号データを記録し、
前記トラステッドサーバで前記データの内容が更新された場合には、前記更新された内容を暗号化した前記暗号データを前記分散台帳に追加し、
前記分散台帳に前記暗号データが追加された場合には、前記トラステッドサーバは、追加された前記暗号データを復号化して前記データの内容を更新すること、
を特徴とするデータ管理方法。
[項目2]
項目1に記載のデータ管理方法であって、
ユーザ端末は、前記トラステッドサーバに対して前記データの更新リクエストを送信し、
前記トラステッドサーバは、前記更新された内容を暗号化した前記暗号データを、対応する前記分散台帳を構成するノードに送信し、
前記ノードは、前記暗号データを前記分散台帳に追加して、他の前記ノードに伝搬させ、
前記ノードのそれぞれは、追加された前記暗号データを、対応する前記トラステッドサーバに送信し、
前記トラステッドサーバは、追加された前記暗号データを復号化して、自身が記録している前記データの内容を更新すること、
を特徴とするデータ管理方法。
[項目3]
項目1に記載のデータ管理方法であって、
前記トラステッドサーバが作成した秘密鍵による署名を含むデータをアテステーションサービスに送信して正当性を検証させ、前記アテステーションサービスは検証結果に署名し、前記トラステッドサーバは、前記検証結果に、前記トラステッドサーバが作成した公開鍵を含めて前記分散台帳に登録し、前記ノードが、前記検証結果の署名を検証し、
前記トラステッドサーバは、前記分散台帳におけるトランザクションの発生時には、登録されている前記公開鍵を用いて前記トランザクションに含まれる署名の検証を行うこと、
を特徴とするデータ管理方法。
[項目4]
項目3に記載のデータ管理方法であって、
前記検証結果には、前記トラステッドサーバが実行しているプログラムを特定する情報が含まれ、
前記トラステッドサーバは、前記検証結果の署名検証時に、自身が実行している前記プログラムが、前記検証結果に含まれている情報が示す前記プログラムと一致することを検証すること、
を特徴とするデータ管理方法。
[項目5]
項目4に記載のデータ管理方法であって、
前記ノードにおいてもさらに、前記検証結果に含まれている情報が示す前記プログラムと前記分散台帳に登録されている前記検証結果に含まれている情報が示す前記プログラムとが一致していることを検証すること、
を特徴とするデータ管理方法。
[項目6]
項目3に記載のデータ管理方法であって、
前記トラステッドサーバでは、前記秘密鍵及び前記公開鍵のペアを生成し、前記公開鍵を前記検証結果に含めて前記分散台帳に登録すること、
を特徴とするデータ管理方法。
[項目7]
項目3に記載のデータ管理方法であって、
前記トラステッドサーバを追加する場合に、
追加される前記トラステッドサーバは、
前記アテステーションサービスに自身の前記トラステッド実行環境の正当性を検証させ、
前記アテステーションサービスによる検証結果を、既存の前記トラステッドサーバに送信し、
前記既存のトラステッドサーバは、
前記アテステーションサービスに自身の前記トラステッド実行環境の正当性を検証させ、
前記アテステーションサービスによる検証結果と、前記追加されるトラステッドサーバから受信した前記検証結果とを照合して、前記追加されるトラステッドサーバの参加可否を決定し、
前記追加されるトラステッドサーバの参加が可能と判断した場合には、前記追加されるトラステッドサーバから受信した前記検証結果とを照合して、前記追加されるトラステッドサーバの参加を決定すること、
を特徴とするデータ管理方法。
[項目8]
項目1に記載のデータ管理方法であって、
前記暗号化は共通のグループ鍵を用いて行われ、
前記トラステッドサーバはそれぞれ自身の秘密鍵を有しており、全ての前記トラステッドサーバの公開鍵が前記分散台帳に記録されており、
前記トラステッドサーバは、同一の前記グループ鍵を算出するように、全ての前記公開鍵と、自身の前記秘密鍵とを用いてシードを計算し、前記シードに基づいてグループ鍵を計算すること、
を特徴とするデータ管理方法。
[項目9]
項目1に記載のデータ管理方法であって、
前記トラステッドサーバは、前記分散台帳で管理されるブロックごとの全てのデータの第1のハッシュ値を計算して、前記第1のハッシュ値を前記分散台帳に記録し、前記データの内容が更新された場合には、更新前の前記ハッシュ値と更新後の全前記ブロックの内容との第2のハッシュ値を計算して、前記第2のハッシュ値を前記分散台帳に記録すること、
を特徴とするデータ管理方法。
<本実施形態の概要>
以下、図面を用いて本発明の一実施形態に係るデータ管理システムについて説明する。本実施形態のデータ管理システムは、秘密性の高いデータ(例えば個人情報など)を管理する場合に、より安全にデータを管理可能とするものである。本実施形態のデータ管理システムでは、ブロックチェーンにデータを管理することでデータの改ざんを防止し、ブロックチェーンには暗号化したデータを管理することでデータの秘匿性あるいは匿名性を担保し、暗号化されたデータを復号化して処理する環境として、トラステッド実行環境(TEE;Trusted Execution Environment)を採用することで、秘匿性及び安全性を向上させている。
図1は、一般的なコンピュータの構成を説明する図である。一般的なコンピュータでは、オペレーティングのカーネルがプログラムのコードやデータを、プロセス生成時や生成後動的にメモリに割り当て、ユーザアプリケーションはメモリの断片化や別用途メモリへのアクセスを防ぐために仮想アドレス空間を利用している。オペレーティングシステムは、カーネルメモリのページテーブルでマッピングメモリを元にCPUで演算し、メモリから命令を読み出し、命令をもとにメモリからレジスタにデータを読みだし、レジスタ上のデータを元に演算を行い、演算結果をメモリに書き戻している。なお、キャッシュメモリなどがその中間に存在することもある。
図2は、トラステッド実行環境(TEE;Trusted Execution Environment)を説明する図である。TEEとは、セキュアハードウェアの一種である。TEEは、例えば、メモリ上にエンクレーブ(Enclave)と呼ばれる暗号的に厳重に保護された領域を生成することで、秘密性の高いデータを保護しつつプログラムを実行する為のCPUの拡張機能である。図2(a)に示されるように、TEEにおいて、エンクレーブを実現するプログラム及びデータは、DRAMのサブセットであるPRM(Processor Reserved Memory)に保管される。PRMは、他のソフトウェアから直接アクセスできない領域となっている。さらに、エンクレーブの内容は、PRMのサブセットであるEPC(Enclave Page Cache)に記録される。すなわち、DRAM上のEPCが実際の保護領域である。CPUがエンクレーブ外からのソフトウェア(オペレーティングシステムなどのシステムソフトウェアを含む全てのソフトウェア)からのアクセスを制限する。EPC内のメモリは暗号化されており、CPUが復号化して演算することができる。EPCへのダイレクトメモリアクセスについてもCPUが制御する。
図2(b)に示されるように、それぞれのエンクレーブには、ELRANGE(Enclave Linear Address Range)と呼ばれる仮想アドレス空間が指定される。ELRANGEはEPC領域にマッピングされる。一方で、仮想アドレスの割り当ては(TEEでは信頼していない)カーネルの役割である。エンクレーブの初期化フェーズ前に全てのEPCは静的に割り当てられる。エンクレーブには、ページテーブルが含められる。
図3は、TEEにより対策可能な脅威を説明する図である。TEEは、マルウェアなどを用いた機密情報(秘密鍵、パスワードなどを含む。)の流出を防ぐことができるものである。また、TEEでは、オペレーティングシステムも信頼されておらず、CPU及びエンクレーブ内のコードのみが信頼されている。攻撃として、メモリ破壊(不正なメモリ書き換え、操作など)、システムソフトウェアからの攻撃(信頼されていないオペレーティングシステム)、コールブート攻撃(強制的な揮発遅延によるメモリの読み取りなど)への対策がなされている。なお、当該図の説明は、 「Graphene-SGX: A Practical Library OS for Unmodified Applications on SGX」, Chia-Che Tsai, Donald E. Porter, Mona Vij. USENIX: https://www.usenix.org/system/files/conference/atc17/atc17-tsai.pdf にて説明されている。
本実施形態では、秘密性の高い管理対象のデータ(以下、秘密情報という。)をTEEのエンクレーブに格納し、ユーザはTEEサーバに対して秘密情報の読み書きを行う。その一方で、秘密情報を暗号化したデータ(以下、暗号化情報という。)はブロックチェーンに登録し、秘密情報への読み書き等のオペレーションを、ブロックチェーン上でのトランザクションとして発生させるようにして、秘密情報と暗号化情報との同期をとっている。これにより、ブロックチェーンによる改ざん困難性と、TEEによる秘密性とを組み合わせることが可能となる。
<システム概要>
図4は、本発明の一実施形態に係るデータ管理システムの全体構成例を示す図である。本実施形態のデータ管理システムは、TEEサーバ2及びブロックチェーンネットワーク3を含んで構成される。ブロックチェーンネットワーク30は、複数のブロックチェーンノード(BCノード3)により構成される。本実施形態では、BCノード3には対応するTEEサーバ2がそれぞれ設けられる。なお、BCノード3とTEEサーバ2とは1対1のペアとして構成してもよいし、1つのBCノード3に複数のTEEサーバ2が対応し、及び/又は、複数のBCノード3に1つ若しくは複数のTEEサーバ2が対応していてもよい。また、本実施形態では、TEEサーバ2は1つのツリーを構成するものとする。
TEEサーバ2は、TEEを備えるコンピュータである。TEEサーバ2は、ユーザ端末1からのリクエストに応じて秘密情報を管理する。BCノード3は、上述したようにブロックチェーンネットワーク30を構成する。BCノード3には、暗号化情報が分散台帳に登録される。
図5は、ユーザ端末1、TEEサーバ2及びBCノード3を実現するコンピュータのハードウェア構成例を示す図である。ユーザ端末1、TEEサーバ2及びBCノード3は、例えばワークステーションやパーソナルコンピュータのような汎用コンピュータとしてもよいし、あるいはクラウド・コンピューティングによって論理的に実現されてもよい。コンピュータは、CPU01、メモリ102、記憶装置103、通信インタフェース104、入力装置105、出力装置106を備える。記憶装置103は、各種のデータやプログラムを記憶する、例えばハードディスクドライブやソリッドステートドライブ、フラッシュメモリなどである。通信インタフェース104は、通信ネットワークに接続するためのインタフェースであり、例えばイーサネット(登録商標)に接続するためのアダプタ、公衆電話回線網に接続するためのモデム、無線通信を行うための無線通信機、シリアル通信のためのUSB(Universal Serial Bus)コネクタやRS232Cコネクタなどである。入力装置105は、データを入力する、例えばキーボードやマウス、タッチパネル、ボタン、マイクロフォンなどである。出力装置106は、データを出力する、例えばディスプレイやプリンタ、スピーカなどである。
<データ管理の概要>
図6は、本実施形態のデータ管理システムにおけるデータ管理の概要を説明する図である。本実施形態のデータ管理システムでは、TEEサーバ2は秘密情報を平文で記録するとともに、ブロックチェーンネットワーク30により共有される場合に、そのデータの秘匿性を保護するために秘密情報の暗号化を行う。すなわち、TEE保護領域内部でのみ機密性の高いデータを扱うようにし、ブロックチェーンネットワーク30上には暗号化したデータ(暗号文)のみを記録するようにする。TEEサーバ2は、外部からデータを見ることができない保護領域を持つコンピュータである。TEEは、保護領域内部のデータが外部から勝手に見れないことを保証しているため、秘密情報の秘匿性を担保することができる。また、TEEでは、後述するアテステーションサービスにより正しいプログラムが動作していることが保証されるようにすることができるので、計算完全性を担保することができる。
図7は、ユーザからのデータアクセスを説明する図である。本実施形態のデータ管理システムでは、秘匿性あるいは匿名性を保証するためにブロックチェーンネットワーク30上にはそれぞれの状態の暗号文をアカウントに紐づかない形式で保持する。オンチェーン(ブロックチェーンネットワーク30で管理される分散台帳)には匿名性が保証されるように非構造化データ(暗号文)が管理され、オフチェーン(ブロックチェーンで管理されない場所、すなわち、TEEサーバ2)では、状態遷移できるように構造化データ(平文の秘密情報)が管理される。復号化された秘密情報は、オフチェーンのエンクレーブ21内のみに一時的に存在することになる。したがって、ユーザから自由にアクセスできない保護領域に復号化された秘密情報を管理することができる。また、本実施形態のデータ管理システムでは、ユーザ端末1からのリクエストに応じて、TEEサーバ2がエンクレーブ21内で秘密情報の状態を遷移させ、その結果を暗号化してブロックチェーンネットワーク30にブロードキャストすることができる。そして、他のTEEサーバ2は暗号文をブロックチェーンネットワーク30から読み取り、エンクレーブ21内で復号化することで、エンクレーブ21内の秘密情報を更新することができる。暗号化情報は、ブロックチェーンネットワーク30内では復号化することができず、エンクレーブ21内でのみ復号化することができる。後述するオンチェーンでのREPORT検証によりTEEサーバ2の計算完全性を検証することができる。REPORT検証は、TEEサーバ2が意図されたプログラムを動かしているか否かを検証する。ユーザ端末1が秘密情報の状態を取得したい場合はTEEサーバ2から得ることができる。
本実施形態のデータ管理システムが有する性質には次の5つがある。
(1)データ有用性:ブロックチェーンネットワーク30に管理されているデータから全ての秘密情報を復元可能である。
(2)ブロックチェーン対応性:既存の様々なブロックチェーン上で動作する。
(3)非同期:それぞれのTEEサーバ2は非同期に動作する。
(4)機密性:ブロックチェーンには暗号化データが管理される。
(5)正しい実行:コンフリクトなく実行される。
図8は、本実施形態のデータ管理システムにおけるデータ管理に係るサブプロトコルを説明する図である。
ユーザ端末1とTEEサーバ2との間ではチャレンジレスポンス認証が行われる(S801)。これは、ユーザ鍵ペアでアクセス可能なデータ管理である。次に、エンクレーブ21内では、CGKA安全なグループ暗号化が行われる(S802)。すなわち、特定の暗号文解読(秘密鍵漏洩)が他の暗号文に影響を与えないことを意味する。TEEサーバ2のシミュレーション攻撃を防ぐトランザクション署名方式を採用する(S803)。これは、TEEサーバ2が正しい処理をしていることを署名だけで検証することを意味する。書き込み競合のロック方式を採用する(S804)。すなわち、データ競合対策である。ブロック高ごとのエンクレーブ21内の状態ハッシュ値の一致検証を行う(S805)。これにより全てのTEEサーバ2が同じ内部状態を持っていることを保証することができる。
<アテステーションサービス>
図9は、アテステーションサービスについて説明する図である。サービスプロバイダー(SP;Service Provider)はエンクレーブ21を備えていないコンピュータであり、独立ソフトウェアベンダー(ISV;Independent Software Vendor)は、エンクレーブ21を備えているコンピュータである。SPが正当なエンクレーブ21であることをアテステーションサービス4が認証する。特定のメーカーが製造したCPUであるかどうか、脆弱性はないか、MRENCLAVEの比較(実行プログラムの比較)などを認証する。アテステーションサービス4は、例えば、オープンソースのDCAPなどにより実装される。エンクレーブ21が生成するQUOTEをアテステーションサービス4に送信し、アテステーションサービス4の秘密鍵で署名されたREPORTが応答される。QUOTEには、MRENCLAVE(エンクレーブ計測値、ハッシュ値)が含まれる。ISVは、CPU内の秘密鍵でQUOTEを署名する。当該秘密鍵は、CPUのチップ製造時に設定される固有の鍵であり、いわゆるRoot of Trustとして機能する。アテステーションサービス4は、対応する公開鍵で署名検証する。これにより、正当なトラステッド実行環境から送られてきたQUOTEであることを保証することができる。アテステーションサービス4は、秘密鍵で署名されたREPORTを応答する。REPORTには、MRENCLAVEが含まれる。アテステーションサービス4は、X.509証明書で認証することができる。
図10は、アテステーションサービスから応答されるREPORT構造体の主要項目を示す図である。idは、ユニークな識別子であり、timestampは、REPORT生成時のタイムスタンプである。versionは、APIバージョンであり、isvEnclaveQuoteStatusは、EPID署名に対するステータスである。CPUCVNは、CPUのセキュリティバージョンであり、MISCSEKECTは、Enclave内での例外発生時のプロセッサ状態であり、ATTRIBUTESは、エンクレーブ21の属性フラグである。MRENCLAVEは、エンクレーブ計測値である。MRSIGNERは、エンクレーブ署名鍵のRSA公開鍵modulusのハッシュ値である。ISVPRODIDは、エンクレーブのプロダクトIDであり、ISVSVNは、エンクレーブのセキュリティバージョンである。REPORTDATAは、レポートデータである。
<REPORT検証>
図11は、REPORTの検証処理を説明する図である。REPORTの検証処理は、TEEサーバ2が全て同じプログラムを実行していることをオンチェーンで合意しようとするものである。各TEEサーバ2は、アテステーションサービス4にQUOTEを送信して、正当なトラステッド実行環境であるか否かの検証を受ける。アテステーションサービス4からは、REPORTが応答される。アテステーションサービス4では、上述したように、CPUの固有秘密鍵による署名の検証、セキュリティバージョンのチェックなどが行われる。REPORTはMRENCLAVEを含み、X.509証明書で認証される。
TEEサーバ2は、スマートコントラクトを用いて、デプロイ時にオンチェーンで、REPORTの署名検証、MRENCLAVEの登録、ならびに、公開鍵及びエンドポイントなどのパラメタ登録を行う。TEEサーバ2は、REPORT内のREPORTDATA項目にエンクレーブ21内で生成した公開鍵(RAK)とノンスとを設定する。TEEサーバ2は、公開鍵はオンチェーンに登録する。ブロックチェーンネットワーク30において、通常のトランザクションでは、著名公開鍵が登録されているか否かを検証し、その公開鍵による署名検証を行うことができる。したがって、エンクレーブ21のプログラムコードを変更すると、メモリ上の署名秘密鍵も失われ、署名検証を行うことができなくなる。したがって、REPORTを検証することで、エンクレーブ21で実行しているプログラムの真正性(他のTEEサーバ2のエンクレーブ21と同じプログラムを実行していること)を保証することができる。ノンスは、REPORTのリプレイ攻撃を防ぐために設定することが出来る。
TEEサーバ2は、最初の参加時と定期的なリフレッシュ時にのみREPORT検証を行うものとする。これにより、トランザクションごとにアテンションサービス4との通信を行う必要がなくなる。
<ネットワークへの参加>
図12は、TEEサーバ2を追加するときの動作を説明する図である。図12の例では、TEEサーバ2(2)が新規に追加され、TEEサーバ2(1)が既存である。
新規のTEEサーバ2(2)からアテステーションサービス4に署名済みQUOTE構造体データを送信する(S121)。アテステーションサービス4からは、REPORT構造体データが応答される(S122)。新規のTEEサーバ2(2)から既存のTEEサーバ2(1)に対してinitkeyを送信する(S123)。initkeyの公開鍵がグループステートとして登録されることになる。TEEサーバ2(1)及びTEEサーバ2(2)は互いにREPORTの検証を行う。すなわち、新規のTEEサーバ2(2)と既存のTEEサーバ2(1)との間でREPORT構造体データを共有し、REPORTの署名、タイムスタンプ、ステータスなどを検証するとともに、お互いのMRENCLAVEが一致するか否かを検証する。
次に、既存のTEEサーバ2(1)から新規のTEEサーバ2(2)に対してグループステートを送信する(S124)。グループステートは、後述するTreeKEM形式である。新規のTEEサーバ2(2)は、秘密鍵(dhsecret)を追加して、グループステートから暗号化に用いるグループ鍵を抽出する。また、新規のTEEサーバ2(2)は、グループステートから追加(Add)のハンドシェイクを作成し、ハンドシェイクと、署名マッピングとをブロックチェーンネットワーク30に送信する(S125)。また、新規のTEEサーバ2(2)は、スマートコントラクトにより、REPORTと、指定のパラメータ(TEE名称、URL、タイムスタンプなど)をブロックチェーンネットワーク30に送信することができる。ブロックチェーンネットワーク30では、REPORTの検証、MRENCLAVEの一致検証、REPORTDATA内のノンス検証、REPORTDATA内の公開鍵登録、タイムスタンプ登録などを行うことができる。
図13は、TEEサーバ2を追加する処理の流れを示す図である。
ユーザ端末1からシグネチャが新規のTEEサーバ2に送信され(S1301)、TEEサーバ2ではシグネチャの検証が行われる(S1302)。新規のTEEサーバ2は、QUOTEをアテステーションサービス4に送信し(S1303)、アテステーションサービス4からREPORTが応答される(S1304)。新規のTEEサーバ2から既存のTEEサーバ2にinitkeyが送信され(S1305)、既存のTEEサーバ2からwelcomが応答される(S1306)。
新規のTEEサーバ2は、REPORT、公開鍵、ノンス、追加のハンドシェイクをブロックチェーンネットワーク30にブロードキャストする(S1307)。ブロックチェーンネットワーク30では、MRENCLAVEの検証(S1308)、REPORTの署名の検証(S1309)、ノンスの検証(S1310)、公開鍵の検証(S1311)、REPORTの日時の検証(S1312)が行われ、追加のハンドシェイクが実行される(S1313)。
ブロックチェーンネットワーク30から既存のTEEサーバ2にハンドシェイクが応答され(S1314)、既存のTEEサーバ2はグループステートを更新する(S1315)。ブロックチェーンネットワーク30からは新規のTEEサーバ2にもハンドシェイクが応答され(S1316)、新規のTEEサーバ2もグループステートを更新する(S1317)。
以上のようにして、新規のTEEサーバ2がネットワークに登録される。
<TreeKEM形式>
図14は、TreeKEM形式のグループステートを説明する図である。TreeKEM(木構造の鍵カプセル化手法;Key Encapsulation Method)の詳細については、MLS(Messaging Layer Security)プロトコルのRFC標準のドラフト(https://tools.ietf.org/html/draft-ietf-mls-protocol-08)を参照する。ここで、配送サーバ(Delivering Server)のOrderingをブロックチェーンネットワーク30が行うものとする。また、ハンドシェイク及びアプリケーションメッセージの順序はグローバルに共通であるものとする。TEEサーバ2のネットワーク全体で共有されるマスターシードの存在を消去する。TEEサーバ2ごとに自由に鍵の変更が可能であるため、情報漏洩後の対応(PCS;Post-Compromise Security)が可能である。また、マスターを削除することもできる。
木構造のリーフは、各メンバーのinitkeyから生成されるノード(公開鍵DHPubKey)である。該当するメンバーのみがリーフとその直接パスで接続されたメンバーの秘密鍵DHSecretを知っている。
図14の例において、ルートKは、全てのメンバーが知っている。KDF(Key Derivation Function)チェーンのグループキーとして利用することができる。生成(Create)、追加(Add)、更新(Update)、削除(Remove)のハンドシェイク操作でTreeKEMは変化する。エポック(Epoch)が変化して、情報漏洩後の対策(PCS)となる。オンチェーンでは、エポック、署名者のインデックスに対応付けた公開鍵(signer_index=>identityPubkey)を保持する。これにより、操作が更新である場合、signer_indexが存在するかどうかを判定し、操作が追加及び削除である場合には、signer_indexが存在しないかどうかを判定することができる。identityPubkeyによりハンドシェイクの署名を検証することができる。ハンドシェイク時には前回のインデックス(prior_index)が一致するかどうかを検証することができる。また、ハンドシェイクごとにエポックはインクリメントされる。TEEサーバ2は、受信したハンドシェイクの中のHMACを検証することができる。
図15は、グループステートに含まれるアプリケーションキーチェーンの構成例を示す図である。このアプリケーションキーチェーンは、前方秘匿性(Forward Secrecy)の要である。本実施形態のデータ管理システムでは、TEEサーバ2ごとにアプリケーションチェーンを回していく。署名された公開鍵で識別することができる。グループキーからメンバーインデックス(roster idx)ごとに、KDFチェーンを用いることにより、前方秘匿性を得ながらメッセージの暗号化に用いる鍵を生成することができる。受け取ったメッセージの復号化にラチェット(ratchet)を用いることができる。なお、MLSでは暗号化にもラチェットが用いられている。各ユーザごとの生成(generation)をエンクレーブ21内に保持する。ブロックチェーンネットワーク30がこの生成とエポックの変化とをグローバルに順序づけするために、全てのTEEサーバ2で共通の暗号化情報に対して共通の鍵を利用することができる。
図16は、図12の動作におけるハンドシェイクの詳細を説明する図である。新規のTEEサーバ2(2)がステップS124で受け取ったwelcomから生成するグループステートには自身のノードにのみ秘密鍵DHSecretKeyが含まれる。そして、自身のノードから直接パスで接続されているノードの鍵が分かる。秘密鍵は自身しか知らない。新規TEEサーバ2(2)のリーフインデックスは、既存のメンバーであるTEEサーバ2(1)が決定する。ステップS125で、新規TEEサーバ2(2)のinitkeyがブロックチェーンネットワーク30に記録されるが、秘密鍵DHSecretKeyは含まれない。ブロックチェーンネットワーク30が、新規TEEサーバ2(2)のメンバーインデックス(roster index)を決定し、ハンドシェイクの応答ステップS126で、TreeKEMのメンバーインデックス(roster index)に公開鍵DHPubKeyを追加し、新しいグループルートを決定する。
initkeyには、user_init_key_id、supported_version、cipher_suites、dhpubkey、credential、signatureが含まれる。
welcome(グループステート)には、user_init_key_id、cipehr_suite、encrypted_group_stateが含まれる。
追加(Add)のハンドシェイクには、prior_epoch、GroupAdd、signer_index、signature、conf_macが含まれる。ここで、GroupAddには、roster_index、init_key、welcome_hashが含まれる。
このようにTreeKEM形式のグループステートをブロックチェーンネットワークで共有することにより、TEEサーバ2の各ペア間で秘密鍵を共有するよりも、効率的に鍵を共有することが可能となる。また、仮に暗号化に使う秘密鍵(TreeKEMのルートノードの秘密鍵)が漏洩した場合であっても、それぞれ別の秘密鍵で暗号化しているため、他の暗号文は解読できない。また、それぞれのTEEサーバ2がそれぞれ管理する秘密鍵で暗号化することができるので、秘密鍵漏洩の責務を主体ごとに分けることができる。
<更新ハンドシェイク>
図14に示したTreeKEMにおいて、ノードFを更新する場合の例を説明する。全てのメンバーTEEサーバ2は更新されたグループルート(K)を得る。Fが更新されると、そのHKDFが親ノードであるIの鍵となる。更新されたI及びKは、それぞれのサブグループにだけ伝えられる。すなわち、IはEの鍵で暗号化を行い、KはJの鍵で暗号化を行う。更新(Update)のハンドシェイクには、prior_epoch、Update Operation、signer_index、signature、conf_macが含まれる。
<削除ハンドシェイク>
図14に示したTreeKEMにおいて、Dを削除(Remove)するハンドシェイクを行う場合、当該ハンドシェイクはブロックチェーンネットワーク30によりブロードキャストされ、Dが知っているノードの鍵を全て消去することになる。すなわち、DからルートKまでの、D、H、J、Kの鍵が削除される。
<書き込み処理>
図17は、書き込みの衝突を説明する図である。例えば、あるTEEサーバ2においてアリスがボブに20送金する状態遷移が生じ、他のTEEサーバ2においてチャーリーがボブに30送金する状態遷移が生じるという競合の可能性がある。TEEサーバ2は独立に動作しているため、オンチェーン上では匿名性が失われないように衝突検出(及びロック制御)が必要である。
図18は、書き込み競合時のブロックチェーンネットワーク30におけるブロック高を説明する図である。あるTEEサーバ2(A)において2つのブロックが追加され、他のTEEサーバ2(B)において1つのブロックが追加される場合に、TEEサーバ2(A)においてブロック高が5、TEEサーバ2(B)においてブロック高が6であった場合、TEEサーバ2(A)及びTEEサーバ2(B)の両方でブロック高7になるところ、競合排他制御を行った場合には、いずれもブロック高8になるべきである。
図19は、書き込み衝突判定について説明する図である。書き込み操作が並行して行われないように、事前発生関係を補足する。すなわち、TEEサーバ2は、ブロックチェーンネットワーク30に送信する暗号化情報には、固定バイト長の乱数rを追加するようにする。すなわち、公開鍵pubkey、状態情報state、現在の乱数(本実施形態ではハッシュ値とする。)r_iを含めて、暗号化関数Encに与えたEnc(pubkey||state||r_i)を送信する。エンクレーブ21内では、公開鍵pubkeyに対応付けて状態情報stateと、ハッシュ値r_iとを記録(pubkey=>(state,r_i))する。
TEEサーバ2は、ロック制御用にrのノンスセットをオンチェーンのストレージに追加する。また、トランザクションには、直前のハッシュr_{i−1}を含めるようにする。ブロックチェーンネットワーク30では、ノンスセットにr_{i−1}が存在していないことを確認したうえで、ノンスセットにr_iを加える。ブロックチェーンネットワーク30におけるトランザクション処理は、グローバルに順序付けされる。したがって、ブロックに取り込まれるトランザクションがr_{i−1}を使うと、次のトランザクションではノンス検証ではじかれることになる。
図19の例では、TEEサーバ2(A)がボブの残高を70に登録してブロック高が7になった後、TEEサーバ2(B)は、この状態を読み取り、TEEサーバ2(B)のr_iはノンス検証ではじかれるため、新たにリトライ処理をすることで、ブロック高8にトランザクション処理が行われることになる。
なお、同一ユーザ(TEEサーバ2)による状態遷移は、1ブロックについて1回に制限するものとする。
図20は、衝突検証を行う場合の秘密情報の状態遷移について説明する図である。TEEサーバ2とブロックチェーンネットワーク30との間のデータ同期は、ベストエフォートにて各TEEサーバ2が独立して行う。同期が遅延しているTEEサーバ2(A)がボブの状態を書き換えるトランザクションをブロックチェーンネットワーク30にブロードキャストする場合、乱数部分はr_2でなくてはいけない。
ここで、r_0=0であり、r_1は、r_0を含めたハッシュ値であり、例えば、遷移対象account、遷移させる状態をstate_0として、r_1=Hash(account,state_0,r_0)として求めることができる。同様に、r_2=Hash(account,state_1,r_1)であり、一般化してr_{i}=Hash(account,state_{i−1},r_{i−1})となる。図20の例では、r_2=Hash(Bob,30,r_1)となる。このように、直前の状態遷移時のハッシュ値を含めて暗号化を行うことにより、衝突検出を行うことが可能となる。
なお、衝突の検証を行わない遷移対象(アカウント)に対する状態遷移は、ロックを行わずに暗号化データをブロードキャストするようにしてもよい。例えば、送金における受け手の状態遷移が該当する。送り手は残高の検証を行う必要があるところ、「送金」のユースケースでは送り手が複数のTEEサーバ2に跨がらないと考えられるため、実質的にはロックを行うことなく状態遷移をさせることができる。また、フラグを用いてロックを行うようにすることもできる。
図21は、エンクレーブ21における状態遷移の改ざん検出のための仕組みを説明する図である。全てのエンクレーブ21は、少なくともユーザ(アカウント)の状態をマッピングしている部分については、同じ状態をブロック高ごとに持たなければならないため、そのハッシュ値をオンチェーンで一致することを検証することが好ましい。そこで、本実施形態のデータ管理システムでは、ブロックチェーンネットワーク30における全てのトランザクションにブロック高とその時の状態ハッシュ値を含めるようにしている。すなわち、RPCハンドラ22は、エンクレーブ21に送るトランザクションインデックス(tx_index)がシーケンシャルになるようにキャッシュする。そして、状態変化を効率的にハッシュ計算し、かつその順序に対しての検証も行うことができるように、エンクレーブ21が管理している状態(enclave_state)のハッシュチェーンを作成する。すなわち、ハッシュ関数Hを用いて、i番目のハッシュ値をHASH_i、i番目の状態をstate_iとして、HASH_i=H(state_i,H(state_{i−1}))によりハッシュ値を計算する。これにより、あるエンクレーブ21において状態が改ざんされた場合であっても、その改ざんをブロックチェーンネットワーク30又は他のTEEサーバ2において検出することができる。また、本実施形態では、暗号化情報を管理するブロックチェーンネットワーク30における全てのBCノード3において、暗号化情報の検証を行うことができる。したがって、従来技術のようにトランザクションデータの正当性を単一の認証サーバでのみ検証を行うような方式に加えて、安全性を向上することができる。
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
例えば、本実施形態では、TEE(Trusted Execution Environment;トラステッド実行環境)を想定していたが、TEEに限らず、機密性の高いコンピューティング環境であればよい。例えば、AWS Nitro Enclavesなどのサービスを利用することも可能である。
また、本実施形態では、TEEサーバ2とBCノード3とは別体であるものとしたが、一体として、BCノード3がエンクレーブ21を備え、TEEサーバ2の機能を実現するようにしてもよい。
また、本実施形態では、グループステートはTreeKEM形式であるものとしたが、これに限らず、例えば、非同期ラチェットツリー(Asynchronous Ratcheting Tree;ART)形式であってもよい。すなわち、グループステートは、グループ参加者(本実施形態では、全てのTEEサーバ2)がその公開鍵を全員と共有することが可能であり、参加者全ての公開鍵と自身の秘密鍵とを用いてツリー構造などに応じてグループシードを算出することが可能であり、グループシードからハッシュ計算などにより計算したデータを共通のグループ鍵として算出することが可能であるような構造体であればよい。このグループ鍵を用いて秘密情報を暗号化することにより、全てのTEEサーバ2が共通の鍵を用いて暗号化を行うことができ、また、グループステートへの公開鍵の追加、更新、削除は、グループへのメンバーの追加、更新、削除に対応付けることができる。
また、本実施形態では、ブロックチェーンネットワーク30が暗号化情報を管理するものとしたが、これに限らず、データの改ざん防止を担保する分散型台帳の仕組みであればブロックチェーン以外の手法により管理するようにしてもよい。分散型台帳とは、複数のノードの間で、取り扱う台帳データをセキュアに共有する分散データベースである。ブロックチェーンも分散型台帳に含まれる。
1 ユーザ端末
2 TEEサーバ
3 ブロックチェーンノード
4 アテステーションサービス
21 エンクレーブ
30 ブロックチェーンネットワーク

Claims (7)

  1. 分散台帳により管理しようとするデータの内容を、トラステッド実行環境を備えるトラステッドサーバに記録し、
    前記分散台帳には、前記データを暗号化した暗号データを記録し、
    前記トラステッドサーバで前記データの内容が更新された場合には、前記更新された内容を暗号化した前記暗号データを前記分散台帳に追加し、
    前記分散台帳に前記暗号データが追加された場合には、前記トラステッドサーバは、追加された前記暗号データを復号化して前記データの内容を更新し、
    前記トラステッドサーバは、固有の秘密鍵による署名を含むデータをアテステーションサービスに送信して正当性を検証させ、前記アテステーションサービスは検証結果に署名し、前記トラステッドサーバは、前記検証結果に、前記トラステッドサーバが作成した公開鍵を含めて前記分散台帳に登録し、前記分散台帳を構成するノードが、前記検証結果の署名を検証し、
    前記分散台帳におけるトランザクションの発生時には、登録されている前記公開鍵を用いて前記トランザクションに含まれる署名検証されること、
    を特徴とするデータ管理方法。
  2. 請求項1に記載のデータ管理方法であって、
    前記検証結果には、前記トラステッドサーバが実行しているプログラムを特定する情報が含まれ、
    前記トラステッドサーバは、前記検証結果の署名検証時に、自身が実行している前記プログラムが、前記検証結果に含まれている情報が示す前記プログラムと一致することを検証すること、
    を特徴とするデータ管理方法。
  3. 請求項2に記載のデータ管理方法であって、
    前記ノードにおいてもさらに、前記検証結果に含まれている情報が示す前記プログラムと前記分散台帳に登録されている前記検証結果に含まれている情報が示す前記プログラムとが一致していることを検証すること、
    を特徴とするデータ管理方法。
  4. 請求項1に記載のデータ管理方法であって、
    前記トラステッドサーバでは、前記秘密鍵及び前記公開鍵のペアを生成し、前記公開鍵を前記検証結果に含めて前記分散台帳に登録すること、
    を特徴とするデータ管理方法。
  5. 請求項1に記載のデータ管理方法であって、
    前記トラステッドサーバを追加する場合に、
    追加される前記トラステッドサーバは、
    前記アテステーションサービスに自身の前記トラステッド実行環境の正当性を検証させ、
    前記アテステーションサービスによる検証結果を、既存の前記トラステッドサーバに送信し、
    前記既存のトラステッドサーバは、
    前記アテステーションサービスに自身の前記トラステッド実行環境の正当性を検証させ、
    前記アテステーションサービスによる検証結果と、前記追加されるトラステッドサーバから受信した前記検証結果とを照合して、前記追加されるトラステッドサーバの参加可否を決定すること、
    を特徴とするデータ管理方法。
  6. 分散台帳により管理しようとするデータの内容を、トラステッド実行環境を備えるトラステッドサーバに記録し、
    前記分散台帳には、前記データを暗号化した暗号データを記録し、
    前記トラステッドサーバで前記データの内容が更新された場合には、前記更新された内容を暗号化した前記暗号データを前記分散台帳に追加し、
    前記分散台帳に前記暗号データが追加された場合には、前記トラステッドサーバは、追加された前記暗号データを復号化して前記データの内容を更新し、
    前記暗号化は共通のグループ鍵を用いて行われ、
    前記トラステッドサーバはそれぞれ自身の秘密鍵を有しており、全ての前記トラステッドサーバの公開鍵が前記分散台帳に記録されており、
    前記トラステッドサーバは、同一の前記グループ鍵を算出するように、全ての前記公開鍵と、自身の前記秘密鍵とを用いてシードを計算し、前記シードに基づいてグループ鍵を計算すること、
    を特徴とするデータ管理方法。
  7. 分散台帳により管理しようとするデータの内容を、トラステッド実行環境を備えるトラステッドサーバに記録し、
    前記分散台帳には、前記データを暗号化した暗号データを記録し、
    前記トラステッドサーバで前記データの内容が更新された場合には、前記更新された内容を暗号化した前記暗号データを前記分散台帳に追加し、
    前記分散台帳に前記暗号データが追加された場合には、前記トラステッドサーバは、追加された前記暗号データを復号化して前記データの内容を更新し、
    前記トラステッドサーバは、前記分散台帳で管理されるブロックごとの全てのデータの第1のハッシュ値を計算して、前記第1のハッシュ値を前記分散台帳に記録し、前記データの内容が更新された場合には、更新前の前記第1のハッシュ値と更新後の全前記ブロックの内容との第2のハッシュ値を計算して、前記第2のハッシュ値を前記分散台帳に記録すること、
    を特徴とするデータ管理方法。

JP2020028802A 2020-02-21 2020-02-21 データ管理方法 Active JP6830635B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020028802A JP6830635B1 (ja) 2020-02-21 2020-02-21 データ管理方法
JP2021002705A JP2021136686A (ja) 2020-02-21 2021-01-12 データ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020028802A JP6830635B1 (ja) 2020-02-21 2020-02-21 データ管理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2021002705A Division JP2021136686A (ja) 2020-02-21 2021-01-12 データ管理方法

Publications (2)

Publication Number Publication Date
JP6830635B1 true JP6830635B1 (ja) 2021-02-17
JP2021136470A JP2021136470A (ja) 2021-09-13

Family

ID=74562362

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020028802A Active JP6830635B1 (ja) 2020-02-21 2020-02-21 データ管理方法
JP2021002705A Pending JP2021136686A (ja) 2020-02-21 2021-01-12 データ管理方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2021002705A Pending JP2021136686A (ja) 2020-02-21 2021-01-12 データ管理方法

Country Status (1)

Country Link
JP (2) JP6830635B1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018142948A1 (ja) * 2017-02-06 2018-08-09 株式会社日立製作所 信用度管理システムおよび信用度管理方法
WO2019120317A2 (en) * 2019-03-26 2019-06-27 Alibaba Group Holding Limited Program execution and data proof scheme using multiple key pair signatures
EP3522056A1 (en) * 2018-02-06 2019-08-07 Nokia Technologies Oy Distributed computing system for anonymized computation
CN110245943A (zh) * 2019-05-20 2019-09-17 阿里巴巴集团控股有限公司 基于判断条件的收据存储方法和节点
CN110580412A (zh) * 2019-11-08 2019-12-17 支付宝(杭州)信息技术有限公司 基于链代码的权限查询配置方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018142948A1 (ja) * 2017-02-06 2018-08-09 株式会社日立製作所 信用度管理システムおよび信用度管理方法
EP3522056A1 (en) * 2018-02-06 2019-08-07 Nokia Technologies Oy Distributed computing system for anonymized computation
WO2019120317A2 (en) * 2019-03-26 2019-06-27 Alibaba Group Holding Limited Program execution and data proof scheme using multiple key pair signatures
CN110245943A (zh) * 2019-05-20 2019-09-17 阿里巴巴集团控股有限公司 基于判断条件的收据存储方法和节点
CN110580412A (zh) * 2019-11-08 2019-12-17 支付宝(杭州)信息技术有限公司 基于链代码的权限查询配置方法及装置

Also Published As

Publication number Publication date
JP2021136470A (ja) 2021-09-13
JP2021136686A (ja) 2021-09-13

Similar Documents

Publication Publication Date Title
CN109361668B (zh) 一种数据可信传输方法
JP6528008B2 (ja) 秘密共有のための楕円曲線暗号化を利用したパーソナルデバイスセキュリティ
CN110214440B (zh) 计算系统,传送受保护数据的方法和可读存储介质
US9609024B2 (en) Method and system for policy based authentication
JP2020528224A (ja) 信頼できる実行環境におけるスマート契約動作のセキュアな実行
US7243237B2 (en) Secure communication with a keyboard or related device
CN110249336B (zh) 使用签名密钥对可信执行环境的寻址
US10498712B2 (en) Balancing public and personal security needs
US20060129847A1 (en) Methods and systems for providing a secure data distribution via public networks
JP2020506612A (ja) 暗号鍵を使用した信頼実行環境へのアドレシング
US11212095B2 (en) Allowing restricted external access to devices
AU2003202511A1 (en) Methods for authenticating potential members invited to join a group
WO2020050390A1 (ja) 権利者端末、利用者端末、権利者プログラム、利用者プログラム、コンテンツ利用システムおよびコンテンツ利用方法
CN110235134B (zh) 使用洁净室供应来寻址可信执行环境
KR20220030298A (ko) 참여 엔티티에 대한 네트워크 식별자를 사용하여 블록체인과 연관된 트랜잭션을 용이하게 하는 컴퓨터 구현 시스템 및 방법
US11398906B2 (en) Confirming receipt of audit records for audited use of a cryptographic key
US11640480B2 (en) Data message sharing
CN114270386A (zh) 用于同意架构的认证器应用
EP3836478A1 (en) Method and system of data encryption using cryptographic keys
JP6830635B1 (ja) データ管理方法
US8307098B1 (en) System, method, and program for managing a user key used to sign a message for a data processing system
Jang-Jaccard et al. Portable key management service for cloud storage
JP2022522555A (ja) セミトラステッドな中継者を使用したセキュアなメッセージ受け渡し
CA3042984C (en) Balancing public and personal security needs
He et al. EnShare: Sharing Files Securely and Efficiently in the Cloud using Enclave

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200228

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200325

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201126

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210112

R150 Certificate of patent or registration of utility model

Ref document number: 6830635

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250