콘텐츠로 건너뛰기

음성 에이전트를 위한 안전한 발신자 인증 설계

게시일
최종 업데이트

듣기이 글 오디오로 듣기

음성 에이전트는 단순한 FAQ 응답 시스템에서 계정을 변경하고, 거래를 처리하며, 민감한 고객 데이터에 액세스하는 실행형 시스템으로 빠르게 발전하고 있습니다. 이러한 변화는 중요한 과제를 제기합니다. 기존의 시각적 검증 방법이 없는 대화형 AI 시스템에서 발신자의 신원을 어떻게 인증할 수 있을까요?

음성 에이전트가 구독을 변경하거나 계정 잔액을 조회하고 환불을 시작할 수 있다면, 사람 상담센터와 동일한 수준의 엄격함으로 발신자를 인증해야 합니다. 단, 모든 과정은 음성 기반 상호작용으로 이루어집니다. 회사 정책을 따르는 사람 상담원과 달리 AI 에이전트에는 LLM의 판단에 의존하지 않는 결정론적 도구 기반 인증이 필요합니다.

이 글에서는 엔터프라이즈 배포 환경에서 Forward Deployed Engineer로 일하며 검증한 인증 패턴을 소개합니다. 임베디드 위젯을 위한 세션 기반 인증부터 전화 시스템별 방법과 OTP 검증까지 5가지 핵심 접근 방식을 살펴보고, ElevenLabs 플랫폼에서 결정론적 workflow 게이팅을 사용해 각 방식을 구현하는 방법을 설명합니다.

무엇보다 인증을 대화형 추론에 맡길 수 없는 이유를 알아봅니다. 대신 분리된 하위 에이전트, 도구 기반 검증, 인증된 사용자만 권한 작업에 도달하도록 보장하는 조건부 workflow 라우팅으로 인증을 설계해야 합니다.

요약

  • 음성 에이전트의 발신자 인증은 결정론적이고 도구 기반이어야 하며, LLM의 대화형 추론에 맡겨서는 안 됩니다.
  • 호스트 애플리케이션 인증은 기존 세션 데이터를 에이전트에 전달하므로, 이미 로그인한 사용자는 다시 인증할 필요가 없습니다.
  • 지식 기반 인증은 서버 측 도구 호출을 통해 계정 번호나 생년월일 같은 발신자 제공 정보를 백엔드 시스템의 정보와 대조해 검증합니다.
  • 전화 시스템 배포에서는 발신자 ID와 같은 시스템 동적 변수를 사용해 조용히 인증할 수 있지만, 발신자 ID는 위조되거나 공유될 수 있으므로 두 번째 인증 요소와 결합해야 합니다.
  • 일회용 코드 인증은 SMS나 이메일로 코드를 전송하고 백엔드 서비스를 통해 이를 검증합니다.

결정론적 인증을 위한 아키텍처 기반

인증된 사용자만 계정 관련 정보에 액세스하도록 하려면 ElevenLabs workflow를 통해 환경과 액세스를 엄격히 분리하는 것이 좋습니다. 인증은 항상 성공 또는 실패를 나타내는 불리언 출력을 가진 도구 호출로 구현하고, ElevenLabs workflow 빌더에서 디스패치 도구로 구성해야 합니다.

전환 조건을 도구 호출 결과에 직접 연결하면 계정 데이터에 액세스할 수 있는 하위 에이전트는 인증이 성공한 후에만 도달할 수 있으며, 인증되지 않은 사용자와 완전히 분리됩니다. 이를 통해 인증은 LLM의 결정에 맡겨지지 않고 결정론적으로 이루어지며, 신원이 검증되지 않은 상태에서 후속 노드로 진행하는 일을 방지합니다.

대안으로 전환 표현식을 신뢰할 수 있는 전환 방식으로 사용할 수 있습니다. 이러한 표현식은 도구 호출 결과를 통해 업데이트되는 동적 변수를 참조합니다.

구현 예시

Salesforce에서 사용자를 검증합니다(도구 호출). 성공하면 Salesforce에서 고객 거래 데이터를 조회하고(다른 도구 호출), 이 데이터를 사용해 고객과 소통하고 필요에 따라 다른 작업을 수행하는 하위 에이전트로 사용자를 전환합니다.

auth-flow

사용자 신원 인증 방법

