利用者:Roget/ACE(暗号方式)
表示
[暗号理論]のところに素因数分解ベースとかあったが, 実はDDH仮定とUOWHFsなハッシュ関数とPRPな共通鍵暗号らしい. というかKEM部分はもろにCramer-Shoup. なぜならACE Encryptの提案者がShoup and Schweinbergerだから. 一方, ACE Signatureの方は素因数分解ベース...というかCramer-Shoup署名.
簡略版
鍵生成
[編集]1024 ≦ m ≦ 16384.
- 256ビットの素数qを生成.
- mビットかつ qk+1の形をした素数pを生成.
- 以下, Z_P^*の位数qの部分群をGと書く.
- Gの生成元g_1をランダムに生成.
- w,x,y,z_1,z_2をZ_qからランダムに生成
- g_2 = g_1^2, c = g_1^x, d = g_1^y, h_1 = g_1^{z_1}, h_2 = g_1^{z_2}とする.
- ハッシュ鍵k_1, k_2をランダムに生成
- 公開鍵は(p,q,g_1,g_2,c,d,h_1,h_2,k_1,k_2). 秘密鍵は(w,x,y,z_1,z_2).
暗号化
[編集]平文をmとする.
- 128ビットの数sを任意に生成する. (ランダムではない?)
- rをZ_qからランダムに生成.
- KEMパート
- u_1 = g_1^r, u_2 = g_2^rとする.
- 160ビット出力のハッシュ関数Hを用いて, α = H(k_1,s,u_1,u_2)とする.
- v = c^r d^{\alpha r}とする.
- DEMパート
- \tilde{h}_1 = h_1^r, \tilde{h}_2 = h_2^{r}を計算する.
- 256ビット出力のハッシュ関数H'を用いて, k = H'(k_2,s,u_1,\tilde{h}_1,\tilde{h}_2)とする.
- 鍵長が256ビットの対称鍵暗号Cを用いて, e = C_k(m)を計算する.
- 暗号文は, (s,u_1,u_2,v,e).
復号
[編集]- \alpha = H(k_1,s,u_1,u_2)とする.
- v≠u_1^{x+\alpha y}ならReject.
- \tilde{h}_1 = u_1^{z_1}, \tilde{h}_2 = u_2^{z_2}とする.
- k = H'(k_2,s,u_1,\tilde{h}_1,\tilde{h}_2)とする.
- m = C_k(e)とする.
- mを出力して終了.
http://cryptrec.nict.go.jp/cryptrec_03_0424_outrep.htm
- ACE Encryption
- ACE Signature
- 日立製作所による評価
- Buchmann
- Menezes et al.