Tại sao việc làm mờ đi thông tin nhạy cảm là một ý tưởng không hay

Diem Do

Rõ ràng là bạn biết vể tất cả các hình ảnh của mọi người trên tivi hay trên trực tuyến, những người mà bị làm mờ đi khuôn mặt. Ví dụ, đây là một hình ảnh của Bill Gates:

Nguồn từ  Wikimedia Commons

 

Đối với hầu hết các phần, không có cách tiện lợi nào để thay đổi lại những hình ảnh các khuôn mặt mà đã bị làm mờ quá chi tiết để bạn có thể nhận ra tấm ảnh. Vì thế đó là điều tốt nếu đó là những gì bạn mong muốn. Tuy nhiên, nhiều người cũng sử dụng điều này để làm mờ đi các con số hay các văn bản nhạy cảm. Tôi sẽ giải thích và minh họa tại sao đó là một ý tưởng tồi.

 

Giả sử một số người đăng lên một bức ảnh trong hóa đơn của họ hay thẻ tín dụng trực tuyến cho bất kỳ lí do khủng khiếp nào ( chứng minh với Digg rằng tôi kiếm được một triệu đô-la, thể hiện những thứ hài hước trong hóa đơn so với kích thước của một số thứ với thẻ tín dụng v.v  ), làm mờ đi các bức ảnh với hiệu ứng khảm ảnh quá phổ biến để ẩn đi các con số:

 

 

Dường như an toàn bởi vì không ai có thể đọc những con số này? Đó là điều hoàn toàn sai lầm. Đây là để tấn công một chiều đến chương trình này:

 

Bước 1: Lấy một hình ảnh để trắng kiểm tra

 

Đây là hai cách để thực hiện điều này. Bạn có thể sử dụng Photoshop để xóa đi những con số trong bức ảnh đang có hay trong trường hợp của những thẻ tín dụng, bạn có thể lấy một tài khoản với cùng tổ chức và lấy một bức ảnh khác của riêng bạn giống vậy và phù hợp với mức độ cân bằng trắng và độ tương phản.Sau đó, sử dụng hình ảnh có độ phân giải cao của riêng bạn có sử dụng photoshop để xóa đi những con số. Dĩ nhiên, đây là cách dễ dàng trong những bức ảnh ví dụ này.

 

 

Bước 2: Lặp lại.

 

Sử dụng một script để lặp lại tất cả các con số tài khoản có thể và tạo một hóa đơn cho mỗi script, ngăn chặn các phần khác nhau của chữ số cho mỗi phần. Ví dụ, cho một thẻ tín dụng VISA, các con số được nhóm lại thành 4, vì thế bạn có thể thực hiện mỗi phần độc lập theo một chiều, thêm vào đó sẽ tạo ra 4*10000= 40000 hình ảnh theo yêu cầu, đó là các dễ dàng với một script.

 

 

Bước 3: Làm mờ mỗi hình ảnh giống hệt nhau từ ảnh gốc.

 

Xác định chính xác kích thước và độ lệch pixel cho các tấm ảnh khảm được dùng để làm mờ đi các hình ảnh gốc theo một chiều dễ dàng, sau đó thực hiện tương tự cho mỗi bức ảnh được làm mờ. Trong trường hợp này, chúng ta có thể nhìn thấy được hình ảnh bị làm mờ, chúng ta có mỗi đơn vị khảm là 8×8 pixel và độ lệch được xác định bằng cách đếm từ đỉnh của hình ảnh :

 

 

Bây giờ chúng ta lặp lại tất cả các hình ảnh, làm mờ chúng bằng cách tương tự như hình ảnh gốc và sẽ có được kết quả như hình dưới:

 

Bước 4: Xác định vector độ sáng khảm cho mỗi hình ảnh.

 

Điều đó có nghĩa là gì? Chúng ta hãy lấy phiên bản khảm 0000001 thu nhỏ:

 

 

và xác định độ sáng (từ 0 -255) cho mỗi khu vực khảm,lập chỉ mục cho phù hợp ví dụ như a= [a_1, a_2,…,a_n]:

 

Trong trường hợp này, số tài khoản 0000001 tạo ra vector độ sáng khảm là a(0000001) = [213,201,190,…]. Chúng tôi tìm thấy vector độ sáng khảm cho mỗi số tài khoản một chiều tương tự nhau sử dụng một script để làm mờ đi mỗi hình ảnh và hiển thị độ sáng. Hãy để cho a(x) là một chức năng của số tài khoản x.a(x)_i biểu thị cho giá trị vector thứ i của vector độ sáng khảm được lấy từ số tài khoản x. Ở trên, a(0000001)_1 = 213.

 

