(57)【要約】【課題】プログラムされていないセルが特定の二進値を有する不揮発性メモリに保存するためのＮビット暗号鍵の新しいインスタンスを生成する方法を提供する。【解決手段】方法は、ランダムＮビット更新シーケンスを生成することと、特定の二進値を有し、且つランダムＮビット更新シーケンス内の対応して配置されたビットと異なるＮビット暗号鍵の現在のインスタンス内の各ビットをネゲートするが、特定の二進値を有さないＮビット暗号鍵の現在のインスタンス内のいかなるビットもネゲートしないことによって、Ｎビット暗号鍵の新しいインスタンスを生成することを含む。他の実施形態についても説明する。【選択図】図１
2020145629.tif 000002
【特許請求の範囲】
【請求項１】
プログラムされていないセルが特定の二進値を有し、デバイスに属する不揮発性メモリに保存するためのＮビット暗号鍵の新しいインスタンスを生成する装置であって、
ネットワークインターフェースと、
ランダムＮビット更新シーケンスを生成することと、
前記特定の二進値を有し、且つ前記ランダムＮビット更新シーケンス内の対応して配置されたビットと異なる前記Ｎビット暗号鍵の現在のインスタンス内の各ビットをネゲートするが、前記特定の二進値を有さない前記Ｎビット暗号鍵の前記現在のインスタンス内のいかなるビットもネゲートしないことによって、前記Ｎビット暗号鍵の前記新しいインスタンスを生成することと、
前記Ｎビット暗号鍵の前記新しいインスタンスを生成した後、前記ネットワークインターフェースを使用して、前記Ｎビット暗号鍵の前記新しいインスタンスを前記装置に伝達して、前記不揮発性メモリに保存することと、
を行うよう構成されたプロセッサと、
を含む装置。
【請求項２】
前記プロセッサが、前記Ｎビット暗号鍵の前記現在のインスタンスと前記ランダムＮビット更新シーケンスの間でビット毎のＡＮＤ演算を行うことによって、前記特定の二進値を有し、且つ前記ランダムＮビット更新シーケンス中の対応して配置されたビットと異なる前記Ｎビット暗号鍵の前記現在のインスタンス内の各ビットをネゲートするよう構成された請求項１に記載の装置。
【請求項３】
前記プロセッサが、０．５よりも大きい前記特定の二進値を有する確率で前記ランダムＮビット更新シーケンス内の各ビットを生成するよう構成された請求項１に記載の装置。
【請求項４】
前記確率が、所定の整数ｍおよび可変整数ｎに対し、ｎ／２mに等しく、
前記プロセッサが、
Ｅビットを有するバイアスしていないランダムシードをそれぞれ前記ランダムＮビット更新シーケンスの前記ビットに対応するＮ個のｍビットシーケンスに拡張することと、
前記ランダムＮビット更新シーケンス内の各ビットに対し、ｎよりも小さい前記対応するｍビットシーケンスの値に応じて、前記ビットを前記特定の二進値に設定することと、
を行うことによって、前記ランダムＮビット更新シーケンスを生成するよう構成された請求項３に記載の装置。
【請求項５】
複数の単一ビットセルを含み、Ｎビット暗号鍵を保存するよう構成され、前記セルのうちのプログラムされていないセルが特定の二進値を有する不揮発性メモリと、
ランダムＮビット更新シーケンスを生成することと、
前記特定の二進値を有し、且つ前記ランダムＮビット更新シーケンス内の対応して配置されたビットと異なる前記Ｎビット暗号鍵の現在のインスタンス内の各ビットをネゲートするが、前記特定の二進値を有さない前記Ｎビット暗号鍵の前記現在のインスタンス内のいかなるビットもネゲートしないことによって、前記Ｎビット暗号鍵の新しいインスタンスを生成することと、
前記Ｎビット暗号鍵の前記新しいインスタンスを生成した後、前記不揮発性メモリにおいて前記Ｎビット暗号鍵の前記現在のインスタンスを前記Ｎビット暗号鍵の前記新しいインスタンスと置き換えることと、
を行うよう構成されたプロセッサと、
を含む装置。
【請求項６】
前記プロセッサが、前記特定の二進値を有する特定の確率で前記ランダムＮビット更新シーケンス内の各ビットを生成するよう構成され、
前記プロセッサが、さらに、前記ランダムＮビット更新シーケンスを生成する前に、前記特定の確率を計算して、前記Ｎビット暗号鍵の前記現在のインスタンスに対する前記Ｎビット暗号鍵の前記新しいインスタンスの期待されるエントロピーが、Ｎより小さい所定の閾値Ｅよりも小さくならないようにするよう構成された請求項５に記載の装置。
【請求項７】
前記特定の確率が、０．５よりも大きい請求項６に記載の装置。
【請求項８】
プログラムされていないセルが特定の二進値を有する不揮発性メモリに保存するためのＮビット暗号鍵の新しいインスタンスを生成する方法であって、
ランダムＮビット更新シーケンスを生成することと、
前記特定の二進値を有し、且つ前記ランダムＮビット更新シーケンス内の対応して配置されたビットと異なる前記Ｎビット暗号鍵の現在のインスタンス内の各ビットをネゲートするが、前記特定の二進値を有さない前記Ｎビット暗号鍵の前記現在のインスタンス内のいかなるビットもネゲートしないことによって、前記Ｎビット暗号鍵の前記新しいインスタンスを生成することと、
を含む方法。
【請求項９】
前記ネゲートすることが、前記Ｎビット暗号鍵の前記現在のインスタンスと前記ランダムＮビット更新シーケンスの間でビット毎のＡＮＤ演算を行うことを含む請求項８に記載の方法。
【請求項１０】
前記ランダムＮビット更新シーケンスを生成することが、０．５よりも大きい前記特定の二進値を有する確率で前記ランダムＮビット更新シーケンス内の各ビットを生成することを含む請求項８に記載の方法。
【請求項１１】
前記ランダムＮビット更新シーケンスを生成する前に、
前記特定の二進値を有する前記Ｎビット暗号鍵の前記現在のインスタンス内のビットの数Ｎ１を識別することと、
ｑに関する−（ｑｌｏｇ2ｑ＋（１−ｑ）ｌｏｇ2（１−ｑ））＝Ｅ／Ｎ１を解き、Ｅが予め定義されたエントロピー閾値であることと、
ｑから前記確率を得ることと、
をさらに含む請求項１０に記載の方法。
【請求項１２】
ｑから前記確率を得ることが、前記確率をｑに設定することによって、ｑから前記確率を得ることを含む請求項１１に記載の方法。
【請求項１３】
ｑから前記確率を得ることが、前記確率をｑよりも大きくない最大の値ｎ／２mに設定することによって、ｑから前記確率を得ることを含み、ｍが所定の整数であり、ｎが可変整数である請求項１１に記載の方法。
【請求項１４】
前記確率が、所定の整数ｍおよび可変整数ｎに対し、ｎ／２mに等しく、
前記ランダムＮビット更新シーケンスを生成することが、
Ｅビットを有するバイアスしていないランダムシードをそれぞれ前記ランダムＮビット更新シーケンスの前記ビットに対応するＮ個のｍビットシーケンスに拡張することと、
前記ランダムＮビット更新シーケンス内の各ビットに対し、ｎよりも小さい前記対応するｍビットシーケンスの値に応じて、前記ビットを前記特定の二進値に設定することと、
を含む請求項１０に記載の方法。
【請求項１５】
プログラムされていないセルが特定の二進値を有する不揮発性メモリにおいて、Ｎビット暗号鍵の複数の更新を容易にする方法であって、
前記更新に対して、異なる各確率｛ｑi｝（ｉ＝１…Ｕ）を計算し、前記更新のうちの各第ｉ更新に対し、前記Ｎビット暗号鍵の現在のインスタンスに対する前記Ｎビット暗号鍵の新しいインスタンスの期待されるエントロピーがＮよりも小さい所定の閾値Ｅよりも小さくならないようにし、
前記Ｎビット暗号鍵の前記新しいインスタンスが、前記特定の二進値を有し、且つランダムＮビット更新シーケンス内の対応して配置されたビットと異なる前記Ｎビット暗号鍵の前記現在のインスタンス内の各ビットをネゲートするが、前記特定の二進値を有さない前記Ｎビット暗号鍵の前記現在のインスタンス内のいかなるビットもネゲートしないことによって生成されることと、
前記ランダムＮビット更新シーケンス内の各ビットが、前記特定の二進値を有する確率ｑiで生成されることと、
を条件とすることと、
前記確率を計算した後に、前記更新を行う時に使用するための前記確率を提供することと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サイバーセキュリティーの分野に関するものであり、特に、通信を暗号化するために使用される暗号鍵に関するものである。
【背景技術】
【０００２】
Ｎビット暗号鍵のエントロピー（entropy）Ｈ（Ｎ，ｐ）＝Ｈ（Ｎ，１−ｐ）は、鍵のランダム性を定量化する（式中、ｐは、０または１の鍵の中の任意の１つのビットの確率である）。比較的高いエントロピーを有する鍵は、比較的低いエントロピーを有する鍵よりも安全である。ランダムな独立同分布（independent and identically distributed, iid）のビットを有する鍵は、Ｈ（Ｎ，ｐ）＝ＮＨ（ｐ）ビットであり、Ｈ（ｐ）＝−（ｐｌｏｇ2ｐ＋（１−ｐ）ｌｏｇ2（１−ｐ））である。例えば、バイアスしていない（unbiased）ｉｉｄビット（ｐ＝０．５）は、Ｈ（ｐ）がその最大値である１に達するため、Ｈ（Ｎ，ｐ）＝Ｎである。
【０００３】
不揮発性メモリ（non-volatile memory, NVM）は、複数の単一ビットメモリセルを含み、それぞれプログラムされた状態であっても、またはプログラムされていない状態であってもよい。通常、慣例によると、プログラムされていないセルは、二進値１を有するが、プログラムされたセルは、二進値０を有する。ワンタイムプログラマブル不揮発性メモリ（one-time programmable NVM, OTP NVM）は、プログラム操作を元に戻すことができない。すなわち、プログラムされたセルを後でディプログラミング（deprogram）（または消去）することはできない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ワンタイムプログラマブル不揮発性メモリ（ＯＴＰＮＶＭ）は、消去が不可能である。消去可能な他の種類の不揮発性メモリでも、更新操作は安全ではなく、鍵の現在の値の消去後、および鍵の新しい値の書き込み前に、攻撃者が操作を終了させ、既知のプログラムされていない状態で鍵を「フリーズ（freeze）」させる可能性がある。
【課題を解決するための手段】
【０００５】
本発明のいくつかの実施形態において、プログラムされていないセルが特定の二進値を有する不揮発性メモリ（ＮＶＭ）（デバイスに属する）に保存するためのＮビット暗号鍵の新しいインスタンスを生成する装置を提供する。装置は、ネットワークインターフェースと、プロセッサとを含む。プロセッサは、ランダムＮビット更新シーケンスを生成するよう構成される。プロセッサは、さらに、特定の二進値を有し、且つランダムＮビット更新シーケンス内の対応して配置されたビットと異なるＮビット暗号鍵の現在のインスタンス内の各ビットをネゲート（negate）するが、特定の二進値を有さないＮビット暗号鍵の現在のインスタンス内のいかなるビットもネゲートしないことによって、Ｎビット暗号鍵の新しいインスタンスを生成するよう構成される。プロセッサは、さらに、Ｎビット暗号鍵の新しいインスタンスを生成した後、ネットワークインターフェースを使用して、Ｎビット暗号鍵の新しいインスタンスを装置に伝達して、不揮発性メモリ（ＮＶＭ）に保存するよう構成される。
【０００６】
本発明のいくつかの実施形態において、さらに、複数の単一ビットセルを含み、Ｎビット暗号鍵を保存するよう構成され、セルのうちのプログラムされていないセルが特定の二進値を有する不揮発性メモリ（ＮＶＭ）と、プロセッサとを含む装置を提供する。プロセッサは、ランダムＮビット更新シーケンスを生成するよう構成される。プロセッサは、さらに、特定の二進値を有し、且つランダムＮビット更新シーケンス内の対応して配置されたビットと異なるＮビット暗号鍵の現在のインスタンス内の各ビットをネゲートするが、特定の二進値を有さないＮビット暗号鍵の現在のインスタンス内のいかなるビットもネゲートしないことによって、Ｎビット暗号鍵の新しいインスタンスを生成するよう構成される。プロセッサは、さらに、Ｎビット暗号鍵の新しいインスタンスを生成した後、不揮発性メモリ（ＮＶＭ）においてＮビット暗号鍵の現在のインスタンスをＮビット暗号鍵の新しいインスタンスと置き換えるよう構成される。
【０００７】
本発明のいくつかの実施形態において、さらに、プログラムされていないセルが特定の二進値を有する不揮発性メモリ（ＮＶＭ）に保存するためのＮビット暗号鍵の新しいインスタンスを生成する方法を提供する。この方法は、ランダムＮビット更新シーケンスを生成することと、特定の二進値を有し、且つランダムＮビット更新シーケンス内の対応して配置されたビットと異なるＮビット暗号鍵の現在のインスタンス内の各ビットをネゲートするが、特定の二進値を有さないＮビット暗号鍵の現在のインスタンス内のいかなるビットもネゲートしないことによって、Ｎビット暗号鍵の新しいインスタンスを生成することを含む。
【０００８】
本発明のいくつかの実施形態において、さらに、プログラムされていないセルが特定の二進値を有する不揮発性メモリ（ＮＶＭ）において、Ｎビット暗号鍵の複数の更新を容易にする方法を提供する。この方法は、これらの更新に対して、異なる各確率｛ｑi｝（ｉ  ＝１…Ｕ）を計算し、これらの更新のうちの各第ｉ更新は、Ｎビット暗号鍵の現在のインスタンスに対するＮビット暗号鍵の新しいインスタンスの期待されるエントロピーが、Ｎよりも小さい所定の閾値Ｅよりも小さくならないようにすることを含み、以下を条件とする：（ｉ）Ｎビット暗号鍵の新しいインスタンスは、特定の二進値を有し、且つランダムＮビット更新シーケンス内の対応して配置されたビットと異なるＮビット暗号鍵の現在のインスタンス内の各ビットをネゲートするが、特定の二進値を有さないＮビット暗号鍵の現在のインスタンス内のいかなるビットもネゲートしないことによって生成される；（ｉｉ）ランダムＮビット更新シーケンス内の各ビットは、特定の二進値を有する確率ｑiで生成される。この方法は、さらに、確率を計算した後に、更新を行う時に使用するための確率を提供することを含む。
【発明の効果】
【０００９】
本発明の不揮発性メモリは、暗号鍵を使用して通信を暗号化するため、更新操作が安全である。
【図面の簡単な説明】
【００１０】
添付図面は、本発明の原理がさらに理解されるために含まれており、本明細書に組み込まれ、且つその一部を構成するものである。図面は、本発明の実施形態を例示しており、説明とともに、本発明の原理を説明する役割を果たしている。
【００１１】
【図１】本発明のいくつかの実施形態に係る暗号鍵を更新するシステムの概略図である。
【図２】本発明のいくつかの実施形態に係る暗号鍵の新しいインスタンスの生成の概略図である。
【図３】本発明のいくつかの実施形態に係るランダムシーケンスを生成する技術の概略図である。
【図４】本発明のいくつかの実施形態に係るビット生成確率を計算する技術の概略図である。
【図５】本発明のいくつかの実施形態に係る暗号鍵の複数の更新を容易にする方法のフロー図である。
【発明を実施するための形態】
【００１２】
[前置き]
請求項を含む本願の内容において、暗号鍵の「更新」は、（ｉ）鍵の新しいインスタンスの計算、（ｉｉ）メモリ内の鍵の現在のインスタンスと鍵の新しいインスタンスの交換、または（ｉｉｉ）（ｉ）と（ｉｉ）の両方を指す。
【００１３】
本明細書は、概して、不揮発性メモリ（ＮＭＶ）において、プログラムされていないセルは二進値１を有するが、プログラムされたセルは二進値０を有すると仮定する。以下、図２を参照して明確に説明するが、ここで説明する技術は、逆の慣例を使用する不揮発性メモリ（ＮＭＶ）にも利用することができる。
【００１４】
[概説]
不揮発性メモリに保存された暗号鍵を更新するのは、困難である。例えば、背景技術において上述したように、ワンタイムプログラマブル不揮発性メモリ（ＯＴＰＮＶＭ）は、消去が不可能である。また、消去可能な他の種類の不揮発性メモリでも、更新操作は安全ではなく、鍵の現在の値の消去後、および鍵の新しい値の書き込み前に、攻撃者が操作を終了させ、既知のプログラムされていない状態で鍵を「フリーズ」させる可能性がある。
【００１５】
この問題に取り組むため、本発明の実施形態は、鍵の中の（プログラムされていない）１ビットのみを変更し、（プログラムされた）０ビットを変更しないことにより、鍵を更新する。具体的に説明すると、鍵の現在のＮビットインスタンスＫi（以下、「Ｋi」で示す）を考慮して、ビットのＮビットランダムシーケンスＳi（以下、「Ｓi」で示す）を生成し、その後、ＫiとＳiの間のビット毎でＡＮＤ演算（bitwise AND operation）、または任意の同等の演算を行うことによって、鍵の新しいインスタンスＫi+1（以下、「Ｋi+1」で示す）を計算する。鍵の新しいインスタンスが現在のインスタンスに対して十分なエントロピーを有するように（すなわち、Ｋiの知識を持つ攻撃者がＫi+1を推測できないようにするために）、０ビットと１ビットの両方を更新したい場合は、鍵の長さＮを必要以上に長くする。
（注意すべきこととして、別の記述的慣例を使用すると、ＫiおよびＫi+1は、同じ鍵の異なるインスタンスまたは値ではなく、異なる鍵とみなすことができる。そのため、例えば、Ｋi+1は、Ｋiを置き換える新しい鍵であると言うことができる。）
【００１６】
通常、できるだけ多くの更新を実行できるよう、Ｓiは、偏って（biasedly）生成され、１に等しいＳi内の各ビットに対する確率ｑi（以下、「ｑi」で示す）は、０．５よりも大きい。（鍵の最終更新に対し、ｑiがちょうど０．５になる場合もある。）具体的に説明すると、必要なエントロピーを提供する最大ｑi値を数値的に計算した後、この最大値を使用してＳiを生成する。
【００１７】
いくつかの実施形態において、第ｉ更新の直前に、現在の鍵Ｋiを考慮して、各ｑi値を計算する。前置きとして、注意すべきこととして、Ｋiを考慮すると、Ｋi+1のエントロピーは、Ｎ１i＊Ｈ（ｑi）に等しい。式中、Ｎ１iは、Ｋi内の１ビットの数であり、且つＨ（ｑi）＝−（ｑiｌｏｇ2ｑi＋（１−ｑi）ｌｏｇ2（１−ｑi））である。所定の閾値Ｅ（以下、「Ｅ」で示す）よりも大きい、またはそれに等しいこのエントロピーに対し、Ｈ（ｑi）は、Ｅ／Ｎ１iよりも大きいか、それに等しくなければならない。そのため、第ｉ更新の前に、量Ｅ／Ｎ１iを計算することができる。続いて、Ｅ／Ｎ１iが１（Ｈ（ｑ）の最大可能値）よりも小さいか、それに等しいことを条件とすると、ｑに対し、式Ｈ（ｑ）＝Ｅ／Ｎ１iを数値的に解くことができる。（注意すべきこととして、この解を計算する正確度は、使用する数値的方法、およびその方法を実施する手段によって決まる。）この等式の解ｑi＊（またはｑi＊よりも小さい最も近い適切な値）をｑiの値として使用することができる。
【００１８】
別の実施形態において、いかなる更新も行う前に、鍵のＵ回の更新に使用する１セットのｑi値｛ｑ1, ｑ2, … ｑU｝を前もって計算する。この計算に対し、Ｎ１iの期待値、
2020145629.tif 000003
（式中、ｑ0は、１）を使用して、Ｋiを考慮してＫi+1のエントロピーを推測することにより、必要なエントロピーＥに到達する。Ｈ（ｑi）は、
2020145629.tif 000004
）よりも大きいか、それに等しくなければならない。（この量は、より簡潔に
2020145629.tif 000005
と記載してもよく、λ＝Ｅ／Ｎである。）そのため、
2020145629.tif 000006
）が１よりも大きいことが確定されるまで（ｉ＝Ｕ＋１に対し）、ｑ1で始まるｑi値を繰り返し解くことができる。
【００１９】
通常、Ｓiを生成しやすくするために、所定の整数ｍおよび可変整数ｎに対し、ｑiは、ｎ／２mの形式を有する。Ｓiを生成するために、Ｅビットを含むバイアスしていないランダムシードＸi（以下、「Ｘi」で示す）を生成または取得する。そして、ＸiをＳiのＮビットにそれぞれ対応するＮ個のｍビットシーケンスに拡大する（例えば、ハッシュ機能を使用して）。続いて、各ｍビットシーケンスの値とｎを比較する。値がｎよりも小さい場合、Ｓi中の対応するビットを１に設定し；そうでなければ、ビットを０に設定する。
【００２０】
[システムの説明]
まず、図１を参照すると、図１は、本発明のいくつかの実施形態に係る暗号鍵を更新するシステム２０の概略図である。図１に示した特定の実施形態は、Ｎビット暗号鍵「Ｋ」を使用して、インターネット２４上のモノのインターネット（Internet of Things, IoT）デバイス２２とインターネットサービスプロバイダ（Internet service provider, ISP）の間の通信を暗号化する。
【００２１】
一般的に、デバイス２２が同じＩＳＰを保持していると仮定すると、鍵のセキュリティは破られないため、鍵を更新する必要はない。しかしながら、デバイス２２を異なるＩＳＰに切り替えた場合、または鍵のセキュリティが破られた場合は、鍵を更新する必要がある。
【００２２】
例えば、図１は、デバイス２２が第１ＩＳＰ２６ａのサービスを受けているが、これから第２ＩＳＰ２６ｂのサービスを受ける予定である場合を示したものである。この場合、第２ＩＳＰ２６ｂは、第１ＩＳＰ２６ａから鍵の現在のインスタンスＫiをリクエストする。このリクエストに応じて、第１ＩＳＰ２６ａは、インターネット２４上でＫiを第２ＩＳＰ２６ｂに伝達する。第１ＩＳＰ２６ａは、さらに、第２ＩＳＰ２６ｂにｉの値を伝達することができる。すなわち、第１ＩＳＰ２６ａは、既に実行された暗号鍵に更新の数を指定することができる。続いて、第２ＩＳＰ２６ｂは、鍵の新しいインスタンスＫi+1を生成した後、例えば、デバイス２２が属するＷｉＦｉネットワークにサービスを提供するルーター２８を介して、インターネット２４上で、Ｋi+1をデバイス２２に伝達する。（一般的に、第２ＩＳＰ２６ｂは、Ｋi+1をデバイス２２に伝達する前に、例えば、Ｋiを使用して、Ｋi+1を暗号化する。）続いて、デバイス２２および第２ＩＳＰ２６ｂは、Ｋi+1を使用して、お互いとの通信を開始し、通信を暗号化および復号化することができる。
【００２３】
第２ＩＳＰ２６ｂは、プロセッサ３０と、例えば、ネットワークインターフェースコントローラ（network interface controller, NIC）を含むネットワークインターフェース３２とを含む。プロセッサ３０は、ネットワークインターフェース３２を介して、（他のデバイスとともに）第２ＩＳＰ２６ｂおよびデバイス２２との通信を交換するよう構成される。プロセッサ３０は、さらに、デバイス２２との通信を暗号化するために使用される暗号鍵を更新するよう構成される。例えば、上述したように、プロセッサ３０は、デバイス２２との通信を初期化することにより鍵を更新することができる。あるいは、またはさらに、プロセッサ３０は、鍵が攻撃者によって盗まれた可能性があると認識することにより、プロセッサ３０（または外部のサイバーセキュリティシステム）に応答して鍵を更新することができる。
【００２４】
同様に、デバイス２２は、プロセッサ３４と、通信インターフェース３６とを含む。プロセッサ３４は、通信インターフェース３６を介して、（他のデバイスとともに）第２ＩＳＰ２６ｂとの通信を交換するよう構成される。例えば、通信インターフェース３６は、プロセッサ３４がルーター２８を介して通信を交換するために使用することのできるＷｉＦｉカードを含んでもよい。
【００２５】
デバイス２２は、さらに、プロセッサ３４が暗号鍵を保存するメモリ３８を含む。そのため、例えば、メモリ３８は、まず、Ｋiを保持する。第２ＩＳＰ２６ｂからＫi+1を受信した後、プロセッサ３４は、ＫiにＫi+1を上書きすることができる。
【００２６】
通常、メモリ３８は、不揮発性であり、例えば、メモリ３８は、ワンタイムプログラマブル不揮発性メモリ（ＯＴＰＮＶＭ）、フラッシュメモリ、または電気的消去再書込み可能な読出し専用メモリ（electrically erasable programmable read-only memory, EEPROM）であってもよい。しかしながら、有利に、図２を参照しながら下記でさらに説明するように、暗号鍵の更新は、メモリ３８の中のメモリセルをディプログラミングする必要はない。
【００２７】
いくつかの実施形態において、図５を参照しながら下記でさらに説明するように、第２ＩＳＰ２６ｂは、サーバー４０によって提供されるデータシートに含まれるパラメータ（特に、ビット生成確率ｑi）を使用して、Ｋi+1を生成する。例えば、ネットワークインターフェース４４を使用することにより、サーバー４０は、データシートをウェブサイトに公開することができる。Ｋi+1を生成する直前に、第２ＩＳＰ２６ｂは、ウェブサイトからデータシートを回収して、データシートにおいて、Ｋi+1を生成するのに必要なパラメータを検索することができる。あるいは、Ｋi+1を生成する前の任意の時点で、サーバー４０は、データシートを第２ＩＳＰ２６ｂに伝達することができ（例えば、インターネット２４上で）、その後、第２ＩＳＰ２６ｂは、データシートを揮発性または不揮発性メモリ（図示せず）に保存することができる。続いて、Ｋi+1を生成する直前に、第２ＩＳＰ２６ｂは、メモリからデータシートを回収し、その後、関連するパラメータを検索することができる。
【００２８】
他の実施形態において、デバイス２２のプロセッサ３４は、Ｋi+1を生成し、その後、Ｋi+1を第２ＩＳＰ２６ｂに伝達する。このような実施形態において、プロセッサ３４は、上述したデータシートをサーバー４０から受信することができる。別の選択肢として、サーバー４０または他の適切な第三者がＫi+1を生成し、その後、Ｋi+1をデバイス２２および第２ＩＳＰ２６ｂの両方に伝達してもよい。
【００２９】
サーバー４０は、プロセッサ４２と、例えば、ＮＩＣを含むネットワークインターフェース４４とを含む。プロセッサ４２は、ネットワークインターフェース４４を介して、第２ＩＳＰ２６ｂ（および／またはデバイス２２）との通信を交換するよう構成される。
【００３０】
強調すべきこととして、システム２０の構成要素および配置は、単なる例として提供しただけである。一般的に、ここで説明する各技術は、適切なシステムに属する適切なプロセッサによって実行可能である。例えば、ここで説明する技術を使用して、携帯電話に属する埋め込み型ＳＩＭ（embedded subscriber identification module, eSIM）または埋め込みセキュアエレメント（embedded secure element, eSE）に保存された暗号鍵を更新することができる。例えば、携帯電話のサービスプロバイダーは、Ｋi+1を生成して、Ｋi+1を携帯電話に伝達することができ、その後、携帯電話は、電話に属する不揮発性メモリにＫi+1を保存することができる。
【００３１】
一般的に、ここで説明する各プロセッサは、単一プロセッサとして埋め込まれても、あるいは協同的にネットワーク化された、またはクラスタ化されたプロセッサの集合であってもよい。いくつかの実施形態において、ここで説明するプロセッサのうちの少なくとも１つの機能は、例えば、１つまたはそれ以上の特定用途集積回路（Application-Specific Integrated Circuit, ASIC）またはフィールドプログラマブルゲートアレイ（Field-Programmable Gate Array, FPGA）を使用して、ハードウェアにおいて単独で実施されてもよい。別の実施形態において、ここで説明する各プロセッサの機能は、ソフトウェアにおいて少なくとも部分的に実施される。例えば、いくつかの実施形態において、ここで説明する各プロセッサは、少なくとも中央処理装置（central processing unit, CPU）およびランダムアクセスメモリ（random access memory, RAM）を含むプログラムされたデジタル計算装置として埋め込まれる。ソフトウェアプログラムを含むプログラムコード、および／またはデータは、ＲＡＭにロードされ、ＣＰＵによって実行および処理される。プログラムコードおよび／またはデータは、例えば、ネットワーク上で、電子フォームでプロセッサにダウンロードすることができる。代わりに、またはさらに、プログラムコードおよび／またはデータは、磁性、光学、または電子メモリ等の一時的でない有形の媒体（non-transitory tangible media）に提供および／または保存してもよい。このようなプログラムコードおよび／またはデータは、プロセッサに提供された時、ここで説明するタスクを実行するよう構成された機械または特殊用途のコンピュータを生成する。
【００３２】
［鍵の新しいインスタンスを生成する］
ここで、図２を参照すると、図２は、本発明のいくつかの実施形態に係る暗号鍵の新しいインスタンスの生成の概略図である。
【００３３】
図２は、図１において説明した状況に関連し、プロセッサ３０（または上述した他のプロセッサ）は、鍵の現在のインスタンスＫiを考慮して、Ｎビット暗号鍵の新しいインスタンスＫi+1を生成する。概説において説明したように、図１を参照すると、Ｋi+1を生成して、不揮発性メモリにおいてＫiとＫi+1を交換することにより、メモリセルをディプログラミングする必要がなくなる。しかしながら、図４を参照しながら下記でさらに詳しく説明するように、Ｋiに対するＫi+1の期待されるエントロピーは、所定の閾値エントロピーＥよりも小さくない。（暗号鍵におけるビットＮの数よりも少ない閾値Ｅは、例えば、システム２０のセキュリティアーキテクトによって定義することができる。）
【００３４】
具体的に説明すると、Ｋi+1を生成するために、プロセッサは、まず、ランダムＮビット更新シーケンスＳiを生成する。次に、プロセッサは、二進値１を有し、且つＳi内の対応して配置されたビットと異なるＫi内の各ビットをネゲートするが、二進値１を有さないＫi内のいかなるビットもネゲートしないことによって、Ｋi+1を生成する。図２は、２個のネゲートされたビットを示し、それぞれ上向きの矢印で表示する。
【００３５】
通常、図２に示したように、プロセッサは、ＫiとＳiの間でビット毎のＡＮＤ演算を行うことによって、Ｋi+1を生成する。そのため、Ｋi内のいくつかの１ビットは、Ｋi+1内の０ビットで置き換えられるが、Ｋi内の０ビットは、１ビットで置き換えられないため、セルをディプログラミングしなくても、不揮発性メモリにおいて更新することができる。
【００３６】
プロセッサは、Ｓiにおいて確率ｑiが１の各ビットを生成し、通常、ｑiは、０．５よりも大きい。（概説において説明したように、鍵の最終更新に対し、ｑiがちょうど０．５になる場合もある。）いくつかの実施形態において、図１を参照して上述したように、ｑiは、サーバー４０によって提供されたデータシートにおいて指定される。このようなデータシートは、例えば、ｉの各値、Ｎの１つまたはそれ以上の値、およびＥの１つまたはそれ以上の値に対するｑiを指定するルックアップテーブルを含むことができる。別の実施形態において、プロセッサはｑiを計算する。以下、図４を参照しながら、ｑiの計算についてさらに詳しく説明する。
【００３７】
プログラムされていないメモリセルが二進値０を有する逆の不揮発性メモリの慣例については、プロセッサは、Ｓiにおいて確率ｑiが０の各ビットを生成する。そして、プロセッサは、ＫiとＳiの間でビット毎のＯＲ演算を行うことによって、Ｓi内の対応して配置されたビットと異なるＫi内の各０ビットをネゲートする。
【００３８】
［ランダムシーケンスを生成する］
ここで、図３を参照すると、図３は、本発明のいくつかの実施形態に係るランダムシーケンスＳiを生成する技術の概略図である。この技術は、所定の整数ｍおよび可変整数ｎに対し、ｑiがｎ／２mに等しいと仮定する。（例えば、ｍは、１０であってもよく、ｑi＝ｎ／１０２４となる。）
【００３９】
Ｓiを生成するため、プロセッサは、まず、外部ソースからＥビットを有するバイアスしていないランダムシードＸiを生成または取得する。（Ｘiは、バイアスされておらず、Ｘiにける各ビットは、０．５の確率が１である。）プロセッサは、さらに、ｑi＝ｎ／２mを検索または計算する。続いて、プロセッサは、ＸiをそれぞれＳiのビットに対応するＮ個のｍビットシーケンス｛Ｚij｝に拡大する（ｊ＝１…Ｎ）。例えば、プロセッサは、Ｎ個の異なる個別の計数機ｃを用いて、ハッシュ機能ｆ（Ｘ，ｃ）をＸiに適用するため、例えば、Ｓiの第１ビットに対応する第１ｍビットシーケンスＺi1は、ｆ（Ｘi，１）に等しく、Ｓiの第２ビットに対応する第２ｍビットシーケンスＺi2は、ｆ（Ｘi，２）に等しい（以下、同様）。適切なハッシュ機能の例は、ＳＨＡ−２、ＳＨＡ−２５６、ＳＨＡ−５１２、およびＳＨＡ−３等のセキュアハッシュアルゴリズム（secure hash algorithm, SHA）を含む。
【００４０】
次に、Ｓi内の各ビットに対し、プロセッサは、ｎよりも小さい対応するｍビットシーケンスの値に応じて、ビットを１に設定する。例えば、Ｚi1がｎよりも小さい場合、Ｓi内の各第１ビットを１に設定し；そうでなければ、ビットを０に設定する。
【００４１】
図３において特定の技術を示したが、注意すべきこととして、Ｓi内の各ビットが1の確率ｑiを有すると仮定すると、（ｑiがｎ／２mの形式でなくても）他の適切な技術を使用してＳiを生成してもよい。
【００４２】
［１回の更新に対するビット生成確率を計算する］
ここで、図４を参照すると、図４は、本発明のいくつかの実施形態に係るビット生成確率ｑiを計算する技術の概略図である。
【００４３】
いくつかの実施形態において、Ｋi+1を生成するプロセッサは、Ｓiを生成する前に、ｑiを計算する。通常、このような実施形態において、プロセッサは、まず、Ｋi内の１ビットの数Ｎ１iを識別する。次に、図４に示すように、プロセッサは、ｑに関するＨ（ｑ）＝−（ｑｌｏｇ2ｑ＋（１−ｑ）ｌｏｇ2（１−ｑ））＝Ｅ／Ｎ１iを解く。この解は、図４において表記ｑi＊で示してある。（ほとんどの場合、等式に対して２つの解があり；プロセッサは、２つの解のうち大きい方を選択する。）その後、プロセッサは、ｑi＊からｑiを得る。例えば、プロセッサは、ｑiをｑi＊に設定してもよく、あるいは、ｑi＊よりも小さい、またはそれに等しい最大の値ｎ／２m設定してもよい。（言い換えると、プロセッサは、ｎ／２mがｑi＊より小さい、またはそれに等しい最大の整数ｎを見つける。）
【００４４】
概説において説明したように、Ｋiを考慮すると、Ｋi+1のエントロピーは、Ｎ１i＊Ｈ（ｑi）に等しい。そのため、ｑiをｑi＊に、またはｑi＊よりも小さい最も近い適切な値に設定することによって、プロセッサは、少なくともＥのエントロピーを提供するｑiの最大の適切な値を効果的に選択することができる。
【００４５】
ｑi＊を解く代わりに、プロセッサは、ｑの複数の値を定義し、その後、ｑiをＨ（ｑ）がＥ／Ｎ１iよりも小さくない値のうちの最大の値に設定してもよい。例えば、プロセッサは、値の列［２m-1／２m，（２m-1＋１）／２m ，…（２m-１）／２m］を生成し、その後、ｑiをＨ（ｑ）がＥ／Ｎ１iよりも小さくない値のうちの最大の値に設定することができる。
【００４６】
Ｅ／Ｎ１iが１よりも大きい場合、必要なエントロピーＥを得ることができないため、プロセッサは、Ｋi+1を生成しない。この場合、プロセッサは、例えば、デバイス２２のメモリ３８（図１）を交換または消去する必要があることを示す適切なエラーメッセージを生成することができる。
【００４７】
［複数の更新に対してビット生成確率を予備計算する］
いくつかの実施形態において、Ｋi+1を生成するプロセッサは、Ｎ１iを使用しないでｑiを計算する。それどころか、プロセッサは、各更新において、Ｎ１iの期待値、Ｎ１i＊に基づいて、鍵の複数の更新に対してｑi値のシーケンスを前もって計算する。あるいは、サーバー４０（図１）は、１つまたはそれ以上の対のＮまたはＥ値に対してｑi値の各シーケンスを指定するデータシートを生成してもよい。続いて、図１を参照して上述したように、サーバー４０は、図２〜図３を参照して説明した方法で、暗号鍵を更新したい第三者（例えば、第２ＩＳＰ２６ｂ）にデータシートを提供することができる。
【００４８】
これに関し、図５を参照すると、図５は、本発明のいくつかの実施形態に係る暗号鍵の複数の更新を容易にする方法４６のフロー図である。具体的に説明すると、方法４６において、１つまたはそれ以上の異なる（Ｎ，Ｅ）対に関する｛ｑi｝シーケンスを指定するデータシート（すなわち、（ｉ）Ｎ（暗号鍵におけるビットの数）および（ｉｉ）Ｅ（エントロピー閾値）からなる１つまたはそれ以上の異なる対の値）を生成および提供する。方法４６は、通常、上述したように、サーバー４０のプロセッサ４２によって実行される。あるいは、方法４６におけるステップのサブセット（例えば、単一の（Ｎ，Ｅ）対に関する｛ｑi｝の計算）をプロセッサ、例えば、鍵を更新する第２ＩＳＰ２６ｂのプロセッサ３０で行う。
【００４９】
方法４６は、プロセッサ４２がビット生成確率のシーケンスを計算したいシーケンスに関する次の事前定義された（Ｎ，Ｅ）対を選択する選択ステップ４７で始まる。（各（Ｎ，Ｅ）対は、例えば、セキュリティ専門家によってプロセッサ４２に提供することができる。）次に、プロセッサは、鍵のＵ個の更新に対して異なる各確率｛ｑｉ｝（ｉ＝１…Ｕ）を計算する。各ｑi値を計算して、鍵の現在のインスタンス（Ｋi）に関する鍵の新しいインスタンス（Ｋi+1）の期待されるエントロピーが、Ｅよりも小さくならないようにするが、図２〜３を参照して上述したように、鍵の新しいインスタンスを生成することを条件とする。つまり、ｑiは、通常、実際のエントロピー（前もって知ることができない）の代わりにＫi（Ｈ（ｑ）＊Ｎ１i＊）に関するＫi+1の期待されるエントロピーを使用して、図４を参照して上述したように計算される。
【００５０】
さらに具体的に説明すると、選択ステップ４７の後、プロセッサは、初期化ステップ４８において、ｑ0を１に設定し、インデックスｉを１に初期化する。続いて、プロセッサは、ｑiを繰り返し計算して、鍵の新しいインスタンスの期待されるエントロピーがＥよりも小さくなるまで、インデックスを増加させる。ｑiを計算するために、プロセッサは、まず、計算ステップ５０において、
2020145629.tif 000007
を計算する。次に、第１確認ステップ５２において、プロセッサは、Ｅ／Ｎ１i＊が１よりも小さい、またはそれに等しいかどうかを確認する。ＹＥＳの場合、プロセッサは、設定ステップ５４において、ｑiをＨ（ｑ）がＥ／Ｎ１i＊よりも小さくないｑの最大の適切な値に設定する。例えば、図４を参照して上述したように、プロセッサは、ｑiをｑi＊に（ここで、Ｈ（ｑi＊）は、Ｅ／Ｎ１i＊）、またはｑi＊よりも小さい最も近い適切な値に設定することができる。続いて、増加ステップ５６において、プロセッサは、インデックスｉを増加させる。
【００５１】
第１確認ステップ５２において、Ｅ／Ｎ１i＊が１よりも大きいことを確認した上で、プロセッサは、現在のインデックスｉに関するｑiを計算しない。それどころか、データシート更新ステップ５８において、ここまで計算してきたシーケンス｛ｑ1, ｑ2, … ｑU｝（Ｕ（現在のインデックスよりも１つ小さい）は、鍵の許容される更新の最大数）を（Ｎ，Ｅ）の下方にあるデータシートに追加する。
【００５２】
データシート更新ステップ５８の後、プロセッサは、第２確認ステップ６０において、これ以上の（Ｎ，Ｅ）対が残っているかどうかを確認する。ＹＥＳの場合、プロセッサは、選択ステップ４７に戻り、選択された（Ｎ，Ｅ）対に対して｛ｑi｝を計算した後、データシートを更新する。そうでなければ、プロセッサは、提供ステップ６２において、完成したデータシートを提供し、暗号鍵の更新に使用する。例えば、図１を参照して上述したように、プロセッサは、データシートをウェブサイトにアップロードしてもよく、あるいは、データシートを他のデバイスに伝達してもよい。
【００５３】
図２を参照して上述したように、各ｑi値は、通常、０．５よりも大きい。（しかし、ｑUがちょうど０．５になる場合もある）。図４に示したＨ（ｑ）のグラフを観察するとわかるように、Ｅ／Ｎ１i＊がｉとともに増加することを考慮すると、ｑi＊（そのため、ｑi）の値は、ｉが増加するにつれて減少する。例えば、Ｅ＝８０およびＮ＝２５６に対し、方法４６は、１１ｑi＊値の減少列：０．９４３、０．９３８、０．９３３、０．９２６、０．９１８、０．９０７、０．８９３、０．８７２、０．８４１、０．７８５、および０．６２３に戻る。（上記は、必要なエントロピーが８０ビットよりも多くないという条件で、ここで説明した技術を使用して、２５６ビット鍵を１１回更新するという意味である。）
【００５４】
このデータシートを考慮して、鍵の新しいインスタンスを生成するプロセッサ（例えば、第２ＩＳＰ２６ｂのプロセッサ３０）は、Ｎ、Ｅ、およびｉを考慮して、適切なｑi値を検索する。（図１を参照して上述したように、第１ＩＳＰ２６ａは、ｉを第２ＩＳＰ２６ｂに指定する。）続いて、図２〜図３を参照して上述したように、プロセッサは、ｑiを使用して更新シーケンスＳiを生成した後、Ｓiを使用してＫiからＫi+1を生成する。
【産業上の利用可能性】
【００５５】
本発明は、通信を暗号化するために使用される暗号鍵に関するものである。
【符号の説明】
【００５６】
２０  システム
２２  ＩｏＴデバイス
２４  インターネット上のＩＳＰ
２６ａ  第１ＩＳＰ
２６ｂ  第２ＩＳＰ
２８  ルーター
３０、３４、４２  プロセッサ
３２、４４  ネットワークインターフェース
３６  通信インターフェース
３８  メモリ
４０  サーバー
４６  方法
４７、４８、５０、５２、５４、５６、５８、６０、６２  ステップ
Ｋi  鍵の現在のインスタンス
Ｋi+1  鍵の新しいインスタンス
ｑi  確率
Ｓi  ビットのランダムシーケンス
Ｘi  バイアスしていないランダムシード
｛Ｚij｝  ｍビットシーケンス
【図１】
2020145629.tif 000008
【図２】
2020145629.tif 000009
【図３】
2020145629.tif 000010
【図４】
2020145629.tif 000011
【図５】
2020145629.tif 000012
【手続補正書】
【提出日】令和2年3月31日(2020.3.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラムされていないセルが特定の二進値を有する不揮発性メモリに保存するためのＮビット暗号鍵の新しいインスタンスを生成するシステムであって、
前記システムが、第１ＩＳＰ、第２ＩＳＰ及び前記不揮発性メモリを有するＩｏＴデバイスを含み、
前記第２ＩＳＰが、
ネットワークインターフェースと、
前記ＩｏＴデバイスが前記第１ＩＳＰのサービスを受けているが、これから前記第２ＩＳＰのサービスを受ける予定である場合に、第１ＩＳＰから前記Ｎビット暗号鍵の現在のインスタンスをリクエストすることと、
ランダムＮビット更新シーケンスを生成することと、
前記特定の二進値を有し、且つ前記ランダムＮビット更新シーケンス内の対応して配置されたビットと異なる前記Ｎビット暗号鍵の現在のインスタンス内の各ビットをネゲートするが、前記特定の二進値を有し、且つ前記ランダムＮビット更新シーケンス内の対応して配置されたビットと異ならない前記Ｎビット暗号鍵の現在のインスタンス内の各ビットまたは前記特定の二進値を有さない前記Ｎビット暗号鍵の前記現在のインスタンス内のいかなるビットもネゲートしないことによって、前記Ｎビット暗号鍵の前記新しいインスタンスを生成することと、
前記Ｎビット暗号鍵の前記新しいインスタンスを生成した後、前記ネットワークインターフェースを使用して、前記Ｎビット暗号鍵の前記新しいインスタンスを前記ＩｏＴデバイスに伝達して、前記不揮発性メモリに保存することと、
を行うよう構成されたプロセッサと、
を含むシステム。
【請求項２】
前記プロセッサが、前記Ｎビット暗号鍵の前記現在のインスタンスと前記ランダムＮビット更新シーケンスの間でビット毎のＡＮＤ演算を行うことによって、前記特定の二進値を有し、且つ前記ランダムＮビット更新シーケンス中の対応して配置されたビットと異なる前記Ｎビット暗号鍵の前記現在のインスタンス内の各ビットをネゲートするよう構成された請求項１に記載のシステム。
【請求項３】
前記プロセッサが、０．５よりも大きい前記特定の二進値を有する確率で前記ランダムＮビット更新シーケンス内の各ビットを生成するよう構成された請求項１に記載のシステム。
【請求項４】
前記確率が、所定の整数ｍおよび可変整数ｎに対し、ｎ／２mに等しく、
前記プロセッサが、
Ｅビットを有するバイアスしていないランダムシードをそれぞれ前記ランダムＮビット更新シーケンスの前記ビットに対応するＮ個のｍビットシーケンスに拡張することと、
前記ランダムＮビット更新シーケンス内の各ビットに対し、ｎよりも小さい前記対応するｍビットシーケンスの値に応じて、前記ビットを前記特定の二進値に設定することと、
を行うことによって、前記ランダムＮビット更新シーケンスを生成するよう構成された請求項３に記載のシステム。
【請求項５】
Ｎビット暗号鍵の新しいインスタンスを生成するシステムであって、
前記システムが、第１ＩＳＰ、第２ＩＳＰ及びＩｏＴデバイスを含み、
前記ＩｏＴデバイスが、
複数の単一ビットセルを含み、前記Ｎビット暗号鍵を保存するよう構成され、前記セルのうちのプログラムされていないセルが特定の二進値を有する不揮発性メモリと、
ランダムＮビット更新シーケンスを生成することと、
前記ＩｏＴデバイスが前記第１ＩＳＰのサービスを受けているが、これから前記第２ＩＳＰのサービスを受ける予定である場合に、前記特定の二進値を有し、且つ前記ランダムＮビット更新シーケンス内の対応して配置されたビットと異なる前記Ｎビット暗号鍵の現在のインスタンス内の各ビットをネゲートするが、前記特定の二進値を有し、且つ前記ランダムＮビット更新シーケンス内の対応して配置されたビットと異ならない前記Ｎビット暗号鍵の現在のインスタンス内の各ビットまたは前記特定の二進値を有さない前記Ｎビット暗号鍵の前記現在のインスタンス内のいかなるビットもネゲートしないことによって、前記Ｎビット暗号鍵の新しいインスタンスを生成することと、
前記Ｎビット暗号鍵の前記新しいインスタンスを生成した後、前記不揮発性メモリにおいて前記Ｎビット暗号鍵の前記現在のインスタンスを前記Ｎビット暗号鍵の前記新しいインスタンスと置き換えることと、
前記Ｎビット暗号鍵の前記新しいインスタンスを前記第２ＩＳＰに伝達することとを行うよう構成されたプロセッサと、
を含むシステム。
【請求項６】
前記プロセッサが、前記特定の二進値を有する特定の確率で前記ランダムＮビット更新シーケンス内の各ビットを生成するよう構成され、
前記プロセッサが、さらに、前記ランダムＮビット更新シーケンスを生成する前に、前記特定の確率を計算して、前記Ｎビット暗号鍵の前記現在のインスタンスに対する前記Ｎビット暗号鍵の前記新しいインスタンスの期待されるエントロピーが、Ｎより小さい所定の閾値Ｅよりも小さくならないようにするよう構成された請求項５に記載のシステム。
【請求項７】
前記特定の確率が、０．５よりも大きい請求項６に記載のシステム。
【請求項８】
プログラムされていないセルが特定の二進値を有する不揮発性メモリに保存するためのＮビット暗号鍵の新しいインスタンスを生成する方法であって、
前記方法が、第１ＩＳＰ、プロセッサを有する第２ＩＳＰ及び前記不揮発性メモリを有するＩｏＴデバイスを含むシステムを適用し、
前記方法が、
前記プロセッサが、前記ＩｏＴデバイスが前記第１ＩＳＰのサービスを受けているが、これから前記第２ＩＳＰのサービスを受ける予定である場合に、第１ＩＳＰから前記Ｎビット暗号鍵の現在のインスタンスをリクエストすることと、
前記プロセッサが、ランダムＮビット更新シーケンスを生成することと、
前記プロセッサが、前記特定の二進値を有し、且つ前記ランダムＮビット更新シーケンス内の対応して配置されたビットと異なる前記Ｎビット暗号鍵の現在のインスタンス内の各ビットをネゲートするが、前記特定の二進値を有し、且つ前記ランダムＮビット更新シーケンス内の対応して配置されたビットと異ならない前記Ｎビット暗号鍵の現在のインスタンス内の各ビットまたは前記特定の二進値を有さない前記Ｎビット暗号鍵の前記現在のインスタンス内のいかなるビットもネゲートしないことによって、前記Ｎビット暗号鍵の前記新しいインスタンスを生成することと、
を含む方法。
【請求項９】
前記ネゲートすることが、前記Ｎビット暗号鍵の前記現在のインスタンスと前記ランダムＮビット更新シーケンスの間でビット毎のＡＮＤ演算を行うことを含む請求項８に記載の方法。
【請求項１０】
前記ランダムＮビット更新シーケンスを生成することが、０．５よりも大きい前記特定の二進値を有する確率で前記ランダムＮビット更新シーケンス内の各ビットを生成することを含む請求項８に記載の方法。
【請求項１１】
前記ランダムＮビット更新シーケンスを生成する前に、
前記プロセッサが、前記特定の二進値を有する前記Ｎビット暗号鍵の前記現在のインスタンス内のビットの数Ｎ１を識別することと、
前記プロセッサが、ｑに関する−（ｑｌｏｇ2ｑ＋（１−ｑ）ｌｏｇ2（１−ｑ））＝Ｅ／Ｎ１を解き、Ｅが予め定義されたエントロピー閾値であることと、
前記プロセッサが、ｑから前記確率を得ることと、
をさらに含む請求項１０に記載の方法。
【請求項１２】
ｑから前記確率を得ることが、前記確率をｑに設定することによって、ｑから前記確率を得ることを含む請求項１１に記載の方法。
【請求項１３】
ｑから前記確率を得ることが、前記確率をｑよりも大きくない最大の値ｎ／２mに設定することによって、ｑから前記確率を得ることを含み、ｍが所定の整数であり、ｎが可変整数である請求項１１に記載の方法。
【請求項１４】
前記確率が、所定の整数ｍおよび可変整数ｎに対し、ｎ／２mに等しく、
前記ランダムＮビット更新シーケンスを生成することが、
前記プロセッサが、Ｅビットを有するバイアスしていないランダムシードをそれぞれ前記ランダムＮビット更新シーケンスの前記ビットに対応するＮ個のｍビットシーケンスに拡張することと、
前記プロセッサが、前記ランダムＮビット更新シーケンス内の各ビットに対し、ｎよりも小さい前記対応するｍビットシーケンスの値に応じて、前記ビットを前記特定の二進値に設定することと、
を含む請求項１０に記載の方法。
【請求項１５】
プログラムされていないセルが特定の二進値を有する不揮発性メモリにおいて、Ｎビット暗号鍵の複数の更新を容易にする方法であって、
前記方法が、第１ＩＳＰ、プロセッサを有する第２ＩＳＰ及び前記不揮発性メモリを有するＩｏＴデバイスを含むシステムを適用し、
前記方法が、
前記プロセッサが、前記ＩｏＴデバイスが前記第１ＩＳＰのサービスを受けているが、これから前記第２ＩＳＰのサービスを受ける予定である場合に、第１ＩＳＰから前記Ｎビット暗号鍵の現在のインスタンスをリクエストすることと、
前記プロセッサが、ランダムＮビット更新シーケンスを生成することと、
前記プロセッサが、前記更新に対して、異なる各確率｛ｑi｝（ｉ＝１…Ｕ）を計算し、前記更新のうちの各第ｉ更新に対し、前記Ｎビット暗号鍵の現在のインスタンスに対する前記Ｎビット暗号鍵の新しいインスタンスの期待されるエントロピーがＮよりも小さい所定の閾値Ｅよりも小さくならないようにするために、
前記Ｎビット暗号鍵の前記新しいインスタンスが、前記特定の二進値を有し、且つランダムＮビット更新シーケンス内の対応して配置されたビットと異なる前記Ｎビット暗号鍵の前記現在のインスタンス内の各ビットをネゲートするが、前記特定の二進値を有し、且つ前記ランダムＮビット更新シーケンス内の対応して配置されたビットと異ならない前記Ｎビット暗号鍵の現在のインスタンス内の各ビットまたは前記特定の二進値を有さない前記Ｎビット暗号鍵の前記現在のインスタンス内のいかなるビットもネゲートしないことによって生成されることと、
前記ランダムＮビット更新シーケンス内の各ビットが、前記特定の二進値を有する確率ｑiで生成されることと、
を条件とすることと、
前記プロセッサが、前記確率を計算した後に、前記更新を行う時に使用するための前記確率を提供することと、
を含む方法。
【外国語明細書】
2020145629000001.pdf