JP2021090151A - ストレージシステムおよびストレージシステムのデータ保護方法 - Google Patents

ストレージシステムおよびストレージシステムのデータ保護方法 Download PDF

Info

Publication number
JP2021090151A
JP2021090151A JP2019219834A JP2019219834A JP2021090151A JP 2021090151 A JP2021090151 A JP 2021090151A JP 2019219834 A JP2019219834 A JP 2019219834A JP 2019219834 A JP2019219834 A JP 2019219834A JP 2021090151 A JP2021090151 A JP 2021090151A
Authority
JP
Japan
Prior art keywords
authentication code
encrypted data
storage
data
storage controller
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.)
Pending
Application number
JP2019219834A
Other languages
English (en)
Inventor
伸之 大崎
Nobuyuki Osaki
伸之 大崎
佐藤 元
Hajime Sato
元 佐藤
美緒子 森口
Mioko Moriguchi
美緒子 森口
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2019219834A priority Critical patent/JP2021090151A/ja
Priority to US17/007,007 priority patent/US20210176065A1/en
Publication of JP2021090151A publication Critical patent/JP2021090151A/ja
Pending legal-status Critical Current

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/32Cryptographic 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
    • H04L9/3226Cryptographic 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 using a predetermined code, e.g. password, passphrase or PIN
    • 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/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • 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
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/32Cryptographic 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
    • H04L9/3236Cryptographic 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 using cryptographic hash functions
    • H04L9/3242Cryptographic 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 using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】暗号処理にかかる負荷を低減しつつ、データの格納および通信の安全性を確保する。【解決手段】書み込み処理では、ストレージコントローラ13は、暗号鍵を用いて暗号化データを生成するとともに、認証鍵を用いてその暗号化データに基づいて認証コードを作成し、ストレージノード15Aは、ストレージコントローラ13から受信した認証コードを検証し、認証コードの検証に成功すると、暗号化データと認証コードを保存し、読み込み処理では、ストレージコントローラ13は、ストレージノード15Aから受信した認証コードを検証し、認証コードの検証に成功すると、暗号化データを復号し、その復号データをホスト11に応答する。【選択図】図1

Description

本発明は、暗号化データの認証が可能なストレージシステムおよびストレージシステムのデータ保護方法に関する。
フラッシュストレージ用のプロトコルであるNVMe(Non Volatile Memory express)をネットワークに拡張するNVMe over Fabricsが注目されている。
NVMe over Fabricsを用いてストレージコントローラからストレージノードに格納されるデータを保護するためには、ストレージノードに格納されるデータの暗号化(以下、格納データ暗号化と言う)だけでなく、ネットワーク上を通過するデータの暗号化(以下、通信データ暗号化と言う)が必要となる。
このとき、暗号処理をストレージコントローラとストレージノードで分担する方法として、以下の2つの方法がある。
1つ目は、ストレージコントローラで通信データ暗号化にてデータを暗号化し、その暗号化データをネットワークを介してストレージコントローラからストレージノードに送信し、通信データ暗号化にて暗号化されたデータをストレージノードで復号し、その復号化データをストレージコントローラで格納データ暗号化にて暗号化して格納する方法である。
2つ目は、ストレージコントローラで格納データ暗号化にてデータを暗号化し、その暗号化データをストレージコントローラで通信データ暗号化にて暗号化し、格納データ暗号化および通信データ暗号化で2重に暗号化された暗号化データをネットワークを介してストレージコントローラからストレージノードに送信し、2重に暗号化された暗号化データをストレージノードで通信データ復号化することにより、格納データ暗号化にて1重に暗号化されたデータを格納する方法である。
また、特許文献1には、暗号化部は、公開鍵により入力されたデータの暗号化を行うとともに、入力したセルのデータからハッシュデータの生成も行い、復号化部は、秘密鍵を用いて暗号化データの復号化を行うとともに、復号化データからハッシュデータを生成し、ハッシュデータが正しいかどうか確認することによりキーデータが正しいキーデータであるかどうかを確認する方法が開示されている。
特開2006−304215号公報
しかしながら、上述した1つ目の暗号化処理は、通信データ復号化および格納データ暗号化をストレージノードで実施する必要があり、ストレージノードの負荷が大きかった。上述した2つ目の暗号化処理は、格納データ暗号化および通信データ暗号化をストレージコントローラで実施する必要があり、ストレージコントローラの負荷が大きかった。
また、特許文献1には、暗号化に利用したキーデータが正しいものであるかを書き込み側が確認するためにハッシュデータを利用することは開示されているが、書き込まれた側が暗号化データを認証する方法については開示されていない。
本発明は、上記事情に鑑みなされたものであり、その目的は、暗号処理にかかる負荷を低減しつつ、データの格納および通信の安全性を確保することが可能なストレージシステムおよびストレージシステムのデータ保護方法を提供することにある。
上記目的を達成するため、第1の観点に係るストレージシステムは、認証鍵が割り当てられたコントローラとノードを備え、前記コントローラは、暗号鍵を用いてデータを暗号化した暗号化データを生成し、前記認証鍵を用いて前記暗号化データに基づいて認証コードを生成し、前記暗号化データおよび前記認証コードを前記ノードに送信し、前記ノードは、前記コントローラから送信された暗号化データおよび認証コードを受信し、前記暗号化データおよび前記認証コードを保存し、前記保存した暗号化データおよび認証コードを前記コントローラに送信し、前記コントローラは、前記ノードから送信された暗号化データおよび認証コードを受信し、前記ノードから送信された認証コードの検証結果に基づいて、前記暗号化データを復号する。
本発明によれば、暗号処理にかかる負荷を低減しつつ、データの格納および通信の安全性を確保することができる。
図1は、第1実施形態に係る暗号処理装置が適用されるストレージコントローラおよびストレージノードの構成を示すブロック図である。 図2は、図1のストレージコントローラで用いられるマッピングテーブルの一例を示す図である。 図3は、図1のストレージコントローラで用いられる暗号鍵管理テーブルの一例を示す図である。 図4は、図1のストレージコントローラで用いられる認証鍵対応関係テーブルの一例を示す図である。 図5は、図1のストレージコントローラで用いられる認証鍵対応関係テーブルのその他の例を示す図である。 図6は、図1のストレージコントローラで用いられる認証コードテーブルの一例を示す図である。 図7は、図1のストレージコントローラの書き込み処理を示すフローチャートである。 図8は、図1のストレージノードの書き込み処理を示すフローチャートである。 図9は、図1のストレージコントローラの読み込み処理を示すフローチャートである。 図10は、図1のストレージノードの読み込み処理を示すフローチャートである。 図11は、図1のストレージコントローラとストレージノードとの間でやりとりされる情報の一例を示す図である。 図12は、第2実施形態に係るストレージコントローラの書き込み処理を示すフローチャートである。 図13は、第2実施形態に係るストレージコントローラの読み込み処理を示すフローチャートである。 図14は、第2実施形態に係るストレージノードの書き込み処理を示すフローチャートである。 図15は、シーケンス番号が過去に利用されたものでないかの確認方法を示す図である。 図16は、第2実施形態に係るストレージノードの読み込み処理を示すフローチャートである。 図17は、第3実施形態に係るストレージコントローラの読み込み処理を示すフローチャートである。 図18は、第4実施形態に係るストレージコントローラの読み込み処理を示すフローチャートである。 図19は、第5実施形態に係るストレージコントローラの読み込み処理を示すフローチャートである。 図20は、第6実施形態に係るストレージノードの読み込み処理を示すフローチャートである。 図21は、第6実施形態に係るストレージコントローラの読み込み処理を示すフローチャートである。 図22は、第7実施形態に係る暗号処理装置が適用されるストレージコントローラおよびストレージノードの構成を示すブロック図である。 図23は、第8実施形態に係る暗号処理装置が適用されるストレージコントローラおよびストレージノードの構成を示すブロック図である。 図24は、第9実施形態に係る暗号処理装置が適用されるホストおよびストレージノードの構成を示すブロック図である。 図25は、第10実施形態に係る暗号処理装置が適用されるストレージコントローラおよびストレージノードの構成を示すブロック図である。 図26は、第11実施形態に係る暗号処理装置が適用されるストレージコントローラおよびストレージの構成を示すブロック図である。 図27は、図1のストレージコントローラのハードウェア構成例を示すブロック図である。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また、実施形態の中で説明されている諸要素およびその組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、第1実施形態に係る暗号処理装置が適用されるストレージコントローラおよびストレージノードの構成を示すブロック図である。
図1において、ホスト11は、通信ネットワーク12を介してストレージコントローラ13に接続され、ストレージコントローラ13は、通信ネットワーク14を介してストレージノード15A、15Bに接続されている。ストレージコントローラ13とストレージノード15A、15Bの間では、NVMe over Fabricsに基づいてデータ転送することができる。
ホスト11は、ストレージノード15A、15Bが提供する容量へのデータの書き込みおよびストレージノード15A、15Bが提供する容量からのデータの読み込みをストレージコントローラ13に指示する。ストレージコントローラ13は、通信ネットワーク12を介して論理ボリュームL1〜L4をホスト11に提供する。ストレージノード15A、15Bは、通信ネットワーク14を介して物理的な容量をストレージコントローラ13に提供する。
このとき、ストレージコントローラ13上の論理ボリュームL1〜L4は、ストレージノード15A、15BのボリュームD1〜D4と1対1に対応させることができる。ボリュームD1〜D4は、例えば、ハードディスク装置またはSSD(Solid State Drive)などの物理記憶デバイスである。なお、ストレージノード15A、15Bに示されるボリュームは、論理的なボリュームであってもよいし、物理的なメディア単位であってもよい。
そして、ストレージコントローラ13は、論理ボリュームL1〜L4をホスト11に公開し、ホスト11上のOS(Operating System)は、これらの論理ボリュームL1〜L4をマウントし、データのIOを行う。
ストレージコントローラ13は、ホスト11から指定された論理ボリュームL1〜L4について、ホスト11からのIOにより入力されるデータをストレージノード15A、15Bとの間で転送し、論理ボリュームL1〜L4に対応するストレージノード15A、15B上のボリュームD1〜D4に書き込みまたは読み込みを行う。
ここで、ストレージコントローラ13およびストレージノード15A、15Bを有するストレージシステムは、ストレージコントローラ13とストレージノード15A、15Bとの間で送受信される通信データを保護しつつ、ストレージノード15A、15Bに格納される格納データを保護するため、暗号処理装置を実装する。この暗号処理において、ストレージコントローラ13は、暗号化処理16A、復号化処理16Bおよび認証コード処理17を実行し、各ストレージノード15A、15Bは、認証コード処理18A、18Bおよび保存処理19A、19Bを実行する。
暗号化処理16Aおよび復号化処理16Bを実行するため、ストレージコントローラ13には、暗号鍵(Data Encryption Key:以下、DEKとも言う)が割り当てられる。認証コード処理17、18A、18Bを実行するため、ストレージコントローラ13および各ストレージノード15A、15Bには、認証鍵(Authentication Key:以下、AKとも言う)が割り当てられる。このとき、認証鍵は、ストレージノード15A、15Bごとに割り当ててもよいし、ボリュームD1〜D4ごとに割り当ててもよい。
暗号化処理16Aは、暗号鍵を用いてデータを暗号化した暗号化データを生成する。認証コード処理17、18A、18Bは、認証鍵を用いて暗号化データに基づいて認証コードを生成したり、その認証コードを検証したりする。復号化処理16Bは、認証鍵の検証結果に基づいて、暗号化データを復号する。保存処理19A、19Bは、認証鍵の検証結果に基づいて、暗号化データを保存する。
書み込み処理では、ストレージコントローラ13は、例えば、論理ボリュームL1に対するデータ書き込み要求をホスト11から受け取ると、そのデータの暗号化処理16Aを実行し、論理ボリュームL1に割り当てられた暗号鍵を用いて暗号化データを生成する。また、ストレージコントローラ13は、認証コード処理17を実行し、ストレージノード15Aに割り当てられた認証鍵を用いて、その暗号化データに基づいて認証コードを作成する。そして、ストレージコントローラ13は、論理ボリュームL1に対応するボリュームD1を図2のマッピングテーブル21から特定し、ボリュームD1に対してそれらの暗号化データと認証コードを通信ネットワーク14を介してストレージノード15Aに送信し、ストレージノード15Aに書き込む。
ストレージノード15Aは、暗号化データと認証コードをストレージコントローラ13から受信すると、認証コード処理18Aを実行し、その受信した認証コードを検証する。そして、ストレージノード15Aは、認証コードの検証に成功すると、保存処理19Aを実行し、暗号化データと認証コードをボリュームD1に格納する。
読み込み処理では、ストレージコントローラ13は、例えば、論理ボリュームL1に対するデータ読み込み要求をホスト11から受け取ると、論理ボリュームL1に対応するボリュームD1を図2のマッピングテーブル21から特定し、ボリュームD1に対するデータ読み込み要求をストレージノード15Aに送信する。ストレージコントローラ15Aは、ボリュームD1に対するデータ読み込み要求を受け付けると、該当する暗号化データと認証コードをボリュームD1から取り出し、通信ネットワーク14を介してストレージコントローラ13に送信する。
ストレージコントローラ13は、暗号化データと認証コードをストレージノード15Aから受信すると、認証コード処理17を実行し、その受信した認証コードを検証する。そして、ストレージコントローラ13は、認証コードの検証に成功すると、復号化処理16Bを実行し、論理ボリュームL1に割り当てられた暗号鍵を用いて暗号化データを復号し、その復号データをホスト11に応答する。
ここで、ストレージコントローラ13から送信されるデータを暗号化することにより、ストレージノード15A、15Bに保存されたデータの秘匿性を確保することが可能となるとともに、暗号化データとともに送受信される認証コードを検証することにより、TLDなどの通信データ暗号化方式を実施することなく、データ通信時の改ざんおよび成りすましを確認することができる。このため、ストレージコントローラ13とストレージノード15A、15Bとの間で転送されるデータを保護するために、ストレージコントローラ13およびストレージノード15A、15Bにおいて、通信データ暗号化および通信データ復号化を実施する必要がなくなり、ストレージコントローラ13およびストレージノード15A、15Bの暗号処理にかかる負荷を低減することができる。
例えば、ストレージコントローラ13は、IEEE p1619で規定されるAES−XTS 256などの格納データ暗号化方式を用いてデータを暗号化した後、暗号化データに対してチェックサムを生成し、このチェックサムから、予めストレージノード15A、15Bと共有している認証鍵を用いて認証コードを生成する。ストレージコントローラ13は、この認証コードを暗号化データとともにストレージノード15A、15Bに送信する。
認証コードと暗号化データを受信したストレージノード15A、15Bは、その暗号化データからチェックサムを生成し、予めストレージコントローラ13と共有している認証鍵を用いて認証コードを生成し、ストレージコントローラ13から受信した認証コードと一致するか検証する。ストレージノード15A、15Bは、認証コードの検証に成功すると、送信元の認証と、受信したデータの完全性を確認することができる。データは、通信時に格納データ暗号化方式にて暗号化され、秘匿が守られる。
また、ストレージノード15A、15Bは、認証コードの検証に成功した場合のみデータを保存する。このため、データの格納時の秘匿と完全性も保証でき、外部の別のホストまたはストレージコントローラからの不正書き込みを拒否することができる。
図2は、図1のストレージコントローラで用いられるマッピングテーブルの一例を示す図である。
図2において、マッピングテーブル21は、図1のストレージコントローラ13のボリュームとストレージノード15A、15Bのボリュームとの対応関係を示す。
マッピングテーブル21は、♯と、Storage Controller#と、Storage Controller Dev#と、Storage Node#と、Storage Node Dev#のエントリを格納する。♯は、エントリ番号を示す。Storage Controller#は、ストレージコントローラの識別情報を示す。Storage Controller Dev#は、ストレージコントローラが提供する論理ボリュームの識別情報を示す。Storage Node#は、ストレージノードの識別情報を示す。Storage Node Dev#は、ストレージノードが提供するボリュームの識別情報を示す。
図2のマッピングテーブル21では、図1のストレージコントローラ13にStorage Controller#=1が付与され、論理ボリュームL1〜L4にStorage Controller Dev#=1〜4がそれぞれ付与され、ストレージノード15A、15BにStorage Node#=1、2がそれぞれ付与され、ストレージノード15AのボリュームD1、D2にStorage Node Dev#=1、2がそれぞれ付与され、ストレージノード15BのボリュームD3、D4にStorage Node Dev#=1、2がそれぞれ付与されている例を示す。
このとき、ストレージコントローラ13は、マッピングテーブル21を参照することにより、ストレージコントローラ13の論理ボリュームL1、L2がそれぞれストレージノード15AのボリュームD1、D2にマッピングされ、ストレージコントローラ13の論理ボリュームL3、L4がそれぞれストレージノード15BのボリュームD3、D4にマッピングされていると判断することができる。このため、ストレージコントローラ13は、例えば、ホスト11から読み書き対象として論理ボリュームL1が指定されると、マッピングテーブル21を参照することにより、実際にはストレージコントローラ13のボリュームD1に対してデータを読み書きすることができる。
図3は、図1のストレージコントローラで用いられる暗号鍵管理テーブルの一例を示す図である。
図3において、暗号鍵管理テーブル22は、暗号化データの生成に用いられる暗号鍵を管理する。
暗号鍵管理テーブル22は、♯と、Storage Controller Dev#と、DEKのエントリを格納する。♯は、エントリ番号を示す。Storage Controller Dev#は、ストレージコントローラが提供する論理ボリュームの識別情報を示す。DEKは、暗号鍵の識別情報を示す。
図3の暗号鍵管理テーブル22では、図1の論理ボリュームL1〜L4にStorage Controller Dev#=1〜4がそれぞれ付与され、論理ボリュームL1〜L4に暗号鍵DEK1〜DEK4がそれぞれ割り当てられている例を示す。
このとき、ストレージコントローラ13は、暗号鍵管理テーブル22を参照することにより、論理ボリュームL1〜L4ごとに異なる暗号鍵を生成することができる。なお、ストレージコントローラ13は、初期設定時または構成変更等のタイミングで暗号鍵を生成してもよいし、外部の鍵管理サーバ(Key Management Server:以下、KMSとも言う)に暗号鍵を生成させ、鍵管理サーバから暗号鍵を受領してもよい。
図4は、図1のストレージコントローラで用いられる認証鍵対応関係テーブルの一例を示す図である。
図4において、認証鍵対応関係テーブル23は、認証コードの生成に用いられる認証鍵を管理する。図4では、ストレージノード単位に認証鍵を割り当てる例を示した。
認証鍵対応関係テーブル23は、♯と、Storage Node#と、Authentication Keyのエントリを格納する。♯は、エントリ番号を示す。Storage Node#は、ストレージノードの識別情報を示す。Authentication Keyは、認証鍵の識別情報を示す。
ストレージコントローラが複数から構成され、互いに冗長構成をとる場合は、これらのストレージコントローラ同士で認証鍵を共有する。このとき、認証鍵を共有するストレージコントローラ群が、ストレージノードにデータを書き込むことができる。ストレージノードは、自分が利用する認証鍵を各々管理する。
認証鍵は、手動で管理UI(User Interface)から、ストレージコントローラ13およびストレージノード15A、15Bに設定してもよいし、手動で設定したシークレットキーから派生させてもよいし、Diffie Hellmanのような鍵共有アルゴリズムで共有してもよい。
また、外部のKMSに認証鍵を作成させ、ストレージコントローラ13およびストレージノード15A、15Bは、KMSから必要な認証鍵を受領してもよい。その際、その対応関係に属するストレージコントローラ13またはストレージノード15A、15Bでなければ対応する認証鍵が入手できないよう、KMIP(Key Management Interoperability Protocol)プロトコルなどの規定に準じてアクセス制御を施す。
例えば、ストレージコントローラ13は、KMSに必要数の認証鍵の作成を指示し、KMSから認証鍵とともに認証鍵のUUIDを取得するとともに、ストレージコントローラ13とストレージノード15A、15B間でTLSなどで保護された管理インタフェイスを経由し、該当する認証鍵のUUIDをストレージノード15A、15Bに提供する。そして、ストレージノード15A、15Bは、TLS(Transport Layer Security)などで保護されたKMSとの間の通信を通じて、UUID(Universally Unique Identifier)を指定して認証鍵を取得する。これにより、ストレージコントローラ13とストレージノード15A、15Bで認証鍵を共有することができる。
ストレージコントローラ13は、認証鍵対応関係テーブル23を参照することにより、ストレージノード15Aの論理ボリュームL1、L2に書き込まれたデータの認証鍵がAK1あることを判定し、AK1で認証コードを作成し、ストレージノード15AのボリュームD1、D2に書き込みを実施し、ストレージノード15Aは、予め保持するAK1を用いて認証コードを検証し、認証コードの検証に成功したら、論理ボリュームL1、L2に書き込まれたデータをボリュームD1、D2にそれぞれ保存することができる。
なお、認証鍵を割り当てる単位は、図4に示すように、必ずしもストレージノード15A、15B単位である必要はなく、様々な単位で設定できる。例えば、ストレージノード15A、15Bのデバイス単位に設定することもできる。
図5は、図1のストレージコントローラで用いられる認証鍵対応関係テーブルのその他の例を示す図である。図5では、ストレージノードのデバイス単位に認証鍵を割り当てる例を示した。
図5において、認証鍵対応関係テーブル24は、♯と、Storage Node#と、Storage Node Dev#と、Authentication Keyのエントリを格納する。♯は、エントリ番号を示す。Storage Node#は、ストレージノードの識別情報を示す。Storage Node Dev#は、ストレージノードが提供するボリュームの識別情報を示す。Authentication Keyは、認証鍵の識別情報を示す。
ストレージコントローラ13は、認証鍵対応関係テーブル24を参照することにより、ストレージノード15Aの論理ボリュームL1に書き込まれたデータの認証鍵がAK1あることを判定し、AK1で認証コードを作成し、ストレージノード15AのボリュームD1に書き込みを実施し、ストレージノード15Aは、予め保持し、ボリュームD1に割り当てられているAK1を用いて認証コードを検証し、認証コードの検証に成功したら、論理ボリュームL1に書き込まれたデータをボリュームD1に保存することができる。
図6は、図1のストレージコントローラで用いられる認証コードテーブルの一例を示す図である。
図6において、認証コードテーブル25は、各データに関する最新の認証コードを管理する。
認証コードテーブル25は、♯と、Storage Controller Dev#と、Storage Node#と、Storage Node Dev#と、認証コードLBA1〜LBA4・・のエントリを格納する。♯は、エントリ番号を示す。Storage Controller Dev#は、ストレージコントローラが提供する論理ボリュームの識別情報を示す。Storage Node#は、ストレージノードの識別情報を示す。Storage Node Dev#は、ストレージノードが提供するボリュームの識別情報を示す。認証コードLBA1〜LBA4・・は、各データに関する最新の認証コードのLBA(Logical Block Addressing)を示す。
ストレージコントローラ13は、認証コードテーブル25を保持することで、ストレージノード15A、15Bから読み出したデータが最新であることを確認することができ、ストレージコントローラ13でデータ読み出し時に認証コードを作り直さなくても、ここの認証コードに登録される認証コードと比較することにより、繰り返し攻撃からデータを保護することができる。なお、複数のストレージコントローラが冗長構成をとる場合は、認証コードテーブル25の情報もストレージコントローラ間で共有される。
図7は、図1のストレージコントローラの書き込み処理を示すフローチャートである。
図7において、ストレージコントローラ13は、ホスト11からデータの書き込みを受け付けると(C11)、ストレージコントローラ13に割り当てられた暗号鍵を用いてデータを暗号化する(C12)。
次に、ストレージコントローラ13と各ストレージノード15A、15Bとで共有する認証鍵を用いて認証コードを作成し(C13)、これらの暗号化データと認証コードをストレージノード15A、15Bに書き込む(C14)。データ暗号化は、例えば、IEEE p1619で規定されるAES−XTS 256などの方式により実施する。認証コードには、暗号化データの書き込み元が、このストレージコントローラ13であることが検証できる情報が含まれる。
図8は、図1のストレージノードの書き込み処理を示すフローチャートである。
図8において、各ストレージノード15A、15Bは、暗号化データと認証コードの書き込みをストレージコントローラ13から受け付けると(N11)、認証コードの検証を行う(N12)。
この認証コードの検証では、各ストレージノード15A、15Bは、ストレージコントローラ13と共有する認証鍵を用いて、ストレージコントローラ13から受信した暗号化データに基づいて認証コードを生成する。そして、各ストレージノード15A、15Bは、ストレージコントローラ13から受信した認証コードと、各ストレージノード15A、15Bで生成した認証コードが一致するかどうか確認する。
各ストレージノード15A、15Bは、認証コードの検証の結果、認証コードに含まれる情報から適切な書き込み元であることが検証できない場合は検証に失敗し(N13のNo)、書き込み処理に失敗し(N14)、その暗号化データは保存しない。各ストレージノード15A、15Bは、認証コードの検証の結果、正しい書き込み元であることの検証に成功したら(N13のYes)、暗号化データと認証コードを保存する(N15)。
図9は、図1のストレージコントローラの読み込み処理を示すフローチャートである。
図9において、ストレージコントローラ13は、ホスト11からの読み込み要求を受け付けると(C21)、ストレージノード15A、15Bから暗号化データと認証コードを読み込み(C22)、認証コードを検証する(C23)。
この認証コードの検証では、ストレージコントローラ13は、ストレージノード15A、15Bと共有する認証鍵を用いて、ストレージノード15A、15Bから受信した暗号化データに基づいて認証コードを生成する。そして、ストレージコントローラ13は、ストレージノード15A、15Bから受信した認証コードと、ストレージコントローラ13で生成した認証コードが一致するかどうか確認する。
ストレージコントローラ13は、認証コードの検証に失敗した場合は(C24のNo)、読み込み処理は失敗する(C25)。ストレージコントローラ13は、認証コードの検証に成功すると(C24のYes)、ストレージノード15A、15Bから受信した暗号化データを復号化し(C26)、ホスト11に応答する(C27)。
図10は、図1のストレージノードの読み込み処理を示すフローチャートである。
図10において、各ストレージノード15A、15Bは、暗号化データと認証コードの読み込みをストレージコントローラ13から要求されると(N21)、暗号化データと認証コードをストレージコントローラ13に応答する(N22)。
ここで、データを暗号化することにより、ストレージコントローラ13とストレージノード15A、15Bとの間のデータ通信時にデータを保護することができる。また、ストレージノードド15A、15B内に格納されているデータは暗号化されているため、不正な読み出しによる漏洩も防ぐことができる。
認証コードを付与することにより、正しいストレージコントローラ13以外からのストレージノード15A、15Bへの書き込みを防ぐことができる。そのため、ストレージノード15A、15B内に格納されるデータの不正な破壊も防ぐことができる。さらに、ストレージコントローラ13がストレージノード15A、15Bから読み込むデータが改ざんされたデータではないことを確認することができる。
この結果、ストレージコントローラ13とストレージノード15A、15Bとの間のデータ通信において、FC−SP2およびTLSなどで代表される通信データ暗号化によりデータを暗号化することなく、送信元の成りすましおよびデータの改ざんからデータを保護することができ、暗号処理にかかる負荷を軽減することができる。
図11は、図1のストレージコントローラとストレージノードとの間でやりとりされる情報の一例を示す図である。
図11において、ストレージコントローラ13と各ストレージノード15A、15Bとの間では、例えば、512バイト単位の暗号化データと、2バイトの認証コードと、6バイトのシーケンス番号とを同時に送受信することができる。シーケンス番号は、暗号化データの送信の通し番号である。
このとき、各ストレージノード15A、15B内のデバイスには、これらのデータを連結した状態で保存してもよいし、認証コードとシーケンス番号をLBAに対応付けて、別領域に保存するようにしてもよい。
それぞれのデバイスに、暗号化データ、認証コードおよびシーケンス番号を連結するなどして格納する場合、各データをそれぞれのデバイスに格納するようにしてもよい。暗号化データを保存する専用デバイスと、認証コードおよびシーケンス番号などのメタ情報を格納するデバイスに分けて格納するようにしてもよい。
図12は、第2実施形態に係るストレージコントローラの書き込み処理を示すフローチャートである。図12では、図7の処理の詳細処理の一例を示す。
図12において、ストレージコントローラ13は、ホスト11からデータの書き込みを受け付けると(C31)、どのストレージノードのどのアドレスに書き込みするかを書き込みアドレスから判定する(C32)。ストレージコントローラ13は、図2のマッピング情報に基づいて、この判定処理を行うことができる。
例えば、図1の構成では、ストレージコントローラ13がホスト11に開示している論理デバイス1つと、この論理デバイスに書き込まれたデータを書き込むストレージノード15A、15B上のデバイス1つが1対1で対応付けられている。このため、ストレージコントローラ13は、図2のマッピングテーブル21を参照することにより、書き込むストレージノード15A、15Bとデバイスを判定することができる。ストレージコントローラ13は、ホスト11から書き込みを指示されたLBAを用い、そのストレージノード15A、15BのデバイスのLBAに書き込みを行う。
次に、ストレージコントローラ13は、書き込み要求されたデータを処理するDEKとAKを取得する(C33)。ストレージコントローラ13は、図3または図4の情報を管理することでDEKとAKを取得可能である。
次に、ストレージコントローラ13は、DEKを用いてデータを暗号化する(C34)。ここでは、AES−XTSを利用してデータを暗号化する例を示している。AES−XTSでは、LBAを入力値として使うため、同じデータであってもアドレスが異なれば、異なる暗号化データが生成される。
次に、ストレージコントローラ13は、シーケンス番号を1だけ繰り上げる(C35)。シーケンス番号は、繰り返し攻撃を防ぐために用いられる。シーケンス番号は、ストレージコントローラ単位でインクリメントする方法、ストレージコントローラの論理デバイスとストレージノードのデバイスの対の単位でインクリメントする方法など、いくつかの単位で設定する方法があるが、ここでは特記しない場合、ストレージコントローラの論理デバイスとストレージノードのデバイスの対の単位でインクリメントする方法を想定する。
なお、シーケンス番号の代わりに乱数を毎回生成してもよいし、長期に渡る一意性を保証するために、時刻などの情報とシーケンス番号の組み合わせをシーケンス番号の代わりに利用してもよい。
次に、暗号化データとシーケンス番号を連結したデータを作成し、AKを鍵とし、その連結したデータをメッセージとしてHMAC(Hash based Message Authentication Code)処理を行う(C36)。このとき、このメッセージの先頭2バイトを認証コードとして利用することができる。
次に、ストレージコントローラ13は、この認証コードをLBAと対応付けてストレージコントローラ13内に保存する(C37)。このとき、該当するLBAの最新の認証コードが図6の認証コードテーブル25に上書きされる。
次に、ストレージコントローラ13は、認証コードおよび平文のシーケンス番号とともに、暗号化データをストレージノード15A、15Bに書き込む(C38)。
図13は、第2実施形態に係るストレージコントローラの読み込み処理を示すフローチャートである。図13では、図9の処理の詳細処理の一例を示す。
図13において、ストレージコントローラ13は、ホスト11からLBAとともにデータ読み込み要求を受け付けると(C41)、該当するストレージノード15A、15BのLBAから、暗号化データと、その暗号化データに関連付けられた認証コードおよびシーケンス番号を読み込み(C42)、該当するデータを処理するDEKおよびAKを取得する(C43)。
次に、ストレージコントローラ13は、図9のC23の認証コードの検証として、2つの検証を行う。1つ目は、ストレージコントローラ13は、ストレージノード15A、15Bから読み込んだ認証コードが、図6の該当するLBAに保持している認証コードと一致しているかを確認する(C44)。これにより、過去に正しくストレージコントローラ13がストレージノード15A、15Bに書き込んだデータであっても、最新でないデータの読み込みを防止することができる。
ストレージコントローラ13は、認証コードが一致しない場合は(C45のNo)、本データの読み込み処理を失敗で終了する(C46)。ストレージコントローラ13は、認証コードが一致すれば(C45のYes)、2つ目の検証として、図12の処理で認証コードを生成したのと同じ方法で認証コードを生成し、ストレージノード15A、15Bから取得した認証コードと比較する(C47)。ストレージコントローラ13は、これらの認証コードが一致しない場合は(C48のNo)、本データの読み込み処理を失敗で終了する(C46)。ストレージコントローラ13は、これらの認証コードが一致すれば(C48のYes)、ストレージノード15A、15Bから受信した暗号化データを復号化し(C49)、ホスト11に応答する(C50)。
図14は、第2実施形態に係るストレージノードの書き込み処理を示すフローチャートである。図14では、図8の処理の詳細処理の一例を示す。
図14において、ストレージノード15A、15Bは、認証コードおよび平文のシーケンス番号とともに、暗号化データをストレージコントローラ13から受信すると(N31)、シーケンス番号が過去に利用されたものでないか確認する(N32)。ストレージノード15A、15Bは、シーケンス番号が過去に利用済みかどうかを判定するために、過去に受信したシーケンス番号を記憶する。シーケンス番号が過去に利用済みの番号であれば(N33のYes)、ストレージノード15A、15Bは、本データの書き込み処理を失敗で終了する(N38)。
一方、シーケンス番号が過去に利用済みではない場合(N33のNo)、ストレージノード15A、15Bは、図5の認証鍵対応関係テーブル24を参照し、N31で受信したデータを処理するAKを取得する(N34)。
次に、ストレージノード15A、15Bは、暗号化データとシーケンス番号から、図12のC36の処理と同じ方式によりデータを連結し、AKを鍵としてHMAC処理を行う(N35)。そして、ストレージノード15A、15Bは、HMAC処理で生成した先頭2バイトの情報を、ストレージコントローラ13から受信した認証コードと比較する(N36)。ストレージノード15A、15Bは、これらの認証コードが一致しない場合(N37のNo)、本データの書き込み処理を失敗で終了する(N38)。ストレージノード15A、15Bは、これらの認証コードが一致すれば(N37のYes)、暗号化データを指定アドレスに保存し、認証コードとシーケンス番号を予め規定されたアドレスに保存する(N39)。
図15は、シーケンス番号が過去に利用されたものでないかの確認方法を示す図である。
図15において、ストレージノード15A、15Bは、シーケンス番号が過去に利用済みかどうかを判定するため、受領済シーケンス番号リスト131〜133を管理する。
受領済シーケンス番号リスト131は、受領したデータに含まれるシーケンス番号が、未受領と判断された場合に、昇順に追加されていく状態を示す。この例では、直近のシーケンス番号101〜103を登録したところを示す。各受領済シーケンス番号リスト131〜133の最後には、NULLが記載される。このNULLは、各受領済シーケンス番号リスト131〜133の最後の判定に用いられる。
このとき、これら3つのシーケンス番号101〜103は連続するため、過去に利用されたものであるかどうかを示すために、シーケンス番号103のみを残し、シーケンス番号101、102は削除してよい。ストレージノード15A、15Bは、シーケンス番号103の情報から、シーケンス番号103以下のシーケンス番号は受領済と確認することができる。
通信が欠落せず、送信側が発行した順番通りに受信側が受信する場合は、ストレージノード15A、15Bは、最後のシーケンス番号を保持するだけで、過去に利用されたシーケンス番号であるか判断可能である。
受領シーケンス番号リスト132は、100番までのシーケンス番号を受領した後、シーケンス番号101〜103、105、110を受領した状態を示す。この際、シーケンス番号101〜103は連番のため、シーケンス番号101、102は受領シーケンス番号リスト132から削除することができ、シーケンス番号103、105、110のみを受領シーケンス番号リスト133に保持すればよい。新たに受領したシーケンス番号は、先頭の103以下であるか、それ以外のシーケンス番号(ここでは105、110)に一致している場合、受領済と判断され、そうでないものは未受領と判断される。
処理を一定時間継続すると、受領シーケンス番号が桁溢れし、0からシーケンス番号を振りなおす必要がある場合がある。このようなケースで過去のシーケンス番号が不正に利用されないよう、十分長い桁を使うなどを工夫するのは一般的なシーケンス番号の利用と同様である。また、一定時間継続すると、受領シーケンス番号を格納するメモリに収まらなくなる可能性がある。この場合、受領シーケンス番号を一部破棄し、破棄した最大のシーケンス番号以下のシーケンス番号を受領済と判定し、受け付けないなどの処理が必要となる。
なお、ストレージノード15A、15Bは、ストレージコントローラ13から受信した暗号化データを書き込む際、暗号化データと、認証コードと、シーケンス番号を別メッセージで書き込んでもよい。例えば、ストレージノード15A、15Bは、認証コードとシーケンス番号が512バイトの倍数になるまで書き込みを待ち、512バイトの倍数になったらまとめて書き込むようにしてもよい。
その場合、ストレージノード15A、15Bが書き込みデータを検証して書き込むのは、該当する暗号化データの認証コードとシーケンス番号を受信した以降になる。このとき、ストレージノード15A、15Bは、あらかじめ定められた一定時間、認証コードとシーケンス番号を受信できない場合に、ストレージノード15A、15Bがこれ以上処理を継続しないことを示す信号をストレージコントローラ13に応答し、ストレージコントローラ13がこの信号を受信すると、それ以上書き込みを継続しないことで、データが損失することを防ぐことができる。
図16は、第2実施形態に係るストレージノードの読み込み処理を示すフローチャートである。図16では、図10の処理の詳細処理の一例を示す。
図16において、ストレージノード15A、15Bは、ストレージコントローラ13から認証コードおよびシーケンス番号とともに、暗号化データの読み込みの要求を受け付けると(N41)、認証コード、シーケンス番号および暗号化データをストレージコントローラ13に応答する(N42)。
なお、図16の例では、ストレージコントローラ13から認証コードおよびシーケンス番号とともに、暗号化データの読み込みの要求を受け付ける例を示したが、ストレージノード15A、15Bは、暗号化データと、この暗号化データに対応する認証コードおよびシーケンス番号を対応付けて管理し、ストレージコントローラ13が暗号化データの読み込みのみを要求した際に、認証コードおよびシーケンス番号を暗号化データとともにストレージコントローラ13に応答するようにしてもよい。
図13のストレージコントローラの読み込み処理では、図9のC23の認証コードの検証として、2つの検証を行う方法について説明した。しかし、図12のストレージコントローラの書き込み処理で、ストレージノード15A、15B上のデータを不正に破壊および改ざんすることを防ぐことができているという前提があり、データ読み取りの際は、上位アプリケーションがデータの破壊・改ざんを検出することができ、再読み込みなどができる場合がある。このような場合には、図13の2つの検証の一部またはすべてを省略するようにしてもよい。
図17は、第3実施形態に係るストレージコントローラの読み込み処理を示すフローチャートである。なお、図17では、図13の2つの検証の両方を省略した例を示す。
図17において、ストレージコントローラ13は、ホスト11からの読み込み要求を受け付けると(C61)、ストレージノード15A、15Bから暗号化データを読み込む(C62)。
次に、ストレージコントローラ13は、ストレージノード15A、15Bから受信した暗号化データを処理するDEKを取得し(C63)、そのDEKを用いて暗号化データを復号化し(C64)、ホスト11に応答する(C65)。
図18は、第4実施形態に係るストレージコントローラの読み込み処理を示すフローチャートである。なお、図18では、図13の2つの検証のうち2つ目を省略した例を示す。
図18において、ストレージコントローラ13は、ホスト11からデータ読み込み要求を受け付けると(C71)、ストレージノード15A、15Bから、暗号化データと、その暗号化データに関連付けられた認証コードを読み込み(C72)、該当するデータを処理するDEKを取得する(C73)。
次に、ストレージコントローラ13は、ストレージノード15A、15Bから読み込んだ認証コードが、ストレージコントローラ13が保持している認証コードと一致しているかを確認する(C74)。
ストレージコントローラ13は、これらの認証コードが一致しない場合は(C75のNo)、本データの読み込み処理を失敗で終了する(C76)。ストレージコントローラ13は、認証コードが一致すれば(C75のYes)、ストレージノード15A、15Bから受信した暗号化データを復号化し(C77)、ホスト11に応答する(C78)。
図19は、第5実施形態に係るストレージコントローラの読み込み処理を示すフローチャートである。なお、図19では、図13の2つの検証のうち1つ目を省略した例を示す。
図19において、ストレージコントローラ13は、ホスト11からデータ読み込み要求を受け付けると(C81)、ストレージノード15A、15Bから、暗号化データと、その暗号化データに関連付けられた認証コードおよびシーケンス番号を読み込み(C82)、該当するデータを処理するDEKおよびAKを取得する(C83)。
次に、ストレージコントローラ13は、図12の処理で認証コードを生成したのと同じ方法で認証コードを生成し、ストレージノード15A、15Bから取得した認証コードと比較する(C84)。ストレージコントローラ13は、これらの認証コードが一致しない場合は(C85のNo)、本データの読み込み処理を失敗で終了する(C86)。ストレージコントローラ13は、これらの認証コードが一致すれば(C85のYes)、ストレージノード15A、15Bから受信した暗号化データを復号化し(C87)、ホスト11に応答する(C88)。
図13の読み込み処理では、ストレージコントローラ13は、認証コードをストレージコントローラ13内に保持し、読み込み時に認証コードを比較することで最新のデータであることを検証し、過去のデータを用いた繰り返し攻撃を防いでいる。
過去のデータを用いた繰り返し攻撃を防ぐために、ストレージノード15A、15Bは、ストレージノード15A、15Bで生成したシーケンス番号を用いて、図12の方法と同様の方式で新しい認証コードを生成し、この新しい認証コードをストレージコントローラ13が検証するようにしてもよい。
図20は、第6実施形態に係るストレージノードの読み込み処理を示すフローチャートである。なお、図12では、ストレージコントローラがシーケンス番号を管理する方法を示したが、図20では、ストレージノードがシーケンス番号を管理する方法を示す。
図20において、ストレージノード15A、15Bは、ストレージコントローラ13から、認証コードおよびシーケンス番号とともに、暗号化データの読み込みを受け付ける(N51)。次に、ストレージノード15A、15Bは、シーケンス番号を1だけ繰り上げる(N52)。
次に、ストレージノード15A、15Bは、AKを鍵とし、暗号化データとシーケンス番号を連結したデータをメッセージとしてHMAC処理を行う(N53)。次に、ストレージノード15A、15Bは、このメッセージの先頭2バイトを認証コードとして利用し、この認証コードを書き込みアドレスと対応付けてストレージノード15A、15B内に保存する(N54)。
次に、ストレージノード15A、15Bは、認証コードおよびシーケンス番号とともに、暗号化データをストレージコントローラ13に応答する(N55)。
図21は、第6実施形態に係るストレージコントローラの読み込み処理を示すフローチャートである。なお、図13では、ストレージコントローラがシーケンス番号を管理する方法を示したが、図21では、ストレージノードがシーケンス番号を管理する方法を示す。
図21において、ストレージコントローラ13は、ホスト11からデータ読み込み要求を受け付けると(C91)、ストレージノード15A、15Bから、認証コードおよびシーケンス番号とともに、暗号化データを読み込む(C92)。
次に、ストレージコントローラ13は、ストレージノード15A、15Bから読み込んだシーケンス番号が、過去に利用されたシーケンス番号と一致しているかを確認する(C93)。ストレージコントローラ13は、シーケンス番号が過去に利用済みかどうかを判定するために、過去に受信したシーケンス番号を記憶する。
ストレージコントローラ13は、ストレージノード15A、15Bから読み込んだシーケンス番号が利用済みの場合は(C94のYes)、本データの読み込み処理を失敗で終了する(C98)。ストレージコントローラ13は、ストレージノード15A、15Bから読み込んだシーケンス番号が利用済みでない場合は(C94のNo)、、該当するデータを処理するDEKおよびAKを取得する(C95)。
次に、ストレージコントローラ13は、暗号化データとシーケンス番号から、図12のC36の処理と同じ方式によりデータを連結し、AKを鍵としてHMAC処理を行う。そして、ストレージコントローラ13は、HMAC処理で生成した先頭2バイトの情報を、ストレージノード15A、15Bから受信した認証コードと比較する(N96)。
ストレージコントローラ13は、これらの認証コードが一致しない場合は(C97のNo)、本データの読み込み処理を失敗で終了する(C98)。ストレージコントローラ13は、これらの認証コードが一致すれば(C97のYes)、ストレージノード15A、15Bから受信した暗号化データを復号化し(C99)、ホスト11に応答する(C100)。
図22は、第7実施形態に係る暗号処理装置が適用されるストレージコントローラおよびストレージノードの構成を示すブロック図である。
図22において、このストレージシステムでは、図1のストレージコントローラ13の代わりにストレージコントローラ33が設けられている。
ストレージコントローラ33は、論理ボリュームL1〜L3をプールP1を介して管理し、そのプールP1のデータ領域の単位が、1つ以上のストレージノード15A、15Bの複数のボリュームD1〜D4に分散配置されている。このとき、ストレージコントローラ33は、ボリュームD1〜D4に対してプールボリュームV1〜V4をそれぞれ生成し、プールボリュームV1〜V4をプールP1に一元化する。そして、ストレージコントローラ33は、プールP1から論理ボリュームL1〜L4を切り出し、ホスト11に提供する。
ストレージコントローラ33は、プールP1を介して論理ボリュームL1〜L3を管理する方法以外は、ストレージコントローラ13と同様の暗号化処理16A、復号化処理16Bおよび認証コード処理17を実行する。
図23は、第8実施形態に係る暗号処理装置が適用されるストレージコントローラおよびストレージノードの構成を示すブロック図である。
図23において、複数のストレージコントローラ13A〜13C・・が、ネットワーク14を介して複数のストレージノード15A〜15C・・に接続されている。各ストレージコントローラ13A〜13C・・は、図1のストレージコントローラ13と同様の暗号化処理16A、復号化処理16Bおよび認証コード処理17を実行する。
図24は、第9実施形態に係る暗号処理装置が適用されるホストおよびストレージノードの構成を示すブロック図である。
図24において、複数のホスト11A〜11C・・が、ネットワーク12を介して複数のストレージノード15A〜15C・・に接続されている。各ホスト11A〜11C・・は、図1のホスト11と同様の処理を実行するとともに、ストレージコントローラ13と同様の機能を実装し、これらと同様の処理を実行する。
これにより、各ホスト11A〜11C・・が、ストレージコントローラを介在させることなく、ストレージノード15A〜15C・・に対してデータの読み書きを実施する場合においても、暗号処理にかかる負荷を低減しつつ、データの格納および通信の安全性を確保することができる。
図25は、第10実施形態に係る暗号処理装置が適用されるストレージコントローラおよびストレージノードの構成を示すブロック図である。
図25において、ホスト11は、ネットワーク12を介して複数のストレージコントローラ13A〜13C・・に接続され、複数のストレージコントローラ13A〜13C・・は、ネットワーク14Bを介して複数のストレージノード15A〜15C・・に接続されている。
また、複数のストレージコントローラ13A〜13C・・および複数のストレージノード15A〜15C・・は、ネットワーク14Aを介して管理インタフェイス19およびKMS20に接続されている。
KMS20は、DEKおよびAKを管理し、ネットワーク14Aを介し、DEKをストレージコントローラ13A〜13C・・に提供したり、AKをストレージコントローラ13A〜13C・・およびストレージノード15A〜15C・・に提供したりする。KMS20と各ストレージコントローラ13A〜13C・・間およびKMS20と各ストレージノード15A〜15C・・間は、TLSなどの通信セキュリティ技術を活用したKMIPプロトコル等により接続される。KMS20は、ストレージコントローラ13A〜13C・・とストレージノード15A〜15C・・間のネットワーク14A上に接続されていてもよいし、データネットワークとは別のネットワークで接続されていてもよい。
管理インタフェイス19は、GUI(Graphical User Interface)またはCLI(Command Line Interface)をユーザに提供し、DEKおよびAKの割り当てなどを管理する。管理インタフェイス19での不正を防止するため、管理インタフェイス19もTLSなどの通信セキュリティで保護されたネットワークから、ボリュームの削除などの管理処理を実行する。
上述した実施形態では、ストレージコントローラ13は、認証コード処理18A、18Bを実装するストレージノード15A、15Bにデータの読み書きを実施する方法について説明したが、単機能のストレージにデータを読み書きする場合においても、データ漏洩を防止し、データ改ざんを検知することができる。
図26は、第11実施形態に係る暗号処理装置が適用されるストレージコントローラおよびストレージの構成を示すブロック図である。
図26において、図1のストレージノード15A、15Bの代わりにクラウド31がネットワーク14に接続されている。クラウド31は、ボリュームD11〜D14をストレージコントローラ13に提供する。
ストレージコントローラ13は、ホスト11からデータの書き込みを受け付けると、ストレージコントローラ13に割り当てられた暗号鍵を用いてデータを暗号化する。次に、ストレージコントローラ13は、ストレージコントローラ13に割り当てられた認証鍵を用いて認証コードを作成し、これらの暗号化データと認証コードをボリュームD11〜D14に書き込む。ボリュームD11〜D14は、認証コードの検証を実行することなく、ストレージコントローラ13から受信した暗号化データと認証コードを保存する。
ストレージコントローラ13は、ホスト11からの読み込み要求を受け付けると、ボリュームD11〜D14から暗号化データと認証コードを読み込み、認証コードを検証する。そして、ストレージコントローラ13は、認証コードの検証に成功すると、ボリュームD11〜D14から受信した暗号化データを復号化し、ホスト11に応答する。これにより、ストレージコントローラ13は、単機能のボリュームD11〜D14にデータを読み書きする場合においても、データ漏洩を防止し、データ改ざんを検知することができる。
なお、上述した実施形態では、認証コードの生成にHMACを利用する方法について説明したが、認証コードが生成できれば別のアルゴリズムを利用してもよい。また、上述した実施形態では、2バイトの認証コードを作成しているが、2バイトである必要はない。また、セキュリティリスク次第では、図8のN15で認証コードを保存しないようにしてもよいし、図9のC23で認証コードを検証しないようにしてもよい。
また、上述した実施形態では、DEKとAKを分けることで、ストレージノードでのデータ漏洩を防ぐ方式としているが、ストレージノードが十分信頼できる環境で運用される場合は、DEKとAKを分けなくてよい。この場合、HMACではなく、鍵を利用しないハッシュ関数またはCRC(Cyclic Redundancy Check)などの方式を用い、暗号前のデータにシーケンス番号を連結したもの対してチェックサムを生成する。この場合AKは使わない。
ここで説明されている暗号化・復号化・認証処理はIOだけではなく、コマンドの認証にも利用できる。
図27は、図1のストレージコントローラのハードウェア構成例を示すブロック図である。
図27において、ストレージコントローラ13は、プロセッサ101、通信制御デバイス102、通信インタフェイス103、主記憶デバイス104、補助記憶デバイス105および入出力インタフェイス107を備える。プロセッサ101、通信制御デバイス102、通信インタフェイス103、主記憶デバイス104、補助記憶デバイス105および入出力インタフェイス107は、内部バス106を介して相互に接続されている。主記憶デバイス104および補助記憶デバイス105は、プロセッサ101からアクセス可能である。
また、ストレージコントローラ13の外部には、入力装置120および出力装置121が設けられている。入力装置120および出力装置121は、入出力インタフェイス107を介して内部バス106に接続されている。入力装置120は、例えば、キーボード、マウス、タッチパネル、カードリーダ、音声入力装置等である。出力装置121は、例えば、画面表示装置(液晶モニタ、有機EL(Electro Luminescence)ディスプレイ、グラフィックカード等)、音声出力装置(スピーカ等)、印字装置等である。
プロセッサ101は、ストレージコントローラ13全体の動作制御を司るハードウェアである。プロセッサ101は、CPU(Central Processing Unit)であってもよいし、GPU(Graphics Processing Unit)であってもよい。プロセッサ101は、シングルコアプロセッサであってもよいし、マルチコアプロセッサであってもよい。プロセッサ101は、処理の一部または全部を行うハードウェア回路(例えば、FPGA(Field−Programmable Gate Array)またはASIC(Application Specific Integrated Circuit))を備えていてもよい。プロセッサ101は、ニューラルネットワークを備えていてもよい。
主記憶デバイス104は、例えば、SRAMまたはDRAMなどの半導体メモリから構成することができる。主記憶デバイス104には、プロセッサ101が実行中のプログラムを格納したり、プロセッサ101がプログラムを実行するためのワークエリアを設けたりすることができる。
補助記憶デバイス105は、大容量の記憶容量を備える記憶デバイスであり、例えば、ハードディスク装置またはSSDである。補助記憶デバイス105は、各種プログラムの実行ファイルやプログラムの実行に用いられるデータを保持することができる。補助記憶デバイス105には、暗号処理プログラム105Aを格納することができる。暗号処理プログラム105Aは、ストレージコントローラ13にインストール可能なソフトウェアであってもよいし、ストレージコントローラ13にファームウェアとして組み込まれていてもよい。
通信制御デバイス102は、外部との通信を制御する機能を備えるハードウェアである。通信制御デバイス102は、通信インタフェイス103を介してネットワーク109に接続される。ネットワーク109は、インターネットなどのWAN(Wide Area Network)であってもよいし、WiFiまたはイーサネット(登録商標)などのLAN(Local Area Network)であってもよいし、WANとLANが混在していてもよい。
入出力インタフェイス107は、入力装置120から入力されるデータをプロセッサ101が処理可能なデータ形式に変換したり、プロセッサ101から出力されるデータを出力装置121が処理可能なデータ形式に変換したりする。
プロセッサ101が暗号処理プログラム105Aを主記憶デバイス104に読み出し、暗号処理プログラム105Aを実行することにより、図1の暗号化処理16A、復号化処理16Bおよび認証コード処理17を実現することができる。
なお、暗号処理プログラム105Aの実行は、複数のプロセッサやコンピュータに分担させてもよい。あるいは、プロセッサ101は、ネットワーク109を介してクラウドコンピュータなどに暗号処理プログラム105Aの全部または一部の実行を指示し、その実行結果を受け取るようにしてもよい。
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。
11 ホスト、12、14 通信ネットワーク、13 ストレージコントローラ、15A、15B ストレージノード、16A 暗号化処理、16B 復号化処理、17、18A、18B 認証コード処理、L1〜L4 論理ボリューム、D1〜D4 ボリューム

