The private key can be derived from the public key, but the amount of computing power to do so it prohibitive. For example, if you used RSA you'd have to find the prime factors of a very large number. A quote from Wikipedia is in order here:
"Determining the prime factors of a number is an example of a problem frequently used to ensure cryptographic security in encryption systems; this problem is believed to require super-polynomial time in the number of digits- it is relatively easy to construct a problem that would take longer than the known age of the Universe to calculate on current computers using current algorithms."
The problem in cryptography is not keeping something secret forever, it's keeping it secret long enough to no longer matter.