Bây giờ chúng tôi thực hiện tương tụ với hình ảnh kiểm tra gốc, chúng tôi đã tìm thấy trên trực tuyến hay bất cứ nơi đâu và có được một vector mà ở đây chúng tôi gọi là z=[z_1,z_2,…,z_n]:

 

 

Bước 4: Tìm một hình ảnh gốc với khoảng cách gần nhất.

 

Xác định độ sáng khảm cho hình ảnh gốc gọi nó là z=[z_1,z_2,…,z_n] và sau đó đơn giản chỉ cần tính khoảng cách của vector độ sáng khảm của mỗi số tài khoản(thông thường cho mỗi số đầu tiên):

 

d(x)=sqrt((a(x)_0/N(a(x)) – z_0/N(z))^2 + (a(x)_1/N(a(x)) – z_1/N(z))^2 + …)

 

có N(a(x)) và N(z) là hằng số bình thường được cho bởi:

 

N(a(x)) = (a(x)_0^2 + a(x)_1 ^2 + …)^2

N(z) = (z_0^2 + z_1 ^2 + …)^2

 

Bây giờ, chúng tôi đơn giản là tìm ra khoảng cách thấp nhất là d(x). Mỗi thẻ tín dụng, chỉ là một phần nhỏ xác nhận các con số có thể đến những số thẻ tín dụng giả thuyết có thể, vì vậy đó là một kiểm tra theo một chiều dễ dàng.

 

Trong trường hợp trên đây, chúng tôi đã tính toán như sau:

 

N(z) = sqrt(206^2+211^2+…) = 844.78459

N(a(0000001)) = 907.47837

N(a(0000002)) = 909.20647

 

và sau đó tiến hành tính toán các khoảng cách:

 

d(0000001) = 1.9363

d(0000002) = 1.9373

d(1124587) = 0.12566

d(1124588) = 0.00000

 

Có thể số tài khoản chỉ là 1124588 phải không? 

 

“Nhưng bạn đã sử dụng hình ảnh dễ dàng giải mã thủ công của riêng bạn!”

 

Trong thế giới thực chúng ta có hình ảnh kiểm tra không có thực được làm bằng Photoshop. Chúng tôi có những đoạn văn bản biến dạng do góc máy ảnh, căn chỉnh không hoàn hảo. Nhưng không ngăn cản được con người xác định chính xác những gì biến dạng và tạo ra một script để áp dụng chúng. Dù là cách nào đi chăng nữa, một vài khoảng cách thấp nhất có thể được xem xét như những ứng cử viên, đặc biệt trong thế giới của thẻ tín dụng, nơi mà các con số được chia thành từng nhóm 4, và chỉ là 1 trong 10 con số là thực sự mới có một số hợp lệ, tạo ra sự dễ dàng để chọn từ một vài khoảng cách thấp nhất hàng đầu với những ứng cử viên phù hợp nhất.

 

Một điều quan trọng là người ta cần phải thực hiện để thực thi điều này với những bức ảnh thực sự là để cải thiện các thuật toán khoảng cách. Ví dụ, một là có thể viết lại công thức khoảng cách trên đây để chuẩn hóa độ lệch chuẩn thêm vào đó là việc cải thiện hiệu suất. Một cũng có thể thực hiện giá trị RGB hay HSV theo một chiều độc lập cho mỗi khu vực khảm, và một cũng có thể sử dụng script để  làm sai lệch đi văn bản bằng một vài pixel theo mỗi hướng và so sánh chúng (vẫn để lại với một con số  khả thi của sự so sánh trên một máy tính cá nhân nhanh chóng. ) Một có thể cũng sử dụng các thuật tóan tương tự các thuật toán có hình dạng gần nhất hiện có để giúp cải thiện độ tin cậy trên những hình ảnh thật.

 

