2
As describe by Maxwell here in HD wallets assuming we have a key pair with private key SK.a and public key of PK.a and a seed s and a generator point G, we can generate a new key pair of (SK.b, PK.b) as follows:
PK.b = PK.a + sG
SK.b = SK.a + s
The advantage with this method is that a service provider can generate new public keys without knowing the clients private key. My question is that, why don't we multiply the seed and private key rather than adding them?
PK.b = PK.a * s
SK.b = SK.a * s
Is there any problem with the later method that I suggested?
Thanks for the answer! As I also expected, it should be due to the performance and efficiency. However, doesn't multiplication makes it stronger in terms of security? In addition, finding the master public key based on children's public key would be easy for an attacker I suppose? He just needs to subtract a children's public key by different number (brute forcing seed size) – abeikverdi – 2015-03-08T08:52:04.910
2No, it does not add anything. There are no security properties that a multiplication gives that addition doesn't. The reasons for changing was that it 1) didn't improve anything 2) was faster 3) was easier to implement and 4) would not make people assume it has any properties it doesn't (people often assume that no inverse for EC multiplication exists, which is true, but only to solve for k in k*P = Q; solving for P is possible). – Pieter Wuille – 2015-03-08T14:23:10.570
@PieterWuille can you elaborate a bit more on your last sentence? What do you mean by solving P is possible? – abeikverdi – 2015-03-09T08:10:27.430
@abeikverdi This is getting out of scope of the original question, so I made a new question.
– Nick ODell – 2015-03-09T09:34:04.987