I discovered that a signed installer package that is reported as correctly signed on Windows 7 and earlier, is reported as "corrupt" in IE10 on Windows 8.

Further investigation showed that the signature was made with MD5.

While it is entirely sensible that Microsoft drops support for MD5, I have been unable to find any references for this fact.

I also seem to remember seeing a notice about Microsoft removing support for MD5 in earlier versions soon, but I haven't been able to find that either.

Am I correct in thinking that MD5 is not supported on Windows 8? Do anyone have a reference for it? Will support for MD5 also be removed in Windows 7 and earlier?

  • It's unlikely that MS has cut MD5 support, it's more likely a bug of some kind.
    – GdD
    Sep 20, 2012 at 8:33
  • I'd say, after the FLAME malware, abusing MD5 collisions on signed drivers, to escape AV software detection, that it's fairly reasonable to think that MS has dropped support for MD5. However, I don't think it's the case.
    – Kao
    Sep 20, 2012 at 8:37
  • Microsoft has cut MD5 support for code signing.
    – Polynomial
    Sep 20, 2012 at 8:45

2 Answers 2


In Windows 7, the requirements for code signing were as follows:

  • For applications, SHA1 is preferred, MD5 is accepted.
  • For drivers, SHA1 is required.

In Windows 8, the requirements changed to the following:

  • For applications, SHA1 is required, and SHA256 is optional.
  • For drivers, SHA1 is required, and SHA256 is optional.
  • For cross-compatibility, Microsoft supports dual-signing, in which the payload is signed with both SHA1 and SHA256. On Windows 7, the old SHA1 hash will be checked. On Windows 8, the SHA256 hash will be checked.

It's not known whether this is in response to Flame, or just a standard progression of security technology.

The problem with altering the requirements in Windows 7 is two-fold. First and foremost, there are tens of thousands of existing applications signed using MD5-based certificates. Second, it's a lot of effort to modfiy the kernel, code signing utilities, Visual Studio, etc. to reflect the new requirements. However, Microsoft have (supposedly) taken steps to ensure that no internal code-signing certificates allow MD5, and have revoked offending certificates.

  • Thank you. I think I confused this issue with the deprecation of 512-bit RSA keys. Would you happen to have a reference for the Windows 8 requirements? Sep 20, 2012 at 10:39
  • @RasmusFaber No confusion. See Signing a Driver for Public Release, Signing and Checking Code with Authenticode, Driver Signing Policy (Windows Vista and Later) and an advisory blog post, in which they explain why they revoked the cert chain.
    – Polynomial
    Sep 20, 2012 at 10:53
  • I can't find anything in those links about Windows 8 requiring SHA-1 or higher for code signing applications. I do not doubt that you are correct, but I would very much like something official from Microsoft to point at. (But perhaps there isn't anything). Sep 20, 2012 at 11:03
  • @Polynomial - While it does cause a problem I would rather as a developer face this problem then the horrible events if some criminal created a payload that matched and an application that appeared to be signed by me. Besides while Windows 8 will indicate the signed application is not valid, you should still be able to install and use the application, unless there is some other reason it cannot be ran.
    – Ramhound
    Sep 20, 2012 at 11:34
  • @Ramhound Note that the code signing enforcement is not to benefit you as a developer. It's for end users. Enabling insecure code signing techniques allows the spread of malware like Flame. However, in Windows 7, they will not update the requirements, because so much existing software expects MD5 to be supported. Changing those requirements makes a serious headache for end-users, because their existing signed software won't run at all.
    – Polynomial
    Sep 20, 2012 at 11:49

signtool.exe as included with the Windows 8 SDK refuses to create MD5 signatures. signtool sign /fd md5 says:

SignTool Error: The specified algorithm cannot be used or is invalid.

But MD5 signatures created by other means, like the venerable signcode.exe, are still valid. Even Windows 10 after the deprecation of SHA-1 certificates on 1/1/16 still accepts MD5 signatures.

This 47K executable (which shows a pair of eyes tracking the mouse pointer) has an MD5 signature based on an SHA-256 certificate and with an SHA-1 timestamp dated 1/18/2016. Windows XP SP3 through Windows 10 treat this as a properly signed file even when it has the Mark of the Web.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .