I want to get feedback on the security of a modified merkle tree data structure. Using the image above as a reference assume I have a random oracle function $H$. Assume $H$ outputs a value in $\mathbb{F}_p$, and all math is happening in this field too.
The standard approach to calculate $D$ is
$B = H(A, C)$
$F = H(E, G)$
$D = H(B, F)$
The approach I'm considering alternates between hash function and polynomial. To calculate $D$ I would use $H$ in the first level:
$B = H(A, C)$
$F = H(E, G)$
Then use multiplication in the second level:
$D = B * F$
Then to calculate the parent of $D$ I would do $H(D, D_{sibling})$, then above that I would use multiplication again.
I'm wondering, is this guarded by Schwartz–Zippel? $B$ and $F$ should both be randomly distributed in $\mathbb{F}_p$, is $B*F$ a polynomial of degree 2? Does the case of $B = F$ matter? e.g. $A = E \land C = G$
When making a merkle proof I'd include the pre-image of any nodes that are combined with multiplication. So in the below tree I would prove membership of $J$ in $A$ by supplying: $J$, $K$, $I$, $Z$, $C$.
A
/ \
B C
/ \ / \
D E F G
/ \ / \ / \ / \
Z I J K L M N O
I would then compute
$B = H(Z, I) * H(J, K)$
$A = H(B, C)$