더북(TheBook)

따라서 암호화한 후 인덱스를 생성할 때는 인덱스를 생성하는 함수에 복호화된 암호문(결과적으로 원문)인 Dec(A′) 값을 그대로 넣지 않고, 그 값을 한 번 더 가공하여 넣습니다. 여기서 Dec(A′) 값을 가공할 때는 OPE나 부분 암호화를 많이 사용합니다. 즉, 암호화된 데이터의 인덱스를 생성할 때는 OPE 값인 OPEnc(Dec(A′))를 활용하거나 부분 암호화 값인 PartEnc(A)를 활용하는 것이지요. 이렇게 하면 덤프를 실행해도 순서를 유지하면서 암호화된 값이나 부분적으로 암호화된 값을 출력하므로 원문이 그대로 노출되는 일을 막을 수 있습니다. 두 방법 모두 검색 효율은 조금 떨어지지만, 순서를 유지하므로 빠른 검색 속도를 유지할 수 있습니다.

이처럼 암호화된 데이터베이스에 인덱스를 구축할 때는 ‘암호화된 데이터’와 ‘OPE 또는 부분 암호화된 인덱스 데이터’를 연결하는 과정이 필요합니다. 특정 제조사의 DBMS는 커스터마이징이 가능한 인덱스를 제공하는데8 이를 활용하면 앞의 과정을 인덱스 내부에서 구현할 수 있습니다. 하지만 인덱스를 수정할 수 없는 DBMS의 경우 암호화된 데이터와 인덱스용으로 가공한 데이터의 컬럼을 새로 만들어서 쿼리로 연결하여 사용해야 합니다.

 

| 암호화된 데이터베이스에서 OPE를 사용하는 인덱스 구축 과정 |

 

 


8 예를 들어 오라클의 Oracle DBMS는 ‘도메인 인덱스’를 제공합니다.

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