요약

  • RFC 972는 채택을 선택한 ARPA 인터넷 호스트가 여덟 글자짜리 발음 가능한 후보 여섯 개를 주도록 제안했다. 사용자는 하나를 고르거나 다음 묶음을 요청할 수 있었다.
  • 후보가 겹치지 않을지는 초기 난수 씨앗에 크게 달렸다. 문서는 시스템 전체의 씨앗을 요청마다 갱신하라고 권했고, 시각만 씨앗으로 쓰는 방식을 거부했다. TCP와 UDP 모두 129번 포트를 쓴다.

1986년의 터미널 앞에 앉았다고 해 보자. 새 계정에 쓸 암호를 정해야 하는데, 떠오르는 말은 내 이름이나 사전에 있을 법한 단어뿐이다. 그때 다른 컴퓨터가 여섯 개를 쓱 내민다. 입으로 읽을 수 있는 것을 고르거나, 마음에 안 들면 여섯 개를 다시 달라고 하면 된다. F. Wancho가 1986년 1월에 낸 Password Generator Protocol은 이처럼 인간에게 제법 상냥한 계산기였다. 다만 주방에서 같은 반죽을 계속 꺼낸다면 메뉴가 아무리 그럴듯해도 곤란하다.

관리자의 고민은 두 방향에서 왔다. 사람이 직접 만든 로그인 암호는 쉽게 맞힐 수 있었다. 사전 단어를 걸러 내는 사이트도 있었고, 임의 문자열을 만드는 곳도 있었다. 후자는 발음하기 어려워 기억에 남지 않을 수 있었고, 주기가 짧은 의사난수 생성기는 후보의 다양성을 깎았다. Wancho에 따르면 관련 알고리즘은 소수의 인터넷 사이트에서 몇 년 동안 쓰였다. 이번 문서는 원하는 호스트가 사용할 네트워크 서비스를 제안한 것으로, 그 소규모 경험이 인터넷 전체의 도입 통계는 아니다.

서버가 내놓는 결과는 정확히 여섯 개다. 각 후보는 여덟 글자이며 CRLF로 구분된다. 다단계 알고리즘이 어느 정도 발음할 만한 소리를 만들고, 관리자가 살펴볼 수 있는 FORTRAN-77 구현도 언급된다. 사람은 받은 목록에서 고르거나 새 목록을 청한다. 기억의 부담을 줄이는 선택권이다. 목록을 생성한 내부 상태까지 사람이 볼 수 있는 것은 아니다.

그 상태가 난수 씨앗이다. 문서는 생성한 단어의 고유성이 시작 씨앗의 무작위성에 크게 좌우된다고 못 박았다. 하루 중 시간을 씨앗으로 삼는 것은 받아들일 수 없다고 했다. 시스템 전체가 하나의 씨앗을 갖고 접근할 때마다 갱신하며 32비트를 넘는 값으로 저장하는 방식을 바랐다. 화면에 뜬 여섯 단어가 귀에 잘 들어온다는 사실만으로 씨앗이 제대로 앞으로 갔는지는 알 수 없다.

네트워크 대화는 짧다. TCP 129번 포트에서는 접속이 성립하자 여섯 단어를 보내고 서버가 연결을 닫는다. 문답은 없다. UDP 129번 포트에서는 데이터그램을 받으면 목록을 실은 데이터그램으로 답한다. 무뚝뚝한 서비스다. 손님에게 여섯 장을 건네자마자 셔터를 내린다. 문서는 여러 사이트가 서비스를 제공해 하나를 무작위로 고르고, 장애가 나면 예비 사이트로 넘어가는 그림도 그렸다. 셔터가 내려간 집 대신 옆집으로 가면, 이번에는 그 집 운영자가 돌보는 씨앗에서 목록이 나온다.

RFC 편집부 기록의 발행 시점은 1986년 1월이다. 두 쪽짜리 원문은 실제 설치 대수도, 각 현장의 씨앗 품질도 세지 않는다. 대신 역할을 또렷하게 나눈다. 사람은 외울 단어를 고른다. 알고리즘은 후보를 만든다. 운영자는 다음 후보를 낳을 상태를 지킨다. 여섯 칸짜리 투표용지는 유권자가 받기 전에 이미 작성돼 있었다.