← 생활 속 수학

기술 고1

비밀번호를 8자리에서 12자리로 늘리면 얼마나 안전해질까 · 곱의 법칙

6시간이면 다 맞혀 보는 비밀번호가, 네 글자 늘면 1만 년이 걸린다

비밀번호를 지키는 것은 결국 경우의 수다. 공격하는 쪽이 가능한 비밀번호를 하나씩 다 넣어 보는 방식이라면, 경우의 수가 클수록 오래 걸린다. 그 경우의 수는 곱의 법칙으로 센다.

길이가 한 자리 늘면 경우의 수는 더해지지 않고 곱해진다.

숫자 4자리 비밀번호는 자리마다 10가지가 있고 네 자리가 동시에 정해지므로 10 × 10 × 10 × 10 = 10,000가지다. 6자리면 100만 가지다. 휴대폰 잠금이 몇 번 틀리면 기다리게 만드는 이유가 여기 있다. 1만 가지는 기계로는 순식간이지만, 다섯 번에 한 번씩 막히면 사람 손으로 다 해 보기 어렵다.

숫자 4자리 10⁴숫자 6자리 10⁶36종 8자리 5분62종 8자리 6시간62종 12자리 1만 년
비밀번호 경우의 수를 자릿수(로그)로 그린 막대. 1초에 100억 번 맞혀 볼 때 걸리는 시간을 적었다. 12자리는 8자리보다 막대가 조금 길 뿐인데 시간은 1만 년이 넘는다.

막아 줄 장치가 없는 경우를 생각해 보자. 1초에 100억 번 맞혀 볼 수 있는 기계를 가정한다. 영문 소문자 26자와 숫자 10자, 모두 36가지로 8자리를 만들면 36⁸ ≈ 2.8조 가지이고, 다 넣어 보는 데 5분이 안 걸린다. 대문자까지 쓰면 한 자리가 62가지가 되어 62⁸ ≈ 218조 가지, 약 6시간이다. 글자 종류를 늘리는 것보다 효과가 큰 것은 길이다. 같은 62가지로 12자리를 만들면 62¹² ≈ 3.2 × 10²¹가지, 1만 년이 넘는다.

길이가 하나 늘 때마다 경우의 수에 62가 곱해지기 때문이다. 더하기가 아니라 곱하기로 늘어난다. 「8자리 또는 9자리」처럼 길이를 고를 수 있게 하면 두 경우는 겹치지 않으니 합의 법칙으로 62⁸ + 62⁹를 더한다. 다만 이 계산은 아무 글자나 고르게 골랐을 때의 이야기다. 생일이나 이름처럼 사람이 고를 법한 비밀번호는 공격자가 먼저 넣어 보므로, 실제로 고를 수 있는 경우의 수가 훨씬 적다.

이어서 학습하기