프라이버시 바이 디자인(Privacy by Design, PbD)은 시스템 설계 단계부터 개인정보 보호를 핵심 요소로 통합하는 방법론이다. 캐나다 Ann Cavoukian이 1990년대 제안했으며, GDPR Article 25에서 "기본 설계에 의한 데이터 보호"로 법적 의무화됐다.
7대 원칙
1. 사후 대응이 아닌 사전 예방 (Proactive, not Reactive)
→ 취약점 발생 후 수정이 아닌 설계 시 예방
2. 기본값이 프라이버시 (Privacy as the Default)
→ 사용자가 아무 설정도 안 해도 최대한 보호
3. 설계에 내재화 (Privacy Embedded into Design)
→ 추가 기능이 아닌 시스템의 핵심 기능
4. 전기능적 (Full Functionality, Positive-Sum)
→ 프라이버시 vs 보안이 아닌 프라이버시 + 보안
5. 종단간 보안 (End-to-End Security)
→ 수집부터 파기까지 전 생명주기 보호
6. 가시성과 투명성 (Visibility and Transparency)
→ 정책, 처리 목적을 명확히 공개
7. 사용자 중심 (Respect for User Privacy)
→ 강력한 기본값, 사용자 제어권 보장
기술적 구현 패턴
데이터 최소화
python
# 나쁜 예: 모든 정보 수집
user = {
"name": name, "email": email, "phone": phone,
"address": address, "birthdate": birthdate,
"ip": request.remote_addr, "user_agent": request.headers['User-Agent']
}
# 좋은 예: 서비스에 필요한 최소한만 수집
user = {"email": email} # 회원가입에 이메일만 필요
가명화/익명화
python
import hashlib
def pseudonymize(user_id: str, salt: str) -> str:
"""직접 식별 대신 해시된 식별자 사용"""
return hashlib.sha256(f"{user_id}{salt}".encode()).hexdigest()[:16]
def anonymize_ip(ip: str) -> str:
"""IP의 마지막 옥텟 제거 (로그 분석용)"""
parts = ip.split('.')
return '.'.join(parts[:3]) + '.0'
목적 제한
typescript
// 수집 목적을 데이터와 함께 저장
interface DataRecord {
data: string;
purpose: 'service' | 'analytics' | 'marketing';
collectedAt: Date;
expiresAt: Date; // 보유 기간 제한
}
GDPR과의 관계
GDPR Article 25는 PbD를 법적 의무로 규정한다:
- •개인정보 보호 원칙을 기술적/조직적 조치로 구현
- •기본 설정이 최소한의 개인정보만 처리하도록 설계
관련 개념