더북(TheBook)

지금까지 데이터베이스의 구성과 여러 가지 암호화 방식을 배웠습니다. 이제 실제로 데이터베이스를 암호화할 때 주의해야 할 사항을 고려할 차례입니다. IT 시스템에서 데이터베이스는 ‘정보를 꺼내 쓰는’ 저장소입니다. 아무도 알아볼 수 없게 암호화하여 꽁꽁 숨겨 놓으면 안 되겠지요. 권한이 있는 사용자라면 자유롭게 데이터에 접근해서 삽입·삭제할 수 있어야 합니다. 또 IT 시스템 요구에 맞게 빠른 속도로 데이터를 제공할 수 있어야 합니다. 데이터베이스 암호화에서 암호화 이후 데이터의 검색 성능도 매우 중요한 이슈입니다.

우선 데이터베이스는 ‘부분적으로 개방된 환경’이라는 것을 인식해야 합니다. 읽기 권한이 있는 사용자라면 암호문(암호화된 데이터)에 자유롭게 접근할 수 있습니다. 사용자가 나쁜 마음을 먹으면 바로 COA 유형이 발생할 수 있습니다. 암호문을 바탕으로 원본 데이터를 유추할 수 있는 데이터라면 보안성이 상당히 위협받는 것이지요. 사용자가 데이터를 삽입하거나 수정할 수 있는 권한까지 있다면 가장 위협적인 CPA 유형이 발생합니다. 자신이 마음대로 선택한 원본 데이터를 데이터베이스에 삽입하여 그 데이터를 어떤 암호문으로 바꿔서 저장하는지 확인할 수 있으니까요. 데이터를 제한 없이 삽입할 수 있는 사용자라면 CPA로 암호화 키를 더 쉽게 해독할 수 있겠지요.

접근 권한이 있는 사람이 데이터에 접근하는 것은 매우 일반적인 유형입니다. IT 시스템에서 사용하는 데이터베이스에 대부분 해당하는 이야기이지요. 따라서 데이터베이스 암호화를 할 때는 가장 위협적인 CPA 유형을 고려하지 않을 수 없습니다. 안전한 보안과 안전한 암호화를 수행하려면 앞서 키 관리가 중요하다고 했지만, 이와 별개로 ‘공식적으로 데이터에 접근할 수 있는 사람에게 필요한 보안책’도 반드시 있어야 합니다. 첫 번째는 암호화된 데이터에 접근할 수 있는 것과 복호화할 수 있는 것, 즉 복호화된 데이터에 접근할 수 있는 것을 분리하는 것입니다. 이는 DBMS의 최상위 권한을 갖는 DBA(데이터베이스 관리자)와 암호화 대상이 되는 중요 데이터의 소유권을 분리한다는 의미로, 직무 분리(Separation of Duty)라고 부릅니다. 대규모 IT 시스템이 있는 조직에서는 권한과 책임을 명확하게 하고자 직무 분리를 원합니다. 그리고 데이터베이스 암호화를 적용하여 복호화 권한 관리를 이용해 이를 구현합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.