블로그
2016년 03월 18일 10시 22분 KST | 업데이트됨 2017년 03월 19일 14시 12분 KST

"간편하려고 암호화하는 건 아니잖아요?"

"파일과 디스크를 통째로 암호화해버리니까 정말 간편합니다!" 정말 매력적인 호소 아닌가? 간편하다는 건 무조건 좋은 일이니까. 하지만 그냥 대충 넘어가지 말고 이렇게 다시 되물어야 한다. "간편하기 위해 암호화하는 건 아니잖아요?" 그렇다. 암호화는 보안성을 높이기 위해서 하는 것이다.

파일 암호화 VS 데이터 암호화

암호화 세일즈 현장은 난처함의 전쟁터다. 암호화 제품 소개에 앞서 'IT란 도대체 무엇인가?' 강의부터 시작해야 하는 난감한 상황에도 이젠 꽤 익숙해지긴 했지만 여전히 힘든 일이고, 고대 그리스부터 시작해 오늘날에 이르는 '암호의 역사'를 들려 달라는 요청도 종종 듣는다. 그래서 이야기를 풀어 봐도 제2차세계대전 독일 암호기계 '이니그마' 이후엔 흥미가 급속히 떨어진다. 거기서부터가 진짜 중요한 내용인데! 일반적으로 사람들이 '암호'란 말에 대해 가지는 호기심과 기대감 수준은 아무래도 어릴 적 첩보영화 보면서 비밀정보요원 활동을 상상하던 소년기 시절에 머물러 있는 듯싶다.

물론 그런 '암호'와 암호화가 아주 무관한 건 아니다. 현대 암호화 또한 치환과 이동 등 고전적 암호이론에 기반해 구축된 체계니까. 하지만 학교가 아닌 실무 현장에서는 그런 교양상식은 전혀(!) 중요하지 않다. '암호화'는 고전적 암호 이론보다는 안전한 IT 시스템의 '설계' 및 '구축'을 위한 기술인데, 그런 사실에 관심을 보이는 고객은 매우 적다. 세일즈의 곤란함을 호소하기에 앞서, 정보보안의 근본 중 근본인 암호화에 대한 오해는 정말 심각한 문제 아닌가? 그러니 아래와 같은 애매한 질문도 아주 자주 듣는다.

"파일을 통째로, 아니 하드디스크를 통째로 암호화 해버리면 되잖아요?"

물론 그런 조치가 필요한 때도 있다. 세상의 어떤 존재든 쓸모가 아주 없지는 않으니. 하지만 대부분의 경우 '디스크 암호화'는 정보보안적으로 적절한 조치가 아니고, '파일 암호화'가 아니라 '데이터 암호화'가 훨씬 더 중요한 개념이다. 이해를 위해 우선 '파일 암호화'란 무엇인지부터 알아보자.

파일 암호화란?

너무나 당연한 말이지만, '파일 암호화'는 파일을 암호화하는 것이다. 그런데, '파일'은 뭐지? 매일 입에 담는 익숙한 말이지만 이리 물어 보면 왠지 모르게 생소하게 느껴진다. '파일'은 의미 있는 정보를 담는 논리적인 단위다. 그래서 우리는 컴퓨터를 사용할 때 파일을 단위 삼아 대화한다. "파일이 몇 개지?" "이 파일의 크기는 얼마야?" "그 파일은 이 폴더 안에 들어 있어." 그런 식으로 파일을 기준으로 정보를 저장하고 분류하고 관리한다. 그래서 파일이란 말에 너무나 익숙하다. 그러다 보니 '파일 암호화'란 말도 원래 익숙했던 말처럼 들린다. 말만 듣고도 그게 뭔지 전부 다 이해한 듯한 기분이 든다. 하지만 '파일 암호화'는 그리 간단한 개념이 아니다.

우리는 파일 단위로 묶고 이름을 붙여 열람과 검색을 위해 어디에 저장할지 등을 결정함으로써 정보를 관리한다. 그러면 컴퓨터 내부에서는 1)물리적 저장장치, 2)운영체제 커널, 3)어플리케이션 등 3개 영역에서 각각 다른 방식을 통해 파일을 처리한다. 따라서 우리가 흔히 말하는 '파일 암호화' 또한 그 3개 영역에서 각각 다른 방식으로 이루어진다. 이에 대한 보다 상세한 설명은 따로 책 한 권 분량 정도가 필요하기 때문에 지금은 간단히 개요만 살펴보자.

