챌린지 응답 인증
Challenge–response authentication컴퓨터 보안에서 챌린지-응답 인증은 한 쪽이 질문("챌린지")을 제시하고 다른 쪽이 유효한 답변("응답")을 제공해야 [1]인증되는 프로토콜 패밀리입니다.
Challenge-Response Protocol의 가장 간단한 예는 비밀번호 인증입니다.이 경우 비밀번호가 요구되며 유효한 응답은 올바른 비밀번호입니다.
패스워드 인증을 도청할 수 있는 상대는 대행 수신한 패스워드를 재사용하여 자신을 인증할 수 있습니다.한 가지 해결책은 여러 개의 비밀번호를 발급하는 것입니다.각 패스워드에 ID 마크가 붙어 있습니다.검증자는 임의의 패스워드를 요구할 수 있습니다.프로바이더는 그 ID에 대해 올바른 패스워드를 가지고 있어야 합니다.패스워드가 개별적으로 선택되었다고 가정하면, 1개의 챌린지/응답 메시지쌍을 대행 수신한 상대는, 다른 타이밍에 다른 챌린지에 도움이 되는 힌트를 얻을 수 없습니다.
예를 들어 다른 통신 보안 방식을 사용할 수 없는 경우 미군은 AKAC-1553 TRIAD 숫자 암호를 사용하여 일부 통신을 인증 및 암호화합니다.TRIAD에는 검증자가 랜덤으로 선택하는3글자 챌린지코드 리스트와 그에 대한 랜덤3글자 응답이 포함됩니다.보안을 강화하기 위해 각 코드세트는 특정 기간(통상 24시간) 동안만 유효합니다.
보다 흥미로운 질문-응답 기법은 다음과 같습니다.Bob이 일부 리소스에 대한 액세스를 제어하고 있다고 가정합니다.앨리스는 입장권을 찾아 함께 온다.밥은 도전장을 던집니다. 아마도 "52w72y"입니다.앨리스는 밥이 낸 도전에 "적합한" 하나의 문자열로 응답해야 합니다."적합"은 밥과 앨리스가 합의한 알고리즘에 의해 결정됩니다(정답은 "63x83z"만큼 단순할 수 있으며, 알고리즘은 시저 암호를 사용하여 챌린지의 각 문자를 변경합니다).실제 환경에서는 알고리즘이 훨씬 복잡해집니다.)밥은 매번 다른 도전을 하기 때문에 (앨리스와 밥 사이에 사용되는 통신수단에 의해 '숨겨지지 않는다'고 해도) 이전의 올바른 응답을 아는 것은 아무 소용이 없다.
기타 비암호화 프로토콜
질문-응답 프로토콜은 비밀 값에 대한 지식 이외의 것을 주장하기 위해서도 사용된다.예를 들어, CAPTCHA는 튜링 테스트의 변형으로, 웹 또는 모바일 애플리케이션의 뷰어가 실제 사람인지 판단하기 위한 것입니다.초기 CAPTCHA에서 시청자에게 전송된 과제는 일부 텍스트의 왜곡된 이미지였고 시청자는 해당 텍스트를 입력함으로써 응답했습니다.이 왜곡은 자동화된 광학 문자 인식(OCR)을 어렵게 만들고 컴퓨터 프로그램이 사람으로 통하지 않도록 하기 위해 고안되었다.그러나 OCR의 발전으로 인해 CAPTCHA는 현재 객체 검출 [2]과제에 보다 일반적으로 기초하고 있습니다.
암호화 기술
비암호화 인증은 일반적으로 인터넷 이전에는 적절했습니다.비밀번호를 요구하는 시스템이 실제로 사용자가 액세스하려는 시스템인지 확인할 수 있었고, 비밀번호를 입력하기 위해 통신채널을 도청하는 사람이 아무도 없을 가능성이 높았습니다.안전하지 않은 채널 문제에 대처하려면 보다 정교한 접근이 필요합니다.많은 암호화 솔루션에는 쌍방향 인증이 포함되어 있습니다.이 경우 사용자와 시스템은 서로 공유 비밀(패스워드)을 알고 있음을 확신해야 합니다.이 비밀은 도청자가 잠복해 있을 가능성이 있는 통신 채널을 통해 클리어 전송되지 않습니다.
이를 위해서는 패스워드를 암호화 키로 사용하여 랜덤하게 생성된 정보를 챌린지로 전송해야 합니다.그 결과, 다른 한쪽 끝은 마찬가지로 암호화된 값을 응답으로 반환해야 합니다.이것은 원래 제공된 정보의 미리 정해진 함수이기 때문에 챌린지를 복호화할 수 있었음을 증명합니다.예를 들어 Kerberos에서는 챌린지는 암호화된 정수N인 반면 응답은 암호화된 정수N + 1로, 상대방이 정수N을 복호화할 수 있었음을 증명합니다.패스워드 및 랜덤챌린지 값에 해시함수를 적용하여 응답값을 작성할 수도 있습니다.또 다른 변형은 확률론적 모델을 사용하여 모델 [3]입력에 따라 조정된 무작위 난제를 제공한다.
이러한 암호화 또는 해시 교환에서는 도청자에게 직접 패스워드가 공개되지 않습니다.다만, 사전 공격 또는 무차별 공격을 사용하여 도청자가 패스워드를 추측할 수 있도록 충분한 정보를 제공할 수 있습니다.각 교환에서 랜덤하게 생성된 정보(및 응답이 챌린지와 다른 경우)를 사용하면 리플레이 공격의 가능성을 방지할 수 있습니다.이 공격에서는 악의적인 중개자는 단순히 교환된 데이터를 기록하고 나중에 재발송신하여 한쪽 끝을 새로운 접속 시도를 인증했다고 착각합니다.pt를 다른 쪽과 비교합니다.
인증 프로토콜은 일반적으로 모든 과제와 응답 시퀀스가 고유함을 보장하기 위해 암호화 난스를 사용합니다.이것에 의해, 이후의 재생 공격에 의한 도청으로부터 보호됩니다.진정한 난스를 실장하는 것이 실용적이지 않은 경우, 강력한 암호화 보안 의사 난수 생성기와 암호화 해시 함수는 여러 번 발생할 가능성이 매우 낮은 문제를 일으킬 수 있습니다.시간 기반 난스를 사용하지 않는 것이 중요할 수 있습니다.다른 시간대에 있는 서버와 부정확한 클럭을 가진 서버의 성능이 저하될 수 있기 때문입니다.응용 프로그램이 지연 메시지 공격에 취약한 경우 시간 기반 난스 및 동기 클럭을 사용하는 것도 중요합니다.이 공격은 공격자가 송신지가 수신처에 도달하는 것을 차단한 상태에서 복사를 하여 선택한 지연 후에 캡처된 전송을 재생할 수 있도록 하는 경우에 발생합니다.이것은 무선 채널에서 쉽게 실행할 수 있습니다.시간 기반 난스를 사용하여 공격자가 메시지를 재발송하는 것을 제한할 수 있지만 유효기간이 1초 미만으로 제한되어 응용 프로그램에 영향을 주지 않기 때문에 공격이 완화됩니다.
상호 인증은 챌린지/응답 핸드쉐이크를 사용하여 양방향으로 실행됩니다.서버는 클라이언트가 비밀을 알고 있는지 확인하고 클라이언트는 실제 서버를 가장한 부정 서버로부터 비밀을 알고 있는지 확인합니다.
챌린지-리스폰스 인증은 암호화용 세션키 교환 문제를 해결하는 데 도움이 됩니다.키 파생 함수를 사용하여 챌린지 값과 암호를 결합하여 세션에 대해 예측할 수 없는 암호 키를 생성할 수 있습니다.공격자는 비밀을 모르면 챌린지에서 세션키를 취득할 수 없기 때문에 man-in-the-middle 공격에 특히 효과적입니다.
상호 인증 시퀀스의 간단한 예
- 서버가 클라이언트에 고유한 챌린지 값 sc를 송신합니다.
- 클라이언트가 고유한 챌린지 값 cc를 서버로 전송
- 서버가 sr = 해시(cc + secret)를 계산하여 클라이언트에 송신합니다.
- 클라이언트가 cr = 해시(sc + secret)를 계산하여 서버로 전송합니다.
- 서버는 cr의 예상값을 계산하여 클라이언트가 올바르게 응답했는지 확인합니다.
- 클라이언트는 sr의 예상값을 계산하여 서버가 올바르게 응답하는지 확인합니다.
어디에
- sc는 서버에서 생성된 과제입니다.
- cc는 클라이언트가 생성하는 챌린지입니다.
- cr은 클라이언트 응답입니다.
- sr은 서버 응답입니다.
패스워드 스토리지
패스워드의 저장을 피하기 위해 일부 운영체제(예: Unix 타입)에서는 패스워드 자체를 저장하지 않고 패스워드의 해시를 저장합니다.인증 시 시스템은 입력한 비밀번호의 해시가 비밀번호 데이터베이스에 저장된 해시인지 확인만 하면 됩니다.이로 인해 침입자는 패스워드 자체가 저장되지 않고 특정 해시에 일치하는 패스워드를 판별하는 것이 매우 어려워지기 때문에 패스워드를 취득하기가 더욱 어려워집니다.단, 이 경우 클라이언트와 서버 모두 공유 비밀을 가져야 하는 (전부는 아니지만) 많은 챌린지 응답 알고리즘에 문제가 발생합니다.패스워드 자체는 저장되지 않기 때문에 챌린지 응답 알고리즘에서는 보통 패스워드 자체가 아닌 패스워드의 해시를 시크릿으로 사용해야 합니다.이 경우 침입자는 비밀번호가 아닌 실제 해시를 사용할 수 있습니다.이로 인해 저장된 해시는 실제 비밀번호와 동일하게 민감해집니다.SCRAM은 이 문제를 회피하는 챌린지 응답 알고리즘입니다.
예
보다 고도의 챌린지-리스폰스 알고리즘의 예는 다음과 같습니다.
- 제로지식 패스워드 프루프 및 키 어그리먼트 시스템(SRP(Secure Remote Password) 등)
- Challenge-Handshake Authentication Protocol(CHAP) ( RFC1994년)
- CRAM-MD5, OCRA: 선서 챌린지 리스폰스 알고리즘(RFC 6287)
- Saluted Challenge Response Authentication Mechanism(SCRAM)(RFC 5802)
- RSA를 기반으로 한 SSH의 챌린지-리스폰스 시스템 [1]
CAPTCHA를 스팸봇을 [4]차단하는 챌린지/리스폰스 인증의 일종으로 간주하는 사람도 있습니다.
「 」를 참조해 주세요.

