What is the TLS 1.3 Flag for DefaultSecureProtocols? - security

Microsoft article "How to enable TLS 1.2 on client" tells us to use the flag 0x00000800 in DefaultSecureProtocols under HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp and HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp as part of enabling TLS 1.2.
What is the flag for TLS 1.3?
The pattern in Microsoft article "Update to enable TLS 1.1 and TLS 1.2 as default secure protocols in WinHTTP in Windows", illustrated below, implies that the flag would be 0x00002000. However, I have not found documentation on this.
DefaultSecureProtocols Value
Protocol enabled
0x00000008
Enable SSL 2.0 by default
0x00000020
Enable SSL 3.0 by default
0x00000080
Enable TLS 1.0 by default
0x00000200
Enable TLS 1.1 by default
0x00000800
Enable TLS 1.2 by default

The value for TLS 1.3 = 0x00002000
Tell my if this helped you or if you found another solution. I'm intrigued

Related

Firefox reports ssl_error_no_cypher_overlap when it accesses nodejs

node version:v0.12.02
firefox version: 40.0.4
I create a website through node with TLS, because of security ,I wanna use TLS V1.2 in my webapp.
According to the site https://nodejs.org/docs/latest-v0.12.x/api/tls.html
ECDHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA256 and AES128-GCM-SHA256 are TLS v1.2 ciphers and used when Node.js is linked against OpenSSL 1.0.1 or newer, such as the bundled version of OpenSSL. Note that it is still possible for a TLS v1.2 client to negotiate a weaker cipher unless honorCipherOrder is enabled.
I use the cipher in order to only support TLs v1.2
var credentials = {
key: privateKey,
cert:certificate,
ciphers:"ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:AES128-GCM-SHA256"
};
There are no problems wen accessed by Chrome &IE,However, when use Firefox , the ‘ssl_error_no_cypher_overlap" was appeared.
Then I add a "HIGH" to the ciphers, likes this:
ciphers:"ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:AES128-GCM-SHA256:HIGH"
This solves the previous problem and FireFox's behavior is OK.
But after add "HIGH" , the web browser with tls1.0,tls1.1 can access my website.
I am so confused by this problem. Any one can tell me the reason or how can I only use tls1.2 in nodejs?
Thank you.

Enable TLS 1.2 on windows server 2008 R2

