Vấn đề: Niềm tin mù quáng
Khi cài một ứng dụng theo dõi em bé, bạn cho phép ứng dụng đó tiếp cận một không gian rất riêng tư: phòng của bé. Ứng dụng lắng nghe và đôi khi còn quan sát. Trong khi đó, cha mẹ thường không thể biết điều gì diễn ra ở phía sau: các luồng dữ liệu có đi qua máy chủ của bên thứ ba không, dữ liệu sử dụng có được thu thập không, và về mặt kỹ thuật thì ai có thể truy cập những dữ liệu đó?
Câu trả lời thành thật là: với nhiều ứng dụng, bạn không biết. Mã nguồn bị đóng và kiến trúc chỉ là lời khẳng định. Cuối cùng, bạn được yêu cầu tin vào nhà cung cấp.
Mã nguồn đóng, nhiều lỗ hổng
Trong những năm gần đây đã có không ít báo cáo về thiết bị theo dõi em bé bị tấn công. Người lạ có thể nghe lén, điều khiển camera hoặc nói qua loa. Phần lớn không phải là các cuộc tấn công quá tinh vi, mà là những lỗi nghiêm trọng: kết nối không mã hóa, mật khẩu mặc định, thiếu xác thực.
Với phần mềm độc quyền, người bên ngoài thường chỉ nhận ra những điểm yếu đó sau khi sự cố đã xảy ra. Các nhà nghiên cứu bảo mật, lập trình viên độc lập và cha mẹ chỉ có thể đánh giá sản phẩm hoàn chỉnh từ bên ngoài. Với một thiết bị đặt trong phòng của bé, đó là một cách tiếp cận thiếu vững chắc.
Minh bạch là một nguyên tắc bảo mật
An toàn thông tin có một quy tắc lâu đời và hữu ích: nguyên tắc Kerckhoffs. Bảo mật không được phụ thuộc vào việc thiết kế bị giữ bí mật. Một hệ thống vẫn phải an toàn ngay cả khi người khác biết nó được xây dựng như thế nào.
Mã nguồn được công khai kèm tài liệu không tự động khiến phần mềm trở nên an toàn. Tuy nhiên, điều đó giúp các tuyên bố có thể được kiểm chứng. Những người am hiểu lĩnh vực này có thể xem xét luồng dữ liệu, cách dẫn xuất khóa và các quy tắc thay vì chỉ đọc nội dung tiếp thị.
Cách tiếp cận của Timmy: Tách riêng lõi bảo mật
Trong Timmy, giờ đây tôi phân tách rất rõ những phần thực sự quan trọng đối với bảo mật. Không phải mọi dòng mã giao diện đều quyết định sản phẩm có đáng tin hay không. Những phần then chốt là logic phía máy chủ, các quy ước báo hiệu, mật mã dùng để ghép nối và việc dữ liệu nào được gửi đến máy chủ.
Vì vậy, lõi bảo mật hiện nằm trong kho lưu trữ công khai baby-monitor-timmy-core. Toàn bộ mã nguồn ứng dụng hiện chưa được công khai. Các thành phần quan trọng đối với bảo mật được tách khỏi giao diện và logic sản phẩm để có thể được viết tài liệu và kiểm tra độc lập.
Cụ thể điều này có nghĩa là gì?
- Ranh giới rõ ràng: các thành phần bảo mật được tách khỏi giao diện và logic sản phẩm.
- Luồng dữ liệu có thể kiểm tra: việc ghép nối, báo hiệu và các giao diện phía máy chủ có thể được lập tài liệu riêng.
- Không có công cụ theo dõi ẩn: các luồng xử lý trọng yếu chỉ chứa những thành phần cần thiết về mặt kỹ thuật.
- Dễ duy trì lâu dài: một lõi tách riêng dễ kiểm tra hơn một hệ thống nguyên khối thiếu cấu trúc.
Kết luận: Cha mẹ xứng đáng có sự minh bạch
Khi một ứng dụng có quyền tiếp cận phòng của bé, ứng dụng đó cần trả lời rõ ràng những câu hỏi quan trọng: Dữ liệu nào được tạo ra? Dữ liệu đi đâu? Ai có thể đọc dữ liệu đó? Cha mẹ xứng đáng nhận được nhiều hơn một biểu tượng cam kết quyền riêng tư ở chân trang.
Baby Monitor Timmy cần cho thấy rằng một sản phẩm tốt và khả năng kiểm tra bảo mật hoàn toàn có thể song hành. Với tôi, điều đó không có nghĩa là công khai mọi ngóc ngách của ứng dụng. Điều đó có nghĩa là công khai những phần quyết định việc ghép nối, báo hiệu, quyền truy cập phía máy chủ và luồng dữ liệu.