레이블이 Security인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Security인 게시물을 표시합니다. 모든 게시물 표시

2013년 6월 10일 월요일

2단계 인증(2-factor authentication)의 이해

요즘 세상에서 패스워드 하나만으로는 보안이 상당히 취약하다고 볼 수 있습니다. 그래서 최근에는 2-Factor 인증을 도입하는 사이트가 늘어나고 있는 추세라고 하죠(여러 해킹사고 여파도 있고..). 이에 2중요소 인증(또는 2단계 인증)에 대한 내용을 좀 정리해 볼까 합니다.

▲ Evernote의 2단계 인증(SMS인증)

2-factor authentication 이란?

2-Factor Authentication(TFA, T-FA 또는 2FA라고도 함)은 2가지 또는 3가지 이상의 요소를 조합하여 인증하는 것을 의미합니다. 다른 말로는 Multi-Factor authentication이라 부르기도 하죠. 보통 우리말로는 "2단계 인증"이라고 합니다.

인증을 하기 위해서 여러가지 요소를 조합할 수록 거짓인증에 대한 위험도는 감소 됩니다. 이를 위한 2단계 인증인 것이지요. 물론 여기서의 인증 요소는 아무거나 될 수 있는 것은 아닙니다. 나름대로 표준화된 3가지의 요소 즉 Factor들이 존재하거든요.

  • Knowledge Factor(사용자가 알고 있는 것)
  • Possession Factor(사용자가 소유하고 있는 것)
  • Inherence Factor(사용자 고유의 것)

2단계 인증을 이해하기 쉬운 예는 바로 ATM기를 이용할 때입니다. 우리는 ATM기기 앞에서 카드를 넣고(Possession Factor), 4자리의 PIN 번호를(Knowledge Factor) 입력하여 서비스를 이용하죠.

▲ ATM 은 카드와 PIN번호의 2가지 요소를 사용합니다

2단계 인증은 서로 다른 종류의 요소들을 사용하여야만 합니다. 처음에 패스워드를 물어보고 두번째로 전화번호나 생년월일을 입력받는다고 하면 2단계 인증이라 볼 수 없습니다. 왜냐하면 인증에 knowledge factor만을 사용하였기 때문이죠. 강한 인증(Strong Authentication)과 2단계 인증은 분명히 다릅니다.

Knowledge Factor(알고 있는 것)

Knowledge factor는 우리들이 아주 흔히 사용하는 것으로 다음과 같은 것들이 있습니다.

- 비밀번호(Password) : 문자, 숫자, 특수문자 등의 조합으로 가장 많이 쓰이는 factor
- PIN(Personal Identification Number) : ATM기기 등에서 쓰이는 숫자 조합의 번호
- 패턴(Pattern) : 안드로이드폰에서 많이 쓰이죠

▲ 가장 흔한 knowledge factor인 패스워드

Possession Factor(가지고 있는 것)

Possession factor. 잘 감이 안오지만 사실 굉장히 오래전부터 사용되어져온 factor입니다. 바로 열쇠로 자물쇠를 여는 경우죠. 본인이 소유한 열쇠(possession factor)로 문을 여는 것은 알게 모르게 지속적으로 쓰여져 온 인증방식입니다.

▲ 열쇠와 자물쇠는 Possession factor의 좋은 예

Possession factor는 사실 공격 당하기 굉장히 쉬운 요소 중에 하나입니다. 아무래도 물리적인 요소이다 보니 위험에 많이 노출된다고 볼 수 있죠. 열쇠없이 자물쇠를 연다던가(SQL Injection) 열쇠를 훔치거나 복사본을 뜰 수도 있고, 가짜 자물쇠에 열쇠를 넣게 한 다음 그 열쇠 복사본으로 진짜 자물쇠를 열 수도 있는 거죠(중간자 공격 man in middle attack). 따라서 이 요소에 해당하는 것들은 정말 철저히 안전하게 관리해야 합니다.

여기에 해당하는 것들은 다음과 같은 것들이 존재합니다.

- Tokens : 금융권에서 많이 쓰이는 OTP Token 아시죠?
- 스마트카드 : 카드 한장으로 출입도 하고 계산도 하고.. (카드만 있다면 도용 가능?)
- 신용카드, 체크카드
- 마그네틱 열쇠 : 요즘 집의 자물쇠는 별도의 마그네틱 키도 흔히 제공됩니다.

종종 휴대폰으로 SMS를 통한 일회성 패스워드(OTP)를 받아서 인증하는 경우도 있는데요. 이 경우는 본인이 소유한 휴대폰이 바로 Possession factor가 됩니다.

Inherence Factor(사용자 고유의 요소)

Inherence factor는 사용자 고유의 무언가로 인증이 가능한 요소입니다. 과연 뭐가 있을까요? 누구나 자신만의 것으로 가지고 있는 것! 단적인 예가 바로 지문입니다. 본인의 생체 정보에 해당하는 무엇도 inherence factor가 될 수 있습니다. 가끔 일부 노트북을 보면 지문인식 기능이 들어가 있는 경우가 있는데, 이게 바로 inherence factor를 이용한 인증입니다.

▲ inherence factor인 지문인식 

영화에서 보면 나오는 홍채인식 같은 경우도 이러한 factor를 이용한 인증에 속합니다. 이러한 인증방식은 깨기도 무척 어렵지만, 그만큼 기술적으로 비용도 많이 든다고 볼 수 있어요.

쓰여지는 곳

