Uploaded image for project: 'MINA SSHD'
  1. MINA SSHD
  2. SSHD-618

Allow public key authentication mechanism to use different signature factories than client/server or session

Agile BoardAttach filesAttach ScreenshotVotersStop watchingWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.0.0, 1.1.0
    • 1.1.0
    • None

    Description

      In current implementation the signature factories effects all algorithms that can be used during a connection. There is no way of limiting only sever host key algorithm to be able to request a specific server key. This is required in order to connect to pre-approved server using weaker key.

      It should be possible as in rfc4253 "Algorithm Negotiation" we have two fields one for available algorithms, and another for requesting a specific set of server keys which is subset of the available algorithms.

      name-list kex_algorithms
      name-list server_host_key_algorithms

      In rfc4252 we have "Public Key Authentication Method:
      "publickey"" "Public key algorithms are defined in the transport layer specification". So client public key types are subset of kex_algorithms.

      As far as I understand if we set kex algorithms of rsa and nistp256
      and force host key algorithms of rsa, we should be able to force
      server to use weaker algorithm while client can use any of rsa and
      nistp256.

      To prove that I hacked the AbstractSession with:

           protected byte[] sendKexInit() throws IOException {
      -        String resolvedAlgorithms = resolveAvailableSignaturesProposal();
      +        //String resolvedAlgorithms = resolveAvailableSignaturesProposal();
      +        //String resolvedAlgorithms = "ssh-rsa";
      +        String resolvedAlgorithms = "ecdsa-sha2-nistp256";
      

      If I force ssh-rsa I receive ssh-rsa sever key as expected.
      If I force ecdsa-sha2-nistp256 I receive ecdsa-sha2-nistp256 server
      key as expected while can authenticate using client ssh-rsa key, this
      means that server and client are indeed detached.

      Adding an option to specify a list of server host key type like "ssh-rsa" or "ecdsa-sha2-nistp256" will be nice as once having a pre-approved server keys, we can enforce them easily without transformation/guessing signature algorithm.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            lgoldstein Lyor Goldstein
            alonbl Alon Bar-Lev
            Votes:
            0 Vote for this issue
            Watchers:
            3 Stop watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

              Estimated:
              Original Estimate - Not Specified
              Not Specified
              Remaining:
              Remaining Estimate - 0h
              0h
              Logged:
              Time Spent - 10m
              10m

              Slack

                Issue deployment