(To nie pasuje do komentarza.)
Myślę, że teraz widzę, jak pokazać, że twoje solenie niekoniecznie zapewnia
rzetelną weryfikację zerowej wiedzy.Niech będzie bezpiecznym hashem.H.0Jeśli wiemy,
że może już obsłużyć dane o dowolnej długości, to niech H 1 będzie równe H 0 , w przeciwnym razie
niech H 1 będzie wynikiem zastosowania konstrukcji Merkle – Damgard do H 0 .
(Zauważ, że | | oznacza konkatenację.)H.0H.1H.0
H.1H.0
| |Niech jest takie, że
do wszystkich łańcuchów 3-bitowe x i Z , dla wszystkichH.2)
xz -bit( (3⋅b)+6 )łańcuchy ,
dla łańcucha m taki, żey
mm=x| |111 ... [ b z nich ] ...111| |y| |z,
jeden maH.2)( m )=x| |111...[b of them]...111| |H.1( m )| |z.
i
Dla wszystkich łańcuchów 3-bitowych , dla wszystkich soli rxr, dla ciągu który wynika z solenia x za pomocą rmxrJeżeli jest
nie w postaci omówione powyżej, a następniem
H.2)( m )=x| |111 ... [ b z nich ] ...111| |H.1( m )| |x.
i
dla wszystkich łańcuchów które nie mają żadnej z tych dwóch form,
H 2 ( m )m
[ bH.2)( m )=
[ b+3 bity, których wartości nie mają znaczenia ]| |H.1( m )| |[ 3 bity, których wartości nie mają znaczenia ].
.
Ponieważ w każdym przypadku występuje w tym samym miejscu, każde zderzenie w H 2 jest również zderzeniem w H 1 .H.1H.2)H.1Dzięki bezpieczeństwu Merkle-Damgarda każda kolizja w może być skutecznie przekształcona
w kolizję w H 0 .H.1
H.0Zatem, jeśli jest odporny na kolizję, wówczas H 2 .
Jeśli jednak liczba wierzchołków jest potęgą dwóch, to sprawdzając 3 bity
na każdym końcu skrótu korzenia, można ustalić, czy początkowe i
końcowe wierzchołki otrzymały ten sam kolor z prawdopodobieństwem błędu mniejszym niż 1 / ( 2 ( b - 1 ) ) .H.0H.2)
1 / ( 2( b - 1 ))