본문으로 건너뛰기

데이터베이스 암호화

정보처리기사 목차물리 데이터베이스 설계레슨 117 / 233

목차

데이터베이스 암호화는 저장하는 값을 열쇠 없이는 읽을 수 없는 암호문으로 바꿔 두는 일입니다. 암호화하는 모듈을 어디에 두는지에 따라 방식이 갈립니다.

DCL: GRANT·REVOKE의 권한은 데이터베이스에 접속해 질의하는 길만 막습니다. 데이터 파일이나 백업 파일을 그대로 들고 가면 값은 글자 그대로 읽힙니다. 그래서 민감한 값은 저장할 때 암호문으로 바꿔 둡니다. 같은 열쇠로 잠그고 푸는 방식을 주로 쓰고, 열쇠가 없으면 암호문은 뜻 없는 글자입니다. 남는 것은 그 잠그는 일을 누가 어디에서 하느냐입니다. 아래 그림은 같은 값이 애플리케이션에서 데이터 파일까지 가는 길에 자물쇠를 한 자리씩 옮겨 두며, 어디서부터 암호문이 되는지 보입니다.

6단계 중 1단계. 암호화하지 않으면 값이 데이터 파일에 글자 그대로 남습니다. 권한으로 막아도 파일이나 백업을 들고 가면 읽힙니다.

1암호화가 일어나는 자리 — 네 가지 방식

그림의 첫 장면은 암호화하지 않은 경우입니다. 값이 데이터 파일에 글자 그대로 남습니다.

이어서 자물쇠가 애플리케이션 안에 붙습니다. API 방식은 애플리케이션이 값을 암호화해 암호문을 데이터베이스로 보냅니다. DBMS는 받은 암호문을 그대로 저장하므로 어떤 DBMS에서도 쓸 수 있습니다. 대신 프로그램에 암호화 호출을 넣어야 합니다.

다음 장면에서 자물쇠는 DB 서버 안으로 옮겨 갑니다. 플러그인 방식은 데이터베이스 서버에 붙인 모듈이 암호화합니다. 프로그램은 고치지 않는 대신 암호화 부하가 DB 서버에 걸립니다. 마지막으로 자물쇠는 DB 서버가 파일에 쓰는 자리로 갑니다. TDE 방식은 DBMS가 저장하는 순간 암호화하고 읽을 때 되돌립니다.

가르는 기준API 방식플러그인 방식TDE 방식
암호화 모듈이 있는 곳애플리케이션DB 서버에 붙인 모듈DBMS 안
프로그램을 고치나고친다고치지 않는다고치지 않는다
부하가 걸리는 곳애플리케이션 서버DB 서버DB 서버
DBMS를 가리나가리지 않는다모듈을 받는 DBMS만그 기능이 있는 DBMS만

하이브리드 방식은 이 방식들을 한 시스템에서 나눠 쓰는 것입니다. 자주 조회하는 열은 플러그인으로 두고 특별히 민감한 열만 애플리케이션에서 암호화하는 식입니다. 그림의 마지막 장면에 자물쇠가 둘 있는 까닭입니다.

방식을 넷으로 가르는 것은 암호화 모듈이 있는 자리로 나눈 꼴입니다. 개인정보 보호 쪽 자료는 저장할 때의 암호화를 여섯으로 적어, 위 셋에 DBMS 암호화 기능 호출(DBMS가 주는 암호화 함수를 프로그램이 불러 쓴다)·운영체제 암호화(운영체제가 파일이나 디스크째로 암호화한다)·그 밖의 암호화 기술을 더합니다. 그 여섯에는 하이브리드 방식이 없고, 하이브리드의 조합도 자료에 따라 갈려 플러그인과 TDE를 묶은 것으로 적기도 합니다.

2TDE와 키 저장소

TDE에서 값을 암호화하는 열쇠는 데이터베이스 밖 키 저장소에 둡니다. 키 저장소가 닫혀 있으면 암호화한 열을 만들 수도, 읽을 수도 없습니다. 데이터 파일만 들고 가도 열쇠가 없어 읽을 수 없는 것이 TDE가 노리는 것입니다. 그래서 키를 잃으면 암호문만 남아 데이터를 되살릴 수 없고, 키를 데이터 파일과 같은 곳에 두면 함께 들려 나갑니다.

