Author

Topic: Is it possible to generate public keys using public info and other public info? (Read 839 times)

full member
Activity: 217
Merit: 259
By publishing Kp, a customer should be able to combine Kp and n, in such a way he gains a public key Kp(1013853254).
If a customer sends Money to the associated adress of this public key Kp(1013853254), then the funds
should be spendable by combining Ks with n in such a way I gain Ks(1013853254).

How is this possible with lets say EC primitives?

The associative law and the distributive law hold for EC and can be used.  Kp = Ks * G, hence
   (1013+Ks) * G = 1013*G + Ks*G = 1013*G + Kp
and
   (1013*Ks) * G = 1013 * (Ks * G) = 1013 * Kp

Note that + and * have two different meanings above.  Operator + is point addition or number addition modulo group order.  Operator * is point multiplication or number multiplication modulo group order.

So 1013+Ks is the private key for 1013*G + Kp  and 1013*Ks is the private key for 1013 * Kp.

I think it doesn't really matter which method you use.  See also BIP32, which uses a variant of the first method for non-hardened derivation  (hardened derivation is not what you want, because then you cannot compute the public key without the private key).  A problem is that if one private key is leaked the others can easily be computed, but there is no general way to avoid it.
sr. member
Activity: 392
Merit: 268
Tips welcomed: 1CF4GhXX1RhCaGzWztgE1YZZUcSpoqTbsJ
It is possible to generate public keys from anything, actually generating public keys from random data is the proof that you can generate them from anything.

Doesn't really answer this topic though. The OP wants to derive keys, e.g. from a master key and a number.
full member
Activity: 157
Merit: 103
Salí para ver
The fact that you can actually generate public keys from random data is the proof that you can generate them from anything.
sr. member
Activity: 392
Merit: 268
Tips welcomed: 1CF4GhXX1RhCaGzWztgE1YZZUcSpoqTbsJ
On this page:

https://gobittest.appspot.com/VanityMult

What does "modified base Point" mean? Anyone that have the exact mathematics involved?

Adding private keys is the same as point addition for public keys.

For vanity addresses, I generate pri1 and corresponding pub1. I provide pub1 to the vanity address search service. The service searches for a pri2 such that pub1+pub2 is an address that has the right prefix. Pri2 is returned to the requester.
full member
Activity: 129
Merit: 119
On this page:

https://gobittest.appspot.com/VanityMult

What does "modified base Point" mean? Anyone that have the exact mathematics involved?
staff
Activity: 3458
Merit: 6793
Just writing some code
This is similar to what vanitygen uses to find other people's vanity addresses without letting the generator know the entire privkey. The thread is here: https://bitcointalksearch.org/topic/vanitygen-vanity-bitcoin-address-generatorminer-v022-25804 and the part about combining keys is partway down the OP. There is also a handy tool here: https://gobittest.appspot.com/VanitySum that both does it for you and tells you how its done.
sr. member
Activity: 392
Merit: 268
Tips welcomed: 1CF4GhXX1RhCaGzWztgE1YZZUcSpoqTbsJ
This seems fairly close to BIP32. You can derive keys, but you may need the hardened keys for this (for security if anyone knows xpub and their own private key)
full member
Activity: 129
Merit: 119
Imagine this:
I have a EC keypar Ks and Kp. (secret and public).

Now I have a system with access card for customers. I want them to be able to refill the cards. Each card contains a number, lets say "1013853254", which is denoted "n".

By publishing Kp, a customer should be able to combine Kp and n, in such a way he gains a public key Kp(1013853254).
If a customer sends Money to the associated adress of this public key Kp(1013853254), then the funds
should be spendable by combining Ks with n in such a way I gain Ks(1013853254).

How is this possible with lets say EC primitives?
Jump to: