「単純電力解析」の版間の差分
Wikipedia:レイアウトの指針#記事の構成、{{デフォルトソート:}} |
|||
10行目: | 10行目: | ||
OUTPUT: M <br /> |
OUTPUT: M <br /> |
||
< |
<syntaxhighlight lang="c"> |
||
int i; |
int i; |
||
int T=C; |
int T=C; |
||
21行目: | 21行目: | ||
} |
} |
||
return T; |
return T; |
||
</syntaxhighlight> |
|||
</source> |
|||
この場合d[i]=0の場合は①の自乗算の処理のみが行われるが、d[i]=1の場合は①に加え②の掛算の処理も行われる。自乗算と掛算の消費電力が異なることを利用すれば1個の消費電力波形から[[秘密鍵]]を導出できてしまう。SPAから秘密鍵を守るには以下の2種類のアルゴリズムが利用される。 |
この場合d[i]=0の場合は①の自乗算の処理のみが行われるが、d[i]=1の場合は①に加え②の掛算の処理も行われる。自乗算と掛算の消費電力が異なることを利用すれば1個の消費電力波形から[[秘密鍵]]を導出できてしまう。SPAから秘密鍵を守るには以下の2種類のアルゴリズムが利用される。 |
||
28行目: | 28行目: | ||
OUTPUT: M <br /> |
OUTPUT: M <br /> |
||
< |
<syntaxhighlight lang="c"> |
||
int i; |
int i; |
||
int T[]; |
int T[]; |
||
39行目: | 39行目: | ||
} |
} |
||
return T[0]; |
return T[0]; |
||
</ |
</syntaxhighlight> |
||
''Calculate M=C<sup>d</sup> mod N'' <br /> |
''Calculate M=C<sup>d</sup> mod N'' <br /> |
||
45行目: | 45行目: | ||
OUTPUT: M <br /> |
OUTPUT: M <br /> |
||
< |
<syntaxhighlight lang="c"> |
||
int i; |
int i; |
||
int T[]; |
int T[]; |
||
57行目: | 57行目: | ||
} |
} |
||
return T[0]; |
return T[0]; |
||
</syntaxhighlight> |
|||
</source> |
|||
上記のアルゴリズムは上から"Add-and-double-always method","Montgomery Ladder"(論文[IIT03]の呼び名)と呼ばれ、d[i]の値に関わらず①と②の演算を行い、③でd[i]の値に即した処理を行うのが特徴である。これにより理論上<ref>但しハードウェアの回路構成によってはSPAに防御できないことがある(論文[ISO09]より)</ref>1個の消費電力波形から秘密鍵を導出することはできない。これら3つの暗号アルゴリズムはRSAのみにかかわらず、[[ElGamal暗号]]や[[楕円曲線暗号]]など[[公開鍵暗号]]全般に適用できる。 |
上記のアルゴリズムは上から"Add-and-double-always method","Montgomery Ladder"(論文[IIT03]の呼び名)と呼ばれ、d[i]の値に関わらず①と②の演算を行い、③でd[i]の値に即した処理を行うのが特徴である。これにより理論上<ref>但しハードウェアの回路構成によってはSPAに防御できないことがある(論文[ISO09]より)</ref>1個の消費電力波形から秘密鍵を導出することはできない。これら3つの暗号アルゴリズムはRSAのみにかかわらず、[[ElGamal暗号]]や[[楕円曲線暗号]]など[[公開鍵暗号]]全般に適用できる。 |
2020年7月5日 (日) 23:02時点における版
単純電力解析(たんじゅんでんりょくかいせき、英: Simple Powering Analysis)は、暗号ハードウェア(ICカードなど)に対するサイドチャネル攻撃の1つで、1個の電力波形をモニタリングすることで暗号解読を行う攻撃である。SPA(エスピーエイ)とも呼ばれる。1990年代中盤に提案された。
SPAの例
RSA暗号の復号過程において、以下のアルゴリズムが実行されたとする。秘密鍵に相当するdはバイナリ演算を行っていて、nビットの数値であるとする。すなわちd[i]は0or1である。
Calculate M=Cd mod N
INPUT: d,C
OUTPUT: M
int i;
int T=C;
for(i=n;i=>0;i--)
{
T=T*T; // ①
if(d[i]==1){
T=T*C; // ②
}
}
return T;
この場合d[i]=0の場合は①の自乗算の処理のみが行われるが、d[i]=1の場合は①に加え②の掛算の処理も行われる。自乗算と掛算の消費電力が異なることを利用すれば1個の消費電力波形から秘密鍵を導出できてしまう。SPAから秘密鍵を守るには以下の2種類のアルゴリズムが利用される。
Calculate M=Cd mod N
INPUT: d,C
OUTPUT: M
int i;
int T[];
T[0]=C;
for(i=n;i=>0;i--)
{
T[0]=T[0]*T[0]; // ①
T[1]=T[0]*C; // ②
T[0]=T[d[i]]; // ③
}
return T[0];
Calculate M=Cd mod N
INPUT: d,C
OUTPUT: M
int i;
int T[];
T[0]=C; T[1]= C*C;
for(i=n;i=>0;i--)
{
T[2] = T[d[i]]*T[d[i]]; // ①
T[1] = T[0]*T[1]; // ②
T[0] = T[2-d[i]]; // ③
T[1] = T[1+d[i]]; // ③
}
return T[0];
上記のアルゴリズムは上から"Add-and-double-always method","Montgomery Ladder"(論文[IIT03]の呼び名)と呼ばれ、d[i]の値に関わらず①と②の演算を行い、③でd[i]の値に即した処理を行うのが特徴である。これにより理論上[1]1個の消費電力波形から秘密鍵を導出することはできない。これら3つの暗号アルゴリズムはRSAのみにかかわらず、ElGamal暗号や楕円曲線暗号など公開鍵暗号全般に適用できる。
脚注
- ^ 但しハードウェアの回路構成によってはSPAに防御できないことがある(論文[ISO09]より)
参考文献
- [IIT03]:K. Itoh,T. Izu and M. Takenaka, "A Practical Countermeasure against Address-bit Differential Power Analysis", CHES 2003, LNCS 2779, pp. 382-396, 2003.
- [ISO09]:M. Izumi, K. Sakiyama, K. Ohta, "A New Approach for Implementing the MPL Method toward higher SPA Resistance", ARES 2009, pp.181-186, IEEE Computer Society, 2009
関連項目
外部リンク
この節の加筆が望まれています。 |