Cập nhật về Bluezone

Bằng cách phân tích phiên bản Android mới nhất (2.0.3, phát hành ngày 3/8/2020), tôi thấy app Bluezone đã sửa chữa những lỗ hổng quan trọng nhất mà tôi đã loan báo hồi tháng 4. Cụ thể, Bluezone đã không còn sử dụng một ID duy nhất, mà đã tự động thay đổi ID mỗi vài phút. Ngoài ra, Bluezone cũng đã không còn thu thập địa chỉ Bluetooth Classic nữa, nhờ nỗ lực thuyết phục của anh Phan Dương Hiệu.

Nếu như trước đây ai cũng có thể theo dõi hay thu thập thông tin của người sử dụng Bluezone, với cách làm hiện tại thì chỉ có đội phát triển Bluezone và Chính phủ Việt Nam mới có thể thu thập thông tin. Những F0 sẽ được cấp một mã OTP để tải lên máy chủ Bluezone toàn bộ lịch sử tiếp xúc. Từ F0, máy chủ sẽ thông báo đến các F1 và toàn bộ lịch sử tiếp xúc của F1 cũng sẽ được đưa lên máy chủ Bluezone.

Với cách làm này, máy chủ Bluezone sẽ có thông tin social graph (ai quen ai; ai gặp ai, vào lúc nào) của người dùng. Hiện tại Bluezone có hơn 2 triệu cài đặt và nhiều khả năng sẽ tăng cao trong thời gian sắp tới. Khi đó máy chủ Bluezone sẽ có social graph của một lượng lớn người ở Việt Nam. Bluezone có cam kết dữ liệu mà người dùng chia sẻ với máy chủ "sẽ được và chỉ được sử dụng để phục vụ quá trình truy vết tìm F1, F2 nhằm bảo vệ cộng đồng khỏi nguy cơ lây nhiễm COVID-19".

Lời khuyên của tôi:

1/ Đối với người dùng cuối: nếu anh chị tin tưởng đội phát triển Bluezone và Chính phủ Việt Nam, hãy cài đặt Bluezone. Số lượng người cài đặt sẽ ảnh hưởng trực tiếp đến hiệu quả của công nghệ này.

2/ Đội phát triển Bluezone và Chính phủ Việt Nam nên đưa ra cam kết xóa bỏ dữ liệu mà máy chủ Bluezone thu thập được ngay sau khi dịch bệnh không còn nữa.

3/ Đội phát triển Bluezone nên công bố phương án bảo vệ dữ liệu mà máy chủ thu thập được, đảm bảo chỉ người có thẩm quyền mới có thể đọc hoặc ghi dữ liệu. Đảm bảo an ninh cho máy chủ cũng là một vấn đề cần được quan tâm. Chính phủ Việt Nam nên thuê một bên thứ ba đánh giá độc lập cách làm của Bluezone.

4/ Đội phát triển Bluezone nên cập nhật mã nguồn và whitepaper đã công bố trên GitHub cho đúng với phiên bản mới nhất. Nếu được thì cũng nên công bố mã nguồn của máy chủ. Làm vậy sẽ giúp những ai quan tâm có thể đóng góp dễ dàng hơn.

Những đánh giá và kiến nghị ở đây dựa trên kết quả reverse engineering. Tôi đã làm tốt nhất trong khả năng của mình, nhưng vẫn có thể có sai sót. Tôi sẽ tiếp tục theo dõi Bluezone và sẽ thông báo trên blog này nếu có thông tin hay phát hiện mới.

Nho nhà trồng được. Không còn xanh như cách đây vài tháng, nhưng vẫn còn chua.

Comments

NAD said…
Đã cài!
Unknown said…
Em không tin lắm mà thôi vẫn cài.
Locphat493 said…
Nếu cài thì những thông tin liên quan đến tài khoản ngân hàng những giao dịch trực tuyến có bị đánh cắp không ? Xin cảm ơn.
No name said…
Liệu có bị theo dõi và kiểm soát giống tq đang làm với dân của nó không? Hiện tại chính phủ đang ra sức tuyên truyền và ép buộc phải cài app ( khi thông chốt kiểm dịch).
Le Huong said…
Trên Apple store vẫn là bản 2.0.1 phát hành 12/5/2020 mà chưa thấy bản 2.0.3?!
Thai Duong said…
>Nếu cài thì những thông tin liên quan đến tài khoản ngân hàng những giao dịch trực tuyến có bị đánh cắp không ? Xin cảm ơn.

