Good abstraction is what gives you the simplicity, clarity and security. Abstraction is great to talk about things precisely.
Exactly. IMHO abstractions on the problem-domain are good. But then there are these kind of meta-level abstractions, like factories, proxies etc., which are usually just making matters complicated.
IMO one should always strive for simplicity and clarity. And if it is critical code that needs to be secure then there is no excuse for unecessary abstraction.