사진 암호의 보안 최적화

몇 가지 관련 의견을 바탕으로 앞의 글에 이어 사진 암호의 보안에 관해 좀 더 살펴볼 필요가 있다고 생각했습니다. 사용자 경험 팀에서 개발 이사로 근무하는 Jeff Johnson은 이 기능의 보안 수준을 수학적으로 해석하는 부분에 특히 관심이 많아 사진 암호의 보안을 최적화하는 방법을 다루는 이 글을 작성했습니다. 사진 암호는 새로운 형태의 로그온 방식이고, 특히 모바일 장치와 관련한 보 안 문제 및 새로운 인증 기술에 대한 의구심(예를 들면, 얼굴 인식의 취약성 또는 생체 인식에서 나타난 문제들)이 커지면서 사람들이 이 방법의 잠재적 허점을 우려하는 것은 당연한 일일 수 있습니다. 이에 따라 편리하면서도 텍스트 암호에 못지 않은 보안 수준의 암호 방식을 제공하는 것에 목표를 두었습니다. Jeff가 소개하는 통계 수치는 이 방법의 보안 수준을 잘 보여줍니다.아래 글에서 Jeff 는 전반적으로 사진 암호가 확실한 솔루션인 이유를 설명합니다. 이 글을 읽으면서 한 가지 염두에 둘 점은 지난 수년간 입력 방식 암호에 대한 '모범 사례'와 주요 안전 수칙들이 꾸준히 제시되어 왔다는 것 입니다. 숫자와 대소문자의 혼용, 길이 제한, 암호 재사용 금지, 사전 단어 사용 금지 등의 보안 정책을 적용하는 한편, 머리 위에 카메라가 설치되어 있거나 키 입력 로거가 설치되어 있을 수 있는 공공 인 터넷 터미널 이용에 대한 자제를 권고하는 등의 보안 수칙을 예로 들 수 있으며, 이러한 정책이나 권고 사항들은 사진 암호에도 마찬가지로 적용됩니다. Jeff는 이러한 배경에서 이 암호 방식의 보안 측면을 다룹니다. - Steven


지금까지 여러 차례에 걸쳐 "저에게는 시스템 보안이 무엇보다 중요해요. 가장 안전한 로그인 암호 동작을 만드는 가장 좋은 방법은 뭔가요?"와 같은 질문을 받았습니다. 저처럼 수학을 좋아하는 사람에게 이런 질문은 분석해 보고 싶은 호기심을 유발합니다. 이 문제는 게임 이론과 관련되지만 우선 모범 사례를 요약해 보겠습니다.

  • 최소한 10개 이상의 POI(관심 지점)가 있는 사진을 선택합니다. POI(관심 지점)란 사용자가 터치하려는 지점, 선으로 연결하려는 위치, 원을 그리려는 영역 등 동작에서 기준이 될 만한 영역을 말 합니다.
  • 동작의 종류와 순서를 임의로 혼용합니다. 선은 순열이 가장 많은 동작이지만 항상 3개의 선만 사용한다면 해커가 다른 종류의 동작이 사용되는 암호는 배제시킬 수 있어 해킹하기가 더 쉬워집니다.
  • 터치, 선, 원을 사용하고 이러한 동작의 순서를 무작위로 선택하면 해킹을 위해 예측해야 하는 조합의 수가 6배나 많아집니다.
  • 원 동작의 경우, 방향을 시계방향 또는 반시계방향으로 무작위 선택합니다. 이와 함께 원의 크기를 '예상되는' 크기보다 크거나 작게 만드는 것이 좋습니다.
  • 선 동작의 경우, 선은 항상 왼쪽에서 오른쪽으로 그리는 것이 편하지만 두 지점을 연결하는 방향을 무작위로 선택하는 것이 더 안전합니다.
  • 모든 인증 형태가 그렇듯이 사진 암호를 입력하여 로그인할 때 주변에 사람이 없어야 합니다.
  • 다른 사람이 무단으로 접근하지 못하는 안전한 위치에서 컴퓨터를 사용합니다. 어떤 암호 입력도 마찬가지겠지만 화면이 타인의 시야에 노출되거나 녹화 장치에 포착될 수 있는 가능성에 주의하십시오.
  • 화면에 남은 손자국으로 동작을 알아낼 가능성이 있다는 점에 유의합니다. 수시로 화면을 깨끗하게 닦으십시오. 화면을 깨끗이 닦고 로그인한 후 더 이상의 터치 동작이 없으면 오히려 더 위험하겠지만 반복적으로 사용하여 손때가 끼면 해커가 더 쉽게 알아볼 수 있습니다. 보안 문제가 아니더라도 청결해서 나쁠 건 없겠죠. 장치를 자주 켰다 끄고 하루에 십여 차례 숫자 PIN을 입력하는 경우에는 이 부분에 만 손자국이 남기 때문에 이러한 손때가 더 큰 문제가 됩니다. 이따금 사진 암호 로그인 화면에서 화면을 사선 방향으로 보고 동작의 순서를 추측할 만한 흔적이 남아 있는지 확인하십시오. 이러한 흔적이 남 아 있으면 화면을 닦거나 오히려 사진 암호 영역에 손자국을 더 만드십시오. 아래에서 설명하겠지만 그럴 경우 POI가 효과적으로 증가합니다.