Tôi không thấy có khả năng này.

>Liệu có bị theo dõi và kiểm soát giống tq đang làm với dân của nó không? Hiện tại chính phủ đang ra sức tuyên truyền và ép buộc phải cài app ( khi thông chốt kiểm dịch).

Với cách Bluezone đang hoạt động, Chính phủ có thể biết được ai đã gặp ai vào lúc nào. Thông tin này sẽ giúp chống dịch hiệu quả hơn.

Tôi dự đoán nếu tình hình dịch bệnh không thuyên giảm, sắp tới chỉ có những ai có Bluezone và Bluezone hiển thị "không có nguy cơ" mới được tự do di chuyển.

>Trên Apple store vẫn là bản 2.0.1 phát hành 12/5/2020 mà chưa thấy bản 2.0.3?!

Phiên bản 2.0.3 cho Android mới ra đời ngày hôm qua 3/8/2020. Chắc phải đợi vài ngày nữa mới có phiên bản iOS.
Marcel Nguyen said…
Cảm ơn anh tâm huyết của anh Thái.

Tôi thấy, Nếu các tổ chức tình báo, hacker chính phủ nước ngoài để mắt tới thì đây rõ ràng là một miếng mồi béo bở. Chính phủ VN và đơn vị phát triển Bluezone cần ý thức được nguy cơ này và chủ động minh bạch thông tin, có giải pháp phòng tránh.

Hiện tại, nếu cần tôi sẽ khai báo y tế ở web như tokhaiyte ,... Chứ chưa thấy cần thiết phải cài app này. Một phần vì tôi ở vvung nguy cơ thấp, ít đi lại, du chuyển ở ngoài trời.
quoc said…
Điểm 2) là một củ khoai, lúc nóng phỏng tay nhưng lúc nguội thì rất ngon. Tuy nhiên, dù không thực hiện 2) thì cũng không sao. Social graph sẽ không có nhiều tác hại nếu chỉ thu thập ở một thời điểm. Hết dịch, mọi người gỡ app rồi thì cái social graph cũ sẽ mất dần ý nghĩa. Không còn là một cái risk mình phải lo lắng nữa.
Thai Duong said…
>Điểm 2) là một củ khoai, lúc nóng phỏng tay nhưng lúc nguội thì rất ngon. Tuy nhiên, dù không thực hiện 2) thì cũng không sao. Social graph sẽ không có nhiều tác hại nếu chỉ thu thập ở một thời điểm. Hết dịch, mọi người gỡ app rồi thì cái social graph cũ sẽ mất dần ý nghĩa. Không còn là một cái risk mình phải lo lắng nữa.

Khi thiết kế cái Exposure Notification API, team của tôi đã có nhiều thảo luận về chuyện này. Nếu bạn để ý sẽ thấy thiết kế của tụi tôi không tiết lộ cho máy chủ biết social graph của F0 và F1. Lý do vì nhiều đồng nghiệp cho rằng social graph là thông tin có giá trị lâu dài. Một khi máy chủ đã biết A và B quen nhau, gặp nhau vào lúc nào thì không có cách gì để A hoặc B "lấy lại" thông tin đó cả.
Zai Tri said…
Chỉ mong sớm qua cơn dịch này để mọi thứ trở lại bình thường, mọi người tự có trách nhiệm bảo vệ mình và gia đình mình trong giao tiếp, trong cuộc sống, trong công việc.
No name said…
Tôi dùng 2 đt và cùng cài bluezone thì điều gì sẽ xảy ra? Tôi sẽ có 2 mã định danh? Như vậy chính phủ sẽ kiểm soát như thế nào?
Chân thành cảm ơn anh
Unknown said…
>Điểm 2) là một củ khoai, lúc nóng phỏng tay nhưng lúc nguội thì rất ngon. Tuy nhiên, dù không thực hiện 2) thì cũng không sao. Social graph sẽ không có nhiều tác hại nếu chỉ thu thập ở một thời điểm. Hết dịch, mọi người gỡ app rồi thì cái social graph cũ sẽ mất dần ý nghĩa. Không còn là một cái risk mình phải lo lắng nữa.
Khi thiết kế cái Exposure Notification API, team của tôi đã có nhiều thảo luận về chuyện này. Nếu bạn để ý sẽ thấy thiết kế của tụi tôi không tiết lộ cho máy chủ biết social graph của F0 và F1. Lý do vì nhiều đồng nghiệp cho rằng social graph là thông tin có giá trị lâu dài. Một khi máy chủ đã biết A và B quen nhau, gặp nhau vào lúc nào thì không có cách gì để A hoặc B "lấy lại" thông tin đó cả.

