Password vs Passphrase
개인 컴퓨터, 서버, 데이터에 대한 접근 권한을 확인하기 위한 문자조합을 일반적으로 패스워드(Password)라고 부릅니다. 이보다는 생소한 개념이지만 유사한 역할을 수행하는 Passphrase라는 것이 있는데요. 이 둘을 대게 아래와 같이 구분짓기도 합니다.
Password: 사용자 시스템/데이터를 보호하기 위해 설정한 짧은 특수 문자열
Passphrase: 개인 키(private key)를 보호하기 위해 설정한 장문의 문자열
Password는 보통 '로그인'을 한다고 할 때의 암호를 지칭합니다. 사용자의 여러 리소스가 쉽게 탈취되지 않도록 하는 방파제 역할에 초점이 맞춰져 있습니다. 그에 반해, Passphrase는 단순히 개인 정보 보호보다는 서버와 클라이언트간의 신뢰성 확보를 중요시합니다. Passphrase는 암호화 통신에서 보다 자주 등장하는 용어로, 인증서 기반의 서버/클라이언트 통신 보안을 기존보다 한층 강화하는 용도로 쓰입니다.
인터넷뱅킹 또는 공공기관 온라인 민원처리를 하다보면, 공동/금융인증서의 소유자 확인을 위해 입력하는 암호가 소위 말하는 Passphrase에 해당된다고 볼 수 있습니다.
Passphrase를 설정하면 뭐가 좋나요?
SSL/TLS, 그리고 드물기는 하지만 간혹 SSH와 같은 통신 프로토콜은 공개키 알고리즘을 사용합니다. 통신하는 각 클라이언트들은 개인 키(private key)를 소유하고 있으며, 이 개인 키 역시 하나의 파일 형태로 존재합니다.
별다른 보안 조치가 없을 시 Private key 파일을 가진 호스트는 언제든지 서버와 연결할 수 있게 되는데요. 만약 누군가가 개인 PC에 몰래 침입한다면, 또는 해당 키 파일을 무단으로 복사하여 가져가기라도 한다면 어떤 상황이 벌어질까요?
해커는 감염된 클라이언트의 이름을 빌려 즉각 열려있는 서버에 접근할 수 있게 됩니다. 접근이 허용된 클라이언트 행세를 하며 귀중한 서버 자원에 손댈 수 있습니다. 또한, 개인 키는 암호화된 데이터를 복호화하는 데에 쓰이므로, 서버로부터 전송된 패킷을 중간에 가로채어 그 안의 내용물들을 몰래 확인하는 것도 가능합니다.
개인 키에 Passphrase가 설정되어 있다면 상황은 달라집니다. 키 파일이 유출되었더라도 Passphrase가 없으면 서버가 보낸 암호화된 데이터를 복호화할 수 없습니다. 어떻게 보면 2차 비밀번호 역할을 하는 셈이죠.
Passphrase는 웹 서버 또는 여러 클라우드 서비스(ex. AWS) 인스턴스에 접속할 때 활용되며, 일반적인 SSH 원격 터미널 접속 환경에서도 아래와 같이 Passphrase를 설정 가능합니다.