Data Security
데이터 보안은 암호화, 접근 제어, 감사를 통해 무단 접근, 변조, 손실로부터 데이터를 보호하며 AI 데이터셋과 가중치도 포함합니다.
데이터 보안은 수집과 저장부터 처리, 공유, 삭제까지 데이터 수명 주기 전반에 걸쳐 디지털 데이터를 무단 접근, 도난, 변조, 손실로부터 보호하는 것입니다. 데이터 보안의 목표는 보통 CIA 3요소로 설명합니다. 기밀성은 승인된 사람과 시스템만 데이터를 읽을 수 있도록 하고, 무결성은 데이터의 정확성을 유지하고 변조를 방지하며, 가용성은 필요할 때 데이터를 사용할 수 있도록 합니다. 2024년 2월에 발표된 NIST 사이버보안 프레임워크 2.0은 관련 작업을 거버넌스, 식별, 보호, 탐지, 대응, 복구의 여섯 가지 기능으로 구성합니다. 머신러닝에서 보호해야 할 데이터에는 학습 데이터와 해당 레이블, 그 데이터에서 학습한 내용을 담은 모델 가중치, 추론을 위해 전송한 이미지와 프롬프트, 이러한 항목을 기록하는 로그가 포함됩니다.
핵심 통제#
데이터 보안은 여러 보호 계층을 결합해 하나의 제어 수단이 실패하더라도 모든 데이터가 노출되지 않도록 합니다.
- 암호화: 저장 데이터는 AES-256과 같은 암호화 알고리즘으로 암호화하고, 전송 데이터는 TLS를 통해 전송합니다.
- 액세스 제어: 역할, 다중 요소 인증, 공유 비밀번호 대신 수명이 짧은 자격 증명을 사용해 각 사람과 서비스에 필요한 최소 권한만 부여합니다.
- 키 및 시크릿 관리: 암호화 키는 데이터와 분리된 키 관리 서비스나 하드웨어 보안 모듈에 보관하고 일정에 따라 교체합니다. API 키는 소스 코드와 노트북에 저장하지 않습니다.
- 무결성 검사 및 백업: 체크섬과 디지털 서명을 통해 파일 변조를 감지하고, 버전이 관리되는 변경 불가능한 백업으로 랜섬웨어나 실수로 인한 삭제에서 복구할 수 있습니다.
- 감사 로깅: 모든 읽기, 쓰기, 권한 변경을 기록하므로 한 계정이 밤중에 전체 데이터셋을 다운로드하는 것과 같은 비정상 접근을 탐지하고 조사할 수 있습니다.
인증된 암호화는 기밀성과 무결성을 함께 제공합니다. 이 예제에서는 Python cryptography 패키지의 Fernet을 사용해 레이블 파일의 한 줄을 암호화한 다음, 비트 하나가 반전된 것을 탐지합니다.
import base64
from cryptography.fernet import Fernet, InvalidToken
# 프로덕션 환경에서는 키 관리 서비스에서 키를 가져오며, 데이터와 함께 저장하지 않습니다
cipher = Fernet(Fernet.generate_key())
label = b"0 0.48 0.63 0.21 0.37\n" # YOLO 주석 한 줄
token = cipher.encrypt(label) # AES-128-CBC 암호문과 HMAC-SHA256 태그
print(cipher.decrypt(token) == label)
# 변조나 디스크 손상으로 발생할 수 있는 상황을 재현하기 위해 저장된 암호문의 비트 하나를 반전합니다
raw = bytearray(base64.urlsafe_b64decode(token))
raw[30] ^= 1
try:
cipher.decrypt(base64.urlsafe_b64encode(bytes(raw)))
except InvalidToken:
print("Integrity check failed: decryption refused")첫 번째 줄에는 True이 출력됩니다. 온전한 토큰을 복호화하면 원래 레이블이 복원되기 때문입니다. 암호문의 비트 하나가 바뀌면 HMAC 태그가 더 이상 일치하지 않으므로 decrypt이 InvalidToken를 발생시키고, 변경된 데이터를 반환하지 않은 채 Integrity check failed: decryption refused을 출력합니다.
머신러닝에서의 데이터 보안#
AI 시스템에는 일반 데이터베이스에는 없는 공격 표면이 추가됩니다.
- 데이터 포이즈닝: 데이터셋, 레이블링 대기열, 스크랩한 웹 소스에 데이터를 쓸 수 있는 공격자는 학습된 모델이 오작동하도록 샘플을 삽입할 수 있습니다. 이러한 오작동은 숨겨진 트리거가 나타날 때만 발생하는 경우가 많습니다.
- 안전하지 않은 모델 파일: Python의 pickle을 사용해 저장한 체크포인트는 로드할 때 임의의 코드를 실행할 수 있습니다. PyTorch 2.6에서는
torch.load이 기본적으로weights_only=True을 사용하도록 변경되어 텐서와 단순 자료형 이외의 항목을 거부하며, safetensors 형식은 텐서만 저장합니다. - 멤버십 추론 공격: 학습된 모델에 쿼리를 보내면 특정 레코드가 해당 모델의 학습 세트에 포함되었는지 알아낼 수 있으므로, 민감한 데이터로 학습한 가중치도 데이터와 동일한 수준으로 보호해야 합니다.
- 프롬프트 인젝션: 문서나 웹페이지에 숨겨진 지시문은 LLM 애플리케이션이 컨텍스트의 데이터를 노출하거나 도구를 통해 공격자에게 전송하게 만들 수 있습니다.
- 섀도 AI: 직원이 조직의 승인 없이 액세스 제어와 로그 관리 범위를 벗어난 AI 도구에 기밀 데이터를 붙여넣습니다.
컴퓨터 비전 데이터는 사람, 가정, 차량, 환자의 이미지에 개인정보가 포함되는 경우가 많아 보안 위험이 큽니다. 헬스케어 분야에서 미국 병원이 의료 영상 분석에 사용하는 스캔 이미지는 전자 보호 건강 정보를 위한 관리적, 물리적, 기술적 보호 조치를 요구하는 HIPAA 보안 규칙의 적용을 받습니다. 카메라에서 엣지 AI로 프레임을 처리하면 원시 동영상이 네트워크에 전혀 전송되지 않습니다. 연합 학습은 각 사이트가 데이터를 보유한 상태로 공유 모델을 학습하고, 기밀 AI는 클라우드의 암호화된 하드웨어 인클레이브에서 민감한 데이터의 학습이나 추론을 실행합니다. 회사 네트워크 내부에 보관해야 하는 데이터셋의 경우 Ultralytics Platform의 온프레미스 통합을 사용하면 회사 자체 컴퓨터에서 데이터셋 수집, 미리 보기, 학습을 실행할 수 있습니다. 작업자는 데이터셋 폴더를 읽기 전용으로 마운트하고 인바운드 포트를 열지 않은 채 HTTPS를 통해 외부로 연결합니다. 이미지 픽셀은 Platform에 전달되지 않으며 레이블, 지표, 최적 체크포인트만 전달됩니다.
데이터 보안과 데이터 개인정보 보호 비교#
데이터 프라이버시는 GDPR과 같은 법률에 따라 개인정보를 사람들에게 고지한 방식대로 적법하게 수집, 사용, 공유, 보관하는지에 관한 문제입니다. 데이터 보안은 프라이버시 약속의 기반이 되는 기술적·조직적 보호 조치를 제공하며, 영업 비밀, 소스 코드, 개인정보가 포함되지 않은 모델 가중치 등 가치 있는 모든 데이터를 보호합니다. 차등 프라이버시와 같은 프라이버시 강화 기법은 공개된 모델이나 통계가 특정 개인에 대해 드러내는 정보를 제한해 두 영역을 연결합니다. 보안 실패로 발생한 침해에서 개인정보가 노출되면 프라이버시 사고가 됩니다. GDPR 제33조에 따라 개인정보처리자는 이러한 침해가 발생한 사실을 인지한 시점부터 72시간 이내에 감독 기관에 알려야 합니다. 단, 침해가 사람들의 권리와 자유를 침해할 가능성이 낮은 경우는 예외입니다.