Vì thế, tôi sử dụng một hình ảnh đển chống lại chính nó và thiết kế nó để làm việc ở đây. Nhưng thuật toán chắn chắn có thể  được cải thiện để làm việc trên một công cụ thực sự. Mặc dù, tôi không có thời gian và cũng mong cải thiện điều này nhiều hơn nữa, bởi vì tôi không là người duy nhất sau khi biết được thông tin của bạn. Nhưng có một điều chắn chắn: đây là một tình huống rất dễ để sửa đổi. Đừng sử dụng kỹ thuật khảm ảnh đơn giản để làm mờ hình ảnh của bạn. Tất cả các bạn thực hiện là để làm giảm lượng thông tin từ một hình ảnh bao gồm  log(10^N)/log(2) bit ảnh hưởng của dữ liệu tài khoản. Khi bạn phân phối những hình ảnh, bạn muốn loại bỏ những thông tin cá nhân, không che khuất nó bằng cách làm giảm lượng thông tin có thể nhìn thấy trong hình ảnh.

 

Suy nghĩ để tạo ra một hình minh họa 100×100 trên màn hình. Bây giờ hãy nói rằng tôi chỉ đạt trung bình với toàn bộ hình minh họa và được thay thế mỗi pixel với toàn bộ mức trung bình (biến nó thành một kỹ thuật “khảm” theo pixel đơn lẻ). Bạn chỉ có thể tạo ra một chức năng bắt đầu với 256^(10000) khả năng có thể xảy ra và chọn lựa ra 256 khả năng. Rõ ràng là không có cách nào với những thông tin kết quả 8 bit bạn có thể lặp lại những bức ảnh gốc. Tuy nhiên, nếu bạn biết rằng hình ảnh gốc  là một trong những 10 khả năng, bạn có thể dễ dàng có được thành công trong việc xác định những hình ảnh gốc được sử dụng từ các con số 8 bit đang biết.

 

Tương tự với việc tấn công của một từ điển

 

Hầu như các quản trị viên hệ thống UNIX/Linex biết rằng /etc/passwd or /etc/shadow lưu trữ những mật khẩu được mã hóa sử dụng mã hóa theo một chiều chẳng hạn như Salt hoặc MD5. Đây là sự an toàn chấp nhận được từ khi không ai bao giờ sẽ có thể giải mã được mật khẩu bằng cách nhìn vào mã của nó. Xác thực các việc xảy ra bằng cách thực hiện việc mã hóa tương tự trên mật khẩu được nhập vào bởi người dùng khi đăng nhập, và so sánh với kết quả được lưu lại bằng một kết quả. Nếu có hai thứ tương xứng nhau thì người dùng xác thực thành công.

 

Biết rằng đó là một chương trình mã hóa theo một chiều là dễ dàng bị phá vỡ khi người dùng lấy một từ trong từ điển như là một mật khẩu của họ. Tất cả các kẻ tấn công sẽ phải thực hiện sau đó như một người mã hóa toàn bộ từ điển Tiếng Việt và so sánh các bản mã của mỗi từ với bản mã được lưu lại trong đường dẫn /etc/passwd và nhận được từ đúng như là một mật khẩu. Như vậy người dùng được khuyên là nhận được nhiều mật khẩu phức tạp hơn không chỉ là lời nói. Tấn công từ điển có thể được minh họa như sau:

 

 

Tương tự như cuộc tấn công từ điển là cuộc tấn công hình ảnh bị làm mờ, thực tế là làm mờ một hình ảnh là một chương trình mã hóa một chiều. Bạn chuyển đổi hình ảnh của mình thì sẽ có được một hình ảnh được thiết kế mà không thể nào đọc được. Tuy nhiên, từ khi số tài khoản lên đến hàng triệu, chúng ta có thể lắp ráp một “từ điển” với một số tài khoản có thể, đó là tất cả các con số từ 0000001 đến 9999999, ví dụ, sử dụng một bộ xử lý hình ảnh tự động bằng photoshop cho mỗi số trên một bức ảnh kiểm tra để trắng và làm mờ mỗi bức ảnh. Chú ý, một điều là có thể so sánh đơn giản các pixel bị làm mờ để  nhìn thấy những gì gần gũi nhất vào trong những bức hình gốc bị làm mờ mà chúng ta có.

 

Giải pháp

 

Giải pháp đơn giản là : Đừng làm mờ hình ảnh của bạn! Thay vào đó, chỉ cần phủ màu lên chúng.

 

 

Hãy nhớ rằng, bạn muốn cho người viếng thăm không có bất kì một thông tin nào, thì đừng làm mờ thông tin.

Chia sẻ bài viết ngay

Nguồn bài viết : dheera.net