한국정보기술진흥원
한국정보기술신문
thumbnail

정보기술 · 정보보안 ·

DuckDB 1.4, 산업 표준 암호화 기능 탑재...데이터 보안 강화

발행일
읽는 시간2분 50초

오픈소스 분석형 데이터베이스 DuckDB가 버전 1.4에서 AES 암호화 기능을 도입하며 데이터 보안을 대폭 강화했다.

[한국정보기술신문] 오픈소스 분석형 데이터베이스 관리 시스템인 DuckDB가 버전 1.4에서 데이터 암호화 기능을 정식 지원하기 시작했다. 이번 업데이트로 DuckDB는 저장된 데이터를 산업 표준 AES 암호화 방식으로 보호할 수 있게 됐으며, 성능 저하는 거의 없는 것으로 나타났다.

DuckDB 개발팀은 19일 공식 블로그를 통해 버전 1.4의 암호화 기능에 대한 상세한 구현 내용을 공개했다. 개발팀은 SOC 2와 같은 규정 준수 프레임워크에서 저장 매체의 데이터 암호화를 강력히 권장하고 있으며, 클라우드 환경에서 데이터 유출 사례가 지속적으로 발생하고 있다는 점을 기능 도입 배경으로 설명했다.

AES 암호화 표준 적용

DuckDB 1.4는 AES-GCM-256과 AES-CTR-256 두 가지 암호화 방식을 지원한다. AES-GCM은 데이터를 암호화하면서 동시에 데이터 무결성을 검증하는 태그를 생성하는 방식으로, 데이터 변조를 방지할 수 있어 권장되는 방식이다. AES-CTR은 GCM보다 빠르지만 인증 기능이 없어 보안 수준이 상대적으로 낮다.

암호화 키는 32바이트 크기를 사용하며, 사용자가 제공한 키는 키 유도 함수를 통해 더욱 안전한 형태로 변환된다. 데이터베이스 식별자로 사용되는 16바이트 임의 생성 값이 솔트로 활용되어, 동일한 입력 키라도 데이터베이스마다 다른 암호화 키가 생성된다.

데이터베이스 구조 전반에 암호화 적용

DuckDB의 암호화는 메인 데이터베이스 헤더를 제외한 모든 블록에 적용된다. 메인 헤더는 민감한 정보를 포함하지 않기 때문에 평문으로 유지되며, 대신 데이터베이스가 암호화되었음을 나타내는 플래그가 설정된다.

특히 주목할 점은 임시 파일과 선행 기록 로그까지 자동으로 암호화된다는 것이다. 임시 파일은 정렬이나 대용량 조인 작업 시 생성되는 중간 데이터를 저장하는데, 이러한 파일이 시스템 충돌 시 디스크에 남을 경우 보안 위험이 될 수 있다. DuckDB는 임시 파일용 키를 내부적으로 자동 생성하며, 데이터베이스가 비정상 종료되면 임시 키도 함께 손실되어 남겨진 임시 파일은 복호화가 불가능하게 된다.

선행 기록 로그는 데이터베이스의 충돌 복구 메커니즘으로 사용되는 파일로, 모든 변경 사항이 기록된다. DuckDB는 이 로그 항목 하나하나에 대해 개별적으로 암호화를 적용하여 보안을 강화했다.

이중 구현으로 호환성과 성능 확보

DuckDB 개발팀은 외부 라이브러리 의존성을 최소화하면서도 높은 성능을 달성하기 위해 암호화 기능을 두 가지 방식으로 구현했다. 기본적으로는 경량 라이브러리인 MbedTLS를 사용하지만, httpfs 확장을 로드하면 자동으로 OpenSSL로 전환된다.

MbedTLS는 DuckDB에 이미 포함되어 있어 별도 설치가 필요 없지만, 하드웨어 가속이 비활성화되어 있고 타이밍 공격에 대한 방어가 상대적으로 약하다. 반면 OpenSSL은 하드웨어 가속 코드를 포함하고 있어 훨씬 빠른 성능을 제공한다.

개발팀은 MbedTLS의 난수 생성기에서 보안 문제가 발견됨에 따라, 버전 1.4.1부터는 MbedTLS 모드에서의 데이터베이스 쓰기를 비활성화했다. 버전 1.4.2부터는 쓰기 작업 시도 시 httpfs 확장을 자동으로 설치하고 로드하여 OpenSSL을 사용하도록 개선했다.

성능 영향 미미

개발팀이 실시한 벤치마크 테스트에서 암호화로 인한 성능 저하는 거의 관찰되지 않았다. TPC-H 벤치마크의 라인아이템 테이블에 대한 요약 작업에서, 암호화되지 않은 데이터베이스는 약 5.4초가 걸렸고, OpenSSL을 사용한 암호화 데이터베이스도 동일하게 5.4초가 소요됐다. MbedTLS를 사용한 경우에만 약 6.2초로 약간 증가했다.

더 복잡한 워크로드를 시뮬레이션한 TPC-H 파워 테스트에서도 암호화가 성능에 미치는 영향은 제한적이었다. 스케일 팩터 100에서 암호화 미적용 시 파워 지표는 624,296이었고, 암호화 적용 시에도 거의 동일한 수준을 유지했다. 메모리를 8GB로 제한하여 임시 파일 암호화를 강제한 상황에서도 파워 지표는 591,841에서 571,985로 소폭 감소하는데 그쳤다.

새로운 배포 모델 가능

암호화 기능은 DuckDB의 새로운 활용 방안을 제시한다. 예를 들어 암호화된 DuckDB 데이터베이스 파일을 콘텐츠 전송 네트워크에 배치하고, 복호화 키를 가진 DuckDB 인스턴스들이 읽기 전용으로 접근하도록 구성할 수 있다. 이는 암호화된 파켓 파일과 유사하지만 다중 테이블 저장 등 더 많은 기능을 제공한다.

또한 클라우드 환경에서 DuckDB를 사용할 때 보안 위협 모델링이 단순해진다. 과거에는 저장소 접근만으로도 데이터 유출이 가능했지만, 이제는 임시 파일과 로그까지 암호화되어 저장소 보안에 대한 우려를 줄일 수 있다.

사용자는 기존 데이터베이스를 암호화하거나, 새로운 암호화 데이터베이스를 생성하거나, 데이터베이스를 재암호화할 수 있다. 데이터베이스 암호화 여부와 사용된 암호화 방식은 duckdb_databases 함수로 조회 가능하다.

개발팀은 암호화 기능의 안정적인 사용을 위해 최신 안정 버전인 1.4.2 사용을 권장하고 있다.

한국정보기술신문 정보보안분과 이승기 기자 news@kitpa.org