(57)【要約】本願に開示されるのは、全てのＣＲＴパラメータの組｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝よりも少ない記憶空間を用い、かつ、最小限のパラメータの組｛ｐ，ｑ｝よりも優れた計算効率を提供する秘密鍵のパラメータ化を提供することにより、暗号化システムにおいて秘密鍵を記憶／回復するためのシステムおよび方法である。さらに開示されるのは、全ての非ＣＲＴパラメータの組｛ｎ，ｄ｝よりも少ない記憶空間を用い、かつ、最小限のパラメータの組｛ｐ，ｑ｝よりも優れた計算効率を提供する秘密鍵のパラメータ化を提供することにより、暗号化システムにおいて秘密鍵を記憶／回復するためのシステムおよび方法である。本願にさらに開示されるのは、計算順序が素因数ｐ，ｑの値とは無関係であることにより、このような依存関係を悪用した攻撃に対する脆弱性が低減するような方法で、パラメータｄｐ，ｄｑ，ｄを計算するための手段を提供することである。
2004505548.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
前記プロセッサに動作可能に連結された不揮発性メモリ空間と、
全てのパラメータの組｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝よりも少ない記憶空間を利用して、かつ、最小限のパラメータの組｛ｐ，ｑ｝よりも優れた計算効率を提供して、前記不揮発性メモリ空間に記憶された秘密鍵パラメータの組と
を組み合わせて具備し、
前記秘密鍵を、前記記憶された秘密鍵パラメータの組から回復できることを特徴とする暗号化システムの秘密鍵回復装置。
【請求項２】
前記秘密鍵パラメータの組は、パラメータ｛ｐ，ｑ，ｋｐ，ｋｑ，ｖ｝により定義され、
ｐ，ｑは公開モジュラスの所定の素因数であり、ｋｐ，ｋｑはｋｐ（ｐ−１） ｍｏｄ ｅ＝１と、ｋｑ（ｑ−１） ｍｏｄ ｅ＝１とから得られ、ｅは所定の公開指数であり、かつ、ｖはｐｖ ｍｏｄ ｑ＝１から得られることを特徴とする請求項１に記載の暗号化システムの秘密鍵回復装置。
【請求項３】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］ｕ ｍｏｄ ２ｂからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］ｕ ｍｏｄ ２ｂからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備し、
ｂはｐ＜２ｂかつｑ＜２ｂであるような整数であり、かつ、ｕｅ ｍｏｄ ２ｂ＝１であることを特徴とする請求項２に記載の暗号化システムの秘密鍵回復装置。
【請求項４】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項３に記載の暗号化システムの秘密鍵回復装置。
【請求項５】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］／ｅからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］／ｅからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備することを特徴とする請求項２に記載の暗号化システムの秘密鍵回復装置。
【請求項６】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項５に記載の暗号化システムの秘密鍵回復装置。
【請求項７】
前記秘密鍵パラメータの組は、パラメータ｛ｐ，ｑ，ｋｐ，ｋｑ｝により定義され、
ｐ，ｑは公開モジュラスの所定の素因数であり、ｋｐ，ｋｑはｋｐ（ｐ−１） ｍｏｄ ｅ＝１と、ｋｑ（ｑ−１） ｍｏｄ ｅ＝１とから得られ、かつ、ｅは所定の公開指数であることを特徴とする請求項１に記載の暗号化システムの秘密鍵回復装置。
【請求項８】
前記プロセッサと能動的に協働し、かつ、ｐｖ ｍｏｄ ｑ＝１からｖを計算するように構成設定されたｖ計算器をさらに具備することを特徴とする請求項７に記載の暗号化システムの秘密鍵回復装置。
【請求項９】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］ｕ ｍｏｄ ２ｂからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］ｕ ｍｏｄ ２ｂからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備し、
ｂはｐ＜２ｂかつｑ＜２ｂであるような整数であり、かつ、ｕｅ ｍｏｄ ２ｂ＝１であることを特徴とする請求項８に記載の暗号化システムの秘密鍵回復装置。
【請求項１０】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項９に記載の暗号化システムの秘密鍵回復装置。
【請求項１１】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］／ｅからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］／ｅからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備することを特徴とする請求項８に記載の暗号化システムの秘密鍵回復装置。
【請求項１２】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項１０に記載の暗号化システムの秘密鍵回復装置。
【請求項１３】
前記秘密鍵パラメータの組は、パラメータ｛ｓｅｅｄ，ｋｐ，ｋｑ，ｖ｝により定義され、
ｋｐ，ｋｑはｋｐ（ｐ−１） ｍｏｄ ｅ＝１と、ｋｑ（ｑ−１） ｍｏｄ ｅ＝１とから得られ、ｅは所定の公開指数であり、ｖはｐｖ ｍｏｄ ｑ＝１から得られ、かつ、ｓｅｅｄは乱数生成器から得られる値であることを特徴とする請求項１に記載の暗号化システムの秘密鍵回復装置。
【請求項１４】
前記プロセッサと能動的に協働し、かつ、前記ｓｅｅｄからｐを計算するように構成設定されたｐ計算器と
前記プロセッサと能動的に協働し、かつ、前記ｓｅｅｄからｑを計算するように構成設定されたｑ計算器と
をさらに具備することを特徴とする請求項１３に記載の暗号化システムの秘密鍵回復装置。
【請求項１５】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］ｕ ｍｏｄ ２ｂからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］ｕ ｍｏｄ ２ｂからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備し、
ｂはｐ＜２ｂかつｑ＜２ｂであるような整数であり、かつ、ｕｅ ｍｏｄ ２ｂ＝１であることを特徴とする請求項１４に記載の暗号化システムの秘密鍵回復装置。
【請求項１６】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項１５に記載の暗号化システムの秘密鍵回復装置。
【請求項１７】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］／ｅからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］／ｅからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備することを特徴とする請求項１４に記載の暗号化システムの秘密鍵回復装置。
【請求項１８】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項１７に記載の暗号化システムの秘密鍵回復装置。
【請求項１９】
前記秘密鍵パラメータの組は、パラメータ｛ｓｅｅｄ，ｋｐ，ｋｑ｝により定義され、
ｋｐ，ｋｑはｋｐ（ｐ−１） ｍｏｄ ｅ＝１と、ｋｑ（ｑ−１） ｍｏｄ ｅ＝１とから得られ、ｅは所定の公開指数であり、かつ、ｓｅｅｄは乱数生成器から得られる値であることを特徴とする請求項１に記載の暗号化システムの秘密鍵回復装置。
【請求項２０】
前記プロセッサと能動的に協働し、かつ、前記ｓｅｅｄからｐを計算することが可能なｐ計算器と
前記プロセッサと能動的に協働し、かつ、前記ｓｅｅｄからｑを計算することが可能なｑ計算器と
をさらに具備することを特徴とする請求項１９に記載の暗号化システムの秘密鍵回復装置。
【請求項２１】
前記プロセッサと能動的に協働し、かつ、ｐｖ ｍｏｄ ｑ＝１からｖを計算するように構成設定されたｖ計算器をさらに具備することを特徴とする請求項２０に記載の暗号化システムの秘密鍵回復装置。
【請求項２２】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］ｕ ｍｏｄ ２ｂからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］ｕ ｍｏｄ ２ｂからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備し、
ｂはｐ＜２ｂかつｑ＜２ｂであるような整数であり、かつ、ｕｅ ｍｏｄ ２ｂ＝１であることを特徴とする請求項２１に記載の暗号化システムの秘密鍵回復装置。
【請求項２３】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項２２に記載の暗号化システムの秘密鍵回復装置。
【請求項２４】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］／ｅからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］／ｅからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備することを特徴とする請求項２１に記載の暗号化システムの秘密鍵回復装置。
【請求項２５】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項２４に記載の暗号化システムの秘密鍵回復装置。
【請求項２６】
前記秘密鍵パラメータの組は、パラメータ｛ｐ，ｑ，ｖ｝により定義され、
ｐ，ｑは公開モジュラスの所定の素因数であり、かつ、ｖはｐｖ ｍｏｄ ｑ＝１から得られることを特徴とする請求項１に記載の暗号化システムの秘密鍵回復装置。
【請求項２７】
前記プロセッサと能動的に協働し、かつ、ｋｐ（ｐ−１） ｍｏｄ ｅ＝１からｋｐを計算するように構成設定されたｋｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｋｑ（ｑ−１） ｍｏｄ ｅ＝１からｋｑを計算するように構成設定されたｋｑ計算器と
をさらに具備し、
ｅは所定の公開指数であることを特徴とする請求項２６に記載の暗号化システムの秘密鍵回復装置。
【請求項２８】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］ｕ ｍｏｄ ２ｂからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］ｕ ｍｏｄ ２ｂからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備し、
ｂはｐ＜２ｂかつｑ＜２ｂであるような整数であり、かつ、ｕｅ ｍｏｄ ２ｂ＝１であることを特徴とする請求項２７に記載の暗号化システムの秘密鍵回復装置。
【請求項２９】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項２８に記載の暗号化システムの秘密鍵回復装置。
【請求項３０】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］／ｅからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］／ｅからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備することを特徴とする請求項２７に記載の暗号化システムの秘密鍵回復装置。
【請求項３１】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項３０に記載の暗号化システムの秘密鍵回復装置。
【請求項３２】
前記秘密鍵パラメータの組は、パラメータ｛ｐ，ｑ｝により定義され、
ｐ，ｑは公開モジュラスの所定の素因数であることを特徴とする請求項１に記載の暗号化システムの秘密鍵回復装置。
【請求項３３】
前記プロセッサと能動的に協働し、かつ、ｋｐ（ｐ−１） ｍｏｄ ｅ＝１からｋｐを計算するように構成設定されたｋｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｋｑ（ｑ−１） ｍｏｄ ｅ＝１からｋｑを計算するように構成設定されたｋｑ計算器と
をさらに具備し、
ｅは所定の公開指数であることを特徴とする請求項３２に記載の暗号化システムの秘密鍵回復装置。
【請求項３４】
前記プロセッサと能動的に協働し、かつ、ｐｖ ｍｏｄ ｑ＝１からｖを計算するように構成設定されたｖ計算器をさらに具備することを特徴とする請求項３３に記載の暗号化システムの秘密鍵回復装置。
【請求項３５】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］ｕ ｍｏｄ ２ｂからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］ｕ ｍｏｄ ２ｂからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備し、
ｂはｐ＜２ｂかつｑ＜２ｂであるような整数であり、かつ、ｕｅ ｍｏｄ ２ｂ＝１であることを特徴とする請求項３４に記載の暗号化システムの秘密鍵回復装置。
【請求項３６】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項３５に記載の暗号化システムの秘密鍵回復装置。
【請求項３７】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］／ｅからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］／ｅからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備することを特徴とする請求項３４に記載の暗号化システムの秘密鍵回復装置。
【請求項３８】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項３７に記載の暗号化システムの秘密鍵回復装置。
【請求項３９】
前記秘密鍵パラメータの組は、パラメータ｛ｓｅｅｄ，ｖ｝により定義され、
ｖはｐｖ ｍｏｄ ｑ＝１から得られ、かつ、ｓｅｅｄは乱数生成器から得られる値であることを特徴とする請求項１に記載の暗号化システムの秘密鍵回復装置。
【請求項４０】
前記プロセッサと能動的に協働し、かつ、前記ｓｅｅｄからｐを計算するように構成設定されたｐ計算器と
前記プロセッサと能動的に協働し、かつ、前記ｓｅｅｄからｑを計算するように構成設定されたｑ計算器と
をさらに具備することを特徴とする請求項３９に記載の暗号化システムの秘密鍵回復装置。
【請求項４１】
前記プロセッサと能動的に協働し、かつ、ｋｐ（ｐ−１） ｍｏｄ ｅ＝１からｋｐを計算するように構成設定されたｋｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｋｑ（ｑ−１） ｍｏｄ ｅ＝１からｋｑを計算するように構成設定されたｋｑ計算器と
をさらに具備し、
ｅは所定の公開指数であることを特徴とする請求項４０に記載の暗号化システムの秘密鍵回復装置。
【請求項４２】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］ｕ ｍｏｄ ２ｂからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］ｕ ｍｏｄ ２ｂからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備し、
ｂはｐ＜２ｂかつｑ＜２ｂであるような整数であり、かつ、ｕｅ ｍｏｄ ２ｂ＝１であることを特徴とする請求項４１に記載の暗号化システムの秘密鍵回復装置。
【請求項４３】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項４２に記載の暗号化システムの秘密鍵回復装置。
【請求項４４】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］／ｅからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］／ｅからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備することを特徴とする請求項４１に記載の暗号化システムの秘密鍵回復装置。
【請求項４５】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項４４に記載の暗号化システムの秘密鍵回復装置。
【請求項４６】
前記秘密鍵パラメータの組は、パラメータ｛ｓｅｅｄ｝により定義され、
ｓｅｅｄは乱数生成器から得られる値であることを特徴とする請求項１に記載の暗号化システムの秘密鍵回復装置。
【請求項４７】
前記プロセッサと能動的に協働し、かつ、前記ｓｅｅｄからｐを計算することが可能なｐ計算器と
前記プロセッサと能動的に協働し、かつ、前記ｓｅｅｄからｑを計算することが可能なｑ計算器と
をさらに具備することを特徴とする請求項４６に記載の暗号化システムの秘密鍵回復装置。
【請求項４８】
前記プロセッサと能動的に協働し、かつ、ｋｐ（ｐ−１） ｍｏｄ ｅ＝１からｋｐを計算するように構成設定されたｋｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｋｑ（ｑ−１） ｍｏｄ ｅ＝１からｋｑを計算するように構成設定されたｋｑ計算器と
をさらに具備し、
ｅは所定の公開指数であることを特徴とする請求項４７に記載の暗号化システムの秘密鍵回復装置。
【請求項４９】
前記プロセッサと能動的に協働し、かつ、ｐｖ ｍｏｄ ｑ＝１からｖを計算するように構成設定されたｖ計算器をさらに具備することを特徴とする請求項４８に記載の暗号化システムの秘密鍵回復装置。
【請求項５０】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］ｕ ｍｏｄ ２ｂからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］ｕ ｍｏｄ ２ｂからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備し、
ｂはｐ＜２ｂかつｑ＜２ｂであるような整数であり、かつ、ｕｅ ｍｏｄ ２ｂ＝１であることを特徴とする請求項４９に記載の暗号化システムの秘密鍵回復装置。
【請求項５１】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項５０に記載の暗号化システムの秘密鍵回復装置。
【請求項５２】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］／ｅからｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］／ｅからｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備することを特徴とする請求項４９に記載の暗号化システムの秘密鍵回復装置。
【請求項５３】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項５２に記載の暗号化システムの秘密鍵回復装置。
【請求項５４】
プロセッサと、
前記プロセッサに動作可能に連結された不揮発性メモリ空間と、
全てのパラメータの組｛ｎ，ｄ｝よりも少ない記憶空間を利用して、かつ、最小限のパラメータの組｛ｐ，ｑ｝よりも優れた計算効率を提供して、前記不揮発性メモリ空間に記憶された秘密鍵パラメータの組と
を組み合わせて具備し、
前記秘密鍵を、前記記憶された秘密鍵パラメータの組から回復できることを特徴とする暗号化システムの秘密鍵回復装置。
【請求項５５】
前記秘密鍵パラメータの組は、パラメータ｛ｐ，ｑ，ｋ｝により定義され、
ｐ，ｑは公開モジュラスの所定の素因数であり、ｋはｋ（ｐ−１）（ｑ−１） ｍｏｄ ｅ＝１から得られ、ｅは所定の公開指数であることを特徴とする請求項５４に記載の暗号化システムの秘密鍵回復装置。
【請求項５６】
前記プロセッサと能動的に協働し、かつ、ｎ＝ｐｑからｎを計算するように構成設定されたｎ計算器をさらに具備することを特徴とする請求項５５に記載の暗号化システムの秘密鍵回復装置。
【請求項５７】
前記プロセッサと能動的に協働し、かつ、ｄ＝［１＋（ｐ−１）（ｑ−１）］ｔ ｍｏｄ ２２ｂからｄを計算するように構成設定されたｄ計算器
をさらに具備し、
ｔｅ ｍｏｄ ２２ｂ＝１であり、かつ、ｂはｐ＜２ｂかつｑ＜２ｂであるような整数であることを特徴とする請求項５６に記載の暗号化システムの秘密鍵回復装置。
【請求項５８】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｎ，ｄ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項５７に記載の暗号化システムの秘密鍵回復装置。
【請求項５９】
前記プロセッサと能動的に協働し、かつ、ｄ＝［１＋（ｐ−１）（ｑ−１）］／ｅからｄを計算するように構成設定されたｄ計算器
をさらに具備することを特徴とする請求項５６に記載の暗号化システムの秘密鍵回復装置。
【請求項６０】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｎ，ｄ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項５９に記載の暗号化システムの秘密鍵回復装置。
【請求項６１】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝ｄ ｍｏｄ （ｐ−１）からｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝ｄ ｍｏｄ （ｑ−１）からｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備することを特徴とする請求項５７に記載の暗号化システムの秘密鍵回復装置。
【請求項６２】
前記プロセッサと能動的に協働し、かつ、ｐｖ ｍｏｄ ｑ＝１からｖを計算するように構成設定されたｖ計算器をさらに具備することを特徴とする請求項６１に記載の暗号化システムの秘密鍵回復装置。
【請求項６３】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項６２に記載の暗号化システムの秘密鍵回復装置。
【請求項６４】
前記プロセッサと能動的に協働し、かつ、ｄｐ＝ｄ ｍｏｄ （ｐ−１）からｄｐを計算するように構成設定されたｄｐ計算器と、
前記プロセッサと能動的に協働し、かつ、ｄｑ＝ｄ ｍｏｄ （ｑ−１）からｄｑを計算するように構成設定されたｄｑ計算器と
をさらに具備することを特徴とする請求項５９に記載の暗号化システムの秘密鍵回復装置。
【請求項６５】
前記プロセッサと能動的に協働し、かつ、ｐｖ ｍｏｄ ｑ＝１からｖを計算するように構成設定されたｖ計算器をさらに具備することを特徴とする請求項６４に記載の暗号化システムの秘密鍵回復装置。
【請求項６６】
前記記憶されかつ計算された値から、秘密鍵パラメータ｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝をアセンブルするための秘密鍵パラメータアセンブラをさらに具備することを特徴とする請求項６５に記載の暗号化システムの秘密鍵回復装置。
【請求項６７】
秘密鍵を回復するための方法であって、
秘密鍵パラメータをメモリ空間に記憶する段階と、
前記秘密鍵パラメータのために、全てのパラメータの組｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝よりも少ない記憶空間を利用する段階と、
最小限のパラメータの組｛ｐ，ｑ｝よりも優れた計算効率を提供する段階と
を組み合わせて具備することを特徴とする方法。
【請求項６８】
秘密鍵を回復するための方法であって、
秘密鍵パラメータをメモリ空間に記憶する段階と、
前記秘密鍵パラメータのために、全てのパラメータの組｛ｎ，ｄ｝よりも少ない記憶空間を利用する段階と、
最小限のパラメータの組｛ｐ，ｑ｝よりも優れた計算効率を提供する段階と
を組み合わせて具備することを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、概略的には、暗号化（ｃｒｙｐｔｏｇｒａｐｈｙ）システムに関する。より詳細には、本発明は、公開鍵（ｐｕｂｌｉｃ−ｋｅｙ）／秘密鍵（ｐｒｉｖａｔｅ−ｋｅｙ）暗号化システムにおいて、秘密鍵を記憶しかつ回復（ｒｅｃｏｖｅｒ）するための装置および方法に関する。
【０００２】
【従来の技術】
ＲＳＡ（リベスト（Ｒｉｖｅｓｔ）、シャミア（Ｓｈａｍｉｒ）、アドルマン（Ａｄｌｅｍａｎ））体系は、一般的に好まれる公開鍵暗号化形式である。ＲＳＡ体系は、公開モジュラス（ｐｕｂｌｉｃ ｍｏｄｕｌｕｓ）ｎと公開指数（ｐｕｂｌｉｃ ｅｘｐｏｎｅｎｔ）ｅとからなる公開鍵と、モジュラスｎと秘密指数（ｐｒｉｖａｔｅ ｅｘｐｏｎｅｎｔ）ｄとからなる秘密鍵とを用いる。公開モジュラスｎは、２つの別個の素因数（ｐｒｉｍｅ ｆａｃｔｏｒ）ｐ，ｑの積となる整数である（すなわち、ｎ＝ｐｑ）。これらの因数は秘密の情報であり、かつ、秘密鍵の保持者により開示されることはない。公開指数ｅは、値（ｐ−１），（ｑ−１）と互いに素である（ｒｅｌａｔｉｖｅｌｙ ｐｒｉｍｅ）整数である。秘密指数ｄは、ｅｄ ｍｏｄ （ｐ−１）＝ｅｄ ｍｏｄ （ｑ−１）＝１であるような整数である。
【０００３】
ＲＳＡ体系の１つの応用法は、メッセージを暗号化することである。任意の当事者（ｐａｒｔｙ）は、秘密鍵の保持者によってのみ解読できるメッセージを暗号化するために、公開鍵を用いることができる。ｍを、暗号化すべきメッセージとする（ここで、ｍは０＜ｍ＜ｎの範囲の整数である）。暗号化されたメッセージｃは、ｃ＝ｍｅ ｍｏｄ ｎとして計算される。前記暗号化メッセージを解読するために、秘密鍵の保持者は、ｍ＝ｃｄ ｍｏｄ ｎを計算する。例えば、暗号化メッセージを当事者Ｂへ送信することを希望する当事者Ａは、当事者Ｂの公開鍵を得ることにより、メッセージを暗号化する。前記メッセージについては、当事者Ｂの公開鍵と関連づけられる正しい当事者Ｂの秘密鍵によってのみ解読できるので、当事者Ｂのみが前記メッセージを解読することができる。
【０００４】
ＲＳＡ体系の他の応用法は、メッセージを信号で伝えることである。秘密鍵の保持者は、公開鍵を用いて任意の当事者により検証（ｖｅｒｉｆｙ）できる署名（ｓｉｇｎａｔｕｒｅ）を、メッセージに付け加えることができる。ｍを、署名すべきメッセージとする（ここで、ｍは０＜ｍ＜ｎの範囲の整数である）。署名ｓは、ｓ＝ｍｄ ｍｏｄ ｎとして計算される。前記署名を検証するために、任意の当事者は、公開鍵を用いて、ｍ’＝ｓｅ ｍｏｄ ｎを計算する。ｍ’の値がｍの値と符合すれば、署名は有効（ｖａｌｉｄ）である。
【０００５】
ＲＳＡ体系の安全性は、公開モジュラスの因数を決定することが難しいという仮定に基づいている。すなわち、ｎが与えられる場合に、ｎ＝ｐｑとなるような因数ｐ，ｑを決定することは非常に難しいと考えられる。因数分解の難しさの問題は、ｐ，ｑが増加するにつれて増大する。実際の実施において、ｐ，ｑは、各々が何百または何千もの２進数（ビット）からなる。その理由は、ｎがｐ，ｑの積であり、さらに、ｎが何百または何千ものビットからなるためである。
【０００６】
ＲＳＡ内で用いられる巾剰余（ｍｏｄｕｌａｒ ｅｘｐｏｎｅｎｔｉａｔｉｏｎ）演算は、計算上高価な演算である。前記演算の複雑さは、指数内のビット数に対してほぼ一次に（ｌｉｎｅａｒｌｙ）増大し、かつ、モジュラス内のビット数に対してほぼ二次に（ｑｕａｄｒａｔｉｃａｌｌｙ）増大する。幸いにも、計算支出を低減させる十分に公知の方法が幾つか存在する。
【０００７】
公開鍵演算の支出を低減させるために、公開指数を小さな数として選ぶことが通常的である。このことは、ＲＳＡ体系の安全性が公開指数のサイズとは十分に無関係であるので許容可能である。一般的に好まれる公開指数の選択は、ｅ＝２１６＋１である（この値は、新たな応用法のための事実上の標準として現れるものと思われる）。他の通常的な選択は、ｅ＝３，ｅ＝１７である。小さな公開指数によって、ＲＳＡ公開鍵演算の計算支出は比較的少なくなる。すなわち、メッセージを暗号化したりまたは署名を検証したりすることは、比較的安価である。
【０００８】
残念ながら、秘密指数ｄについては、小さな数として選ぶことはできない。その値については、自由に選択することはできない（ｅｄ ｍｏｄ （ｐ−１）＝ｅｄ ｍｏｄ （ｑ−１）＝１という条件を満たす必要がある）。ＲＳＡ体系の安全性は、任意に選択される大きな値ｐ，ｑに基づくものである。結果として、ｄは、公開モジュラスｎに匹敵するサイズの整数である。このことは、秘密鍵演算の支出を比較的高める。すなわち、メッセージを解読したりまたは署名を作成したりすることは、比較的高価である。
【０００９】
秘密鍵演算の支出については、中国剰余定理（Ｃｈｉｎｅｓｅ Ｒｅｍａｉｎｄｅｒ Ｔｈｅｏｒｅｍ：ＣＲＴ）を用いることにより低減させることができる。ＣＲＴは、
ｄｐ＝ｄ ｍｏｄ （ｐ−１）；
ｄｑ＝ｄ ｍｏｄ （ｑ−１）；
ｐｖ ｍｏｄ ｑ＝１であるようなｖ；
のような幾つかの数量の計算を必要とする。
次に、秘密鍵演算ｙ＝ｇｄ ｍｏｄ ｎは、
ａ＝（ｇ ｍｏｄ ｐ）ｄｐ ｍｏｄ ｐ；
ｂ＝（ｇ ｍｏｄ ｑ）ｄｑ ｍｏｄ ｑ；
ｙ＝ａ＋［（ｂ−ａ）ｖ ｍｏｄ ｑ］ｐ；
として計算される（ただし、前式における“（ｇ ｍｏｄ ｐ）ｄｐ”，“（ｇ ｍｏｄ ｑ）ｄｑ”は、“（ｇ ｍｏｄ ｐ）のｄｐ乗”，“（ｇ ｍｏｄ ｑ）のｄｑ乗”をそれぞれ表すものとする）。
【００１０】
ｄｐ，ｄｑ，ｖを計算する支出が無視されれば、ＣＲＴを用いた秘密鍵演算の計算支出は、ＣＲＴを用いない秘密鍵演算についての支出の約１／４である。このことは、計算支出における大きな低減であり、かつ、ＣＲＴを多くの応用法にとって望ましいものにする。
【００１１】
残念ながら、ｄｐ，ｄｑ，ｖを計算することについての支出は必ずしも無視できない。したがって、多くの応用法が、単に、ｄｐ，ｄｑ，ｖの値を予め計算し、かつ、これらの値を因数ｐ，ｑとともに秘密鍵の一部として記憶する。パラメータセット｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝を記憶する応用法は、考えられ得る最小の計算支出によって、ＣＲＴを用いて秘密鍵演算を行うことができる。５つのパラメータの各々は、ｂビットの記憶量を必要とする（ここで、ｂはモジュラスの素因数内のビット数である）。したがって、秘密鍵のための総記憶量は５ｂビットである。
【００１２】
しかしながら、幾つかの応用法において、秘密鍵を｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝として記憶することは、必要とされる記憶空間量の理由から望ましくない。応用法が秘密鍵を｛ｐ，ｑ｝として代わりに記憶すれば、秘密鍵の記憶空間は５ｂビットから２ｂビットへ低減させる（２，５倍の低減）。しかしながら、この結果、前記応用法は、秘密鍵演算を行う毎にｄｐ，ｄｑ，ｖを計算する必要がある。このことは、望ましくない計算支出となり得る。
【００１３】
これらの問題が関心事である場合の応用法の例は、ディジタル署名を作成するために用いられる低コストのスマートカードである。前記カードはＲＳＡ秘密鍵の組を記憶し、各々の鍵は様々な目的のために署名を作成するために用いられる。例えば、或る鍵については特定のクレジットカードによって行われた購入に署名するために用いることができ、他の鍵については電子メールメッセージに署名するために用いることができ、他の鍵については銀行取引に署名するために用いることができる…などである。低コストという理由から、スマートカードは限られた量の記憶空間を有するのみである。限られた空間内にできるだけ多数の秘密鍵をカードが記憶することが望ましい。さらに、低コストという理由から、スマートカードは、限られた計算能力を備えた単純なプロセッサを有するのみである。署名の計算に過度の時間を要することは望ましくないので、ＲＳＡ秘密鍵演算の計算支出を最小限にすることが重要である。
【００１４】
ｄｐ，ｄｑ，ｖの計算と関連した他の問題は安全性である。ｐ，ｑからｄｐ，ｄｑ，ｖを計算するための通常的な方法は、ユークリッド（Ｅｕｃｌｉｄ）のアルゴリズム、または、その通常的な変形例を用いることである。ユークリッドのアルゴリズムは、“整数ｘ，ｚが与えられる場合に、ｘｙ ｍｏｄ ｚ＝１であるようなｙを求めよ”という問題を解決するために利用できる算術演算系列である。演算の順序は、オペランド（ｏｐｅｒａｎｄ）の数値に依存する（すなわち、ｙまたはｚの数値の変化は、乗算や減算などのような算術演算の順番の変化を生じさせ得る）。このような依存関係は、或る応用法において記憶された秘密鍵を、電流引き込み（ｅｌｅｃｔｒｉｃａｌ ｃｕｒｒｅｎｔ ｄｒａｗ）や電磁放射などのような外部的に可用な応答を測定しながら該応用法への入力を巧妙に選択する攻撃者による発見に対して脆弱なものにする。このような攻撃は、商業的および政治的の両方の場合における実際の安全装置に対して首尾よく実行されてきた。このような攻撃に対する脆弱性（ｖｕｌｎｅｒａｂｉｌｉｔｙ）を低減させるために、ｄｐ，ｄｑ，ｖを計算するために用いられる演算の順序がｐ，ｑの値によって変化しないことが望ましい。
【００１５】
低コストのスマートカードの例について続けると、該カードは、ＲＳＡ内で用いられる巾剰余演算を加速させる算術コプロセッサ（ａｒｉｔｈｍｅｔｉｃ ｃｏｐｒｏｃｅｓｓｏｒ）を含む。秘密鍵演算の間に、巾剰余は、つい先程述べた類の攻撃に対して脆弱である。このような攻撃に対する脆弱性を低減させるために、コプロセッサは、演算の順序がオペランドの値に依存しないことを保証するように慎重に設計される。しかしながら、ＲＳＡ秘密鍵演算の間に、スマートカードは、ｄｐ，ｄｑ，ｖを計算することをさらに必要とし、その結果、ｄｐ，ｄｑ，ｖの計算は、潜在的な脆弱性のさらなる原因となる。この追加された脆弱性を低減させるために、ｄｐ，ｄｑ，ｖの計算は、ｐ，ｑの値に依存しない演算の順序を用いる必要がある。ｐ，ｑは素数であるので、ｖについては、演算ｖ＝ｐｑ−２ ｍｏｄ ｑを経た巾剰余を用いて計算することができる。こうして、スマートカードは、ｖの計算と関連したあらゆる新たな脆弱性を排除しながらｖを計算するために、コプロセッサを用いることができる。しかしながら、巾剰余を用いてｄｐ，ｄｑを計算することは不可能である。したがって、新たな脆弱性を導入しない方法でｄｐ，ｄｑを計算するためには、幾つかの体系が必要とされる。
【００１６】
前述の論考はＣＲＴを用いる応用法に焦点を当てているが、全ての応用法がＣＲＴを用いるわけではない。幾つかの応用法は、秘密鍵演算が（より高価ではあるが）より単純な演算であれば、ＣＲＴを用いずに秘密鍵演算を行う。幾つかのこのような応用法において、記憶空間および安全性は、未だに重要な問題である。
【００１７】
秘密鍵を非ＣＲＴの応用法において記憶するための最も直接的な方法は、パラメータ｛ｎ，ｄ｝を記憶することである（ここで、ｎは公開モジュラスであり、ｄは秘密指数である）。この方法で秘密鍵を記憶するためには、４ｂビットを必要とする。
【００１８】
代替案として、非ＣＲＴの応用法において、秘密鍵を、単に｛ｐ，ｑ｝として記憶することができる（ここで、ｐ，ｑはｎの素因数である）。秘密鍵演算が行われる毎に、ｎ，ｄが、ｐ，ｑという記憶された値から計算される。この方法で記憶される場合に、秘密鍵は２ｂビットを必要とする。このことは、鍵を｛ｎ，ｄ｝として記憶することに対して２倍の節約になる。ｎ＝ｐｑであるので、ｐ，ｑからｎを計算することは、１回の乗算による演算である。このことは、巾剰余と比較して安価な演算であり、かつ、１回の演算であるので、ｐ，ｑを暴露するという新たな脆弱性が導入されない。しかしながら、ＣＲＴの場合におけるｄｐ，ｄｑのように、ｐ，ｑからｄを計算することは、著しい計算支出となることがあり、かつ、ｐ，ｑの値によって変動する計算順序に起因した安全性の脆弱性を導入し得る。
【００１９】
【発明が解決しようとする課題】
したがって、本発明の目的は、全てのパラメータの組｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝よりも少ない記憶空間を用い、かつ、最小限のパラメータの組｛ｐ，ｑ｝よりも優れた計算効率を提供する、ＣＲＴの応用法のためのＲＳＡ秘密鍵のパラメータ化を提供することである。
【００２０】
さらに、本発明の目的は、全てのパラメータの組｛ｎ，ｄ｝よりも少ない記憶空間を用い、かつ、最小限のパラメータの組｛ｐ，ｑ｝よりも優れた計算効率を提供する、非ＣＲＴの応用法のためのＲＳＡ秘密鍵のパラメータ化を提供することである。
【００２１】
さらに、本発明の目的は、計算順序が素因数ｐ，ｑの値とは無関係であり、これにより、このような依存関係を悪用した攻撃に対する脆弱性が低減するような方法で、ＣＲＴパラメータｄｐ，ｄｑと、非ＣＲＴパラメータｄとを計算するための手段を提供することである。
【００２２】
【課題を解決するための手段】
従来技術についてのこれらのおよび他の欠点を克服するために、本明細書に開示されるのは、暗号化秘密鍵の記憶／回復体系を提供するための装置および方法であり、両方の体系が、空間の必要条件を減少させ、かつ、安全性を高めるものである。より詳細には、本発明のシステムは、以前に用いられていない記憶されたパラメータから秘密鍵を得るための手段を提供し、かつ、或るパラメータを計算する一方で同時に安全性の脆弱性を低減させるための手段を提供する。
【００２３】
本発明の一特徴は、ＣＲＴパラメータｄｐ，ｄｑと、非ＣＲＴパラメータｄとを、より小さなパラメータｋｐ，ｋｑ，ｋにそれぞれ置き換えることである。ｋｐ，ｋｑ，ｋの値は、
ｋｐ（ｐ−１） ｍｏｄ ｅ＝１；
ｋｑ（ｑ−１） ｍｏｄ ｅ＝１；
ｋ（ｐ−１）（ｑ−１） ｍｏｄ ｅ＝１；
という関係を満たす値である。
【００２４】
ｋｐ，ｋｑ，ｋの各々は、１以上（ｅ−１）以下の範囲の値を有する。したがって、各々は、公開指数ｅを記憶するために必要なビット数と同じビットしか必要としない。一般的に好まれるｅ＝２１６＋１の場合に、ｋｐ，ｋｑ，ｋの各々については、１６ビット値（ｋｐ−１），（ｋｑ−１），（ｋ−１）としてそれぞれ記憶することができる。
【００２５】
対照的に、ｄｐ，ｄｑは各々がｂビットの記憶量を必要とし、かつ、ｄは２ｂビットの記憶量を必要とする（ここで、ｂは素因数ｐ，ｑにおけるビット数である）。典型的なｂの値は、１０２４ビットを有する公開モジュラスに対応する５１２である。この典型的な場合において、ｄｐ，ｄｑは各々がｋｐ，ｋｑよりも３２倍多い記憶空間を必要とし、かつ、ｄはｋよりも６４倍多い記憶空間を必要とする。
【００２６】
ｋｐ，ｋｑを記憶するＣＲＴの応用法は、
ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］／ｅ；
ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］／ｅ；
という計算により、ｄｐ，ｄｑを回復することができる。
ｋを記憶する非ＣＲＴの応用法は、
ｄ＝［１＋（ｐ−１）（ｑ−１）（ｅ−ｋ）］／ｅ；
という計算により、ｄを回復することができる。
これらの計算の各々において、“／”は、整数の除算（ｉｎｔｅｇｅｒ ｄｉｖｉｓｉｏｎ）を表す（各々の場合に、被除数（ｄｉｖｉｄｅｎｄ）は、除数（ｄｉｖｉｓｏｒ）の倍数であるので、余りは存在しない）。これらの計算が正しい結果をもたらすことの証明は、この要約の最後において与えられる。
【００２７】
ｄｐ，ｄｑ，ｄについてのこれらの計算は、前記応用法が公開指数ｅを除数とする除算を行うことを必要とする。幾つかの応用法において、除算は不適当でありかつ望ましくない演算である。さらに、応用法が通常の長除法（ｌｏｎｇ ｄｉｖｉｓｉｏｎ）の演算系列を用いた除算を実施すれば、演算の順序はｐ，ｑの値に依存し、これにより、秘密鍵がこのような依存関係を悪用した攻撃に対して脆弱なものとなり得る。
【００２８】
除算の必要性を回避するために、ＣＲＴの応用法は、
ｕｅ ｍｏｄ ２ｂ＝１であるようなｕを計算する；
ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］ｕ ｍｏｄ ２ｂ；
ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］ｕ ｍｏｄ ２ｂ；
という計算を用いて、ｄｐ，ｄｑを回復することができる。
非ＣＲＴの応用法は、
ｔｅ ｍｏｄ ２２ｂ＝１であるようなｔを計算する；
ｄ＝［１＋（ｐ−１）（ｑ−１）（ｅ−ｋ）］ｔ ｍｏｄ ２２ｂ；
という計算を経て、除算を用いずにｄを回復することができる。
これらの計算が正しい結果をもたらすことの証明は、この要約の最後において与えられる。
【００２９】
ｕ，ｔについての計算をしばらく無視すると、ｄｐ，ｄｑ，ｄを回復するためのこれらの計算が計算上安価でありかつ安全性の脆弱性を導入しないことが明らかである。各計算は、２つまたは３つの整数の乗算と、３つまたは４つの整数の加算／減算と、“ｍｏｄ ２ｂ”演算または“ｍｏｄ ２２ｂ”演算とからなる。乗算、加算、および、減算という演算は、巾剰余を実施するために用いられる演算と類似している。１回の巾剰余は、このような演算を何千個も用いるので、演算が数回多いために追加される負担は無視できるものである。“ｍｏｄ ２ｂ”演算は単にｂビットへの切り捨てであり、かつ、“ｍｏｄ ２２ｂ”演算は２ｂビットへの切り捨てである（これらもまた、無視できるものである）。演算の順序はｐ，ｑの値に依存しないので、このような依存関係を悪用した攻撃に対する新たな脆弱性を導入せずに計算を実施することができる。
【００３０】
ところで、ｕ，ｔの計算に目を向けると、安全性の問題が存在しないことを理解することは容易である（前記計算は秘密鍵を必要としないので、該計算は、自身が実施される方法の如何を問わず、秘密鍵に対する攻撃の可能性を導入することはない）。以下のように、計算上安価であることもまた事実である。
【００３１】
第一に、公開指数ｅが全ての秘密鍵に対して同じである場合について考慮する。この場合に、ｕまたはｔは固定値であるので、全ての秘密鍵のために単に一度記憶され、かつ、必要に応じて検索され得る。当該の秘密鍵が様々な長さであっても（すなわち、ｂの値が秘密鍵に応じて変動する場合であっても）、ｕまたはｔのための値を１つだけ記憶すればよく、この値は、ｂの最大値に対応する値となる。最大値以外のｂの値について、記憶された値を、ｕについて“ｍｏｄ ２ｂ＆ｑｏｕｔを用い、または、ｔについて“ｍｏｄ ２２ｂ＆ｑｏｕｔを用いて、単に切り捨てることができる。一般的に好まれるｅ＝２１６＋１の場合には、ｕ，ｔを記憶することさえも不要である。どちらも、
ｕ＝［１＋（２３２−２１６）＋（２６４−２４８）＋（２９６−２８０）＋（２１２８−２１１２）＋…］ ｍｏｄ ２ｂ；
ｔ＝［１＋（２３２−２１６）＋（２６４−２４８）＋（２９６−２８０）＋（２１２８−２１１２）＋…］ ｍｏｄ ２２ｂ；
という安価な計算を用いて生成することができる。ｅ＝３、または、ｅ＝１７のような他の通常的なｅの選択についても、同様の計算を得ることができる。
【００３２】
第二に、公開指数ｅが各々の秘密鍵に対して異なりかつ任意のものである汎用的な場合について考慮する。この場合に、応用法は、（２ｂまたは２２ｂのような）２の累乗であるモジュラスに関する数の逆数を計算する汎用アルゴリズムを用いて、ｕまたはｔを計算する必要がある。このようなアルゴリズムは十分に公知であり、かつ、計算上安価である。多くの応用法において、このようなアルゴリズムは巾剰余演算の一部として既に実施されている（詳細には、巾剰余を実施するために一般的に好まれる手段であるモンゴメリ乗算（Ｍｏｎｔｇｏｍｅｒｙ ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）を用いる多くの応用法は、このようなアルゴリズムを有している）。巾剰余演算についての支出と比較して、このようなアルゴリズムを実行する場合の計算支出は、通常は少ないものである。
【００３３】
本明細書内での論考は、公開モジュラスｎが２つの素数ｐ，ｑの積である場合に焦点を当ててきた。このことはＲＳＡ体系において通常の状態である。しかしながら、ＲＳＡ体系については、ｊ個の素数の積であるモジュラスへ一般化することができる（ここで、ｊは整数（ｊ≧２）である）。このような一般化については、米国特許第５，８４８，１５９号明細書に説明されている。本発明は、一般化体系に適用されるものである。例えば、素因数ｐ１，ｐ２，…，ｐｊを備えたＣＲＴの応用法について考慮する。ｄｉ＝ｄ ｍｏｄ （ｐｉ−１）（ｉ＝１，２，…，ｊ）により定義される、秘密指数ｄのｊ個の例が存在する。本発明を適用するために、各々のｄｉは、鍵が記憶される時にｋｉに置き換えられる（ここで、ｋｉは、ｋｉ（ｐｉ−１） ｍｏｄ ｅ＝１であるような値である）。ｋｉからｄｉを回復するためには、ｄｉ＝［１＋（ｐｉ−１）（ｅ−ｋｉ）］／ｅ、または、ｄｉ＝［１＋（ｐｉ−１）（ｅ−ｋｉ）］ｕｉ ｍｏｄ ２ｂｉを計算する。ここで、ｂｉはｐｉ＜２ｂｉであるような整数であり、かつ、ｕｉはｅｕｉ ｍｏｄ ２ｂｉ＝１を満たす値である。（ただし、上記の記載における“２ｂｉ”は、いずれも“２のｂｉ乗”を表すものとする。）
【００３４】
ｄｐ，ｄｑ，ｄについての公式を証明する。第一に、ｅｄｐ ｍｏｄ （ｐ−１）＝１である旨を示すことにより、
ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］／ｅ　…（１）
という公式がｄｐについての正しい値をもたらすことが証明される。
【００３５】
ａ＝１＋（ｐ−１）（ｅ−ｋｐ）であるとする。第一に、公式（１）内の除算演算が整数値をもたらすように、ａがｅの倍数であることを示す必要がある。定義により、ｋｐ（ｐ−１） ｍｏｄ ｅ＝１である。したがって、ｋｐ（ｐ−１）−１はｅの倍数である。ａ＝ｅ（ｐ−１）−［ｋｐ（ｐ−１）−１］であるので、その結果、ａはｅの倍数ということになる。
【００３６】
ところで、ｄｐを、（１）のようなｄｐとする。その結果、ｅｄｐ ｍｏｄ （ｐ−１）＝ａ ｍｏｄ （ｐ−１）＝１である。このことは、公式（１）を証明するものである。
【００３７】
次に、ｅｄｐ ｍｏｄ （ｐ−１）＝１である旨を示すことにより、
ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］ｕ ｍｏｄ ２ｂ　…（２）
という公式がｄｐについての正しい値をもたらすことを証明する。
【００３８】
再び、ａ＝１＋（ｐ−１）（ｅ−ｋｐ）であるとする。ａがｅの倍数であるのでａ＝ｃｅ（ここで、ｃは整数）と書くことができる旨については、以前に示した。０≦（ｐ−１）＜２ｂ、かつ、０≦（ｅ−ｋｐ）≦ｅであるので、その結果、０＜ａ＜ｅ２ｂ、したがって、０＜ｃ＜２ｂということになる。ところで、ｄｐを、（２）のようなｄｐとする。その結果、
ｅｄｐ ｍｏｄ （ｐ−１）
＝ｅ［ａｕ ｍｏｄ ２ｂ］ ｍｏｄ （ｐ−１）
＝ｅ［ｃｕｅ ｍｏｄ ２ｂ］ ｍｏｄ （ｐ−１）
＝ｅ［ｃ ｍｏｄ ２ｂ］ ｍｏｄ （ｐ−１）
＝ｅｃ ｍｏｄ （ｐ−１）
＝ａ ｍｏｄ （ｐ−１）
＝１
となる。
このことは、公式（２）を証明するものである。
【００３９】
ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］／ｅ　…（３）
ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］ｕ ｍｏｄ ２ｂ　…（４）
という公式についての証明は、ｄｐをｄｑに置き換え、ｋｐをｋｑに置き換え、かつ、ｐをｑに置き換えれば、公式（１），（２）についての証明と同一である。
【００４０】
ｄ＝［１＋（ｐ−１）（ｑ−１）（ｅ−ｋ）］／ｅ　…（５）
ｄ＝［１＋（ｐ−１）（ｑ−１）（ｅ−ｋ）］ｔ ｍｏｄ ２２ｂ　…（６）
という公式についての証明は、公式（１），（２）についての証明と同様である。（５），（６）についての立論は、ｄｐをｄに置き換え、ｋｐをｋに置き換え、（ｐ−１）を（ｐ−１）（ｑ−１）に置き換え、かつ、２ｂを２２ｂに置き換えれば、それぞれ、公式（１），（２）についての証明と同一である。各々の場合の立論の結論は、ｅｄ ｍｏｄ （ｐ−１）（ｑ−１）＝１ということである。このことから、ｅｄ ｍｏｄ （ｐ−１）＝ｅｄ ｍｏｄ （ｑ−１）＝１ということになる。
【００４１】
第一の観点から検討した場合に、プロセッサと、前記プロセッサに動作可能に連結された不揮発性メモリ空間と、全てのパラメータの組｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝よりも少ない記憶空間を利用して、かつ、最小限のパラメータの組｛ｐ，ｑ｝よりも優れた計算効率を提供して、前記不揮発性メモリ空間に記憶された秘密鍵パラメータの組とを組み合わせて具備し、前記秘密鍵を、前記記憶された秘密鍵パラメータの組から回復できる、暗号化システムの秘密鍵回復装置が開示される。
【００４２】
他の観点から検討した場合に、秘密鍵を回復するための方法であって、秘密鍵パラメータをメモリ空間に記憶する段階と、前記秘密鍵パラメータのために、全てのパラメータの組｛ｎ，ｄ｝よりも少ない記憶空間を利用する段階と、最小限のパラメータの組｛ｐ，ｑ｝よりも優れた計算効率を提供する段階とを組み合わせて具備することを特徴とする方法が開示される。
【００４３】
【発明の実施の形態】
当業者であれば、以下の本発明についての説明が説明的なものに過ぎず、決して制限的なものではないことを理解するだろう。本発明の他の実施形態についても、この開示内容の支援を受けた当業者により想到されるだろう。
【００４４】
図１は、本発明を利用することが可能な暗号化システム１０を説明している。暗号化システム１０は、Ｉ／Ｏポート１２を経て自身に提供されたメッセージに署名し、かつ、該メッセージを解読する。暗号化システム１０は、署名および解読を行うために、ＲＳＡ体系を用いる。暗号化システム１０は、該暗号化システム１０の全ての演算を制御するプロセッサ１４を有する。暗号化システム１０は、署名および解読の際にＲＳＡ体系内で用いられる計算を促進する算術コプロセッサ（ＡＣＰ）１６を有する。署名および解読を行うために用いられる秘密鍵は、暗号化システム１０内の不揮発性記憶装置１８に記憶される。
【００４５】
暗号化システム１０は、Ｉ／Ｏポート１２を経て自身に与えられた指令にしたがって、不揮発性記憶装置１８内の秘密鍵の集合を記憶することが可能であり、かつ、特定の署名および解読のために用いるべき秘密鍵を選択することが可能である。暗号化システム１０は、不揮発性記憶装置１８内に記憶されたあらゆる秘密鍵に対応する公開鍵を計算することが可能であり、かつ、公開鍵をＩ／Ｏポート１２を経て外部装置２０へ送信することが可能である。
【００４６】
暗号化システム１０は、秘密鍵を生成することが可能であり、かつ、これらを不揮発性記憶装置１８に記憶することが可能である。秘密鍵を生成する時に、暗号化システム１０は、秘密鍵の素因数ｐ，ｑが任意に選ばれることを保証するために、乱数生成器（ｒａｎｄｏｍ ｎｕｍｂｅｒ ｇｅｎｅｒａｔｏｒ：ＲＮＧ）２２を用いる。ＲＮＧ２２は、ｐ，ｑを生成するアルゴリズムに適用される乱数シード（ｒａｎｄｏｍ ｓｅｅｄ）を提供する。秘密鍵を記憶する時に、暗号化システム１０は、ｐ，ｑを記憶する代わりに前記シードを記憶することができ、秘密鍵が署名および解読のために用いられる毎に前記アルゴリズムをシードに適用することによりｐ，ｑの値を回復する。
【００４７】
暗号化システム１０は、さらに、外部装置２０からＩ／Ｏポート１２を経て自身に提供された秘密鍵を受け入れることが可能であり、かつ、該秘密鍵を不揮発性記憶装置１８に記憶することが可能である。外部から提供された秘密鍵については、暗号化システム１０の不揮発性記憶装置１８内に既に存在する秘密鍵の１つに対応する公開鍵を用いて、外部装置により暗号化することができる。このような場合に、暗号化システム１０は、暗号化された秘密鍵を、不揮発性記憶装置１８内に既に存在する秘密鍵を用いて解読し、次に、解読された秘密鍵を不揮発性記憶装置１８に記憶する。
【００４８】
秘密鍵が暗号化システム１０により生成されたのか、または、外部装置２０により提供されたのかとは関係なく、暗号化システム１０は、安全性の脆弱性を導入せずに秘密鍵を記憶しかつ該秘密鍵を迅速に回復するために必要な不揮発性記憶装置１８の量を低減させるために、本発明を用いることが可能である。暗号化システム１０は、記憶空間〜対〜回復速度の折り合いをつけるように本発明を適用できる方法について、多数の関連した変形例を有する。
【００４９】
第１例において、今から図２を参照すると、最初に、秘密鍵パラメータを、｛ｐ，ｑ，ｋｐ，ｋｑ，ｖ｝として記憶する。ここで、ｐ，ｑは公開モジュラスの素因数であり、ｖはｐｖ ｍｏｄ ｑ＝１を満たす値であり、ｋｐはｋｐ（ｐ−１） ｍｏｄ ｅ＝１（ｅは公開指数）を満たす値であり、かつ、ｋｑはｋｑ（ｑ−１） ｍｏｄ ｅ＝１を満たす値である。｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝（ここで、ｄｐ＝ｄ ｍｏｄ （ｐ−１）、ｄｑ＝ｄ ｍｏｄ （ｑ−１）、かつ、ｄは秘密指数である）という通常のＣＲＴ形式で秘密鍵を回復するために、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］ｕ ｍｏｄ ２ｂと、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］ｕ ｍｏｄ ２ｂとを計算する（ここで、ｂはｐ＜２ｂかつｑ＜２ｂであるような整数であり、かつ、ｕはｕｅ ｍｏｄ ２ｂ＝１を満たす値である）。
【００５０】
第２例において、今から図３を参照すると、最初に、秘密鍵パラメータを、｛ｐ，ｑ，ｋｐ，ｋｑ｝として記憶する（ここで、ｐ，ｑ，ｋｐ，ｋｑは第１例の場合と同様である）。秘密鍵を回復するために、最初に、ｐｖ ｍｏｄ ｑ＝１を満たす値ｖを計算する。次に、｛ｐ，ｑ，ｋｐ，ｋｑ｝を用いて、第１例の場合と同様に進行する。
【００５１】
第３例において、今から図４を参照すると、最初に、秘密鍵パラメータを、｛ｓｅｅｄ，ｋｐ，ｋｑ，ｖ｝として記憶する（ここで、ｓｅｅｄは公開モジュラスの素因数ｐ，ｑを生成するアルゴリズムへの入力であり、ｋｐ，ｋｑ，ｖは第１例の場合と同様である）。秘密鍵を回復するために、最初に、アルゴリズムをｓｅｅｄに適用してｐ，ｑの値を回復する。次に、｛ｐ，ｑ，ｋｐ，ｋｑ，ｖ｝を用いて、第１例の場合と同様に進行する。多数のシードアルゴリズムが従来技術において公知である。例えば、［ＦＩＰＳ１８６］米国商務省／国立標準技術研究所（Ｕ．Ｓ． Ｄｅｐａｒｔｍｅｎｔ ｏｆ Ｃｏｍｍｅｒｃｅ／Ｎａｔｉｏｎａｌ Ｉｎｓｔｉｔｕｔｅ ｏｆ Ｓｔａｎｄａｒｄ ａｎｄ Ｔｅｃｈｎｏｌｏｇｙ）の”Ｄｉｇｉｔａｌ Ｓｉｇｎａｔｕｒｅ Ｓｔａｎｄａｒｄ（ＤＳＳ）”（ＦＩＰＳ ＰＵＢ １８６−２， Ｊａｎｕａｒｙ ２７， ２０００）の”Ａｐｐｅｎｄｉｘ ２”における、乱数シードから素数を生成するアルゴリズムを参照されたい。
【００５２】
第４例において、今から図５を参照すると、最初に、秘密鍵パラメータを、｛ｓｅｅｄ，ｋｐ，ｋｑ｝として記憶する（ここで、ｓｅｅｄ，ｋｐ，ｋｑは第３例の場合と同様である）。秘密鍵を回復するために、最初に、アルゴリズムをｓｅｅｄに適用してｐ，ｑの値を回復する。次に、｛ｐ，ｑ，ｋｐ，ｋｑ｝を用いて、第２例の場合と同様に進行する。
【００５３】
代替的実施形態において、最初に、秘密鍵パラメータを、４つの前例にて説明したフォーマットのいずれかを用いて記憶する。秘密鍵を回復する時に、４つの前例にて説明したｄｐ，ｄｑについての計算を用いる代わりに、ｄｐ＝［１＋（ｐ−１）（ｅ−ｋｐ）］／ｅと、ｄｑ＝［１＋（ｑ−１）（ｅ−ｋｑ）］／ｅとを計算する。さらに、前例についての他の代替案として、ｋｐ，ｋｑを記憶する代わりに、ｋｐ，ｋｑをｐ，ｑ，ｅから計算することができる。各々については、ユークリッドのアルゴリズム、または、その通常的な変形例を用いて計算することができるが、このことは、演算の順序がｐ，ｑに依存するという理由から、安全性の脆弱性を導入し得る。代替案として、ｅが素数である場合に、一般的に好まれるｅ＝２１６＋１の値のように、各々については、巾剰余を用いて、ｋｐ＝（ｐ−１）ｅ−２ ｍｏｄ ｅと、ｋｑ＝（ｑ−１）ｅ−２ ｍｏｄ ｅとを用いて計算することができる（これについては、演算の順序をｐ，ｑとは無関係にさせることができるという理由から、安全性の脆弱性を導入せずに行うことができる）。ｅは小さな数であるので、ｋｐ，ｋｑの計算支出は、ＲＳＡ秘密鍵演算の計算支出と比較して、無視できる頻度が高い。
【００５４】
第５例において、今から図６を参照すると、最初に、秘密鍵パラメータを、｛ｐ，ｑ，ｋ｝として記憶する。ここで、ｐ，ｑは公開モジュラスの素因数であり、ｋはｋ（ｐ−１）（ｑ−１） ｍｏｄ ｅ＝１（ｅは公開指数）を満たす値である。｛ｎ，ｄ｝（ここで、ｎは公開モジュラスであり、かつ、ｄは秘密指数である）という通常の非ＣＲＴ形式で秘密鍵を回復するために、ｎ＝ｐｑと、ｄ＝［１＋（ｐ−１）（ｑ−１）］ｔ ｍｏｄ ２２ｂとを計算する（ここで、ｂはｐ＜２ｂかつｑ＜２ｂであるような整数であり、かつ、ｔはｔｅ ｍｏｄ ２２ｂ＝１を満たす値である）。
【００５５】
第６例において、今から図７を参照すると、最初に、秘密鍵パラメータを、第５例におけるフォーマットを用いて記憶する。秘密鍵を回復する時に、第５例にて説明したｄについての計算を用いる代わりに、ｄ＝［１＋（ｐ−１）（ｑ−１）］／ｅを計算する。
【００５６】
第７例において、今から図８を参照すると、最初に、秘密鍵パラメータを、第５例におけるフォーマットを用いて記憶する。秘密鍵を回復する時に、最初に、２つの前例（第５例または第６例）のいずれかの計算を用いて秘密指数ｄを計算する。次に、｛ｐ，ｑ，ｄｐ，ｄｑ，ｖ｝という通常のＣＲＴ形式で秘密鍵を回復するために、ｄｐ＝ｄ ｍｏｄ （ｐ−１）と、ｄｑ＝ｄ ｍｏｄ （ｑ−１）とを計算し、かつ、ｐｖ ｍｏｄ ｑ＝１を満たす値ｖを計算する。
【００５７】
本発明の実施形態および応用法について示しかつ説明してきた一方で、本明細書内の発明的概念から逸脱することなく前述した内容よりもさらに多くの修正形態が可能であることが、当業者には明白であろう。したがって、本発明は、添付の請求項の真意以外のものによって制約されるべきではない。
【図面の簡単な説明】
【図１】本発明の暗号化システムの環境についての概略図である。
【図２】本発明の第１の例示的実施形態のフローチャートである。
【図３】本発明の第２の例示的実施形態のフローチャートである。
【図４】本発明の第３の例示的実施形態のフローチャートである。
【図５】本発明の第４の例示的実施形態のフローチャートである。
【図６】本発明の第５の例示的実施形態のフローチャートである。
【図７】本発明の第６の例示的実施形態のフローチャートである。
【図８】本発明の第７の例示的実施形態のフローチャートである。
【符号の説明】
１０　暗号化システム
１２　Ｉ／Ｏポート
１４　プロセッサ
１６　算術コプロセッサ（ＡＣＰ）
１８　不揮発性記憶装置
２０　外部装置
２２　乱数生成器（ＲＮＧ）
【図１】
2004505548.tif 000003
【図２】
2004505548.tif 000004
【図３】
2004505548.tif 000005
【図４】
2004505548.tif 000006
【図５】
2004505548.tif 000007
【図６】
2004505548.tif 000008
【図７】
2004505548.tif 000009
【図８】
2004505548.tif 000010
【国際公開パンフレット】
2004505548.tif 000011
2004505548.tif 000012
2004505548.tif 000013
2004505548.tif 000014
2004505548.tif 000015
2004505548.tif 000016
2004505548.tif 000017
2004505548.tif 000018
2004505548.tif 000019
2004505548.tif 000020
2004505548.tif 000021
2004505548.tif 000022
2004505548.tif 000023
2004505548.tif 000024
2004505548.tif 000025
2004505548.tif 000026
2004505548.tif 000027
2004505548.tif 000028
2004505548.tif 000029
2004505548.tif 000030
2004505548.tif 000031
2004505548.tif 000032
2004505548.tif 000033
2004505548.tif 000034
2004505548.tif 000035
2004505548.tif 000036
2004505548.tif 000037
2004505548.tif 000038
2004505548.tif 000039
2004505548.tif 000040
【国際公開パンフレット（コレクトバージョン）】
2004505548.tif 000041
2004505548.tif 000042
【国際調査報告】
2004505548.tif 000043