3암호화가 데려오는 제약

  • 암호화·복호화에 시간이 들어 넣기와 읽기가 느려집니다. 모든 열을 암호화하지 않고 민감한 열만 고릅니다.
  • 암호화한 열은 값의 순서가 뒤섞여 범위 검색이나 정렬이 그대로 되지 않습니다. 열 단위로 암호화할 때는 그 열의 인덱스 범위 스캔도 쓰지 못합니다.
  • 암호문은 원래 값보다 길어 열 길이를 늘려야 할 수 있습니다.

예제

결과는 Oracle에서 돌린 것입니다. Oracle은 TDE로 열을 암호화할 때 열 정의에 ENCRYPT를 붙입니다. 아래 문은 키 저장소를 열지 않은 데이터베이스에서 ORA-28365로 막힙니다.

ALTER TABLE 학생
  MODIFY (이름 ENCRYPT);

Wallet is not open, 곧 키 저장소가 열려 있지 않다는 오류입니다. 암호화할 열을 고르는 것과 열쇠를 맡기는 것이 따로라는 뜻입니다.

암호화한 열이 무엇인지는 데이터 사전으로 확인합니다. 위에서 막혔으므로 암호화한 열은 없습니다.

SELECT COUNT(*) AS N
FROM USER_ENCRYPTED_COLUMNS;
N
0

키 저장소를 열고 같은 ALTER TABLE을 다시 돌리면 이 값이 1이 되고, 그 뒤로는 질의를 고치지 않아도 이름 열이 암호문으로 저장됩니다.

시험 포인트

  • 필기: 가르는 기준은 암호화 모듈이 어디에 있는지입니다. API 방식은 애플리케이션이, 플러그인 방식은 DB 서버에 붙인 모듈이, TDE 방식은 DBMS가 저장하는 순간 암호화하며, 하이브리드 방식은 이 방식들을 나눠 씁니다. API 방식만 프로그램을 고쳐야 합니다. TDE의 열쇠는 데이터베이스 밖 키 저장소에 두어, 키 저장소가 닫히면 읽지 못합니다.
  • 실기: API 방식(응용 프로그램 자체 암호화)·플러그인 방식(Plug-in)·TDE 방식(Transparent Data Encryption)·하이브리드 방식(Hybrid)으로 씁니다.

확인 문제

1. 회원 표의 주민번호 열을 암호화하려고 합니다. 회원 정보를 다루는 프로그램은 외부에서 사 온 패키지라 소스를 고칠 수 없고, 쓰고 있는 데이터베이스 제품에는 암호화 기능이 없어 모듈을 따로 붙여야 합니다. 알맞은 방식을 고르세요.

  • ① API 방식 — 프로그램에서 암호화하면 DBMS를 가리지 않는다
  • ② 플러그인 방식 — DB 서버에 모듈을 붙이면 프로그램을 고치지 않는다
  • ③ API 방식 — 암호화 부하를 애플리케이션 서버로 옮길 수 있다
  • ④ 하이브리드 방식 — 두 방식을 함께 쓰면 프로그램을 고치지 않아도 된다
정답

②입니다. 소스를 고칠 수 없다는 것이 조건입니다. 암호화 모듈을 DB 서버 쪽에 두면 프로그램은 그대로 두고 저장되는 값만 암호문으로 바뀝니다. 제품에 암호화 기능이 있었다면 TDE 방식도 프로그램을 고치지 않는 쪽이지만, 그 기능이 없으면 모듈을 붙이는 플러그인 방식입니다.

  • ① DBMS를 가리지 않는 것은 맞지만, API 방식은 암호화 호출을 프로그램에 넣어야 합니다. 사 온 패키지는 고칠 수 없습니다.
  • ③ 부하를 옮기는 것만 보고 골랐습니다. API 방식은 어느 쪽이든 프로그램을 고쳐야 해서 이 조건에서 쓸 수 없습니다.
  • ④ 하이브리드는 방식 둘을 나눠 쓰는 것이라, API 방식을 맡은 열에서는 여전히 프로그램을 고쳐야 합니다.

