JP2006072336A - 素因数分解装置、素因数分解プログラム、安全性評価装置、安全性評価プログラム及び素因数分解方法 - Google Patents

素因数分解装置、素因数分解プログラム、安全性評価装置、安全性評価プログラム及び素因数分解方法 Download PDF

Info

Publication number
JP2006072336A
JP2006072336A JP2005216856A JP2005216856A JP2006072336A JP 2006072336 A JP2006072336 A JP 2006072336A JP 2005216856 A JP2005216856 A JP 2005216856A JP 2005216856 A JP2005216856 A JP 2005216856A JP 2006072336 A JP2006072336 A JP 2006072336A
Authority
JP
Japan
Prior art keywords
prime
security
integer
factorization
public key
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.)
Granted
Application number
JP2005216856A
Other languages
English (en)
Other versions
JP4872261B2 (ja
Inventor
Shuichi Oki
秀一 沖
Fukio Handa
富己男 半田
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.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co 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 Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2005216856A priority Critical patent/JP4872261B2/ja
Publication of JP2006072336A publication Critical patent/JP2006072336A/ja
Application granted granted Critical
Publication of JP4872261B2 publication Critical patent/JP4872261B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】利用者の利便性を向上することが可能な個別秘匿データ書き込みシステム及び個別秘匿データ書き込み方法を提供する。
【解決手段】N=p*q=(s+a)(s−b)、sをNの平方根に近い整数とし、
Nmods=(−a*b)mods、ab=ks−(Nmods)、0<ab<s、k=1としてNの素因数分解を行い、演算結果が適正であるか否かを判定し、否と判定した場合に、肯と判定するまでkを増加させながら素因数分解を繰り返す素因数分解部と、kが上限値(Limit)を超えても素因数分解部によって適正な演算結果が出ない場合に、Nを用いた公開鍵暗号が安全と判定する安全性判定部とを備える安全性評価装置。
【選択図】図2

Description

本発明は、素因数分解を行う素因数分解装置、素因数分解プログラム及び素因数分解方法、暗号の安全性が素因数分解の困難性に依存する公開鍵暗号の暗号鍵の安全性を評価する安全性評価装置及び安全性評価プログラムに関するものである。
暗号の安全性が素因数分解の困難性に依存する暗号方式に、RSA暗号、Rabin暗号などがある。RSA暗号においては、p,qという二つの素数の積である「N」を公開し、私有鍵(秘密鍵)は、このp,qから簡単に計算することが可能である。従って、このNを素因数分解できる場合には、私有鍵が判明し、暗号が解読されてしまうため、十分に大きな素数p,qを選定し、その積Nを十分大きな値とすることによって、計算量的に私有鍵を解読することが不可能となり、十分な安全性を確保することができる。つまり、暗号の安全性は、素数p,qの性質に依存している。
従来から、素因数分解の方法として、rho(ロー)法、p−1法などが知られている(例えば、非特許文献1参照。)。
p−1、p+1にそれぞれ大きな素因数をもつように素数を選択するなど、難しい計算をし、素数の値に条件をつけて選択することによって、これらの方法による素因数分解を困難なものとしていた(例えば、特許文献1参照。)。
一方、近年においては、素数p,qがランダムに生成された乱数より生成され、Nが1024ビット程度である場合には、安全性が高いと言われている(例えば、非特許文献2参照。)。また、素数の長さ(ビット長)が大きく異なる場合にも、素因数分解が比較的容易となるため、一般的に同一のビット長の素数が用いられている。
このように、従来から、新たな素因数分解の方法が解明されると、素数p,qの値に条件をつけて選択し、この方法における素因数分解を困難なものとし、安全性を保証するための措置を取っていた。
Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone著、「ハンドブック・オブ・アプライド・クリプトグラフィ(Handbook of Applied Cryptography)」、(米国)、シーアールシープレス(CRC Press)、2001年8月、第3章p.89−98 ロバート・ディー・シルバーマン(Robert D.Silverman)著、"ファーストジェネレーション・オブ・ランダム、ストロングRSAプライムス,クリプトバイツ−ボリューム3.1(Fast Generation of Random, Strong RSA Primes(Cryptobytes Volume 3,No.1-SPRING 1997))"、[online]、1997年春、RSAデータラボラトリーズ(RSA Laboratories)、[平成16年7月12日検索]、インターネット〈ftp://ftp.rsasecurity.com/pub/cryptobytes/crypto3n1.pdf〉 特開平11−52853号
しかし、これら種々の条件に従って素数p,qを選択した場合であっても、新たな素因数分解の方法が解明された場合には、この方法によって容易に私有鍵が判明し、暗号が解読されてしまう可能性があった。
また、公開鍵暗号を利用したデジタル署名の規格であるANSIの「ANSIX9.31−1998」のセクションC.8においても、鍵の安全性の検証は今後の研究開発課題である旨が記述されている。
本発明の課題は、新たな素因数分解方法、この方法を用いて素因数分解を行う素因数分解装置及び素因数分解プログラム、この素因数分解方法に対する暗号の安全性を評価し、セキュリティを向上することが可能な安全性評価装置及び安全性評価プログラムを提供することである。
本発明は、以下のような解決手段により、前記課題を解決する。すなわち、請求項1の発明は、整数Nに対してN=p*qとなる素因数p,qを求める素因数分解方法において、sをNの平方根に近い整数、pをp=s+a、qをq=s−bとし、Nmods=(−a*b)modsに基づいて素因数p,qを算出すること、を特徴とする素因数分解方法である。
請求項2の発明は、請求項1に記載の素因数分解方法において、a=c+d、b=d−cとし、Nmods=(c2 −d2 )modsに基づいて素因数p,qを算出すること、を特徴とする素因数分解方法である。
請求項3の発明は、請求項1又は請求項2に記載の素因数分解方法において、ab=ks−(Nmods)、0<ab<s、k=1として、素因数p,qを算出するための演算を行う第1の演算ステップと、前記第1の演算ステップにおいて、演算結果が適正であるか否かを判定する適正判定ステップと、前記適正判定ステップにおいて否と判定された場合に、kを逐次変更させながら前記第1の演算ステップ及び適正判定ステップを繰り返すこと、を特徴とする素因数分解方法である。
請求項4の発明は、N=p*q、X=K*N=rp*sq=S2−a2、S=ceiling(√X)とした場合に、S及びKの値を変化させ、aが整数となるS,Xの値を算出する第2の演算ステップと、前記第2の演算ステップにおいて算出したS及びXの値に基づいて、整数Nから素因数p,qを求める第3の演算ステップとを備える素因数分解方法であって、前記第2の演算ステップは、Kの値を大きな値から小さな値へ変化させ、aが整数となるS,Xの値を算出すること、を特徴とする素因数分解方法である。
請求項5の発明は、請求項4に記載の素因数分解方法において、
前記第2の演算ステップにおいて、Sの値の範囲を、( 6√N/(4*√K))に比べて狭く設定すること、
を特徴とする素因数分解方法である。
請求項6の発明は、請求項4に記載の素因数分解方法において、
前記第2の演算ステップは、素因数pi 及びqi の積である他の整数Ni をKに代入し、S,Xの値を算出すること、
を特徴とする素因数分解方法である。
請求項7の発明は、素数p,qの積である整数Nを取得する素因数分解対象取得手段と、請求項1から請求項6までのいずれか1項に記載の素因数分解方法に基づいて、前記素因数分解対象取得手段によって取得された整数Nを、素因数p,qに素因数分解する素因数分解手段と、を備える素因数分解装置である。
請求項8の発明は、素因数分解を行うためにコンピュータに実行させる素因数分解プログラムであって、素数p,qの積である整数Nを取得する素因数分解対象取得手順と、請求項1から請求項6までのいずれか1項に記載の素因数分解方法に基づいて、前記素因数分解対象取得手順において取得した整数Nを、素因数p,qに素因数分解する素因数分解手順とを備えること、を特徴とする素因数分解プログラムである。
請求項9の発明は、公開鍵暗号の暗号鍵の安全性を評価する安全性評価装置であって、整数Nに対してN=p*qとなる、nビットの公開鍵暗号の素因数p,qを取得する素因数差異取得手段と、前記素因数差異取得手段によって取得された素因数p,qの上位n/2ビットにおける差異に基づいて、安全性を評価する安全性評価手段とを備えること、を特徴とする安全性評価装置である。
請求項10の発明は、請求項9に記載の安全性評価装置において、前記安全性評価手段は、素因数p,qについて、それぞれの最上位ビットから下位へ向けて情報単位ごとに順に比較し、相違箇所があった場合に、その位置に応じて安全性を評価すること、を特徴とする安全性評価装置である。
請求項11の発明は、請求項9又は請求項10に記載の安全性評価装置において、前記安全性評価手段は、前記素因数p,qについて、上位n/2ビットにおいて差がない場合に、公開鍵暗号の暗号鍵を脆弱と判定すること、を特徴とする安全性評価装置である。
請求項12の発明は、請求項9から請求項11までのいずれか1項に記載の安全性評価装置において、前記素因数差異取得手段は、整数N、秘密鍵d、公開鍵eを取得する取得手段と、p=s+a、q=s−a、fを0<f<eを満たす整数として、φ=(e*d−1)/f、s=(p+q)/2=(N−φ+1)/2、に基づいて素因数p,qの差異を算出する演算手段とを有すること、を特徴とする安全性評価装置である。
請求項13の発明は、公開鍵暗号の暗号鍵の安全性を評価する安全性評価装置であって、整数Nに対してN=p*qとなる公開鍵暗号の素因数p,qを取得する素因数取得手段と、sをNの平方根に近い整数、前記素因数取得手段によって取得された素因数pをp=s+a、qをq=s−b、kをしきい値とした場合に、0<ab<ksを満たすか否かに基づいて公開鍵暗号の暗号鍵の安全性を評価する安全性評価手段とを備えること、を特徴とする安全性評価装置である。
請求項14の発明は、公開鍵暗号の暗号鍵の安全性を評価する安全性評価装置であって、整数Nに対してN=p*qとなる公開鍵暗号の素因数p,qを取得する素因数取得手段と、素因数取得手段によって取得された素因数p,qに基づいて、X=r*s*N、p*rn −q*sn =zn とし、拡張ユークリッドアルゴリズムの互除法を用いて、zn が所定の閾値に達した場合のrn-1 ,sn-1 に基づいて、r,sを算出する演算手段と、前記演算手段の演算結果に基づいて、公開鍵暗号の安全性を評価する安全性評価手段とを備えること、を特徴とする安全性評価装置である。
請求項15の発明は、公開鍵暗号の暗号鍵の安全性を評価する安全性評価装置であって、公開鍵暗号の素因数p,qの積である整数Nを取得する素因数分解対象取得手段と、請求項1から請求項6までのいずれか1項に記載の素因数分解方法に基づいて、前記素因数分解対象取得手段によって取得された整数Nを素因数分解する素因数分解手段と、前記素因数分解手段による素因数分解の容易さに応じて、公開鍵暗号の暗号鍵の安全性を評価する安全性評価手段とを備えること、を特徴とする安全性評価装置である。
請求項16の発明は、公開鍵暗号の暗号鍵の安全性を評価するためにコンピュータに実行させる安全性評価プログラムであって、整数Nに対してN=p*qとなる、nビットの公開鍵暗号の素因数p,qの差異を取得する素因数差異取得手順と、前記素因数差異取得手順において取得した素因数p,qの上位n/2ビットにおける差異に基づいて、安全性を評価する安全性評価手順とを備えること、を特徴とする安全性評価プログラムである。
請求項17の発明は、請求項16に記載の安全性評価プログラムにおいて、前記安全性評価手段は、素因数p,qについて、それぞれの最上位ビットから下位へ向けて情報単位ごとに順に比較し、相違箇所があった場合に、その位置に応じて安全性を評価すること、を特徴とする安全性評価プログラムである。
請求項18の発明は、請求項16又は請求項17に記載の安全性評価プログラムにおいて、前記安全性評価手順は、前記素因数p,qについて、上位n/2ビットにおいて差がない場合に、公開鍵暗号の暗号鍵を脆弱と判定すること、を特徴とする安全性評価プログラムである。
請求項19の発明は、請求項16から請求項84までのいずれか1項に記載の安全性評価プログラムにおいて、前記素因数差異取得ステップは、整数N、秘密鍵d、公開鍵eを取得する取得ステップと、p=s+a、q=s−a、fを0<f<eを満たす整数として、φ=(e*d−1)/f、s=(p+q)/2=(N−φ+1)/2、に基づいて素因数p,qの差異を算出する演算ステップとを有すること、を特徴とする安全性評価プログラムである。
請求項20の発明は、公開鍵暗号の暗号鍵の安全性を評価するためにコンピュータに実行させる安全性評価プログラムであって、整数Nに対してN=p*qとなる公開鍵暗号の素因数p,qを取得する素因数取得手順と、sをNの平方根に近い整数、前記素因数取得手段によって取得された素因数pをp=s+a、qをq=s−b、kをしきい値とした場合に、0<ab<ksを満たすか否かに基づいて公開鍵暗号の暗号鍵の安全性を評価する安全性評価手順とを備えること、を特徴とする安全性評価プログラムである。
請求項21の発明は、公開鍵暗号の暗号鍵の安全性を評価するためにコンピュータに実行させる安全性評価プログラムであって、整数Nに対してN=p*qとなる公開鍵暗号の素因数p,qを取得する素因数取得手順と、素因数取得手順において取得した素因数p,qに基づいて、X=r*s*N、p*rn −q*sn =zn とし、拡張ユークリッドアルゴリズムの互除法を用いて、zn が所定の閾値に達した場合のrn-1 ,sn-1 に基づいて、r,sを算出する演算手順と、前記演算手順における演算結果に基づいて、公開鍵暗号の安全性を評価する安全性評価手順とを備えること、を特徴とする安全性評価プログラムである。
請求項22の発明は、公開鍵暗号の暗号鍵の安全性を評価する安全性評価プログラムであって、公開鍵暗号の素因数p,qの積である整数Nを取得する素因数分解対象取得手順と、請求項1から請求項3までのいずれか1項に記載の素因数分解方法に基づいて、前記素因数分解対象取得手順において取得した整数Nを素因数分解する素因数分解手順と、前記素因数分解手順における素因数分解の容易さに応じて、公開鍵暗号の暗号鍵の安全性を評価する安全性評価手順とを備えること、を特徴とする安全性評価プログラムである。
本発明による素因数分解装置、素因数分解プログラム、安全性評価装置、安全性評価プログラム及び素因数分解方法によれば、以下の効果を得ることが可能となる。
(1)Nmods=(−a*b)modsに基づいて演算を行うことによって、新たな方法によって、素因数p,qが大きな値であっても、Nを素因数p,qへ素因数分解することが可能となる。
(2)Nmods=(c2 −d2 )modsに基づいて素因数分解することによって、演算回数を減少させ、処理の迅速化を図る。
(3)特に、0<ab<ks、kが小さな値である場合など、素因数p,qが一定の条件を満たす場合には、素因数p,qがどんなに大きな数値であっても容易に素因数分解することが可能となる。
(4)N=p*q、X=K*N=rp*sq=S2−a2、S=ceiling(√X)とした場合に、Kの値を大きな値から小さな値へ変化させ、aが整数となるS,Xの値を算出することによって、整数Nを素因数分解可能なKの値が大きい場合に、従来の方法と比較して容易にKを見つけだし、Nを素因数分解することが可能となる。
(5)特に、Sの値の範囲を、( 6√N/(4*√K))に比べて狭く設定することによって、試行範囲を拡げずに、つまり、処理時間を長期化せずに、素因数分解可能なKの値が大きい整数Nを、容易に素因数分解することが可能となる。
(6)素因数pi 及びqi の積である他の整数Ni をKに代入し、S,Xの値を算出することによって、Nを素因数分解可能なr,sの値が解らなくても、この他の整数Ni を用いて容易にNを素因数分解することが可能となる。特に、Nを素因数分解可能なK,r,sの値が大きいときに容易にNを素因数分解することが可能となる。
(7)素因数p,qの上位n/2ビットにおける差の大小、0<ab<ksなどに基づいて安全性を評価することによって、公開鍵暗号の暗号鍵についての安全性評価を容易にすることができるとともに、セキュリティを向上する。特に、しきい値kの値を暗号鍵に対して求める安全性、計算量などに応じて設定し、0<ab<ksに基づいて判定を行うことによって、要求する安全性、計算量などに応じた安全性の評価が可能となる。
(8)特に、素因数p,qのそれぞれの最上位バイトから下位へ向けて情報単位ごとに順に比較し、相違箇所があった場合に、その位置に応じて安全性を評価することによって、計算リソース上の負担を軽減し、処理の迅速化を図ることが可能となる。
(9)また、簡易な処理で評価を行うことが可能であるため、ICカードなど、処理に制限のかかる情報処理装置においてもこの安全性の評価を実現することができるとともに、実現にかかる負担が少なく、汎用性、実現性が高い。
(10)拡張ユークリッドアルゴリズムの互除法を用いてr,sを算出し、その演算結果に基づいて、公開鍵暗号の安全性を評価することによって、不正者が素因数分解可能なr,sに偏りのある公開鍵Nを生成した場合などの不正を容易に発見できるなど、セキュリティを向上することが可能となる。
(11)Nを新たな方法で素因数分解し、その結果に基づいて、公開鍵暗号の暗号鍵の安全性を評価することによって、この方法による公開鍵暗号に対する不正を防止し、セキュリティを向上する。また、公開されているNに基づいて評価を行うことによって、秘密鍵などの秘匿情報をその保持媒体から取り出すことなく、安全性を評価することができ、セキュリティを向上する。
(12)特に、公開鍵暗号に、同一のビット長で、素数の差が、一定のしきい値以上に設定される素数を使用するように望まれている環境において、この要請に応じて、2つの素数を同一ビット数、素数の差がしきい値となるように設定した場合であっても、このしきい値が2^(n/2)以下のときには、容易に素因数分解することができることとなり、この危険性を検出し、暗号鍵を脆弱と評価することによってセキュリティを向上する。
本発明は、新たな素因数分解方法に対する暗号の安全性を評価し、セキュリティを向上するという目的を、N=p*q=(s+a)(s−b)、sをNの平方根に近い整数とし、Nmods=(−a*b)mods、ab=ks−(Nmods)、0<ab<s、k=1としてNの素因数分解を行う演算手段と、演算結果が適正であるか否かを判定する適正判定手段とを備え、演算手段は、適正判定手段が否と判定した場合に、肯と判定するまでkを増加させながら素因数分解を繰り返し、kがしきい値を超えても適正な演算結果が出ない場合に、Nを用いた公開鍵暗号が安全と判定すること、によって実現する。
以下、図面などを参照して、本発明の実施例をあげて、さらに詳しく説明する。
図1は、本発明による素因数分解装置、安全性評価装置の構成を示すブロック図である。なお、本実施例における素因数分解装置及び安全性評価装置は、素因数分解部12及び安全性評価装置10である。
図1に示すように、暗号鍵評価システム1は、安全性評価装置10と、ICカード20などを備え、暗号の安全性が素因数分解の困難性に依存する暗号方式(RSA暗号など)における暗号鍵の安全性を評価するコンピュータシステムである。
RSA暗号の安全性は、公開される整数N(=p*q)の素因数分解の困難性に依存する。つまりRSA暗号の暗号鍵の安全性は、素数p,qの性質に依存し、素数p,qの積であって、公開されるNが素因数分解され易い場合には、安全性が否定される。RSA暗号においては、p−1及びqー1の最小公倍数LをL=LCM(p−1,q−1)とした場合に、最大公約数gcd(e,L)=1を満たすeの値が公開鍵となる。また、ed=1(modL)を満たすdの値が私有鍵となる。なお、平文をM、暗号文をCとすると、RSA暗号において、暗号化は、C=Me (modn)、復号は、M=Cd (modn)のアルゴリズムによって行われる。
ICカード20は、CPU、メモリ、外部との通信を行うインターフェイスなどを備え、私有鍵を読み出し不可能なセキュアな状態で記憶し、また、私有鍵d、整数Nなどを記憶している。なお、暗号鍵評価システム1による安全性評価の対象となる私有鍵dを記憶している媒体は、ICタグ、PCなどであってもよく、ICカード20に限定されない。
安全性評価装置10は、CPU、メモリ、入出力装置などを備えるコンピュータであって、リーダライタ11、素因数分解部12、安全性判定部13、ディスプレイ14などを備え、例えば、ATMなどの情報処理装置に、素因数分解部12、安全性判定部13を設けることによって実現することが可能である。安全性評価装置10は、ICカード20に格納されている私有鍵の安全性を評価する。
リーダライタ11は、ICカード20との通信を実現する通信装置であって、ICカード20に記憶されている整数Nを安全性評価装置10に入力する。
ディスプレイ14は、私有鍵dが安全か否かの安全性判定部13による安全性の評価結果を表示し、利用者に通知する。
素因数分解部12は、リーダライタ11から入力される整数Nを素因数分解して、素因数p,qを算出する。ここで、Nの素因数分解の方法を説明する。
図2は、本発明による素因数分解プログラム及び素因数分解方法を示すフローチャートである。
sを、√Nの小数点第一位を四捨五入した整数(round(√N))など、Nの平方根に近い整数とし(#10)、p=s+a、q=s−bとすると、
N=(s+a)*(s−b)=s2 +s*(a−b)−a*bとなる(#20)。
また、Nをsで割ったときの剰余をrとすると、
r=Nmods=(−a*b)mods
=−a*b+k*sとなる(#30)。
また、c=a*b=k*s−r(kは、整数。)とすると、
#20の式は、N=s2 +s*(a−c/a)−c、
変形して、0=s*a2 +(s2 −N−c)*a−s*cとなる(#50)。
0<ab<sと仮定した場合には、k=1、c=s−rとなり(#40)、#50の式からaを求めることができ、b=c/a、p=s+a、q=s−bから、b、p,qを算出することが可能となる。つまり、0<ab<sが成り立つ素数p(=s+a)、q(=s−b)に基づいて生成された暗号鍵は、極めて脆弱と判定される。
なお、ab≦0、ab≧sの場合には、k=1とした演算の結果、a又はbが整数とならず、このときには、kに1を加算し、a及びbの値が整数となるまで(#60)、又は、kが所定の上限値(Limit)を超えるまで、同様の処理を繰り返す。整数のa及びbを算出できた場合には、p=s+a、q=s−c/aから、素因数p,qが算出される(#70)。
安全性判定部13は、素因数分解部12の演算結果、つまり、kの上限値内で整数のa及びbが算出できるか否かに基づいて、ICカード20に格納されている私有鍵が安全であるか否かを判定する(#70,#80)。
なお、上限値を無限大とした場合には、全ての素因数分解を行うことが可能となる。また、設定した上限値が高いほど、素因数分解の算出に時間がかかり、暗号鍵の安全性の基準が高くなる一方で、安全性の評価に時間がかかる。従って、安全性の評価に許される計算時間の限度で最大の値を上限値とするなど、計算時間に応じて上限値を設定することが望ましい。また、暗号鍵に対して要求する安全性についても同様である。つまり、素数p,qのビット数に応じるなど、求める計算量的な安全性に応じて上限値を設定することが望ましい。例えば、Limit≒2^50とした場合には、要求する安全性は高くなるが、計算量が多大となり、現実的ではない。
図3は、図2に示す素因数分解方法による素因数分解の演算結果を示す表である。なお、通常、公開鍵暗号の素数p,qのビット数は、512から1024ビットが望ましいが、説明の便宜上、6ビットから12ビット程度の素数の積Nについて、素因数分解を行った(図9において同じ。)。
図3に示すようにN=1927、67591、281861の場合には、0<ab<sであって、k=1で素因数p,qが算出される。一方、N=296449、826513の場合には、s<abとなり、それぞれk=2、k=8において素因数p,qが算出される。
図4は、本発明による素因数分解装置、安全性評価装置の動作、素因数分解プログラム、素因数分解方法及び安全性評価プログラムを示すフローチャートである。
図4に示すように、ステップ110(以下、「ステップ」を「S」という。)において、安全性評価装置10は、S110において、ICカード20へ所定のコマンドを送信し、そのレスポンスとして、整数Nを受信する。
素因数分解部12は、このNを#50の式など(図2参照)に代入し、k=1として(S120)、a、bを算出する(S130)。a及びbが整数でない場合には、素因数分解部12は、kに1を加え(S140,S160)、kが上限値以下の場合には、同様の処理を繰り返す(S170,S130,S140,S160)。
安全性判定部13は、整数のa及びbの値が算出された場合には、ICカード20に格納されている私有鍵dを脆弱と判定し(S140,S150)、kが上限値を超えた場合には、私有鍵dを安全と判定する(S170,S180)。安全性評価装置10は、判定結果をディスプレイ14に表示し(S190)、処理を終了する(S200)。
このように、本実施例によれば、安全性評価システム1は、新たな素因数分解方法によって、整数Nを大きな素因数p,qに素因数分解することが可能となった。特に、0<ab<ks(k≦Limit)など、素因数p,qが一定の条件を満たす場合には、素因数p,qがどんなに大きな値であっても、Nを容易に素因数p,qへ素因数分解することが可能となった。また、公開されているNに基づいて評価を行うことによって、秘密鍵dなどの秘匿情報をその保持媒体であるICカード20から取り出すことなく、暗号鍵の安全性を評価することができ、セキュリティを向上することが可能となった。
更に、安全性評価システム1は、任意に設定可能であって、安全性判断のしきい値となる上限値(Limit)をkが超えるまでに素因数分解することができるか否かに基づいて、暗号鍵の安全性を評価するため、上限値を低く設定し、簡易に安全性の評価を行うことができる一方、高く設定し、安全性を高めることも可能となった。
更にまた、安全性評価システム1は、整数Nを用いた公開鍵暗号について、この方法による素因数分解の容易さ、つまり、安全性を評価することが可能となった。また、安全性評価システム1は、解読されやすい脆弱な私有鍵dを検出して通知するため、脆弱な私有鍵dを使用しないなど、安全対策を行い、セキュリティを向上することが可能となった。
特に、公開鍵暗号に、同一のビット長で、素数の差が、一定のしきい値T以上に設定される素数を使用するように望まれている環境において、この要請に応じて、2つの素数を同一ビット数n、素数の差がTとなるように設定した場合には、前記しきい値TがT≦2^(n/2)で、公開鍵の安全性を確保するのに不十分の場合、素因数分解部12は、容易に素因数分解することができることとなり、安全性評価システム1は、この危険性を検出し、暗号鍵を脆弱と評価して通知し、セキュリティを向上することが可能となった。
図5は、本発明による安全性評価装置の構成を示すブロック図である。なお、前述した実施例と同様な機能を果たす部分には、同一の符号又は末尾に統一した符号を付して、重複する説明や図面を適宜省略する。また、本実施例における安全性評価装置は、暗号鍵生成装置10−2である。
図5に示すように、暗号鍵生成装置10−2は、素数生成部15、安全性判定部13−2、暗号鍵生成部16、出力部14−2などを備え、RSA暗号に用いる私有鍵、公開鍵などの暗号鍵をセキュアに生成するHSM(Hardware Security Module)などの耐タンパ性の高いコンピュータである。
素数生成部15は、ビット数n(512ビット以上)の大きな素数p,qを生成する。素数生成部15は、乱数を生成、確率的素数判定法、疑似素数判定法などによって素数p,qを生成する。なお、素数p,qを取得する方法は、限定されず、素数p,qを取得できればよい。
暗号鍵生成部16は、素数生成部15で生成され、安全性判定部13−2で安全と判定された素数p,qに基づいて、演算を行い、RSA暗号の私有鍵d、公開鍵eを生成する。
出力部14−2は、暗号鍵生成部16によって生成された暗号鍵を外部へ出力する。
安全性判定部13−2は、素数生成部15で生成された素数p,qを使用した暗号について、実施例1において記載されている素因数分解方法に対して安全か否かを判定し、暗号鍵の安全性を評価する。
具体的には、図6に示すように、安全性判定部13−2は、nビットの各素数p,qの上位(n/2−50)ビット(図6の下線部分)に差異があるか否かを判定し、あった場合には、安全と判定する。例えば、安全性判定部13−2は、pとqの差(|p−q|)を算出し、この値が2^(n/2+50)以上である場合には、安全と判定する。なお、このビット数を示す「50」の値は任意であって、大きな値とすればするほど、安全性は高くなるが、大きすぎれば、他の素因数分解方法によって容易に素因数分解される可能性もあるため、計算量的に安全と言える最低限の値を設定することが望ましい。本実施例において設定されている値「50」であれば、実施例1におけるkの値が2の100乗程度となり、現在のコンピュータの処理能力では、計算量的に安全と考えられる。
図7は、本発明による安全性評価装置の動作及び安全性評価プログラムを示すフローチャートであって、暗号鍵の生成における安全性評価処理を示している。
S310において、素数生成部15は、素数p,qを生成する。安全性判定部13−2は、このp,qの差gを算出し(S320)、差gが2^(n/2+50)以上であるか否かを判定する(S330)。否と判定した場合には、この素数p,qを廃棄し、素数生成部15は、新たに素数p,qを生成し、S330において肯と判定するまで同様の処理を繰り返す(S310,S320,S330)。S330において肯と判定した場合には、暗号鍵生成部16は、この素数p,qを元に私有鍵、公開鍵などの暗号鍵を生成する。暗号鍵生成装置10−2は、生成した暗号鍵を外部へ出力し(S350)、ICカードなどの暗号鍵保持媒体に格納し、処理を終了する(S360)。
このように、本実施例によれば、実施例1と同様の効果に加え、安全性判定部13−2は、素数p,qの差が2^(n/2+50)以上であるか否かに基づいて安全か否かの判定を行うため、簡易な処理で暗号鍵の安全性の評価を行うことが可能となった。
従って、この安全性判定部13−2を、ICカードなど、処理に制限のかかる情報処理装置においても設けることができるとともに、実現にかかる負担が少なく、汎用性、実現性の向上を図ることが可能となった。
図8は、本発明による素因数分解装置、安全性評価装置の構成を示すブロック図である。なお、本実施例における素因数分解装置及び安全性評価装置は、素因数分解部12−3及び安全性評価装置10−3である。
図8に示すように、安全性評価装置10−3は、CPU、メモリ、入出力装置などを備えるコンピュータであって、入力部11−3、素因数分解部12−3、安全性判定部13−3、ディスプレイ14などを備えている。安全性評価装置10−3は、素因数分解の困難性に暗号の安全性が依存する暗号方式において、入力する公開鍵Nに基づいて暗号の安全性を評価する。
入力部11−3は、整数N(=p*q)を外部から入力する。入力部11−3は、ICカードから整数Nを入力するR/Wであっても、整数Nを手入力するキーボードであってもよく、整数Nの値を入力できれば入力方法は限定されない。
素因数分解部12−3及び安全性判定部13−3は、CPUがメモリに記憶されているプログラムを実行することによって実現される。
素因数分解部12−3は、リーマン法を利用した所定のアルゴリズムに基づいて演算を行い、入力部11−3から入力された整数Nを素因数分解する。
安全性判定部13−3は、因数分解部12−3の処理結果に基づいて、公開鍵Nを用いた暗号の安全性について判定を行う。
なお、フェルマー法は、合成数(素因数分解の対象となる整数)をNとした場合に、N=p*q=(S+a)*(S−a)=S2−a2から、「S」(初期値は、√Nの整数部分に1を加えた数(S=ceiling(√N))の値を漸次増加させて、「a」が整数となる値を求め、因数分解する方法である。
リーマン法とは、フェルマー法を利用した素因数分解方法であって、K=r*s、X=K*N=(r*p)*(s*q)=(S+a)*(S−a)=S2−a2、S=ceiling(√X)とした場合に、「S」及び「K」の値を漸次変化させ、「a」が整数となる値を求め、
p=gcd((r*p),(p*q))=gcd(S+a,N)
q=gcd((s*q),(p*q))=gcd(S−a,N)
に基づいて、素因数p,qを求め、因数分解する方法である。なお、「gcd(A,B)」は、A及びBの最大公約数を求める関数である。
図9に示すように、リーマン法においては、Kの値を最小値(MinLim)とし、Sの値をceiling(√X)からceiling(√X)+( 6√N/(4*√K))程度まで変化させ(A10)、「a」が整数となる値を検索し、発見できなければ、Kの値をMinLimから「1」増加させ(A20)、同様に、Sの値を変化させて「a」が整数となる値を検索し(A10)、Kの値が設定値MaxLimとなるまで同様の処理を繰り返す(A20)。
なお、「depth」(深度)、MinLim及びMaxLimは、素因数分解の試行範囲を制限するための閾値である。「depth」は、変数「S」の変化する範囲であり、1以上に設定することが可能な設定値であり、MinLim(最小値)及びMaxLim(最大値)は、変数「K(=r*s)」の変化する範囲を制限する設定値である。また、図9において、S=ceiling(√X)を直線で示しているが、これは、便宜上であって、実際には、S=ceiling(√X)=ceiling(√(K*N))であり、Kの値の変化とともに、S=ceiling(√X)の値も変化する(図11において同じ。)。S=ceiling(√X)+( 6√N/(4*√K))についても同様である(図11において同じ。)。
素因数分解の試行範囲(図9のA30)が広くなれば、大半の「N」を素因数分解することが可能となるが、計算量が多くなって処理時間が長くなる。
図10は、本発明による素因数分解装置、安全性評価装置の動作、素因数分解プログラム、素因数分解方法及び安全性評価プログラムを示すフローチャートである。
図10に示すように、入力部11−3は、p,qという二つの素数の積である整数N、設定値depth、MinLim及びMaxLimなどを入力し(S410)、素因数分解部12−3は、入力した整数Nについて素因数分解を行う。
K(=r*s)の初期値をMaxLimとし(S420)、X=K*N、dの初期値を0(ゼロ)とし、S=ceiling(√X)とする(S430)。
素因数分解部12−3は、a=√(S*S−X)を演算し(S440)、aの値が整数であるか否かを判定する(S450)。
整数である場合には、X=S2−a2=(S+a)*(S−a)=K*N=(r*p)*(s*q)より、素因数分解部12−3は、
p=gcd((r*p),(p*q))=gcd(S+a,N)
q=gcd((s*q),(p*q))=gcd(S−a,N)
に基づいて、素因数p,qを求める(S520)。
一方、S440において算出したaの値が整数でない場合であって、d<depthのときには、素因数分解部12−3は、d及びSにそれぞれ1を加算して(S450,S460,S470)、S440からの処理を繰り返す。また、d≧depthの場合には、Kから1を減算する(S460,S480)。減算した結果、Kが下限値(MinLimit)よりも小さい場合には、素因数分解部12−3は、Nの素因数分解の結果が出ないまま処理を中止する(S490,S500)。減算した結果、Kが下限値以上である場合には、S430からの処理を繰り返す(S490)。
安全性判定部13−3は、素因数分解部12−3の処理結果に基づいて暗号鍵の安全性を評価する。つまり、Kの上限値内及びSの設定範囲内で整数のaが算出できた場合(S520)には、入力したNを公開鍵とする秘密鍵を脆弱と判定し(S530)、算出できない場合(S500)には、安全と判定する(S510)。安全性評価装置10−3は、ディスプレイ14に安全性の評価結果を表示し(S540)、処理を終了する(S550)。
(具体例)
ここで、図10に示す処理を具体的に説明する。
入力部11−3から以下のデータを入力する(S410,S420)。
N=2995327
K=MaxLim=36
depth=1
素因数分解部12−3は、「X」、「S」及び「a」の値を算出する(S430,S440)。
X=k*N=36*2995327=107831772
d=0
S=cieling(√107831772)=10385
a=√(S*S−X)=128.26・・・
aは、整数でなく、d=0<depth=1であるため、d=1,S=10386としてS440へ戻る(S450,S460,S470)。
素因数分解部12−3は、「a」の値を算出する(S440)。
a=192.93・・・
aは、整数でなく、d=1=depth、K<MinLimitであるため、K=35としてS430に戻る(S450,S460,S480,S490)
素因数分解部12−3は、「X」、「S」及び「a」の値を算出する(S430,S440)。
X=35*2995327=104836445
なお、Kを変数とする代わりに、ループごと(S480,S490,S430)に今までのXの値からNを減算し、新たなXの値としてもよい。
d=0
S=cieling(√104836445=10239
a=26
aは、整数であり、素因数分解部12−3は、N(=p*q)を以下の様に素因数分解する。
p=gcd(10239+26,2995327=2053
q=gcd(10239−26,2995327)=1459
また、安全性判定部13−3は、設定値(MaxLim,MinLim,depth)の範囲内で素因数分解が成功したため、公開鍵がN=2995327に対応する秘密鍵が脆弱と判定する(S530)。
このように本実施例によれば、素因数分解部12−3は、図11に示すように、MaxLimからMinLimの方向へKの値を変化させて素因数分解するため(A120)、整数Nを素因数分解可能なKの値が大きい場合に、リーマン法と比較して容易にKを見つけだし、Nを素因数分解することが可能となった。特に、「depth」をリーマン法と比較して小さな値(浅い深度)、また、MaxLimを大きい値に設定することによって、試行範囲を拡げずに、つまり、処理時間を長期化せずに、素因数分解可能なKの値が大きい整数Nを、容易に素因数分解することが可能となった。
従って、不正者が意図的に、素因数分解可能なKの値が大きい整数Nを公開鍵とする暗号鍵を生成し、認証用の暗号鍵として仕込むなどした場合には、従来のリーマン法では、その脆弱性を発見することが困難であったが、本実施例によれば、この脆弱性を発見することが可能となった。
図12は、本発明による素因数分解装置、安全性評価装置の構成を示すブロック図である。なお、本実施例における素因数分解装置及び安全性評価装置は、素因数分解部12−4及び安全性評価装置10−4である。
図12に示すように、安全性評価装置10−4は、入力部11−3、素因数分解部12−4、安全性判定部13−4、ディスプレイ14など、実施例3における安全性評価装置10−3と略同様の構成を備え、暗号の安全性が素因数分解の困難性に依存する暗号方式における暗号鍵の安全性を評価するコンピュータシステムである。
素因数分解部12−4及び安全性判定部13−4は、CPUがメモリに記憶されているプログラムを実行することによって実現され、実施例3における素因数分解部12−3及び安全性判定部13−3と略同様の機能を備えている。
素因数分解部12−4は、入力部11−3から入力される公開鍵Nについて、他のm個の公開鍵Ni (=pi *qi :i番目の公開鍵。1≦i≦m)にを利用して素因数分解を行う。
また、安全性判定部13−4は、因数分解部12−4の処理結果に基づいて、公開鍵Nに対応する秘密鍵の安全性について判定を行う。
図13は、本発明による素因数分解装置、安全性評価装置の動作、素因数分解プログラム、素因数分解方法及び安全性評価プログラムを示すフローチャートである。なお、「depth」(深度)は、実施例3と同様、変数「S」の変化する範囲を制限する変数「d」の上限値である。また、「m」は、公開鍵Nを素因数分解するために利用する他の公開鍵Ni の数であり、実施例3における「K」と同様の役割を果たし、mの値が大きいほど、処理時間が長くなる。以下、実施例3の図10における処理と異なる処理について説明する。
図13に示すように、入力部11−3は、安全性を判定する対象となる公開鍵N、以前に生成した他のm個の公開鍵Ni (1≦i≦m)、設定値などを入力する(S610)。
素因数分解部12−4は、iの初期値を1、X=N*Ni 、dの初期値を0(ゼロ)とし、S=ceiling(√X)とする(S620,S630)。
素因数分解部12−4は、a=√(S*S−X)を演算し(S640)、aの値が整数である場合には、X=S2−a2=(S+a)*(S−a)=Ni *N=(qi *p)*(pi *q)より、素因数分解部12−3は、
p=gcd((qi *p),(p*q))=gcd(S+a,N)
q=gcd((pi *q),(p*q))=gcd(S−a,N)
に基づいて、素因数p,qを求める(S720)。
また、素因数分解部12−3は、
i =gcd((q*pi ),(pi *qi ))=gcd(S−a,Ni
i =gcd((p*qi ),(pi *qi ))=gcd(S+a,Ni
に基づいて、素因数pi ,qi を求める(S720)。
S640において算出したaの値が整数でない場合であって、d≧depthのときには、iに1を加算し(S650,S660,S680)、加算した結果、iがmよりも大きい場合には、素因数分解部12−4は、Nの素因数分解の結果が出ないまま処理を中止する(S690,S700)。加算した結果、Kがm以下である場合には、S630からの処理を繰り返す(S690)。
安全性判定部13−4は、実施例3と同様に、Sの設定範囲内及びmの上限値内で整数のaが算出の可否に応じて、暗号を脆弱又は安全と判定する(S700〜S730)。何故なら、Nにおけるr、sの値と、Ni におけるr,sの値(以下、それぞれ「ri 」,「si 」という。)が同一である場合に、素因数分解が成功するからである。
以下、r=ri 及びs=si の場合に、素因数分解が成功することを証明する。
実施例1における素因数分解の方法を用いて、整数X(=K*N)を容易にrp,sqに因数分解するための条件は、rp及びsqの差が2^(n/2)以下(nは、「X」のビット数)のときとなる。
つまり、rp−sq≦2^(n/2)が成り立つことが、条件となる。
従って、図13における因数分解が成功するためには、以下の式が成り立つことが条件となる。
Figure 2006072336
式#410及び式#420の両辺を掛け合わせると、以下の式が導かれる。
Figure 2006072336
従って、Δ≒Sならば、p≒√Xより、pqi−qpi≒√X≒2^(n/2)であることが証明される。
よって、
Figure 2006072336
また、ここで、特定のr,sを与えられた場合に、rp−sq=ΔがSと同じ規模になるp,qを生成することが可能であることを説明する。
G(n)は、nより小さい隣り合わせである二つの素数の一番大きい差であり、
G(n)≒[In(n)]2
が成り立つ。
最初に、素数pを生成します。これは任意に選択可能である。
Δが最小限になる(N=p*qの因数分解が簡単になる)qを生成するには、round(r*p/s)に最も近い素数qを探せばよい。
そこで、qをround(r*p/s)より小さい最も近い素数と定義した場合に、Δが最も小さくなるのは、q=round(r*p/s)のときである。一方、Δが最も大きくなる場合は、q≒round(r*p/s)−G(round(r*p/s)である。
上記事実を検討してΔの最大値を計算すると、
Figure 2006072336
結論として、下記の式が導かれる。
Figure 2006072336
1024ビットの暗号鍵を扱う場合には、上記Δ/sの値はおよそ3502程度であり、因数分解に大きな支障を与えるものではないので、脆弱な鍵が生成されることがこの方法で可能であることが示される。
(具体例)
ここで、図13に示す処理を具体的に説明する。
入力部11−3から以下のデータを入力する(S610,S620)。
N=5093369,N1 =29283131・・・・,Nm
素因数分解部12−3は、「X」、「S」及び「a」の値を算出する(S630,S640)。
X=N*N1 =5093369*29283131=149149791658339
d=0
S=cieling(√X)=12212690
a=√(S*S−X)=2319
aは、整数であるため、素因数分解部12−4は、N(=p*q)、N1 (=p1 *q1 )を以下の様に素因数分解する(S650,S720)。
p=gcd(12212690+2319,5093369)=3491
q=gcd(12212690−2319,5093369)=1459
1 =gcd(12212690−2319,29283131)=8369
1 =gcd(12212690+2319,29283131)=3499
また、安全性判定部13−4は、設定値の範囲内で素因数分解が成功し、公開鍵Nのr,sが、以前に生成した公開鍵N1 のものと同一であるため、公開鍵Nを用いる暗号が脆弱と判定する(S730)。
このように本実施例によれば、素因数分解部12−4は、異なる二つの公開鍵N,N1 を掛け合わせて、その積を因数分解するため、Nを素因数分解可能なr,sの値が解らなくても、二つの公開鍵N,N1 が同一のr,sで素因数分解可能であるかどうかを検出することが可能となった。従って、Nを素因数分解可能なK,r,sの値が大きいときに容易にNを素因数分解することが可能となった。
よって、不正者が意図的に、素因数分解可能なr,sの値が同一の整数N,N1 を公開鍵とする暗号鍵を生成し、認証用の暗号鍵として仕込むなどした場合には、従来の方法では、その脆弱性を発見することが困難であったが、本実施例によれば、この脆弱性を容易に発見することが可能となった。
図14は、本発明による安全性評価装置の構成を示すブロック図である。なお、本実施例における安全性評価装置は、安全性評価装置10−5である。
図14に示すように、安全性評価装置10−5は、入力部11−3、安全性判定部13−4、ディスプレイ14など、実施例3における安全性評価装置10−3と略同様の構成を備え、暗号の安全性が素因数分解の困難性に依存する暗号方式における暗号鍵の安全性を、入力する公開鍵Nに基づいて暗号の安全性を評価するコンピュータシステムである。
安全性判定部13−5は、CPUがメモリに記憶されているプログラムを実行することによって実現される。安全性判定部13−5は、入力された素数p,qについて拡張ユークリッドアルゴリズムを利用した演算を行い、演算結果に基づいて、暗号の安全性を判定する。
ここで拡張ユークリッドアルゴリズムについて説明する。
正数a及びbについてa*x+b*y=gcd(a,b)となる整数x及びyが存在する。また、a及びbが互いに素である場合には、gcd(a,b)=1であり、a*x+b*y=1を満たすx及びyが存在する根拠となる。拡張ユークリッドの互除法は、gcd(a,b)(a及びb(a>b)の最大公約数)を求めるとともに、x,yを決定する方法であり、以下のような手順で計算が行われる。
a*xn-2 +b*yn-2 =zn-2
a*xn-1 +b*yn-1 =zn-1
初期値を(x1 ,y1 ,z1 )=(1,0,a)、(x2 ,y2 ,z2 )=(0,1,b)とし、以下の式をzn-1 が0になるまで繰り返す。そのときの(xn-2 ,yn-2 ,zn-2 )が求めたい(x,y,gcd(a,b))となる。
(xn ,yn ,zn )=(xn-2 ,yn-2 ,zn-2 )−floor(zn-2 /zn-1 )*(xn-1 ,yn-1 ,zn-1
なお、関数floor(A)は、Aの小数点以下の数値を切り捨て、Aを整数の値とする関数である。
安全性判定部13−5は、ax+by=gcd(a,b)を、pr−qs=gcd(p,q)とし、(rn ,sn ,zn )=(rn-2 ,sn-2 ,zn-2 )−floor(zn-2 /zn-1 )*(rn-1 ,sn-1 ,zn-1 )などの拡張ユークリッドアルゴリズムの互除法に基づいて、|r*p−s*q|<√p,√q≒ 4√Nとなるまで、つまり、zn-1 が閾値よりも小さくなるまで、繰り返し部分の処理を行い、r,sを算出する。zn-1 の閾値を、√p,√q≒ 4√Nとなるよりも小さくなるまでとしたのは、Xの因数r*p,s*qの差が小さい場合には、実施例1、実施例2のように、容易に因数分解することができることとなるからである。安全性判定部13−5は、算出したr,sの値の大小に基づいて安全性を判定する。つまり、r,sの値が小さければ、Xの因数分解より算出したr*p,s*qの値より、しらみつぶしに当て嵌めていけば、p,qの値を算出することが可能となり、公開鍵Nから素因数p,qへの素因数分解が容易となり、安全性は、否定される。
図15は、本発明による安全性評価装置の動作及び安全性評価プログラムを示すフローチャートである。なお、「threshold(=safetyFactor* 4√N))」及び「safetyFactor」は、閾値であり、任意に設定することが可能である。「safetyFactor」は、最小値が1であって、上限は、 4√N、適切な値は、232〜264程度である。
図15に示すように、S810において、入力部11−3は、暗号鍵の素数p,q、safetyFactorの値などを入力し、安全性評価装置10−5は、処理を開始する。安全性判定部13−5は、入力した2つの素数のうち、大きい方をpとする(S830)。
各変数の初期値を、a=1,b=0、u=0,v=1、g=p,w=qとし(S840)、安全性判定部13−5は、wがthresholdよりも大きい値であるかを判定し、大きい場合には、拡張ユークリッドの互除法の繰り返し部分を計算する(S850,S860,S870)。
S850におけるループの条件「w>thresholdは、|r*p−s*q|<√p,√q≒ 4√Nとなるようなs,rが見つかるまで、同様の処理を繰り返させるものである(S850)。安全性判定部13−5は、floor(g/w)を算出し、quotientの値とする(S860)。関数floor(A)は、Aの小数点以下の数値を切り捨て、Aを整数の値とする関数である。
また、安全性判定部13−5は、このquotientの値と、
u=a−quotient*u、
v=b−quotient*v、
w=g−quotient*w
とに基づいて、u,v,wの値を算出する。更に、安全性判定部13−5は、a=u、b=v、g=wとする(S870)。なお、S870において「=」の右側にある値は、全てS870の演算前の値を用いる。S870の演算後、安全性判定部13−5は、S850から同様の処理を繰り返す。
一方、S850において、wがthreshold以下の値である場合には、安全性判定部13−5は、a,bの値、つまり、r,sの値と、閾値とを比較する(S880)。
安全性判定部13−5は、a*bの絶対値、つまり、Kの値が閾値(k*threshold)よりも大きい場合には、安全と判定し、閾値よりも小さい場合には、脆弱と判定し(S890,S900)、ディスプレイ14に判定結果を表示し(S910)、処理を終了する(S920)。
(具体例)
ここで、図15に示す処理を具体的に説明する。
入力部11−3から以下のデータを入力する(S810)。
p=2053,q=1459、safetyFactor=2
なお、pは、qのnextprimeであって、p≒q*(7/5)である。
安全性判定部13−5は、各初期値を、a=1,b=0,g=p,u=0,v=1,w=qとし(S840)、w≦thresholdとなるまで、拡張ユークリッドの互除法の繰り返し部分を計算する(S850,S860,S870)。計算結果は、以下の表のようになる。
Figure 2006072336
表に示すように、3回繰り返し部分を計算した場合に、w=52>threshold=safetyFactor* 4√N=82となり、ループを脱出する(S850)。
安全性判定部13−5は、K=|a*b|=|−2*3|=6に基づいて、暗号は脆弱であると判定する(S880,S900)。つまり、Kの値が小さいため、実施例1、リーマン法などの方法を用いて、Nを容易に素因数分解することができると判定する(図9参照。)。
このように本実施例によれば、入力したp,qに基づいて、容易に素因数分解可能なr,sの値を算出することが可能となった。従って、不正者が、素因数分解可能なr,sに偏りのある公開鍵Nを生成し、認証用の暗号鍵として仕込むなどした場合には、従来の方法では、その脆弱性を発見することが困難であったが、本実施例によれば、この脆弱性を容易に発見することが可能となった。
(変形例)
以上説明した実施例に限定されることなく、種々の変形や変更が可能であって、それらも本発明の均等の範囲内である。例えば、実施例1において、素因数分解部12は、図16に示すような方法で素因数分解を行ってもよい。
図16に示すように、sをNの平方根に近い整数とし(#110)、p=s+b+a、q=s+b−aとすると、
N=s2 +2*s*b+(b2 −a2 )となる(#120)。
Nをsで割ったときの剰余をrとすると、
r=Nmods=(b2 −a2 )mods
=(b2 −a2 )+k*sとなる(#130)。
また、c=b2 −a2 =r−k*s(kは、整数。)とすると、
#120の式は、b=(N−s2 −(r−k*s))/(2*s)となる(#150)。
(b2 −a2 )<0であるため、|b2 −a2 |<sと仮定した場合には、k=1、c=r−sとなり(#140)、#150からbを求めることができ、a=√(b2 −c)、p=s+b+a、q=s+b−aから、a、p,qを算出することが可能となる(#180,#200)。つまり、0<(b2 −a2 )<sが成り立つ素数p,qに基づいて生成された暗号鍵は、極めて脆弱と判定される。
一方、(b2 −a2 )≦0、(b2 −a2 )≧sの場合には、k=1とした演算の結果、a又はbが整数とならず、bが整数とならないときには、kに1を加算し(#160)、aが整数とならないときには、kに2を加算し(#170)、a及びbの値が整数となるまで(#200)、又は、kが所定の上限値(Limit)を超えるまで(#190)、同様の処理を繰り返す。
整数のa及びbを算出できた場合には、p=s+b+a、q=s+b−aから、素因数p,qが算出される(#200)。素因数分解の結果は、実施例1における素因数分解(図3参照。)と同様に、図17のようになる。図17に示すように、N=826513など、kの値が1から離れている場合には、処理回数が実施例1における素因数分解の演算回数よりも少なくなる。
実施例1において、安全性評価装置10は、ICカード20から整数Nを読み出しているが、整数Nの取得方法は限定されない。
実施例1において、ICカード20から秘密鍵d、公開鍵e、整数Nを取得することができる場合に、以下に説明するように、素因数分解部12は、p,qの差の大きさを示すaの値を算出し、安全性判定部13は、実施例2の安全性判定部13−2のように、このaの値に基づいて安全性の判定を行ってもよい。
図18に示すように、X=e*d−1とし(#310)、φ=X/fとする(#320)。fは、1<f<eの整数であって、本実施例における初期値は、f=e−1である。
素因数分解部12は、s=(p+q)/2=(N−φ+1)/2からsを算出し、(#330)、p=s+a、q=s−a、N=p*q=(s+a)(s−a)に基づいてaを算出する(#340)。
#330において算出したsがs^2≦Nである場合、又は、#340において算出したaが整数でない場合には、fをf−1とし(#350)、#340において算出したaが整数となるまでfを順次替えて同様の処理を繰り返す(#320から#350まで)。
安全性判定部13は、算出したaの値、つまり素因数p,qの差の大きさと、しきい値(Limit)との比較に基づいて安全性を判定する(#360,#370)。
例えば、e=11、d=12371、N=22987を取得した場合には、
x=11*12371−1=136080
k=6としたときに、
φ=136080/6=22680
s=154
a=√(154^2−22987)=27
p=181、q=127となる。
なお、kには、大きい候補値(eに近い候補値)から順に当て嵌めて演算を行った方が演算の繰り返しを少なくすることが可能となる。
実施例2において、安全性判定部13−2は、素数p,qの差が2^(n/2+50)以上であるか否かに基づいて安全か否かの判定を行っているが、この「50」の値は、任意であって、求める安全性に応じて設定することが可能である。また、暗号鍵生成装置10−2は、要求される安全性の高低の指示を外部から入力する入力部を備え、この指示に応じてしきい値を設定してもよく、素数p,qのビット数に応じた値を設定してもよい。
実施例2において、安全性判定部13−2は、素数p,qの差が2^(n/2+50)以上であるか否かに基づいて安全か否かの判定を行っているが、差を求めずに、p,qの各々最上位バイトから下位バイトへ向かって順に1バイトずつなど、処理単位となる情報単位ごとの比較を反復して行い、上位(n/2−50)ビットまでに相違があった場合に安全と判定してもよい。素数p,qは大きな整数であるため、p,qの差(|p−q|)を計算するための計算リソース上の負担を軽減することが可能となる。
nビットの素数p,qの相違箇所が上位n/2ビットのいずれの位置にあるか、つまり、上位n/2ビットにおける差の大きさに基づいて、安全性を評価することができれば、その方法は限定されない。
実施例2において、安全性判定部13−2は、実施例1におけるa,bの値を素数p,q(同一のビット数でなくともよい。)から算出し、0<ab<ksの場合に、脆弱と判定してもよい。なお、kは、暗号鍵に対して求める安全性、安全性判定部13−2の計算能力、計算に与えられた時間などに応じて任意に設定することが可能なしきい値である。例えば、kが小さい値であれば、求める安全性は、低い一方、計算量も減少し、処理の迅速化を図ることができる。しきい値kの値を暗号鍵に対して求める安全性、計算量などに応じて設定し、0<ab<ksに基づいて判定を行うことによって、要求する安全性、計算量などに応じた安全性の評価が可能となる。
また、実施例2において、安全性判定部13−2が脆弱と判定した場合に、素数生成部15は、新たに素数p,qを生成するが、脆弱と判定した素数p,qを元に新たな素数を生成してもよい。
実施例2において、HSMなど、暗号鍵を生成し、外部へ出力して他の装置へ提供する暗号鍵生成装置10−2を安全性評価装置として記載しているが、ICカードなどの暗号鍵を生成し、自身で使用する暗号鍵生成装置であってもよいし、HSMで生成された暗号鍵をICカードへ書き込むICカード発行機であってもよく、素数p,qを取得することが可能な装置であれば、装置の種類は限定されない。従って、秘密鍵を格納しているICカード20が所定のプログラムをダウンロードすることによって、安全性判定部13−2を備え、ICカード20内で安全性の評価を行ってもよい。
各実施例において、RSA暗号について記述したが、Rabin暗号であってもよく、N(=p*q)又はX(=(r*p)*(s*q))の素因数分解に暗号鍵の安全性が依存する暗号方式であれば、暗号方式は限定されない。
実施例1又は実施例2において、sの値は、Nの平方根の小数点第一位を四捨五入した整数としたが、p<s<qの範囲でNの平方根に近い値であればよい。例えば、N=1927の場合には(図3参照。)、s=46、47とした場合であっても、p,qを算出することが可能である。
実施例4において、入力部11−3は、m個のN1 をまとめて入力するが(図13のS610)、S690からS630へのループがある度に、漸次対応するN1 を入力してもよい。
各実施例において、素因数分解装置、安全性評価装置は、それぞれ異なる方法で素因数分解や、安全性評価を行うが、これらの複数の方法をまとめて実行可能な素因数分解装置又は安全性評価装置であってもよい。
素因数分解装置、安全性評価装置の構成を示すブロック図である。(実施例1) 素因数分解プログラム及び素因数分解方法を示すフローチャートである。(実施例1) 素因数分解方法による素因数分解の演算結果を示す表である。(実施例1) 素因数分解装置、安全性評価装置の動作、素因数分解プログラム、素因数分解方法及び安全性評価プログラムを示すフローチャートである。(実施例1) 安全性評価装置の構成を示すブロック図である。(実施例2) 安全性判定部による安全性判定を説明する説明図である。(実施例2) 安全性評価装置の動作及び安全性評価プログラムを示すフローチャートである。(実施例2) 素因数分解装置、安全性評価装置の構成を示すブロック図である。(実施例3) リーマン法におけるK,Sの試行範囲を説明するための図である。(実施例3) 素因数分解装置、安全性評価装置の動作、素因数分解プログラム、素因数分解方法及び安全性評価プログラムを示すフローチャートである。(実施例3) 素因数分解方法におけるK,Sの試行範囲を説明するための図である。(実施例3) 素因数分解装置、安全性評価装置の構成を示すブロック図である。(実施例4) 素因数分解装置、安全性評価装置の動作、素因数分解プログラム、素因数分解方法及び安全性評価プログラムを示すフローチャートである。(実施例4) 本発明による安全性評価装置の構成を示すブロック図である。(実施例5) 安全性評価装置の動作及び安全性評価プログラムを示すフローチャートである。(実施例5) 素因数分解装置、安全性評価装置の動作、素因数分解プログラム、素因数分解方法及び安全性評価プログラムを示すフローチャートである。(変形例) 素因数分解方法による素因数分解の演算結果を示す表である。(変形例) 素因数分解装置、安全性評価装置の動作、素因数分解プログラム、素因数分解方法及び安全性評価プログラムを示すフローチャートである。(変形例)
符号の説明
1 安全性評価システム
10,10−3,10−4,10−5 安全性評価装置
11 リーダライタ
11−3 入力部
12,12−3,12−4 素因数分解部
13,13−2,13−3,13−4,13−5 安全性判定部
14 ディスプレイ
14−2 出力部
15 素数生成部
16 暗号鍵生成部
20 ICカード

Claims (22)

  1. 整数Nに対してN=p*qとなる素因数p,qを求める素因数分解方法において、
    sをNの平方根に近い整数、pをp=s+a、qをq=s−bとし、
    Nmods=(−a*b)mods
    に基づいて素因数p,qを算出すること、
    を特徴とする素因数分解方法。
  2. 請求項1に記載の素因数分解方法において、
    a=c+d、b=d−cとし、
    Nmods=(c2 −d2 )mods
    に基づいて素因数p,qを算出すること、
    を特徴とする素因数分解方法。
  3. 請求項1又は請求項2に記載の素因数分解方法において、
    ab=ks−(Nmods)、0<ab<ks、k=1として、素因数p,qを算出するための演算を行う第1の演算ステップと、
    前記第1の演算ステップにおいて、演算結果が適正であるか否かを判定する適正判定ステップと、
    前記適正判定ステップにおいて否と判定された場合に、kを逐次変更させながら前記第1の演算ステップ及び適正判定ステップを繰り返すこと、
    を特徴とする素因数分解方法。
  4. N=p*q、
    X=K*N=rp*sq=S2−a2
    S=ceiling(√X)とした場合に、S及びKの値を変化させ、aが整数となるS,Xの値を算出する第2の演算ステップと、
    前記第2の演算ステップにおいて算出したS及びXの値に基づいて、整数Nから素因数p,qを求める第3の演算ステップとを備える素因数分解方法であって、
    前記第2の演算ステップは、Kの値を大きな値から小さな値へ変化させ、aが整数となるS,Xの値を算出すること、
    を特徴とする素因数分解方法。
  5. 請求項4に記載の素因数分解方法において、
    前記第2の演算ステップにおいて、Sの値の範囲を、( 6√N/(4*√K))に比べて狭く設定すること、
    を特徴とする素因数分解方法。
  6. 請求項4に記載の素因数分解方法において、
    前記第2の演算ステップは、素因数pi 及びqi の積である他の整数Ni をKに代入し、S,Xの値を算出すること、
    を特徴とする素因数分解方法。
  7. 素数p,qの積である整数Nを取得する素因数分解対象取得手段と、
    請求項1から請求項6までのいずれか1項に記載の素因数分解方法に基づいて、前記素因数分解対象取得手段によって取得された整数Nを、素因数p,qに素因数分解する素因数分解手段と、
    を備える素因数分解装置。
  8. 素因数分解を行うためにコンピュータに実行させる素因数分解プログラムであって、
    素数p,qの積である整数Nを取得する素因数分解対象取得手順と、
    請求項1から請求項6までのいずれか1項に記載の素因数分解方法に基づいて、前記素因数分解対象取得手順において取得した整数Nを、素因数p,qに素因数分解する素因数分解手順とを備えること、
    を特徴とする素因数分解プログラム。
  9. 公開鍵暗号の暗号鍵の安全性を評価する安全性評価装置であって、
    整数Nに対してN=p*qとなる、nビットの公開鍵暗号の素因数p,qの差異を取得する素因数差異取得手段と、
    前記素因数差異取得手段によって取得された素因数p,qの上位n/2ビットにおける差異に基づいて、安全性を評価する安全性評価手段とを備えること、
    を特徴とする安全性評価装置。
  10. 請求項9に記載の安全性評価装置において、
    前記安全性評価手段は、素因数p,qについて、それぞれの最上位ビットから下位へ向けて情報単位ごとに順に比較し、相違箇所があった場合に、その位置に応じて安全性を評価すること、
    を特徴とする安全性評価装置。
  11. 請求項9又は請求項10に記載の安全性評価装置において、
    前記安全性評価手段は、前記素因数p,qについて、上位n/2ビットにおいて差がない場合に、公開鍵暗号の暗号鍵を脆弱と判定すること、
    を特徴とする安全性評価装置。
  12. 請求項9から請求項11までのいずれか1項に記載の安全性評価装置において、
    前記素因数差異取得手段は、
    整数N、秘密鍵d、公開鍵eを取得する取得手段と、
    p=s+a、q=s−a、fを0<f<eを満たす整数として、
    φ=(e*d−1)/f、s=(p+q)/2=(N−φ+1)/2、
    に基づいて素因数p,qの差異を算出する演算手段とを有すること、
    を特徴とする安全性評価装置。
  13. 公開鍵暗号の暗号鍵の安全性を評価する安全性評価装置であって、
    整数Nに対してN=p*qとなる公開鍵暗号の素因数p,qを取得する素因数取得手段と、
    sをNの平方根に近い整数、前記素因数取得手段によって取得された素因数pをp=s+a、素因数qをq=s−b、kをしきい値とした場合に、0<ab<ksを満たすか否かに基づいて公開鍵暗号の暗号鍵の安全性を評価する安全性評価手段とを備えること、
    を特徴とする安全性評価装置。
  14. 公開鍵暗号の暗号鍵の安全性を評価する安全性評価装置であって、
    整数Nに対してN=p*qとなる公開鍵暗号の素因数p,qを取得する素因数取得手段と、
    素因数取得手段によって取得された素因数p,qに基づいて、
    X=r*s*N、
    p*rn −q*sn =zn
    (rn ,sn ,zn )=(rn-2 ,sn-2 ,zn-2 )−floor(zn-2 /zn-1 )*(rn-1 ,sn-1 ,zn-1
    とし、
    拡張ユークリッドアルゴリズムの互除法を用いて、zn が所定の閾値に達した場合のrn-1 ,sn-1 に基づいて、r,sを算出する演算手段と、
    前記演算手段の演算結果に基づいて、公開鍵暗号の安全性を評価する安全性評価手段とを備えること、
    を特徴とする安全性評価装置。
  15. 公開鍵暗号の暗号鍵の安全性を評価する安全性評価装置であって、
    公開鍵暗号の素因数p,qの積である整数Nを取得する素因数分解対象取得手段と、
    請求項1から請求項6までのいずれか1項に記載の素因数分解方法に基づいて、前記素因数分解対象取得手段によって取得された整数Nを素因数分解する素因数分解手段と、
    前記素因数分解手段による素因数分解の容易さに応じて、公開鍵暗号の暗号鍵の安全性を評価する安全性評価手段とを備えること、
    を特徴とする安全性評価装置。
  16. 公開鍵暗号の暗号鍵の安全性を評価するためにコンピュータに実行させる安全性評価プログラムであって、
    整数Nに対してN=p*qとなる、nビットの公開鍵暗号の素因数p,qの差異を取得する素因数差異取得手順と、
    前記素因数差異取得手順において取得した素因数p,qの上位n/2ビットにおける差異に基づいて、安全性を評価する安全性評価手順とを備えること、
    を特徴とする安全性評価プログラム。
  17. 請求項16に記載の安全性評価プログラムにおいて、
    前記安全性評価手段は、素因数p,qについて、それぞれの最上位ビットから下位へ向けて情報単位ごとに順に比較し、相違箇所があった場合に、その位置に応じて安全性を評価すること、
    を特徴とする安全性評価プログラム。
  18. 請求項16又は請求項17に記載の安全性評価プログラムにおいて、
    前記安全性評価手順は、前記素因数p,qについて、上位n/2ビットにおいて差がない場合に、公開鍵暗号の暗号鍵を脆弱と判定すること、
    を特徴とする安全性評価プログラム。
  19. 請求項16から請求項18までのいずれか1項に記載の安全性評価プログラムにおいて、
    前記素因数差異取得ステップは、
    整数N、秘密鍵d、公開鍵eを取得する取得ステップと、
    p=s+a、q=s−a、fを0<f<eを満たす整数として、
    φ=(e*d−1)/f、s=(p+q)/2=(N−φ+1)/2、
    に基づいて素因数p,qの差異を算出する演算ステップとを有すること、
    を特徴とする安全性評価プログラム。
  20. 公開鍵暗号の暗号鍵の安全性を評価するためにコンピュータに実行させる安全性評価プログラムであって、
    整数Nに対してN=p*qとなる公開鍵暗号の素因数p,qを取得する素因数取得手順と、
    sをNの平方根に近い整数、前記素因数取得手段によって取得された素因数pをp=s+a、qをq=s−b、kをしきい値とした場合に、0<ab<ksを満たすか否かに基づいて公開鍵暗号の暗号鍵の安全性を評価する安全性評価手順とを備えること、
    を特徴とする安全性評価プログラム。
  21. 公開鍵暗号の暗号鍵の安全性を評価するためにコンピュータに実行させる安全性評価プログラムであって、
    整数Nに対してN=p*qとなる公開鍵暗号の素因数p,qを取得する素因数取得手順と、
    素因数取得手順において取得した素因数p,qに基づいて、X=r*s*N、p*rn −q*sn =zn とし、拡張ユークリッドアルゴリズムの互除法を用いて、zn が所定の閾値に達した場合のrn-1 ,sn-1 に基づいて、r,sを算出する演算手順と、
    前記演算手順における演算結果に基づいて、公開鍵暗号の安全性を評価する安全性評価手順とを備えること、
    を特徴とする安全性評価プログラム。
  22. 公開鍵暗号の暗号鍵の安全性を評価する安全性評価プログラムであって、
    公開鍵暗号の素因数p,qの積である整数Nを取得する素因数分解対象取得手順と、
    請求項1から請求項6までのいずれか1項に記載の素因数分解方法に基づいて、前記素因数分解対象取得手順において取得した整数Nを素因数分解する素因数分解手順と、
    前記素因数分解手順における素因数分解の容易さに応じて、公開鍵暗号の暗号鍵の安全性を評価する安全性評価手順とを備えること、
    を特徴とする安全性評価プログラム。

JP2005216856A 2004-08-03 2005-07-27 安全性評価装置及び安全性評価プログラム Active JP4872261B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005216856A JP4872261B2 (ja) 2004-08-03 2005-07-27 安全性評価装置及び安全性評価プログラム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2004226596 2004-08-03
JP2004226596 2004-08-03
JP2005216856A JP4872261B2 (ja) 2004-08-03 2005-07-27 安全性評価装置及び安全性評価プログラム

Publications (2)

Publication Number Publication Date
JP2006072336A true JP2006072336A (ja) 2006-03-16
JP4872261B2 JP4872261B2 (ja) 2012-02-08

Family

ID=36152968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005216856A Active JP4872261B2 (ja) 2004-08-03 2005-07-27 安全性評価装置及び安全性評価プログラム

Country Status (1)

Country Link
JP (1) JP4872261B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2905776A1 (fr) * 2006-09-11 2008-03-14 Bigilimwatshi Guy Boyo Dispositif electroniques et/ou informatique de factorisation des nombres entiers.
JP2018195274A (ja) * 2017-05-15 2018-12-06 正仁 櫨田 Cpuのアーキテクチャを上手く使った、自然数を素因数分解する方法
KR20200101782A (ko) * 2019-02-20 2020-08-28 고려대학교 산학협력단 스레드 정보를 이용한 소수 복구 방법, 이를 수행하기 위한 장치 및 기록매체
WO2024154264A1 (ja) * 2023-01-18 2024-07-25 富士通株式会社 暗号鍵評価プログラム、暗号鍵評価方法および情報処理装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2905776A1 (fr) * 2006-09-11 2008-03-14 Bigilimwatshi Guy Boyo Dispositif electroniques et/ou informatique de factorisation des nombres entiers.
JP2018195274A (ja) * 2017-05-15 2018-12-06 正仁 櫨田 Cpuのアーキテクチャを上手く使った、自然数を素因数分解する方法
KR20200101782A (ko) * 2019-02-20 2020-08-28 고려대학교 산학협력단 스레드 정보를 이용한 소수 복구 방법, 이를 수행하기 위한 장치 및 기록매체
KR102199507B1 (ko) * 2019-02-20 2021-01-06 고려대학교 산학협력단 스레드 정보를 이용한 소수 복구 방법, 이를 수행하기 위한 장치 및 기록매체
WO2024154264A1 (ja) * 2023-01-18 2024-07-25 富士通株式会社 暗号鍵評価プログラム、暗号鍵評価方法および情報処理装置

Also Published As

Publication number Publication date
JP4872261B2 (ja) 2012-02-08

Similar Documents

Publication Publication Date Title
JP4284320B2 (ja) 楕円曲線暗号装置,楕円曲線暗号方法および楕円曲線暗号プログラム
JP4789468B2 (ja) 秘密鍵を用いた耐タンパ楕円曲線暗号処理
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
JP5001176B2 (ja) 署名生成装置、署名生成方法及び署名生成プログラム
Ambedkar et al. A new factorization method to factorize rsa public key encryption
JP2003208097A (ja) サイドチャネルアタック耐性を有する暗号演算装置及び方法
JP4568886B2 (ja) Rsaタイプの暗号アルゴリズムを安全に実施するための方法、および対応する構成要素
JP2009175197A (ja) 暗号装置、復号装置、鍵生成装置及びプログラム
JP4872261B2 (ja) 安全性評価装置及び安全性評価プログラム
JP2003098962A (ja) 楕円曲線スカラー倍計算方法及び装置並びに記録媒体
KR20050106416A (ko) 암호화 시스템 내의 모듈러 멱승 결과 결정 장치 및 방법
JP5553773B2 (ja) 楕円曲線上の点のスカラー倍を計算する装置及び方法
US20090238360A1 (en) Exponentiation ladder for cryptography
US9419789B2 (en) Method and apparatus for scalar multiplication secure against differential power attacks
JP2007187908A (ja) サイドチャネル攻撃に耐性を有するモジュラーべき乗算計算装置及びモジュラーべき乗算計算方法
US6609141B1 (en) Method of performing modular inversion
JP2004163687A (ja) 楕円曲線暗号装置、楕円曲線暗号プログラム
CN111368317A (zh) 一种计算机数据加密系统及方法
JP2008525835A (ja) 暗号計算を実行するための方法及び装置
JP2003216026A (ja) 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにコンピュータ・プログラム
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
JP4692022B2 (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
JP5010508B2 (ja) 楕円曲線暗号演算装置、方法及びプログラム並びに楕円曲線暗号演算システム及び方法
Dhamodharan et al. An Optimized And Secure Elliptic Curve Cryptography For The Internet Of Things
KR101833360B1 (ko) Rsa 암호시스템의 지수승 연산에 이용되는 사전 연산 테이블 생성 방법 및 그 장치

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20061120

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080609

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110419

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110617

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110802

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111003

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111025

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111107

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141202

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4872261

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150