Unlocking the unknowns: Cryptography Essentials for Spring Developers by Laurentiu Spilca @ Spring
- 모든 애플리케이션은 공격 대상이며, 비밀 정보 관리와 안전하지 않은 네트워크 통신 때문에 보안 및 암호화가 필수적입니다. 개발자도 보안 문제에 대한 책임이 있을 수 있습니다. 🔒
- 암호화의 핵심은 대칭키 암호화, 비대칭키 암호화, 암호화 해싱입니다. 🔑
- 대칭키 암호화는 하나의 키를 사용하며 성능이 우수하지만, 키 공유 시 위험이 따릅니다. 🚀
- AES(Advanced Encryption Standard)는 현재 대칭키 암호화의 표준이며, 오래된 DES는 더 이상 사용되지 않습니다. 🛡️
- 암호화 알고리즘은 계속 발전하므로, 미래의 변화에 유연하게 대응할 수 있도록 추상화된 아키텍처를 설계하는 것이 중요합니다. 🔄
- AES 적용 모드 중 ECB(Electronic Codebook)는 패턴을 노출시켜 보안에 취약하므로 절대 사용해서는 안 됩니다. 🐧
- CBC(Cipher Block Chaining)는 초기화 벡터(IV)를 사용하여 패턴 문제를 해결하지만, 병렬화가 어렵고 데이터 무결성 검증을 위한 인증 태그가 없습니다. ⛓️
- GCM(Galois/Counter Mode)은 스트림 방식 암호화로, 초기화 벡터와 인증 태그를 사용하여 기밀성 및 무결성을 제공하며, 병렬 처리가 가능하여 가장 권장되는 AES 모드입니다. 🍊
- Spring Security는 대부분의 경우 GCM을 기본 암호화 모드로 사용하며, 필요에 따라 다른 알고리즘으로 변경할 수 있는 유연성을 제공합니다. ⚙️
- 대칭키 암호화는 주로 저장된 데이터(data at rest)를 암호화하는 데 적합합니다. 💾
- 비대칭키 암호화는 공개키와 개인키 쌍을 사용하며, 키 공유가 용이하여 통신 보안(TLS, JWT 서명 등)에 주로 사용됩니다. 🤝
- 비대칭키 암호화에는 RSA와 ECC(Elliptic Curve Cryptography)가 있으며, ECC는 RSA보다 성능이 우수하여 새로운 구현에 권장되지만, RSA는 더 성숙하고 널리 사용됩니다. 📈
- 비대칭키 암호화는 한 방향으로는 쉽지만 역방향으로는 어려운 '트랩도어 함수'를 기반으로 합니다. 🚪
데브허브 | DEVHUB | Unlocking the unknowns: Cryptography Essentials for Spring Developers by Laurentiu Spilca @ Spring