새 계정 만들 때마다 비밀번호 고민이다. 8자 이상, 대문자 포함, 특수문자 포함... 조건 맞추려고 이것저것 시도하다가 결국 기존 비밀번호에 숫자 하나만 바꿔서 쓴 적 많다. 근데 이러면 보안에 취약하다.
직접 만드는 비밀번호가 왜 위험한가
사람이 만드는 비밀번호는 패턴이 있다. 이름+생년월일, 키보드 연속키(qwerty, 1234), 기억하기 쉬운 단어 조합. 해커들은 이런 패턴을 먼저 시도한다.
비밀번호 생성기로 만든 랜덤 비밀번호는 패턴이 없다. 완전히 무작위라서 예측이 불가능하다. "xK9#mPq2$vL5" 같은 걸 사람이 직접 생각해내기는 어렵다.
어떤 조건으로 만들어야 하나
강력한 비밀번호의 조건:
- 최소 12자 이상 (길수록 좋다)
- 대문자, 소문자 혼합
- 숫자 포함
- 특수문자(!@#$%^&*) 포함
8자짜리 비밀번호는 최신 컴퓨터로 몇 시간이면 뚫린다. 12자 이상이면 수십 년 걸린다. 암호 생성 할 때 길이를 12자 이상으로 설정하는 게 좋다.
생성기에서 조건을 직접 선택할 수 있다
보안 비밀번호 만들 때 원하는 조건만 선택할 수 있다. 사이트마다 요구 조건이 다르니까:
- 대문자 포함/제외
- 소문자 포함/제외
- 숫자 포함/제외
- 특수문자 포함/제외
- 길이 조절 (8~64자)
어떤 사이트는 특수문자 중 일부만 허용하기도 한다. 그럴 땐 특수문자 비밀번호 옵션을 끄고 생성하면 된다.
강도 표시도 나온다
생성된 비밀번호가 얼마나 강력한지 비밀번호 강도 확인으로 바로 알 수 있다. 약함/보통/강함/매우 강함으로 표시된다. 매우 강함이 나올 때까지 조건을 조절하면 된다.
만든 비밀번호는 어떻게 관리하나
패스워드 생성해서 쓰면 기억하기 어렵다는 문제가 있다. 랜덤 문자열이니까 당연하다. 그래서 비밀번호 관리자(1Password, Bitwarden 등)를 같이 쓰는 게 좋다.
브라우저에 저장해두는 것도 방법이다. 어차피 기억 못 할 거, 자동 입력 쓰면 된다.
사이트마다 다른 비밀번호 써야 한다
같은 비밀번호를 여러 사이트에서 쓰면 하나 뚫리면 다 뚫린다. 비밀번호 만들기로 사이트마다 다른 비밀번호를 생성해서 쓰자.
생성기에서 최근 8개 생성 기록이 로컬에 저장되니까, 여러 개 만들 때 참고할 수 있다. 물론 중요한 비밀번호는 별도로 안전하게 보관해야 한다.
암호학적으로 안전한 난수를 쓴다
안전한 비밀번호 생성기는 crypto.getRandomValues() API를 사용한다. 이건 암호학적으로 안전한 난수 생성기(CSPRNG)다. 예측이 불가능한 진짜 랜덤 값을 만든다.
Math.random() 같은 일반 난수는 보안용으로 쓰면 안 된다. 자동 비밀번호 생성 도구를 쓸 때 이런 기술적인 부분도 확인하면 좋다.
정리
비밀번호 고민될 때 비밀번호 생성기 쓰면 된다. 12자 이상, 대소문자+숫자+특수문자 조합으로 만들고, 사이트마다 다른 비밀번호를 쓰면 보안이 훨씬 강해진다.