“이 데이터가 네 데이터냐?”

보안칼럼 040

2016-05-24-1464067939-6536383-40_00.jpg

대한민국 정부청사가 털렸다. 사건 전모를 보자면,

정부청사 침입 사건

너무나도 공무원이 되고팠던 26세 송모씨는 지난 2월 28일 정부서울청사 경비대 의무경찰들 틈에 섞여 청사 본관에 몰래 들어가 체력단련실에서 공무원 신분증을 훔쳤다. 인사혁신처 사무실에 들어가 공무원 시험 문제지를 훔치려 했지만 출입문 비밀번호를 몰라서 실패했다. 시험지를 미리 못 챙기면 시험을 망치는 딱한 버릇을 가진 송씨는 역시나 시험을 망쳤고, 3월 24일 성적을 조작하기 위해 훔쳐 둔 신분증으로 다시 청사에 들어갔다. 이번엔 누가 문 옆 벽에다 써놓은 출입문 비밀번호를 발견하고 사무실 문 따기에 성공, 컴퓨터를 켰지만 이번엔 컴퓨터 비밀번호를 몰라서 또 실패했다. 이틀 뒤 3월 26일, 미리 비밀번호 제거 프로그램을 준비해 간 송씨는 마침내 자기 성적을 조작하고 합격자 명단에 자기 이름을 올리는 데 성공했다.

아무리 청소년 장래희망 1위가 공무원인 나라라지만 이런 집요함은 좀,,

그리고, 발칵 뒤집어졌다. 이게 무슨 일인가! 다른 곳도 아닌 살벌할 정도로 삼엄해 마땅한 정부청사 본관을 풀방구리 쥐 드나들듯 막 들락날락거리다니! 청사보안 매뉴얼은 왜 만들었나! 것도 무려 7단계씩이나! 언론의 호들갑도 굉장했다. 여기서 1차로 막았어야 했고 혹시 뚫리면 저기서 2차로 막았어야 했고 그것도 또 뚫리면 거긴 마지노선이라 기필코 막았어야 했다! 연일 군사작전지도처럼 그린 지도 그림이 뉴스를 장식했다. 그래,

 철통방어의 맹점: “있어도 없다고 본다.”

당연히 막아야 한다. 그러나, 위 사건으로 이미 충분히 증명되었듯, 암만 막더라도 못 막을 수도 있고 또 못 막을 경우도 대비해야 한다. 하지만 외벽 철통방어의 지나친 강조는 곧 내부는 안전하다는 잘못된 인식으로 이어지게 마련이다. 무조건 막는다는 전제는 즉 침입자의 존재를 부정하는 것과 마찬가지라, 완벽하게 막았으니 내부엔 없는 게 당연하다 여긴다. 물리보안 철통방어 주장의 근본적 맹점이다. 내부 침입자 존재의 인정은 즉 철통방어에 대한 부정이기 때문에 인정할 수가 없는 것이다. 그러니 데이터 암호화 등 근본적 조치 없이 하나 마나 마찬가지인 컴퓨터 운영체제 비밀번호만 덜렁 걸어 놓고 아무렇게나 방치한 컴퓨터는 시중에 나도는 간단한 해킹 툴로도 그냥 막 뚫리고 그런다.

문득 오늘 본 기사 문장이 떠오른다. “계파 존재를 부정하니까 청산할 수도 없다.”

관련 기사를 쭉 훑어 종합해 보자니, 내부 공모자가 있었을 거라는 (아마도 보안 담당자의) 주장과 청사보안 시스템 자체가 허술했다는 (아마도 털린 사무실 근무자의) 주장이 내부에서 서로 대치했다는 징후가 농후하다. 이 방어막은 절대 뚫을 수 없다! 그런데도 뚫리고 나면 늘 그런 주장들이 대립하는 법이라 별 뜻은 없다만, 그 와글와글 소란 와중에 진짜 중요한 핵심을 간과하게 되는 게 진짜 문제인데,

 “만약 내부자가 데이터 털겠다고 작정했다면?”

그 중에서도 가장 치명적이고 결정적인 허점은, 가장 빈번히 사고를 치는 내부자의 존재다. 좀처럼 발각되지도 않아 실제 사고는 드러난 것보다 훨씬 더 많을 것이다. 그런데도 이후 대책이라고 내미는 것들은 모두 다 철통방어를 보다 철통답게 만들어야 한다는 주장뿐이다. 현관 게이트 통과 시 신분증과 신분 일치를 일일이 확인하라! 출입문 옆에 비밀번호 제발 좀 적지 마라! 온통 물리보안 이야기뿐이다. 그런데, 만약 청사에서 일하는 내부자가 성적을 조작하려 든다면 도대체 어쩔 작정인 걸까? 내부자는 게이트로 막든 뭐로 막든 그냥 통과하잖은가? 게다가 그 내부자가 만약 해당 데이터 담당자라면?

결국 지켜야 할 게 뭔지 모른다고 볼 수밖에 없다. 결국 지켜야 할 것? 두말할 것 없이 데이터다. 송씨의 목적 또한 청사 침입이 아니라 데이터의 조작이었잖은가. 상황은 조작 이후까지도 예상하고 대책을 마련해야 한다.

그래서, 데이터 무결성을 확인하는 장치가 필요하다.

데이터 무결성 확인 장치?