이러한 지침을 따른다면 컴퓨터 보안이 크게 향상될 것입니다.

제시된 여러 의견을 참고하여 이미지 크기를 줄이고 화면에서 임의의 위치에 이미지를 표시하고 약간 회전시키는 등의 방법으로 손자국으로 인한 위험을 최소화하는 방안도 고려해 보았습니다. 사용성에 대 한 피드백을 근거로 이미지 크기를 줄이면 동작을 올바르게 입력하기가 더 어려워지고 로그인 경험의 몰입도가 감소한다는 점을 잘 알고 있었습니다. 그렇더라도 보안이 크게 개선된다면 다른 부분에서 손해를 감수할 여지는 있습니다. 이미지의 위치를 이동하는 방법에 대해 알게 된 사실을 말씀 드리면, 특정 지점에 손자국이 집중되는 현상은 줄어들지만 서로 상대적 위치만 다를 뿐 동일한 형태의 터치, 선, 원이 '덩어리'를 이루어 더욱 도드라져 보였습니다. 해커는 이 정보를 통해 서로 상대적 위치에서만 차이를 보이는 동작 패턴을 쉽게 알아낼 수 있습니다. 그러면 이 패턴을 가지고 사진을 이리저리 맞추어보다가 어렵지 않게 사진의 특정 요소가 이 패턴과 반복해서 겹쳐지는 위치를 찾아낼 수 있습니다. 결과적으로, 이 방법은 보안을 그다지 개선시키지 못하면서 빠르고 자연스러운 사용자 경험의 질을 떨어뜨리는 것으 로 나타났습니다. 현실적으로는 손자국을 이용한다는 것이 매우 어렵습니다. 여러 사람이 며칠 동안 사용한 태블릿을 생각해 보면 손자국에서 일련의 동작을 유추할 단서를 찾기조차 어려운 경우가 대부분입니 다. 또한 로그인의 동작 요소가 제공되고 동작이 이루어지는 특정 부분을 알고 있다고 해도 인증에 통과할 확률은 매우 적습니다. 그럼에도 여기서 이러한 분석을 다루는 이유는 혁신적 신기술이 등장할 때면 항상 잠재적 공격 요인을 알아내고 기술 커뮤니티에서 보안 위협의 심각성과 잠재적 완화책에 대한 일반적 합의에 도달하는 것이 중요하다고 느꼈기 때문입니다. 물론 화면 기술이 계속 향상되어 언젠가는 손자 국이 더 이상 문제가 되지 않는 날이 올 거라는 확신은 있습니다.

분석