현재 2단계 인증은 꽤 여러 사이트에서 쓰여지고 있습니다. 국내의 경우는 기존 금융권에서 이미 특정 서비스를 위해 OTP가 사용되고 있었구요. 이게 점차 서비스 범위를 확대하는 추세입니다. 요즘 말도 많고 탈도 많은 공인인증서도 2-Factor 인증에 속하구요(인증서 파일 - possession factor, 인증서 암호 - knowledge factor). 해외 서비스의 경우는 이번 Evernote(pro만 가능)를 포함해서 Dropbox, Google, Twitter등이 2단계 인증을 사용 가능합니다.

보통 2단계 인증은 선택사항인 경우가 많습니다. 이것을 강제화하면 아무래도 더욱 안전하겠지만, 아무래도 사용자 입장에서 불편이 심해지겠죠. 그래서 일단 장치를 마련해 두고 사용자에게 선택권을 넘기는 겁니다. 하지만 장치가 마련되어 있다면 안전을 위해서라도 사용을 해보는 것이 좋지 않을까요? 어차피 선택은 사용자의 몫이니까요.



덧) 사실 개인적으로 2-factor authentication은 2중요소 인증이라 표현하는게 맞을 거 같은데, 대개는 2단계 인증 즉 Two-step verification이라고 표현합니다. 아무래도 각 factor를 사용한 인증이 두 단계로 나누어져 이루어지기 때문인 것 같습니다.

참조링크
http://en.wikipedia.org/wiki/Multi-factor_authentication
http://evernote-ko.tumblr.com/post/51782934128/evernote-3
https://www.dropbox.com/help/363/ko

2013년 5월 14일 화요일

이해하기 어려운 복잡한 패스워드(Password)가 좋은 것만은 아니다.

과거부터 해킹사고는 빈번했었고 근래 들어서는 국가 차원에서도 많은 보안사고가 발생하고 있습니다. 이에 따라 보안에 대한 관심도 많이 높아지고 있는데요. 개인이 관리할 수 있는 가장 기본적인 보안 수단인 패스워드(Password)에 대해 괜찮은 글이 있어서 공유를 하고자 합니다.

흔히 패스워드를 만들때는 다음과 같은 생각들이 밑바탕에 많이 깔려 있습니다. 
"최대한 복잡하게.." "남들이 추측하기 어렵게.." "다양한 영문,숫자 조합으로.." "자주 변경을.."

뭐. 대부분 맞는 말이죠. 하지만 알아보기 어려울 정도의 복잡한 패스워드는 자기 자신도 잘 기억하기 어렵다는 치명적인 단점이 있습니다(굉장히 기억력이 좋은 사람이 아닌 이상에는 말이죠...;;). 그리고 그러한 패스워드가 그렇지 않은 것보다 더 보안강도가 높은 것만도 아니에요. 

덴마크의 토마스 백달(Thomas Baekdal)이라는 저자가 다양한 케이스의 패스워드를 각종 방법(Brute-force, Common words, dictionary attack)으로 크래킹 했을 시에 얼마나 시간이 걸리고 보안강도는 얼마나 되는지를 다음과 같이 정리하였습니다. 


"orange" 같은 일반적인 단어나 단순 랜덤한 문자열인 "jskerv" 같은 건 도저히 쓸 수 없을 정도로 보안강도가 약하죠. 하지만 영문 대소문자, 숫자, 특수문자의 조합인 "J4fS<2"는 219년이나 걸리네요. 역시나 복잡도가 높은 패스워드는 상당히 깨기가 어렵습니다.

참고) 정부에서 권고하는 패스워드 생성 규칙은 영문,숫자 조합 10자리 이상 또는 영문,숫자,특수문자 조합 8자리 이상입니다. 

하지만 "J4fS<2" 와 같은 패스워드를 기억하실 수 있으신가요? 전 도저히 못할 것 같네요. 이와 같은 패스워드는 보안강도는 매우 높으나 실질적인 효용가치는 좀 떨어진다고 볼 수 있는거죠. 그렇다면 다음과 같은 것은 어떨까요.


"This is fun" 은 일반적인 단어 3개에 특수문자(공백)의 조합입니다. "J4fS<2" 보다 보안강도도 높으면서 기억하기도 수월합니다. - 공백의 경우는 기호에 따라 다른 특수문자로 바꿔도 무방하겠네요. - 그런데 여기서 일반적인 단어를 본인이 기억하기 쉬운, 일반적이 아닌 다른 형태로 바꾸면 더욱 보안강도가 높아집니다.

▲ "du-bi-du-bi-dub" 은 정말 굉장하군요

결과적으로 보면 3가지 단어 이상에 특수문자를 조합하면 복잡도가 증가하면서 자연스레 보안강도도 높아진다고 볼 수 있습니다.

이쯤에서 정리를 해보자면요.
"J4fS<2" 과 같은 패스워드는 분명히 강력한 패스워드입니다. 보안강도가 굉장히 높죠. 쉽게 뚫을 수 없는 패스워드 입니다. 다만, 여기서 이야기하고자 하는 것은 충분히 패스워드도 user-friendly 할 수 있고 보안강도도 높도록 만들 수가 있다는 것이 요점이죠. 설사 조금 보안강도가 떨어진다 하더라도 자주 변경해 줄 수도 있는 것이구요.

하지만.. 뭐니뭐니해도 중요한 것은 본인의 패스워드는 본인이 기억할 수 있어야 한다는 것 아닐까요? ^^;


출처 : The Usability of Passwords