> Có vẻ như Anh Thái chưa trả lời đúng trọng tâm của câu hỏi từ phía bạn đọc ạ. Em cũng thấy he has a point khi cho rằng social graph đã xóa đi cũng sẽ k có ý nghĩa, nếu ta có biện pháp đảm bảo mọi dữ liệu đã được clear từ phía bluezone và cả CP VN
Thai Duong said…
>Tôi dùng 2 đt và cùng cài bluezone thì điều gì sẽ xảy ra? Tôi sẽ có 2 mã định danh? Như vậy chính phủ sẽ kiểm soát như thế nào?

Bluezone có đề nghị đăng ký số điện thoại. Nếu bạn dùng cùng một số trên cả hai máy, máy chủ Bluezone có thể liên kết chúng lại. Nếu bạn dùng hai số khác nhau, hoặc không đăng ký số điện thoại, máy chủ sẽ khó liên kết.

>Có vẻ như Anh Thái chưa trả lời đúng trọng tâm của câu hỏi từ phía bạn đọc ạ. Em cũng thấy he has a point khi cho rằng social graph đã xóa đi cũng sẽ k có ý nghĩa,

Tôi không trả lời câu hỏi, vì bạn "quoc" không đặt câu hỏi. "quoc" nói rằng social graph không có nhiều ý nghĩa lâu dài, tôi không đồng ý và đưa ra một ví dụ.

>nếu ta có biện pháp đảm bảo mọi dữ liệu đã được clear từ phía bluezone và cả CP VN

Đây là một trong những đề nghị của tôi. Cho đến nay Chính phủ hay Team Bluezone chưa có cam kết về chuyện này.

Trong trường hợp họ cam kết dữ liệu sẽ được xóa, dữ liệu cũng sẽ được lưu trữ ít nhất 1-2 năm. Trong thời gian đó, ai được quyền truy cập và sử dụng dữ liệu cũng là một vấn đề mà Chính phủ và Team Bluezone cần minh bạch hơn.
Mới tập hax said…
Hi các bác,
Em cũng từ bài này mà lùng ra cái github của team này thì đang mò code có nhiều vấn đề nhưng mà chưa tiện để thử
- Trước hết mình thấy không clear lắm với khái niệm "open source" vì bởi lẽ tại sao open source mà thấy code server hình như không update, check issue thì thấy bạn trong team bảo là chỉ public để mọi người thấy công nghệ thôi :D
- Thứ 2 thấy cái con này dùng sức người nhiều quá, mình thấy một số đoạn up file history bây giờ ai cũng có quyền up history thì sao nhỉ :D
- Và hình như vẫy có thể sinh token, mình đọc file swift thì thấy gần như chỉ sinh qua file random; không như dp3t hay các giải pháp khác đã sử dụng SHA để mã hoá
=> Kịch bản chưa test: Sinh ID và upload file f0,f1 :( Em không có máy ạ các bác có gì ném đá nhẹ nhẹ thôi nhé
Dear a Thai

Với code bản 2.0.3 thì tất cả thông tin đều được lưu tại máy đối tượng. Như vậy mỗi app đc cài sẽ tự thu thập thông tin,khi nào bị xác định là f0 sẽ chuyển lên server và server gửi thông báo tới các f1. Về bản chất thì đâu có khác gì so với bản 2.0.1? đâu có đột phá gì về riêng tư a?

Android đã lên đc bản 2.0.3,trong khi ios sớm kiểm duyệt thì hnay mới lên đc. Trong thời gian vá lỗi chắc cũng khoảng 2tr thông tin người dùng đã được thu thập. Theo a Thái, kịch bản nào sẽ xảy ra khi thông tin bi leak ra ngoài? Có khả năng việc gửi gói tin giả xuống nhiều f1 trở thành f0? Khi có social graph việc truy vết sẽ dễ dàng và nhiều việc khác cũng dễ dàng theo đúng k a? Việc thay đổi dữ liệu hoặc cố tình chèn thông tin vào 1 đối tượng có nguy cơ cao f0 có thể xảy ra không a?

Em k phải dân it hỏi cho mở rộng tầm hiểu biết thôi ạ. Đọc mấy bài của bạn Ms17 trả lời lòng vòng trả đâu vào đâu nên mạng phép vào đây hỏi a ạ :)
Thai Duong said…
>Với code bản 2.0.3 thì tất cả thông tin đều được lưu tại máy đối tượng. Như vậy mỗi app đc cài sẽ tự thu thập thông tin,khi nào bị xác định là f0 sẽ chuyển lên server và server gửi thông báo tới các f1. Về bản chất thì đâu có khác gì so với bản 2.0.1? đâu có đột phá gì về riêng tư a?

