<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lbriner</id>
		<title>OWASP - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lbriner"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Lbriner"/>
		<updated>2026-05-20T12:28:34Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Initiatives_Global_Strategic_Focus/website_project&amp;diff=219229</id>
		<title>Talk:OWASP Initiatives Global Strategic Focus/website project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Initiatives_Global_Strategic_Focus/website_project&amp;diff=219229"/>
				<updated>2016-07-22T13:04:05Z</updated>
		
		<summary type="html">&lt;p&gt;Lbriner: Clarify mock ups/comparisons and what they are for.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Thoughts on look and feel ==&lt;br /&gt;
&lt;br /&gt;
The Needs Assessment report has a good analysis of the current web site and provides a lot of valuable ideas for improvements. The mock-ups mostly look attractive. However, I disagree with some of the underlying assumptions:&lt;br /&gt;
* Wikipedia-style is derided. However, this style is wholly appropriate for the OWASP style IMHO. The OWASP web site could do worse than emulate Wikipedia '''more''' faithfully. Run towards Wikipedia, not away from it!&lt;br /&gt;
* The (ISC)^2 web site is put forward as a style to aspire to. I beg to differ: the current OWASP web site looks a lot more attractive to me than (ISC)^2's. The former is much easier on the eye. (ISC)^2 may draw attention through the use of striking colors and more graphic material. However, no additional useful information is conveyed. The net result is a feeling of weariness: my brain has to work hard to take in all these stimuli and I get very little in return. Remember that web sites are not competing for attention like billboards: unlike billboards, you visit web sites one by one. A good web site conveys its message while minimising collateral damage through information fatigue.&lt;br /&gt;
* Agree with both of the above. ISC2 is not a &amp;quot;competitor&amp;quot; and whilst the report has much to offer, focusing on ISC2, ISACA, ISA for comparisons seems a bit lazy. These other organisations are not like OWASP in terms of objectives, audience or membership. I remember being asked during an interview for this &amp;quot;shouldn't OWASP be the primary source of information&amp;quot; and I said no, OWASP's role is to promote application security - not promote itself. AppSec info appearing on other websites is a win - not a negative.&lt;br /&gt;
*  The importance of the (ISC)^2 website is not that (ISC)^2 is a direct competitor or the colors they used but that they inhabit the same &amp;quot;space&amp;quot; as OWASP and that their decisions about organization make their website easier for new people to use.  &lt;br /&gt;
*The suggestion is not necessarily to do away with the wiki but to clean it up and change a few key landing pages to be easier to follow.&lt;br /&gt;
* On p28 of the report, there is a recommendation to make the projects more consistency. I disagree, let projects lay out their content however they want - the audiences vary massively, and projects vary a lot too. OWASP is not ISC2 and I suspect never wants to be. ISC2 keeps getting used as an example - what about other community sites rather than commercial sales-orientated vendors like ISC2? At least OWASP has a memorable/writable name.&lt;br /&gt;
* Agree, a breadcrumb trail mentioned on p31 would be useful, but is still a challenge to define what the hierarchy might be&lt;br /&gt;
* Peer analysis on p32 is flawed. The organisation mentioned are not peers.&lt;br /&gt;
* Fascinating, p37 says &amp;quot;OWASP has the highest Alexa ranking&amp;quot;... err so why do we have to change so much?&lt;br /&gt;
* The &amp;quot;bounce rate&amp;quot; is mentioned as a negative here but fails to understand how some people use the site. The high number of &amp;quot;single page visitors&amp;quot; was also lauded by the report's authors as awful during the telephone interview, but they did not realise that some people use OWASP as a reference document, and use Google to search for &amp;quot;XSS cheat sheet&amp;quot; for example, then go to that page, use the information and then get on with their lives. There is no analysis of robots anywhere in this report, so the analysis of information presented about visitors is guesswork.&lt;br /&gt;
* The wikimedia style is arguably very good for ''some'' things but not others. I think the confusion is between consumers and contributers. Consumers want a site where navigation is easy and hierarchy is obvious, contributers want something where changes can quickly and easily be made and discussions had interactively. Remember that wikpedia encourages citations to backup information, something that is much less common in Development, especially AppSec where the &amp;quot;right&amp;quot; answer is often opinion rather than fact.&lt;br /&gt;
&lt;br /&gt;
== Thoughts on Platform Selection ==&lt;br /&gt;
&lt;br /&gt;
* p48 states there are two purposes for the OWASP website.... (1 Organisation visibility and membership promotion/participation and 2 Improve application security visibility...). Although this is stated within what is called &amp;quot;Option A&amp;quot;, it seems to apply to all three options. But more importantly, &amp;quot;Organisation visibility and membership promotion/participation&amp;quot; is not one of OWASP's objectives, values, purposes or principles. Who said that self-promotion is one of the website's purposes? If the only purpose is instead &amp;quot;Improve application security visibility...&amp;quot;, then the arguments for the 3 options need to be revisited e.g. the report says &amp;quot;These 2 purposes are at odds with each other&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Thoughts on Information Architecture ==&lt;br /&gt;
&lt;br /&gt;
* The proposed top level navigation on p50 is inward looking, and doesn't consider the site's audiences and their needs&lt;br /&gt;
* The &amp;quot;OWASP Podcast&amp;quot; is no longer updated - it is called &amp;quot;OWASP 24/7&amp;quot;&lt;br /&gt;
* The proposed design for the home page on p53 is not compatible with OWASP's activity level and ability to generate content frequently, specifically:&lt;br /&gt;
** Blog post frequency is typically 2-4 per month which would give the impression not much is happening&lt;br /&gt;
** Not sure how &amp;quot;latest news&amp;quot; is different to what appears on &amp;quot;blog&amp;quot; or &amp;quot;podcast&amp;quot; or &amp;quot;events&amp;quot; - the Global Connector is the most regular OWASP output, but that content also appear on the blog and OWASP 24/7&lt;br /&gt;
** OWASP 24/7 frequency is quite variable. Excellent content but old dates might put people off&lt;br /&gt;
** The events diary has never represented all the chapter and other local meetings going on, and therefore suggests OWASP is not active in many places when it actually is - most events listed on the current home page calendar are not OWASP events, but security sector events&lt;br /&gt;
** &amp;quot;AppSec feed&amp;quot; hasn't existed for many years now - it was extremely good at the time, but a spot on the home page with no content will look terrible&lt;br /&gt;
* The earlier section of the report suggests that most visitors want the Top 10, ASVS and Cheat Sheets. they are not mentioned anywhere on the proposed design&lt;br /&gt;
* Project drop down on p56 is OWASP-centric instead of audience-centric - who cares how OWASP categorises its own projects? It's important, but shouldn't be the prime way to find information.&lt;br /&gt;
* Project page mock-ups lack inspired thought&lt;br /&gt;
* How is &amp;quot;recent activity&amp;quot; on the projects page updated and who does it?&lt;br /&gt;
* The project wiki article page suggestion on p57 looks boring, and throws away lots of content on many project pages&lt;br /&gt;
* Breadcrumb trail and other things were mentioned as missing in the report discussion, but lots of those recommendations don't appear in the proposed designs - why not?&lt;br /&gt;
* The mockups and comparisons to &amp;quot;competitors&amp;quot; are possibly contentious because the description is not abstracted to a high enough level. For example, it should not be a case of ISC2 does navigation this way and they are ''competitors'' so we could/should do it this way or even 'their way looks better'. The correct abstraction is ''what is it about OWASPs navigation'' that is not working and does the way that ISC/others do navigation solve the problem. This is important because there are several ways to achieve what you want as long as you are asking the correct question.&lt;br /&gt;
&lt;br /&gt;
== Thoughts on Back Office and Infrastructure Architecture ==&lt;br /&gt;
This should certainly be a priority. It is difficult to volunteer for projects and efforts since work needed is not centralized. Additionally, communication seems to always go out of band to email which reduces overall teamwork and transparency. While the groups are very successful, we are losing volunteer work due to an inability to locate it.&lt;br /&gt;
&lt;br /&gt;
== Thoughts on Gamification ==&lt;br /&gt;
&lt;br /&gt;
* The pool of active contributors is not large enough to make gamification meaningful&lt;br /&gt;
&lt;br /&gt;
== Thoughts on Features and Release Roadmap ==&lt;br /&gt;
&lt;br /&gt;
* The report says on p64 that &amp;quot;[content on] MediaWiki older than 2 years and have not been accessed frequently should fall under the archive&amp;quot;. No thanks, the test should be whether the content is still relevant or useful. Not sue the report authors understand what OWASP's mission is about.&lt;br /&gt;
* &amp;quot;Automated scoring and badging&amp;quot; - no thanks&lt;br /&gt;
&lt;br /&gt;
== Thoughts on Search Functionality ==&lt;br /&gt;
&lt;br /&gt;
* Did I miss something - &amp;quot;search&amp;quot; doesn't seem to be mentioned in the report's recommendations, or &amp;quot;features and release roadmap&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Another topic... ==&lt;/div&gt;</summary>
		<author><name>Lbriner</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:OWASP_Initiatives_Global_Strategic_Focus/website_project&amp;diff=219228</id>
		<title>Talk:OWASP Initiatives Global Strategic Focus/website project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:OWASP_Initiatives_Global_Strategic_Focus/website_project&amp;diff=219228"/>
				<updated>2016-07-22T12:59:04Z</updated>
		
		<summary type="html">&lt;p&gt;Lbriner: Add comment about site trying to serve two separate audiences.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Thoughts on look and feel ==&lt;br /&gt;
