Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline zhe  
#1 Оставлено : 10 февраля 2012 г. 16:14:36(UTC)
zhe

Статус: Участник

Группы: Участники
Зарегистрирован: 05.08.2011(UTC)
Сообщений: 13

Здравствуйте.

Подскажите, поддерживает ли JTLS "tls renegotiation", при использовании клиентской аутентификации со стороны клиента?

Поясню в чем проблема. Есть веб-служба, которая использует КриптоПро TLS + CSP. Служба использует клиентскую аутентификацию по сертификату.
Явное требование клиентского сертификата со стороны службы не настроено.
К этой службе есть клиенты на .NET и на JAVA. .NET-клиент вызывает службу успешно, JAVA - падает с read timeout-ом.

Удалось выяснить, что при инициализации соединения ClientHello от JAVA, которая использует JTLS, выглядит так:

Код:
- TLS: TLS Rec Layer-1 HandShake: Client Hello.
  - TlsRecordLayer: TLS Rec Layer-1 HandShake:
     ContentType: HandShake:
   - Version: TLS 1.0
      Major: 3 (0x3)
      Minor: 1 (0x1)
     Length: 49 (0x31)
   - SSLHandshake: SSL HandShake ClientHello(0x01)
      HandShakeType: ClientHello(0x01)
      Length: 45 (0x2D)
    - ClientHello: TLS 1.0
     - Version: TLS 1.0
        Major: 3 (0x3)
        Minor: 1 (0x1)
     - RandomBytes: 
        TimeStamp: 02/09/2012, 12:33:44 .0000 UTC 
        RandomBytes: Binary Large Object (28 Bytes)
       SessionIDLength: 0 (0x0)
       CipherSuitesLength: 6
     - TLSCipherSuites: Unknown Cipher
        Cipher: 129 (0x81)
     - TLSCipherSuites: Unknown Cipher
        Cipher: 128 (0x80)
     - TLSCipherSuites: TLS_DHE_DSS_WITH_AES_128_CBC_SHA        { 0x00, 0x32 }
        Cipher: 50 (0x32)
       CompressionMethodsLength: 1 (0x1)
       CompressionMethods: 0 (0x0)


ClientHello от .NET-клиента - выглядит так:

Код:
- TLS: TLS Rec Layer-1 HandShake: Client Hello.
  - TlsRecordLayer: TLS Rec Layer-1 HandShake:
     ContentType: HandShake:
   - Version: TLS 1.0
      Major: 3 (0x3)
      Minor: 1 (0x1)
     Length: 118 (0x76)
   - SSLHandshake: SSL HandShake ClientHello(0x01)
      HandShakeType: ClientHello(0x01)
      Length: 114 (0x72)
    - ClientHello: TLS 1.0
     - Version: TLS 1.0
        Major: 3 (0x3)
        Minor: 1 (0x1)
     - RandomBytes: 
        TimeStamp: 02/10/2012, 13:48:07 .0000 UTC 
        RandomBytes: Binary Large Object (28 Bytes)
       SessionIDLength: 0 (0x0)
       CipherSuitesLength: 28
     - TLSCipherSuites: Unknown Cipher
        Cipher: 129 (0x81)
     - TLSCipherSuites: Unknown Cipher
        Cipher: 128 (0x80)
     - TLSCipherSuites: TLS_DHE_DSS_WITH_AES_128_CBC_SHA        { 0x00, 0x32 }
        Cipher: 50 (0x32)
     - TLSCipherSuites: TLS_RSA_WITH_AES_128_CBC_SHA            { 0x00, 0x2F }
        Cipher: 47 (0x2F)
     - TLSCipherSuites: TLS_RSA_WITH_AES_256_CBC_SHA            { 0x00, 0x35 }
        Cipher: 53 (0x35)
     - TLSCipherSuites: TLS_RSA_WITH_RC4_128_SHA                { 0x00,0x05 }
        Cipher: 5 (0x5)
     - TLSCipherSuites: TLS_RSA_WITH_3DES_EDE_CBC_SHA           { 0x00,0x0A }
        Cipher: 10 (0xA)
     - TLSCipherSuites: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA      { 0xC0,0x13 }
        Cipher: 49171 (0xC013)
     - TLSCipherSuites: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA      { 0xC0,0x14 }
        Cipher: 49172 (0xC014)
     - TLSCipherSuites: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA    { 0xC0,0x09 }
        Cipher: 49161 (0xC009)
     - TLSCipherSuites: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA    { 0xC0,0x0A }
        Cipher: 49162 (0xC00A)
     - TLSCipherSuites: TLS_DHE_DSS_WITH_AES_256_CBC_SHA        { 0x00, 0x38 }
        Cipher: 56 (0x38)
     - TLSCipherSuites: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA        { 0x00,0x13 }
        Cipher: 19 (0x13)
     - TLSCipherSuites: TLS_RSA_WITH_RC4_128_MD5                { 0x00,0x04 }
        Cipher: 4 (0x4)
       CompressionMethodsLength: 1 (0x1)
       CompressionMethods: 0 (0x0)
       ExtensionsLength: 45 (0x2D)
     - ClientHelloExtension: Renegotiation Info(0xFF01)
        ExtensionType: Renegotiation Info(0xFF01)
        ExtensionLength: 1 (0x1)
        Data: Binary Large Object (1 Bytes)
     - ClientHelloExtension: Server Name(0x0000)
        ExtensionType: Server Name(0x0000)
        ExtensionLength: 20 (0x14)
        NameListLength: 18 (0x12)
        NameType: Host Name (0)
        NameLength: 15 (0xF)
        ServerName: xxx.yyy.zzz
     - ClientHelloExtension: Elliptic Curves(0x000A)
        ExtensionType: Elliptic Curves(0x000A)
        ExtensionLength: 6 (0x6)
        CurvesLength: 4 (0x4)
        NamedCurve: secp256r1(0x0017)
        NamedCurve: secp384r1(0x0018)
     - ClientHelloExtension: EC Point Formats(0x000B)
        ExtensionType: EC Point Formats(0x000B)
        ExtensionLength: 2 (0x2)
        ECPointLength: 1 (0x1)
        ECPointFormat: uncompressed(0x00)


Т.е. ClientHello от .NET-клиента содержит

Код:
- ClientHelloExtension: Renegotiation Info(0xFF01)
    ExtensionType: Renegotiation Info(0xFF01)
    ExtensionLength: 1 (0x1)
    Data: Binary Large Object (1 Bytes)


и есть подозрение, что это Transport Layer Security (TLS) Renegotiation Indication Extension.

Вопрос, собственно, в том, поддерживает ли JTLS tls-renegotiation?

Отредактировано пользователем 13 февраля 2012 г. 16:06:56(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#2 Оставлено : 10 февраля 2012 г. 17:34:24(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,395
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 718 раз в 622 постах
в последних версиях jtls должно поддерживаться.
Знания в базе знаний, поддержка в техподдержке
Offline zhe  
#3 Оставлено : 10 февраля 2012 г. 17:54:58(UTC)
zhe

Статус: Участник

Группы: Участники
Зарегистрирован: 05.08.2011(UTC)
Сообщений: 13

Цитата:
в последних версиях jtls должно поддерживаться.

Тут вопрос состоит именно в том, поддерживается ли renegotiation, если использовать JTLS со стороны клиента, а не сервера.

Версия JTLS - 1.0.52.

SSL handshake у .net-клиента и у java-клиента различаются достаточно сильно.

Java:
Код:
TLS:TLS Rec Layer-1 HandShake: Client Hello.	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Hello Done.	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:TLS Rec Layer-1 HandShake: Client Key Exchange.	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:TLS Rec Layer-1 Cipher Change Spec	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:TLS Rec Layer-1 HandShake: Encrypted Handshake Message.	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:TLS Rec Layer-1 Cipher Change Spec; TLS Rec Layer-2 HandShake: Encrypted Handshake Message.	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:TLS Rec Layer-1 SSL Application Data	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:TLS Rec Layer-1 SSL Application Data	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:TLS Rec Layer-1 HandShake: Encrypted Handshake Message.	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:Continued Data: 11040 Bytes	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:Continued Data: 11040 Bytes	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:Continued Data: 5520 Bytes	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:TLS Rec Layer-1 SSL Application Data	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:TLS Rec Layer-1 HandShake: Encrypted Handshake Message.	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}
TLS:TLS Rec Layer-1 Encrypted Alert	{TLS:305, SSLVersionSelector:304, TCP:303, IPv4:60}


.NET:
Код:
TLS:TLS Rec Layer-1 HandShake: Client Hello.	{TLS:63, SSLVersionSelector:62, TCP:61, IPv4:60}
TLS:TLS Rec Layer-1 HandShake: Server Hello.; TLS Rec Layer-2 Cipher Change Spec; TLS Rec Layer-3 HandShake: Encrypted Handshake Message.	{TLS:63, SSLVersionSelector:62, TCP:61, IPv4:60}
TLS:TLS Rec Layer-1 Cipher Change Spec; TLS Rec Layer-2 HandShake: Encrypted Handshake Message.; TLS Rec Layer-3 SSL Application Data	{TLS:63, SSLVersionSelector:62, TCP:61, IPv4:60}
TLS:TLS Rec Layer-1 HandShake: Encrypted Handshake Message.	{TLS:63, SSLVersionSelector:62, TCP:61, IPv4:60}
TLS:TLS Rec Layer-1 HandShake: Encrypted Handshake Message.	{TLS:63, SSLVersionSelector:62, TCP:61, IPv4:60}
TLS:TLS Rec Layer-1 HandShake: Encrypted Handshake Message.	{TLS:63, SSLVersionSelector:62, TCP:61, IPv4:60}
TLS:Continued Data: 29 Bytes; TLS Rec Layer-3 HandShake: Encrypted Handshake Message.	{TLS:63, SSLVersionSelector:62, TCP:61, IPv4:60}
TLS:Continued Data: 29 Bytes; TLS Rec Layer-2 HandShake: Encrypted Handshake Message.	{TLS:63, SSLVersionSelector:62, TCP:61, IPv4:60}
TLS:TLS Rec Layer-1 SSL Application Data	{TLS:63, SSLVersionSelector:62, TCP:61, IPv4:60}
TLS:TLS Rec Layer-1 SSL Application Data	{TLS:63, SSLVersionSelector:62, TCP:61, IPv4:60}
TLS:Continued Data: 2776 Bytes	{TLS:63, SSLVersionSelector:62, TCP:61, IPv4:60}
TLS:TLS Rec Layer-1 SSL Application Data	{TLS:63, SSLVersionSelector:62, TCP:61, IPv4:60}


А реализуют ли JTLS и КриптоПро TLS спецификацию http://www.ietf.org/rfc/rfc5746.txt?
Иначе, чем можно объяснить то, что даже первоначальный ClientHello от Java не содержит ни TLS Renegotiation Extension, ни TLS_EMPTY_RENEGOTIATION_INFO_SCSV Cipher Suite, которые должны присутствовать, если верить http://www.ietf.org/rfc/rfc5746.txt, в то время как у .NET клиента, который использует CSP есть дополнительный ClientHelloExtension?

Отредактировано пользователем 10 февраля 2012 г. 18:31:53(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.