Tôi không rõ 2.0.1 làm như thế nào, nhưng trước đây Bluezone chỉ tạo ra một fixed ID duy nhất, còn bây giờ đã sử dụng rolling IDs thay đổi trong vài phút.

Phần liên lạc với máy chủ để làm matching còn khá mù mờ, vì tài liệu không rõ ràng và mã nguồn phần client chưa được công bố. Tôi RE thì thấy làm giống như bạn nói. Máy chủ gửi push notification có chứa danh sách F0 xuống client và client sẽ kiểm tra xem có gặp F0 hay chưa. Nếu có thì client sẽ tự động upload contact history lên. Tôi tính khi có thời gian sẽ coi kỹ lại phần này và sẽ viết chi tiết sau.

>Android đã lên đc bản 2.0.3,trong khi ios sớm kiểm duyệt thì hnay mới lên đc. Trong thời gian vá lỗi chắc cũng khoảng 2tr thông tin người dùng đã được thu thập.

Tôi không hiểu rõ lắm bạn nói vá lỗi ở đây là lỗi gì. Bạn có thể giải thích thêm được không.

>Theo a Thái, kịch bản nào sẽ xảy ra khi thông tin bi leak ra ngoài?

Nếu thông tin mà máy chủ thu thập được bị leak thì social graph của F0 và F1 sẽ bị leak.

>Có khả năng việc gửi gói tin giả xuống nhiều f1 trở thành f0?

Tôi không hiểu câu hỏi này lắm, bạn có thể giải thích thêm không?

>Khi có social graph việc truy vết sẽ dễ dàng và nhiều việc khác cũng dễ dàng theo đúng k a?

Đúng rồi. Đây là một trade-off giữa privacy của người dân và khả năng dập dịch. Mỗi quốc gia sẽ có lựa chọn riêng. Cá nhân tôi thấy trong hoàn cảnh văn hóa, xã hội của Việt Nam, lựa chọn của Việt Nam là chấp nhận được.

>Việc thay đổi dữ liệu hoặc cố tình chèn thông tin vào 1 đối tượng có nguy cơ cao f0 có thể xảy ra không a?

Có. Đây là lý do tôi yêu cầu Team Bluezone và Chính phủ phải minh bạch hơn nữa ai có quyền đọc và ghi dữ liệu trên máy chủ.
Thai Duong said…
>- Trước hết mình thấy không clear lắm với khái niệm "open source" vì bởi lẽ tại sao open source mà thấy code server hình như không update, check issue thì thấy bạn trong team bảo là chỉ public để mọi người thấy công nghệ thôi :D

Tôi nghĩ nên công bố mã nguồn máy chủ để minh bạch hơn. Nếu không có mã nguồn thì ít nhất cũng nên cập nhật client cho đúng với giao thức hiện giờ và cả whitepaper.

>- Thứ 2 thấy cái con này dùng sức người nhiều quá, mình thấy một số đoạn up file history bây giờ ai cũng có quyền up history thì sao nhỉ :D


Bạn thấy cái này ở đâu? Tôi RE thì thấy F0 muốn upload thì phải có mã OTP do cơ quan y tế cấp. Còn F1 muốn upload thì hình như phải có một cái gọi là FindID, nhưng tôi chưa rõ cái FindID đó là cái gì.