이러한 인증 방법은 ElevenLabs 플랫폼에서 기본적으로 지원되지 않습니다. 인증 데이터가 저장된 CRM 또는 백엔드/데이터베이스와 통합되는 서버 측 도구를 통해 구현할 수 있습니다.

호스트 애플리케이션 인증

웹사이트에 임베드된 음성 에이전트의 경우, 호스트 애플리케이션은 에이전트/위젯을 초기화할 때 로그인 상태, 계정 ID, 세션 토큰 등의 사용자 세션 데이터를 동적 변수를 통해 전달할 수 있습니다. 이 변수들은 동일한 동적 변수를 사용해 도구 호출에 자동으로 주입되므로, 별도 인증 없이 에이전트가 통합 시스템에서 개인화된 데이터를 가져올 수 있습니다.

사용자가 이미 호스트 애플리케이션에서 검증되었기 때문에 원활한 지원 흐름을 구현할 수 있습니다. 맞춤 구성으로 설정하거나 ElevenLabs 위젯을 사용할 수 있으며, 위젯 구성에서 런타임에 변수를 전달합니다(예: <elevenlabs-convai dynamic-variables='{"user_id": "123", "account_tier": "premium"}'>).

동적 변수 문서에서 전체 설정 방법을 확인하세요.

지식 기반 인증(KBA) 

음성 에이전트가 발신자에게 계정 번호, 우편번호, 생년월일 또는 보안 질문 답변과 같은 인증 데이터를 제공하도록 요청합니다. 서버 측 도구(webhook 또는 백엔드 호출)가 이 값을 데이터베이스(CRM 또는 ID 저장소 등)와 대조해 검증합니다. 도구는 불리언 상태(is_error)와 설명 텍스트를 모두 포함하는 성공/실패 결과를 반환합니다.

결정론적 workflow 게이팅으로 이를 구현할 수 있습니다. 관련 정보를 요청한 후 도구 디스패치를 구성하고, 도구의 성공/실패 상태에 따라 분기하는 workflow 조건부 전환 엣지를 사용해 인증된 사용자를 “권한” 에이전트 노드로 라우팅합니다. 

이 접근 방식은 사기 위험 요건에 따라 정적 보안 질문과 동적 "out-of-wallet" 방식의 검증을 모두 지원합니다.

서버 도구 및 에이전트 workflow 디스패치 도구 노드 문서에서 자세한 내용을 확인하세요.

시스템 동적 변수(전화 시스템 전용)

전화 기반 대화(Twilio 또는 SIP 트렁크 사용)에서는 에이전트가 system__caller_id(발신자의 전화번호)를 포함한 전화 시스템별 시스템 변수에 자동으로 액세스할 수 있습니다. 이 변수는 대화가 시작되면 자동으로 채워집니다.

다음 두 가지 방식으로 참조할 수 있습니다.

  1. 프롬프트/메시지에서: 이중 중괄호를 사용해 {{system__caller_id}}처럼 참조하면 실제 값으로 대체됩니다.
  2. 도구 파라미터에서: 도구 파라미터가 이 변수를 사용하도록 구성하면 프롬프트에서 언급하지 않고도 조용히 인증할 수 있습니다.

예를 들어 도구가 발신자 ID를 CRM 조회 엔드포인트로 자동 전달하도록 구성할 수 있습니다. 이를 통해 에이전트는 수신 번호가 사용자 인증을 위해 등록된 고객 번호와 일치하는지 조용히 확인할 수 있습니다. 도구 호출 대신, 대화 시작 전에 실행되는 대화 초기화 webhook으로 인증을 구성할 수도 있습니다. 

보안 참고: 발신자가 등록된 번호와 다른 번호를 사용할 수 있고, 저장된 번호에 권한 없는 사람이 액세스할 수도 있으므로 발신자 ID 기반 인증에는 사전 고객 동의가 필요하거나 지식 기반 질문 같은 추가 인증 방법을 함께 사용해야 합니다.

자세한 내용은 시스템 동적 변수 및 초기화 webhook 문서를 참조하세요.

고급 지식 기반 / 보안 질문 인증

