Open1

半直積で作るクラマー・シュープ暗号

サレルノのエルマンノサレルノのエルマンノ

ここで、楕円とスカラーの半直積を使ってクラマー・シュープ暗号を作ってみる。
多元離散対数問題が合成数に対する複数の生成元を持つのに対し、素数位数の楕円曲線の生成元はただ1つである。

確認したいのは、公開鍵は秘密鍵より情報量が多い時、秘密情報を守れるのか?
どうかということです。

定義:Cramer-Shoup暗号
G,q,gは位数qの群Ggはその生成元とする。
w乱数。
g'=g^wとし、さらにx_1,x_2,y_1,y_2,z_1,z_2 \in Z_qを秘密の乱数とする。
e=g^{x_1}g'^{x_2},f=g^{y_1}g'^{y_2},h=g^{z_1}g'^{z_2}
ここで公開鍵が行列だったら見ただけで駄目であることが分かる。
一方、半直積ならどうだろうか?
どのようにしても行列なら4つの要素が必要だが、半直積ならその半分の2つだけで済む。
今、半直積の演算を次のように考える。
楕円曲線の点をP,Qとし、スカラーがa,bである時、
(P,a)(Q,b)=(bP+Q,f(a,b))
であるとする。

半直積の元の2番めの要素(スカラーの部分)はただの離散対数だと簡単に解読されてしまうので、何らかの形で乱数ぽい値が出てきて解析が難しくなるようにしなければならない。
ここでは、指数がずっといっしょなんておかしい気がするので、
b=a^b \mod q, a=b\oplus (a^b \mod q)(2入力2出力)にしておこう。
f(a,b)=(b \oplus (a^b \mod q), a^b \mod q)
むやみに複雑にしても暗号解析の足しにはならないのだけれど、何もしないと不安になる。
そもそも、f(a,b)なんていう自分勝手な定義が許されるんだろうか。
半直積の演算は、その群が使っている演算しか許されないのではなかったか?
もしそうなら、そうなった時半直積にどのような不都合が起きるのか確かめたい。
1.(P,a)(Q,b)=(bP+Q,ab)が正しいのか。
2.(a,P)(b,Q)=(H(aQ)\oplus b,P+Q)
でも面白い。
今問題になっているのは半直積なら「クラマー章府」でもいいのかということだから、どのような作用を与えるかを気にしないでやってみよう。
(以下、半直積の便利な公式へ)

続く・20240826