6. PKI - SSH 사용자 인증

7727 단어 PKI

6. PKI - SSH 사용자 인증

  • 1. 공개 키 인증
  • 1 클라이언트가 서버에 공개 키 검증 요청을 보냅니다
  • 1.2 서버에서 클라이언트에게 공개 키 검증 결과를 보냅니다
  • 1.3 클라이언트가 서버에 인증 요청을 보냅니다
  • 1.4 서버에서 공개 키와 서명 검사를 진행한다
  • 2. 암호 인증
  • 2.1 클라이언트가 서버에 암호 인증 요청을 보냅니다
  • 2.2 서버가 암호 인증 결과를 클라이언트에게 되돌려줍니다
  • 2.3 클라이언트가 서버에 암호 변경 요청을 보냅니다
  • 2.4 서버에서 요청을 처리하고 처리 결과를 되돌려줍니다
  • 3. 호스트 인증
  • 3.1 클라이언트가 호스트 인증 요청을 서버에 보냅니다
  • 3.2 서버는 클라이언트에게 인증 결과를 보냅니다
  • 참고

  • Secure Shell(보안 케이스 프로토콜, 약칭 SSH)은 암호화된 네트워크 전송 프로토콜로 안전하지 않은 네트워크에서 네트워크 서비스에 안전한 전송 환경을 제공할 수 있다.SSH는 네트워크에 보안 채널을 만들어 SSH 클라이언트와 서버 간의 연결을 실현합니다.SSH의 가장 일반적인 용도는 원격 로그인 시스템이다. 사람들은 일반적으로 SSH를 이용하여 명령줄 인터페이스와 원격 실행 명령을 전송한다.
    SSH를 사용하여 원격 로그인을 하는 것은 주로 두 단계를 거치는데 첫 번째 단계는 안전 채널의 구축이고 두 번째 단계는 사용자 인증이다.
    1단계 소개는 참고할 수 있습니다.PKI - SSH가 보안 채널을 구축하는 과정입니다.
    2단계 사용자 인증은 공개 키 인증, 암호 인증과 호스트 인증 세 가지 인증 방식을 지원한다.

    1. 공개 키 인증


    공개 키 인증 절차는 다음과 같습니다.

    1.1 클라이언트가 서버에 공개 키 검증 요청 보내기


    여기에는username, 서비스name, 인증방식'publickey', 키 알고리즘 이름, 키 내용(인증서 가능) 등이 포함되어 있다.그 중에서 공개 키 알고리즘의 이름은 키 교환 시 알고리즘의 제한을 받지 않습니다.
    byte      SSH_MSG_USERAUTH_REQUEST
    string    user name in ISO-10646 UTF-8 encoding [RFC3629]
    string    service name in US-ASCII
    string    "publickey"
    boolean   FALSE
    string    public key algorithm name
    string    public key blob
    

    1.2 서버에서 클라이언트에게 공개 키 검증 결과 보내기


    서버가 메시지를 받은 후 검사를 하고 서버가 클라이언트의 공개 키 알고리즘을 지원하지 않으면 인증 요청을 거부합니다.인증이 사용자 인증 공개 키 OK 메시지를 클라이언트에게 반환하는 경우
    byte      SSH_MSG_USERAUTH_PK_OK
    string    public key algorithm name from the request
    string    public key blob from the request
    

    인증에 실패하면 사용자 인증에 실패한 메시지를 되돌려줍니다.
    byte         SSH_MSG_USERAUTH_FAILURE
    name-list    authentications that can continue
    boolean      partial success
    

    1.3 클라이언트가 서버에 인증 요청 보내기


    클라이언트는 서버의 공개 키 검증 결과를 받았든 안 받았든 인증 요청을 서버에 직접 보냅니다.다음은 패키지 발송 내용입니다.
    byte      SSH_MSG_USERAUTH_REQUEST
    string    user name
    string    service name
    string    "publickey"
    boolean   TRUE
    string    public key algorithm name
    string    public key to be used for authentication
    string    signature
    

    공개 키 검증 요청에 비해 서명 정보가 많아졌습니다.서명은 인증 키에 대응하는 개인 키를 사용하고 서명은 다음과 같은 내용, 다음 순서를 바탕으로 한다.
    string    session identifier
    byte      SSH_MSG_USERAUTH_REQUEST
    string    user name
    string    service name
    string    "publickey"
    boolean   TRUE
    string    public key algorithm name
    string    public key to be used for authentication
    

    1.4 서버에서 공개 키 및 서명 확인


    서버는 먼저 공개 키를 인증하고 공개 키 인증이 통과되면 이 공개 키를 이용하여 서명을 검증합니다.둘 다 검증이 통과되면 공개 키 인증이 성공했다고 간주됩니다.서버에서 인증 성공 메시지를 클라이언트에게 보냅니다.
    byte      SSH_MSG_USERAUTH_SUCCESS
    

    2. 비밀번호 인증


    2.1 클라이언트가 서버에 암호 인증 요청 보내기


    암호 인증은 아래의 패키지로 진행됩니다.그 중에서 사용자 이름, 암호 정보는 모두 명문으로 표시되고 암호는 ISO-10646 UTF-8 인코딩 방식으로 인코딩된다.메시지가 전송층에서 암호화되면 서버와 클라이언트는 전송층의 기밀성을 검사하고 전송층이 기밀성을 가지지 않으면 암호 인증이 비활성화됩니다.
    byte      SSH_MSG_USERAUTH_REQUEST
    string    user name
    string    service name
    string    "password"
    boolean   FALSE
    string    plaintext password in ISO-10646 UTF-8 encoding [RFC3629]
    

    2.2 서버가 클라이언트에게 암호 인증 결과를 반환


    서버에서 사용자 이름, 암호를 인증합니다.인증이 성공하면 인증 성공으로 돌아갑니다.
    byte      SSH_MSG_USERAUTH_SUCCESS
    

    만료된 암호는 암호 인증에 사용할 수 없습니다.암호가 만료되면 서버는 변경 암호 응답을 클라이언트에게 보냅니다.
    byte      SSH_MSG_USERAUTH_PASSWD_CHANGEREQ
    string    prompt in ISO-10646 UTF-8 encoding [RFC3629]
    string    language tag [RFC3066]
    

    2.3 클라이언트가 서버에 암호 변경 요청 보내기


    클라이언트가 암호 변경 메시지를 받은 후 서로 다른 인증 방식을 사용하여 인증하거나 새로운 암호를 요청하고 암호 인증을 다시 시도할 수 있습니다.메시지 패키지는 다음과 같습니다.
    byte      SSH_MSG_USERAUTH_REQUEST
    string    user name
    string    service name
    string    "password"
    boolean   TRUE
    string    plaintext old password in ISO-10646 UTF-8 encoding
               [RFC3629]
    string    plaintext new password in ISO-10646 UTF-8 encoding
               [RFC3629]
    

    2.4 서버 처리 요청 및 처리 결과 반환


    암호 변경에 성공하고 인증에 성공하면 다음을 반환합니다.
    byte      SSH_MSG_USERAUTH_SUCCESS
    

    암호 변경에 성공했지만 인증이 더 필요한 경우 반환: byte SSH_MSG_USERAUTH_FAILURE name-list authentications that can continue boolean TRUE
    암호 변경이 실패했거나 암호 변경이 지원되지 않거나 오래된 암호 오류가 발생했습니다.그러나 만약 서버가 이미 비밀번호 변경 메시지를 보냈다면, 우리는 서버가 비밀번호 변경을 지원한다는 것을 안다.반환:
    byte         SSH_MSG_USERAUTH_FAILURE
    name-list    authentications that can continue
    boolean      FALSE
    

    새 암호가 수락되지 않아 암호 변경에 실패했습니다(예: 암호가 너무 간단함).
    SSH_MSG_USERAUTH_CHANGEREQ
    

    3. 호스트 인증


    일부 사이트는 사용자의 로컬 호스트와 원격 호스트의 사용자 이름을 바탕으로 인증을 원한다.이런 인증 방식은 보안 수준이 높은 사이트에 적용하기에는 적합하지 않지만 어떤 환경에서는 비교적 편리할 수 있다.이런 인증 방식은 선택할 수 있다.이런 인증 방식을 사용할 때 일반 사용자가 로컬 호스트의 개인 키를 가져오는 것을 방지하는 데 특히 주의해야 한다.

    3.1 클라이언트가 서버에 호스트 인증 요청 보내기


    클라이언트는 클라이언트 호스트의 개인 키를 사용하여 서명을 하고 서버에 서명을 보냅니다.
    byte      SSH_MSG_USERAUTH_REQUEST
    string    user name
    string    service name
    string    "hostbased"
    string    public key algorithm for host key
    string    public host key and certificates for client host
    string    client host name expressed as the FQDN in US-ASCII
    string    user name on the client host in ISO-10646 UTF-8 encoding
               [RFC3629]
    string    signature
    

    서명은 호스트 키를 사용하여 다음과 같은 내용, 다음 순서를 바탕으로 진행됩니다.
    string    session identifier
    byte      SSH_MSG_USERAUTH_REQUEST
    string    user name
    string    service name
    string    "hostbased"
    string    public key algorithm for host key
    string    public host key and certificates for client host
    string    client host name expressed as the FQDN in US-ASCII
    string    user name on the client host in ISO-10646 UTF-8 encoding
               [RFC3629]
    

    3.2 서버에서 클라이언트에게 인증 결과 전송


    서버는 클라이언트 호스트 키를 사용하여 요청 서명을 검증합니다.

    참고


    The Secure Shell(SSH) Authentication Protocol ssh 두 가지 인증 방식의 원리 소개 도해 SSH 원리와 두 가지 로그인 방법

    좋은 웹페이지 즐겨찾기