개론
앞에서는 DB외에도 일반적으로 사용하는 방법을 알아보았다.
이제는 통계 DB에서의 개인정보 유출을 배워본다.
통계 DB
통계 DB에서는 개인의 정보를 다룬다.
그러나 해당 DB에서는 집계 질의문만 처리해주기 때문에 특정 개인의 정보를 알 수 없다.
평균 나이, 최소 나이, 최고 나이 등등과 같은 집계 정보만 주기에 고라니의 나이나 고라니의 몸무게와 같이 특정 데이터는 얻을 수 없다.
추론 문제
그러나 추론이 가능하다.
예를 하나 들어보자.
나이와 등급이 연결되어있는 통계 DB가 있다고 해보자.
등급은 꽤나 민감한 정보로 아무도 모르지만 현재 노근은 대학 내의 학생 중 최고령자의 이름을 알고 있다.
그리고 이 최고령자가 유일무이하단 것도 알고 있다.
이 상황에서 노근은 해당 사람의 나이를 모름에도 등급을 추론해낼 수 있다.
어떻게 이것이 가능할까?
이것을 가능하게 하는 방법은 집계 DB에 이런 질의문을 계속 보내는 것이다.
나이를 1부터 (물론 1부터 할 필요는 없다. 적당한 수부터 시작해도 된다.)
1보다 나이가 같거나 많은 사람의 수는?,
2보다 나이가 많은 사람의 수는?,
3보다 나이가 많은 사람의 수는?,
…
x보다 나이가 많은 사람의 수는? 이라는 질의문을 계속 날린다.
그러다가 DB에서 대답으로 1이 나오는 순간 노근은 쾌재를 부른다.
x보다 나이가 많은 사람은 단 한명이니까 노근이 아는 그 사람일 것이 분명하기 때문이다.
그런데 앞의 전제에 나이와 등급이 연결되어있다고 하지 않았는가?
그러면 이제 노근은 그 사람의 등급도 알 수 있게 되는 것이다.
이렇게 추론을 통해 정보를 유추할 수 있게 되다.
그렇다면 한명이 나오지 못하게 N명의 결과를 도출해내면 되는거 아니냐는 생각을 할 수 있다.
그러나 이 역시도 추론이 가능하다.
x보다 나이가 많은 사람의 수를 했을 때, N명의 나이와 등급이 나왔는데, x + 1보다 나이가 많은 사람의 수를 질의했을 때 그 결과가 다르게 나온다면 딱 한 사람만 다르게 나오게 된다.
그러면 그 사람이 우리가 찾던 그 최고령자가 된다.
동형 암호(Homomorphic Encryption)
집계 데이터를 보고 추론을 할 수 있다면 집계 데이터를 모두 암호화하면 된다.
하지만 hash만 생각해도 걱정되는 것이 암호화를 하고 나면 사칙연산이 통하지 않게 된다.
100을 4로 나누고 1을 더한 값으로 암호화 했다고 하자.
26이 나온다.
112를 4로 나누고 1을 더한 값으로 암호화 했다고 하자.
29가 나온다.
26 + 29는 55이지만
(100+112)를 암호화 한 값은 54다.
이렇게 암호화를 한 값으로 사칙연산을 하면 값이 먹히지 않게 된다.
하지만 동형 암호에서는 이게 가능하다.
예를 들어서 30과 88을 암호화 한다고 해보자.
우선 30과 88에 비교적 큰 수를 더한다.
30 + 12345 * a
88 + 12345 * b
12345는 동형 암호키가 된다.
a와 b를 각각 1과 2라고 해보자.
그러면 위의 계산 결과는 각각
12375와 24778이 된다.
이 둘을 가지고 더하기 연산을 수행해보자.
37153이 된다.
그럼 이제 이 값을 복호화 한다고 하면 위의 동형암호 키인 12345(a + b)를 빼면 된다.
37153 - 12345*3 = 118
30 + 88과 같은 값이 나온다.
12375와 24778을 보고 30과 88을 유추하는 것은 거의 불가능에 가깝기 때문에 원본 값을 알아낼 수 없다.
'CS > 데이터베이스' 카테고리의 다른 글
Transaction Management Overview (0) | 2024.04.04 |
---|---|
인터넷 응용프로그램의 보안 (0) | 2024.03.08 |
파일 구성과 인덱싱 (0) | 2024.03.01 |
디스크와 파일 (0) | 2024.03.01 |
B+ Tree (0) | 2024.03.01 |