Skip to main content

password-based-authentication-pattern

Security pattern for implementing password-based authentication. Use when designing login systems with username/password, implementing password storage, hashing, salting, peppering, password policies, or password reset flows. Specialization of the Authentication pattern.

来源信息

仓库
igbuend/grimbard
最近来源活动
2026年2月12日 07:57
检测到的 SKILL.md 语言
英语
星标
9
分支
1

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
password-based-authentication-pattern
description
Security pattern for implementing password-based authentication. Use when designing login systems with username/password, implementing password storage, hashing, salting, peppering, password policies, or password reset flows. Specialization of the Authentication pattern.
# Password-Based Authentication Security Pattern A subject proves identity by providing a correct identifier (username/email) and corresponding password. Relies on the assumption that only the actual owner knows the correct password. ## Core Components | Role | Type | Responsibility | |------|------|----------------| | **Subject** | Entity | Provides identifier and password | | **Enforcer** | Enforcement Point | Ensures authentication before action processing | | **Verification Manager** | Entity | Collects inputs for password verification | | **Comparator** | Decision Point | Compares hash values | | **Hasher** | Cryptographic Primitive | Calculates hash values | | **Password Store** | Storage | Keeps hash values for registered identities | | **Registrar** | Entity | Handles subject registration | | **Resetter** | Entity | Handles credential reset | | **Password Policy** | Information Point | Rules passwords must satisfy | | **SRNG** | Cryptographic Primitive | Secure random number generator | ### Data Elements - **id**: Identifier (username, email) - **pwd**: Password provided by Subject - **hash(pwd)**: Hash value of password - **salt**: Random value unique per Subject - **pepper**: System-wide secret for additional protection ## Password Hashing ### Required Approach 1. Use modern password hashing algorithms: **Argon2**, **scrypt**, **bcrypt**, or **PBKDF2** 2. Never use general-purpose hash functions (MD5, SHA-1, SHA-256) alone 3. Always use salting (typically automatic with modern algorithms) ### Salting - Add random string unique per Subject before hashing - Ensures identical passwords produce different hashes - Salt stored in plaintext alongside hash - Modern algorithms handle salt automatically ### Peppering (Optional) - System-wide secret added before hashing - Stored separately from password store - Provides additional protection if password store is compromised ## Registration Flow Three approaches for credential determination: 1. Subject provides identifier and password 2. Subject provides identifier; Registrar selects password 3. Registrar selects both identifier and password Upon completion: - Password Store contains: identifier, hash(salted password), salt - Subject possesses: identifier and password ## Password Policy Enforce policies including: - Minimum/maximum length - Character requirements - Common password blacklist - Breach database checking ## Password Reset 1. Verify Subject identity through out-of-band channel 2. Generate time-limited reset token 3. Never reveal whether account exists 4. Invalidate existing sessions after reset 5. Force re-authentication ## Security Considerations ### Password Store Protection - Encrypt at rest - Restrict access - Monitor for breaches - Detect tampering ### Identifier Security - Don't rely on identifier secrecy - Prevent enumeration attacks - Use consistent timing for valid/invalid identifiers ### Verification Timing - Use constant-time comparison - Prevent timing attacks ## Implementation Checklist - [ ] Using Argon2/scrypt/bcrypt/PBKDF2 - [ ] Automatic salting enabled - [ ] Password policy enforced - [ ] Secure reset flow implemented - [ ] Rate limiting on login attempts - [ ] Constant-time hash comparison - [ ] No credential logging ## References - Source: https://securitypatterns.distrinet-research.be/patterns/01_01_002__authentication_pwd/ - OWASP Password Storage Cheat Sheet
在 GitHub 查看