I am trying to enable TLS 1.2 on windows server 2008 R2. I have made registry entries to enable TLS 1.2 as mentioned in below link : http://forums.iis.net/t/1201043.aspx.
I have also tried powershell script in link : http://www.hass.de/content/setup-your-iis-ssl-perfect-forward-secrecy-and-tls-12
While monitoring through wireshark i found that Client hello message is sending version TLS 1.2 and protocol is showing TLSv1.
Server hello message is showing tlsv1 in protocol field and version TLS 1.0 .
I don't know if i am missing anything to enable TLS 1.2. I think i have made all the registry entries.
Any help will be appreciated.
Above mentioned services are runnig in HASP server and running on 443 port.
Another strange thing is i am using IIS 7.5 server When i deploy another srvice on 8443 port. it is running on TLS 1.2 only from ie 9. Both IIS 7.5 service and Hasp server service are running in same machine. But throgh wireshark it is showing TCP protocol only. NO SSL protocl is used here https communication. How is it possible?
Also last point even if i disable SSLv3 from server registry or remove all entries. url still works on sslv3.
Is it possible that we need to update some other files on windows server.?
Same issue - did all steps mentioned in documentation but no luck enabling TLS 1.2 on the Win 2008 or Win 2012 :/.
Some info from logs:
Enabled SecurityProtocol`s: SystemDefault
.NET Runtime: 4.8.4069.0
Modified registries by disabling all others and enabling only TLS 1.2
required updates (kb3140245)
also tried to install "MicrosoftEasyFix51044"
Using "WebRequest.CreateHttp(url)" - still fails with error
ERROR - The request was aborted: Could not create SSL/TLS secure channel.
Updated answer:
At least for us answer was that Win 2008/2012 and API/service which with we was trying to communicate using TLS 1.2 - do not have same cypher suite - so is not able to communicate. From links information looks like there is only one way to upgrade windows to 2016+.
Adding Cipher suite to TLS1.2 of HttpClient of dotnetcore 3.1
https://learn.microsoft.com/en-us/answers/questions/227738/windows-server-2012-r2-tls-12-cipher-suites.html
In our case service was using/supporting (and windows not):
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (ecdh_x25519) - A
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) - A

How to disable SSLv3 protocol in Apache ActiveMQ?

I want to disable SSLv3 protocol in Apache ActiveMQ.
Can not find relevant information here:
http://activemq.apache.org/ssl-transport-reference.html
The link above only shows how to configure CipherSuites
There is an enabledProtocols option you can use on the transport connector. You can't exclude, but you can choose valid protocols.
transport.enabledProtocols=<comma separated list of SSL/TLS protocols>
So, a TLS only "default" transport connector should look like this:
<transportConnector name="ssl" uri="ssl://0.0.0.0:61618?transport.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2&maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

Why is the handshake protocol sslv3 when the client hello is sslv2

We've been having issues getting a successful SSL connection from a client app trying to connect using wininet on windows xp sp3 (ie v6). The client hello looks off to me, why would the hello state its version as SSL 2.0 and then state the handshake version as SSL 3.0? Is there something coded incorrectly from the app using wininet?
SSLv2 Record Layer: Client Hello
[Version: SSL 2.0 (0x0002)] <---------------------
Length: 76
Handshake Message Type: Client Hello (1)
Version: SSL 3.0 (0x0300) <---------------------
Cipher Spec Length: 51
Session ID Length: 0
Challenge Length: 16
Cipher Specs (17 specs)
Challenge
SSLv3 and TLSv1.x have a compatibility mode in case the client also supports v2 servers, as described in the TLS specification (Backward Compatibility With SSL).
Some clients support this. For example Oracle/Sun Java has an SSLv2Hello pseudo-protocol, which uses SSLv2 Hello, but doesn't actually support SSLv2.
I know this issue is solved but I will share some more info about the subject which may be useful for viewers
"The client sends a SSLv2 ClientHello so that a server who understands only SSLv2 can process that message, and continue with a SSLv2 handshake. But the SSLv2 ClientHello also says "by the way, I know SSLv3, so if you know SSLv3 too, let's do SSLv3 instead of SSLv2", which is what usually happens (servers who know only of SSLv2 are extremely rare nowadays)."
I took it from Thomas Pornin's comment, link
https://security.stackexchange.com/questions/34827/why-clients-offer-handshaking-with-ssl-2-0-protocol

Difference between SSL & TLS

According to wikipedia: http://en.wikipedia.org/wiki/Transport_Layer_Security
Seems like TLS is a replacement to SSL, but most websites are still using SSL?
In short, TLSv1.0 is more or less SSLv3.1. You can find more details in this question on ServerFault.
Most websites actually support both SSLv3 and TLSv1.0 at least, as this study indicates (Lee, Malkin, and Nahum's paper: Cryptographic Strength of SSL/TLS Servers: Current and Recent Practices, IMC 2007) (link obtained from the IETF TLS list). More than 98% support TLSv1+.
I think the reason why SSLv3 is still in use was for legacy support (although most browsers support TLSv1 and some TLSv1.1 or even TLSv1.2 nowadays). Until not so long ago, some distributions still had SSLv2 (considered insecure) on by default along with the others.
(You may also find this question interesting, although it's about the usage pattern of TLS rather than SSL vs. TLS (you could in fact have the same pattern with SSL). This does not apply to HTTPS anyway, since HTTPS uses SSL/TLS from the beginning of the connection.)
From http://www.thoughtcrime.org/blog/ssl-and-the-future-of-authenticity/
In the early 90’s, at the dawn of the World Wide Web, some engineers at Netscape developed a protocol for making secure HTTP requests, and what they came up with was called SSL. Given the relatively scarce body of knowledge concerning secure protocols at the time, as well the intense pressure everyone at Netscape was working under, their efforts can only be seen as incredibly heroic. It’s amazing that SSL has endured for as long as it has, in contrast to a number of other protocols from the same vintage. We’ve definitely learned a lot since then, though, but the thing about protocols and APIs is that there’s very little going back.
There were two major updates to the SSL protocol, SSL 2 (1995) and SSL 3 (1996). These were carefully done to be backwards compatible, to ease adoption. However backwards compatibility is a constraint for a security protocol for which it can mean backwards vulnerable.
Thus it was decided to break backwards compatiblity, and the new protocol named TLS 1.0 (1999). (In hindsight, it might have been clearer to name it TLS 4)
The differences between this protocol and SSL 3.0 are not dramatic, but they are significant enough that TLS 1.0 and SSL 3.0 do not interoperate.
TLS has been revised twice, TLS 1.1 (2006) and TLS 1.2 (2008).
As of 2015, all SSL versions are broken and insecure (the POODLE attack) and browsers are removing support. TLS 1.0 is ubiquitous, but only 60% of sites support TLS 1.1 and 1.2, a sorry state of affairs.
If you're interested in this stuff, I recommend Moxie Marlinspike's clever and funny talk at
https://www.youtube.com/watch?v=Z7Wl2FW2TcA
tls1.0 means sslv3.1
tls1.1 means sslv3.2
tls1.2 means sslv3.3
the rfc just changed the name, you could find tls1.0's hex code is 0x0301, which means sslv3.1
TLS maintains backward compatibility with SSL and therefore the communication protocol is nearly identical in any of the mentioned versions herein. The two important differences between SSL v.3, TLS 1.0, and TLS 1.2, is the pseudo-random function (PRF) and the HMAC hashing function (SHA, MD5, handshake), which is used to construct a block of symmetric keys for Application Data encryption (server keys + client keys + IV). Major difference between TLS 1.1 and TLS 1.2 is that 1.2 requires use-of "explicit" IV to protect against CBC attacks, although there is no changes to PRF or protocol needed for this. TLS 1.2 PRF is cipher-suite-specific, which means PRF can be negotiated during handshake. SSL was originally developed by Netscape Communications (historic) and later maintained by Internet Engineering Task Force (IETF, current). TLS is maintained by the Network Working Group. Here are difference between PRF HMAC functions in TLS:
TLS 1.0 and 1.1
PRF(secret, label, seed) = P_MD5(S1, label + seed) XOR P_SHA-1(S2, label + seed);
TLS 1.2
PRF(secret, label, seed) = P_hash(secret, label + seed)
"If it ain't broken, don't touch it". SSL3 works fine in most scenarios (there was a fundamental flaw found in SSL/TLS protocol back in October, but this is a flaw of applications more than of a procol itself), so developers don't hurry to upgrade their SSL modules. TLS brings a number of useful extensions and security algorithms, but they are handy addition and not a must. So TLS on most servers remains an option. If both server and client support it, it will be used.
Update: in '2016 SSL 3, and even TLS up to 1.2 are found to be vulnerable to various attacks and migration to TLS 1.2 is recommended. There exist attacks on implementations of TLS 1.2 as well, though they are server-dependent. TLS 1.3 is currently in development. And now TLS 1.2 is a must.
https://hpbn.co/transport-layer-security-tls/ is a good introduction
The SSL protocol was originally developed at Netscape to enable ecommerce transaction security on the Web, which required encryption to protect customers’ personal data, as well as authentication and integrity guarantees to ensure a safe transaction. To achieve this, the SSL protocol was implemented at the application layer, directly on top of TCP (Figure 4-1), enabling protocols above it (HTTP, email, instant messaging, and many others) to operate unchanged while providing communication security when communicating across the network.
When SSL is used correctly, a third-party observer can only infer the connection endpoints, type of encryption, as well as the frequency and an approximate amount of data sent, but cannot read or modify any of the actual data.
SSL 2.0 was the first publicly released version of the protocol, but it was quickly replaced by SSL 3.0 due to a number of discovered security flaws. Because the SSL protocol was proprietary to Netscape, the IETF formed an effort to standardize the protocol, resulting in RFC 2246, which was published in January 1999 and became known as TLS 1.0. Since then, the IETF has continued iterating on the protocol to address security flaws, as well as to extend its capabilities: TLS 1.1 (RFC 2246) was published in April 2006, TLS 1.2 (RFC 5246) in August 2008, and work is now underway to define TLS 1.3.
Feature
SSL
TLS
Full Name
Secure Socket layer
Transport layer security
Created By
Netscape in 1994
In 1994, IETF took over the maintenance of SSL and later renamed it
Note: The world used the mostly TLS over SSL.

Resources