S/KEY

S/KEY

S/KEY는 유닉스 같은 운영체제에 대한 인증을 위해 개발된 일회용 암호 시스템으로, 특히 장기간 암호를 입력하지 않으려는 덤블 단말기나 신뢰할 수 없는 공용 컴퓨터에서 개발되었다.사용자의 실제 비밀번호는 짧은 문자 집합과 감소 카운터를 가진 오프라인 장치에 결합되어 1회용 비밀번호를 형성한다.각각의 비밀번호는 한 번만 사용되기 때문에 비밀번호 스니퍼에게는 쓸모가 없다.

짧은 문자 집합은 카운터가 0이 될 때까지 변경되지 않기 때문에 사용자가 휴대할 수 있는 1회용 비밀번호 목록을 순서대로 작성할 수 있다.또는 사용자는 암호, 문자 및 원하는 카운터 값을 로컬 계산기에 표시하여 네트워크를 통해 전송될 수 있는 적절한 일회성 암호를 생성할 수 있다.후자의 형태는 더 일반적이며 실제로 도전-응답 인증에 해당한다.

S/KEY는 리눅스(플러그형 인증 모듈), OpenBSD, NetBSDFreeBSD에서 지원되며, 일반적인 오픈 소스 구현을 사용하여 다른 시스템에서 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]

암호 생성

서버는 인증을 수행할 컴퓨터 입니다.

S/KEY 암호 생성
  1. 이 단계는 비밀키 W로 시작한다.이 비밀은 사용자가 제공하거나 컴퓨터에 의해 생성될 수 있다.어느 쪽이든 이 비밀이 공개되면 S/KEY의 보안이 위태로워진다.
  2. 암호해시함수HWn번 적용되어 n개의 일회용 암호로 구성된 해시체인을 생성한다.암호는 암호해시함수를 적용한 결과물이다.
    H(W), H(H(W), ..., Hn(W).
  3. 초기 비밀 W는 폐기된다.
  4. 사용자에게 n개의 비밀번호가 제공되며, 역순으로 출력된다.
    Hn(W), Hn−1(W), ..., H(H(W), H(W)), H(W)이다.
  5. 암호 H(W), H(H(W), ..., Hn−1(W)는 서버에서 폐기된다.사용자 목록의 맨 위에 있는 암호 Hn(W)만 서버에 저장된다.

인증

S/KEY 인증

패스워드 생성 후, 사용자는 패스워드가 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]

참고 항목

참조

  1. ^ "OpenSSH Project History". OpenSSH. Retrieved 2019-12-05.
  2. ^ "Global Multi-factor Authentication Market 2017-2021". TechNavio. August 2017. Retrieved 2019-12-05.
  3. ^ D. 냠냠, J.서, S. 엄, P.Lee, "거의 최적 복잡성을 가진 단층 프랙탈 해시 체인 트래버설," 암호학의 주제-CT-RSA 2009, 페이지 325–339, 2009.[1]
  4. ^ Samuel, Michael (2011-07-01). "S/Key Dungeon Attack". Retrieved 2019-12-05.
  5. ^ 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.

외부 링크