Defenders have to protect against every possible vulnerability, but an attacker only has to find one security flaw to compromise the whole system. Yet these systems are still successful because the benefits and conveniences outweigh the losses. A good cryptographic system strikes a balance between what is possible and what is acceptable. A computer encryption program, no matter how good, will not prevent an attacker from going through someone's garbage. The good news about cryptography is that we already have the algorithms and protocols we need to secure our systems.
Companies often get the easy part wrong, and implement insecure algorithms and protocols.
The best protocol ever invented can fall to an easy attack if no one pays attention to the more complex and subtle implementation issues. Netscape's security fell to a bug in the random-number generator. Security is a chain, and a single weak link can break the entire system. Once you find a security flaw, you can fix it. But finding the flaws in a product can be incredibly difficult.