Vừa code xong form đăng nhập, bạn bị hỏi: sao cửa nhà mở bằng vân tay mà không cần gõ gì?
Học viên vừa code xong form đăng nhập đã hỏi: sao khóa vân tay ở cửa nhà không cần gõ gì? Câu hỏi nghe ngây ngô nhưng chạm đúng lõi của một khái niệm quan trọng. Mật khẩu và vân tay khác nhau ở điểm nào? Vì sao cả hai đều là cách chứng minh bạn là bạn?
Chúng tôi thấy cánh cửa nhà là ví dụ đời thường nhất để giải thích khái niệm xác thực. Xác thực nghĩa là hệ thống kiểm tra xem người trước mặt có đúng như họ nhận hay không. Form đăng nhập làm việc đó trên web. Ổ khóa làm việc đó ở cánh cửa. Hiểu một lần qua ổ khóa, bạn sẽ thấy xác thực trong ứng dụng bớt trừu tượng hơn nhiều.
Ba cách chứng minh “tôi là tôi”: cái bạn biết, cái bạn có, cái bạn là
Giới bảo mật chia mọi cách xác thực thành ba nhóm. Một là thứ bạn biết, như mật khẩu hoặc mã PIN. Hai là thứ bạn có, như thẻ hoặc chìa. Ba là thứ thuộc về bạn, như vân tay hoặc khuôn mặt. Bảng dưới đây đặt màn hình đăng nhập web cạnh ổ khóa nhà để bạn so sánh.
| Nhóm | Trên màn hình đăng nhập web | Ở ổ khóa cửa nhà | Điểm yếu thường gặp |
|---|---|---|---|
| Cái bạn biết | Mật khẩu | Mã số bấm trên bàn phím | Quên, đoán được, bị nhìn trộm |
| Cái bạn có | Mã OTP, khóa bảo mật | Thẻ hoặc chìa cơ | Thất lạc, cho mượn |
| Cái bạn là | Sinh trắc học trên điện thoại | Vân tay | Cảm biến đọc sai khi tay ướt hoặc dính bụi |
Bảng cho thấy cùng một ý tưởng xuất hiện ở hai thế giới. Muốn thấy nhóm thứ hai ngoài đời, bạn có thể tham khảo tại đây về khóa thẻ từ. Chiếc thẻ ở đó đóng vai trò thứ bạn có.
Đăng ký và đối chiếu: vòng đời của một vân tay trong khóa
Chiếc khóa vân tay xử lý một ngón tay theo hai giai đoạn. Giai đoạn đầu là đăng ký.
Bạn đặt ngón tay lên cảm biến nhiều lần. Khóa dùng những lần quét đó để tạo một mẫu đặc trưng cho ngón tay bạn. Giai đoạn sau là mở khóa. Mỗi lần bạn chạm vào, khóa quét lại rồi so với mẫu đã lưu.
Điều đáng chú ý với dev là phép so sánh này khác hẳn lệnh so sánh bằng nhau. Hai lần quét của cùng một ngón tay không bao giờ giống hệt nhau. Lực ấn, góc đặt và độ ẩm da đều đổi. Vì thế khóa tính một mức độ giống nhau, rồi đem mức đó so với một ngưỡng. Đây là bài toán so khớp có ngưỡng.
Vì sao đôi lúc khóa từ chối chính chủ
Ngưỡng chấp nhận là chỗ mọi hệ thống sinh trắc học phải đánh đổi. Đặt ngưỡng chặt thì khóa dễ từ chối nhầm người thật. Đặt ngưỡng lỏng thì khóa có thể chấp nhận nhầm người lạ. Hai lỗi này nằm ở hai đầu của một đánh đổi. Nó giống việc cân nhắc giữa bỏ sót và báo nhầm khi viết bộ lọc thư rác.
Ngoài đời, khóa còn gặp những lý do rất cụ thể. Tay ướt, tay dính dầu, vết xước hay cảm biến bám bụi đều làm lần quét kém đi. Bạn có thể giảm sự cố bằng vài cách đơn giản.
- Đăng ký nhiều ngón, cả hai tay.
- Lau cảm biến định kỳ bằng khăn mềm.
- Đặt ngón tay đúng góc và giữ yên vài giây.
- Đăng ký lại khi ngón tay thay đổi, ví dụ sau khi bị thương.
Mẫu vân tay lưu ở đâu: câu hỏi kiến trúc đáng đặt ra
Đây là câu hỏi mà dev nên quen đặt cho mọi hệ thống có dữ liệu cá nhân. Mẫu vân tay có hai chỗ để lưu. Một là lưu cục bộ ngay trong thiết bị. Hai là đồng bộ lên máy chủ.
Lưu cục bộ có lợi về riêng tư, vì dữ liệu không rời khỏi cánh cửa nhà bạn. Đổi lại, bạn không tiện dùng chung một danh sách trên nhiều thiết bị. Đồng bộ lên máy chủ tiện hơn khi quản lý nhiều cửa. Cái giá là bạn phải tin vào nơi lưu trữ và cách họ bảo vệ dữ liệu.
Khi chọn khóa vân tay, hãy hỏi nhà cung cấp dữ liệu vân tay được lưu thế nào. Nhiều thiết bị lưu mẫu đặc trưng thay vì ảnh gốc, nhưng điều này khác nhau theo từng mẫu. Cũng nên hỏi cách xóa dữ liệu khi bạn bán lại hoặc trả thiết bị.
Một ví dụ ngoài đời để luyện tư duy hệ thống: khóa vân tay cho cửa chính
Muốn luyện tư duy hệ thống, hãy quan sát một mẫu khóa thật thay vì chỉ đọc lý thuyết. Một ví dụ dễ tiếp cận là khóa vân tay cho cửa chính. Hãy mở trang sản phẩm và tìm câu trả lời cho vài câu hỏi.
Khóa có mấy cách mở: vân tay, mã, thẻ, chìa cơ hay nhiều hơn? Việc quản lý người dùng diễn ra thế nào, thêm và xóa ra sao? Khóa có ghi lại lịch sử không? Khi đã có câu trả lời, bạn thử vẽ sơ đồ luồng theo thứ tự sau.
Đăng ký, xác thực, mở cửa, ghi nhận, thu hồi. Năm bước này nghe như vòng đời của một tài khoản người dùng, và đúng là như vậy. Chiếc khóa chỉ là phiên bản vật lý của hệ thống bạn đang học viết.
Phương án dự phòng: bài học thiết kế mà ổ khóa dạy bạn
Mọi hệ thống xác thực đều cần đường vào khác khi lõi xác thực gặp lỗi. Với ổ khóa, đó là chìa cơ, mã dự phòng hoặc cổng cấp nguồn từ ngoài khi hết pin. Nhờ vậy cảm biến hỏng không biến bạn thành người đứng ngoài cửa nhà mình.
Trong ứng dụng, đường dự phòng quen thuộc nhất là nút quên mật khẩu. Có một bài học kèm theo: lối thoát phải an toàn không kém lối chính. Nếu ai cũng đặt lại được mật khẩu bằng vài thông tin dễ đoán, kẻ xấu sẽ đi lối đó. Họ chẳng cần phá cửa chính. Ổ khóa cũng vậy, một chìa cơ dễ sao chép làm yếu cả lớp vân tay phía trước.
Bài tập nhỏ cho người tự học: mô phỏng hệ thống mở khóa bằng ngôn ngữ bạn đang học
Cách hiểu nhanh nhất là tự làm một bản thu nhỏ. Hãy dùng ngôn ngữ bạn đang học, dù là Python, Java hay JavaScript. Bắt đầu bằng việc mô hình hóa ba đối tượng: người dùng, thông tin xác thực và nhật ký truy cập. Chưa quen cách chia đối tượng thì bạn có thể đọc học lập trình hướng đối tượng qua ví dụ thực tế.
Sau đó viết ba hàm: đăng ký, xác thực và thu hồi. Thêm giới hạn số lần thử sai, ví dụ sai ba lần thì khóa tạm. Rồi ghi mỗi lần thử vào nhật ký. Để kiểm tra các hàm này chạy đúng, hãy thử viết unit test cơ bản cho từng tình huống.
Một lưu ý quan trọng: đây chỉ là mô phỏng. Bạn đừng đụng vào thiết bị thật hay thử gỡ khóa ở nhà. Muốn biến bài tập thành sản phẩm, hãy coi đây là dự án cá nhân đầu tiên của bạn.
Câu hỏi thường gặp
Khóa có lưu ảnh vân tay của mình không?
Tùy mẫu. Nhiều thiết bị lưu mẫu đặc trưng thay vì ảnh gốc, nhưng bạn nên hỏi rõ nhà cung cấp. Hãy hỏi cả cách xóa dữ liệu khi bán lại thiết bị.
Vân tay có thay thế hoàn toàn mật khẩu được không?
Không nên mặc định như vậy. Vân tay tiện, nhưng vẫn cần một đường dự phòng như mã hoặc chìa cơ. Trong ứng dụng cũng thế: sinh trắc học thường đi kèm một cách xác thực khác.
Học về xác thực sinh trắc học nên bắt đầu từ đâu?
Hãy bắt đầu từ ba nhóm xác thực và thử làm bài tập mô phỏng ở trên. Khi đã quen, hãy tìm hiểu tiếp về ngưỡng so khớp và cách lưu dữ liệu sinh trắc học an toàn.
Muốn đối chiếu sơ đồ luồng với một mẫu thật, bạn có thể tham khảo thêm trên trang của hãng. Bạn cũng có thể hỏi đội ngũ tư vấn của hãng cách các mẫu khóa xử lý đăng ký và thu hồi vân tay.
