Password hashing và ứng dụng xác thực người dùng sử dụng bcrypt

31 37 0
Password hashing và ứng dụng xác thực người dùng sử dụng bcrypt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA VIỄN THÔNG I AN NINH MẠNG ĐỀ TÀI: PASSWORD HASHING VÀ ỨNG DỤNG XÁC THỰC NGƯỜI DÙNG SỬ DỤNG BCRYPT Hà Nội năm 2019 LỜI NÓI ĐẦU Bảo mật an ninh mạng vấn đề quan trọng đặt lên hàng đầu với tổ chức, doanh nghiệp có sử dụng hệ thống mạng dù lớn hay nhỏ Hiện nay, ln có hacker ln tìm cách xâm nhập cơng vào hệ thống mạng để thu thập thông tin nội bộ, bí mật tổ chức doanh nghiệp người dùng cá nhân nhằm trục lợi hay có ý định xấu với thơng tin đoạt Do đó, nhà quản trị mạng phải cố gắng bảo vệ hệ thống tốt hoàn thiện, nâng cấp hệ thống để khắc phục vấn đề bảo mật phương thức công ngày tinh vi hacker Kỹ thuật Password Hashing (Băm mật khẩu) kỹ thuật tốt để sử dụng việc bảo vệ mật người dùng hệ thống trước công Tuy nhiên sử dụng Password Hashing chưa đủ để bảo vệ hệ thống sử dụng thêm Salt chí Pepper Trong tiểu luận làm rõ khái niệm thực xây dựng ứng dụng xác thực người dùng bảo vệ mật người dùng sử dụng thuật toán Bcrypt Bố cục tiểu luận gồm chương: Chương 1: Tổng quan hàm băm Chương 2: Password Hashing Bcrypt Chương 3: Ứng dụng xác thực người dùng sử dụng Bcrypt Bằng cố gắng nỗ lực nhóm em hồn thành xong tiểu luận nhóm Do có hạn chế mặt thời gian mức độ hiểu biết thân nên khơng thể tránh khỏi thiếu sót q trình nghiên cứu Vì thế, nhóm em mong nhận lời góp ý bảo thêm thầy bạn để em có thêm kiến thức phục vụ cho học tập công việc sau An Ninh Mạng i MỤC LỤC LỜI NÓI ĐẦU i MỤC LỤC iii BẢNG PHÂN CÔNG CÔNG VIỆC iiii DANH MỤC HÌNH VẼ .iv DANH MỤC BẢNG BIỂU iv CHƯƠNG I: TỔNG QUAN VỀ HÀM BĂM 1.1 Khái niệm hàm băm 1.1.1 Tính hàm băm 1.1.2 Tính chất hàm băm 1.2 Cơ chế hoạt động hàm băm 1.3 Một số hàm băm phổ biến 1.4 Ứng dụng hàm băm 1.5 Yêu cầu độ an toàn hàm băm 1.6.Kết luận chương 11 CHƯƠNG 2: PASSWORD HASHING VÀ THUẬT TOÁN BCRYPT 12 2.1 Các phương thức lưu trữ mật 12 2.2 So sánh Hashing Encryption 13 2.3 Khái niệm Password Hashing, Salt Pepper 15 2.4 Các phương thức công hàm băm 18 2.5 Giới thiệu Bcrypt 19 2.6 Kết luận chương 20 CHƯƠNG 3: ỨNG DỤNG XÁC THỰC NGƯỜI DÙNG SỬ DỤNG BCRYPT 21 3.1 Các thành phần ứng dụng 21 3.2 Các bước ứng dụng sử dụng Bcrypt để Hash Password dùng Salt 21 3.3 Các bước ứng dụng xác thực người dùng 22 3.4 Kết 23 3.5 Kết luận chương 24 KẾT LUẬN 25 TÀI LIỆU THAM KHẢO 26 An Ninh Mạng ii BẢNG PHÂN CÔNG CÔNG VIỆC Nội dung tìm hiểu Nội dung triển khai Thành viên thực - Khái niệm hàm băm - Đặc điểm hàm băm Chương 1: Tổng quan - Cơ chế hoạt động hàm băm hàm băm - Các ứng dụng hàm băm - Các yêu cầu hàm băm - So sánh hàm băm với mã hoá - Các phương thức công thường gặp với hàm băm Chương 2: Password - Khái niệm Password Hashing, Salt Hashing Bcrypt Pepper - Giới thiệu thuật tốn Bcrypt - Các ví dụ Bcrypt ngơn ngữ lập trình khác - Xây dựng ứng dụng sử dụng thuật toán Bcrypt để xác thực người dùng Chương 3: Ứng dụng - Các thành phần ứng dụng xác thực người dùng sử - Các bước ứng dụng sử dụng để xác dụng Bcrypt thực người dùng - Các bước ứng dụng sử dụng Bcrypt để Password Hashing sử dụng Salt An Ninh Mạng iii DANH MỤC HÌNH VẼ Hình 1.1: Hàm băm Hình 1.2: Cơ chế hoạt động hàm băm Hình 1.3: Dữ liệu qua khối hàm băm Hình 1.4: Ví dụ sử dụng hàm băm nhận thực tin Hình 2.1: Minh họa trình mã hoá 14 Hình 2.2: Minh hoạ trình băm 14 Hình 2.3: Ví dụ Salt 17 Hình 2.4: Ví dụ Pepper 17 Hình 2.5: Ví dụ cơng từ điển 19 Hình 2.6: Ví dụ cơng Brute Force 19 Hình 3.1: Sử dụng hàm genSaltSync 21 Hình 3.2: Sử dụng thư viện issacjs 22 Hình 3.3: Sử dụng hàm hashSync 22 Hình 3.4: Xác thực người sử dụng 23 Hình 3.5: Màn hình đăng ký, đăng ký thành cơng mật mã hóa 23 Hình 3.6: Màn hình đăng nhập kết trả 24 DANH MỤC BẢNG BIỂU Bảng 1.1: Các yêu cầu hàm băm bảo mật 10 Bảng 2.1: Lưu trữ mật dạng văn thô 12 Bảng 2.2: Lưu trữ mật dạng mã hoá 13 Bảng 2.3: Lưu trữ mật dạng hàm băm 13 Bảng 2.4: So sánh Hashing Encryption 15 An Ninh Mạng iv An Ninh Mạng Chương I: Tổng Quan Về Hàm Băm CHƯƠNG I: TỔNG QUAN VỀ HÀM BĂM Hiện nay, liệu phần có giá trị Nó trở thành yếu tố cần thiết số lĩnh vực hành cơng, nghiên cứu khoa học kinh tế kỹ thuật số ngày phát triển Hơn nữa, yếu tố phụ thuộc vào công nghệ đầy hứa hẹn Machine Learing BigData Do đó, nhu cầu ngày tăng liệu kéo theo quan tâm trở lại kỹ thuật quy trình ẩn danh Và cách tiếp cận sử dụng Hashing, sử dụng để cung cấp khả bảo vệ bổ sung liệu cá nhân xử lý Hashing thuật tốn tính tốn giá trị chuỗi từ tệp có kích thước cố định Về bản, chứa khối liệu chuyển đổi thành khóa giá trị có độ dài cố định ngắn từ chuỗi ban đầu Thơng thường, tóm tắt thông tin liệu tệp gửi Hơn nữa, cách thuận tiện an toàn xác định so sánh sở liệu tệp Đó q trình biến đổi tập liệu thành chuỗi ký tự có độ dài cố định mà khơng cần xem xét đến kích thước liệu đầu vào Và đầu nhận được gọi giá trị băm, thông báo, mã đơn giản băm Ngoài ra, thuật ngữ “băm” sử dụng để mô tả hàm băm giá trị băm Nói cách khác, chủ yếu sử dụng để xác nhận tính nguyên gốc tin nhắn gửi Ví dụ: Nếu bạn gửi tệp bạn muốn biết liệu gửi đến người dùng dự định mà khơng có thay đổi hay chưa, có số cách để kiểm tra, liên hệ với người nhận địa xác minh tệp cách tiếp cận thuật toán hàm băm 1.1 Khái niệm hàm băm Hàm băm hàm tốn học điển hình sử dụng để ánh xạ liệu có kích thước khác thành giá trị có kích thước cố định Đó hàm toán học sử dụng để chuyển đổi giá trị đầu vào thành giá trị số định dạng nén gọi giá trị băm đơn giản băm An Ninh Mạng Chương I: Tổng Quan Về Hàm Băm Hình 1.1: Hàm băm Độ dài đầu phụ thuộc vào thuật toán băm, thường khoảng 160 đến 512 bit 1.1.1 Tính hàm băm Đầu có độ dài cố định: - Hàm băm bao gồm liệu có độ dài tùy ý thành độ dài cố định Quá trình thường gọi băm liệu - Nói chung, hàm băm nhỏ nhiều so với liệu đầu vào, hàm băm đơi gọi hàm nén - Vì hàm băm đại diện nhỏ liệu lớn hơn, gọi tóm tắt - Hàm băm với đầu n bit gọi hàm băm n bit Các hàm băm phổ biến tạo giá trị từ 160 đến 512 bit Hiệu hoạt động: - Nói chung hàm băm h với đầu vào x, tính tốn h (x) phép toán nhanh - Các hàm băm tính tốn nhanh nhiều so với mã hóa đối xứng 1.1.2 Tính chất hàm băm Kháng tiền ảnh: - Thuộc tính có nghĩa khó tính tốn để đảo ngược hàm băm - Nói cách khác, hàm băm h tạo giá trị băm z, trình An Ninh Mạng Chương I: Tổng Quan Về Hàm Băm khó khăn để tìm giá trị đầu vào x có giá trị băm thành z - Thuộc tính bảo vệ chống lại kẻ cơng có giá trị băm cố gắng tìm đầu vào Kháng tiền ảnh thứ 2: - Thuộc tính có nghĩa cung cấp đầu vào hàm băm nó, khó tìm thấy đầu vào khác với hàm băm - Nói cách khác, hàm băm h cho đầu vào x tạo giá trị băm h (x), khó để tìm thấy giá trị đầu vào khác y cho h (y) = h (x) - Thuộc tính hàm băm bảo vệ chống lại kẻ cơng có giá trị đầu vào giá trị băm muốn thay giá trị khác làm giá trị hợp pháp thay cho giá trị đầu vào ban đầu Kháng xung đột: - Thuộc tính có nghĩa khó tìm thấy hai đầu vào khác có độ dài dẫn đến hàm băm Thuộc tính cịn gọi hàm băm khơng va chạm - Nói cách khác, hàm băm h, khó để tìm thấy hai đầu vào khác x y cho h (x) = h (y) - Vì hàm băm hàm nén với độ dài băm cố định, để hàm băm khơng có xung đột Tính chất khơng va chạm xác nhận va chạm khó tìm thấy - Thuộc tính khiến kẻ cơng khó tìm thấy hai giá trị đầu vào có hàm băm - Ngoài ra, hàm băm có khả chống va chạm có khả chống trước hình ảnh thứ hai 1.2 Cơ chế hoạt động hàm băm Hash trung tâm thuật toán băm Để nhận giá trị băm độ dài xác định trước, trước tiên cần phải chia liệu đầu vào thành khối có kích An Ninh Mạng Chương I: Tổng Quan Về Hàm Băm thước cố định, hàm băm lấy liệu có độ dài cố định Ngồi ra, khối gọi khối liệu Hình 1.2: Cơ chế hoạt động hàm băm Kích thước khối liệu khác tùy thuộc vào thuật toán.Mặc dù vậy, số thuật tốn, giống Ví dụ: thơng điệp 1024-bit chia thành hai khối khác có độ dài 512-bit chạy hàm băm hai lần Mặt khác, thơng báo có độ dài xác 512-bit, hàm băm chạy lần Tuy nhiên, đảm bảo thơng báo bội số 512 bit Trong số trường hợp, kỹ thuật có tên Padding sử dụng, tồn thơng điệp chia khối liệu có kích thước cố định Ví dụ cho thấy cách khối liệu xử lý Hình 1.3: Dữ liệu qua khối hàm băm Như hình 1.3 trên, khối xử lý riêng biệt Và, đầu khối liệu gửi giống đầu vào với khối liệu thứ hai Do đó, đầu khối liệu thứ ba gửi với khối liệu thứ ba, v.v Cuối cùng, đến An Ninh Mạng Chương I: Tổng Quan Về Hàm Băm với đầu cuối cùng, giá trị kết hợp tất khối liệu Vì vậy, thay đổi bit thơng báo thay đổi tồn giá trị băm - gọi hiệu ứng tuyết lở 1.3 Một số hàm băm phổ biến Có nhiều loại thuật toán băm khác RipeMD, Tiger, xxhash nữa, loại băm phổ biến sử dụng để kiểm tra tính tồn vẹn tệp MD5, RSA, SHA-2 CRC32 MD5 - Hàm băm MD5 mã hóa chuỗi thơng tin mã hóa thành dấu vân tay 128 bit MD5 thường sử dụng tổng kiểm tra để xác minh tính tồn vẹn liệu Tuy nhiên, tuổi đời nó, MD5 biết có nhiều lỗ hổng xung đột băm, thuật toán sử dụng rộng rãi giới SHA-2 - SHA-2, phát triển Cơ quan An ninh Quốc gia (NSA), hàm băm mật mã SHA-2 bao gồm thay đổi đáng kể so với người tiền nhiệm nó, SHA-1 Họ SHA-2 bao gồm sáu hàm băm với thông báo (giá trị băm) 224, 256, 384 512 bit: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA -512/256 CRC32 - Kiểm tra dự phòng theo chu kỳ (CRC) mã phát lỗi thường sử dụng để phát thay đổi ngẫu nhiên liệu Mã hóa chuỗi liệu cách sử dụng CRC32 dẫn đến đầu băm, CRC32 đơi sử dụng thuật tốn băm để kiểm tra tính tồn vẹn tệp Ngày nay, CRC32 sử dụng bên tệp Zip máy chủ FTP RSA - Được đặt theo tên nhà thiết kế (Rivest-Shamir-Adleman), RSA hệ thống mật mã có nguồn gốc từ cuối kỷ XX RSA sử dụng phương pháp phân phối đơn giản: Người A sử dụng khóa cơng khai Người B để mã hóa tin nhắn Người B sử dụng khóa riêng tư, bí mật người dùng, để khám phá ý nghĩa Khơng có tiền điện tử hoạt động sử dụng khn khổ RSA Ngồi ra, ta liệt kê số hàm băm khác như: An Ninh Mạng Chương II: Password Hashing Bcrypt CHƯƠNG 2: PASSWORD HASHING VÀ THUẬT TOÁN BCRYPT 2.1 Các phương thức lưu trữ mật Trong hệ thống liệu tổ chức, doanh nghiệp việc lưu trữ lại thông tin người sử dụng thông tin họ tên, độ tuổi, thông tin cá nhân, thông tin mua bán, toán, … thường người dùng truy cập tài khoản mật riêng họ Do việc bảo vệ mật người dùng trước hacker vấn đề vô quan trọng để trách cho thông tin người sử dụng không bị rơi tay kẻ xấu Các hệ thống liệu thường sử dụng kiểu lưu trữ mật sau: • Văn thơ: Mật người dùng lưu trữ sở liệu mà khơng có biện pháp bảo vệ Cách cách nguy hiểm để lưu trữ thông tin Một hacker tìm lỗ hổng hệ thống, tồn thông tin người dùng bị lộ Tuy việc lưu trữ thông tin mật văn thơ khơng an tồn nhiên có nhiều tổ chức sử dụng gây hại tới thơng tin người dùng ví dụ như: Neopets bị lộ 26.892.897 tài khoản năm 2013, imgur bị lộ 1.749.806 tài khoản năm 2013, Comcast bị lộ 618,882 tài khoản năm 2015 VK bị lộ 93.338.602 tài khoản năm 2012 Các công làm người dùng bị lộ nhiều thông tin như: số điện thoại, tên người dùng, email, mật thông tin cá nhân khác, tổ chức doanh nghiệp chịu đựng tổn thất không nhỏ tất việc lưu trữ sử dụng văn thô Người dùng Mật Mật lưu trữ Tuyết qwerty qwerty Lân 123456 123456 Hải Hai123 Hai123 Bảng 2.1: Lưu trữ mật dạng văn thơ • Mã hố: Thay lưu trữ mật dạng văn thơ mật mã hố (có thể RSA, AES, …) khoá trước lưu trữ sở liệu Điều nầy giúp cho mật thật người dùng khộng bị hacker biết tới, nhiên phương pháp chưa an Nhóm 12 An Ninh Mạng Chương II: Password Hashing Bcrypt toàn Ở bên lớp bảo vệ mật dạng văn thô nên hacker lấy khố sử dụng cho việc mã hố hacker giải mã lấy mật người dùng Mã hoá thiết kế để hoạt động theo hai cách: Mã hoá mật để bảo vệ mật Giải mã hoá để có mật ban đầu Đây phương pháp tốt muốn truyền liệu cách an tồn nhiên khơng đủ an tồn để bảo vệ mật trước hacker Người dùng Mật Mật lưu trữ Tuyết qwerty 1eMzgzJRpNZ4w0MICJeY/Q Lân 123456 oJvR7ioSbKhTc6kGNnacew Hải Hai123 RR3khHFoMb4H36xuRLa71A Bảng 2.2: Lưu trữ mật dạng mã hố • Hàm băm: Hàm băm nhận chuỗi đầu vào (ở mật khẩu) biến đổi thành chuỗi ký tự ln có chiều dài cố định Ta biến mật thành chuỗi hash “giải mã” chuỗi hash lại mật ban đầu Chính thuộc tính mà tổ chức kiểm tra xem bạn có nhập mật khơng dù khơng lưu trữ mật sở liệu họ Người Mật Mật lưu trữ Tuyết qwerty 65e84be33532fb84c481296…cf58ee02337c5 Lân 123456 8d969eef6ecad9a30e6…aff3020c923adc6c92 Hải Hai123 a000f19bce7d43a…411fbb65c68b2891adaa dùng Bảng 2.3: Lưu trữ mật dạng hàm băm 2.2 So sánh Hashing Encryption Băm mã hóa hai hoạt động quan trọng hệ thống máy tính Cả hai kỹ thuật thay đổi liệu thô thành định dạng khác Việc băm văn đầu vào cung cấp giá trị băm, mã hóa chuyển đổi liệu thành văn mã Nhóm 13 An Ninh Mạng Chương II: Password Hashing Bcrypt Mặc dù hai kỹ thuật chuyển đổi liệu sang định dạng riêng biệt, có khác biệt nhỏ chế chuyển đổi khu vực sử dụng chúng Hình 2.1: Minh họa q trình mã hố Hình 2.2: Minh hoạ q trình băm Định nghĩa Mục đích Nhóm Hashing Encryption Nó q trình để chuyển đổi thông tin sang giá trị cố định ngắn gọi khóa sử dụng để đại diện cho thơng tin ban đầu Đây q trình mã hóa liệu cách an tồn cho người dùng ủy quyền biết khóa mật lấy lại liệu gốc cho người khác, rác Mục đích băm lập mục Mục đích mã hóa biến đổi truy xuất mục từ sở dữ liệu để giữ bí mật với người liệu Q trình nhanh khác chóng 14 An Ninh Mạng Chương II: Password Hashing Bcrypt Quy trình đảo ngược Mã băm khóa khơng thể đảo ngược thông tin ban đầu cách Nó ánh xạ mã băm kiểm tra mã băm giống thơng tin có giống nhau, khơng khơng Thơng tin ban đầu truy xuất Thông tin ban đầu lấy cách dễ dàng biết khóa mã hóa thuật tốn sử dụng để mã hóa Độ tin cậy Nó an tồn so với mã hóa Nó an tồn so với băm Tạo tệp Nói chung, cố gắng tạo khóa cho thơng tin chuyển đến hàm băm số trường hợp hoi, tạo khóa phổ biến gọi xung đột Nó ln tạo khóa cho thơng tin Ví dụ MD5, SHA256 RSA, AES Blowfish Độ dài thơng tin Thơng tin băm thường có độ dài nhỏ cố định Nó khơng phát triển với gia tăng độ dài thông tin thông tin Thơng tin mã hóa khơng có độ dài cố định Nó phát triển với gia tăng độ dài thông tin Bảng 2.4: So sánh Hashing Encryption 2.3 Khái niệm Password Hashing, Salt Pepper 2.3.1 Password Hashing Là phương pháp để bảo vệ mật người dùng cách sử dụng hàm băm Khi lưu trữ mật người dùng sở liệu (database) người ta thường dùng kỹ thuật “password hashing” khơng lưu trực tiếp mật Ví dụ có website, ta cần lưu thông tin người dùng (user) mật (password) database Database lưu giữ thông tin “username”, “password”, số thông tin quan trọng khác user Khi đó, phải đổi mặt với mối đe doạ bảo mật thông tin Database lưu lại password user để user đăng nhập vào hệ thống kiểm tra password mà user nhập vào có với password mà user đăng ký hay không Nếu cách Nhóm 15 An Ninh Mạng Chương II: Password Hashing Bcrypt database bị xâm phạm (bởi lực lượng bên bên trong, bên người quản trị sở liệu, bên ngồi hacker, kẻ phá hoại, …) tất thơng tin user có password bị lộ Đây lý mà cần đến kỹ thuật gọi “password hashing” – mã hố password hash function Thay lưu password dạng văn thơ - plaintext (dạng text bình thường mà người đọc hiểu được) password đưa vào hash function, hash value sinh từ hash function dùng để lưu database đại diện cho password Tức ta lưu vào database hash value password không lưu trực tiếp password Khi user đăng nhập ta làm tương tự, password mà user nhập vào đưa vào hash function lúc đầu để tính hash value, hash value dùng để so sánh với hash value lưu database, nêu giống có nghĩa user nhâp password ngược lại Bằng cách chẳng may database bị lấy trộm bị lộ ngồi kẻ xấu biết hash value password password thật Sẽ nhiều thời gian để tìm chí khơng thể tìm password thật user đó, nhờ giảm thiếu rủi ro cho hệ thống 2.3.2 Salt 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 băm Lưu ý yêu cầu salt phải độc sở liệu, đồng nghĩa với việc tạo ngẫu nhiên không thiết phải ngẫu nhiên mặt mật mã Salt dùng để ngăn chặn phương thức dò tìm mật sử dụng Rainbow Table (phương thức công sử dụng bảng tổng hợp chuỗi băm để dị tìm mật khẩu) Cần lưu ý bạn khơng phép sử dụng thông tin cung cấp sẵn để làm salt Quy tắc nhằm ngăn chặn hai sở liệu (của ứng dụng khác chẳng hạn) trả lại kết băm giống cho chuỗi mật + salt Đồng thời công bruteforce, bạn tạo tất khả lần chạy, mà phải chạy bruteforce cho mật kèm theo salt Điều nghĩa bạn khơng thể phá tồn mật vòng ngày (như đoạn văn bên đề cập), mà cần phải chạy quy trình bruteforce cho mật Nhóm 16 An Ninh Mạng Chương II: Password Hashing Bcrypt kèm theo salt cụ thể mật Do việc dị giá trị băm ngày thay ngày cho toàn sở liệu Salt giúp vơ hiệu hóa việc sử dụng Rainbow Tables, bảng cần tạo, cho mật khẩu, dựa salt Đây lý salt lại quan trọng đến phải sử dụng salt độc cho sở liệu Hình 2.3: Ví dụ Salt 2.3.3 Pepper Pepper giá trị bí mật (một khố bí mật) để kết hợp với tất mật người dùng sở liệu (gần giống với salt) trước mật băm, pepper không lưu trữ sở liệu mà lưu file cấu hình hệ thống, … Pepper mơ tả xác khóa bí mật biến hàm băm thành MAC Có nhiều cách để tạo MAC; số HMAC phương pháp tốt) Một HMAC giống hàm băm, khơng thể chép khơng có khóa bí mật Đặc điểm gia tăng tính bảo mật tin tặc tiếp cận sở liệu không tiếp cận nơi lưu trữ khóa Vấn đề liệu bị xâm nhập trái phép, tin tặc thường tiếp cận ổ cứng số trường hợp tiếp cận nhớ Nếu tin tặc lấy khóa, pepper khơng có tác dụng tăng tính bảo mật thuật tốn băm Hình 2.4: Ví dụ Pepper Nhóm 17 An Ninh Mạng Chương II: Password Hashing Bcrypt 2.4 Các phương thức công hàm băm 2.4.1 Bảng Cầu vồng (Rainbow Table) Mật hệ thống máy tính thường khơng lưu trữ trực tiếp dạng văn thơ mà băm mã hóa Hàm băm hàm chiều, khơng thể bị giải mã Bất người dùng nhập mật khẩu, mật chuyển đổi thành giá trị băm so sánh với giá trị băm lưu trữ Nếu giá trị khớp, người dùng xác thực Bảng cầu vồng sở liệu sử dụng để xác thực cách bẻ khóa băm mật Nó từ điển tính tốn trước mật dạng văn thô giá trị băm tương ứng chúng, bảng cầu vồng sử dụng để tìm mật văn rõ tạo hàm băm cụ thể Có thể hai mật khác có giá trị băm nên khơng cần phải tìm mật gốc gì, miễn có giá trị băm Mật chữ chí khơng giống với mật người dùng sử dụng, miễn giá trị băm phù hợp, khơng cần biết mật gốc 2.4.2 Tấn cơng từ điển (Dictionary Acttack) Tấn công từ kiểu công kẻ công sử dụng để đột nhập hệ thống bảo vệ mật khẩu, cách đưa từ thường sử dụng vào từ điển dạng mật cho hệ thống đó, sử dụng tổ hợp hoán đổi chữ từ điển Sau kẻ cơng thực việc băm mật lhaaur Họ sử dụng phần mềm từ điển lặp lặp lại những tổ hợp từ khác để phá mật bạn Kiểu công dạng Brute Force Attack Từ điển chứa từ từ từ điển tiếng Anh số danh sách mật thường sử dụng bị rò rỉ kết hợp với ký tự phổ biến thay số, đơi hiệu nhanh chóng Nhóm 18 An Ninh Mạng Chương II: Password Hashing Bcrypt Hình 2.3: Ví dụ công từ điển 2.4.3 Tấn công kĩ thuật thử sai liên tục - Brute Force Attack Kiểu công brute force kiểu công dùng cho tất loại mã hóa Brute force hoạt động cách thử tất chuỗi mật để tìm mật Vì nên thời gian cần lâu, tùy theo độ dài mật khả để tìm ln ln không giới hạn thời gian Brute force dùng phương pháp khác khơng có hiệu Hình 2.4: Ví dụ cơng Brute Force 2.5 Giới thiệu Bcrypt 2.5.1 Thuật toán Bcrypt Bcrypt thuật toán băm mật theo kiểu Slow-hash (Scrypt, Angron 2) giới thiệu vào năm 1999 Niels Provos David Mazières Bcrypt sử dụng thuât tốn mã hóa gọi "blowfish" Bcrypt nhận vào giá trị đầu vào mật khẩu, salt cost (là số lần mà thật toán cần chạy) để thực băm mật Do thuật toán chạy nhiều lần để băm tuỳ theo yêu cầu hệ thống làm chậm lại việc tìm ngược mật Đối với thuật toán kiểu Slow-hash, Nhóm 19 An Ninh Mạng Chương II: Password Hashing Bcrypt việc làm chậm lại giúp cho ngăn chặn công brute force cách hiệu Ví dụ: bcrypt 100ms để tính tốn chuỗi hash, chậm 10.000 lần so với SHA-1 kẻ cơng 10.000 lần thời gian để công so với sử dụng hàm băm thông thường Do đặc điểm trên, Bcrypt sử dung nhiều hệ thống để bảo mật sở liệu Bcrypt sử dụng nhiều loại ngơn ngữ lập trình như: Python, Java, Nodejs, … 2.6 Kết luận chương Trong chương khái niệm bảo mật mật sử dụng hàm băm giới thiệu Dựa vào ta hiểu biện pháp chống công thường nhằm vào hàm băm cách sử dụng Salt Pepper Ta nắm lý hệ thống ngày thường sử dụng hàm băm thay mã hố cho việc lưu trữ mật Đối với hệ thống thực tế, ta sử dụng thuật toán Slow-hash Salt Pepper để tăng cường tính bảo mật hệ thống ngồi kết hợp thêm với kỹ thuật mã hố Nhóm 20 An Ninh Mạng Chương III: Ứng Dụng Xác Thực Người Dùng CHƯƠNG 3: ỨNG DỤNG XÁC THỰC NGƯỜI DÙNG SỬ DỤNG THUẬT TOÁN BCRYPT 3.1 Các thành phần ứng dụng Ứng dụng xây dựng framework React Native Sử dụng thêm thư viện bcryptjs cho việc mã hóa bcrypt ứng dụng 3.2 Các bước ứng dụng sử dụng Bcrypt để Hash Password dùng Salt Bước 1: Sử dụng hàm genSaltSync() để tạo salt theo số vòng salt cho trước, với số vòng salt đặt 10 vịng Hình 3.1: Sử dụng hàm genSaltSync Đối với genSaltSync mặc định, bcryptjs sử dụng hàm Random mặc định javascript để tạo salt, điều không đảm bảo tính bảo mật cao q trình hash Vì vậy, sử dụng vài biện pháp thay tạo số ngẫu nhiên (PRNG - Pseudo Random Number Generator) ISSAC ISAAC CSPRNG (Cryptographically-secure pseudo random number generator) thiết kế Robert J Jenkins Jr vào năm 1996 dựa RC4 Nó thiết kế để nhanh chóng an tồn isaac.js hồn tồn tương thích với triển khai số học số nguyên 32 bit ban đầu ISAAC ISAAC tạo số giả ngẫu nhiên an tồn mật mã từ đầu vào không cung cấp nguồn entropy Do đó, sử dụng thêm thư viện issacjs để thay cho hàm Math.random() javascript Nhóm 21 An Ninh Mạng Chương III: Ứng Dụng Xác Thực Người Dùng Hình 3.2: Sử dụng thư viện issacjs Bước 2: Sử dụng hàm hashSync với đầu vào mật chưa mã hóa salt tạo từ bước Hình 3.3: Sử dụng hàm hashSync Bước 3: Lưu tên đăng nhập mật mã hóa vào sở liệu 3.3 Các bước ứng dụng xác thực người dùng Bước 1: Từ thông tin tên đăng nhập người dùng, ứng dụng truy xuất vào sở liệu để kiểm tra xem tài khoản có tồn hay không Bước 2: Nếu tài khoản tồn tại, ứng dụng sử dụng hàm compare bcryptjs với đầu vào mật người dùng vừa nhập mật mã hóa sở giữ liệu để so sánh tính xác thực, trả kết cho ứng dụng báo cho người dùng việc đăng nhập thành cơng Nhóm 22 An Ninh Mạng Chương III: Ứng Dụng Xác Thực Người Dùng Hình 3.4: Xác thực người sử dụng 3.4 Kết Dưới hình ảnh thực tế “Ứng dụng xác thực người dùng sử dụng Bcrypt”: Hình 3.5: Màn hình đăng ký kết đăng ký thành công mật mã hóa Nhóm 23 An Ninh Mạng Chương III: Ứng Dụng Xác Thực Người Dùng Hình 3.6: Màn hình đăng nhập kết trả nhập sai tài khoản, sai mật mật 3.5 Kết luận chương Trong chương giới thiệu “Ứng dụng xác thực người dùng sử dụng Bcrypt” bạn Nguyễn Tiến Hải nhóm thực gồm thành phần ứng dụng, bước sử dụng Bcrypt để Hash Password bước để xác thực người dùng Để mở rộng bổ sung thêm tính cho ứng dụng ta thêm mơt số tính khác sử dụng Pepper hay áp dụng thêm mã hoá mật nhằm tăng độ bảo mật cho ứng dụng Nhóm 24 An Ninh Mạng Kết Luận KẾT LUẬN Sau thời gian nghiên cứu với nỗ lực nhóm, đề tài “Password Hashing Ứng dụng xác thực người dùng sử dụng Bcrypt ” nhóm sinh viên Lê Thị Tuyết, Đỗ Tường Lân, Nguyễn Tiến Hải hoàn thành với số kết sau Về mặt lý thuyết, luận trình bày chi tiết nội dung gồm: Tổng quan hàm băm Sự khác biệt hàm băm mã hoá Các khái niệm Password Hashing, Salt Pepper Về mặt ứng dụng, nhóm xây dựng ứng dụng xác thực người dùng lưu trữ mật sở liệu thật qoán Bcrypt để bảo vệ liệu người sử dụng cách an toàn trước công hacker vào hệ thống Về nghiên cứu tương lai, thực cải tiến thuật tốn Bcrypt sử dụng thuật toán khác Scrypt, Argon hay thuật tốn khác có yếu tố bảo mật tốt Ngồi xây dựng ứng dụng ta sử dụng thêm sở liệu khác độc lập để lưu trữ Pepper để kết hợp với Salt giúp tăng tính bảo mật sử dụng kết hợp với phương thức mã hoá để đạt hiệu bảo mật cao Do thời gian nghiên cứu có hạn nên tiểu luận khơng thể tránh khỏi thiếu sót, nhóm em mong nhận ý kiến đóng góp từ thầy cô giáo bạn Một lần em xin chân thành cảm ơn Thầy giáo TS Hoàng Trọng Minh giảng dạy mơn An ninh Mạng giúp cho nhóm em hồn thiện tiểu luận Nhóm em xin chân thành cảm ơn Nhóm 25 An Ninh Mạng Tài Liệu Tham Khảo TÀI LIỆU THAM KHẢO [1] P.V Sơn,” Phương pháp mã hóa thật an tồn cho mật người dùng”, Viblo, 05/2018 [2] T.T Bình, “Tổng quan hàm băm,” Expressmagazine, 2017 [3] N.T Sơn, “Giới thiệu số hàm băm ứng dụng số sản phẩm mật mã dân sự,” NACIS, 12/2020 [4] M G R Maldonado, “What is Hashing Algorithm & How Does It Work?” AboutSSL, 2018 [5] A Srivastava, “Difference between Hashing and Encryption” GeeksforGeeks 02/2021 [6] Niels Provos, David Mazières, “Bcrypt Algorithm” A Future-Adaptable Password Scheme 1999 [7] Dan Arias, “Hashing in Action: Understanding bcrypt” Auth0 02/2021 [8] Michelle Selzer, “Salt and Hash Passwords with bcrypt” Advances in Hash 04/2020 [9] Sylvia Pap, “BCrypt Explained” dev.to 03/2020 [10] Casey Crane, “What Is a Hash Function in Cryptography? A Beginner’s Guide” Advances in Network Security 01/2021 [11] Parth Dutt, “Understanding Rainbow Table Attack” GeeksforGeeks 02/2021 Nhóm 26 ... xác thực người dùng Chương 3: Ứng dụng - Các thành phần ứng dụng xác thực người dùng sử - Các bước ứng dụng sử dụng để xác dụng Bcrypt thực người dùng - Các bước ứng dụng sử dụng Bcrypt để Password. .. 3: ỨNG DỤNG XÁC THỰC NGƯỜI DÙNG SỬ DỤNG BCRYPT 21 3.1 Các thành phần ứng dụng 21 3.2 Các bước ứng dụng sử dụng Bcrypt để Hash Password dùng Salt 21 3.3 Các bước ứng dụng xác thực. .. chương giới thiệu ? ?Ứng dụng xác thực người dùng sử dụng Bcrypt? ?? bạn Nguyễn Tiến Hải nhóm thực gồm thành phần ứng dụng, bước sử dụng Bcrypt để Hash Password bước để xác thực người dùng Để mở rộng

Ngày đăng: 26/02/2023, 15:50

Tài liệu cùng người dùng

Tài liệu liên quan