다양한 시나리오를 통해 보안 공격이 성공할 확률을 계산해 보는 것도 흥미롭습니다. 이전 블로그 글에서 다룬 바와 같이 동작은 100 x 100 격자를 기준으로 하며 매우 단순한 동작인 터치의 경우에도 가능한 값의 수는 10,000개에 이릅니다(근접 일치 방식을 적 용하면 270개로 대폭 감소). 실제로 POI의 수는 이보다 훨씬 적은데, 제공된 사진에서 기억할 수 있는 위치들이 꽤 많이 있을 뿐입니다.

분석의 기본 전제를 가정하는 방법에는 여러 가지가 있겠지만 여기서는 POI의 수가 적고 모든 동작이 이러한 지점에만 관련된다고 가정합니다. 또한, 터치는 하나의 POI에서 직접 그려지고 원은 두 가지 크기(즉, 기준점을 중심으로 그려지는 작은 원과 큰 원)와 두 가지 방향으로 그려지며 선은 항상 두 개의 POI를 연결한다고 가정합니다. 이러한 가정은 실제와는 다르기 때문에 실제 상황에서 경우의 수는 더 많아집니다.

Windows는 암호를 5번 잘못 입력하면 로그인을 차단하여 사진 암호(및 PIN)를 추가적으로 보호합니다. 이때는 기존의 텍스트 암호를 사용해야 합니다. 이러한 점을 염두에 두고, 특정 시나리오에서 상 대적 보안을 두 가지 방식으로 생각해볼 수 있습니다.

첫 번째는 사용자의 동작 선택 방법에 대해 완전하게 알고 있는 해커가 잠금이 작동되기 전에 사용자의 시스템에 로그인할 수 있는 가능성입니다. 이를 Odds1이라고 하겠습니다. 동일한 가능성을 가진 x개의 동작 조합이 있다면 잠금이 작동하기 전 5번의 시도로 이를 추측할 수 있는 확률은 5 / x입니다.

두 번째로, 시나리오 규칙에 따라 암호를 무작위로 선택한 100대의 컴퓨터가 주어졌다고 가정합니다. 이를 Odds100이라고 하겠습니다. 해커가 이 컴퓨터 중 최소 한 대 이상에 로그인할 수 있을 확률은 얼마나 될까요? 각각 독립된 사건이기 때문에 확률은 다음과 같습니다.
  1)/x)^100.

기본 시나리오

최악의 시나리오를 가정해 보겠습니다. 여러분이 가진 '사진'은 완전히 검은 바탕이고 중간에 흰색 점이 하나 있습니다. 단 하나의 POI만 존재하기 때문에 터치와 원 동작만 사용할 수 있습니다(선을 연 결할 지점은 없음). 터치 동작만 사용한다면 유효한 동작 조합으로 흰색 점을 3번 터치하는 방법밖에 없으므로 해커는 100% 성공할 것입니다. 이제, 점은 없고 원만 사용한다고 가정합니다. 각 동작에 무작 위로 선택할 수 있는 원은 4가지가 있습니다. 따라서 가능한 동작 조합 수는 총 43 = 64개입니다. 이 시나리오에서 Odds1은 7.81%이고 Odds100은 99.97%입니다. 예상과 달리 한 대의 컴퓨터에서 사진 암호를 이용해 로그인에 성공할 확률이 8%도 안 된다는 사실은 놀랍습니다. 이는 100대의 컴퓨터가 있을 경우 최소 한 대 이상이 해킹당할 수 있다는 말과 같습니다. 이 정도 확률에 만족할 사용자도 있겠지만 보안에 민감한 대부분의 사용자와 다수의 컴퓨터를 관리하는 IT 관리자에게는 이것도 받아들이기 어렵습니다.

이제 각 동작에 터치 또는 원의 임의 요소를 선택한다고 했을 경우로 시나리오를 확대해 보겠습니다. 언뜻 각 동작의 복잡성이 두 배로 증가할 것이라고 생각되겠지만 그렇지 않습니다. 원은 4가지로 그릴 수 있고 터치는 1가지뿐이므로 5개의 고유한 동작이 존재하고 가능한 조합은 총 125개입니다.

