By designing hardware, software, and/or networks more securely,
attacks are made more difficult. Examples include the use of proven secure
software, verified designs, and inherently secure architectures.
Complexity: It's much harder to make things secure than to make them
functional. Nobody knows exactly how much harder, but there is some notion
that making something secure might imply verifying the security properties,
and this is known to be at least NP-complete.