-
09/04/2020
-
93
-
609 bài viết
Phân tích các vấn đề liên quan đến Bluezone
Có nhiều mem trên diễn đàn hỏi tôi về bài viết liên quan đến Bluezone, tôi đã liên hệ trực tiếp nhóm phát triển Bluezone và có thông tin dưới đây để mọi người tham khảo (các đoạn in nghiêng dưới đây):
1. Bluezone sử dụng sóng Bluetooth để phát và thu mã số ngẫu nhiên. Thay vì liên tục thay đổi mã số ngẫu nhiên như các giải pháp của Singapore, Châu Âu hay Google/Apple, mỗi người sử dụng Bluezone chỉ có một mã số duy nhất, gọi là mã ID Bluezone. Người sử dụng không thể thay đổi mã số này, trừ khi xóa và cài lại ứng dụng. Cách làm không giống ai này khiến người sử dụng có thể bị theo dõi, bị lộ thông tin vị trí, hành trình, đã gặp ai, có bị nhiễm hay phơi nhiễm hay không.
Hãy xem việc sinh mã ngẫu nhiên giúp ích gì? Đầu tiên cần hiểu rõ về cơ chế hoạt động của Bluetooth. Điện thoại khi bật Bluetooth sẽ phát ra 2 loại tín hiệu là Bluetooth Classic và BLE. Trong tín hiệu Bluetooth classic quảng bá luôn có thông tin về địa chỉ MAC static của điện thoại (có từ khi sản xuất). Như vậy, nếu để trace một ai đó thì bạn có thể theo dõi MAC static này, và thực tế thì nó vẫn sẽ tồn tại cho tới khi Apple/Google cùng nhau ra chuẩn mới vào tới đây, tất nhiên với điều kiện là họ sửa để không phát ra Bluetooth classsic nữa. Rõ ràng chưa cần phải đeo mặt nạ nếu như bạn vẫn mặc quần áo có in tên trên ngực áo. Việc sinh nhiều mã Bluezone ID không làm bạn ẩn danh tốt hơn.
2. Ngoài việc không thay đổi mã ID Bluezone, ứng dụng Bluezone cũng không thay đổi địa chỉ Bluetooth của thiết bị. Nếu không thay đổi địa chỉ Bluetooth người dùng sẽ bị theo dõi và lộ bị lộ thông tin vị trí, hành trình, đã gặp ai, có bị nhiễm hay phơi nhiễm hay không. Đây cũng làm một cách làm không giống ai, vì các giải pháp của Châu Âu, Singapore hay Google/Apple đều nhấn mạnh phải thay đổi địa chỉ Bluetooth.
Nhóm phát triển đã cho tôi biết, địa chỉ Bluetooth của thiết bị là thuộc quản lý của hệ điều hành, nó được hệ điều hành tự thay đổi, ứng dụng KHÔNG THAY ĐỔI ĐƯỢC địa chỉ Bluetooth này. Hiện tại Thái đã tự thấy sai lầm và sửa lại nhận định ban đầu.
3. Mã ID Bluezone quá ngắn, dễ dẫn đến trùng mã. Tổng số lượng mã ngẫu nhiên là ở khoảng 36^6, tức lớn hơn 2^31 một chút. Theo nghịch lý ngày sinh, chỉ cần 2^16 người đăng ký sử dụng, tức là khoảng 65 ngàn người, thì sẽ có hai người có mã ID Bluezone trùng nhau với xác suất cao. Khi đó, nếu một trong hai người bị (phơi nhiễm), người kia cũng sẽ bị tính là nhiễm (phơi nhiễm)!
Nhóm phát triển cho biết, trong quá trình thiết kế, không những giải quyết các tình huống trùng ID (bất kể xác suất nào) nhóm còn mở rộng để đã giải quyết được 1 vấn đề lớn hơn mà các team khác trên thế giới chưa xử lý được: nếu kẻ xấu thu thập ID của nhiều người từ một bệnh viện rồi phát ở public, như vậy sẽ có nhiều người gặp cảnh báo giả. Cụ thể giải pháp của nhóm cho phép khi 1 Bluezoner giả định có phát hiện tiếp xúc F0 (nhận được thông tin qua broadcast), Bluezoner này có tùy chọn xác minh F0 mình đã tiếp xúc có đúng là F0 thật hay không, bằng cách gửi lịch sử tiếp xúc F0 của mình lên hệ thống để so sánh với lịch sử tiếp xúc của F0 đã được cơ quan Y tế cập nhật. Nếu không có sự tương đồng, Bluezoner không phải là F1.
4. Thuật toán tạo mã ID Bluezone rất dễ đoán. Chỉ cần biết thời điểm bạn đăng ký sử dụng app, người khác có thể đoán được mã ID của bạn. Tôi có thể tính được mã ID Bluezone của tất cả người dùng. Nếu bị lộ mã ID Bluezone, người dùng có thể bị kẻ xấu quy kết là đã nhiễm bệnh hoặc phơi nhiễm, dẫn đến bị cách ly, mặc dù hoàn toàn khỏe mạnh.
Nhóm phát triển cho biết họ dùng hàm sinh ngẫu nhiên theo millisecond. Cần đoán chính xác đến millisecond của 1 người thì chúng ta tự biết là có thể làm điều đó hay không.
5. Khi chạy app Bluezone lần đầu tiên, người sử dụng phải đăng ký để nhận tin nhắn từ máy chủ BKAV. Quá trình đăng ký dựa vào ID Bluezone, nhưng vì ID Bluezone có thể bị đoán trước, kẻ xấu có thể dễ dàng đăng ký để nhận mã ID Bluezone của tất cả người dùng, hoặc của một nhóm người dùng. Khi đó tất cả tin nhắn mà máy chủ BKAV gửi xuống người dùng đều sẽ bị lộ.
Theo sơ đồ “Hệ thống hoạt động như thế nào?” được công bố trên website Bluezone.vn, có thể thấy ở bước số 4, hệ thống gửi dữ liệu F0 tới tất cả các máy trong cộng đồng Bluezone (Broadcast). Như vậy, một Bluezoner sẽ nhận được tất cả các tin nhắn mà máy chủ của Bkav gửi xuống giống với tin nhắn của Bluezoner khác. Việc đoán trước hay đăng ký trùng với người khác để nhận tin nhắn không có ý nghĩa vì chỉ giúp nhận về 1 message mà ai cũng sẽ được nhận.
6. Ứng dụng Bluezone Android yêu cầu người dùng cấp quyền truy cập thông tin vị trí, hình ảnh, âm thanh, tài liệu lưu trên điện thoại. Bluezone không cần sử dụng những thông tin này để thực hiện truy vết. Nhóm phát triển ứng dụng nên gỡ bỏ những yêu cầu này.
Nhóm phát triển có chỉ cho tôi về FAQ trên website Bluezone.vn: “Bluezone không ghi nhận cũng như sử dụng vị trí của người dùng. Khi bạn cài đặt Bluezone trên Android và kích hoạt Bluetooth thì máy sẽ xin cấp quyền vị trí, điều này là do chính sách của Google khi bật Bluetooth BLE máy sẽ tự động xin quyền vị trí. Tuy nhiên Bluezone không sử dụng tới quyền đó.” Có vẻ bạn Thái cũng đã nhận ra sai lầm và tự sửa về nhận định ban đầu.
Bất kỳ programmer nào cũng đều biết khi bạn cần quyền truy cập bộ nhớ để backup file dữ liệu, Google sẽ có thông báo yêu cầu quyền như vậy. Để diễn giải quyền truy cập bộ nhớ cho dễ hiểu với những người dùng bình thường không am hiểu công nghệ, Google diễn giải quyền truy cập bộ nhớ là quyền về hình ảnh, phương tiện và tệp. Rất ngạc nhiên Thái làm Google mà không biết điều này, dẫn tới sai lầm khi đưa ra nhận định đây là vấn đề về an ninh.
1. Bluezone sử dụng sóng Bluetooth để phát và thu mã số ngẫu nhiên. Thay vì liên tục thay đổi mã số ngẫu nhiên như các giải pháp của Singapore, Châu Âu hay Google/Apple, mỗi người sử dụng Bluezone chỉ có một mã số duy nhất, gọi là mã ID Bluezone. Người sử dụng không thể thay đổi mã số này, trừ khi xóa và cài lại ứng dụng. Cách làm không giống ai này khiến người sử dụng có thể bị theo dõi, bị lộ thông tin vị trí, hành trình, đã gặp ai, có bị nhiễm hay phơi nhiễm hay không.
Hãy xem việc sinh mã ngẫu nhiên giúp ích gì? Đầu tiên cần hiểu rõ về cơ chế hoạt động của Bluetooth. Điện thoại khi bật Bluetooth sẽ phát ra 2 loại tín hiệu là Bluetooth Classic và BLE. Trong tín hiệu Bluetooth classic quảng bá luôn có thông tin về địa chỉ MAC static của điện thoại (có từ khi sản xuất). Như vậy, nếu để trace một ai đó thì bạn có thể theo dõi MAC static này, và thực tế thì nó vẫn sẽ tồn tại cho tới khi Apple/Google cùng nhau ra chuẩn mới vào tới đây, tất nhiên với điều kiện là họ sửa để không phát ra Bluetooth classsic nữa. Rõ ràng chưa cần phải đeo mặt nạ nếu như bạn vẫn mặc quần áo có in tên trên ngực áo. Việc sinh nhiều mã Bluezone ID không làm bạn ẩn danh tốt hơn.
2. Ngoài việc không thay đổi mã ID Bluezone, ứng dụng Bluezone cũng không thay đổi địa chỉ Bluetooth của thiết bị. Nếu không thay đổi địa chỉ Bluetooth người dùng sẽ bị theo dõi và lộ bị lộ thông tin vị trí, hành trình, đã gặp ai, có bị nhiễm hay phơi nhiễm hay không. Đây cũng làm một cách làm không giống ai, vì các giải pháp của Châu Âu, Singapore hay Google/Apple đều nhấn mạnh phải thay đổi địa chỉ Bluetooth.
Nhóm phát triển đã cho tôi biết, địa chỉ Bluetooth của thiết bị là thuộc quản lý của hệ điều hành, nó được hệ điều hành tự thay đổi, ứng dụng KHÔNG THAY ĐỔI ĐƯỢC địa chỉ Bluetooth này. Hiện tại Thái đã tự thấy sai lầm và sửa lại nhận định ban đầu.
3. Mã ID Bluezone quá ngắn, dễ dẫn đến trùng mã. Tổng số lượng mã ngẫu nhiên là ở khoảng 36^6, tức lớn hơn 2^31 một chút. Theo nghịch lý ngày sinh, chỉ cần 2^16 người đăng ký sử dụng, tức là khoảng 65 ngàn người, thì sẽ có hai người có mã ID Bluezone trùng nhau với xác suất cao. Khi đó, nếu một trong hai người bị (phơi nhiễm), người kia cũng sẽ bị tính là nhiễm (phơi nhiễm)!
Nhóm phát triển cho biết, trong quá trình thiết kế, không những giải quyết các tình huống trùng ID (bất kể xác suất nào) nhóm còn mở rộng để đã giải quyết được 1 vấn đề lớn hơn mà các team khác trên thế giới chưa xử lý được: nếu kẻ xấu thu thập ID của nhiều người từ một bệnh viện rồi phát ở public, như vậy sẽ có nhiều người gặp cảnh báo giả. Cụ thể giải pháp của nhóm cho phép khi 1 Bluezoner giả định có phát hiện tiếp xúc F0 (nhận được thông tin qua broadcast), Bluezoner này có tùy chọn xác minh F0 mình đã tiếp xúc có đúng là F0 thật hay không, bằng cách gửi lịch sử tiếp xúc F0 của mình lên hệ thống để so sánh với lịch sử tiếp xúc của F0 đã được cơ quan Y tế cập nhật. Nếu không có sự tương đồng, Bluezoner không phải là F1.
4. Thuật toán tạo mã ID Bluezone rất dễ đoán. Chỉ cần biết thời điểm bạn đăng ký sử dụng app, người khác có thể đoán được mã ID của bạn. Tôi có thể tính được mã ID Bluezone của tất cả người dùng. Nếu bị lộ mã ID Bluezone, người dùng có thể bị kẻ xấu quy kết là đã nhiễm bệnh hoặc phơi nhiễm, dẫn đến bị cách ly, mặc dù hoàn toàn khỏe mạnh.
Nhóm phát triển cho biết họ dùng hàm sinh ngẫu nhiên theo millisecond. Cần đoán chính xác đến millisecond của 1 người thì chúng ta tự biết là có thể làm điều đó hay không.
5. Khi chạy app Bluezone lần đầu tiên, người sử dụng phải đăng ký để nhận tin nhắn từ máy chủ BKAV. Quá trình đăng ký dựa vào ID Bluezone, nhưng vì ID Bluezone có thể bị đoán trước, kẻ xấu có thể dễ dàng đăng ký để nhận mã ID Bluezone của tất cả người dùng, hoặc của một nhóm người dùng. Khi đó tất cả tin nhắn mà máy chủ BKAV gửi xuống người dùng đều sẽ bị lộ.
Theo sơ đồ “Hệ thống hoạt động như thế nào?” được công bố trên website Bluezone.vn, có thể thấy ở bước số 4, hệ thống gửi dữ liệu F0 tới tất cả các máy trong cộng đồng Bluezone (Broadcast). Như vậy, một Bluezoner sẽ nhận được tất cả các tin nhắn mà máy chủ của Bkav gửi xuống giống với tin nhắn của Bluezoner khác. Việc đoán trước hay đăng ký trùng với người khác để nhận tin nhắn không có ý nghĩa vì chỉ giúp nhận về 1 message mà ai cũng sẽ được nhận.
6. Ứng dụng Bluezone Android yêu cầu người dùng cấp quyền truy cập thông tin vị trí, hình ảnh, âm thanh, tài liệu lưu trên điện thoại. Bluezone không cần sử dụng những thông tin này để thực hiện truy vết. Nhóm phát triển ứng dụng nên gỡ bỏ những yêu cầu này.
Nhóm phát triển có chỉ cho tôi về FAQ trên website Bluezone.vn: “Bluezone không ghi nhận cũng như sử dụng vị trí của người dùng. Khi bạn cài đặt Bluezone trên Android và kích hoạt Bluetooth thì máy sẽ xin cấp quyền vị trí, điều này là do chính sách của Google khi bật Bluetooth BLE máy sẽ tự động xin quyền vị trí. Tuy nhiên Bluezone không sử dụng tới quyền đó.” Có vẻ bạn Thái cũng đã nhận ra sai lầm và tự sửa về nhận định ban đầu.
Bất kỳ programmer nào cũng đều biết khi bạn cần quyền truy cập bộ nhớ để backup file dữ liệu, Google sẽ có thông báo yêu cầu quyền như vậy. Để diễn giải quyền truy cập bộ nhớ cho dễ hiểu với những người dùng bình thường không am hiểu công nghệ, Google diễn giải quyền truy cập bộ nhớ là quyền về hình ảnh, phương tiện và tệp. Rất ngạc nhiên Thái làm Google mà không biết điều này, dẫn tới sai lầm khi đưa ra nhận định đây là vấn đề về an ninh.
BQT WhiteHat.vn