에이전트는 일련의 보안 질문을 하고 발신자가 미리 정한 개수만큼 정확히 답했을 때만 액세스를 부여하여 사용자를 인증할 수 있습니다. 에이전트가 미리 정의된 목록(예: 생년월일, 우편번호, 반려동물 이름)에서 무작위 질문을 선택하도록 프롬프트를 설정하고, 데이터베이스 도구 호출을 통해 발신자의 답변을 검증할 수 있습니다.

인증 도구는 현재 성공 횟수가 포함된 JSON 응답을 반환합니다. 도구 할당을 사용하면 이 횟수가 자동으로 추출되어 동적 변수(예: auth_success_count)에 저장 또는 업데이트됩니다. 검증에 성공할 때마다 변수 값이 증가합니다.

필요한 검증 횟수(예: 3회)에 도달하면 workflow 표현식 조건이 동적 변수 값을 확인하고 권한 있는 하위 에이전트 노드로 전환합니다. 표현식은 비교 연산자(예: auth_success_count >= 3)를 사용하여 인증 상태에 따라 결정론적으로 액세스를 제어합니다.

Expressions

엣지 및 흐름 제어 문서에서 더 많은 정보를 확인할 수 있습니다.

일회용 코드

이 방법은 SMS 또는 이메일을 통해 사용자의 기기로 일회용 코드를 보내는 보편적인 방식입니다. 사용자는 액세스 권한을 얻기 위해 인증 목적으로 해당 코드를 에이전트에 다시 전달해야 합니다.

구현 workflow를 자세히 살펴보면 다음과 같습니다.

  1. 코드 생성: 에이전트가 전용 엔드포인트로 서버 도구를 호출해 프로세스를 시작합니다. 이 작업으로 안전한 일회용 코드가 생성되고, 사용자가 선호하는 채널(SMS 또는 이메일)을 통해 전송됩니다.
  2. 사용자 프롬프트: 이후 에이전트가 사용자에게 수신한 코드를 제공하도록 요청합니다. 음성 모드에서는 사용자가 코드를 소리 내어 말하고, 이는 음성-텍스트 변환을 통해 캡처됩니다.
  3. 코드 검증: 에이전트가 두 번째 도구 호출을 사용해 사용자가 제공한 코드를 백엔드 검증 서비스로 전송합니다. 백엔드는 코드가 일치하는지, 만료되지 않았는지, 이미 사용되지 않았는지 검증합니다.
  4. Workflow 라우팅: 에이전트는 검증 응답에 따라 결과를 처리합니다. 성공: 코드가 올바르면 성공 조건을 통해 사용자가 인증 후 workflow 단계로 이동합니다. 실패: 코드가 올바르지 않으면 에이전트가 사용자에게 코드를 다시 입력하도록 요청하거나 대체 절차(예: 새 코드 전송)를 시작할 수 있습니다.

보안 고려 사항: 무차별 대입 시도를 방지하기 위해 속도 제한을 구현하고, 코드의 만료 시간은 짧게(3~5분) 설정하며, 재시도 횟수를 추적하고 제한해야 합니다. 음성 상호작용에서는 코드를 캡처할 때 음성-텍스트 변환의 정확성을 보장하도록 확인 프롬프트를 고려하세요.

안전한 음성 인증을 위한 ElevenAgents 시작하기

이러한 인증 방법은 정해진 솔루션이 아니라 유연하게 조합할 수 있는 구성 요소입니다. 구체적인 위험 프로필, 규제 요건, 사용자 경험 목표에 따라 선택해야 합니다. 고객 서비스 봇에는 거래를 처리하는 뱅킹 어시스턴트와 다른 수준의 보안이 필요합니다. 플랫폼의 유연성 덕분에 위협 변화와 요건 확대에 맞춰 보안 전략을 발전시키면서도 보호와 사용자 경험의 균형을 유지할 수 있습니다.

ElevenAgents는 앞서 설명한 결정론적 workflow 게이팅, 디스패치 도구, 전화 시스템별 변수를 제공하므로 LLM 판단에 전혀 의존하지 않는 발신자 인증을 구축할 수 있습니다.

ElevenAgents 플랫폼에서 전체 workflow 빌더를 살펴보거나, 영업팀에 문의하여 지금 첫 번째 인증 음성 에이전트 workflow 구축을 시작하세요.

안전한 발신자 신원 인증 흐름 FAQ

유사한 기사

최고 품질의 AI 오디오로 창작하세요