계정에 대한 2단계 인증 및 API 세션 — 생성하지 않은 계정에서
텔레그램 계정을 인수할 때, 첫 1분 안에 적용되는 보호 조치가 있고 하루 동안 차단되는 조치가 있습니다. 어느 것이 어느 쪽인지는 대부분의 인수 체크리스트가 말하는 것과 정반대이며, 텔레그램은 그 이유를 자체 인터페이스 참조에 문서화해 두었습니다.
Sarah Johnson팀용으로 텔레그램 계정을 넘겨받았다고 치자. 어딘가에 옛 기기들이 로그인되어 있고, 아무도 비밀번호를 알려주지 않았으며, 게다가 스크립트가 접근해야 하는 상황이다. 흔한 조언은 먼저 기기를 정리하고 나서 비밀번호를 설정하라는 것이다.
그 순서대로 하면 첫 단계에서 막힌다. 텔레그램은 세션이 24시간 동안 로그인된 상태가 아니면 다른 세션을 로그아웃시키는 것을 허용하지 않으며, 그 사실을 오류 메시지로 알려준다. 비밀번호 변경에는 그런 제한이 없다. 그래서 모두가 되풀이하는 순서는 거꾸로였고, 이 페이지도 지금까지 거꾸로 된 버전을 싣고 있었다.
"API 로그인"은 서로 다른 세 가지를 뜻한다
먼저 짚고 넘어갈 가치가 있다. 영어 표현이 겹치기 때문에, 이 말을 검색하는 사람의 절반은 전혀 다른 걸 원한다. "telegram api login" 검색어 제안 중 다섯 개는 봇에 관한 것이고, 또 하나는 Login Widget이다.
- 봇. BotFather에서 받은 토큰을 가진 별개의 정체성이다. 계정이 아니며, 계정으로 구매할 수도 없고, 이 페이지의 내용은 봇에 적용되지 않는다.
- Login Widget. 다른 사람의 웹사이트에 있는 "Log in with Telegram" 버튼이다. 그 사이트에 로그인하게 해주는 것이다. 계정을 제어하는 것과는 아무 관련이 없다.
- API를 통해 생성된 사용자 세션. API ID와 해시, 저장된 인증 정보를 사용해 실제 계정으로 작동하는 스크립트다. 계정이 다른 사람 손으로 넘어갈 때 중요한 것이 바로 이것이고, 목록에서 API 로그인 링크를 언급할 때도 이것을 뜻한다.
우리 셸프에서 이 세 번째 의미는 그 위상이 시사하는 것보다 드물다. 이 단어는 실제 텔레그램 매물 중 극히 일부에서만 나타난다. 이 셸프의 대부분은 로그인 링크 대신 파일을 넘겨준다.
세션 기록이 실제로 담고 있는 것
계정의 모든 인증은 휴대폰에서 왔든, 데스크톱 클라이언트에서 왔든, 스크립트에서 왔든 동일한 필드를 가진 하나의 항목이다. 텔레그램이 이를 문서화해 두었고, 실제 목록을 읽는 것이 어떤 요약 표보다 유용하다.
각 항목에는 기기 모델, 플랫폼, 시스템 버전, 앱 이름과 버전, 생성 시 사용된 API ID, 생성 시각, 마지막 활동 시각, 국가와 지역이 포함된 마지막 알려진 주소가 담겨 있다. 사람들이 헷갈려 하는 부분을 설명해 주는 플래그 두 개를 알아두면 좋다:
- 국가와 지역은 주소에서 파생된다. 기기에서 가져오는 것이 아니다. 텔레그램의 자체 필드 설명에 따르면 둘 다 IP에서 결정된다. 예상치 못한 도시가 보여도 대개는 라우팅 과정의 산물이지 증거가 아니다.
- 세션이 비밀번호를 기다리는 상태일 수 있다. 세션이 아직 2단계 비밀번호를 입력하지 않았다는 뜻의 플래그가 있다. 누군가 계정에 한 발짝 들어와서 유효한 코드를 쥐고 두 번째 문 앞에서 멈춰 있는 상태, 그게 눈에 보인다는 뜻이다.
API ID 필드는 자동화에서 실용적인 역할을 한다. 어떤 항목이 어떤 스크립트에 속하는지 알려주기 때문이다. 세션을 종료하려는데 자기 도구를 끊어버리고 싶지 않을 때 중요하다.
첫 시간 안에 돌릴 수 있는 유일한 자물쇠
2단계 비밀번호 변경은 즉시 작동한다. 대기 기간이 없으며, 첫날에 할 수 있는 유일한 보호 조치다.
하지만 그걸로 누군가를 쫓아내지는 못한다. 이미 실행 중인 세션은 영향을 받지 않으며, 비밀번호를 아무리 바꿔도 제거되지 않는다. 비밀번호 변경이 하는 일은 다른 세션이 추가될 수 있는 문을 닫는 것이다. 변경 후에는 전화번호로 새로 로그인하려는 시도에 당신만 아는 비밀번호가 요구된다.
그 차이가 핵심이다. 비밀번호 변경은 계정을 깨끗하게 만들지 않는다. 청소할 수 있을 때까지 계정이 더 더러워지는 것을 막을 뿐이다.
형식에 관해서는, 이 페이지가 예전에 말했던 것 하나를 바로잡는다. 텔레그램은 이 비밀번호에 최소 길이나 문자 종류 혼합 요건을 공개하지 않는다. 예전에 이 페이지에 있던 규칙을 포함해 그런 규칙을 어디서 읽었든 그건 지어낸 것이다. 규칙이 있어서가 아니라 합리적이니까 길게 선택하라.
기기 목록이 하루를 기다려야 하는 이유
제한은 눈에 보이는 버튼 이상을 포함한다. 단일 기기 종료, 다른 모든 기기 종료, 세션 유효 기간 설정 모두 같은 오류로 24시간 동안 거부된다. 마지막 것은 텔레그램이 옛 세션을 대신 만료시켜 주는 우회로까지 막는다.
그 이유는 뒤집어 보면 타당하다. 갓 만든 세션이 다른 모든 것을 종료할 수 있다면, 가로챈 코드로 로그인한 사람이 같은 순간에 진짜 주인을 자기 계정에서 잠글 수 있다. 이 잠금은 공격자에게 하루를 쓰게 하고, 그 하루 동안 진짜 주인은 행동할 수 있다. 자기 세션은 이미 충분히 오래되어 허용되기 때문이다.
인수인계에 적용하면, 그 보호 장치가 당신을 겨누고 있다. 처음 24시간 동안 이전 보유자는 당신의 세션을 종료할 수 있고, 당신은 그들의 세션을 종료할 수 없다.
예외가 하나 있는데, 반대 방향으로 작동한다. 새 세션이 로그인하면 이미 있던 세션들이 알림을 받고 거부할 수 있다. 계정의 오래된 세션을 아직 통제하고 있다면, 그게 새 로그인을 즉시 종료하는 경로다. 명령이 새 세션이 아니라 오래된 세션에서 나오기 때문이다. 응답하지 않으면 인식되지 않은 로그인은 7일 후에 스스로 확정된다.
복구 주소가 계정의 주인을 결정한다
비밀번호보다 더 중요하고, 흔히 건너뛰는 부분이다. 읽을 수 없는 사서함을 가리키는 복구 주소가 있으면, 어떤 비밀번호를 설정하든 계정은 영구적으로 당신 것이 아니다. 그 주소가 다시 들어갈 통로이기 때문이다.
무엇을 바꾸기 전에 설정된 값을 확인하고, 그다음 당신 것으로 설정하라. 계정에 확인할 수 없는 복구 주소가 딸려 오고 판매자가 제거할 수 없다면, 그게 중요한 발견이며 보증 기간이 열려 있는 동안 문제를 제기할 가치가 있다. 여기 대부분의 텔레그램 매물에서 그 기간은 시간 단위로 측정되므로, 이 확인은 일찍 하지 않으면 아예 못 한다.
등록이나 복구가 완전히 통제하지 못하는 전화번호를 거친다면, 전용 SMS 인증 번호가 그 단계를 개인 회선과 분리해 준다.
7일 시계, 그리고 실제로 무엇이 그것을 시작하는가
비밀번호를 잃어버렸고 복구 주소도 설정되어 있지 않다면, 돌아올 길은 복구가 아니라 재설정이고, 텔레그램은 완료 전에 서버 측 7일 타이머를 돌린다. 그 7일 동안 유효한 세션을 가진 사람은 누구나 재설정을 취소할 수 있다. 지연의 목적이 바로 그것이다. 진짜 주인에게 낯선 사람이 비밀번호를 재설정하는 것을 막을 일주일을 주는 것이다.
구매자 입장에서 보면, 이것은 양날의 검이다. 당신이 시작한 재설정도 다른 누군가가 여전히 로그인되어 있으면 취소될 수 있다. 기기 목록이 비밀번호보다 더 중요한 또 다른 이유다.
자동화, 그러나 자기 회선은 끊지 말 것
스크립트의 인증은 휴대폰과 같은 목록의 항목이므로, 세션을 종료하면 스크립트도 종료된다. 봇이나 도구가 곧 정리할 세션에 의존하고 있다면, 먼저 당신의 API 자격 증명으로 교체용을 만들고 작동을 확인한 다음에 옛것을 제거하라.
대체적인 원칙은 이렇다. 자동화는 사람도 쓰는 계정이 아니라 별도 계정에 두라. 텔레그램이 그런 규칙을 공개해서가 아니라, 급하게 기기 목록을 정리해야 할 때 피해 범위를 한 가지로 만들고 싶기 때문이다.
무엇을 물려받았든, 함께 온 비밀번호는 교체할 때까지 판매자의 비밀번호로 취급하라. 이 셸프에 올라온 활성 텔레그램 계정의 절반 이상에 이미 2단계 비밀번호가 설정되어 있고 추가 비용이 없다는 사실이 그것이 무엇인지 말해 준다. 누군가 당신을 위해 추가한 기능이 아니라, 다른 누군가가 선택한 자격 증명이다. 텔레그램의 FAQ는 설정이 어디 있는지 다루지만, 인터페이스 문서에만 나오는 24시간 규칙은 다루지 않는다.