CHAP 인증에는 챌린지와 응답이라는 개념이 사용됩니다. 즉, 피어(인증자)가 호출자(피인증자)에게 자신의 ID를 증명하도록 요구합니다. 챌린지에는 인증자가 생성한 고유한 ID와 난수가 포함됩니다. 호출자는 해당 ID, 난수 및 CHAP 보안 자격 증명을 사용하여 피어에게 보낼 적절한 응답(핸드셰이크)을 생성해야 합니다.
CHAP 보안 자격 증명에는 CHAP 사용자 이름 및 CHAP "암호"가 포함됩니다. CHAP 암호는 호출자와 피어가 PPP 링크를 협상하기 전에 양쪽 모두에 알려지는 임의 문자열입니다. CHAP 보안 자격 증명은 CHAP 데이터베이스인 /etc/ppp/chap-secrets에서 구성합니다.
CHAP 데이터베이스는 /etc/ppp/chap-secrets 파일에서 구현됩니다. 인증에 성공하려면 PPP 링크 양쪽에 있는 시스템의 해당 /etc/ppp/chap-secrets 파일에 서로의 CHAP 자격 증명이 있어야 합니다.
/etc/ppp/chap-secrets 파일의 구문은 다음과 같습니다.
myclient myserver secret5748 *
매개변수의 의미는 다음과 같습니다.
호출자의 CHAP 사용자 이름입니다. 이 이름은 호출자의 UNIX 사용자 이름과 같거나 다를 수 있습니다.
원격 시스템(보통 다이얼 인 서버)의 이름입니다.
호출자의 CHAP 암호입니다.
호출자에 연결된 IP 주소입니다. IP 주소를 나타낼 때는 별표(*)를 사용하십시오.
CHAP 인증은 다음 순서대로 발생합니다.
그림 8-2 CHAP 인증 순서
통신을 시작하려고 하는 두 피어가 PPP 링크 협상 중 인증에 사용될 암호에 대해 합의를 봅니다.
두 시스템의 관리자가 암호, CHAP 사용자 이름 및 기타 CHAP 자격 증명을 해당 시스템의 /etc/ppp/chap-secrets 데이터베이스에 추가합니다.
호출자(피인증자)가 원격 피어(인증자)를 호출합니다.
인증자가 난수 및 ID를 생성하고 이 데이터를 피인증자에게 챌린지로 보냅니다.
피인증자가 해당 /etc/ppp/chap-secrets 데이터베이스에서 피어의 이름 및 암호를 조회합니다.
피인증자가 암호 및 피어의 난수 챌린지에 MD5 계산 알고리즘을 적용하여 응답을 계산합니다. 그런 다음 피인증자가 결과를 인증자에게 응답으로 보냅니다.
인증자가 해당 /etc/ppp/chap-secrets 데이터베이스에서 피인증자의 이름 및 암호를 조회합니다.
인증자가 /etc/ppp/chap-secrets에서 챌린지로 생성된 숫자와 피인증자의 암호에 MD5를 적용하여 자체 결과를 계산합니다.
인증자가 자신의 결과를 호출자의 응답과 비교합니다. 두 숫자가 같으면 피어가 호출자를 성공적으로 인증한 것이며 링크 협상이 계속됩니다. 그렇지 않으면 링크가 삭제됩니다.