Claims (10)

  1. 認証鍵が割り当てられたコントローラとノードを備え、
    前記コントローラは、
    暗号鍵を用いてデータを暗号化した暗号化データを生成し、
    前記認証鍵を用いて前記暗号化データに基づいて認証コードを生成し、
    前記暗号化データおよび前記認証コードを前記ノードに送信し、
    前記ノードは、
    前記コントローラから送信された暗号化データおよび認証コードを受信し、
    前記暗号化データおよび前記認証コードを保存し、
    前記保存した暗号化データおよび認証コードを前記コントローラに送信し、
    前記コントローラは、
    前記ノードから送信された暗号化データおよび認証コードを受信し、
    前記ノードから送信された認証コードの検証結果に基づいて、前記暗号化データを復号するストレージシステム。
  2. 前記ノードは、前記コントローラから送信された認証コードの検証結果に基づいて、前記暗号化データおよび前記認証コードを保存する請求項1に記載のストレージシステム。
  3. 前記ノードは、
    前記保存した暗号化データおよび認証コードを読み出し、
    前記読み出した暗号化データおよび認証コードを前記コントローラに送信する請求項1に記載のストレージシステム。
  4. 前記コントローラは、前記暗号化データと前記暗号化データの送信の通し番号であるシーケンス番号に基づいて前記認証コードを生成する請求項1に記載のストレージシステム。
  5. 前記コントローラと前記ノードは、通信ネットワークを介して接続されている請求項2に記載のストレージシステム。
  6. 前記暗号鍵および前記認証鍵を管理する鍵管理サーバは、前記通信ネットワークを介し、前記コントローラと前記ノードに前記認証鍵を提供するとともに、前記コントローラに前記暗号鍵を提供する請求項5に記載のストレージシステム。
  7. 前記ノードは、
    前記認証鍵を用いて、前記暗号化データと前記暗号化データの送信の通し番号であるシーケンス番号に基づいて前記認証コードを生成し、
    前記コントローラは、
    前記暗号化データ、前記認証コードおよび前記シーケンス番号を前記ノードから受信し、
    前記受信した認証コードの検証結果に基づいて、前記暗号化データを復号する請求項1に記載のストレージシステム。
  8. 認証鍵が割り当てられたホストとノードを備え、
    前記ホストは、
    暗号鍵を用いてデータを暗号化した暗号化データを生成し、
    前記認証鍵を用いて前記暗号化データに基づいて認証コードを生成し、
    前記暗号化データおよび前記認証コードを前記ノードに送信し、
    前記ノードは、
    前記ホストから送信された暗号化データおよび認証コードを受信し、
    前記ホストから送信された認証コードの検証結果に基づいて、前記暗号化データおよび前記認証コードを保存し、
    前記保存した暗号化データおよび認証コードを前記ホストに送信し、
    前記ホストは、
    前記ノードから送信された暗号化データおよび認証コードを受信し、
    前記ノードから送信された認証コードの検証結果に基づいて、前記暗号化データを復号するストレージシステム。
  9. 送信側から送信されたデータを受信側で保存するストレージシステムのデータ保護方法であって、
    前記送信側は、
    暗号鍵を用いてデータを暗号化した暗号化データを生成し、
    認証鍵を用いて前記暗号化データに基づいて認証コードを生成し、
    前記暗号化データおよび前記認証コードを前記受信側に送信し、
    前記受信側は、
    前記送信側から送信された暗号化データおよび認証コードを受信し、
    前記暗号化データおよび前記認証コードを保存し、
    前記保存した暗号化データおよび認証コードを前記送信側に送信し、
    前記送信側は、
    前記受信側から送信された暗号化データおよび認証コードを受信し、
    前記受信側から送信された認証コードの検証結果に基づいて、前記暗号化データを復号するストレージシステムのデータ保護方法。
  10. 前記受信側は、前記送信側から送信された認証コードの検証結果に基づいて、前記暗号化データおよび前記認証コードを保存する請求項9に記載のストレージシステムのデータ保護方法。

