외우기 편하면서도 노출의 위험이 없는 비밀번호를 만드는 방법은 있는가
보통 직장인이라면 아마도 10여개 정도의 비밀번호를 관리하고 있을 것이다. 일단 이전저런 통장 서너개에 대한 각각의 비밀번호가 필요할 것이다. 또한 인터넷상에서 회원제로 운영되는 각종 사이트마다 따로 비밀번호를 만들어야 한다, 그리고 인터넷상으로 은행 관련 업무나 증권 매매, 온라인 쇼핑을 하려면 각각의 비밀번호를 잘 관리해야 한다. 비밀번호의 핵심은 본인에게는 기억되기 쉽고 남들에게는 기억되기 어렵도록 만드는 데 있다. 그런데 그것은 상호 모순적이며 이론적으로도 불가능하다. 예를 들어 남들이 추측하기 어려운 아주 절묘한 비밀번호 제조법이 있다고 한다면, 이미 그 순간 그 방식으로 만들어진 비밀번호는 ‘유명’한 비밀번호가 되어 그 가치를 상실하게 된다.
컴퓨터에 저장되는 값은 입력한 것과 달라
컴퓨터에 어떤 비밀번호를 입력하면 그것이 그대로 컴퓨터에 들어가는 것은 아니다. 그것은 ‘해싱’(hashing)이라는 특별한 방법을 거쳐서 저장된다. 해싱이란 어떤 입력의 숫자(문자열은 긴 숫자로 보아도 무방하다)를 특별한 방법으로 계산하는 과정을 말한다. 예를 들어 어떤 해싱함수 h(x)가 있다고 하자. 이 방식은 입력 숫자 x에 5432를 더해서 이를 세제곱한 뒤 그뒤 네 자리를 선택한다고 해보자. h(1)를 계산하려면 먼저 1에 5432를 더해서 5433을 만들고 이를 세제곱해서 160368517737을 구한다. 그리고 뒤 4자리를 취하여 h(1)=7737이 완성된다. 같은 방식으로 h(2)를 구해보면 h(2)=6504가 되며 h(10)=0888이 된다.
그래서 실제 컴퓨터에 저장되는 값은 사용자가 입력한 값 그 자체가 아니라 그 값을 해싱함수를 통해서 얻어진 값을 기록하게 된다. 왜 이렇게 복잡한 과정을 거치는지 의아하게 생각할지 모르지만 그것은 바로 이 해쉬함수의 일방향(one-way)적 특성에 있다. 즉 주어진 어떤 수 x의 해싱값 h(x)는 쉽게 계산할 수 있지만 해싱의 결과로 주어진 y로부터 h(?)=y가 되는 무엇 ?를 거꾸로 계산하는 일은 매우 어렵다. 비유하자면 삶은 계란을 다시 얼린다고 날계란이 되지 않는 것같이 해싱을 통해서 변형된 다른 숫자에서 원래의 숫자를 복원하기란 매우 어려운 일인데 이것이 일방향 함수의 기본적인 특징이다. 예를 들어 h(x)=1111이 되는 x를 한번 계산해보면 그 역계산의 어려움을 실감할 수 있을 것이다. 따라서 어떤 사람이 내 컴퓨터를 통째로 훔쳐갔다고 해도, 그 컴퓨터에 기록된 나의 사이버 은행용 계좌의 비밀번호를 쉽게 알아낼 수 없다. 비밀번호에 대한 검사는 그 자체를 비교해보는 것이 아니라 내가 준 비밀번호 x의 해싱값 h(x)와 이미 내가 기록해둔 비밀번호의 해싱값이 같은지를 서로 비교해보는 것이다. 그래서 해커들은 컴퓨터에 기록된 비밀번호의 해싱값을 분석하기보다는 다른 방식으로 비밀번호를 추적한다. 보통 사용자들은 외우기 쉽도록 같은 비밀번호를 만든다. 그런데 모두 같은 비밀번호를 쓰는 것은 지극히 위험한 일이다. 만일 하나의 비밀번호만 알려지면 나머지 모두가 알려지기 때문이다. 그런데 서로 다른 비밀번호 모두를 기억하는 것도 보통 어려운 일이 아니다. 한 실험에 의하면 일반인들에게 10여개 서로 다른 사이트에 각각의 다른 비밀번호를 정하게 한 뒤에 여섯달 뒤에 다시 그 사이트에 대한 비밀번호를 대도록 해보니 겨우 20% 미만의 사람만이 그것을 다시 기억해냈다고 한다. 사람들은 기억의 편의를 위해서 친구이름, 좋아하는 영화제목, 아파트 동-호수, 자동차 번호 등을 사용하는데 이 역시 위험천만이다. 보통 비밀번호를 전문적으로 훔치는 수법의 연구에 의하면 어떤 사람이 사용하는 전형적인 비밀번호는 대략 50개 내외라고 한다. 따라서 한 사람을 집중적으로 추적해서 관련된 숫자나 문자를 조합하면 어렵지 않게 추측할 수 있다. 예를 들어 한 대학 학생들의 학교 컴퓨터용 비밀번호의 20%가 해커들에게로 비전되는 ‘뻔한 비밀번호 리스트’에 들어 있다고 한다. 이것이 아주 큰 문제인 것은 한 사용자의 계정만 뚫려도 그 시스템은 금방 쑥밭에 되기 때문이다. 그래서 이를 보완하기 위한 여러 방법이 동원되고 있다. 그중 한 방법은 비밀번호를 사용자가 정하는 것이 아니라 시스템에 일방적으로 정해주는 것이다. 즉 시스템에서는 무작위로 만들어진 비밀번호를 주는 것이다. 장점은 다른 사람이 이를 역추적하기 힘들다는 것이고 단점은 그만큼 우리도 이를 기억하기 힘든다는 것이다. 예를 들어 GKJE45QR과 같이 발음조차 불가능한 비밀번호를 외우기는 여간 고역스러운 일이 아니다. 그래서 특정한 시의 문구나 소설의 한 구절과 같이 좀 외기 쉬운 비밀번호를 지정하는 방법도 있다. 그리고 아주 중요한 비밀번호일 경우에는 소형 계산기와 같이 비밀번호를 매 30초마다 변경해서 출력하는 카드키(card key)가 사용된다. 따라서 어떤 시스템에 들어가기 위해서는 그 순간 그 카드키가 출력하는 값을 넣어야만 되므로, 이 카드키를 빼앗지 않는 한 침입은 불가능하며 설사 번호자체를 알았다고 하더라도 30초만 지나면 무의미하게 된다. 또 너무 뻔한 비밀번호는 등록자체를 거부하거나 한달마다 반드시 비밀번호를 바꾸도록 강제하는 방법도 있다. 최근에는 ‘인지적 비밀번호’와 ‘연상 비밀번호’라는 새로운 기법이 동원되고 있다. 즉 하나의 고정된 비밀번호를 물어보는 것이 아니라 사용자가 이미 설정한 질문에 답을 하는 형식으로 본인여부를 검증하는 것이다. 예를 들어 “당신이 가장 좋아하는 음식은?”, “가장 친한 친구의 회사의 이름은?” 하는 식이다. 이 방식에 대한 연구에 의하면 6개월이 지나도 다시 그 답을 틀리지 않고 재구성해내는 비율이 94% 정도나 되었다고 한다. 아주 변덕스럽지만 않다면 6개월 안에 가장 좋아하는 음식이나 절친한 친구가 바뀔 사람은 많지 않을 것이다. 늠름하게 노출해도 안전한 방법은 있다 그런데 문제는 이렇게 재생률(recall rate)도 높지만 다른 사람이 이를 추측해서 맞추는 확률(guess rate) 역시 37%나 된다는 것이다. 예를 들어 “가장 좋아하는 가수는?”과 같은 다소 뻔한 질문을 정해놓았다면 10번 이내의 추측으로 금방 맞출 수 있을 것이다. 이와는 달리 어떤 몇개의 단어로부터 연상되는 단어를 요구하는 연상법도 사용되고 있다. 예를 들어 ‘고구마, 오징어, 번데기’로 연상돼야 할 단어를 ‘안주’라고 정의해두는 방식이다. 문제는 이같이 누구라도 쉽게 추측할 수 없도록 매우 독특한 연상단어를 고안해내야 하는데 이것도 어려운 일이다. 이 방식도 재생률은 95%에 이르지만 추측률도 제법 높아 실제 사용하기에는 아직 어려움이 있다. 비밀번호에 있어서는 편한 만큼 위험하고, 불편한 만큼 안전하다고 생각하면 될 것이다. 그래서 필자가 생각해낸 한 방책은 비밀번호를 외우지 않고 각각의 통장 표지에 늠름하게(?) 적어놓은 것이다. 예를 들어 표지에는 ‘비밀번호=93487’라고 적혀 있지만 실제 번호는 인접한 숫자의 차이값인 ‘6143’인 것이다. 장점은 외지 않아도 된다는 것이고 설사 악당이 이를 주었다고 하더라도 쉽게 비밀번호를 알아내지 못하는 것이지만, 만일 통장을 잃어버렸다면 본인도 기억하지 못한다는 것과, 이렇게 공개된 이상 이제는 쉽게 들통날 수밖에 없다는 것이 단점이라 하겠다. 조환규/ 부산대 교수·컴퓨터과학

