BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA: AN TỒN THƠNG TIN CƠ SỞ AN TỒN THƠNG TIN Đăng nhập mật với Hashing, Pepper Salt …………………………………………………………………………………………… Giảng viên hướng dẫn: Thầy Đặng Thế Hùng Sinh viên thực hiện: Thái Công Lập Cổ Ngọc Minh Huy Đàm Chí Nguyên Hồ Thanh Duy Lớp: AT15N01 Khóa: 15 Tháng năm 2021 BÁO CÁO CƠ SỞ AN TỒN THƠNG TIN ĐỀ TÀI: Đăng nhập mật với Hashing, Pepper Salt Nhận xét giáo viên hướng dẫn: Điểm báo cáo: Xác nhận giáo viên hướng dẫn: LỜI CẢM ƠN Thực tế cho thấy, thành công gắn liền với hỗ trợ, giúp đỡ người xung quanh giúp đỡ hay nhiều, trực tiếp hay gián tiếp Trong suốt thời gian từ bắt đầu làm đề tài môn học hoàn thành, chúng em nhận nhiều quan tâm, bảo, giúp đỡ thầy cô bạn bè xung quanh Chúng em xin chân thành cảm ơn Thầy Đặng Thế Hùng giảng dạy hướng dẫn tạo điều kiện thuận lợi giúp đỡ chúng em q trình thực đề tài mơn học Tuy có nhiều cố gắng, chắn đề tài mơn học chúng em cịn nhiều thiếu sót Rất mong nhận góp ý giáo môn Chúng em xin chân thành cảm ơn! CHƯƠNG 1: MỞ ĐẦU Lí chọn đề tài - Ngày nay, với phát triển mạnh mẽ cơng nghệ thơng tin giúp ích nhiều cho sống, bên cạnh lợi ích mang lại thách thức lớn vấn đề bảo mật thông tin - Hashing, Salt, Pepper số thuật tốn khác sinh với mục đích bảo vệ thơng tin người dùng, góp phần không nhỏ vào công ngăn chặn đánh cắp thông tin Mục đích - Tìm hiểu Hashing, Salt, Pepper Xây dựng trang web đơn giản cách lưu trữ mật người dùng thông qua việc sử dụng thuật toán CHƯƠNG 2: TỔNG QUAN VỀ HASHING, SALT, PEPPER I Hashing Những yêu cầu bảo vệ mật - Một cách tổng quát, cần tránh trường hợp sau: +Lưu password dạng plain-text +Hash với thuật tốn hash mạnh, khơng nên xài MD5, SHA-1 … +Hash với salt *Lí cần phải hash password mà không lưu dạng palnt-text - Nếu lưu dạng plain-text, database bị hack SQL-injection, password user bị đánh cắp cách dễ dàng Trường hợp mã hóa chiều, ln có cách để giải mã chìa khóa, đồng thời phải tìm cách lưu chìa khóa cách an toàn Sử dụng MD5 SHA-1 chứng minh có đụng độ, nghĩa password khác nhau, hash MD5 SHA-1 chuỗi MD5 collosion SHA-1 collision Sơ lược Hashing 2.1 Khái niệm - Hashing (dịch băm) trình tạo chuỗi (được băm) từ thông điệp (chuỗi) truyền vào sử dụng hàm tốn học (hàm băm mật mã) - Hashing hoàn toàn khác với Encrypting: Encryption quy trình mã hóa 2 chiều Sau mã hóa, ta hồn tồn có thể dùng secret-key để giải mã lấy plain-text ban đầu Hashing khơng có key Và tất nhiên quy trình có 1 chiều mã hóa khơng giải mã 2.2 Đặc điểm - Các đặc điểm hàm hash: Với đầu vào ln cho đầu ( thực tế có hash funtion cho output với input khác nhau, gọi đụng độ giá trị băm hay gọi collision) Nó đưa giá trị đầu vào trả giá trị đầu ra, từ giá trị đầu giá trị đầu vào Lúc không lưu mật vào database, mà hash mật lưu vào database Khi cần so sánh mật người dùng, bạn so sánh chuỗi hash với Với cách này, không lưu mật người dùng, không sợ lộ mật người dùng check người dùng login Nhược điểm cách người dùng quên mật có cách reset mật + Một số thuật toán băm thường sử dụng: bcrypt, PBKDF2, scrypt, MD5, SHA1, SHA256, SHA512, WHIRLPOOL, RipeMD,… - Một hàm hash tốt cần đáp ứng đủ tiêu chuẩn : Có tính xác định: Cùng chuỗi đầu vào xử lý hàm băm, cho kết Không thể đảo ngược: Không thể tạo chuỗi từ chuỗi băm từ hàm băm Có entropy cao: Khi có thay đổi nhỏ chuỗi thông điệp, tạo chuỗi băm khác (Ví dụ: Abcde abcde tạo chuỗi băm khác dù khác chữ a) Có tính nhất: Hai thơng điệp khác nhận chuỗi băm khác - Cơ chế hoạt động Hash: B1: Người dùng tạo user password B2: Password người dùng băm lưu trữ sở liệu. Password không ghi văn túy vào sở liệu ổ cứng cho dù tạm thời B3: Người dùng muốn đăng nhập vào hệ thống Mật vừa nhập băm tiến hành so sánh với mật lưu trữ trước B4: Nếu hàm băm khớp, hệ thống cấp quyền truy cập cho người dùng. Nếu không, hệ thống thông báo cho người dùng biết họ nhập thông tin đăng nhập không hợp lệ ( Khơng nên cho người dùng biết tên người dùng mật mà họ nhập sai. Thay vào hiển thị thơng báo chung chung như "Tên người dùng mật không hợp lệ" . Điều bổ sung thêm lớp bảo mật chống lại kẻ công. Đây bảo mật thông qua che khuất.) B5: Sẽ lặp lại bước cố gắng đăng nhập Ví dụ: Ta có bảng lưu trữ user name password sau hash Ở ta nhận là alice và bob cùng dùng chung mật nên có chuỗi hash giống 4420d1918bbcf7686defdf9560bb5087d20076de5f77b7cb4c3b40bf46ec428b Cách có sơ hở trường hợp hacker lấy thông tin database, hacker sử dụng hệ thống mạnh để chạy hàm hash với giá trị từ 123456 đến xxx rồi so sánh với chuỗi mật hash database, từ biết mật người dùng II Salt Khái niệm - Salt giá trị độc nhất, khơng bí mật sở liệu (tùy theo thuật toán sử dụng) gắn vào mật trước mật hash( password + salthash password_salt) Khi kiểm tra mật người dùng login, hệ thống lấy → chuỗi salt ra, hash mật người dùng nhập với chuỗi salt đó, đúng password_hash database cho login, giúp ngăn chặn phương thức dị tìm mật sử dụng Rainbow Table Đặc điểm - Giá trị Salt không trùng nhằm ngăn chặn hai sở trả lại kết băm giống cho chuỗi mật + salt Trường hợp bị công bruteforce, kẻ cơng phải tính tốn lại Rainbow table tất trường hợp cộng với salt Nếu salt random cho user, kẻ cơng phải tính tốn toàn trường hợp cộng với riêng salt cho tồn user - Khơng lấy thơng tin người dùng để làm chuỗi Salt, giá trị salt phải độc sở liệu( thơng thường random cho user) Ví dụ: Password ban đầu user “yellow”.Nếu có user khác có password cho giá trị băm, hacker dễ dàng tìm thuật tốn hash ban đầu từ tồn database bị lộ Nhờ có chuỗi ngẫu nhiên Salt mật trở thành “yellow#1Gn%”, sau chuỗi password_salt hash lưu vào database Tuy nhiên thêm Salt vào password sử dụng ổn chưa hẳn an tồn giá trị salt lưu vào database, salt bị lộ, sử dụng thuật tốn để chạy cho user, khả nhiều thời gian nguy an tồn xảy III Pepper Khái niệm - Pepper chuỗi tương tự salt, khác biệt ta cần giữ bí mật pepper, lưu chỗ khác ngồi database Đặc điểm - Pepper đề cập đến khóa bí mật thêm vào mật bạn trước mật băm Pepper không đơn giản làm phức tạp trình giải mã mà thêm vào để làm cho mật giải mã - Do Pepper lưu trữ nơi riêng biệt bên database nên tin tặc muốn chiếm hệ thống bạn việc khó khăn so với Hash Salt Từ Thành Ví dụ: Việc đăng kí lưu tài khoản gmail sử dụng thuật toán bcypt kết hợp chuỗi pepper để bảo vệ thông tin user CHƯƠNG 3: DEMO CHƯƠNG TRÌNH ... cắp thơng tin Mục đích - Tìm hiểu Hashing, Salt, Pepper Xây dựng trang web đơn giản cách lưu trữ mật người dùng thơng qua việc sử dụng thuật tốn CHƯƠNG 2: TỔNG QUAN VỀ HASHING, SALT, PEPPER I... nghệ thông tin giúp ích nhiều cho sống, bên cạnh lợi ích mang lại thách thức lớn vấn đề bảo mật thông tin - Hashing, Salt, Pepper số thuật toán khác sinh với mục đích bảo vệ thơng tin người dùng,... salt random cho user, kẻ công phải tính tốn tồn trường hợp cộng với riêng salt cho tồn user - Khơng lấy thơng tin người dùng để làm chuỗi Salt, giá trị salt phải độc sở liệu( thông thường random