S/KEY
S/KEYS/KEY는 유닉스 같은 운영체제에 대한 인증을 위해 개발된 일회용 암호 시스템으로, 특히 장기간 암호를 입력하지 않으려는 덤블 단말기나 신뢰할 수 없는 공용 컴퓨터에서 개발되었다.사용자의 실제 비밀번호는 짧은 문자 집합과 감소 카운터를 가진 오프라인 장치에 결합되어 1회용 비밀번호를 형성한다.각각의 비밀번호는 한 번만 사용되기 때문에 비밀번호 스니퍼에게는 쓸모가 없다.
짧은 문자 집합은 카운터가 0이 될 때까지 변경되지 않기 때문에 사용자가 휴대할 수 있는 1회용 비밀번호 목록을 순서대로 작성할 수 있다.또는 사용자는 암호, 문자 및 원하는 카운터 값을 로컬 계산기에 표시하여 네트워크를 통해 전송될 수 있는 적절한 일회성 암호를 생성할 수 있다.후자의 형태는 더 일반적이며 실제로 도전-응답 인증에 해당한다.
S/KEY는 리눅스(플러그형 인증 모듈), OpenBSD, NetBSD 및 FreeBSD에서 지원되며, 일반적인 오픈 소스 구현을 사용하여 다른 시스템에서 S/KEY를 사용할 수 있다.또한 OpenSSH는 1999년 12월 1일에 출시된 OpenSSH 1.2.2 버전 이후 S/KEY를 구현한다.[1]한 가지 일반적인 구현을 OPIE라고 한다.S/KEY는 Telcordia Technologies의 상표로, 이전에는 Bell Communications Research(벨코어)로 알려져 있었다.
S/KEY는 작가 레슬리 램포트(Leslie Lamport)의 이름을 따서 램포트의 계략이라고도 한다.1980년대 후반 닐 할러, 필 칸, 존 월든이 벨코어에서 개발했다.공개키 암호화에 대한 기본 특허가 만료되고 SSH를 실행하는 노트북 컴퓨터와 암호뿐만 아니라 전체 세션을 확보할 수 있는 기타 암호 프로토콜이 널리 사용되면서 S/KEY는 불용에 빠져들고 있다.[citation needed]그에 비해 2단계 인증을 구현하는 체계가 점점 더 많이 사용되고 있다.[2]
암호 생성
서버는 인증을 수행할 컴퓨터 입니다.
- 이 단계는 비밀키 W로 시작한다.이 비밀은 사용자가 제공하거나 컴퓨터에 의해 생성될 수 있다.어느 쪽이든 이 비밀이 공개되면 S/KEY의 보안이 위태로워진다.
- 암호해시함수H는 W에 n번 적용되어 n개의 일회용 암호로 구성된 해시체인을 생성한다.암호는 암호해시함수를 적용한 결과물이다.
- H(W), H(H(W), ..., Hn(W).
- 초기 비밀 W는 폐기된다.
- 사용자에게 n개의 비밀번호가 제공되며, 역순으로 출력된다.
- Hn(W), Hn−1(W), ..., H(H(W), H(W)), H(W)이다.
- 암호 H(W), H(H(W), ..., Hn−1(W)는 서버에서 폐기된다.사용자 목록의 맨 위에 있는 암호 Hn(W)만 서버에 저장된다.
인증
패스워드 생성 후, 사용자는 패스워드가 n개인 종이를 가지고 있다.n이 매우 크면, 모든 n개의 비밀번호를 저장하거나 H(W)에서 주어진 비밀번호를 계산하는 것이 비효율적이 된다. ⌉ 단계별 해시 계산만을 사용하여 필요한순서대로 를 효율적으로하는 있다.[3]
보다 이상적으로, 비록 실제로는 덜 보편적이긴 하지만, 사용자는 필요한 해시의 암호, 염분 및 반복 횟수를 고려하여 필요한 암호를 재생성할 수 있는 작고, 휴대성이 좋고, 보안이 확보되지 않은 비네트워크 컴퓨팅 장치를 휴대할 수 있으며, 그 중 후자는 인증을 요청하는 서버에 의해 편리하게 제공된다.로그인을 위한 cation
어쨌든 첫 번째 비밀번호는 서버가 저장한 것과 같은 비밀번호는 될 것이다.이 첫 번째 비밀번호는 인증에 사용되지 않으며(사용자는 종이 위에 있는 이 비밀번호를 긁어내야 한다), 두 번째 비밀번호는 대신 사용될 것이다.
- 사용자는 목록에 있는 두 번째 비밀번호를 서버에 제공하고 그 비밀번호를 긁어낸다.
- 서버가 H()를 계산하려고 시도함pwd), 여기서 pwd는 제공된 암호다.H(pwd)가 첫 번째 암호(서버가 저장한 암호)를 생성하면 인증이 성공한다.그러면 서버는 pwd를 현재 참조로 저장한다.
이후 인증을 위해 사용자는 .(인쇄 목록의 마지막 비밀번호인 비밀번호는n 서버가 생성한 첫 번째 비밀번호인 H(W)이며, 여기서 W는 초기 비밀번호의 비밀번호는 H(W)이다.서버는 H(암호i)를 계산하고 그 결과를 서버에 참조로 저장된 암호와i−1 비교한다.
보안
S/KEY의 보안은 암호해시함수의 역전의 어려움에 의존한다.공격자가 성공적인 인증확인을 위해 사용된 암호를 가까스로 손에 넣었다고 가정해 보십시오.만약 이것이 비밀번호라면i, 각각의 비밀번호는 한 번만 사용할 수 있기 때문에, 이 비밀번호는 이미 이후의 인증에 쓸모가 없다.다음 인증에는 이 암호가 사용될 것이기 때문에 공격자가 암호를i−1 알아내는 것이 흥미로울 것이다.
그러나 이를 위해서는 암호(Hi(암호i−1)=암호i)를 이용하여i−1 암호를 생성한 해시함수를 뒤집어야 하는데, 이는 현재의 암호해시함수로는 극히 어려운 것이다.
그럼에도 불구하고 S/KEY는 혼자서 사용하면 중간 공격의 남자에게 취약하다.또한 공격자의 소프트웨어가 암호의 첫 번째 N - 1 문자(N은 암호 길이와 같음)를 배우기 위해 네트워크를 스니핑하고, 서버에 대한 자체 TCP 세션을 설정하며, 성공할 때까지 연속적으로 N번째 위치에서 유효한 모든 문자를 시도하는 등 특정 레이스 조건에 취약하다.이러한 유형의 취약성은 ssh, SSL, SPKM 또는 기타 암호화된 전송 계층을 사용하여 방지할 수 있다.
S/KEY의 각 반복에는 소금이나 카운트가 포함되어 있지 않기 때문에, 초기 비밀번호를 어기지 않고 직접 충돌을 찾아내는 것이 실현 가능하다.이것은 2의64 복잡성을 가지고 있는데, 같은 양의 공간으로 미리 계산할 수 있다.공간 복잡성은 값 체인을 저장하여 최적화할 수 있지만, 충돌은 특히 긴 체인의 경우 이 방법의 적용 범위를 줄일 수 있다.[4]
S/KEY 데이터베이스에 대한 접근 권한을 가진 사람은 2의64 복잡성으로 이들 모두를 병렬로 파괴할 수 있다.원래 암호를 얻지 못하더라도 각 사용자에 대한 유효한 자격 증명을 찾을 수 있을 것이다.그런 점에서 강력하고 독특한 패스워드의 무염 64비트 해시를 저장하는 것과 비슷하다.
S/KEY 프로토콜은 반복될 수 있다.S/KEY 체인에 그러한 루프가 생성되었다면 공격자는 원래 값을 찾지 않고도, 그리고 가능한 한 유효한 사용자를 넘어뜨리지 않고도 사용자 키를 사용할 수 있었다.이것의 병리학적 경우는 스스로 해쉬하는 OTP가 될 것이다.
사용성
내부적으로 S/KEY는 64비트 숫자를 사용한다.인간의 사용적합성을 위해, 각 숫자는 공개적으로 접근할 수 있는 2048단어 사전에서 각각 1~4자씩의 6개의 짧은 단어로 매핑된다.예를 들어 64비트 숫자 맵 1개를 "Roy HART Ski FAIL YEGHY NECT YELL"에 표시하십시오.[5]
참고 항목
- OTPW
- OPIE 인증 시스템
- PGP 생체인식 단어 목록은 각 단어가 8비트를 나타내는 256개의 단어 목록을 사용한다.
참조
- ^ "OpenSSH Project History". OpenSSH. Retrieved 2019-12-05.
- ^ "Global Multi-factor Authentication Market 2017-2021". TechNavio. August 2017. Retrieved 2019-12-05.
- ^ D. 냠냠, J.서, S. 엄, P.Lee, "거의 최적 복잡성을 가진 단층 프랙탈 해시 체인 트래버설," 암호학의 주제-CT-RSA 2009, 페이지 325–339, 2009.[1]
- ^ Samuel, Michael (2011-07-01). "S/Key Dungeon Attack". Retrieved 2019-12-05.
- ^ Haller, Neil; Metz, Craig; Nesser II, Philip J.; Straw, Mike. "Appendix D: Dictionary for Converting Between 6-Word and Binary Formats". A One-Time Password System. IETF.
외부 링크
- S/KEY 일회용 암호 시스템(RFC 1760)
- 일회용 암호 시스템(RFC 2289)
- jsotp: JavaScript OTP & S/Key Calculator
- 시스템 소개