- 챌린지 핸드쉐이크 인증 프로토콜
- 챌린지 대응 스팸 필터링
- CRAM-MD5
- 암호화 해시 함수
- 암호화 난스
- 케르베로스
- Otway-Rees 프로토콜
- 니덤-슈뢰더 프로토콜
- 광구 개구리 프로토콜
- 비밀번호 인증 키 계약
- Salted Challenge Response 인증 메커니즘
- 스컬
- 거리 경계 프로토콜
- 반사 공격
- 리플레이 공격
- 중간자 공격
- WebAuthn
레퍼런스
- ^ Henk C.A. van Tilborg; Sushil Jajodia (8 July 2014). Encyclopedia of Cryptography and Security. Springer Science & Business Media. ISBN 978-1-4419-5906-5.
- ^ https://www.hcaptcha.com/post/humanity-verification-the-first-3-000-years
- ^ Ahmed, Ibrahim H.; Hanna, Josiah P.; Fosong, Elliot; Albrecht, Stefano V. (2021). "Towards Quantum-Secure Authentication and Key Agreement via Abstract Multi-Agent Interaction". Advances in Practical Applications of Agents, Multi-Agent Systems, and Social Good. The PAAMS Collection. Lecture Notes in Computer Science. 12946 (19): 14–26. doi:10.1007/978-3-030-85739-4. ISBN 978-3-030-85738-7. S2CID 237611496.
- ^ "도전 응답 인증"