알고 있으면 너무 좋은 프론트엔드 웹 기술 : Web Crypto API
- Web Crypto API는 데이터를 암호화하고 복호화하여 안전한 통신과 사용자 인증을 가능하게 하는 웹 표준 기술입니다. 🔒
- 별도의 라이브러리 설치 없이 바로 사용할 수 있으며, 실무에서 널리 사용되는 다양한 암호화 알고리즘을 제공하여 신뢰성을 높입니다. 🌐
- AES-GCM은 현대 암호화에서 가장 널리 권장되는 대칭 암호화 알고리즘으로, 키 생성 시 128, 192, 256비트 중 선택 가능하며 비트가 클수록 보안이 강화됩니다. 🔑
- 암호화 키는 절대 외부에 노출되어서는 안 되며, 키의 용도(암호화/복호화)를 명확히 지정해야 합니다. 🤫
- 데이터 암호화 전에는
TextEncoder를 사용하여 문자열 데이터를 바이트 배열(Uint8Array)로 변환해야 합니다. 📝
- AES-GCM 알고리즘은 암호화 시 매번 새롭게 생성해야 하는 초기화 벡터(IV)를 필요로 하며, IV는 외부에 노출되어도 문제가 없지만 복호화 시 반드시 필요합니다. 🔢
- IV는 GCM 운영 모드에서 12바이트 길이를 권장하며,
window.crypto.getRandomValues를 통해 생성합니다. 📏
- 암호화된 데이터(
ArrayBuffer)와 IV는 데이터베이스 저장 또는 서버 전송을 위해 일반적으로 Base64 형식으로 변환됩니다. 💾
- 복호화 시에는 암호화에 사용했던 동일한 키와 IV가 필요하며, Base64 형식의 데이터를 다시
ArrayBuffer로 변환하는 과정이 포함될 수 있습니다. 🔓
TextDecoder를 사용하여 복호화된 바이트 배열 데이터를 원래의 문자열로 되돌릴 수 있습니다. 💬
데브허브 | DEVHUB | 알고 있으면 너무 좋은 프론트엔드 웹 기술 : Web Crypto API