새로운 '무작위' 방법으로 다음과 같이 한다고 가정해 보겠습니다. 동전을 던져서 터치와 원 중 하나를 선택합니다. 원을 선택했으면 4가지 원 중 하나를 임의로 정합니다. 이것이 더 무작위적이고 좋은 방법 같지만 실제로는 원만 사용할 때보다 덜 안전합니다. 다른 절반 선택의 경우 단 하나의 가능성, 즉 터치만 있는 동작을 선택해야 하기 때문입니다. 해커는 2개나 3개의 터치가 사용된 동작을 주요 공격 대상으로 삼아 성공 확률을 높일 수 있습니다. 동일한 확률의 다른 방법도 있겠지만 이상적인 공격 전략은 3개의 터치를 먼저 테스트해 보고 2개의 터치를 테스트한 후 잠금 기능이 작동하기 전 5 번의 시도 내에 4가지 종류의 원을 각각 시도하는 것입니다. Odds1이 겉보기에는 4%이지만(이전의 7.81%보다 개선됨), 실제로 해커가 얻는 Odds1은 25%여서 원만 사용할 때보다 상황이 3배 이상 더 나 빠집니다. 통계에는 함정이 있을 수 있습니다!

다행스럽게도 이 시나리오에는 간단한 해결책이 있습니다. 각 동작에 대해 1 ~ 5 사이에서 임의의 숫자를 선택합니다. 1을 선택했다면 터치를 사용합니다. 나머지 값의 경우에는 가능한 4가지 원 중 하 나를 선택합니다. 그러면 Odds1이 4%가 되지만(첫 번째 시나리오보다 두 배 향상) Odds100은 여전히 98.31%로 매우 나쁩니다.

약간의 개선

방법을 약간 개선해 보겠습니다. 이 시나리오에는 POI가 단 2개인 사진이 사용됩니다. 이렇게 단순한 사진은 실제로 생각하기 힘들지만 흰색 점이 2개 있는 검정색 캔버스라고 하면 이해하기 쉬울 것입니 다. 이 경우에는 선 동작을 추가할 수 있지만 가능성은 두 가지뿐입니다. 즉, 첫 번째 점에서 두 번째 점으로 선을 그리거나 두 번째 점에서 첫 번째 점으로 선 그릴 수 있습니다.

이와 같은 예를 안다며 동작 유형을 무작위로 선택한 다음 동작을 선택하지는 않을 것입니다. 가능한 모든 동작을 합한 다음 동일한 확률로 가능한 각 동작에 대응시킬 임의 숫자를 선택합니다. 터치는 2 가지, 원은 8가지, 선은 2가지가 가능합니다. 가능한 총 동작 조합 수는 123=1728개입니다. 그러면 Odds1은 0.29%가 되고 Odds100은 25.2%가 됩니다. 2개의 POI만 있는 이 단순한 사진의 성공적 공격 가능성이 이처럼 낮다는 것은 다소 의외입니다. 100대의 컴퓨터를 공격하더라도 4번을 시도해야 한 대의 컴퓨터에 성공적으로 침입할 수 있습니다.

좀 더 복잡한 사진

이제 사진에 POI가 5개 있다고 가정하겠습니다. 이와 같은 매우 단순한 사진은 드물지만 생각해볼 수는 있습니다. 이제 터치는 5가지, 원은 20가지, 선은 20가지가 가능합니다. 따라서 가능한 조합 수 는 453=91,125개입니다. 이제 Odds1은 극히 희박한 확률인 0.0055%이고 Odds100도 0.55%로 매우 낮습니다. 많은 사 용자에게 이 정도의 가능성은 데이터를 보호하기에 충분합니다.

매우 복잡한 사진

