If I generates lots of private keys, I can get someone's address and its digital signature, right? I know that there's 2^256 possible private keys, but what if I use brute-force attack? Is it theoretically possible to hack someone's ether?
Theoretically, yes: A private key is just a random number, and if you make one there is a non-zero probability that it will already be in use by someone else.
However, the probability of finding a valid, properly-generated private key used by someone else using computers available now or in the forseeable future is low enough that you can safely consider it impossible.
Theoretically it is possible, but the scale of this brute force attack is unfathomable.
Take a look at this back of the envelope calculation for bitcoin:
In order to spend money sent to a Bitcoin address, you just need to find a ECDSA public key that hashes to the same 160-bit value. That will take, on average, 2160 key generations.
Supposing you could generate a billion (230) per second, you need 2130 seconds.
Doing this in parallel using a billion machines requires only 2100 seconds.
Getting a billion of your richest friends to join you gets it down to only 270 seconds.
There are about 225 seconds per year, so you need 245 years.
The age of the Universe is about 234 years so far — better get cracking!
It is not theorically possible, but it may happen.
There are some theorems that can be used to assert that it is not impossible.
For instance look at the “Birthday Theorem”. How many probabilities to have two persons in a room having the same birthday date if the days in a year are 365? If you have 366 persons in the room you have the 100% of probabilities to have at least two persons with the same birthday date. But if you agree to have the 50% of probabilities only for your experiment, 23 persons in a room are enough.
This mean: may happen, even if it is not so easy. If you agree to make brute force with low probabilities of success, It may happen, it is not easy, not probable.
On the other side you can understand that “rich” accounts are so few in the universe, that if you couple the low probability to obtain a valid address to the low probability to find money in it, it do not worth the while... at the moment 😉
The size of Ethereum’s private key space, (roughly 2^256) is an unfathomably large number. It is approximately 10^77 in decimal - that is a number with 77 digits. For comparison, the visible universe is estimated to contain 10^80 atoms, i.e. there are almost enough private keys to give every atom in the universe an Ethereum account. If you pick a private key randomly, there is no conceivable way anyone will ever guess it or pick it themselves. (source : "Mastering ethereum")