피드로 돌아가기
Dev.toSecurity
원문 읽기
Encoding, Hashing, Encryption의 목적 기반 설계 구분 및 적용 원칙
If you can decode it, it was never encryption: untangling encoding, hashing, and encryption for Security+
AI 요약
Context
데이터 변환 기술인 Encoding, Hashing, Encryption을 혼용하여 발생하는 보안 설계 결함 분석. 특히 비밀번호 저장 시 Encryption을 적용함으로써 발생하는 단일 지점 실패(Single Point of Failure) 위험성을 식별함.
Technical Solution
- 데이터 호환성 확보를 위한 Key-less 기반의 Encoding 체계(Base64, URL encoding) 적용
- 데이터 무결성 검증을 위한 One-way Hashing 알고리즘(SHA-256) 및 Rainbow Table 방어용 Salt 추가 설계
- 기밀성 보장을 위한 Key 기반의 Encryption 아키텍처 구축
- 대량 데이터 처리 효율을 위한 Symmetric Encryption(AES)과 키 교환 문제를 해결하는 Asymmetric Encryption(RSA, ECC)의 하이브리드 구조 채택
- TLS 프로토콜 내 Asymmetric 방식으로 Session Key를 교환한 후 Symmetric 방식으로 전환하는 최적화 로직 구현
- 패스워드 검증 시 복호화가 불필요한 특성을 고려하여 Encryption 대신 Salted Hashing 적용
실천 포인트
1. 데이터 변환 목적이 호환성인지 기밀성인지 확인했는가?
2. 패스워드 저장 시 복호화 가능한 Encryption 대신 Salted Hashing을 적용했는가?
3. 대량 데이터 전송 시 성능 최적화를 위해 Symmetric/Asymmetric 하이브리드 구조를 검토했는가?
4. Hashing 적용 시 동일 입력값에 대한 동일 출력값을 방지하는 Salt 전략이 포함되었는가?