데이터 무결성(Data Integrity)이란, 말의 뜻 그대로 데이터가 무결(無缺)하다 즉 결함이나 흠이 없다, 데이터 생성 이후 위변조 없이 그대로의 상태를 유지하고 있음을 뜻한다. 무결성을 확인하기 위해서는 원본 외 따로 대조본을 저장해 두고 둘을 놓고 오류나 조작이 없는 완벽한 문서인지 비교해 보면 된다. 만약 다르다면 그 문서는 잘못되었다고 판단하고 다름의 까닭을 추적할 수 있다.

하지만 그게 그리 간단한 일은 아니다. 그러려면 문서 원본을 여기에 저장하고 대조본을 저기에 따로 저장하고 대조 위해 둘을 통신망 통해 주거니 받거니 아주 복잡해지는데, 복잡한 시스템은 무조건 지양함이 옳다. 게다가 만약 암호화가 필요한 중요문서라면 원본과 대조본 그리고 통신구간 전체를 암호화하고 각각 암복호화 키 관리 등의 조치를 모두 다 취해야 한다. 문서 보안등급에 따라서는 사본 저장 자체가 불가능할 수도 있다. 나는 단지 문서 무결성 확인만 하고 싶었을 뿐인데,, 일이 너무 커진다. 암호화 시스템이든 뭐든 무관하게 따로 정보 무결성 확인만 딱 하는 방법이 있으면 좋겠는데?

같은지 다른지 ‘확인’만을 위한 암호화

그래서 있는 게 단방향 암호화다. 단방향 암호화란, 평문을 암호화하는 것은 가능하지만 암호문을 평문으로 복호화하는 것은 불가능한 방법이다. 그게 무슨 암호화냐? 복호화도 못하는데 암호화를 왜 하냐? 싶지만, 다 쓸모가 있다. 바로, ‘확인’.

평문을 평문 상태로 여기저기 들고 다니며 옳은 값인지 확인하고 그러면 당연히 유출 등의 위험이 있다. 그리고 이것저것 다 신경 쓰자니 시스템이 엄청나게 복잡해진다. 그럴 때, 키 관리 등의 기술적 부담이 없는 단방향 암호화를 이용한다. 실제로 어떤 경우에 사용될까? 그래, 사용자 비밀번호 확인 용도로 가장 자주 쓴다. 웹사이트 회원정보 중 비밀번호는 단방향으로 암호화되어 저장된다. 암호화된 비밀번호는 다시 복호화할 수 없기 때문에 만약의 경우 유출되더라도 원래 값을 알 수 없으니 안전하고, 회원이 사이트 접속 위해서 비밀번호를 입력하면 입력한 비밀번호를 또 암호화해 저장된 비밀번호의 암호화 값과 일치하는지를 통해 본인 여부를 확인할 수 있다. 구조 간단하고 목적 및 효과 충분하다.

모름지기 전자정부라면 이러한 무결성 검증 장치는 당연히 갖춰야 하니까 이미 해당 기능이 준비되어 있지만 특수 목적에만 제한적으로 사용하게끔 만들어진 장치라서 보다 일반적인 방법론이 필요하다. 데이터 관리자뿐 아니라 일반 열람자까지 모두 다 간편하게 이용할 수 있는. 특히 요즘 세계적 대세인 공공문서 공개 시스템이 제대로 가동되려면 정말이지 꼭 필요한 장치다.

공공문서만? 아니, 그렇지 않다. 민간 영역에서 발생한 데이터 조작 사건을 살펴보자.

쇼핑몰 가격정보 조작 사건

너무나도 부자가 되고 싶었던 24세 이모씨는 지난 4월 26일 한 인터넷 쇼핑몰에 접속해 6회에 걸쳐 고가의 카메라와 렌즈 등 17개 상품 구매 버튼을 눌렀다. 물건값은 5천577만원이었지만 이씨는 이를 조작해 1만779원만 결제하고 물건을 챙겼다. 쇼핑몰에서 물건값을 결제할 때 결제대행사 서버로 전송되는 인증값을 알아내 가격정보를 임의로 조작했고, 판매자는 주문내역서와 결제내역서에 각각 ‘완료’라고 뜨는 것만 보고 속았던 것이다. 이씨는 받은 물건을 중고장터에서 되팔아 돈을 챙겼다.

이건 사건이 크다 보니 지면에까지 오른 것이고, 규모 사소해서 그냥 조용히 묻히는 쇼핑몰 데이터 조작은 흔히 일어나는 일이다. 쇼핑몰 주인이 너무 싫거나 아니면 무조건 남 괴롭히는 짓이 그냥 막 즐거운 자들이 쇼핑몰 웹사이트를 공격해 가격정보 등 웹사이트 내용을 자기 맘대로 바꿔 훼손한다. 100만원짜리를 10만원짜리로 바꾸고 싼 값에 깜짝 놀란 사람들이 막 몰려들어 주문 폭주하면, 쇼핑몰 운영자의 혼은 저멀리 안드로메다로 날아간다,,

그래서, 데이터 무결성 확인 장치는 민관공 불문 누구나 쉽게 사용 가능한 ‘서비스’ 형태로 만들어야 한다. 그러니 암호화 자체보다는 직관적이고 편리한 사용자 인터페이스가 핵심이어야. 쭉 둘러보니 아직은 그런 물건이 없는 듯하니, 글은 이만 쓰고 어서 만들어야겠다,,