Problem 3: You can’t put the cryptography where you need it
Performance vs. security vs. functionality
Performance issues vary and include compression, caching, memory, etc. (engineering problems)
Security (often) favors moving cryptography close to the application to maximize control
Functionality favors moving cryptography away from the application to maximize transparency
But, user-layer crypto is often the only choice