Băm mật khẩu
Một số cuộc tấn công an ninh mạng tàn khốc nhất phát sinh từ việc vi phạm mật khẩu, được lưu trữ kém trong cơ sở dữ liệu phía máy chủ.
Vấn đề có thể bắt đầu với người dùng, những người có xu hướng đặt mật khẩu cơ bản và dễ nhớ. Điều này tạo ra rủi ro vì những kẻ tấn công có thể dễ dàng đoán ra nếu chúng có hiểu biết theo ngữ cảnh về cá nhân, chẳng hạn như tên của vật nuôi hoặc họ hàng.
Ngay cả khi một mật khẩu phức tạp hơn được chọn, phần mềm bẻ khóa mật khẩu có thể kích hoạt một cuộc tấn công vũ phu, dẫn đến một số lượng lớn mật khẩu được thử nghiệm cho đến khi thành công.
Một vectơ tấn công khác là giành quyền truy cập vào cơ sở dữ liệu lưu trữ thông tin xác thực. Trong kịch bản ác mộng của CISO, nếu kẻ tấn công giành được quyền truy cập vào cơ sở dữ liệu mật khẩu văn bản gốc không được mã hóa, hàng nghìn tài khoản người dùng có thể bị xâm phạm ngay lập tức. Thật không may, điều này đã xảy ra quá thường xuyên - ảnh hưởng đến các tổ chức cả nhỏ và lớn.
Đừng sợ, những triển vọng căng thẳng này có thể bị giới hạn bởi một thứ gọi là băm mật khẩu!
Xác định hàm băm
Băm mật khẩu là một kỹ thuật thuật toán mật mã lấy văn bản gốc, chạy một hàm băm phức tạp và tạo ra văn bản được băm. Chìa khóa của quá trình này là chức năng, nhưng không phải tất cả đều phù hợp như nhau để ngăn chặn nứt.
Tất cả các chức năng phải đáp ứng hai thuộc tính chính để đáp ứng các tiêu chí của OWASP (Dự án bảo mật ứng dụng web nguồn mở):
Rất khó để tạo một đầu vào ban đầu tương ứng với một đầu ra mong muốn cụ thể.
Để minh họa đặc điểm này, hàm băm của 'Mật khẩu' được tạo thông qua thuật toán mật mã sha256 phổ biến, là:
e7cf3ef4f17c3999a94f2c6f612e8a888e5b1026878e4e19398b23bd38ec221a
Và hàm băm của 'mật khẩu' là:
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
Như bạn có thể thấy, chỉ cần thay đổi cách viết hoa của một chữ cái đầu vào, một đầu ra khác biệt đáng kể sẽ được tạo ra, do đó có nghĩa là không thể dễ dàng xác định đầu ra từ đầu vào.
Thực tế là tạo ra hàm băm nhưng thực tế không thể tạo lại đầu vào nếu chỉ biết giá trị băm.
Không giống như mã hóa, trong đó mật khẩu văn bản thuần túy được chuyển đổi thành văn bản được mã hóa trước khi giải mã trở lại văn bản thuần túy, băm là một cách một chức năng. Vì băm mật khẩu là xác định, cùng một đầu vào luôn tạo ra cùng một đầu ra.
Trường hợp sử dụng của điều này là khi người dùng tạo mật khẩu, nó có thể được băm sau đó đầu ra được lưu trữ trong cơ sở dữ liệu. Khi người dùng thử lại mật khẩu của họ, nó sẽ được băm lại và sau đó được xác minh dựa trên hàm băm trong cơ sở dữ liệu. Nếu kẻ tấn công giành được quyền truy cập vào cơ sở dữ liệu băm, thì phần lớn là vô ích vì mật khẩu không thể được chuyển đổi trở lại văn bản gốc.
Hãy thử chạy tập lệnh Python này để xem phiên bản đơn giản của khái niệm này :
# this and other fun scripts can be found at: https://github.com/Jay-Gokani
# install sha256 library for hashing
from hashlib import sha256
# demo explanation
print ('Hello, this demo will ask for a plaintext password, hash it and will verify the hash for access requests')
# first hash stored as a variable
hash1 = (sha256(input('What phony password would you like to set? ').encode('utf-8'))).hexdigest()
print('The hash of your plaintext password is:', hash1)
# password hash stored confirmation
print ('Your password hash has been successfully stored.')
# promt the user for password re-entry, hash and store as another variable
hash2 = (sha256(input('I will test your hash. Please type your password: ').encode('utf-8'))).hexdigest()
print('The hash of your plaintext password is:', hash2)
# access approval or deny check
while True:
if hash1 == hash2:
print('Success - password hash matches.')
break
else:
print('The password hash does not match. Please run the programme again.')
break
Tất nhiên, hàm băm không phải là giải pháp tất cả trong một để ngăn mật khẩu bị xâm phạm. Ví dụ: kẻ tấn công có thể tạo danh sách mật khẩu phổ biến và giá trị băm tương ứng của chúng. Nếu bất kỳ mã băm nào trong cơ sở dữ liệu nằm trong danh sách, kẻ tấn công sẽ biết mật khẩu văn bản gốc. Nhưng đây không phải là vấn đề nếu mật khẩu văn bản gốc được tạo đủ phức tạp. Hơn nữa, ứng dụng nhập mật khẩu văn bản gốc để tạo ra giá trị băm có thể bị chặn.
Băm mật khẩu là một bước đi đúng hướng tuyệt vời! Chúng tôi hy vọng bạn thích bài viết này :-)

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































