lucash.dev on Nostr: HMAC is a specific use case of hashing with a prefix — in that case for ...
HMAC is a specific use case of hashing with a prefix — in that case for authentication.
Using HMAC in taproot would just cause confusion as to what is being authenticated and why there’s no secret involved.
Calling it “tagged hash” and defining it in the specification eliminates any confusion.
The generic term for that use case is “domain separation”. There are other ways of doing it besides prefixing though, so just saying “domain separation” isn’t very helpful.
They also were extra cautious and used prefixes generated in an unusual way.
If the all of Bitcoin used domain separation that wouldn’t have been necessary.
Published at
2023-03-08 18:56:31Event JSON
{
"id": "acc65b89877e489ecd7be0b0a9b54eb6bb0aa2ffe14d8c839129a4d6421f05c0",
"pubkey": "82d70f9685eabec271201bacd1fc1941e9686a9bf2b686c381a5b662f60002b1",
"created_at": 1678301791,
"kind": 1,
"tags": [
[
"e",
"69d921f4f9f8a34e18e8ab4fc8b9b13e03691864198b4670ddb6e435d4202320"
],
[
"p",
"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d"
]
],
"content": "HMAC is a specific use case of hashing with a prefix — in that case for authentication.\n\nUsing HMAC in taproot would just cause confusion as to what is being authenticated and why there’s no secret involved.\n\nCalling it “tagged hash” and defining it in the specification eliminates any confusion.\n\nThe generic term for that use case is “domain separation”. There are other ways of doing it besides prefixing though, so just saying “domain separation” isn’t very helpful.\n\nThey also were extra cautious and used prefixes generated in an unusual way.\n\nIf the all of Bitcoin used domain separation that wouldn’t have been necessary.",
"sig": "6ae62b887f6d529d3ac3b85567ad0e30d452ff0568d68ca245aa6b1a4ce9df53a8b72a1c37d8751dde9bb88b5f81057822a2d7af87dd9eec0e3ece67efed2410"
}