>- Và hình như vẫy có thể sinh token, mình đọc file swift thì thấy gần như chỉ sinh qua file random; không như dp3t hay các giải pháp khác đã sử dụng SHA để mã hoá
=> Kịch bản chưa test: Sinh ID và upload file f0,f1 :( Em không có máy ạ các bác có gì ném đá nhẹ nhẹ thôi nhé

Có thể bạn xem code cũ đó. Code mới ở đây: https://github.com/BluezoneGlobal/bluezone-app/blob/master/ios/Scanner/BluezoneId/BluezoneIdGenerator.swift.

Bluezone tuyên bố rằng "Ứng dụng chỉ lưu dữ liệu trên máy của bạn, không chuyển lên hệ thống". Như vậy server Bluezone đâu có social graph nào và chính phủ cũng đâu cần cam kết bảo vệ và xoá dữ liệu (vì đâu có giữ dữ liệu).
Thai Duong said…
>Bluezone tuyên bố rằng "Ứng dụng chỉ lưu dữ liệu trên máy của bạn, không chuyển lên hệ thống". Như vậy server Bluezone đâu có social graph nào và chính phủ cũng đâu cần cam kết bảo vệ và xoá dữ liệu (vì đâu có giữ dữ liệu).

Whitepaper của Bluezone không còn chính xác nữa bạn ơi. Mã nguồn và kết quả RE cho thấy dữ liệu của F0 sẽ được đưa lên máy chủ, nếu F0 đồng ý. Tôi không rõ F0 có được quyền không đồng ý hay không :-)
>>Bluezone tuyên bố rằng "Ứng dụng chỉ lưu dữ liệu trên máy của bạn, không chuyển lên hệ thống". Như vậy server Bluezone đâu có social graph nào và chính phủ cũng đâu cần cam kết bảo vệ và xoá dữ liệu (vì đâu có giữ dữ liệu).

>Whitepaper của Bluezone không còn chính xác nữa bạn ơi. Mã nguồn và kết quả RE cho thấy dữ liệu của F0 sẽ được đưa lên máy chủ, nếu F0 đồng ý. Tôi không rõ F0 có được quyền không đồng ý hay không :-)

Như vậy khi chưa trở thành F0 thì dữ liệu cá nhân vẫn chưa bị đưa vào server?
Thai Duong said…
>Như vậy khi chưa trở thành F0 thì dữ liệu cá nhân vẫn chưa bị đưa vào server?

Hi vọng là vậy. Có một chỗ cho thấy có khả năng dữ liệu của F1 cũng sẽ bị đưa vào server. Tôi đang coi kỹ lại để kiểm tra cho chính xác.

Nhưng dẫu chỉ có dữ liệu F0 thì nó cũng khác với cam kết "Ứng dụng chỉ lưu dữ liệu trên máy của bạn, không chuyển lên hệ thống".

Cám ơn anh Thái đã trả lời

Việc bản 2.0.1 hiện vẫn sử dụng trên ios thì cách thu thập thông tin theo phương thức cũ. Nếu không nhầm đã có anh đã RE bản 2.0.1 thông tin sẽ gửi về máy chủ của ms17, như vậy hiện tại đã rất nhiều MAC đã được thu thâp. Khi đồng bộ bản 2.0.3 cả ios và android thì bộ dữ liệu 2.0.1 theo a sẽ được xử lý ntn?

Vì việc scan blu được dựa theo quét khu vực, nên việc có người vì mục đích nào đó tự biến mình thành f0 hoặc giả làm f0 vì 2 phương thức ở 2.0.1 và 2.0.3 đều sử dụng các gói tin từ máy chủ tới đối tượng

Em cũng tò mò về máy chủ và sự giao thức giữa các client và máy chủ, khi việc gửi chèn hay trao đổi thông tin không có mã hóa 2 đầu. A có đề xuất phương án nào cho bên ms17 đảm bảo an toàn k?

Rất vui khi được trao đổi vs a
Tran Trung Hieu said…
hi Thái, mình muốn mail (contact) cho bạn thì bằng cách nào nhỉ?
Google và Apple sẽ sớm tích hợp chức năng này vào OS
Thai Duong said…
Tran Trung Hieu: Email của tôi là thaidn@gmail.com.
Kaka said…
Ví dụ trong doanh nghiệp muốn mở kết nối internet cho chỉ mình ứng dụng Bluezone thì nó sử dụng địa chỉ nào? port nào các Bác ơi?