Mật khẩu, đôi khi được gọi là mật mã, là một bí mật được ghi nhớ, thường là một chuỗi ký tự, được sử dụng để xác nhận danh tính của người dùng. Sử dụng thuật ngữ của Nguyên tắc nhận dạng kỹ thuật số NIST, bí mật được ghi nhớ bởi một bên gọi là "nguyên đơn" trong khi bên xác minh danh tính của nguyên đơn được gọi là người "xác minh". Khi nguyên đơn thể hiện thành công kiến thức về mật khẩu cho người xác minh thông qua giao thức xác thực được thiết lập, người xác minh có thể suy ra danh tính của nguyên đơn. Nói chung, một mật khẩu là một chuỗi các ký tự tùy ý bao gồm chữ cái, chữ số, hoặc các biểu tượng khác. Nếu các ký tự cho phép bị ràng buộc là số, thì bí mật tương ứng đôi khi được gọi là số nhận dạng cá nhân (personal identification number - PIN). Mật khẩu không cần phải là một từ thực tế; thật vậy, một từ không tồn tại (theo nghĩa từ điển) có thể khó đoán hơn, đó là một thuộc tính mong muốn của mật khẩu. Một bí mật ghi nhớ bao gồm một chuỗi các từ hoặc văn bản khác được phân tách bằng dấu cách đôi khi được gọi là cụm mật khẩu. Một cụm mật khẩu tương tự như mật khẩu trong cách sử dụng, nhưng cụm mật khẩu thường dài hơn để tăng cường bảo mật. Tính bảo mật của hệ thống được bảo vệ bằng mật khẩu phụ thuộc vào một số yếu tố. Hệ thống tổng thể phải được thiết kế để bảo mật tốt, với khả năng bảo vệ chống lại virus máy tính, các cuộc tấn công trung gian và tương tự. Các vấn đề an ninh vật lý cũng là một mối quan tâm, từ việc ngăn chặn việc lướt vai cho đến các mối đe dọa vật lý phức tạp hơn như máy quay video và người đánh hơi bàn phím. Mật khẩu nên được chọn sao cho kẻ tấn công khó đoán và kẻ tấn công khó phát hiện bằng cách sử dụng bất kỳ kế hoạch tấn công tự động có sẵn nào. Xem độ mạnh của mật khẩu và bảo mật máy tính để biết thêm thông tin. Ngày nay, thông thường các hệ thống máy tính sẽ ẩn mật khẩu khi chúng được gõ. Mục đích của biện pháp này là để ngăn người ngoài đọc mật khẩu; tuy nhiên, một số ý kiến cho rằng cách làm này có thể dẫn đến sai lầm và căng thẳng, khuyến khích người dùng chọn mật khẩu yếu. Thay vào đó, người dùng nên có tùy chọn hiển thị hoặc ẩn mật khẩu khi họ nhập chúng. Các điều khoản kiểm soát truy cập hiệu quả có thể buộc các biện pháp cực đoan đối với tội phạm tìm cách lấy mật khẩu hoặc mã thông báo sinh trắc học. Các biện pháp cực đoan hơn bao gồm tống tiền, phân tích ống cao su và tấn công kênh bên. Một số vấn đề quản lý mật khẩu cụ thể dưới đây phải được xem xét khi suy nghĩ, lựa chọn và xử lý mật khẩu. Một cách khác để giới hạn tốc độ mà kẻ tấn công có thể đoán được mật khẩu là giới hạn tổng số lần đoán có thể được thực hiện. Mật khẩu có thể bị vô hiệu hóa, yêu cầu đặt lại, sau một số ít dự đoán sai liên tiếp (giả sử là 5); và người dùng có thể được yêu cầu phải thay đổi mật khẩu sau số lần đoán sai tích lũy lớn hơn (giả sử 30), để ngăn kẻ tấn công tạo ra một số lượng lớn các dự đoán sai tùy ý bằng cách xen kẽ chúng giữa các dự đoán tốt do chủ sở hữu mật khẩu hợp pháp đưa ra. Kẻ tấn công có thể sử dụng kiến thức về giảm thiểu này để thực hiện một cuộc tấn công từ chối dịch vụ chống lại người dùng bằng cách cố ý khóa người dùng khỏi thiết bị của họ; sự từ chối dịch vụ này có thể mở ra những con đường khác để kẻ tấn công thao túng tình hình thành lợi thế của chúng thông qua kỹ thuật xã hội. Một số hệ thống máy tính lưu trữ mật khẩu người dùng dưới dạng văn bản thô, dựa vào đó để so sánh các nỗ lực đăng nhập của người dùng. Nếu kẻ tấn công giành được quyền truy cập vào kho lưu trữ mật khẩu nội bộ như vậy, thì tất cả mật khẩu và tất cả các tài khoản người dùng sẽ bị xâm phạm. Nếu một số người dùng sử dụng cùng một mật khẩu cho các tài khoản trên các hệ thống khác nhau, những hệ thống đó cũng sẽ bị xâm phạm. Các hệ thống an toàn hơn lưu trữ từng mật khẩu ở dạng được bảo vệ bằng mật mã, do đó, việc truy cập vào mật khẩu thực tế sẽ vẫn khó khăn đối với một kẻ rình mò có quyền truy cập nội bộ vào hệ thống, trong khi vẫn có thể xác thực các nỗ lực truy cập của người dùng. Các hệ thống an toàn nhất không lưu trữ mật khẩu, mà chỉ có dẫn xuất một chiều, chẳng hạn như đa thức, mô đun hoặc hàm băm nâng cao. Roger Needham đã phát minh ra cách tiếp cận phổ biến hiện nay là chỉ lưu trữ một dạng "băm" của mật khẩu văn bản gốc. Khi người dùng nhập mật khẩu trên một hệ thống như vậy, phần mềm xử lý mật khẩu sẽ chạy qua thuật toán băm mật mã và nếu giá trị băm được tạo từ mục nhập của người dùng khớp với hàm băm được lưu trữ trong cơ sở dữ liệu mật khẩu, người dùng được phép truy cập. Giá trị băm được tạo bằng cách áp dụng hàm băm mật mã cho một chuỗi bao gồm mật khẩu được gửi và, trong nhiều triển khai, một giá trị khác được gọi là muối (salt). Một giá trị muối ngăn chặn kẻ tấn công dễ dàng xây dựng một danh sách các giá trị băm cho mật khẩu phổ biến và ngăn chặn các nỗ lực bẻ khóa mật khẩu trên tất cả người dùng. MD5 và SHA1 là các hàm băm mật mã được sử dụng thường xuyên nhưng chúng không được khuyến nghị để băm mật khẩu trừ khi chúng được sử dụng như một phần của cấu trúc lớn hơn như trong PBKDF2.