2. 다음 (가)~(라)에 맞는 이름을 한글 이름과 영문으로 함께 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.

  • (가) 암호화 모듈이 애플리케이션 쪽에 있어, 데이터베이스는 이미 암호문이 된 값을 받아 저장합니다. 어떤 DBMS에도 쓸 수 있는 대신 프로그램에 암호화 호출을 넣어야 합니다.
  • (나) DBMS가 데이터를 파일에 쓰는 순간 암호화하고 읽을 때 되돌립니다. 질의와 프로그램을 고치지 않아도 되고, 열쇠는 데이터베이스 밖 저장소에 둡니다.
  • (다) 데이터베이스 서버에 암호화 모듈을 따로 붙여 서버에서 암호화합니다. 프로그램은 그대로 두는 대신 암호화 부하가 DB 서버에 걸립니다.
  • (라) 열이나 업무에 따라 (가)와 (다)를 한 시스템에서 나눠 씁니다.
정답

받는 답: (가) API 방식(응용 프로그램 자체 암호화) · (나) TDE 방식(Transparent Data Encryption) · (다) 플러그인 방식(Plug-in) · (라) 하이브리드 방식(Hybrid)

(가)의 실마리는 '데이터베이스가 암호문을 받는다', (나)는 '쓰는 순간 암호화하고 열쇠는 밖에 둔다', (다)는 '서버에 모듈을 붙인다', (라)는 '나눠 쓴다'입니다.

  • 틀리는 꼴 플러그인 방식 — (가)에: 암호화가 DB 서버에서 일어나, 데이터베이스는 평문을 받습니다. (가)는 암호문을 받습니다.
  • 틀리는 꼴 플러그인 방식 — (나)에: DBMS에 모듈을 따로 붙여야 합니다. (나)는 DBMS 자체 기능으로 저장할 때 암호화합니다.
  • 틀리는 꼴 API 방식 — (다)에: 암호화 호출을 프로그램에 넣습니다. (다)는 프로그램을 고치지 않습니다.

3. TDE로 운영하던 데이터베이스를 다른 서버로 옮겨 데이터 파일만 복사해 올렸습니다. 데이터베이스는 올라왔는데 암호화한 열을 읽으면 오류가 납니다. 가장 알맞은 설명을 고르세요.

  • ① 데이터 파일 안에 열쇠가 함께 들어 있어 복사하다 깨졌다
  • ② 열쇠가 데이터베이스 밖 키 저장소에 있어, 그 저장소를 옮겨 열지 않았다
  • ③ TDE는 프로그램을 고쳐야 하는 방식이라 새 서버의 프로그램을 고쳐야 한다
  • ④ 암호화한 열은 다른 서버에서 읽을 수 없게 되어 있다
정답

②입니다. TDE의 마스터 키는 데이터베이스 밖 키 저장소에 있습니다. 데이터 파일만 옮기면 암호문만 옮긴 셈이라, 키 저장소를 함께 옮겨 열어야 읽힙니다.

  • ① 열쇠가 데이터 파일 안에 있다고 봤습니다. 파일 안에 열쇠까지 있다면 파일을 들고 가는 것만으로 읽혀, 암호화한 뜻이 없어집니다.
  • ③ API 방식의 특징을 TDE에 붙였습니다. TDE는 프로그램과 질의를 고치지 않습니다.
  • ④ 서버가 달라서 못 읽는다고 봤습니다. 키 저장소를 함께 옮겨 열면 읽힙니다. 막는 것은 서버가 아니라 열쇠입니다.

더 보기: 대칭 키 암호와 알고리즘 이름, 데이터베이스 접근 정책과 접근통제 모델은 4과목에서 자세히 배웁니다.

끝까지 내려오면 저절로 표시됩니다. 이 기기에만 저장합니다.

정보처리기사 목차로