Nếu có một việc tech media (phương tiện công nghệ) muốn làm tốt, đó là nhảy lên xe hype (hype wagon), monger fear (gây sợ), và blast off (phát射) những câu chuyện chưa xác minh, không hoàn chỉnh liên quan đến privacy (riêng tư) và security (bảo mật). Một câu chuyện như vậy liên quan đến khả năng hiện có trong Google Chrome và Chromium, cho phép bạn dùng hotword 'OK, Google' trong tab mới và trang tìm kiếm Google.
Đây không có gì mới, nhưng câu chuyện bùng nổ khi một user Debian báo cáo một closed-source blob (binary lớn) mới trong bản download Chromium 43 của anh ta. Điều này khiến cộng đồng rộng lớn điên loạn, buộc tội Google làm việc tay trong tay với spy agency (cơ quan gián điệp), nhiều orifice (khoảng trống) bị violated (vi phạm), và mọi người chuyển sang trình duyệt khác. Bây giờ, một việc tech media không làm tốt là thực sự GIÚP người sửa vấn đề. Vậy Chrome hay Chromium có đang gián điệp bạn không? Có cách giảm thiểu không? Để tôi chỉ cho bạn.
Điều đầu tiên
Điều cơ bản nhất bạn cần làm là tự hỏi: nếu bạn KHÔNG tin tưởng Google, thì tại sao bạn dùng sản phẩm của nó? Tại sao bạn dùng Chrome nếu bạn sợ công ty đang cố profiling (hồ sơ) hành vi, bán quảng cáo và thế? Hành động nói lớn hơn lời. Nếu bạn thực sự sợ cho privacy và security, bạn không nên dùng trình duyệt.
Cái đó nói, nếu bạn không tin Google, bạn không nên dùng bất kỳ sản phẩm Google nào. Nhưng mà, mọi người hoàn toàn hạnh phúc khi dữ liệu cá nhân được thu thập trên smartphone, họ có rich search history (lịch sử tìm kiếm giàu) trong trình duyệt, vì họ thực sự logged into Google (đăng nhập Google) khi dùng trình duyệt, đừng hỏi tôi tại sao, và họ cũng trao đổi thông tin nhạy cảm riêng tư dùng email, chat và tương tự. Đó là reality check (kiểm tra thực tế). Nếu bạn nghĩ trình duyệt sẽ bị lạm dụng vì nó có chức năng mới, bạn đang bỏ qua mọi thứ khác.
Bây giờ, chi tiết kỹ thuật
Được rồi. Vậy, nếu nhìn Chrome, trong cửa sổ settings, dưới Search (Tìm kiếm), bạn có tùy chọn enable (bật) voice functionality (chức năng giọng nói). Nó disabled by default (tắt mặc định).
Để chi tiết hơn, bạn có thể điều hướng đến chrome://voicesearch. Ở đây, bạn thực sự có thể thấy thêm chi tiết kỹ thuật về chức năng. Điều này đúng cho cả Windows và Linux, và tôi đã test và kiểm tra cái gì cho cả Windows 7 cũng như CentOS 7, mà không phải lựa chọn rõ ràng, nhưng tôi muốn cho bạn nhiều hơn một source (nguồn) tham khảo. Hai locale (ngôn ngữ/khu vực), để an toàn.
Chức năng, bật hay tắt?
Nếu bạn toggle (chuyển đổi) voice search on hoặc off, trạng thái Microphone yes/no sẽ thay đổi tin cậy trên Windows, nhưng trên Linux, nó có thể không phản ánh trạng thái của chức năng. Tuy nhiên, điều này hơi misleading (gây hiểu lầm), vì chúng ta sẽ thảo luận sau vài giây. Audio capture (thu âm) và NaCl sẽ luôn enabled. Giá trị Hotword Search Enabled không thay đổi, bất kể bạn chọn tùy chọn nào. Trạng thái của shared library (thư viện chia sẻ) và extension không thay đổi, bất kể bạn chọn tùy chọn nào.
Và trong hộp CentOS 7 của chúng ta, chúng ta có:
Có thêm thông tin hữu ích ở đây chúng ta cần xem. Như đã nói, voicesearch dường như được cung cấp như một extension, cộng với có shared module (module chia sẻ). Thực sự, chính shared closed source binary blob (blob nhị phân nguồn đóng) đó đã gây ra bão. Nhưng hãy nhìn extension.
Extension
Đường dẫn trên Windows trỏ đến Program Files, và trong Linux, nó nằm dưới /opt, như bạn thấy trong screenshot trên. Tuy nhiên, rất lạ, trên cả hai platform, những đường dẫn này invalid (không hợp lệ). Không có gì ở đó.
Extension Id nbpagnldghgfoolbancepceaanlmhfmd
Extension Version 0.0.1.4
Extension Path C:\Program Files (x86)\Google\Chrome\
Application\43.0.2357.130\resources\hotword
Extension State ENABLED
Ngay cả khi bạn search system-wide (toàn hệ thống), ví dụ trên Linux, bạn sẽ không tìm thấy gì ngoại trừ shared module piece, nằm bên trong user profile bên trong home folder hoặc directory của user:
find / -name \*hotword\*
/home/roger/.config.../x86-64_en-us/hotword.data
/home/roger/.config.../x86-64_en-us/hotword-x86-64.nexe
/home/roger/.config.../0.3.0.5_0/hotword_ru.nmf
/home/roger/.config.../hotword_pt-br.nmf
/home/roger/.config.../hotword_.nmf
...
Hơn nữa, extension không hiện trong danh sách extensions, một khiếu nại khác của user Chrome và Chromium. Nếu thứ gì đó supposed to be (nên là) extension, thì nó nên visible (hiển thị), và user nên có control (kiểm soát) trạng thái của nó.
Tuy nhiên, nếu bạn muốn xem extension, bạn có thể start Google Chrome với flag --show-component-extension-options từ command line, và sau đó bạn sẽ thấy full listing (liệt kê đầy đủ), bao gồm voice search. Bạn không thể enable, disable hoặc uninstall extension theo bất kỳ cách nào, nguồn frustration (sự thất vọng) và fear (nỗi sợ) khác.
Shared module
Shared module thực sự nằm ở nơi nó nói, bên trong user profile. Đường dẫn hơi convoluted (quay cuồng). Cả trên Windows và Linux, nó đi kèm cùng tên và extension (nexe). Cơ bản, shared module bao gồm hai file, một là data, đọc các cấu hình ngôn ngữ và cài đặt khác từ file cấu hình hotword.
Shared Module Id lccekmodgklaepjeofjdjpbminllajkg
Shared Module Version 0.3.0.5
Shared Module Path C:\Users\...\AppData\Local\Google\
Chrome\User Data\Default\Extensions\
lccekmodgklaepjeofjdjpbminllajkg\
0.3.0.5_0
Shared Module State ENABLED
Các cấu hình đến trong một series (chuỗi) file region/language-specific, cộng với manifest, tất cả trong định dạng JSON rất xấu xí. Không có gì đặc biệt. Standard Chrome extension stuff. Ngắm nhìn:
{
"description": "Support files for Chrome Hotwording.",
...
"key": "...MIIBIjB",
"manifest_version": 2,
"minimum_chrome_version": "39",
"name": "Chrome Hotword Shared Module",
"platforms": [ {
"lang": "de",
"nacl_arch": "arm",
"sub_package_path": "_platform_specific/arm_de/"
}, {
...
File nexe thực sự là binary, và nó stripped of debug symbols (bỏ qua debug symbol):
file ./.config/google-chrome.../x86-64_en-us/hotword-x86-64.nexe
./.config/google-chrome.../x86-64_en-us/hotword-x86-64.nexe: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=0x555dd22448ca6d88d6311092340a8b92309865f5, stripped
Nếu bạn muốn trace (truy vết) execution của Chrome và xem điều gì xảy ra khi bạn toggle voice search settings, cũng như dùng hotword, thì bạn không thể làm nó không dùng hidden flag (cờ ẩn) khác cho Chrome. Mặc định:
strace -f -s512 -o /tmp/chrome /opt/google/chrome/chrome
The setuid sandbox is not running as root. Common causes:
* An unprivileged process using ptrace on it, like a debugger.
* A parent process set prctl(PR_SET_NO_NEW_PRIVS, ...)
Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted
Bạn sẽ cần chạy chương trình với --disable-setuid-sandbox. Tuy nhiên, không có gì thực sự hữu ích hoặc thú vị trong execution, và button click và checkbox state change không phản ánh trong system calls hay library calls. Nó tất cả internal functions (hàm nội bộ). Bạn có thể nghĩ điều này suspicious (nghi ngờ), nhưng nó không. Đây hoàn toàn ổn.
Mini summary
Vậy những gì chúng ta có lúc này là:
Trạng thái microphone voicesearch thay đổi khi bạn toggle 'OK, Google' hotword on/off trong system settings, nhưng nó không phải cơ chế duy nhất ảnh hưởng cài đặt này. Hai cài đặt audio khác không bị ảnh hưởng. Hotword, extension và share module sẽ luôn đọc là enabled, ngay cả khi chúng không được dùng hoặc toggle bên trong browser settings menu.
Chức năng được liệt kê như extension, nhưng extension nói trên không tồn tại trên filesystem. Nó hiện trong danh sách, khi Chrome được invoked (gọi) với flag đặc biệt.
Shared module có cùng tên trên Windows và Linux, và nó ở bên trong user profile. Nó stripped of debug symbols, và khi traced, nó không cho thấy bất kỳ activity nào liên quan đến voicesearch functionality.
Cách tắt voicesearch
Bây giờ, nếu bạn test trình duyệt và microphone, bạn sẽ thấy 'OK, Google' hoạt động khi enabled và không hoạt động khi disabled. Tốt. Bạn cũng luôn có thể dùng icon mic trong Google search để thực hiện voice search KHÔNG PHỤ THUỘC vào những thứ trên. Lần lượt, Chrome sẽ hỏi bạn có muốn permit (cho phép) dùng microphone không:
Nếu bạn muốn completely disable (vô hiệu hóa hoàn toàn) khả năng lắng nghe của trình duyệt, thì bạn sẽ muốn yank (kéo) shared module đi. Bạn có thể đổi permission của nó hoặc move (di chuyển) file vào folder khác, hoặc thậm chí delete (xóa) chúng:
chmod 000 ~/.config/.../x86-64_en-us/hotword-x86-64.nexe
Nếu bạn làm điều này, bạn sẽ thấy hành vi sau. Trong Windows, trạng thái microphone sẽ không thay đổi trong trang chrome://voicesearch, trừ khi bạn check box on hoặc off. Ngay cả khi hotword file không hiện diện, trình duyệt sẽ hoạt động không có lỗi, và nó sẽ không throw (ném) bất kỳ exception nào. Tuy nhiên, voice search SẼ KHÔNG hoạt động. Di chuyển, xóa hoặc de-permissioning (bỏ quyền) hotword executable chắc chắn hoạt động.
Trong Linux, trạng thái microphone sẽ thay đổi thành No nếu shared module missing (thiếu), và bạn sẽ không thể dùng voice search với hotword - trừ khi bạn explicitly click (nhấn rõ ràng) nút audio trong trang Google search.
Trạng thái của shared module và extension sẽ đọc ENABLED, trên cả hai platform, ngay cả khi bạn xóa file. Tuy nhiên, type (loại) của nó sẽ thay đổi từ known, recognizable platform (nền tảng đã biết, nhận dạng được) sang một cái không defined (không xác định):
Bây giờ, vì chúng ta xóa file, chúng có thể về lý thuyết quay lại với lần nâng cấp trình duyệt tiếp theo, vì vậy đây là điều bạn cần chú ý. Nhưng lại nói, đừng dùng sản phẩm bạn không tin tưởng. Nếu bạn thực sự paranoid (hoang tưởng) về điều Google đang làm, thì bạn không nên loay hoay với Chrome. Thực tế, toàn bộ mục đích bài tập này là chỉ cho bạn thấy những việc có thể làm, mọi thứ không sinister (âm mưu) như chúng xuất hiện lần đầu. Bạn có khả năng kiểm soát hệ thống của bạn, và bạn hiểu trình duyệt làm gì bây giờ.
Kết luận
Google chắc chắn không giúp chính nó bằng cách cung cấp nhiều conflicting messages (thông điệp mâu thuẫn) trong một package. Enabled, disabled, yes, no, có nửa תריסר (half a dozen) permutations (hoán vị) cho chức năng này, không cái nào thực sự phản ánh công nghệ có đang chạy và nó chạy như thế nào. Nhưng nó khá đơn giản. GUI settings menu quản trị trạng thái, thực sự. Và nếu bạn thực sự paranoid, bạn có thể remove (loại bỏ) shared module, và chức năng sẽ biến mất không quan trọng bạn chọn gì trong menu.
Tôi có thể hiểu sự outrage (phẫn nộ) của user Chromium, nhưng foundation (cơ sở) cho nỗi sợ của họ là unfounded (vô căn cứ). Lại nói, Google có thể đã giúp chính nó bằng cách làm toàn bộ hotword attempt (cố gắng) transparent (minh bạch) hơn và dễ navigate (điều hướng) và tweak (chỉnh sửa) hơn. Nhưng không có gì indicate (chỉ ra) bất kỳ malice (ác ý) nào. Chỉ wonky coding (code lúng túng). Tất nhiên, có bigger, fundamental question (câu hỏi cơ bản lớn hơn) của trust (niềm tin). Ở đây, lời khuyên của tôi khá đơn giản. Đừng dùng software nếu bạn không cảm thấy an toàn với nó. Đúng cho Chrome hoặc bất kỳ chương trình nào. Bitching (phàn nàn) không giúp. Dead simple (đơn giản đến chết).
Đó. Chúng ta xong. Điều này không xấu như vụ GWX Microsoft kéo trên user của nó, nhưng nó gần. Rồi, chúng ta không bao giờ thực sự biết binary blob này có thể làm gì một ngày nào đó, và chúng ta không có control (kiểm soát) lên nó. Có lẽ đó mới là lo ngại thực sự. Nhưng nếu bạn phải, xóa file và vấn đề giải quyết. Lý do tôi viết bài này. Để cho bạn lựa chọn quyết định gì tốt nhất cho bạn. Ô, và Google đã pull (kéo) extension ra khỏi Chromium builds, vậy. Không còn lo lắng. Cho đến lần sau.
Chúc vui.