비밀번호를 8자리에서 12자리로 늘리면 얼마나 안전해질까 · 곱의 법칙
6시간이면 다 맞혀 보는 비밀번호가, 네 글자 늘면 1만 년이 걸린다
- 10⁴ 숫자 4자리 비밀번호의 경우의 수
- 6시간 영문 대소문자와 숫자 8자리(1초에 100억 번)
- 1만 년 같은 조건에서 12자리
비밀번호를 지키는 것은 결국 경우의 수다. 공격하는 쪽이 가능한 비밀번호를 하나씩 다 넣어 보는 방식이라면, 경우의 수가 클수록 오래 걸린다. 그 경우의 수는 곱의 법칙으로 센다.
길이가 한 자리 늘면 경우의 수는 더해지지 않고 곱해진다.
숫자 4자리 비밀번호는 자리마다 10가지가 있고 네 자리가 동시에 정해지므로 10 × 10 × 10 × 10 = 10,000가지다. 6자리면 100만 가지다. 휴대폰 잠금이 몇 번 틀리면 기다리게 만드는 이유가 여기 있다. 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⁹를 더한다. 다만 이 계산은 아무 글자나 고르게 골랐을 때의 이야기다. 생일이나 이름처럼 사람이 고를 법한 비밀번호는 공격자가 먼저 넣어 보므로, 실제로 고를 수 있는 경우의 수가 훨씬 적다.