이제 보안이 우려되어 10개의 POI가 있는 사진을 선택한다고 해보겠습니다. 특정 사진에 POI가 몇 개인지에 대해서는 논란의 여지가 있을 수 있습니다. 그러나 동작으로 무작위 선택하기 위해 식별할 수 있는 10개의 지점을 고를 수만 있다면 '분명한' POI가 몇 개인지는 그리 중요하지 않습니다. 사실, 일부 지점이 분명하지 않다면(그러나 어느 정도 일관되게 지정할 수는 있어야 함) 보안 관점에서는 더 좋 습니다.

이제 터치는 10가지, 원은 40가지, 선은 90가지가 가능합니다. 그 결과 1403=2,744,000가지라는 엄청난 동작 조합이 발생합니다. Odds1은 희박한 확률인 0.0002%입니다. POI가 10개인 사진을 사용하는 자신의 컴퓨터가 침입 당할 확률보다 1달러짜리 워싱턴 주 Select 4 복권 1장으로 10,000달러에 당첨될 확률이 50배 더 높습니다! Odds100은 0.018%로 떨어지고 Odds1000 도 0.18%에 불과합니다.

소셜 엔지니어링

소셜 엔지니어링은 암호, PIN, 사진 암호 등 모든 종류의 로그인 보안에 매우 큰 위협이 되고 있습니다. 무작위 추출 장치를 이용하여 로그인 동작 조합을 구성하면 이러한 보안 방식에 모두 도움이 됩 니다.

기술적으로 가능하다면 간단한 프로그래밍이나 Excel을 사용하여 위의 방식을 구현할 수도 있습니다. 그러나 대중들에게는 복잡한 기술 없이 간단히 동작 조합을 만드는 편이 유용할 것입니다. 물론 이러 한 도구나 방법을 찾지 않고, 사이트 관리자가 요구하지 않는데도 자발적으로 강력한 텍스트 암호를 선택하는 사용자가 의외로 더 많을 수도 있겠지요.

주사위 굴리기

별나기는 하지만 이와 유사하게 무작위로 동작 암호 조합을 만드는 방법을 고안해 내면 재미있을 것 같다는 생각이 들었습니다. 그 방법으로, POI가 6개인 동작 조합을 만들기 위해 면이 6개인 주사위를 사용하기로 했습니다. POI가 6개 있는 사진은 주사위의 면 수와 일치한다는 점 외에도 터치 수(6)와 원의 수(24)를 더한 값이 바로 가능한 선의 수(30)라는 유용한 특징이 있으며, 따라서 동작 종류를 나 누기도 쉽습니다.

3가지 각 동작에 대해 다음 단계를 반복합니다.

  1. 주사위를 굴립니다.
    나온 숫자는 6개의 POI 중 동작에 사용할 POI(선의 경우 시작 POI)를 나타냅니다.
  2. 주사위를 다시 굴립니다.
    • 숫자가 짝수이면 동작은 선입니다.
      주사위를 다시 굴립니다.
      숫자가 첫 POI를 선택하기 위해 처음 굴렸을 때의 숫자와 일치하면 다른 숫자가 나올 때까지 계속 굴립니다.
      이 숫자가 선의 두 번째 지점입니다.
    • 숫자가 홀수이면 동작은 터치 또는 원입니다.
      주사위를 다시 굴립니다.
      아래의 굴림 값 목록을 이용하여 동작을 결정합니다.
      1 - 터치 동작
      2 - 작은 시계방향 원 동작
      3 - 작은 반시계방향 원 동작
      4 - 큰 시계방향 원 동작
      5 - 큰 반시계방향 원 동작
      6 - 다시 굴림

예상과 같이 6 POI로 얻어지는 복잡성은 5 POI와 10 POI 사이의 숫자 범위에 해당합니다. Odds1은 0.0023%이고 Odds100은 0.23%입니다.

개발 과정에서 매우 흥미로웠던 새로운 사진 암호 로그인 방식을 사용자 여러분께서도 즐겁게 이용하시기 바랍니다!

- Jeff Johnson