1) Only if you know the public key too (not the address).
2) baby-step-giant-step in this case (80 bits) would require more than 2^40 work, because you don't have enough Ram to store 2^40 public keys.
How it worksimagine you have:
a) a partial private key d:
f461d7473a944648de9630a2062fc29f676fab0c6e9c344a472f70bef31dca1
7 (you lost the last digit, 7)
b) the public key P:
x : 4461130191898d8b22c00c474a5903a679afcf7988c2db3636223ab4ce7883e2
y: 50abf843d037afdb1a40ae565c8c72b7b29740282bd335a63d369e6eeced21a2
You lost the last hex digit,
7, 16 is then the search space size.
How can you retrieve the correct value?
Option:
1)
brute force, there are max 16 tries to do: from f461....dca1
0 to f461....dca1
e, for each private key you compute the public key and compare the result with P.
2)
baby-step-giant-step (-->
http://andrea.corbellini.name/2015/06/08/elliptic-curve-cryptography-breaking-security-and-a-comparison-with-rsa/):
you create two lists, the first one (giant steps list) in a hash table stored in Ram and the second one (baby steps list) dynamic:
a) (
giant steps list): each giant step is equal to the sqrt(space size), in our case sqrt(16) = 4, namely the distance between 2 elements is 4*G .
Then we create the list:
k*G, (k+4)*G, (k+8)*G, (k+12)*G where k is the first possible key to check (k = f461....dca1
0)
b) now we generate the
baby-steps list (the distance beween 2 consecutive elements is 1*G) on fly, starting from
P
and we check if it is equal to an element in the giant-steps list, if not try with
P - 1*G, P - 2*G and so on (P-3*G is the last element).
In our case,
P - 3*G = (k+4)*G--> P = (k+
7)*G -->
private key k+7If you don't know the last 2 hex digits, the search space is 256 elements, then you need to create a list of 16 elements (baby-steps: k*G, (k+16)*G, (k+2*16)*G, ...,(k+15*16)*G) and the baby-steps list (P, P - 1*G, P - 2*G, ...., P - 15*G).
16 elements * 16 elements = 256 comparisons
A software (not mine) that works in this way:
https://gist.github.com/jhoenicke/2e39b3c6c49b1d7b216b8626197e4b89