Bitcoins's BIP-32 and IPNS

I’m curious whether anyone else has thought about this.

BIP-32’s is a scheme for deriving keys. Nevermind the conventions or original purpose, the salient technical matter is that (with the “unhardened” method) one can compute a new public key from and old public key, and a new private key from an old private key, and if the original pair corresponded, the new pair does too.

Where I think this would be useful with IPNS is partial maps that do not reveal their domain. Consider if I have some sort of centralized key value store exposed to the internet. It is quite easy to allow lookups, but prohibit traversing the index. If I dump the content in a map whose root I sign with IPNS however, traversing the index is trivial.

Back to BIP-32, if one can convert their query keys into a derivation path (in short, an extra input so that multiple key pairs can be derived from the original), then the signer can sign the value with a derived private key corresponding to the query key, and the verifier/inquirer can compute a public key, public key hash, and thus IPNS address from the public key. Checking that IPNS address constitutes looking up the map at that key.

With either scheme one can query individual query keys as much as they like, but a brute-force search is not effective with the a keyspace this large.

1 Like