JP2019219834A 2019-12-04 2019-12-04 ストレージシステムおよびストレージシステムのデータ保護方法 Pending JP2021090151A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019219834A JP2021090151A (ja) 2019-12-04 2019-12-04 ストレージシステムおよびストレージシステムのデータ保護方法
US17/007,007 US20210176065A1 (en) 2019-12-04 2020-08-31 Storage system and data protection method for storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019219834A JP2021090151A (ja) 2019-12-04 2019-12-04 ストレージシステムおよびストレージシステムのデータ保護方法

Publications (1)

Publication Number Publication Date
JP2021090151A true JP2021090151A (ja) 2021-06-10

Family

ID=76210494

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019219834A Pending JP2021090151A (ja) 2019-12-04 2019-12-04 ストレージシステムおよびストレージシステムのデータ保護方法

Country Status (2)

Country Link
US (1) US20210176065A1 (ja)
JP (1) JP2021090151A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210073297A (ko) * 2019-12-10 2021-06-18 삼성전자주식회사 클라우드 서버 및 클라우드 서버의 동작방법
US11653204B2 (en) * 2020-01-21 2023-05-16 Samsung Electronics Co., Ltd. Sideband authentication of storage device
US11895244B2 (en) * 2021-07-27 2024-02-06 Dell Products L.P. Secure high-speed communication interface between a basic input and output system and a service processor

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1079732A (ja) * 1996-09-03 1998-03-24 Iryo Joho Syst Kaihatsu Center ネットワークセキュリティシステムおよびネットワークセキュリティ方法
US7010689B1 (en) * 2000-08-21 2006-03-07 International Business Machines Corporation Secure data storage and retrieval in a client-server environment
US20060136735A1 (en) * 2002-05-14 2006-06-22 Serge Plotkin Encryption based security system for network storage
JP2010539856A (ja) * 2007-09-18 2010-12-16 クゥアルコム・インコーポレイテッド 移動ハンドセット向けの遠隔活性化型保護バックアップ・サービスを作り出すための方法および機器
JP2013161154A (ja) * 2012-02-02 2013-08-19 Ibaraki Univ 検索システム、検索方法および検索プログラム
WO2014017532A1 (ja) * 2012-07-24 2014-01-30 横河電機株式会社 パケット転送装置、パケット転送システム、及びパケット転送方法
US20140122866A1 (en) * 2012-10-31 2014-05-01 Vmware, Inc. Crypto Proxy for Cloud Storage Services

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1079732A (ja) * 1996-09-03 1998-03-24 Iryo Joho Syst Kaihatsu Center ネットワークセキュリティシステムおよびネットワークセキュリティ方法
US7010689B1 (en) * 2000-08-21 2006-03-07 International Business Machines Corporation Secure data storage and retrieval in a client-server environment
US20060136735A1 (en) * 2002-05-14 2006-06-22 Serge Plotkin Encryption based security system for network storage
JP2010539856A (ja) * 2007-09-18 2010-12-16 クゥアルコム・インコーポレイテッド 移動ハンドセット向けの遠隔活性化型保護バックアップ・サービスを作り出すための方法および機器
JP2013161154A (ja) * 2012-02-02 2013-08-19 Ibaraki Univ 検索システム、検索方法および検索プログラム
WO2014017532A1 (ja) * 2012-07-24 2014-01-30 横河電機株式会社 パケット転送装置、パケット転送システム、及びパケット転送方法
US20140122866A1 (en) * 2012-10-31 2014-05-01 Vmware, Inc. Crypto Proxy for Cloud Storage Services

