Ôi trời, thông báo gần đây của Google về Device Bound Session Credentials (DBSC) làm tôi nhớ lại thời thanh niên thức đêm gỡ rối.
Khi gửi xe, bạn nhận một vé xe. Muốn lấy xe ra, bạn phải đưa đúng vé đó. Tương tự, khi đăng nhập Gmail hay Facebook, máy chủ sẽ cấp cho trình duyệt một chiếc vé xác định bạn là ai. Tấm vé thường được lưu trong một HTTP cookie.
Vấn đề là ai cầm cookie thì người đó đăng nhập được vào tài khoản của bạn. Hồi đó, khi xuất hiện một loạt tấn công TLS có thể làm lộ cookies, tôi muốn tìm cách để chỉ chủ tài khoản thật sự mới dùng được cookie của mình.
Đó là lúc tôi gặp Dirk Balfanz. Anh kể tôi nghe về Channel ID, hay Channel-Bound Cookies. Dirk là người đứng sau dự án security key, một trong những phát minh bảo mật quan trọng nhất trong hai mươi năm qua. Vì vậy, khi Dirk nói, tôi lắng nghe rất kỹ.
Channel ID gán cho mỗi thiết bị một device ID duy nhất dưới dạng khóa công khai. Trong quá trình bắt tay TLS, thiết bị chứng minh nó sở hữu khóa riêng tương ứng qua một phần mở rộng TLS. Về bản chất, nó giống TLS client authentication nhưng đơn giản hơn.
Cookie phát hành cho thiết bị sẽ được ràng buộc với device ID. Nếu khóa riêng nằm trong security key hoặc TPM, cookie chỉ dùng được trên máy đó. Về lý thuyết, việc đánh cắp cookie sẽ không còn là mối lo ngại.
Tôi rất thích ý tưởng và xung phong thực hiện. Việc này đòi hỏi sửa cả Chrome lẫn Google Accounts, hệ thống xác thực cho mọi sản phẩm Google. Khi ấy Google rất cởi mở. Một kỹ sư vô danh như tôi cũng có thể chạm vào hạ tầng trọng yếu, tất nhiên phải qua xét duyệt.
Nhưng phần lớn thời gian tôi chìm trong việc gỡ rối. Có quá nhiều báo động giả. Internet đầy rẫy thiết bị TLS lỗi khiến device ID thay đổi, làm máy chủ tưởng cookie bị đánh cắp.
Chúng tôi cũng không tìm thấy trường hợp nào cookie của nhân viên Google bị đánh cắp. Có thể chưa từng xảy ra, hoặc có nhưng chìm trong biển báo động giả.
Đây là dự án 20% của tôi. Khi một dự án 20% bế tắc, bạn chọn cái khác. Eduardo Vela rủ tôi làm PGP bằng JavaScript, nghe vui hơn hẳn chuyện vật lộn với TLS, nên tôi báo Dirk mình sẽ rẽ hướng.
Ngày nay, DBSC cũng nhằm ngăn đánh cắp cookie nhưng khác ở chỗ không dựa vào TLS. Nó chuyển lên tầng HTTP và thay vì một device ID duy nhất, DBSC dùng session ID ngẫu nhiên, được thiết lập và quản lý qua HTTP. Thiết kế đơn giản mà hiệu quả!
Channel ID thất bại, nhưng cho tôi một bài học sâu sắc: an ninh mạng không chỉ là săn lỗ hổng.
Tôi từng nghĩ rằng chỉ cần tìm được lỗ hổng nguy hiểm là coi như công thành danh toại. Nhưng mỗi năm có gần 30.000 lỗ hổng được công bố, “lỗ hổng bom tấn” lắm thì cũng chỉ nổi được năm phút trên Twitter rồi thôi.
Tôi muốn có tác động lâu dài, làm những việc mà 10, 20 hay 50 năm sau nhìn lại, vẫn còn hữu ích. Săn lỗ hổng chỉ là một con đường. Kỹ sư bảo mật còn cần phải biết cách thiết kế và xây dựng giải pháp có thể loại bỏ cả một lớp lỗ hổng.
Những năm tháng ở Google giúp tôi hiểu rằng tác động bền vững đến từ việc xây dựng công nghệ giúp Internet an toàn hơn cho tất cả mọi người. Đây là kim chỉ nam cho những gì chúng tôi đang làm ở Calif.
Nhân tiện nói về Calif: Công ty đang phát triển mạnh mẽ! Hiện chúng tôi đã có 40 người và từ nay đến cuối năm sẽ cần thêm 10 người nữa.
Nếu bạn biết một hacker xuất sắc, hãy giới thiệu cho chúng tôi qua email hiring@calif.io. Nếu người đó được tuyển và gắn bó cùng Calif ít nhất sáu tháng, bạn sẽ nhận 2.000 USD tiền thưởng ngay tại chỗ!