&lt;br /&gt;
The Needs Assessment report has a good analysis of the current web site and provides a lot of valuable ideas for improvements. The mock-ups mostly look attractive. However, I disagree with some of the underlying assumptions:&lt;br /&gt;
* Wikipedia-style is derided. However, this style is wholly appropriate for the OWASP style IMHO. The OWASP web site could do worse than emulate Wikipedia '''more''' faithfully. Run towards Wikipedia, not away from it!&lt;br /&gt;
* The (ISC)^2 web site is put forward as a style to aspire to. I beg to differ: the current OWASP web site looks a lot more attractive to me than (ISC)^2's. The former is much easier on the eye. (ISC)^2 may draw attention through the use of striking colors and more graphic material. However, no additional useful information is conveyed. The net result is a feeling of weariness: my brain has to work hard to take in all these stimuli and I get very little in return. Remember that web sites are not competing for attention like billboards: unlike billboards, you visit web sites one by one. A good web site conveys its message while minimising collateral damage through information fatigue.&lt;br /&gt;
* Agree with both of the above. ISC2 is not a &amp;quot;competitor&amp;quot; and whilst the report has much to offer, focusing on ISC2, ISACA, ISA for comparisons seems a bit lazy. These other organisations are not like OWASP in terms of objectives, audience or membership. I remember being asked during an interview for this &amp;quot;shouldn't OWASP be the primary source of information&amp;quot; and I said no, OWASP's role is to promote application security - not promote itself. AppSec info appearing on other websites is a win - not a negative.&lt;br /&gt;
*  The importance of the (ISC)^2 website is not that (ISC)^2 is a direct competitor or the colors they used but that they inhabit the same &amp;quot;space&amp;quot; as OWASP and that their decisions about organization make their website easier for new people to use.  &lt;br /&gt;
*The suggestion is not necessarily to do away with the wiki but to clean it up and change a few key landing pages to be easier to follow.&lt;br /&gt;
* On p28 of the report, there is a recommendation to make the projects more consistency. I disagree, let projects lay out their content however they want - the audiences vary massively, and projects vary a lot too. OWASP is not ISC2 and I suspect never wants to be. ISC2 keeps getting used as an example - what about other community sites rather than commercial sales-orientated vendors like ISC2? At least OWASP has a memorable/writable name.&lt;br /&gt;
* Agree, a breadcrumb trail mentioned on p31 would be useful, but is still a challenge to define what the hierarchy might be&lt;br /&gt;
* Peer analysis on p32 is flawed. The organisation mentioned are not peers.&lt;br /&gt;
* Fascinating, p37 says &amp;quot;OWASP has the highest Alexa ranking&amp;quot;... err so why do we have to change so much?&lt;br /&gt;
* The &amp;quot;bounce rate&amp;quot; is mentioned as a negative here but fails to understand how some people use the site. The high number of &amp;quot;single page visitors&amp;quot; was also lauded by the report's authors as awful during the telephone interview, but they did not realise that some people use OWASP as a reference document, and use Google to search for &amp;quot;XSS cheat sheet&amp;quot; for example, then go to that page, use the information and then get on with their lives. There is no analysis of robots anywhere in this report, so the analysis of information presented about visitors is guesswork.&lt;br /&gt;
* The wikimedia style is arguably very good for ''some'' things but not others. I think the confusion is between consumers and contributers. Consumers want a site where navigation is easy and hierarchy is obvious, contributers want something where changes can quickly and easily be made and discussions had interactively. Remember that wikpedia encourages citations to backup information, something that is much less common in Development, especially AppSec where the &amp;quot;right&amp;quot; answer is often opinion rather than fact.&lt;br /&gt;
&lt;br /&gt;
== Thoughts on Platform Selection ==&lt;br /&gt;
&lt;br /&gt;
* p48 states there are two purposes for the OWASP website.... (1 Organisation visibility and membership promotion/participation and 2 Improve application security visibility...). Although this is stated within what is called &amp;quot;Option A&amp;quot;, it seems to apply to all three options. But more importantly, &amp;quot;Organisation visibility and membership promotion/participation&amp;quot; is not one of OWASP's objectives, values, purposes or principles. Who said that self-promotion is one of the website's purposes? If the only purpose is instead &amp;quot;Improve application security visibility...&amp;quot;, then the arguments for the 3 options need to be revisited e.g. the report says &amp;quot;These 2 purposes are at odds with each other&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Thoughts on Information Architecture ==&lt;br /&gt;
&lt;br /&gt;
* The proposed top level navigation on p50 is inward looking, and doesn't consider the site's audiences and their needs&lt;br /&gt;
* The &amp;quot;OWASP Podcast&amp;quot; is no longer updated - it is called &amp;quot;OWASP 24/7&amp;quot;&lt;br /&gt;
* The proposed design for the home page on p53 is not compatible with OWASP's activity level and ability to generate content frequently, specifically:&lt;br /&gt;
** Blog post frequency is typically 2-4 per month which would give the impression not much is happening&lt;br /&gt;
** Not sure how &amp;quot;latest news&amp;quot; is different to what appears on &amp;quot;blog&amp;quot; or &amp;quot;podcast&amp;quot; or &amp;quot;events&amp;quot; - the Global Connector is the most regular OWASP output, but that content also appear on the blog and OWASP 24/7&lt;br /&gt;
** OWASP 24/7 frequency is quite variable. Excellent content but old dates might put people off&lt;br /&gt;
** The events diary has never represented all the chapter and other local meetings going on, and therefore suggests OWASP is not active in many places when it actually is - most events listed on the current home page calendar are not OWASP events, but security sector events&lt;br /&gt;
** &amp;quot;AppSec feed&amp;quot; hasn't existed for many years now - it was extremely good at the time, but a spot on the home page with no content will look terrible&lt;br /&gt;
* The earlier section of the report suggests that most visitors want the Top 10, ASVS and Cheat Sheets. they are not mentioned anywhere on the proposed design&lt;br /&gt;
* Project drop down on p56 is OWASP-centric instead of audience-centric - who cares how OWASP categorises its own projects? It's important, but shouldn't be the prime way to find information.&lt;br /&gt;
* Project page mock-ups lack inspired thought&lt;br /&gt;
* How is &amp;quot;recent activity&amp;quot; on the projects page updated and who does it?&lt;br /&gt;
* The project wiki article page suggestion on p57 looks boring, and throws away lots of content on many project pages&lt;br /&gt;
* Breadcrumb trail and other things were mentioned as missing in the report discussion, but lots of those recommendations don't appear in the proposed designs - why not?&lt;br /&gt;
&lt;br /&gt;
== Thoughts on Back Office and Infrastructure Architecture ==&lt;br /&gt;
This should certainly be a priority. It is difficult to volunteer for projects and efforts since work needed is not centralized. Additionally, communication seems to always go out of band to email which reduces overall teamwork and transparency. While the groups are very successful, we are losing volunteer work due to an inability to locate it.&lt;br /&gt;
&lt;br /&gt;
== Thoughts on Gamification ==&lt;br /&gt;
&lt;br /&gt;
* The pool of active contributors is not large enough to make gamification meaningful&lt;br /&gt;
&lt;br /&gt;
== Thoughts on Features and Release Roadmap ==&lt;br /&gt;
&lt;br /&gt;
* The report says on p64 that &amp;quot;[content on] MediaWiki older than 2 years and have not been accessed frequently should fall under the archive&amp;quot;. No thanks, the test should be whether the content is still relevant or useful. Not sue the report authors understand what OWASP's mission is about.&lt;br /&gt;
* &amp;quot;Automated scoring and badging&amp;quot; - no thanks&lt;br /&gt;
&lt;br /&gt;
== Thoughts on Search Functionality ==&lt;br /&gt;
&lt;br /&gt;
* Did I miss something - &amp;quot;search&amp;quot; doesn't seem to be mentioned in the report's recommendations, or &amp;quot;features and release roadmap&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Another topic... ==&lt;/div&gt;</summary>
		<author><name>Lbriner</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:Password_length_%26_complexity&amp;diff=203410</id>
		<title>Talk:Password length &amp; complexity</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:Password_length_%26_complexity&amp;diff=203410"/>
				<updated>2015-11-16T11:53:07Z</updated>
		
		<summary type="html">&lt;p&gt;Lbriner: Added other topic based on KoreLogic video.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Several proposals for addition into article:&lt;br /&gt;