Also Published As

Publication number Publication date
US20210176065A1 (en) 2021-06-10

Similar Documents

Publication Publication Date Title
EP3646173B1 (en) Theft and tamper resistant data protection
US20210099287A1 (en) Cryptographic key generation for logically sharded data stores
TWI676116B (zh) 安全儲存系統以及用於安全儲存的方法
WO2020237868A1 (zh) 数据传输方法、电子设备、服务器及存储介质
US10284372B2 (en) Method and system for secure management of computer applications
US7912223B2 (en) Method and apparatus for data protection
US9135464B2 (en) Secure storage system for distributed data
US9203836B2 (en) Token for securing communication
JP2021513691A (ja) ホストシステムとデータ処理アクセラレータの間の通信を保護するための方法およびシステム
JP2019522412A (ja) 登録・認可方法、装置及びシステム
TW202036347A (zh) 資料儲存、驗證方法及裝置
US20210258148A1 (en) Key management method, security chip, service server and information system
EP2932690B1 (en) Copy offload for disparate offload providers
JP2021090151A (ja) ストレージシステムおよびストレージシステムのデータ保護方法
WO2008035450A1 (fr) Authentification par un identifiant ponctuel
CN112433817A (zh) 信息配置方法、直接存储访问方法及相关装置
WO2020000491A1 (zh) 一种文件存储方法、装置及存储介质
CN114244508A (zh) 数据加密方法、装置、设备及存储介质
US11997192B2 (en) Technologies for establishing device locality
EP3836478A1 (en) Method and system of data encryption using cryptographic keys
KR102695289B1 (ko) 저장 디바이스와 호스트 디바이스 사이의 데이터 전송을 인증하는 모듈 및 방법
CN115544547A (zh) 一种移动硬盘加密方法、装置、电子设备以及存储介质
AU2023201855B2 (en) Module and method for authenticating data transfer between a storage device and a host device
US20230072572A1 (en) I/o command control device and information storage device
CN113961970B (zh) 跨网段网盘登录身份验证方法、装置、网盘及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211020

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211130

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220531