어떻게 나임을 증명하는 여러 방법
건물 입구에 경비원이 서 있다고 하자. 안으로 들어가려면 내가 누구인지 보여 줘야 한다. 어떤 사람은 이름을 대고 암호를 말하고, 어떤 사람은 출입증을 내밀고, 어떤 사람은 얼굴을 비춰 통과해요. 컴퓨터에 로그인할 때도 똑같은 일이 벌어진다. 내가 나라는 것을 증명하는 일, 이것을 인증이라고 한다.
로그인은 나임을 증명하는 관문이에요
앞의 두 레슨에서는 비밀번호를 안전하게 저장하는 법을 봤다. 이번에는 그 비밀번호가 쓰이는 자리, 로그인을 들여다본다. 문을 지키려면 막기 전에 먼저 물어야 할 것이 있어요. 지금 문 앞에 선 사람이 누구인가 하는 것이다.
주인이면 들여보내고 낯선 사람이면 멈춰 세워야 한다. 그래서 들어오는 사람마다 정말 그 사람이 맞는지 묻는 관문을 두는데, 이 관문이 로그인이고 여기서 나임을 보여 주는 일이 인증이다.
문 앞에 선 사람을 눌러 누구인지 확인해 보자. 인증을 통과한 사람만 안으로 들어가요.
확인된 사람만 안으로 들어갔다. 그런데 누구인지는 무엇으로 보여 줄까? 이름만 대면 누구나 흉내 낼 수 있으니 이름만으로는 부족해요. 나만 내놓을 수 있는 증거가 있어야 한다.
그런 증거는 크게 세 가지로 나뉜다. 하나씩 살펴보자.
아는 것, 가진 것, 나 자신의 특징
나임을 보여 주는 증거는 세 갈래다. 첫째는 아는 것이다. 비밀번호나 PIN처럼 머릿속에만 있는 정보다. 둘째는 가진 것이다. 휴대폰, 보안 키, 출입증처럼 손에 쥔 물건이에요. 셋째는 나 자신의 특징이다. 지문이나 얼굴처럼 몸에 붙어 있는 것이다.
세 가지는 약점도 저마다 다르다. 아는 것은 잊어버리거나 남에게 새어 나갈 수 있고, 가진 것은 잃어버리거나 도둑맞을 수 있다. 몸의 특징은 늘 지니고 다니지만, 한번 복제되면 비밀번호처럼 새로 바꿀 수가 없어요.
세 요소를 하나씩 눌러 펼쳐 보자. 요소마다 강점과 약점이 나와요.
세 요소가 저마다 다른 약점을 가졌다. 그래서 한 가지만 믿으면 위태롭다. 비밀번호 하나만 쓰는데 그것이 새면 남이 그대로 나인 척할 수 있기 때문이에요.
더 단단히 막는 방법은 간단하다. 서로 다른 종류의 요소를 두 개 이상 함께 요구하면 된다.
여러 겹으로 겹치면 더 안전해요
문에 자물쇠를 하나만 달면 그 열쇠를 손에 넣은 사람은 누구든 연다. 자물쇠를 두 개 달고 서로 다른 열쇠로 둘 다 열어야 한다면, 하나를 잃어도 나머지 하나가 막아 준다. 인증도 같아요.
비밀번호(아는 것)를 맞히고 내 휴대폰(가진 것)으로도 확인하게 하면, 비밀번호가 새도 휴대폰이 없는 사람은 들어오지 못한다. 이렇게 종류가 다른 요소를 겹쳐 묻는 것을 다중 인증이라고 한다. 비밀번호를 두 개 묻는 것은 같은 종류를 겹친 것이라 다중 인증이 아니다.
요소 하나만 쓸 때와 두 요소를 겹칠 때를 눌러 안전도를 견줘 보자.
한 겹일 때보다 두 겹일 때 뚫기가 훨씬 어려워졌다. 공격자가 비밀번호를 알아내고 내 휴대폰까지 손에 넣어야 하니, 두 가지를 한꺼번에 갖추기는 훨씬 드문 일이에요. 그래서 은행처럼 중요한 곳일수록 여러 겹을 요구한다.
다만 문자로 받는 인증 번호는 전화번호를 가로채는 수법에 뚫리기도 해서, 인증 앱이나 보안 키가 더 단단하다. 그리고 안에 들여보낸 다음에도 할 일이 남아 있다. 들어왔다고 해서 무엇이든 해도 되는 것은 아니기 때문이다.
누구인가와 무엇을 할 수 있나는 달라요
회사 건물에 들어왔다고 하자. 출입증으로 내가 직원이라는 것은 증명했다. 이것이 인증이다. 그런데 직원이라고 모든 방에 들어갈 수 있는 것은 아니에요. 금고방은 따로 허락받은 사람만 들어간다.
이렇게 확인된 사람이 무엇을 할 수 있는지 정하는 것을 권한 부여, 줄여서 인가라고 한다. 인증은 누구인지를 묻고, 인가는 그다음에 무엇을 해도 되는지를 정한다. 권한은 필요하면 언제든 거둬들일 수 있다.
먼저 인증으로 직원임을 확인한 뒤, 방을 눌러 들어갈 권한을 켜고 꺼 보자. 모든 권한을 한 번에 거둘 수도 있어요.
누구인지 확인하는 일과 무엇을 해도 되는지 정하는 일이 따로 움직였다. 같은 사람에게 권한을 더 줄 수도, 다시 거둘 수도 있었어요. 운영체제도 사용자마다 할 수 있는 일을 따로 정해 두고, 웹 서비스도 일반 회원과 관리자가 쓸 수 있는 기능을 나눈다.
둘을 나눠 두면 누가 들어왔는지와 그 사람이 무엇을 만질 수 있는지를 따로 관리할 수 있다. 인증이 뚫려도 그 계정의 권한이 작으면 피해도 작아진다.
정리
정리하면 이렇다. 인증은 내가 나임을 증명하는 일이고, 증명의 재료는 아는 것, 가진 것, 나 자신의 특징 세 가지다. 한 가지만 쓰면 약하니 종류가 다른 요소를 겹치면 더 안전한데, 이것이 다중 인증이에요.
그리고 인증은 인가와 다르다. 인증은 누구인지를 묻고, 인가는 무엇을 할 수 있는지를 정한다.
핵심을 차례로 눌러 되짚어 보자. (나임을 증명 → 아는 것·가진 것·나 자신의 특징 → 여러 겹의 다중 인증 → 인증과 인가는 다름)
이제 문 앞 경비원이 하는 일을 속속들이 알았다. 누구인지 가려내고, 여러 겹으로 단단히 확인하고, 안에서 무엇을 만질 수 있는지까지 따로 정해요.
그런데 문을 통과한 다음에 주고받는 메시지는 여전히 낯선 길을 지나간다. 그 메시지를 중간에서 누가 읽지 못하게 하는 방법, 암호화를 다음 레슨에서 다룬다.