Hashing To A Field: Expanding The Message

--

Domain string tags (DSTs) are increasingly used in hashing methods. In Figure 1, Bob has a message and wants a hashed output of a given number of bytes. For this, we can add the Domain Separation Tag (DST) and a definition of the length of the output:

Figure 1: Applying a DST to the hashing fuction and producing a given hash length

Overall, we should not just concatenate the message and the DST, as it will not always get a unique set of (message, DST) pairs. For example, if we had two DSTs of “DEF” and “EF”, then, if we concatenate with a message of “ABC” and “ABCD”, we would get to identical pairs of (“ABC” || “DEF”) and (“ABCD” || “EF”) — as both would equal “ABCDEF”. The DST is thus used to initialise the hashing function rather than concatenating it to the message (as we would normally do when we add salt to a password).

Hash to curve

Let’s say we have almost 2²⁵⁶ integer point values. This will give us 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936 different (x,y) points. Can we find a way to hash some data onto one of these points, and so it is not possible to know the data that resulted in that point, and that it is highly unlikely for two different data elements…

--

--

Prof Bill Buchanan OBE FRSE
ASecuritySite: When Bob Met Alice

Professor of Cryptography. Serial innovator. Believer in fairness, justice & freedom. Based in Edinburgh. Old World Breaker. New World Creator. Building trust.