하지만 1)물리적 저장장치, 주로 하드디스크를 통째로 암호화하는 '디스크 암호화'는 현재 논점으로부터 멀리 떨어져 있기 때문에 일단 논외로 하겠다. 물론 하드웨어 암호화가 필요한 경우도 있다. 정보보안이 아주 치명적인 곳에서는 상상할 수 있는 모든 보안조치를 하나도 빠짐없이 모두 다 적용해야 하니까 그런 경우엔 하드웨어 암호화 조치까지도 필요하다. 예를 들자면, 핵발전소라든지. 하지만 그런 경우에도 추가 및 보완 조치일뿐 정보보안의 바탕은 '데이터 암호화'여야 한다.

아주 단순히 말해서, 2)운영체제 커널 영역에서 3)어플리케이션 영역으로 갈수록 관리 부담이 커지는 대신 보안성이 높아진다. 이는 여타 모든 정보보안 기술 전체에 걸쳐 고루 적용되는 일종의 원리다. 보안성을 높이면 아무래도 사용이 불편해진다. 다시 말해, 간편함을 추구하면 보안성이 낮아질 수밖에 없다. 그럼에도 간편함은 너무나 강력한 매력이라서 '파일 암호화'와 '디스크 암호화' 제품을 판매하는 사람들들은 흔히들 이리 말한다.

"파일과 디스크를 통째로 암호화해버리니까 정말 간편합니다!"

정말 매력적인 호소 아닌가? 간편하다는 건 무조건 좋은 일이니까. 하지만 그냥 대충 넘어가지 말고 이렇게 다시 되물어야 한다.

"간편하기 위해 암호화하는 건 아니잖아요?"

그렇다. 암호화는 보안성을 높이기 위해서 하는 것이다.

실제 업무현장에서의, 파일 암호화의 위험성

이렇게 단순하게 생각해 보자. 지나친 단순화 같긴 하지만 일단,

- 파일은 데이터를 담는 통이다.

- 파일에 든 각각의 데이터들이 모두 똑같은 위험성을 가지고 있진 않다.

실제로는 보다 복잡한 차이가 있지만 일단, 간단히 말해 '파일 암호화'란 데이터가 든 통을 통째로 암호화해버리는 것이고, '데이터 암호화'란 통 안에든 데이터 중에서 꼭 감춰야 할 위험한 데이터만 따로 골라 암호화하는 것이다 두 방식은 각각의 장단점이 있지만, 위 "관리 부담이 커지는 대신 보안성이 높아진다"는 원리는 그대로 적용된다. 파일 암호화는 관리가 간편하다. 하지만 보안성은 낮다. 왜?

어떤 회사에 고객 정보가 저장된 데이터베이스 파일이 있다고 하자. '파일 암호화' 방식은 그 데이터베이스 파일을 통째로 암호화한다. 다시 말해, 파일을 사용하기 위해서는 암호화된 파일 전체를 복호화해야 하고 작업이 끝나면 다시 파일 전체를 암호화해 저장하는 것이다. 그런 경우의 위험은 아래와 같다.

1. 사용자 실수 또는 고의로 암호화 하지 않는 경우 : 사용자의 실수로 암호화하지 않는 상황이 빈번히 발생한다. 암호화해야 한다는 걸 잊거나 그냥 암호화 절차가 번거롭고 귀찮아서 그냥 평문 상태로 저장해버리는 경우가 많다. 보안사고의 대부분은 사용자 실수 때문이라는 사실을 잊지 말자. 사용자 실수를 미연에 방지하고 감시하는 장치가 필요하다.

2. 파일의 전체 내용이 평문 상태로 메모리에 존재 : 파일 통째로 암호화되어 있다면 파일에 든 정보 내용을 읽을 때 불가피하게 파일 전체를 복호화할 수밖에 없다. 그러면 암호화되지 않은 전체 평문이 메모리에 존재하게 되어서, 메모리 덤프 등의 수법을 통한 데이터 유출 위험이 있다. 평문 노출은 무조건 최소한도로 줄이는 게 좋다.

