Microsoft has revealed the guidelines it gives its own developers to help them decide when users need a rude reminder to stop putting themselves at risk of security problems.
Redmond's rules boil down to being neat and spruce, but the two adjectives are acronyms rather than items in a dress code. NEAT stands for the following
- Necessary: A warning should only interrupt a user if it is absolutely necessary to involve the user. Sometimes, a system can automatically take a safe course of action without interrupting the user. Sometimes, a security decision can be deferred to a later point in time.
- Explained: If it is actually necessary to interrupt the user with a security warning, the warning should explain the decision the user needs to make and provide the user with all the information necessary to enable them to make a good decision. Since the Explained part of NEAT is perhaps the most important, we devised another acronym, SPRUCE (see below), to help engineers remember what information to provide in a security warning.
- Actionable: A security warning should only be presented to the user if there is a set of steps the user could realistically take to make the right decision in all scenarios, both benign (where there is no attack present) and malicious (where an attack is present).
- Tested: Security warnings should be tested by all means available, including visual inspection by many eyes and formal usability testing.
SPRUCE stands for:
SPRUCE's tenets are visible in the graphic below, which is one of two helpful mini-posters Microsoft has made available (PDF) for you to print and pin into your cubicle.
Microsoft's SPRUCE secure development methodology spelled out
Both NEAT and SPRUCE are also explained in detail in a document (DOCX) that explains both in detail, and also outlines the thinking behind their creation.
Among those thoughts is the revelation that Microsoft convened a committee to cook up guidelines on when to inform users about security issues. That effort, the document explains, “... produced a paper that captured a consensus view of the most important aspects of knowledge [and] … consisted of 24 pages, with 68 items of advice arranged into a hierarchy 3 levels deep.”
Redmond's boffins quickly realised this was impractical, because:
“Microsoft engineers do not have time in their day to read 24 pages and 68 bullet points about usable security. The list of concerns for a Microsoft engineer is long ... but usable security is only a tiny slice of usability (most of a product’s user experience has nothing to do with security) and a tiny slice of security (security includes both the development of security-related features and product-wide activities like threat modeling and penetration testing). Time for usable security is thus very limited.”
NEAT and SPRUCE are therefore watered-down versions of the best practices Microsoft's security and UI thinkers put into the topic, rather than the source material.
The document says, however, that the simplified guidance on offer has proved powerful, with the mnemonics NEAT and SPRUCE representing “a great first step in helping engineers deliver more usable security.” ®