But as our solution is being extend by new and more sophisticated network devices it is still important to understand and maintain the low level security parameters for the network protocols. When I mean low level I mean the low level details of the TLS/SSL network protocols that are being used when using HTTPS for example.
Problem
Is that secure or recommended to enable and support DES or IDEA ciphers in application or SSL-offloading load balancers?
Analysis and results discussion
According to RFC 5469 IDEA and DES should not be used any more. The reasons are listed in the RFC.
To verify if your server responds to clients using these ciphers you can try:
# (1)
# openssl s_client -connect server_ip:443 -cipher DES-CBC-SHA -ssl3
# or
# (2)
# openssl s_client -connect server_ip:443 -cipher DES-CBC-SHA -tls1
# or
# (3)
# openssl s_client -connect server_ip:443 -cipher DES-CBC-SHA
CONNECTED(00000003)
depth=0 C = AU, ST = Some-State, O = Internet Widgits Pty Ltd
verify error:num=18:self signed certificate
verify return:1
depth=0 C = AU, ST = Some-State, O = Internet Widgits Pty Ltd
verify return:1
---
Certificate chain
0 s:/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd
i:/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd
---
Server certificate
-----BEGIN CERTIFICATE-----
MIICATCCAWoCCQCxkFtlc6Bd0TANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJB
VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
cyBQdHkgTHRkMB4XDTE0MDExMjIxMzMwN1oXDTE1MDExMjIxMzMwN1owRTELMAkG
A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
IFdpZGdpdHMgUHR5IEx0ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtVtD
BfrmHU/T9m4xvvlP7+J4zJ2BYFY8QfSvQ1tyQw+BwvPyh9zyzgd0Zw4iOa6ThlQ3
GTr7e3FMQooMWpK0XXTYKbbWGqyVfnkcwmWjapJxOv8OaXlDS5TIc7MursFXp16e
oOjvpyuddX2gilQLiO6n1b6vyKsFfPW0eoPPmf8CAwEAATANBgkqhkiG9w0BAQUF
AAOBgQBGd8xD6ZINxy8Vf1jFrX+4EyPEL3+DkAU4lInd83kIuDd8i2fzia4YOfKh
JB3/ML8kLGLMh6R0WpHbaoGQvNM5qn7GdFL+DDBvXqlyZtIrfKamx+s5GxUiP0SV
5miO9Oh1mkxhXUqaVHaJR0DeTYEAuA0dc1lMoJlPoSMedlgJBg==
-----END CERTIFICATE-----
subject=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd
issuer=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd
---
No client certificate CA names sent
---
SSL handshake has read 710 bytes and written 273 bytes
---
New, TLSv1/SSLv3, Cipher is DES-CBC-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
Protocol : SSLv3
Cipher : DES-CBC-SHA
Session-ID: A5568C18EFB2DA77B729A247EA8E605BEBC4DF478129357D002C26DFA89F96C7
Session-ID-ctx:
Master-Key: F9CDF6CD91F3E4F5117758104906C779E18493062397EFFE7E4C518F0894398A01D969D5EE07804ED436A24444CD92FA
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Compression: 1 (zlib compression)
Start Time: 1389565902
Timeout : 7200 (sec)
Verify return code: 18 (self signed certificate)
---
An example output from the (3) showing that the server supports the legacy and depreciated ciphers.
# ssldump -A -n -i lo port 443
New TCP connection #1: 127.0.0.1(50211) <-> 127.0.0.1(443)
1 1 0.0007 (0.0007) C>SV3.1(59) Handshake
ClientHello
Version 3.2
random[32]=
52 d3 18 25 a9 86 1c 58 ff f0 90 ca fe ba f8 eb
c8 23 46 fd 5b 7a 4a aa 51 c2 37 40 6a 8b dc 01
cipher suites
TLS_RSA_WITH_DES_CBC_SHA
Unknown value 0xff
compression methods
unknown value
NULL
1 2 0.0010 (0.0003) S>CV3.2(58) Handshake
ServerHello
Version 3.2
random[32]=
52 d3 18 25 95 9c 3e 34 80 d8 00 3d fe 02 8f bf
3c 1a 72 5d d1 4f 30 8c 6c 3b fa 64 0e 82 1c 6c
session_id[0]=
cipherSuite TLS_RSA_WITH_DES_CBC_SHA
compressionMethod unknown value
1 3 0.0021 (0.0011) S>CV3.2(527) Handshake
Certificate
certificate[517]=
30 82 02 01 30 82 01 6a 02 09 00 b1 90 5b 65 73
a0 5d d1 30 0d 06 09 2a 86 48 86 f7 0d 01 01 05
05 00 30 45 31 0b 30 09 06 03 55 04 06 13 02 41
55 31 13 30 11 06 03 55 04 08 0c 0a 53 6f 6d 65
2d 53 74 61 74 65 31 21 30 1f 06 03 55 04 0a 0c
18 49 6e 74 65 72 6e 65 74 20 57 69 64 67 69 74
73 20 50 74 79 20 4c 74 64 30 1e 17 0d 31 34 30
31 31 32 32 31 33 33 30 37 5a 17 0d 31 35 30 31
31 32 32 31 33 33 30 37 5a 30 45 31 0b 30 09 06
03 55 04 06 13 02 41 55 31 13 30 11 06 03 55 04
08 0c 0a 53 6f 6d 65 2d 53 74 61 74 65 31 21 30
1f 06 03 55 04 0a 0c 18 49 6e 74 65 72 6e 65 74
20 57 69 64 67 69 74 73 20 50 74 79 20 4c 74 64
30 81 9f 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01
05 00 03 81 8d 00 30 81 89 02 81 81 00 b5 5b 43
05 fa e6 1d 4f d3 f6 6e 31 be f9 4f ef e2 78 cc
9d 81 60 56 3c 41 f4 af 43 5b 72 43 0f 81 c2 f3
f2 87 dc f2 ce 07 74 67 0e 22 39 ae 93 86 54 37
19 3a fb 7b 71 4c 42 8a 0c 5a 92 b4 5d 74 d8 29
b6 d6 1a ac 95 7e 79 1c c2 65 a3 6a 92 71 3a ff
0e 69 79 43 4b 94 c8 73 b3 2e ae c1 57 a7 5e 9e
a0 e8 ef a7 2b 9d 75 7d a0 8a 54 0b 88 ee a7 d5
be af c8 ab 05 7c f5 b4 7a 83 cf 99 ff 02 03 01
00 01 30 0d 06 09 2a 86 48 86 f7 0d 01 01 05 05
00 03 81 81 00 46 77 cc 43 e9 92 0d c7 2f 15 7f
58 c5 ad 7f b8 13 23 c4 2f 7f 83 90 05 38 94 89
dd f3 79 08 b8 37 7c 8b 67 f3 89 ae 18 39 f2 a1
24 1d ff 30 bf 24 2c 62 cc 87 a4 74 5a 91 db 6a
81 90 bc d3 39 aa 7e c6 74 52 fe 0c 30 6f 5e a9
72 66 d2 2b 7c a6 a6 c7 eb 39 1b 15 22 3f 44 95
e6 68 8e f4 e8 75 9a 4c 61 5d 4a 9a 54 76 89 47
40 de 4d 81 00 b8 0d 1d 73 59 4c a0 99 4f a1 23
1e 76 58 09 06
1 4 0.0021 (0.0000) S>CV3.2(4) Handshake
ServerHelloDone
1 5 0.0085 (0.0063) C>SV3.2(134) Handshake
ClientKeyExchange
EncryptedPreMasterSecret[128]=
71 83 c8 f4 af ab be 5e a6 e0 ec 06 ab 14 be e3
41 25 5f f9 9e b3 29 a1 a5 1a a9 25 8d c8 1e 3d
f2 06 3b 50 68 58 ca 1b bf 9b 1a e5 3f 4d c7 f5
43 67 93 a1 fc f8 16 9e 35 24 7f a6 4c ad 9b 0f
c4 db 6e a8 3d 97 5e 5f 96 0f 40 7b a3 42 62 e4
7c 07 f9 65 97 a4 52 1a 30 cc 11 d6 43 06 7d 85
4b e9 d5 1e 2e af 9a bd 90 cd 4d 6e aa 9e 00 29
07 12 cd 96 bd 59 ca 5c dc a3 88 00 53 6e 8f ec
1 6 0.0085 (0.0000) C>SV3.2(1) ChangeCipherSpec
1 7 0.0085 (0.0000) C>SV3.2(56) Handshake
1 8 0.0099 (0.0014) S>CV3.2(170) Handshake
TLS_RSA_WITH_RC4_128_MD51 9 0.0476 (0.0376) S>CV3.2(1) ChangeCipherSpec
1 10 0.0476 (0.0000) S>CV3.2(56) Handshake
1 0.7913 (0.7436) C>S TCP FIN
1 0.7917 (0.0004) S>C TCP FIN
Output proving the ciphers are not supported.
# ssldump -A -n -i eth0 port 443 and host 31.222.129.61
New TCP connection #1: 162.13.0.27(34228) <-> 31.222.129.61(443)
1 1 0.0017 (0.0017) C>SV3.1(59) Handshake
ClientHello
Version 3.2
random[32]=
52 d3 19 53 c5 78 4c 06 8c e7 fc 47 a1 92 ec a4
90 63 ca a2 6e a5 7e 58 bb 72 9b a1 be c1 84 3a
cipher suites
TLS_RSA_WITH_DES_CBC_SHA
Unknown value 0xff
compression methods
unknown value
NULL
1 2 0.0021 (0.0003) S>CV3.1(2) Alert
level fatal
value handshake_failure
1 0.0021 (0.0000) S>C TCP FIN
1 0.0044 (0.0022) C>S TCP FIN
# openssl s_client -connect 31.222.129.61:443 -state -msg -cipher DES-CBC-SHA
CONNECTED(00000003)
SSL_connect:before/connect initialization
>>> TLS 1.1 [length 003b]
01 00 00 37 03 02 52 d3 19 53 c5 78 4c 06 8c e7
fc 47 a1 92 ec a4 90 63 ca a2 6e a5 7e 58 bb 72
9b a1 be c1 84 3a 00 00 04 00 09 00 ff 02 01 00
00 09 00 23 00 00 00 0f 00 01 01
SSL_connect:unknown state
SSL3 alert read:fatal:handshake failure
<<< TLS 1.0 Alert [length 0002], fatal handshake_failure
02 28
SSL_connect:error in unknown state
139646822749888:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:741:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 64 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
References
DES and IDEA Cipher Suites for Transport Layer Security (TLS)
http://www.ietf.org/rfc/rfc5469.txt
The TLS Protocol, Version 1.0
http://www.ietf.org/rfc/rfc2246.txt
The Transport Layer Security (TLS) Protocol, Version 1.2
http://tools.ietf.org/html/rfc5246.txt
No comments:
Post a Comment