# Add threat model and a role of password complexity as possible mitigation:&lt;br /&gt;
#* Online guessing attacks&lt;br /&gt;
#* Offline guessing attacks&lt;br /&gt;
#* Breadth vs. targeted attacks&lt;br /&gt;
#* Relation between password storage and effectiveness of password policy[1]&lt;br /&gt;
# Psychology acceptance issues&lt;br /&gt;
#* If account is important for a system (e.g. staff vs. customer accounts, privileged vs. unprivileged, etc).&lt;br /&gt;
#* If service is important for a user (e.g. personal backup vs. bulletin board vs. movie ranking site vs. banking service, etc).&lt;br /&gt;
#* Theoretical limit for memorable passwords entropy per user/site, per user/all sites he use.&lt;br /&gt;
#* Password entering usability concerns (mobiles vs. desktop).&lt;br /&gt;
#* Presence of multiple factors of AuthN.&lt;br /&gt;
# Password policy implementations considerations&lt;br /&gt;
#* Preference length over &amp;quot;complexity&amp;quot; [link needed]&lt;br /&gt;
#* Gamification is a friend [link needed]&lt;br /&gt;
#* Heuristic-based over formal polices [2,3]&lt;br /&gt;
#* Known password blacklists&lt;br /&gt;
#* The pitfalls of &amp;quot;password strength meters&amp;quot;[2] ([[User:Lbriner|Luke Briner]])&lt;br /&gt;
# List of approved password polices&lt;br /&gt;
#* Strong polices: passwdqc, zxcvbn&lt;br /&gt;
#* Liberal polices?&lt;br /&gt;
#* libpathwell?&lt;br /&gt;
# Other aspects of password policy&lt;br /&gt;
#* Password expiration (pros and cons) [links needed]&lt;br /&gt;
#* Password history (pros and cons)&lt;br /&gt;
#* Client-side vs server-side&lt;br /&gt;
# Password generation&lt;br /&gt;
#* Link to entropy of random passwords on Wikipedia&lt;br /&gt;
#* Pronounceable passwords&lt;br /&gt;
# Something else?&lt;br /&gt;
&lt;br /&gt;
Btw, Wikipedia's [https://en.wikipedia.org/wiki/Password_strength Password Strength] page is good enough but have no direct recommendations for developers. It is rather good compilation of different opinions and researches. At least links are very useful.&lt;br /&gt;
&lt;br /&gt;
Materials:&lt;br /&gt;
&lt;br /&gt;
* [1] [http://research.microsoft.com/apps/pubs/?id=227130 An Administrator’s Guide to Internet Password Research] by Dinei Florencio ˆ, Cormac Herley, and Paul C. van Oorschot&lt;br /&gt;
* [2] [https://www.youtube.com/watch?v=zUM7i8fsf0g Your Password Complexity Requirements are Worthless] by KoreLogic&lt;br /&gt;
* [3] [http://password-policy-testing.wikidot.com/results Testing Password Polices] by adedov@&lt;br /&gt;
&lt;br /&gt;
--[[User:Adedov|Adedov]] ([[User talk:Adedov|talk]]) 06:05, 14 November 2015 (CST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The overall content is correct, but I have the following remarks : &lt;br /&gt;
&lt;br /&gt;
1. I corrected some syntactical errors in the text. For example, &amp;quot;is&amp;quot; was missing in the sentence &amp;quot;it is the most common form&amp;quot;, in the introduction.&lt;br /&gt;
&lt;br /&gt;
2. The introduction could insist on the idea that passwords are basically a means of authenticating users of a Web application, among other means, and that the choice of passwords or a stronger means like two-factors authentication really depends on the security needs of an application, based on risk evaluation and security specifications in the conception phase.&lt;br /&gt;
&lt;br /&gt;
3. In the introduction about the &amp;quot;Pros&amp;quot; and &amp;quot;Cons&amp;quot; of passwords, I would add in the &amp;quot;Cons&amp;quot; that we all suffer from having to manage and remember too many passwords. For a new Web application, one should consider the possibility of relying on a more global identity management system (such as some sort of &amp;quot;single sign on&amp;quot; or &amp;quot;reduced sign on&amp;quot; set for all or at least many applications in the corporation), instead of trying to generate yet another password. &lt;br /&gt;
&lt;br /&gt;
4. I think the details of password length, password complexity and password history should not be fixed too precisely, because it really depends on the security policies of each organization. The main point in general is that in security policies, there must be rules for password length (a minimum length should be defined), password complexity (the minimum complexity of passwords should be described) and password history (the minimum number of old passwords to check should be defined).  &lt;br /&gt;
&lt;br /&gt;
5. I would not present managing the history of passwords as a &amp;quot;nice to have&amp;quot; feature, but rather as a mandatory feature.&lt;br /&gt;
&lt;br /&gt;
Philippe Curmin&lt;br /&gt;
&lt;br /&gt;
== How to avoid similar passwords? ==&lt;br /&gt;
&lt;br /&gt;
In order to hinder users from using similar passwords or passwords with simple counters (&amp;quot;test1&amp;quot; -&amp;gt; &amp;quot;test2&amp;quot;) it would be nice to implement the [http://en.wikipedia.org/wiki/Levenshtein_distance Levenshtein Distance] for the change of passwords and only allow those with at least a minimum distance.&lt;br /&gt;
&lt;br /&gt;
The problem with the distance function is that I need to know the old password, which I shouldn't. If I save passwords as hashes the function doesn't work anymore.&lt;br /&gt;
&lt;br /&gt;
Is there already an algorithm to compare passwords without saving them as plain text? I can imagine something like a function that saves the structure of the phrase, i.e. &amp;quot;test1&amp;quot; consists of 4 alphabetical lowercase signs and one number - the same as in &amp;quot;test2&amp;quot;. But also in &amp;quot;ak9Me&amp;quot;. So it needs to be a bit more sophisticated.&lt;br /&gt;
&lt;br /&gt;
Any ideas?&lt;br /&gt;
&lt;br /&gt;
The linked KoreLogic video considers this in a much more straight-forward manner. Based on research of NTLM hashes which are easy to crack, it was noticed that all a password policy does is to make people use a capitalised word, a couple of numbers and perhaps a punctuation mark e.g. Denver2014! and this massively reduces the amount of brute-forcing required. The suggestion is to blacklist certain patterns (or you could at least warn the user that their pattern is weak) such as ullllldds and ullllldddds etc. What you can also do with that approach is to not allow the user to have the same pattern twice in a row, which would prevent things like test1 -&amp;gt; test2.&lt;br /&gt;
&lt;br /&gt;
It is not in use anywhere obvious on the web but is based on the latest real-world threat model from hackers.&lt;br /&gt;
--[[User:Lbriner|Luke Briner]] ([[User talk:LBriner|talk]]) 11:38, 16 November 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Password lifetime criteria ==&lt;br /&gt;
&lt;br /&gt;
Is there any advice or direction on how often a system should require a password to be changed?&lt;br /&gt;
&lt;br /&gt;
Passwords that change too often are much less likely to be committed to memory, which leads to more use of the dreaded sticky note on the monitor.&lt;br /&gt;
For instance, if a system typically has monthly access from users, and has a 90 day password change policy, this would lead to each password only being used ~3 times before requiring change.&lt;br /&gt;
&lt;br /&gt;
Dave Elton&lt;br /&gt;
&lt;br /&gt;
Not that much hard and fast direction (is there ever?) &lt;br /&gt;
&lt;br /&gt;
The question is about the threat model that password changing is supposed to prevent. Firstly, it can help mitigate using the same password across multiple web sites since passwords wouldn't all change at the same time. Secondly, it would require an attacker to crack a password within the password change frequency in order to make use of it (this is based on certain assumptions such as not changing password1 to password2 and the fact that the user has not used the password elsewhere in which case you are only as safe as the least safe site!). I used to work for a very large security company and their (corporate) policy required a change every 3 months. I think they assumed that the chances of a leak were fairly low with all their other measures in place. I'm also sure that plenty of people would say that there is no major value in the policy since unless you use a password manager, it becomes almost impossible to manage and if you do, you might as well just generate such a strong and unique password that it is unlikely to be cracked and won't be shared anywhere else which means there is no point changing it!&lt;br /&gt;
--[[User:Lbriner|Luke Briner]] ([[User talk:LBriner|talk]]) 11:22, 16 November 2015 (UTC)&lt;/div&gt;</summary>
		<author><name>Lbriner</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:Password_length_%26_complexity&amp;diff=203409</id>
		<title>Talk:Password length &amp; complexity</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:Password_length_%26_complexity&amp;diff=203409"/>
				<updated>2015-11-16T11:47:51Z</updated>
		
		<summary type="html">&lt;p&gt;Lbriner: /* Password lifetime criteria */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Several proposals for addition into article:&lt;br /&gt;
# Add threat model and a role of password complexity as possible mitigation:&lt;br /&gt;
#* Online guessing attacks&lt;br /&gt;
#* Offline guessing attacks&lt;br /&gt;
#* Breadth vs. targeted attacks&lt;br /&gt;
#* Relation between password storage and effectiveness of password policy[1]&lt;br /&gt;
# Psychology acceptance issues&lt;br /&gt;
#* If account is important for a system (e.g. staff vs. customer accounts, privileged vs. unprivileged, etc).&lt;br /&gt;
#* If service is important for a user (e.g. personal backup vs. bulletin board vs. movie ranking site vs. banking service, etc).&lt;br /&gt;
#* Theoretical limit for memorable passwords entropy per user/site, per user/all sites he use.&lt;br /&gt;
#* Password entering usability concerns (mobiles vs. desktop).&lt;br /&gt;
#* Presence of multiple factors of AuthN.&lt;br /&gt;
# Password policy implementations considerations&lt;br /&gt;
#* Preference length over &amp;quot;complexity&amp;quot; [link needed]&lt;br /&gt;
#* Gamification is a friend [link needed]&lt;br /&gt;
#* Heuristic-based over formal polices [2,3]&lt;br /&gt;
#* Known password blacklists&lt;br /&gt;
# List of approved password polices&lt;br /&gt;
#* Strong polices: passwdqc, zxcvbn&lt;br /&gt;
#* Liberal polices?&lt;br /&gt;
#* libpathwell?&lt;br /&gt;
# Other aspects of password policy&lt;br /&gt;
#* Password expiration (pros and cons) [links needed]&lt;br /&gt;
#* Password history (pros and cons)&lt;br /&gt;
#* Client-side vs server-side&lt;br /&gt;
# Password generation&lt;br /&gt;
#* Link to entropy of random passwords on Wikipedia&lt;br /&gt;
#* Pronounceable passwords&lt;br /&gt;
# Something else?&lt;br /&gt;
&lt;br /&gt;
Btw, Wikipedia's [https://en.wikipedia.org/wiki/Password_strength Password Strength] page is good enough but have no direct recommendations for developers. It is rather good compilation of different opinions and researches. At least links are very useful.&lt;br /&gt;
&lt;br /&gt;
Materials:&lt;br /&gt;
&lt;br /&gt;
* [1] [http://research.microsoft.com/apps/pubs/?id=227130 An Administrator’s Guide to Internet Password Research] by Dinei Florencio ˆ, Cormac Herley, and Paul C. van Oorschot&lt;br /&gt;
* [2] [https://www.youtube.com/watch?v=zUM7i8fsf0g Your Password Complexity Requirements are Worthless] by KoreLogic&lt;br /&gt;
* [3] [http://password-policy-testing.wikidot.com/results Testing Password Polices] by adedov@&lt;br /&gt;
&lt;br /&gt;
--[[User:Adedov|Adedov]] ([[User talk:Adedov|talk]]) 06:05, 14 November 2015 (CST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The overall content is correct, but I have the following remarks : &lt;br /&gt;
&lt;br /&gt;
1. I corrected some syntactical errors in the text. For example, &amp;quot;is&amp;quot; was missing in the sentence &amp;quot;it is the most common form&amp;quot;, in the introduction.&lt;br /&gt;
&lt;br /&gt;
2. The introduction could insist on the idea that passwords are basically a means of authenticating users of a Web application, among other means, and that the choice of passwords or a stronger means like two-factors authentication really depends on the security needs of an application, based on risk evaluation and security specifications in the conception phase.&lt;br /&gt;
&lt;br /&gt;
3. In the introduction about the &amp;quot;Pros&amp;quot; and &amp;quot;Cons&amp;quot; of passwords, I would add in the &amp;quot;Cons&amp;quot; that we all suffer from having to manage and remember too many passwords. For a new Web application, one should consider the possibility of relying on a more global identity management system (such as some sort of &amp;quot;single sign on&amp;quot; or &amp;quot;reduced sign on&amp;quot; set for all or at least many applications in the corporation), instead of trying to generate yet another password. &lt;br /&gt;
&lt;br /&gt;
4. I think the details of password length, password complexity and password history should not be fixed too precisely, because it really depends on the security policies of each organization. The main point in general is that in security policies, there must be rules for password length (a minimum length should be defined), password complexity (the minimum complexity of passwords should be described) and password history (the minimum number of old passwords to check should be defined).  &lt;br /&gt;
&lt;br /&gt;
5. I would not present managing the history of passwords as a &amp;quot;nice to have&amp;quot; feature, but rather as a mandatory feature.&lt;br /&gt;
&lt;br /&gt;
Philippe Curmin&lt;br /&gt;
&lt;br /&gt;
== How to avoid similar passwords? ==&lt;br /&gt;
&lt;br /&gt;
In order to hinder users from using similar passwords or passwords with simple counters (&amp;quot;test1&amp;quot; -&amp;gt; &amp;quot;test2&amp;quot;) it would be nice to implement the [http://en.wikipedia.org/wiki/Levenshtein_distance Levenshtein Distance] for the change of passwords and only allow those with at least a minimum distance.&lt;br /&gt;
&lt;br /&gt;
The problem with the distance function is that I need to know the old password, which I shouldn't. If I save passwords as hashes the function doesn't work anymore.&lt;br /&gt;
&lt;br /&gt;
Is there already an algorithm to compare passwords without saving them as plain text? I can imagine something like a function that saves the structure of the phrase, i.e. &amp;quot;test1&amp;quot; consists of 4 alphabetical lowercase signs and one number - the same as in &amp;quot;test2&amp;quot;. But also in &amp;quot;ak9Me&amp;quot;. So it needs to be a bit more sophisticated.&lt;br /&gt;
&lt;br /&gt;
Any ideas?&lt;br /&gt;
&lt;br /&gt;
The linked KoreLogic video considers this in a much more straight-forward manner. Based on research of NTLM hashes which are easy to crack, it was noticed that all a password policy does is to make people use a capitalised word, a couple of numbers and perhaps a punctuation mark e.g. Denver2014! and this massively reduces the amount of brute-forcing required. The suggestion is to blacklist certain patterns (or you could at least warn the user that their pattern is weak) such as ullllldds and ullllldddds etc. What you can also do with that approach is to not allow the user to have the same pattern twice in a row, which would prevent things like test1 -&amp;gt; test2.&lt;br /&gt;
&lt;br /&gt;
It is not in use anywhere obvious on the web but is based on the latest real-world threat model from hackers.&lt;br /&gt;
--[[User:Lbriner|Luke Briner]] ([[User talk:LBriner|talk]]) 11:38, 16 November 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Password lifetime criteria ==&lt;br /&gt;
&lt;br /&gt;
Is there any advice or direction on how often a system should require a password to be changed?&lt;br /&gt;
&lt;br /&gt;
Passwords that change too often are much less likely to be committed to memory, which leads to more use of the dreaded sticky note on the monitor.&lt;br /&gt;
For instance, if a system typically has monthly access from users, and has a 90 day password change policy, this would lead to each password only being used ~3 times before requiring change.&lt;br /&gt;
&lt;br /&gt;
Dave Elton&lt;br /&gt;
&lt;br /&gt;
Not that much hard and fast direction (is there ever?) &lt;br /&gt;
&lt;br /&gt;
The question is about the threat model that password changing is supposed to prevent. Firstly, it can help mitigate using the same password across multiple web sites since passwords wouldn't all change at the same time. Secondly, it would require an attacker to crack a password within the password change frequency in order to make use of it (this is based on certain assumptions such as not changing password1 to password2 and the fact that the user has not used the password elsewhere in which case you are only as safe as the least safe site!). I used to work for a very large security company and their (corporate) policy required a change every 3 months. I think they assumed that the chances of a leak were fairly low with all their other measures in place. I'm also sure that plenty of people would say that there is no major value in the policy since unless you use a password manager, it becomes almost impossible to manage and if you do, you might as well just generate such a strong and unique password that it is unlikely to be cracked and won't be shared anywhere else which means there is no point changing it!&lt;br /&gt;
--[[User:Lbriner|Luke Briner]] ([[User talk:LBriner|talk]]) 11:22, 16 November 2015 (UTC)&lt;/div&gt;</summary>
		<author><name>Lbriner</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:Password_length_%26_complexity&amp;diff=203408</id>
		<title>Talk:Password length &amp; complexity</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:Password_length_%26_complexity&amp;diff=203408"/>
				<updated>2015-11-16T11:41:44Z</updated>
		
		<summary type="html">&lt;p&gt;Lbriner: /* How to avoid similar passwords? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Several proposals for addition into article:&lt;br /&gt;
# Add threat model and a role of password complexity as possible mitigation:&lt;br /&gt;
#* Online guessing attacks&lt;br /&gt;
#* Offline guessing attacks&lt;br /&gt;
#* Breadth vs. targeted attacks&lt;br /&gt;
#* Relation between password storage and effectiveness of password policy[1]&lt;br /&gt;
# Psychology acceptance issues&lt;br /&gt;
#* If account is important for a system (e.g. staff vs. customer accounts, privileged vs. unprivileged, etc).&lt;br /&gt;
#* If service is important for a user (e.g. personal backup vs. bulletin board vs. movie ranking site vs. banking service, etc).&lt;br /&gt;
#* Theoretical limit for memorable passwords entropy per user/site, per user/all sites he use.&lt;br /&gt;
#* Password entering usability concerns (mobiles vs. desktop).&lt;br /&gt;
#* Presence of multiple factors of AuthN.&lt;br /&gt;
# Password policy implementations considerations&lt;br /&gt;
#* Preference length over &amp;quot;complexity&amp;quot; [link needed]&lt;br /&gt;
#* Gamification is a friend [link needed]&lt;br /&gt;
#* Heuristic-based over formal polices [2,3]&lt;br /&gt;
#* Known password blacklists&lt;br /&gt;
# List of approved password polices&lt;br /&gt;
#* Strong polices: passwdqc, zxcvbn&lt;br /&gt;
#* Liberal polices?&lt;br /&gt;
#* libpathwell?&lt;br /&gt;
# Other aspects of password policy&lt;br /&gt;
#* Password expiration (pros and cons) [links needed]&lt;br /&gt;
#* Password history (pros and cons)&lt;br /&gt;
#* Client-side vs server-side&lt;br /&gt;
# Password generation&lt;br /&gt;
#* Link to entropy of random passwords on Wikipedia&lt;br /&gt;
#* Pronounceable passwords&lt;br /&gt;
# Something else?&lt;br /&gt;
&lt;br /&gt;
Btw, Wikipedia's [https://en.wikipedia.org/wiki/Password_strength Password Strength] page is good enough but have no direct recommendations for developers. It is rather good compilation of different opinions and researches. At least links are very useful.&lt;br /&gt;
&lt;br /&gt;
Materials:&lt;br /&gt;
&lt;br /&gt;
* [1] [http://research.microsoft.com/apps/pubs/?id=227130 An Administrator’s Guide to Internet Password Research] by Dinei Florencio ˆ, Cormac Herley, and Paul C. van Oorschot&lt;br /&gt;
* [2] [https://www.youtube.com/watch?v=zUM7i8fsf0g Your Password Complexity Requirements are Worthless] by KoreLogic&lt;br /&gt;
* [3] [http://password-policy-testing.wikidot.com/results Testing Password Polices] by adedov@&lt;br /&gt;
&lt;br /&gt;
--[[User:Adedov|Adedov]] ([[User talk:Adedov|talk]]) 06:05, 14 November 2015 (CST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The overall content is correct, but I have the following remarks : &lt;br /&gt;
&lt;br /&gt;
1. I corrected some syntactical errors in the text. For example, &amp;quot;is&amp;quot; was missing in the sentence &amp;quot;it is the most common form&amp;quot;, in the introduction.&lt;br /&gt;
&lt;br /&gt;
2. The introduction could insist on the idea that passwords are basically a means of authenticating users of a Web application, among other means, and that the choice of passwords or a stronger means like two-factors authentication really depends on the security needs of an application, based on risk evaluation and security specifications in the conception phase.&lt;br /&gt;
&lt;br /&gt;
3. In the introduction about the &amp;quot;Pros&amp;quot; and &amp;quot;Cons&amp;quot; of passwords, I would add in the &amp;quot;Cons&amp;quot; that we all suffer from having to manage and remember too many passwords. For a new Web application, one should consider the possibility of relying on a more global identity management system (such as some sort of &amp;quot;single sign on&amp;quot; or &amp;quot;reduced sign on&amp;quot; set for all or at least many applications in the corporation), instead of trying to generate yet another password. &lt;br /&gt;
&lt;br /&gt;
4. I think the details of password length, password complexity and password history should not be fixed too precisely, because it really depends on the security policies of each organization. The main point in general is that in security policies, there must be rules for password length (a minimum length should be defined), password complexity (the minimum complexity of passwords should be described) and password history (the minimum number of old passwords to check should be defined).  &lt;br /&gt;
&lt;br /&gt;
5. I would not present managing the history of passwords as a &amp;quot;nice to have&amp;quot; feature, but rather as a mandatory feature.&lt;br /&gt;
&lt;br /&gt;
Philippe Curmin&lt;br /&gt;
&lt;br /&gt;
== How to avoid similar passwords? ==&lt;br /&gt;
&lt;br /&gt;
In order to hinder users from using similar passwords or passwords with simple counters (&amp;quot;test1&amp;quot; -&amp;gt; &amp;quot;test2&amp;quot;) it would be nice to implement the [http://en.wikipedia.org/wiki/Levenshtein_distance Levenshtein Distance] for the change of passwords and only allow those with at least a minimum distance.&lt;br /&gt;
&lt;br /&gt;
The problem with the distance function is that I need to know the old password, which I shouldn't. If I save passwords as hashes the function doesn't work anymore.&lt;br /&gt;
&lt;br /&gt;
Is there already an algorithm to compare passwords without saving them as plain text? I can imagine something like a function that saves the structure of the phrase, i.e. &amp;quot;test1&amp;quot; consists of 4 alphabetical lowercase signs and one number - the same as in &amp;quot;test2&amp;quot;. But also in &amp;quot;ak9Me&amp;quot;. So it needs to be a bit more sophisticated.&lt;br /&gt;
&lt;br /&gt;
Any ideas?&lt;br /&gt;
&lt;br /&gt;
The linked KoreLogic video considers this in a much more straight-forward manner. Based on research of NTLM hashes which are easy to crack, it was noticed that all a password policy does is to make people use a capitalised word, a couple of numbers and perhaps a punctuation mark e.g. Denver2014! and this massively reduces the amount of brute-forcing required. The suggestion is to blacklist certain patterns (or you could at least warn the user that their pattern is weak) such as ullllldds and ullllldddds etc. What you can also do with that approach is to not allow the user to have the same pattern twice in a row, which would prevent things like test1 -&amp;gt; test2.&lt;br /&gt;
&lt;br /&gt;
It is not in use anywhere obvious on the web but is based on the latest real-world threat model from hackers.&lt;br /&gt;
--[[User:Lbriner|Luke Briner]] ([[User talk:LBriner|talk]]) 11:38, 16 November 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Password lifetime criteria ==&lt;br /&gt;
&lt;br /&gt;
Is there any advice or direction on how often a system should require a password to be changed?&lt;br /&gt;
&lt;br /&gt;
Passwords that change too often are much less likely to be committed to memory, which leads to more use of the dreaded sticky note on the monitor.&lt;br /&gt;
For instance, if a system typically has monthly access from users, and has a 90 day password change policy, this would lead to each password only being used ~3 times before requiring change.&lt;br /&gt;
&lt;br /&gt;
Dave Elton&lt;/div&gt;</summary>
		<author><name>Lbriner</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:Password_Storage_Cheat_Sheet&amp;diff=203403</id>
		<title>Talk:Password Storage Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Talk:Password_Storage_Cheat_Sheet&amp;diff=203403"/>
				<updated>2015-11-16T11:22:38Z</updated>
		
		<summary type="html">&lt;p&gt;Lbriner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1) It is not clear that the slow hash is preferred over an HMAC storage format and why you would choose HMAC over slow hash.&lt;br /&gt;
2) Ideally, some mention should be made of the bcrypt-style storage format where cost, salt and hash are all stored together, which permits a very easy way to increase cost over time without breaking existing hashes. I am unsure of the scrypt format and I don't think PBKDF2 stores it this way by default. The format should be recommended since it then allows the contingency work mentioned further down.&lt;br /&gt;
&lt;br /&gt;
--[[User:Lbriner|Luke Briner]] ([[User talk:LBriner|talk]]) 11:22, 16 November 2015 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Suggest take in account planned/actual scale of a system to protect. Bigger systems probably need more layers of defense, like additional authN server + secret salt (local parameters) + traditional KDF for storage. See Solar Designer's [http://openwall.com/presentations/YaC2012-Password-Hashing-At-Scale/ slides] from Yac 2012 (unfortunately, there is no English video).&lt;br /&gt;
&lt;br /&gt;
--[[User:Adedov|Adedov]] ([[User talk:Adedov|talk]]) 07:28, 13 November 2015 (CST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Increasing work factor with PBKDF2 etc. can result in an application-level DoS vector. This can be abused in a passively distributed manner by inducing CSRF authentication attempts and hence standard CSRF mitigation should be applied to authentication systems too. Mitigating automated DoS attacks on this vector can be achieved with CAPTCHA but which users should be required to complete a CAPTCHA isn't as simple; linking it to a session and failed authentication attempts will not work as an automated attack can simply request a new session token. Perhaps it should be linked to IP or subnet?&lt;br /&gt;
&lt;br /&gt;
--[[User:Arran Schlosberg|Arran Schlosberg]] , 19 Feb 2014 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Setting a unlimited length for passwords can be an easy DOS vector. http://arstechnica.com/security/2013/09/long-passwords-are-good-but-too-much-length-can-be-bad-for-security/&lt;br /&gt;
&lt;br /&gt;
--[[User:jmanico|Jim Manico]] , 16 Sept 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
More on the previous dicussions on secret salts. They are usually referred to as pepper on practice. The advantage of having a pepper for the passwords is that you can keep them on the web server. Thus, if the hacker has access to the database data and he has access to all hashed passwords (doesn't matter if they are created using PBKDF2, bcrypt or scrypt, or even simple salt+sha2), he still needs to also hack the web server to obtain the pepper, or fixed salt. It isn't cryptographically significant, but it adds yet another layer to the information the hacker has to obtain before starting to do the brute force.&lt;br /&gt;
I think it would be nice if it was possible to add it to the cheat sheet.&lt;br /&gt;
&lt;br /&gt;
--[[User:Manuel Aude Morales|Manuel Aude Morales]] , 18 March 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I was considering adding bcrypt to the article. I checked previous versions and noticed it was in it on January, but it was taken out during editions in March. From my knowledge, bcrypt is still a widely recommended adaptative hashing function. While it has limitations (particularly, a 55 bytes limitation) and doesn't protect to all hardware accelerated attacks, it does protect against GPU and works as good as PBKDF2 for most cases. Also, scrypt hasn't existed for nearly as much as bcrypt, and thus it isn't as widely tested or supported by platforms.&lt;br /&gt;
&lt;br /&gt;
Would it be ok to add a table making a comparison between PBKDF2, bcrypt and scrypt, with suggestions on when to use (and clarifying that the three are valid options)?&lt;br /&gt;
--[[User:Manuel Aude Morales|Manuel Aude Morales]] , 18 March 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Is there any utility in incuding credential data in the input to the protective function? I don't understand what it adds, given a sufficiently random salt. [[User:James Sanderson|James Sanderson]] ([[User talk:James Sanderson|talk]]) 17:25, 2 July 2014 (CDT)&lt;/div&gt;</summary>
		<author><name>Lbriner</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Password_Storage_Cheat_Sheet&amp;diff=203402</id>
		<title>Password Storage Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Password_Storage_Cheat_Sheet&amp;diff=203402"/>
				<updated>2015-11-16T11:19:14Z</updated>
		
		<summary type="html">&lt;p&gt;Lbriner: Tidy up the phrasing of the second sentence.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; __NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:Cheatsheets-header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}''' &lt;br /&gt;
= Introduction  =&lt;br /&gt;
 __TOC__{{TOC hidden}}&lt;br /&gt;
&lt;br /&gt;
Media covers the theft of large collections of passwords on an almost daily basis. Media coverage of password theft discloses the password storage scheme, the weakness of that scheme, and often discloses a large population of compromised credentials that can affect multiple web sites or other applications. This article provides guidance on properly storing passwords, secret question responses, and similar credential information. Proper storage helps prevent theft, compromise, and malicious use of credentials.&lt;br /&gt;
Information systems store passwords and other credentials in a variety of protected forms. Common vulnerabilities allow the theft of protected passwords through attack vectors such as SQL Injection. Protected passwords can also be stolen from artifacts such as logs, dumps, and backups.&lt;br /&gt;
&lt;br /&gt;
Specific guidance herein protects against stored credential theft but the bulk of guidance aims to prevent credential compromise. That is, this guidance helps designs resist revealing users’ credentials or allowing system access in the event threats steal protected credential information. For more information and a thorough treatment of this topic, refer to the Secure Password Storage Threat Model here [http://goo.gl/Spvzs http://goo.gl/Spvzs].&lt;br /&gt;
&lt;br /&gt;
= Guidance =&lt;br /&gt;
&lt;br /&gt;
==  Do not limit the character set and set long max lengths for credentials ==&lt;br /&gt;
&lt;br /&gt;
Some organizations restrict the 1) types of special characters and 2) length of credentials accepted by systems because of their inability to prevent SQL Injection, Cross-site scripting, command-injection and other forms of injection attacks. These restrictions, while well-intentioned, facilitate certain simple attacks such as brute force.&lt;br /&gt;
&lt;br /&gt;
Do not allow short or no-length passwords and do not apply character set, or encoding restrictions on the entry or storage of credentials. Continue applying encoding, escaping, masking, outright omission, and other best practices to eliminate injection risks.&lt;br /&gt;
&lt;br /&gt;
A reasonable long password length is 160. Very long password policies can lead to DOS in certain circumstances[http://arstechnica.com/security/2013/09/long-passwords-are-good-but-too-much-length-can-be-bad-for-security/].&lt;br /&gt;
&lt;br /&gt;
== Use a cryptographically strong credential-specific salt ==&lt;br /&gt;
&lt;br /&gt;
A salt is fixed-length cryptographically-strong random value. Append credential data to the salt and use this as input to a protective function. Store the protected form appended to the salt as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[protected form] = [salt] + protect([protection func], [salt] + [credential]);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Follow these practices to properly implement credential-specific salts:&lt;br /&gt;
&lt;br /&gt;
* Generate a unique salt upon creation of each stored credential (not just per user or system wide);&lt;br /&gt;
* Use cryptographically-strong random [*3] data;&lt;br /&gt;
* As storage permits, use a 32bit or 64b salt (actual size dependent on protection function);&lt;br /&gt;
* Scheme security does not depend on hiding, splitting, or otherwise obscuring the salt.&lt;br /&gt;
&lt;br /&gt;
Salts serve two purposes: 1) prevent the protected form from revealing two identical credentials and 2) augment entropy fed to protecting function without relying on credential complexity. The second aims to make pre-computed lookup attacks [*2] on an individual credential and time-based attacks on a population intractable.&lt;br /&gt;
&lt;br /&gt;
== Impose infeasible verification on attacker ==&lt;br /&gt;
&lt;br /&gt;
The function used to protect stored credentials should balance attacker and defender verification. The defender needs an acceptable response time for verification of users’ credentials during peak use. However, the time required to map &amp;lt;code&amp;gt;&amp;lt;credential&amp;gt; → &amp;lt;protected form&amp;gt;&amp;lt;/code&amp;gt;  must remain beyond threats’ hardware (GPU, FPGA) and technique (dictionary-based, brute force, etc) capabilities.&lt;br /&gt;
&lt;br /&gt;
Two approaches facilitate this, each imperfectly.&lt;br /&gt;
&lt;br /&gt;
=== Leverage an adaptive one-way function ===&lt;br /&gt;
&lt;br /&gt;
Adaptive one-way functions compute a one-way (irreversible) transform. Each function allows configuration of ‘work factor’. Underlying mechanisms used to achieve irreversibility and govern work factors (such as time, space, and parallelism) vary between functions and remain unimportant to this discussion. &lt;br /&gt;
&lt;br /&gt;
Select:&lt;br /&gt;
&lt;br /&gt;
* PBKDF2 [*4] when FIPS certification or enterprise support on many platforms is required;&lt;br /&gt;
* scrypt [*5] where resisting any/all hardware accelerated attacks is necessary but support isn’t.&lt;br /&gt;
* bcrypt where PBKDF2 or scrypt support is not available.&lt;br /&gt;
&lt;br /&gt;
Example protect() pseudo-code follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;return [salt] + pbkdf2([salt], [credential], c=10000); &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Designers select one-way adaptive functions to implement protect() because these functions can be configured to cost (linearly or exponentially) more than a hash function to execute. Defenders adjust work factor to keep pace with threats’ increasing hardware capabilities. Those implementing adaptive one-way functions must tune work factors so as to impede attackers while providing acceptable user experience and scale. &lt;br /&gt;
&lt;br /&gt;
Additionally, adaptive one-way functions do not effectively prevent reversal of common dictionary-based credentials (users with password ‘password’) regardless of user population size or salt usage.&lt;br /&gt;
&lt;br /&gt;
==== Work Factor ====&lt;br /&gt;
&lt;br /&gt;
Since resources are normally considered limited, a common rule of thumb for tuning the work factor (or cost) is to make protect() run as slow as possible without affecting the users' experience and without increasing the need for extra hardware over budget. So, if the registration and authentication's cases accept protect() taking up to 1 second, you can tune the cost so that it takes 1 second to run on your hardware. This way, it shouldn't be so slow that your users become affected, but it should also affect the attackers' attempt as much as possible. &lt;br /&gt;
&lt;br /&gt;
While there is a minimum number of iterations recommended to ensure data safety, this value changes every year as technology improves. An example of the iteration count chosen by a well known company is the 10,000 iterations Apple uses for its iTunes passwords (using PBKDF2)[http://images.apple.com/ipad/business/docs/iOS_Security_May12.pdf](PDF file). However, it is critical to understand that a single work factor does not fit all designs. Experimentation is important.[*6]&lt;br /&gt;
&lt;br /&gt;
=== Leverage Keyed functions ===&lt;br /&gt;
&lt;br /&gt;
Keyed functions, such as HMACs, compute a one-way (irreversible) transform using a private key and given input. For example, HMACs inherit properties of hash functions including their speed, allowing for near instant verification. Key size imposes infeasible size- and/or space- requirements on compromise--even for common credentials (aka password = ‘password’).&lt;br /&gt;
Designers protecting stored credentials with keyed functions:&lt;br /&gt;
&lt;br /&gt;
* Use a single “site-wide” key;&lt;br /&gt;
* Protect this key as any private key using best practices;&lt;br /&gt;
* Store the key outside the credential store (aka: not in the database);&lt;br /&gt;
* Generate the key using cryptographically-strong pseudo-random data;&lt;br /&gt;
* Do not worry about output block size (i.e. SHA-256 vs. SHA-512).&lt;br /&gt;
&lt;br /&gt;
Example protect() pseudo-code follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;return [salt] + HMAC-SHA-256([key], [salt] + [credential]);  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upholding security improvement over (solely) salted schemes relies on proper key management.&lt;br /&gt;
&lt;br /&gt;
== Design password storage assuming eventual compromise ==&lt;br /&gt;
&lt;br /&gt;
The frequency and ease with which threats steal protected credentials demands “design for failure”. Having detected theft, a credential storage scheme must support continued operation by marking credential data compromised and engaging alternative credential validation workflows as follows:&lt;br /&gt;
&lt;br /&gt;
# Protect the user’s account&lt;br /&gt;
## Invalidate authentication ‘shortcuts’ disallowing login without 2nd factors or secret questions.&lt;br /&gt;
## Disallow changes to user accounts such as editing secret questions and changing account multi-factor configuration settings.&lt;br /&gt;
# Load and use new protection scheme&lt;br /&gt;
## Load a new (stronger) protect(credential) function&lt;br /&gt;
## Include version information stored with form&lt;br /&gt;
## Set ‘tainted’/‘compromised’ bit until user resets credentials&lt;br /&gt;
## Rotate any keys and/or adjust protection function parameters (iter count)&lt;br /&gt;
## Increment scheme version number&lt;br /&gt;
# When user logs in:&lt;br /&gt;
## Validate credentials based on stored version (old or new); if old demand 2nd factor or secret answers&lt;br /&gt;
## Prompt user for credential change, apologize, &amp;amp; conduct out-of-band confirmation&lt;br /&gt;
## Convert stored credentials to new scheme as user successfully log in&lt;br /&gt;
&lt;br /&gt;
= References=&lt;br /&gt;
&lt;br /&gt;
* [1] Morris, R. Thompson, K., Password Security: A Case History, 04/03/1978, p4: http://cm.bell-labs.com/cm/cs/who/dmr/passwd.ps&lt;br /&gt;
* [2] Space-based (Lookup) attacks: Space-time Tradeoff: Hellman, M., Crypanalytic Time-Memory Trade-Off, Transactions of Information Theory, Vol. IT-26, No. 4, July, 1980 http://www-ee.stanford.edu/~hellman/publications/36.pdf Rainbow Tables -http://ophcrack.sourceforge.net/tables.php&lt;br /&gt;
* [3] For example: [http://docs.oracle.com/javase/6/docs/api/java/security/SecureRandom.html SecureRandom.html].&lt;br /&gt;
* [4] Kalski, B., PKCS #5: Password-Based Cryptography Specification Version 2.0, IETF RFC 2898, September, 2000, p9 http://www.ietf.org/rfc/rfc2898.txt&lt;br /&gt;
* [5] Percival, C., Stronger Key Derivation Via Sequential Memory-Hard Functions, BSDCan ‘09, May, 2009 http://www.tarsnap.com/scrypt/scrypt.pdf&lt;br /&gt;
* [6] For instance, one might set work factors targeting the following run times: (1) Password-generated session key - fraction of a second; (2) User credential - ~0.5 seconds; (3) Password-generated site (or other long-lived) key - potentially a second or more.&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
John Steven - john.steven[at]owasp.org (author)&amp;lt;br/&amp;gt;&lt;br /&gt;
Jim Manico - jim[at]owasp.org (editor)&lt;br /&gt;
&lt;br /&gt;
== Other Cheatsheets ==&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation_Body}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Lbriner</name></author>	</entry>

	</feed>