Open ashWhiteHat opened 2 years ago
x座標のみを用いると-Pの逆元はxの値が同じであるため衝突する そのため以下のようなスキームになる
ハッシュ関数を以下のように定義する $h: E(F_p) \rightarrow F_p$
ハッシュ関数内ではSHA256に加えて $H_{cw}$の関数が定義される
$H{cw}$は以下のように定義される $H{cw}(x) = ((ax + b) \mod q) \mod p $
スキーム全体は以下のように定義される
任意の楕円曲線の有理点 $P \in E(Fp)$ に対して $h: P \rightarrow H{cw}(SHA256(P_x | P_y))$
なぜ、xではなくax + bにするのかわからない SHA256をポセイドンに置き換えることができるのかわからない
$a$, $b$, $q$はランダムな値
スポンジ構造
keccakに使われているのはmulti-rate padding
というpadding rule。
内部で行われている処理が全部見られる関数 https://github.com/debris/tiny-keccak/blob/master/src/lib.rs#L59
multirate padding https://github.com/ctz/keccak/blob/master/keccak.py#L46 わかりやすいpadding解説 https://cryptologie.net/article/387/byte-ordering-and-bit-numbering-in-keccak-and-sha-3/ paddingの実装 https://github.com/debris/tiny-keccak/blob/master/src/lib.rs#L352 https://github.com/debris/tiny-keccak/blob/master/src/lib.rs#L432
LSBのbit numberingの後にpadding https://www.computerhope.com/jargon/l/leastsb.htm
入力の文字列をkeccakの形式に変換する。 入力のメッセージをMとし、kaccakの形式をKとすると $h2b: M \rightarrow K$
B.1 Conversion Functions p26 https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf
入力の文字列KをPaddingする。
B.2 Hexadecimal Form of Padding Bits p27 https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf
Algorithm 1 https://keccak.team/obsolete/Keccak-specifications.pdf
p: multirate padding function H: Hash State i: Hash State init function a: absorb function s: squeeze function
$p(M) \rightarrow M'$ $i() \rightarrow H$ $a(H, M') \rightarrow H'$ $s(H, M') \rightarrow Z$
1と2はこちら https://github.com/blockchaininnovation/zkzkrollup/issues/2#issuecomment-1311134728
3と4はKeccak-f[r + c]に依存する absorbと呼ばれているフェーズと思われる
5はHash Stateを出力する squeezeと呼ばれているフェーズと思われる
入力MによりHash Stateを書き換える置換関数。 rとcにより決定される。 rはrate。fはfixed-lenght。cはcapacity。r + c = fになる。 keccak256の場合はr = 1088、c = 512、f = 1600となりKeccak-1600と呼ばれる。
θ, ρ, π, χ, ιの置換によりHash Stateを入力Mで書き換えていく(absorb)
x, y, zの3次元空間で表される状態。 入力Mからこの空間にabsorbされ、squeezeすると出力Zが与えられる。 x, y, zは上記のrとcから導かれる。
r + c = b wはb/25、lはlog(b/25) Keccak-1600の場合は、w = 64、l = 6
x = 5 y = 5 z = w となる
Sponge Constructionから https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf
ポセイドンハッシュのパラメータ設定 https://www.poseidon-hash.info/
HADE Strategy https://eprint.iacr.org/2020/179.pdf
M ◦ S ◦ ARK(·)の過程になる
HADE Strategyの元の論文 https://eprint.iacr.org/2019/1107.pdf
http://professor.unisinos.br/linds/teoinfo/Keccak.pdf
Pre-Processing
Sponge Construction
Permutation
The Round Function
poseidonの基本的な考え方はHADESMiMCと同じ https://eprint.iacr.org/2019/1107.pdf
https://eprint.iacr.org/2019/458.pdf