3. 키 관리 및 접근제어, 보안감사 등 추가 도구 필요 : 암호화란 암호화 단독으로는 쓸데없는 기술이다. 암호화 및 복호화 작업을 위한 키 관리 및 접근제어, 보안감사 등 다른 보안도구들이 함께 동작해야 한다. 하지만 이것저것 다 붙이고 나면 '파일 암호화'의 가장 큰 장점인 단순성으로부터 멀어진다. 간편함을 강조하지만 결국 똑같이 복잡해지는 것이다. 게다가 그렇게 성질이 서로 다른 도구들을 하나의 시스템 안에 통합하는 기술적 위험도 있다. 사실 암호화란 그 자체로는 어려운 기술이 아니다. 앞서 말했듯 안전한 IT 시스템의 '설계' 및 '구축'을 위한 기술이라서 어려운 것이다.

이 중 특히 눈여겨볼 점은 "2. 파일 전체 내용이 평문 상태로 메모리에 존재"하기 때문에 발생하는 위험이다. 하지만 이는 어떠한 암호화 방식에도 그대로 해당되는 위험이다. 정보를 읽기 위해서는 메모리에 평문이 존재해야만 하니까. 하지만 얼마나 많은 정보를 얼마나 오랫동안 노출할 것인지 차이가 매우 크다. 실제 업무현장에서의 상황을 그려 보자.

파일 전체를 하루 종일 평문 상태로 노출하는 암호화?

고객 정보가 저장된 데이터베이스 파일 전체를 통째로 '파일 암호화' 했다 치자. 그러면 파일 속에 든 어떤 정보든 열람하려면 파일 전체를 복호화해야 한다. 찾는 데이터가 주민등록번호 등 중요한 개인정보가 아닌 경우에도 전체 내용을 모두 다 노출하는 것이다. 그러면 검색, 열람, 처리 등의 작업을 마치고 다시 암호화할 때까지 모든 정보가 메모리 상에 평문 상태로 방치된다. 고객관리 업무가 많은 회사라면 직원이 출근하자마자 암호화 데이터를 복호화해서 하루 종일 전체 데이터를 평문 상태로 노출했다가 퇴근할 때 다시 암호화한다고 해도 결코 지나친 과장이 아니다.

반대로, 중요한 데이터만 따로 암호화한 경우에는 어떨까? '데이터 암호화'는 중요 데이터를 따로 암호화해서 해당 정보가 필요할 때에만 복호화해 처리하고 다시 암호화한다. 노출하더라도 특별히 위험하지 않은 일반 정보만 열어서 작업하다가 특정 암호화 데이터가 꼭 필요한 순간에 일정한 절차를 거쳐 복호화해서 일을 마치고 다시 암호화한다. 위 '파일 암호화'에 비하면 위험성 노출 시간부터 현저히 짧다. 그리고 암호화 외 따로 필요한 키 관리 및 접근제어, 보안감사 등의 도구들도 모두 한 제품으로 통합되어 제공되므로 이종기술 결합에 따른 불안정성도 매우 적다.

하지만 개인이 쓰는 컴퓨터에서, 그리고 기업에서도 어떤 특수한 필요 때문에 정보를 파일 단위로 구별해 관리하는 경우가 있다. 그럴 때는 '파일 암호화'도 선택할 만한 방법일 수 있다. 하지만 '파일 암호화'는 '데이터 암호화'에 포함되는 일부분이라고 봐야 한다. 다시 말해, '파일 암호화'는 일부 데이터를 따로 암호화할 방법이 없지만, '데이터 암호화'는 파일 내용의 부분 또는 전체를 선택하여 암호화함으로써 파일 암호화와 동일한 효과를 얻을 수 있다.

"파일과 폴더를 통째로 암호화해버리니까 정말 간편합니다!"

그렇다. 간편하다. 그러나,

"간편하려고 암호화하는 건 아니잖아요?"

PRESENTED BY 오비맥주