그래서 실제 컴퓨터에 저장되는 값은 사용자가 입력한 값 그 자체가 아니라 그 값을 해싱함수를 통해서 얻어진 값을 기록하게 된다. 왜 이렇게 복잡한 과정을 거치는지 의아하게 생각할지 모르지만 그것은 바로 이 해쉬함수의 일방향(one-way)적 특성에 있다. 즉 주어진 어떤 수 x의 해싱값 h(x)는 쉽게 계산할 수 있지만 해싱의 결과로 주어진 y로부터 h(?)=y가 되는 무엇 ?를 거꾸로 계산하는 일은 매우 어렵다. 비유하자면 삶은 계란을 다시 얼린다고 날계란이 되지 않는 것같이 해싱을 통해서 변형된 다른 숫자에서 원래의 숫자를 복원하기란 매우 어려운 일인데 이것이 일방향 함수의 기본적인 특징이다. 예를 들어 h(x)=1111이 되는 x를 한번 계산해보면 그 역계산의 어려움을 실감할 수 있을 것이다. 따라서 어떤 사람이 내 컴퓨터를 통째로 훔쳐갔다고 해도, 그 컴퓨터에 기록된 나의 사이버 은행용 계좌의 비밀번호를 쉽게 알아낼 수 없다. 비밀번호에 대한 검사는 그 자체를 비교해보는 것이 아니라 내가 준 비밀번호 x의 해싱값 h(x)와 이미 내가 기록해둔 비밀번호의 해싱값이 같은지를 서로 비교해보는 것이다. 그래서 해커들은 컴퓨터에 기록된 비밀번호의 해싱값을 분석하기보다는 다른 방식으로 비밀번호를 추적한다. 보통 사용자들은 외우기 쉽도록 같은 비밀번호를 만든다. 그런데 모두 같은 비밀번호를 쓰는 것은 지극히 위험한 일이다. 만일 하나의 비밀번호만 알려지면 나머지 모두가 알려지기 때문이다. 그런데 서로 다른 비밀번호 모두를 기억하는 것도 보통 어려운 일이 아니다. 한 실험에 의하면 일반인들에게 10여개 서로 다른 사이트에 각각의 다른 비밀번호를 정하게 한 뒤에 여섯달 뒤에 다시 그 사이트에 대한 비밀번호를 대도록 해보니 겨우 20% 미만의 사람만이 그것을 다시 기억해냈다고 한다. 사람들은 기억의 편의를 위해서 친구이름, 좋아하는 영화제목, 아파트 동-호수, 자동차 번호 등을 사용하는데 이 역시 위험천만이다. 보통 비밀번호를 전문적으로 훔치는 수법의 연구에 의하면 어떤 사람이 사용하는 전형적인 비밀번호는 대략 50개 내외라고 한다. 따라서 한 사람을 집중적으로 추적해서 관련된 숫자나 문자를 조합하면 어렵지 않게 추측할 수 있다. 예를 들어 한 대학 학생들의 학교 컴퓨터용 비밀번호의 20%가 해커들에게로 비전되는 ‘뻔한 비밀번호 리스트’에 들어 있다고 한다. 이것이 아주 큰 문제인 것은 한 사용자의 계정만 뚫려도 그 시스템은 금방 쑥밭에 되기 때문이다. 그래서 이를 보완하기 위한 여러 방법이 동원되고 있다. 그중 한 방법은 비밀번호를 사용자가 정하는 것이 아니라 시스템에 일방적으로 정해주는 것이다. 즉 시스템에서는 무작위로 만들어진 비밀번호를 주는 것이다. 장점은 다른 사람이 이를 역추적하기 힘들다는 것이고 단점은 그만큼 우리도 이를 기억하기 힘든다는 것이다. 예를 들어 GKJE45QR과 같이 발음조차 불가능한 비밀번호를 외우기는 여간 고역스러운 일이 아니다. 그래서 특정한 시의 문구나 소설의 한 구절과 같이 좀 외기 쉬운 비밀번호를 지정하는 방법도 있다. 그리고 아주 중요한 비밀번호일 경우에는 소형 계산기와 같이 비밀번호를 매 30초마다 변경해서 출력하는 카드키(card key)가 사용된다. 따라서 어떤 시스템에 들어가기 위해서는 그 순간 그 카드키가 출력하는 값을 넣어야만 되므로, 이 카드키를 빼앗지 않는 한 침입은 불가능하며 설사 번호자체를 알았다고 하더라도 30초만 지나면 무의미하게 된다. 또 너무 뻔한 비밀번호는 등록자체를 거부하거나 한달마다 반드시 비밀번호를 바꾸도록 강제하는 방법도 있다. 최근에는 ‘인지적 비밀번호’와 ‘연상 비밀번호’라는 새로운 기법이 동원되고 있다. 즉 하나의 고정된 비밀번호를 물어보는 것이 아니라 사용자가 이미 설정한 질문에 답을 하는 형식으로 본인여부를 검증하는 것이다. 예를 들어 “당신이 가장 좋아하는 음식은?”, “가장 친한 친구의 회사의 이름은?” 하는 식이다. 이 방식에 대한 연구에 의하면 6개월이 지나도 다시 그 답을 틀리지 않고 재구성해내는 비율이 94% 정도나 되었다고 한다. 아주 변덕스럽지만 않다면 6개월 안에 가장 좋아하는 음식이나 절친한 친구가 바뀔 사람은 많지 않을 것이다. 늠름하게 노출해도 안전한 방법은 있다 그런데 문제는 이렇게 재생률(recall rate)도 높지만 다른 사람이 이를 추측해서 맞추는 확률(guess rate) 역시 37%나 된다는 것이다. 예를 들어 “가장 좋아하는 가수는?”과 같은 다소 뻔한 질문을 정해놓았다면 10번 이내의 추측으로 금방 맞출 수 있을 것이다. 이와는 달리 어떤 몇개의 단어로부터 연상되는 단어를 요구하는 연상법도 사용되고 있다. 예를 들어 ‘고구마, 오징어, 번데기’로 연상돼야 할 단어를 ‘안주’라고 정의해두는 방식이다. 문제는 이같이 누구라도 쉽게 추측할 수 없도록 매우 독특한 연상단어를 고안해내야 하는데 이것도 어려운 일이다. 이 방식도 재생률은 95%에 이르지만 추측률도 제법 높아 실제 사용하기에는 아직 어려움이 있다. 비밀번호에 있어서는 편한 만큼 위험하고, 불편한 만큼 안전하다고 생각하면 될 것이다. 그래서 필자가 생각해낸 한 방책은 비밀번호를 외우지 않고 각각의 통장 표지에 늠름하게(?) 적어놓은 것이다. 예를 들어 표지에는 ‘비밀번호=93487’라고 적혀 있지만 실제 번호는 인접한 숫자의 차이값인 ‘6143’인 것이다. 장점은 외지 않아도 된다는 것이고 설사 악당이 이를 주었다고 하더라도 쉽게 비밀번호를 알아내지 못하는 것이지만, 만일 통장을 잃어버렸다면 본인도 기억하지 못한다는 것과, 이렇게 공개된 이상 이제는 쉽게 들통날 수밖에 없다는 것이 단점이라 하겠다. 조환규/ 부산대 교수·컴퓨터과학









