Dữ liệu và cách bảo vệ kho tàng
Trong thời đại của dữ liệu, mọi người đều cố gắng thu thập nhiều dữ liệu nhất có thể, xây dựng những kho tàng của quý giá. Tuy nhiên, bảo vệ cái kho tàng đó thì là một thứ không vui vẻ gì.
Note: Mình nhận được request từ Thread nên mới thử viết về chủ đề này. Khổ lắm, có mấy khi được ai hỏi han gì đâu; thế nên có ai hỏi là mình nhiệt tình cố gắng ngay.
Cho (data) đi là còn mãi
Với mình, những năm từ 2000 trở đi có thể coi như là thời đại của dữ liệu. Các công ty công nghệ lớn nhất trên thế giới như Google, Meta, Amazon.., họ nhận ra sự quan trọng của dữ liệu người dùng cũng như những insights mà họ có thể đào sâu nghiên cứu và nắm rõ hơn về hành vi người dùng của họ. Cùng với sự phát triển của công nghệ, với khả năng lưu trữ, xử lý và phát triển dữ liệu năm sau tốt hơn năm trước, việc thu thập càng nhiều dữ liệu càng tốt gần như trở thành một cuộc đua, một sự ám ảnh của tất cả những tập đoàn lớn nhất trên thế giới.
Mình có từng viết về Data Lake và Data organization, nếu ai hứng thú có thể xem qua nhé!
Cùng với sự thấu hiểu của các công ty công nghệ về dữ liệu, thì dần dần mọi người có thể cảm thấy sự theo dõi của các ông lớn, như kiểu mọi đường đi nước bước của họ đều bị theo đuổi và giám sát. Mọi người dần nhận thức được là, mọi thứ họ làm ở trên mạng, đều có lưu lại những dấu vết, và các ông lớn trên mạng đã thâu tóm hết các dấu vết đó, xây ra những hồ sơ cho họ, chính xác đến mức creepy. Khi người tiêu dùng nhận ra là xưa nay họ đã cung cấp thông tin và dữ liệu cho các ông lớn Big Tech, và những thông tin đó đã được tận dụng để kiếm hàng tỷ đô cho việc quảng bá và thúc đẩy mọi người tiêu pha nhiều hơn. Câu quote nổi tiếng được sinh ra: “If the product is free, you are the product.”
Một khái niệm mới được sinh ra, và bắt đầu được phổ biến rộng rãi trong cộng đồng, đó là Data Privacy. Data Privacy, hoặc có chỗ khác gọi là Information Privacy, là một nguyên tắc về việc bảo mật dữ liệu, đó là người dùng có toàn quyền kiểm soát về dữ liệu cá nhân của họ, kể cả những dữ liệu mà các công ty đang lưu giữ về họ. Đây là một nguyên tắc, thế nên có rất nhiều cách để định nghĩa cũng như hiểu về vấn đề này. Tuỳ theo lãnh thổ hoặc là cơ quan lập pháp, mỗi khu vực sẽ lập thành những frameworks cũng như bộ luật quản lý những nội dung này. Nổi tiếng nhất thế giới chắc chắn là bộ luật GDPR (General Data Protection Regulation) của châu Âu, và tất cả các doanh nghiệp có hoạt động trên lãnh thổ châu Âu đều phải tuân theo những nguyên tắc này.
Về luật pháp thì thực sự là khá là phức tạp, nằm ngoài những thứ mình muốn viết, ai thích thì có thể đọc thêm để nghiên cứu. Tiêu chí quan trọng nhất là Consent(sự đồng thuận), đó là bên thu thập dữ liệu có trách nhiệm xin cấp phép từ phía người dùng trước khi thu thập, xử lý hoặc là sử dụng dữ liệu của họ. Các dữ liệu khi được thu thập thì cần được mã hoá, hoặc là biến chuyển (anonymization hay pseudonymization, mình sẽ nói thêm ở phía dưới) để tránh việc có thể từ dữ liệu để nhận diện người dùng. Ngoài ra bên lưu trữ dữ liệu còn có nhiệm vụ đảm bảo cho sự bảo mật của dữ liệu, không để lọt ra ngoài.
Các doanh nghiệp và kho dữ liệu của họ, từ việc coi dữ liệu như là một mỏ vàng mà họ có thể tận dụng và khai thác, nay cũng đã chịu thêm nhiều áp lực để thắt chặt việc quản lý kho báu này.
Bảo vệ dữ liệu vận hành
Khi nói kỹ hơn về việc quản trị dữ liệu của một doanh nghiệp, thì thực ra mình có thể chia dữ liệu đó ra thành hai hướng sử dụng khác nhau. Một là dữ liệu vận hành (Operational Data), có liên quan đến các thông tin và dữ liệu mà được dùng trong công việc vận hành hàng ngày của một doanh nghiệp. Hai, là dữ liệu phân tích (Analytics Data), được sử dụng trong các data use cases, dùng trong phân tích hoạt động của doanh nghiệp hoặc cũng có thể trong các data science/machine learning experience, để phát triển thêm các năng lực dữ liệu của doanh nghiệp.
Trong các khái niệm của Data Privacy, có những trường thông tin dữ liệu quan trọng nhất cần được bảo mật, được gọi là PII (viết tắt của personally identifiable information). Đây là những trường dữ liệu liên quan trực tiếp đến cá nhân, thường được định nghĩa là với một trong những thông tin này, bạn có thể trực tiếp nhận diện được cá nhân từ dữ liệu đang có. Một số ví dụ của thông tin nhận diện là số căn cước (national identity), số hộ chiếu, tên, số điện thoại, email, và tuỳ theo các vùng lãnh thổ thì có thể được định nghĩa thêm.
Những thông tin định danh này có thể nói là không thể thiếu trong hoạt động của doanh nghiệp. Ví dụ như một ngân hàng chẳng hạn, họ cần thông tin cá nhân của bạn để định danh trong lúc giao dịch, để đảm bảo các thông tin giao dịch của bạn là được thực hiện bởi đúng chính chủ, được lưu giữ trên hệ thống một cách chuẩn xác. Ngược lại, bạn cũng có thể thấy là chỉ có giao dịch viên mới có quyền được biết những thông tin đó của bạn, chứ một người khác cũng làm trong ngân hàng nhưng ở bộ phận khác thì không được phép biết những thông tin này. Đó là việc mà một doanh nghiệp phải đảm bảo, về quyền hạn và nghĩa vụ sử dụng thông tin cá nhân ra sao.
Các yếu tố đảm bảo an toàn của dữ liệu vận hành thường được nằm trên một số yếu tố:
Data Definition and Classification: Trước hết, các trường thông tin dữ liệu đều phải được định nghĩa và phân loại cụ thể. Phải có định nghĩa, thì mọi người mới có thể nắm bắt được dữ liệu này là thông tin gì, và thông tin này có phải PII hay không. Nắm bắt và định nghĩa được những thông tin này sẽ là nguồn gốc để đảm bảo cho thông tin được sử dụng và bảo vệ một cách chính xác. Việc phân loại thường được làm ở các dữ liệu tầng thấp nhất (từ những bản ghi gốc), và đi tiếp lên các tầng sau (khi các dữ liệu có thể là aggregated data hoặc là đã qua những bước xử lý khác nhau).
Role-based Access Control and Authentication/Authorization: Đầu mục thứ 2 thì lại nằm về phía người sử dụng Data, việc sử dụng dữ liệu phải được đính kèm với người đang sử dụng dữ liệu, và họ phải được cấp quyền để truy cập những dữ liệu này. Cùng với đó, mỗi người sẽ được cấp các quyền hạn khác nhau theo chức năng và nghiệp vụ của mình, và các chức năng và nghiệp vụ sẽ được gắn với các quyền sử dụng dữ liệu khác nhau. Quyền hạn thường sẽ bao gồm quyền đọc, quyền ghi, và quyền quản trị (cấp quyền cho người khác). Đi kèm những thông tin người dùng thì thường sẽ có nhu cầu về Audit Trail, để đảm bảo là tất cả những truy vấn dữ liệu đều có được lưu lại đầy đủ.
Row-level and Column-level security Control: Row-level access là về quyền được đọc những bản ghi nhất định thuộc thẩm quyền của mình, ví dụ như team ở Việt Nam thì không thể đọc dữ liệu của người dùng bên Singapore vì họ không được phép. Column-level thì lại nói về quyền hạn theo tuỳ trường dữ liệu, ví dụ team marketing có thể đọc được các dữ liệu liên quan đến campaign hoặc referral, nhưng không thể đọc được các thông tin transactional.
Phân tích và nghiên cứu
Việc bảo mật dữ liệu sẽ trở nên phức tạp hơn khi dẫn đến các trường hợp cần phân tích (Analytics) và nghiên cứu(Data Science/Machine Learning) về data.
Khi nghĩ đến việc phân tích dữ liệu, thì mọi người thường hay nghĩ đến việc đào sâu vào dữ liệu và xây dựng reports hoặc là đào sâu hơn để tìm ra các insights về data. Tuy nhiên, khi nhìn từ hướng Data Privacy thì mọi người có thể nhận ra là có hai thể loại reports khác nhau thường được sử dụng
Business Reporting: những report hoặc visualization mang tính tổng hợp, aggregate dữ liệu để ra các metrics high-level hơn. Với những report này, vì thông tin đã được gom lại, nên đã mất tính cá nhân trong dữ liệu, không thể suy luận và nối lại với một user cụ thể nào cả. Những report này có thể mang tính an toàn hơn về mặt dữ liệu cá nhân. (Một phần cũng có thể quan trọng ở đây là về row-level và column-level security, ví dụ như nếu report được xây dựng theo vùng thì có thể quản lý của vùng này không nên thấy được thông tin của vùng khác.)
Operational Reporting: những report mang tính cụ thể, đi đến level của từng cá nhân, và sẽ được các bên vận hành sử dụng cho nghiệp vụ hàng ngày. Ví dụ như là danh sách những đơn hàng bị lỗi trong ngày, mà bên Customer Support cần để liên hệ với bên mua hàng để xử lý; những danh sách này sẽ cần thông tin cụ thể đến level của cá nhân. Những report như thế này cần được đối xử tương tự như dữ liệu vận hành, vì những thông tin cá nhân chưa được loại bỏ, và nên được đánh giá vào việc quản trị dữ liệu cá nhân của doanh nghiệp.
Đối với các bài toán Data Science, thậm chí vấn đề đôi khi còn phức tạp hơn. Bạn muốn nghiên cứu để xây dựng thêm các models, ví dụ như xây dựng một thuật toán cho recommendation engine, hoặc là một model để làm credit scoring. Để giải quyết những bài toán này, bạn có thể sẽ cần hết tất cả các thông tin về transaction của users, hoặc tất cả những thông tin của user clickstream. Về mặt doanh nghiệp, những thông tin này sensitive và có thể để lộ nhiều thông tin của khách hàng; nhưng data scientist thực sự cũng không cần phải quan tâm đến khách hàng này là ai. Cách xử lý trong trường hợp này thường là biến đổi những tệp dữ liệu này và loại bỏ những thông tin PII đi, thường là anonymization hoặc pseudonymization.
Anonymization: đây là một phương thức để loại bỏ thông tin khỏi các bản ghi để đảm bảo thông tin không thể được dùng để nhận diện người dùng. Các thông tin về bản ghi trở thành “vô danh” (anonymous). (ví dụ apply one-way hash function lên số căn cước và phân tích trên
hashed_id
).Pseudonymization: Thay vì loại bỏ hẳn các thông tin khỏi bản ghi, thì các thông tin định danh sẽ được đổi thành một cái tên giả (pseudonym). Các mapping từ tên giả và tên thật sẽ vẫn được lưu trữ lại ở đâu đó (và được bảo mật riêng), còn các phân tích dữ liệu sẽ được hoạt động nằm trên định danh giả này. (ví dụ bạn có 1 bảng
user
, trong đó có trườngid
vàsafe_id
, trong các nghiệp vụ phân tích thì data scientists chỉ biết đượcsafe_id
chứ không được biết đếnid
có định danh đầy đủ.
Cách thức để loại bỏ PII ra khỏi dữ liệu phân tích, thường được mang mục đích để bảo mật thông tin tuy nhiên vẫn giữ nguyên giá trị cho việc phân tích - một khái niệm được gọi là giá trị dữ liệu(statistical utility): cùng một dataset, dù là unanonymized, anonymized hay pseudonymized, vẫn có thể dẫn đến cùng một insights khi phân tích.
Tuy nhiên, việc loại bỏ các thông tin PII khỏi dữ liệu, chưa chắc đã hoàn toàn đảm bảo an toàn bảo mật thông tin. Dựa vào các thông tin public khác hoặc các khả năng tổng hợp và phân tích dữ liệu, mà các bên nghiên cứu vẫn có thể đảo ngược lại quá trình và định danh được nguồn gốc của dữ liệu (còn gọi là inference attack). Đây là một vấn đề với các bên chia sẻ dữ liệu phân tích ra bên ngoài, khi những thông tin tưởng chừng đã được dọn dẹp cẩn thận nhưng vẫn có khả năng gây lộ dữ liệu. Có một nhánh nghiên cứu khác, gọi là differential privacy, về việc sử dụng các kỹ thuật toán học trong việc phân phát các dữ liệu ra ngoài, bổ sung thêm noise nhất định để đảm bảo là khi chia sẻ phân tích ra ngoài thì không làm ảnh hưởng đến kết quả nghiên cứu mà vẫn đảm bảo được sự an toàn cho dữ liệu người dùng.
Kết
An toàn dữ liệu cá nhân thực ra là một chủ đề rất khó. Nhiều người có nhắc đến vấn đề này từ phía của người tiêu dùng, và thật sự mình cũng tin là người tiêu dùng cần và nên biết cách bảo vệ thông tin cá nhân của mình. Khi các đạo luật được đặt ra và bảo vệ an toàn cho người tiêu dùng, doanh nghiệp sẽ chịu thêm nhiều trách nhiệm về mình về việc đảm bảo an toàn dữ liệu cá nhân; tương ứng với thêm khá nhiều việc cần phải làm, nhiều thứ phải quan tâm và để mắt đến.
Mình viết bài này, từ phía góc nhìn của doanh nghiệp, đặc biệt là những tập đoàn đã lớn hơn một chút, có một lượng data dồi dào và cũng đã sử dụng data chăm chỉ trong quá trình phát triển. Hiểu cách bảo vệ data, cũng là một cách để đảm bảo an toàn cho doanh nghiệp của bạn.
Em xin bổ sung chút context sau khi học sơ về Data Privacy ạ:
Khi phân tích và chia sẻ dữ liệu, mặc dù đã được pseudonymized/ anonymized/ aggregated để nhưng vẫn có rủi ro về tính riêng tư vì attacker có thể dùng những chiêu ảo ma để trích xuất thông tin như:
- Linkage Attack: dùng dữ liệu ngoài (auxiliary data, chẳng hạn như dataset đã được public từ trước) và join với dữ liệu được anonymized. Ví dụ có case Netflix Prize: các nhà nghiên cứu join dữ liệu review trên IMDB (public datacó tên thật của user) với dữ liệu psedonymized của Netflix bằng cách match điểm & thời gian đăng review.
- Singling out Attack: Dùng cả bộ dữ liệu để lấy thông tin về một người. VD: một hệ thống cho query chỉ số aggregated về lương trong công ty nhưng không cho xem từng bản ghi, nhưng nếu biết trong công ty chỉ có 1 nhân viên là nữ, >60 tuổi thì khi query SUM(salary) WHERE gender = F and age > 60 sẽ ra chính xác lương của người đó.
- Reconstruction Attack: Từ một số thông tin aggregated mà có thể suy ngược ra bảng dữ liệu ban đầu.
- và mấy loại attack nữa khai thác weight hoặc output của ML model
Để bảo vệ được trước các chiêu thức này thì có thể áp dụng những biện pháp anonymization mạnh hơn:
- k-anonymity: đảm bảo mỗi bản ghi không thể phân biệt được với k-1 bản ghi khác. Chẳng hạn kể cả không có unique ID thì chỉ cần 3 cột gender, ZIP code, date of birth đã có thể định danh được 87% công dân Mỹ. Có thể che bớt thông tin ở 3 cột này (VD: biến age thật thành age range, hoặc che bớt chữ số trong ZIP code) để k-1 bản ghi có (gender-ZIP code-DOB) giống nhau -> không thể dựa vào 3 cột để định danh.
- Differential privacy: dùng một thuật toán add calibrated noise vào dữ liệu (chẳng hạn Laplace mechanism sẽ chọn giá trị noise từ Laplace distribution), khiến cho attacker không thể dùng kết quả query để suy đoán về từng bản ghi trong data.
- và những phương pháp để bảo vệ ML model (bảo vệ dữ liệu lẫn model) như: differentially private gradient descent (DP-SGD), private aggregation of teacher ensembles (PATE), hoặc federated learning.
Điểm chung của các phương thức này là privacy-utility tradeoff, có nghĩa là để tăng mức riêng tư một tí thì phải giảm tính chính xác trong phân tích hoặc xây dựng model một tí. Cần cân đối làm sao để mức giảm trong tính chính xác không ảnh hưởng tới ứng dụng của dữ liệu. Chẳng hạn khi báo cáo dân số theo bang ở Mỹ thì có thể chấp nhận sai số ở mức % nhỏ. (For context, US Census 2020 là một case rất nổi về ứng dụng differential privacy).