Cảnh sát Đức bị phát hiện dùng phần mềm gián điệp

German police accused of using a Trojan backdoor for interceptions

19 October, 2011

Theo Câu lạc bộ Máy tính Hỗn loạn (Chaos Computer Club – CCC), chính phủ Đức đang sử dụng một loại phần mềm gián điệp dạng backdoor Trojan có thể tìm các dữ liệu cá nhân và được điều khiển từ xa để tải dữ liệu lên mạng và thực hiện các phần mềm tùy ý khác. (CCC tự nhận là câu lạc bộ hacker lớn nhất châu Âu)

CCC đã dịch ngược (reverse engineering) phần mềm gián điệp đó ra mã nguồn để phân tích và đi đến kết luận rằng nó có thể tải về máy bị nhiễm một phần mềm nào đó trên Internet, nó cũng có thể kích hoạt các phần cứng máy tính bị nhiễm như microphone, webcam để do thám.

Ngoài ra, kết hợp với một module bổ xung, nó có thể cho phép từ Internet điều khiển máy tính bị nhiễm, xem màn hình trình duyệt web, đọc được các ghi chú cá nhân, thư điện tử, văn bản trong các dịch vụ web điện toán đám mây. Trên website của CCC có ảnh chụp màn hình cho thấy phần mềm gián điệp đó hoạt động như thế nào.

(Tóm lại phần mềm này biến máy tính thành một công cụ do thám đa năng: thu thập các loại dữ liệu ghi trên máy, chụp ảnh màn hình để đọc Gmail, chat, dùng webcam để chụp ảnh người dùng và khung cảnh xung quanh, dùng microphone để nghe các cuộc nói chuyện, tải về máy các loại phần mềm gián điệp khác để điều khiển máy tình làm gì đó,…  ND)

Việc sử dụng phần mềm gián điệp này vi phạm luật pháp Đức vì nó có những chức năng vượt quá cả việc nghe lén thông tin Internet. Năm 2008, Tòa Bảo hiến Đức đã phán quyết rằng việc bí mật thâm nhập các hệ thống công nghệ thông tin là vi phạm trầm trọng quyền dân sự và chỉ có thể biện bạch được trong một số trường hợp điều tra tội phạm.

Người phát ngôn của bộ Nội vụ Markus Beyer nói tại cuộc họp báo ngày 8/10/2011 rằng phần mềm đó “có tự do – freely available” đã 3 năm nay, nhưng không cho biết nó có phải do chính phủ viết hoặc viết cho chính phủ không.

Người phát ngôn của Chính phủ Steffen Seibert phát biểu tại cũng cuộc họp báo đó rằng chính phủ Đức xem những lập luận về phần mềm giám sát bất hợp pháp của cơ quan điều tra là “rất nghiêm trọng” và sẽ nghiên cứu khiếu nại của CCC.

Tài liệu tham khảo thêm:

German government accused of spying on citizens with state-sponsored Trojan (8.10.2011)
http://www.zdnet.com/blog/bott/german-government-accused-of-spying-on-…

Analysis of Government malware (only in German, 8.10.2011)
http://www.ccc.de/system/uploads/76/original/staatstrojaner-report23.p…

Chaos Computer Club analyzes government malware (8.10.2011)
http://ccc.de/en/updates/2011/staatstrojaner

Possible Governmental Backdoor Found (“Case R2D2”) (8.10.2011)
http://www.f-secure.com/weblog/archives/00002249.html

German Malware May Put PC’s Camera at Risk (10.10.2011)
http://www.bloomberg.com/news/2011-10-10/german-trojan-spyware-may-vio…

Advertisements

Tản mạn về phần mềm “sạch”

Tản mạn về phần mềm “sạch”

Cũng như thực phẩm sạch, phần mềm sạch là những phần mềm không chứa những mã độc được cố tình đưa vào nhằm những mục đích có hại cho người dùng.

Những mã độc đó có thể là: trojan virus để đánh cắp thông tin gửi đến một địa chỉ định trước, các loại virus sửa, xóa thông tin, biến máy tính thành máy tính ma trong một mạng botnet, tạo các cổng hậu (backdoor) để người khác lén lút thâm nhập máy tính (thường là từ xa, qua mạng) , thậm chí có thể là một “quả bom nổ chậm” đến một thời điểm định trước hoặc khi nhận được lệnh mới “nổ”… và còn nhiều cách khác nữa.

Thời còn phe XHCN, đã từng có tin đồn rằng những máy tính từ các nước tư bản nhập vào đều đã bị “đụng chân, đụng tay” cài cắm một cái gì đó. Gần đây, theo một bài báo thì nguy cơ kiểu đó tỏ ra là có thật:

Theo bộ phận phụ trách nghiệp vụ của Trung tâm ứng cứu khẩn cấp máy tính Việt Nam (VNCERT) và thống kê từ Bộ Công an cho thấy, trong 2 năm qua, khi kiểm tra các thiết bị, máy tính nhập khẩu, lực lượng chức năng đã phát hiện tới 1.165/4.892 máy tính nhập khẩu bị nhiễm mã độc, con số này tương đương 1/3 tổng số thiết bị nhập khẩu.”

Các phần mềm ở dạng mã thực thi (dù là nguồn đóng hay nguồn mở) là nơi lý tưởng để cài mã độc vì người sử dụng không có cách nào để kiểm tra được.

Microsoft đã hai lần (năm 1999 và 2009) bị tố cáo cài sẵn cổng hậu trong các hệ điều hành Windows dành cho cục An ninh Quốc gia Mỹ (xem). Mới đây (10/2011), cảnh sát Đức cũng bị tố cáo đã dùng một loại phần mềm gián điệp liên bang (federal Trojan) thâm nhập trái phép vào máy tính của công dân (xem).

Ngay các phần mềm nguồn mở cũng có thể bị cài cắm theo kiểu này. Năm 2010, một trong những người được FBI thuê cài cổng hậu vào hệ điều hành OpenBSD đã lên tiếng tố cáo sau khi thời hạn bảo mật hợp đồng thuê nói trên đã hết (xem)

Tại Việt nam, các thành viên diễn đàn HVA phát hiện bộ gõ tiếng Việt Unikey for Windows tải về từ một số nguồn không tin cậy cũng bị cài cắm Trojan (xem 12) để lấy trộm thông tin.

Trong các đợt tấn công báo điện tử VietnamNet, có không ít máy tính tại Việt nam bị nhiễm virus tham chiến mà chủ nhân không hề hay biết (xem).

Đối với các phần mềm, file nhỏ thì có thể dùng kỹ thuật dịch ngược (reverse engineering) từ mã thực thi thành mã nguồn rồi kiểm tra để tìm ra mã độc như HVA đã làm.

Nhưng nếu phần mềm lớn hàng nghìn dòng lệnh thì cách làm đó không khả thi. Ví dụ như trường hợp các bộ Windows nói trên, ta chỉ có thể tin tưởng vào lời thề sống chết của Microsoft, còn thì không có cách nào khác.

Ngay phần mềm nguồn mở nổi tiếng về bảo mật TrueCrypt (xem 12) cũng không thoát khỏi nghi ngờ. Trong một bài nghiên cứu gần đây (xem), sau khi thử tấn công TrueCrypt, các tác giả viết:

Không dùng kỹ thuật dịch ngược rất tốn kém thì không thể chứng minh được rằng phần mềm thực thi đúng là được dịch từ mã nguồn đã công bố. Vì chúng tôi không dịch ngược nên không thể khẳng định rằng không có cổng hậu trong gói mã thực thi. Vì vậy, chúng tôi khuyên bạn nên tự dịch từ mã nguồn, không nên tin tưởng mù quáng vào TrueCrypt Foundation.”

Đây là những nghi ngờ, cẩn trọng về nguyên tắc: a/nếu không dịch ngược, chẳng có gì đảm bảo là phần mềm thực thi được công bố đúng là được dịch từ mã nguồn đã công bố, b/vì vậy, không có gì đảm bảo phần mềm thực thi là “sạch” và c/mã nguồn đã công bố có thể tin là sạch vì được cộng đồng người dùng soi, nên nếu muốn dùng phần mềm sạch, tốt nhất là tự dịch mã nguồn đó thành phần mềm thực thi để dùng.

Việc cài mã độc vào những phần mềm phổ biến gây nên một tâm lý như một admin của diễn đàn HVA đã nói rất đúng “Trong trò chơi “chân chân giả giả” này cái thiệt hại ghê gớm nhất không phải là bị cài trojans, bị mất hòm thư hoặc bị bêu rếu một cách thô thiển mà là sự ngờ vực lẫn nhau. Những trò chơi của STL đẩy người ta tới chỗ chẳng có ai còn có thể tin ai được nữa vì tất cả đều có thể là giả dối, nguỵ tạo và lường gạt.

Gần đây, trên diễn đàn Ubuntu-VN có phổ biến một bộ gõ tiếng Việt có phạm vi khá rộng nhưng nguồn đóng. Sau khi xem vụ “Sinh tử lệnh” nói trên, đôi lúc cũng thấy ngờ ngờ không hiểu nó có được “đặt hàng” không?

Những người lương thiện, không làm gì phạm pháp có lẽ cũng chẳng có gì phải sợ hãi các loại mã độc như thế. Tuy vậy, cái cảm giác thông tin cá nhân (văn bản, thư từ, chat,…) của mình bị thu thập gửi đi một nơi nào đó cũng không mấy dễ chịu. Trong thời đại Cách mạng Thông tin hiện nay, bạn có thể là một tình báo viên vô tình cho CIA (xem), tức là những thông tin tưởng như vô hại cũng cung cấp những cái rất có ích và vì vậy cũng bị thu thập. Bí mật cá nhân của bạn có thể bị lộ hoặc bạn có thể bị chụp cho những cái mũ không thể ngờ tới.

Đã từng có tin (không nhớ rõ nguồn) về một thực nghiệm ở Mỹ: thu thập các thông tin của một người vô tình để lộ rải rác trên mạng, cuối cùng dựng lại được mô tả về người đó chính xác đến nỗi anh ta phải chuyển đi thành phố khác.

Không hiểu suy nghĩ như trên có phải đã mắc căn bệnh “bác sỹ nhìn đâu cũng thấy vi trùng” không?

Môi trường thật đã đầy ô nhiễm độc hại, bệnh tật, ô nhiễm tinh thần. Trốn vào môi trường ảo thì bị mã độc rình rập!

Những mối hiểm nguy nói trên là có thật, không có cách nào đề phòng cho hết được. Nhưng cũng như bệnh tật, tai nạn giao thông, xác suất xảy ra với mỗi cá nhân là cực thấp. Vì vậy nếu ta vẫn sống vui, lượn ngoài đường suốt ngày thì cũng có thể yên tâm lượn trong máy tính và trên mạng.

Chỉ có những nơi nhạy cảm mà không lo xây dựng lấy một hệ điều hành sạch mới là lạ.

 

 

 

 

Một cách vào Facebook đơn giản

Một trong những cách vào Facebook (và một số site khác bị chặn) là dùng DNS của Google (8.8.8.8) hoặc OpenDNS (208.67.222.222) hoặc sửa file hosts.

Tuy nhiên, ngay cả như vậy, vào Facebook cũng chập chờn. Tôi đã thử dùng extension Stealthy của Firefox thấy rất hiệu quả.

Stealthy là một extension tự động chuyển kết nối của trình duyệt qua proxy (cài tại đây). Sau khi cài, xuất hiện một icon màu đỏ ở bên phải ô Search của Firefox. Khi vào Facebook không được (trên tab hiện Connection một lúc lâu), nhấn nút Stop để ngừng quá trình kết nối rồi nhấn icon Stealthy cho nó chuyển sang màu xanh (đã kết nối được qua một proxy), sau đó nhấn Reload để kết nối lại với Facebook.

Vì kết nối qua proxy nên đương nhiên sẽ chậm hơn bình thường một chút. Nếu proxy không tốt (chậm quá, thậm chí báo lỗi không nhận được Facebook) chọn proxy khác bằng cách nhấn 2 lần vào icon Stealthy ở chế độ đang bật (màu xanh) để tắt nó đi rồi bật lại sẽ tự động chuyển sang proxy khác.

Khi vào các trang khác không cần proxy, nhấn váo icon Stealthy cho nó chuyển sang màu đỏ (tắt chế độ proxy).

Có thể kiểm tra đang dùng proxy nào và địa chỉ IP giả hiện đang dùng bằng cách vào trang http://whatismyipaddress.com/.

Cách dùng proxy này đơn giản và tiện hơn cách vào một site proxy nào đó rồi gõ địa chỉ. Màn hình sạch, không bị lấn chiếm bởi các site proxy thông thường.

Vào Facebook bằng cách sửa file hosts có một nhược điểm là không upload được ảnh. Dùng proxy theo cách này không bị lỗi đó.

Stealthy cũng có với Chromium browser.

FBI không phá được TrueCrypt

FBI hackers fail to crack TrueCrypt

By John E Dunn | Computerworld UK | Published: 10:55 GMT, 30 June 2010. Link gốc.

(Trước đây tôi có giới thiệu về TrueCrypt tại đây. Dưới đây là một bằng chứng về sức mạnh của nó).

Cục điều tra liên bang Mỹ (FBI) đã chấp nhận thất bại khi cố phá mã hóa nguồn mở được dùng để mã hóa một số ổ cứng máy tính mà cảnh sát Brazil bắt được trong một cuộc điều tra năm 2008.

Nhà cầm quyền Brazil đã yêu cầu FBI trợ giúp sau khi học viện Tội phạm học quốc gia Brazil đã không thể dò ra mật khẩu dùng bảo vệ các ổ cứng của nghi phạm là chủ ngân hàng Daniel Dantas.

Các báo cáo của Brazil xác nhận rằng hai chương trình được dùng để mã hóa các ổ cứng, một trong các chương trình đó là phần mềm nguồn mở phổ biến TrueCrypt. Các chuyên gia của hai nước đã mất nhiều tháng dùng phương pháp tấn công từ điển để dò ra mật khẩu. Kỹ thuật tấn công từ điển là cách (dùng một máy tính mạnh) thử một số lớn các tổ hợp ký tự có thể có cho đến khi dò ra mật khẩu đúng.

Báo cáo của Brazil cũng ghi nhận rằng chính quyền đã không thuyết phục được các tác giả của TrueCrypt giúp đỡ, mặc dù cũng khó hình dung ra họ có thể giúp như thế nào.

Nếu mật khẩu phức tạp bao gồm tổ hợp ngẫu nhiên các chữ cái thường và chữ hoa, số và các ký tự đặc biệt (như @, #,…) và dài thì cần có công suất máy tính cực mạnh và thời gian khá lâu để có thể dò ra nó.

(Theo Wikipedia, một mật khẩu thông thường 8 ký tự, dài 30 bit có thể dò ra sau 16 phút. Năm 2002, một mạng máy tính phân tán đã dò ra một khóa mã RC5 64bit khi tập hợp trên 300.000 máy tính khác nhau chạy trong 4 năm, trung bình dò 12 tỷ khóa trong một giây)

TrueCrypt cũng có cơ chế mã hóa bí mật. Khi dùng cơ chế này, bất kể ai cũng không thể thấy có tồn tại một partition mã hóa, do đó chủ nhân của nó hoàn toàn có thể phủ nhận sự tồn tại của partition đó.

Logic là rất rõ ràng. Nếu điều tra viên phát hiện được có partition hoặc file mã hóa, bị cáo sẽ bị đặt vào tình thế khó khăn nếu không chịu tiết lộ mật khẩu.

Có một sự trùng hợp thú vị. Vào khoảng thời gian bắt Daniel Dantas năm 2008, một nhóm trong đó có nhà mật mã học nổi tiếng Bruce Schneier đã tìm ra một điểm yếu trong cơ chế mã hóa bí mật của TrueCrypt 5.1.

Mặc dù vậy, điểm yếu dó không giúp các nhà điều tra truy cập đến các file đã mã hóa có thể là vì nó không đủ để chứng minh rằng bị cáo đã dùng đến cách mã hóa bí mật.

 

Tường thuật trận đấu TQN vs. Sinh tử lệnh (tiếp)

Truy tìm theo email

Trong trận đấu này có hai hướng truy tìm thủ phạm: theo địa chỉ IP và theo email. Phần truy theo địa chỉ IP hay, phức tạp nhưng không có gì bổ ích cho người dùng bình thường nên tôi không tường thuật lại. Riêng phần email thì có nhiều điểm hay.

Một file doc giả có chứa virus được gửi cho admin conmale, conmale lại gửi tiếp cho TQN và kết quả là cả hai người đều bị dính virus (toàn các cao thủ về bảo mật! Mở file tù mù đính kèm theo email nguy hiểm như thế đó). File này khi mở

Kịch bản nó như sau: Chạy file doc giả, nó dump ra 1 đống file trong đó có 2 file svchost.exe trong thư mục %windir% ( chứ không phải system32 nhé) là giả mạo. Đồng thời đi kèm nó là 1 DLL: svcph.dll

1 file sys tên là sysaiudor.sys có nhiệm vụ ẩn tiến trình và key trong registry, vì thằng svchost.exe có ghi 1 key run là Network balancing trong HKCU\Software\Microsoft\Windows\CurrentVersion\Run

… trong đó có 2 email đáng chú ý:

xuann28@yahoo.com
ngnamhungntt@gmail.com

Người bình thường như tôi với bạn mở file doc bằng Microsoft Word hoặc OpenOffice Writer chỉ thấy nội dung văn bản. Nhưng nếu thử mở file doc bằng một trình soạn thảo text (notepad, kate, gedit, …) sẽ thấy ngoài nội dung văn bản có rất nhiều mã lệnh dùng điều khiển việc hiển thị văn bản, in ấn, v.v…Đây là nơi lý tưởng để chèn các mã độc vào. Không riêng gì file doc, các file ảnh, screensaver, video, …đều có thể chèn virus. Nhận mail “phim sex của em XXX” thì chắc 99% là mở!

Hai email trên dùng để nhận các thông tin lấy trộm được do virus gửi về qua các máy chủ smtp của Yahoo hoặc Gmail nên phải có password (post trước tôi không hiểu điều này). Khi truy cập vào các hộp thư trên, TQN phát hiện ra:

Các bạn có để ý kỹ, đọc kỹ 3 bức hình và bài post của anh conmale không ? Tài khoản Yahoo Mail của xuann28@yahoo.com có liên quan tới một thằng cha bên tàu, đuôi .cn. Chủ nhân xuann28@yahoo.com và xuan28@yahoo.com.vn là một, và email tạo thằng xuan28@yahoo.com.vn là từ một thằng tàu khựa.

Địa chỉ xuann28@yahoo.com (các bạn chú ý, xuann, có 2 chữ n nhé) nằm chình ình trong file Exe giả doc sau khi được decode.

Kết luận trên dựa vào địa chỉ email dùng khôi phục password có đuôi .cn và câu hỏi bí mật khôi phục password dùng chữ Hoa. (xem post số 59, nhưng phải reg nick mới xem được hình).

Trong hộp thư xuann28 có một thư của Wu Yu Zhen (nartcogn@gmail.com), nội dung: “anh in và chuyển chief V dùm em!” đính kèm một file thông tin theo dõi một nhân vật LDV. Ảnh một phần file đó ở đây: http://img88.imageshack.us/img88/4518/ldvmail.gif. Máy của LDV bị cài virus lấy mật khẩu hộp thư và từ đó hộp thư bị theo dõi ít nhất là từ 10/2010. Sếp V chắc cũng già rồi nên không đọc mail chỉ đọc văn bản giấy!

Căn cứ vào cái email này, TQN kết luận:”Không biết bà con nghĩ sao chứ em thì nghĩ thằng “Wu Yu Zhen” “nartcogn@gmail.com” đích thị là thằng STL đúng nghĩa, tàu khựa đúng nghĩa.”

STL thì đúng rồi, nhưng tàu khựa chỉ dựa vào cái tên thì chưa chắc. TQN hỏi cụ Gúc :”Em chả biết thằng này là Hoa hay Tàu nữa, google với “Yu Zhen” “nartcogn” lòi ra một đống thú vị về cu này, học vật lý, lại đi tìm hiểu về virus, bảo mật, hack hiếc, viết blog thì lúc tiếng Việt, lúc tiếng Anh, lúc tiếng tàu khựa. Post nhạc lên nhaccuatui thì toàn là nhạc Hoa, hình thì toàn là thư pháp của tàu, hình ảnh diễn viên Hồng Kông. Thằng này sao rành tiếng Việt quá vậy ha ? Hâm mộ Lưu Đức Hoa và Châu Tấn, là thành viên của một vài diễn đàn Game Online. Thằng này chắc còn nhỏ nên mới khoái mấy cái game online đó.”

Cũng cụ Gúc cho ra hai cái blog của Wu Yu Zhen trên wordpress và yahoo nhưng đã bị xóa sạch. Tuy nhiên theo cache của Google vẫn đọc được nội dung blog. Cũng không có gì ghê gớm.

Cũng cụ Gúc cho ra cái “Kế hoạch học tập” này http://www.xmind.net/share/nartcogn/planning-study/. Căn cứ vào đây thì năm 2008 tay này còn là sinh viên, người Việt (?) nhưng học hai ngoại ngữ Anh và Hoa. Bạn có thể tự gúc “Yu Zhen” + “nartcogn” để xem.

Đây cũng là cái mà tôi có nói trong một post trước: tình báo nguồn mở. Từ những thông tin công khai trên mạng, báo chí, … người ta có thể dựng lại chân dung một người, một việc với khá nhiều chi tiết!

Những thông tin dưới đây là rất đáng chú ý:

Theo anh thì phần mềm nào mà máy tính nào của người Việt chắc chắn sẽ cài?? ngoại trừ Windows ra thì là các bộ gõ tiếng Việt đúng không ạ smilie . Theo thói quen thì khi anh muốn 1 phần mềm thì cái đầu tiên anh nghĩ đến là gì, chắc chắn là anh dùng các trang như Google để tìm đúng không ạ smilie

Bọn chúng đánh vào đặc điểm này của người dùng smilie

Link download Unikey thường từ các trang download soft của VN ta, bạn em sau khi cài lại máy, nó tải về để gõ tiếng Việt. link này nằm trong 10 link đầu tiên google.com.vn trả về nên bạn em bị dính cũng không có gì là lạ. Không biết chúng còn thêm phần mềm nào trên đó tương tự hay không, nhưng em nghĩ số lượng không ít đâu.

Kịch bản nó hoạt động thế này: Sau khi chạy cái Unikey giả(>500KB), nó cài đặt cái Team Viewer giả và patch lại file Unikey cũ (chỉ còn 256KB). Anh nếu có tải về thì thử chạy trong máy ảo mà xem, bạn ấy anti máy ảo, sandbox, hiện thông báo như đúng rồi smilie. Ban đầu em cũng bị lừa, may mà tỉnh táo, kéo vào IDA luôn.

Theo em thì có lẽ người có account để up file lên đây cũng bị như anh, nghĩa là bị cài keylogger , sau đó mất password, khả năng trang này bị lỗi là rất thấp. Vào thời điểm em lấy mẫu thì đã có 7017740 tải nó về, cứ mỗi ngày có trung bình 2000 lượt tải về.

Chính vì việc bọn chúng dùng cách này để phát tán bot, em càng nghi ngờ là STL anh ạ, Anh đọc code thì sẽ thấy, cũng quen thuộc lắm. Và cách thức patch như thế, fake ngon như thế, chắc là STL làm. Quả là thâm độc và có tính toán. Unikey thì chả ai nghi ngờ gì cả, người dùng thì mấy ai vào trang chủ để download, tiện đâu download đấy thôi

Điều này có nghĩa là người up file unikey lên không có lỗi. Anh ta cũng bị cài keylogger, mất password account up file và do đó file unikey bị sửa. Với hơn 7 triệu lượt tải Unikey về thì có thể hình thành một mạng máy tính ma botnet vài triệu máy. Thảo nào mà ngay cả HVA cũng bị tấn công DDoS dữ dội.

Kinh nghiệm của TQN:

“Em thì em biết chắc mấy cái Unikey, Vietkey bị patch và attach “mèo què” rồi. Em thì không dùng Vietkey, dùng Unikey down ở homepage sourceforge của Unikey, đã RCE kiểm tra.

Em xin nhắc lại, toàn bộ bà con đang đọc topic này, remote ngay cái Unikey, Vietkey bà con đang dùng, lên Unikey homepage download lại, cài Comodo Firewall free ngay !

Tới trưa nay, sau 1 lúc RCE mẫu mới của STL, em xin nhắc lại lần nữa: Các bạn remote ngay Unikey, Vietkey… down từ các trang không phải trang chủ về. Search các file TeamViewer.exe có size = 65536 byte và uxtheme.manifest, size = 103,424 bytes. Xoá ngay hai ông nội này ngay lập tức, bằng mọi cách.
Down từ trang chủ của Unikey cũng không chắc vì như đã nói ở trên nếu chủ nhân bị hack password thì file trên trang chủ cũng bị sửa trừ khi kiểm tra mã Md5Sum, SHA1,…. Bạn nào hay tải open source đều biết mỗi file đều được công bố Md5Sum, SHA1,… kèm theo để sau khi tải về kiểm tra xem file có “gin” không. Trang chủ Unikey không cho cái gì để kiểm tra, RCE như TQN thì chịu.

Nếu HVA cho tải Unikey hay Vietkey đã RCE thì tốt quá!

Những ý kiến này nhiều ý nghĩa:

Đơn giản thôi vấn đề là STL không bị phát hiện bởi các đơn vị bảo mật chính thống như VNCERT hay BKIS của anh Quảng Bomb mà bởi 1 thành viên của diễn đàn hacker mới buồn.

Buồn nhất là vụ anh Quảng vác tù và hàng tổng đi hack server giùm anh Hàn Quốc, mà vụ STL có ảnh hưởng đến cộng đồng người Việt lớn như vậy mà không thấy anh ý phản ứng gì.

…số lượng người nhiễm “mèo què” của STL cực lớn, vậy mà không ai ra tay ngăn chặn cả. BKAV thì im ru bà rù, CMC thì giờ mới cập nhật. Trong khi đó tụi nó code mẫu mới liên tục. Sức em có hạn, làm sao mà phân tích, công bố hết đám mẫu của tụi nó.”

Câu này của conmale rất hay:

Trong trò chơi “chân chân giả giả” này cái thiệt hại ghê gớm nhất không phải là bị cài trojans, bị mất hòm thư hoặc bị bêu rếu một cách thô thiển mà là sự ngờ vực lẫn nhau. Những trò chơi của STL đẩy người ta tới chỗ chẳng có ai còn có thể tin ai được nữa vì tất cả đều có thể là giả dối, nguỵ tạo và lường gạt.

Rất cảm ơn diễn đàn HVA và “hiệp sỹ” TQN.

Tường thuật trận đấu TQN vs. Sinh tử lệnh

Từ 7/7/2011 đến nay, một trận đấu hay đang diễn ra giữa TQN, một thành viên của diễn đàn hacker nổi tiếng HVA và nhóm hacker khét tiếng “Sinh tử lệnh” (?). Nội dung chi tiết có thể xem tại http://www.hvaonline.net/hvaonline/posts/list/0/39504.hva  (tên topic “RCE và vô hiệu hoá VB.NET virus (của STL à ?)” nằm trong diễn đàn con ” Thủ thuật reverse engineering”) hoặc tại cache của Google (nếu site HVA đóng thread này). Nếu lần đầu không vào được link trên (báo “vùng cấm”) thì mở site http://wwww.hvaonline.net trước rồi kích vào link trên.

Dưới góc độ người dùng máy tính bình thường, trận đấu này có nhiều điểm hay về an ninh bảo mật nên biết để đề phòng. Tôi tường thuật và bình luận dưới dạng dễ hiểu chia sẻ với mọi người (những đoạn chữ nghiêng là trích từ các post trên diễn đàn).

Sinh tử lệnh (STL) là nhóm hacker chuyên tấn công các site, blog, hộp thư “lề trái”. Khi hack thành công site nào, nhóm để lại biểu tượng dưới đây trên site nạn nhân:

Muốn biết thành tích của nhóm này chỉ cần gúc cụm từ “Sinh tử lệnh” là rõ.

HVA là một diễn đàn chuyên về an ninh, bảo mật máy tính của các hacker “mũ trắng”. HVA cũng từng bị STL tấn công vài lần. TQN là thành viên của HVA có “ân oán giang hồ” với nhóm này như chính TQN cho biết:

“Tại vì anh ghét cái đám này chơi trò dơ bẩn, hoành hoành bá đạo, uy hiếp mọi người, lên mặt coi mọi người không ra gì, lại còn tấn công anh nữa. Lại lên giọng chê anh RCE nữa mùa. Anh chỉ là nữa mùa, không = các pro, expert khác, nhưng cũng góp chút công sức nhỏ nhỏ, bớt thời gian nhậu nhẹt, em út để vạch mặt đám này.

Đầu tiên, TQN nhận được một file virus có chứa ba file screensaver. Thực chất các file screensaver này là file thực thi (exe) dùng cài keylogger vào máy nạn nhân: “Kỷ thuật mà đám “méo què” này dùng để dùng keylog, ăn cắp hầu hết thông tin về máy nạn nhân, ăn cắp username và password của nạn nhân trong FireFox, IE, Google Chrome, YM, Skype…“. (xem thêm về keylogger tại đây)

File virus nói trên được ngụy trang dưới dạng file ảnh được gửi kèm theo email tới máy nạn nhân, có nội dung gây chú ý cho người nhận (trong trường hợp này đối tượng là “lề trái” nên nội dung file nói về cha Nguyễn Văn Lý). Khi người nhận thư mở file đó xem thì các file exe sẽ tự động chạy, cài keylogger vào máy.

File virus cũng có thể là một file văn bản doc hoặc bất kỳ dạng file nào khác. Với một file doc được bàn tới trong topic này “Kịch bản nó như sau: Chạy file doc giả, nó dump ra 1 đống file trong đó có 2 file svchost.exe trong thư mục %windir% ( chứ không phải system32 nhé) là giả mạo. Đồng thời đi kèm nó là 1 DLL: svcph.dll “. Mở file doc bẩn nguy hiểm như thế đấy.

Bài học 1: tránh mở các file đính kèm email không rõ ràng, kể cả từ người quen gửi đến. Như phần sau sẽ rõ, hộp thư của người quen có thể đã bị chiếm hoặc thư có thể mạo danh người gửi.

Để tìm hiểu cơ chế thực thi của virus, TQN dùng kỹ thuật Reverse Code Engineering (RCE) dịch ngược từ mã thực thi ra mã nguồn và phát hiện ” đám “meo què” này gửi toàn bộ thông tin của victim về Google mail. Đây là một vài thông tin cấu hình về Gmail, FTP username, pwd của nó:

Ngoài ra thông tin trên máy nạn nhân cũng có thể được gửi bằng ftp về một máy chủ ftp nào đó.

Có điều lạ là trong virus lại chứa cả password hộp thư nơi nhận (?).Và những thông tin trên được mã hóa hai lần bằng hai thuật toán mã khác nhau mạnh nhất hiện nay là TripleDES và Base64 mà sao cũng giải mã ra được ? Cái này cao siêu quá, phục các bác hacker!

Có username và password, TQN login vào hộp thư Gmail và tìm ra các IP đã truy cập vào hộp thư đó đều là từ Việt nam. TQN chiếm hộp thư trên bằng cách thay đổi password và câu hỏi bí mật để khôi phục password. Như vậy chủ hộp thư không đọc được các thông tin từ virus gửi về nữa.

Vào được hộp thư Gmail, TQN liệt kê ra hàng loạt thông tin khác:

  • Địa chỉ hộp thư phục hồi
  • Địa chỉ các blog trên Blogspot dùng account Gmail này để quản lý.
  • Các địa chỉ khác hay giao dịch.
  • Các nick chat đã chat.

Và qua nội dung các thư do virus gửi về, TQN phát hiện được “Đám “meo què” của mấy cậu lợi hại thiệt đó, em vào gmail của cậu đọc mà hết cả hồn, chát chít, tán gái, xem hình, phim xxx, nói xấu chế độ… gì đó trên máy victim đều bị các cậu log, capture image hết

Tức là virus ghi lại (log) các nội dung và sao chụp cả màn hình máy nạn nhân gửi về. Để ví dụ, TQN đưa ra “Và dưới đây là minh hoạ cho tình trạng của victim khi bị đám “mèo què” này capture được khi đang chát với em út:” là màn hình Skype xem rõ nội dung một cuộc chat.

Vì các blog do hộp thư này quản lý đều là blog “lề trái” nên TQN đoán là hộp thư này nguyên thủy của một nhân vật “lề trái” bị nhóm Sinh tử lệnh chiếm: “Tới bây giờ, em đoán là chủ nhân của hộp mail này là chị Hương Giang, là chủ nhân của cả 2 blog anhbalang và chibasam. Nhưng hôp mail này đã bị thành viên STL ToHoangVu, số đt: 093206026x chiếm đoạt rồi dùng nó làm nơi nhận data, info của victims gởi về”.

Admin của HVA cảnh báo: “Tối hôm qua tớ ngồi phân tích và điều tra sâu hơn thì thấy chưa hẳn “tohoangvu” là thành viên của nhóm STL bởi vì có những thông tin chưa xác thực. Bởi vậy, nếu bà con đè “tohoangvu” ra mà chửi khi chưa xác định một cách tuyệt đối thì e oan uổng. Tớ không loại trừ trường hợp chính hòm thư của “tohoangvu” bị thuổng và danh tánh của “tohoangvu” bị sử dụng nhằm mục đích đánh lạc hướng (nếu bị điều tra).

Lời khuyên này của TQN khá “độc” “Sẵn đây em đề nghị các mod của HVA nên scan lại máy mình, download VietKey, UniKey sạch về dùng. Coi chừng mất pass rồi để tụi nó mạo danh anh em vào HVA quậy lên” .

Các bộ gõ tiếng Việt rất nhiều người dùng, là nơi thuận tiện nhất để cài keylogger. Thế nào là một bộ gõ sạch với Windows có lẽ chỉ có cách dùng hàng loạt phần mềm antivirus, anti-keylogger để quét. Tuy nhiên điều đó cũng chưa chắc, vì với một con virus khác TQN cho biết “KIS mới nhất của em không phát hiện được. VirusTotal cũng không, chỉ là ngi vấn“. Tuy nhiên, trình anti-virus nguồn mở clamav lại phát hiện được.

Trong Linux có hai cách:

  • Tải mã nguồn bộ gõ về, dịch từ mã nguồn ra mã máy rồi cài. Hy vọng là mã nguồn để công khai thì không bị chen mã độc vào. Còn soát mã nguồn để chắc chắn thì tôi và các bạn đều không đủ khả năng.
  • Chịu khó dùng bộ gõ tiếng Việt “quốc tế” như ibus-m17n, scim-m17n. Bản thân bộ gõ thì chắc là không có virus (trừ khi CIA cài), còn file vi-telex.mim là file text đọc được nên sẽ không bị cài mã độc.

Mặc dù TQN đã đổi password của hộp thư Gmail đã nói ở trên, nhưng hai hôm sau “vào thử hộp mail tuonglaivietnam2015, thấy hoảng hồn, trống rỗng“. Hóa ra hộp thư đó chủ cũ đã share cho người khác (Mail settings -> Accounts and Import -> Grant access to your account). Vì vậy, TQN kết luận người được share (tuonglaivietnam2010) có hành động xóa dấu vết chính là thuộc nhóm Sinh tử lệnh và nhờ tính năng theo dõi activity của Gmail biết được địa chỉ IP của người đó: “Vậy lần này chắc chắn tuonglaivietnam2010 đích thị là STL rồi, IP ở trên: 123.21.140.237

Scan IP trên cho ra kết quả:

21/tcp   open  ftp     GlobespanVirata ftpd 1.0
 23/tcp   open  telnet  Zoom ADSL modem telnetd X5 GS Ver 2.1.0
 8701/tcp open  unknown

Do chủ modem vẫn dùng account mặc định là admin/admin nên tìm được chủ thuê bao vnpt của ip 123.21.140.237 là ngokiennam / megavnn, và khi chui vào modem thì phát hiện một máy đang dùng:
wujianan-PC 192.168.1.100 00-24-1D-88-E4-79

Tuy nhiên, IP cấp cho các modem ADSL là IP động, lâu lâu lại đổi một lần hoặc khi bạn reset modem thì IP cũng đổi. Do đó ngokiennam không chắc đã phải là chủ modem vào lúc IP này login vào Gmail. Chỉ có các ISP mới có thể biết vào thời điểm nào, modem được gán IP gì và thông tin đó chắc cũng chỉ “các cơ quan chức năng” mới có đủ thẩm quyền yêu cầu ISP cung cấp.

Cái tên máy “wujianan-PC” cũng gây tranh luận. Nhưng người Hoa ở miền Nam cũng còn nhiều, không đủ cơ sở để suy luận ra điều gì.

Kể lại những điều trên để thấy quá trình truy tìm dấu vết nghiệp dư cũng có thể dẫn đến đâu.

TQN kết luận: “Gần như 100% các nạn nhân bị chúng hack đa số đều dùng FireFox và IE, chúng tích hợp các thư viện building của chính FireFox và IE để lấy tất tần tật mọi history, bookmark, username, password của mọi thứ trên máy nạn nhân. Vì vậy, việc chúng chiếm đoạt, hack các website, blog sau khi đã biết password là chuyện nhỏ (em cũng làm được mà smilie). Việc lấy các thông tin về file video, file hình ảnh, Yahoo log chat… được thực hiện sau khi chúng biết và đã có thông tin gần như đầy đủ của nạn nhân về mọi thứ trên máy nạn nhân. Chúng sẽ viết tiếp các module lấy các file mà chúng muốn xem, đặt các file text trên server của chúng, ra lệnh là nếu IP của máy này trùng với IP tao ra lệnh thì mày lấy file này, file kia up về cho tao.”

Trong một topic khác cũng trên diễn đàn HVA “ RCE đám virus của Sinh Tử Lệnh” TQN dịch ngược một số file virus khác cũng của STL và có các thông tin đáng chú ý sau đây tôi copy lại:

PS: Mọi người nên cẩn thận các trình gỏ tiếng Việt mà mình đang dùng: Unikey, Vietkey.
Nếu search trong máy có file msdata.vxd thì các bạn đã bị nhiểm keylog của tụi: “Sống Chết nghe theo lệnh” này.

Nếu bạn nào phát hiện có msdata.vxd trong System32 hay Local App Data thì lập tức dùng các tool chuyên xoá file như Unlocker, XueTr, IceSword… để move hay delete liền 2 file: hardkbd.dll và ieframe.ocx ngay.”

“AdobeUpdateManager.exe chính là một phần của VulcanBot mà đám McAfee đã công bố hồi tháng 4 năm 2010 và vpskeys, bộ gõ tiếng Việt của nhóm chuyên gia Việt Nam bị thay đổi và hàng ngàn người dùng bị dính chấu. Theo thông tin (bên trong) của một người bạn trong nhóm VPS cho biết, máy chủ của VPS bị thâm nhập và có nguồn IP đi từ VN.”

“Decode xong mới phát hiện STL còn dùng một keylog dll khác, xem trong hình các bạn sẽ thấy: CDRWapi.dll. Nếu ipripv6.dll detect có hardkdb.dll trong Windows\ime directory thì load nó, còn không thì load %AppData%\Microsoft\Windows Media\CDRWapi.dll.”

“search file: StaticCache.dat của STL nằm trong \Documents and Settings\%User%\Application Data. Xoá nó ngay lập tức = Unlocker, GMER… Đây chính là 1 dll làm nhiệm vụ ăn cắp và ghi lại toàn bộ thông tin về rất nhiều thứ của victim. Tên gốc của nó là CollectInfo.dll. Em mất pass vì chính file dll này.
Đồng thời search file wab64.dll trong %Program Files%, xoá nó luôn. Tên nguyên thuỷ lúc coder STL build là sysclass.dll, cũng làm nhiệm vụ thu nhập thông tin về victim.”

“Các bạn đang dùng Firefox nên dùng và đặt Master Password ngay. Nếu đã đặt Master Password thì các ct decrypt Firefox password sẽ vô dụng”

Thực ra đây là hiệp hai của trận đấu. Hiệp đầu STL tấn công trước và HVA thua thê thảm. Admin của HVA cũng bị STL cài virus và hàng loạt thông tin nội bộ HVA bị tung lên mạng (http://vnn.vietnamnet.vn/cntt/2006/05/566887/). Bản thân TQN do sơ suất trong quá trình xử lý virus cũng bị mất trộm hàng loạt thông tin.

Tôi xem vụ trên và thấy rất “bùi ngùi” cho những người còn đang dùng Windows. Cho đến thời điểm này, dùng Linux bạn có thể loại ra khỏi đầu những điều rắc rối nói trên, vô tư mở các file đính kèm theo email, cắm USB, truy cập các trang web, … Tại sao lại cứ phải khổ sở đến thế khi dùng Win?

Một thành viên của diễn đàn có ý kiến:” việc tránh OS có nhiều rủi ro như Win cũng là cái đáng suy nghĩ. Với 1 nhân viên là sys admin, ko có lý do gì để anh ta phải xài Win cho laptop công vụ của mình cả, quá nhiều thứ rủi ro. Linux có thể là lựa chọn hay hơn. Có thể tớ sẽ ra lệnh phải dùng Linux cho laptop công vụ. Sẽ giảm bớt đi nào là key logger, nào là trojan hay back door.”

Admin conmale của HVA nhận xét: “Nếu Linux được sử dụng rộng rãi như Windows thì tác hại của virus, malware, trojan cũng không nghiêm trọng như trên Windows được. Lý do là nền tảng hai hệ điều hành khác nhau rất xa và Linux (và UNIX) vốn không có cái Windows\System32 và mớ registry có thể bị thay đổi do “system account”. Những ứng dụng sudo base như Ubuntu thì càng khó có điều kiện phát tán malware bởi vì bất cứ thứ gì được đưa vô hệ thống đều đòi hỏi authentication. Bởi vậy, những dạng malware “lặng lẽ” thực thi trên hệ thống không thể xảy ra được. Đó là chưa kể mỗi xuất đăng nhập trên Linux nếu cần sử dụng thư viện nào đó đều dùng một “copy” tạm thời trên bộ nhớ, sau khi xong thì tất cả đều bị huỷ nên việc có những malware trên Linux khó lòng thực thi.

Nếu cho là Linux chưa sử dụng rộng rãi như Windows nên không có malware và virus thì đó là cách lý luận gượng ép bởi vì cho đến nay, Linux chiếm khoảng gần 70% các máy chủ và các cơ sở hạ tầng của Internet. Trong đó, những máy chủ ấy chứa tài nguyên và thông tin còn nhạy cảm và ghê gớm hơn cả những desktop chạy Windows bình thường. Nếu xét trên góc độ phá hoại thì Linux và những máy chủ Linux chiếm con số không nhỏ và có thông tin còn quan trọng hơn nữa. Bởi vậy, lý do để tấn công vô mảng Linux không kém phần hấp dẫn chớ không phải Linux không được phổ biến nên không có ai tấn công. Xét cả con số máy Linux lẫn thông tin có trên các máy Linux thì việc dùng malware (như trên mục tiêu Windows) vẫn không thua sút mấy. Chỉ có điều, làm việc này trên Linux không phải là việc dễ dàng như trên Windows (trên mặt kỹ thuật) mà thôi.

Đặc biệt là đoạn thứ hai tôi thấy rất đúng. Một trong những lý do thường được đưa ra giải thích cho việc Linux hầu như không có virus là Linux không phổ biến vì vậy hacker chưa để ý đến nó. Và như conmale lập luận ở trên, do Linux chiếm gần 70% cơ sở hạ tầng Internet (các máy chủ), chứa rất nhiều thông tin quan trọng hơn máy để bàn nên tấn công chúng hấp dẫn hơn nhiều, không thể nói là hacker không chú ý. Chỉ có điều tấn công Linux khó hơn nhiều.

Nhưng Linux cũng không phải miễn nhiễm với virus. Nếu bạn cẩn thận thì có thể dùng nhiều cách như tôi đã trình bày rải rác trong các post của chuyên mục An ninh bảo mật trong blog này. Một cách đơn giản nhất: cài cả Windows và Linux trên máy. Khi nào duyệt web, đọc mail thì dùng Linux và tốt nhất là đừng cho Firefox nhớ các password quan trọng. Dùng các add-ons như LastPass, Roboform để lưu password.

Trên Linux cũng có phần mềm diệt virus clamav (trong KDE là klamav), có cả phiên bản dành cho Windows mà theo một số thông tin trên HVA thì khá hiệu quả.

Và thỉnh thoảng chạy những cái này cho yên tâm: https://zxc232.wordpress.com/2010/09/08/rootkit-va-cach-phong-chong/

Và chắc chắn nhất có lẽ là dùng một đĩa CD có cài sẵn bản Linux của bộ QP Mỹ khi vào mạng. Ngay với bản này, người dùng cũng được khuyên rằng nên boot lại máy trước khi làm những việc cần bảo mật. (xem tiếp)

 

Một bản Linux an toàn của bộ Quốc phòng Mỹ

Lightweight Portable Security (LPS) là một bản Linux an toàn được xây dựng trong khuôn khổ chương trình Sáng kiến Bảo vệ phần mềm (the Software Protection Initiative) dưới sự chỉ đạo của Phòng thí nghiệm nghiên cứu không quân (the Air Force Research Laboratory) và bộ Quốc phòng Mỹ.

Các đặc điểm chính của LSP:

  • Là một bản Linux nhẹ (130MB) chạy được trên hầu hết các máy tính có bộ vi xử lý Intel (PC hoặc Mac). Chạy trực tiếp từ đĩa CD hoặc ổ USB, không cần cài đặt, không kết nối (mount) với ổ cứng của máy tính.
  • Dùng để truy cập Internet hoặc truy cập từ xa vào mạng LAN bằng trình duyệt Firefox và sử dụng các ứng dụng web. Ngoài ra, LPS cũng có trình soạn thảo văn bản, xem file PDF và xem ảnh.
  • Là bản Linux chỉ đọc (read-only), không thể ghi hoặc sửa đổi. Do đó các phần mềm độc hại (virus, spyware, trojan, keylogger, …) nếu có thâm nhập từ Internet vào LPS chỉ có thể tồn tại trong một phiên làm việc. Sau khi truy cập vào một site nghi ngờ là có malware, chỉ cần reboot lại máy tính là hệ điều hành lại sạch.
  • Cũng do tính năng chỉ đọc, các dữ liệu cá nhân nhạy cảm như lịch sử các trang web đã xem, các giao dịch ngân hàng, … không lưu lại bất cứ đâu trên máy tính đã sử dụng cũng như trên CD hoặc USB có chứa LPS.
  • Trình duyệt Firefox hỗ trợ các loại smartcard CAC và PIV để truy cập các trang web của chính phủ Mỹ yêu cầu phải có các loại smartcard đó mới truy cập được.
  • Trình duyệt Firefox có tính năng hỗ trợ mã hóa dưới dạng add-ons Encryption Wizard. Tính năng này cho phép tải về và giải mã các file mã hóa đính kèm webmail (Outlook Web Access hoặc Yahoo Mail), mã hóa các file khi đính kèm nó vào email.

Tóm lại, đây là cách dùng Linux an toàn như đã nói ở đây. Điểm khác biệt: đây là hệ điều hành chuyên dụng cho mục đích đó do chính bộ Quốc phòng Mỹ xây dựng, vì vậy mức độ an toàn, tin cậy của nó cao hơn các bản Linux khác.

Ghi chép: Theo dõi bàn phím (keylogger) và cách phòng chống.

Ghi chép: Theo dõi bàn phím và cách phòng chống.

Trong một post trước nói về cách bảo vệ password chống keylogger, tôi nhận được một cái comment: “when you’re typing your password, you should use your mouse.”. Một người bạn của tôi hay banking online vừa rồi cũng tái mặt vì phát hiện một con keylogger trong máy. Tìm hiểu thêm về cách dùng chuột chống keylogger mới thấy vấn đề anti-keylogger hay và cũng phức tạp. Tôi viết post này vừa để tự tìm hiểu vừa chia sẻ với mọi người.

1- Khái niệm

Theo dõi bàn phím (keystroke logging hoặc keylogging) là hành động bí mật ghi lại các phím đã được gõ của bàn phím. Từ các phím đã được ghi lại đó, người theo dõi có thể biết được nội dung văn bản đã gõ hoặc username, password của người bị theo dõi và các thông tin khác.

Có rất nhiều cách để theo dõi bàn phím: dùng phần mềm, phần cứng ghi lại các phím đã gõ hoặc bắt các tín hiệu điện từ, tín hiệu âm thanh của bàn phím phát ra khi gõ. Các thiết bị, phần mềm theo dõi bàn phím gọi là keylogger.

Tác hại của keylogger:

Hầu hết người dùng máy tính hiện nay (nhất là dùng Windows) đều có khái niệm về virus và cách phòng chống virus. Tuy nhiên, các virus thường chỉ gây phiền toái (máy chạy chậm, hỏng phần mềm, v.v…), tác hại đến người dùng không lớn. Trong khi đó, nếu bị nhiễm keylogger, tác hại sẽ nguy hiểm hơn nhiều:

  • Hacker biết được password sẽ đọc trộm được các dữ liệu bảo vệ bằng password đó (đọc trộm thư chẳng hạn).
  • Hacker có thể đăng nhập vào hộp thư, blog của bạn, giả danh bạn để phát đi những thông điệp rất có hại.
  • Ở mức cao hơn, hacker có thể chiếm địa chỉ email, blog bằng cách thay đổi password do đó chủ nhân không đăng nhập được nữa, bị mất địa chỉ email hoặc blog đó.
  • Nếu bạn giao dịch ngân hàng, mua bán qua mạng, hacker sẽ lấy tiền trong tài khoản ngân hàng của bạn.
  • và mọi thứ bạn làm trên máy tính sẽ bị theo dõi, xem trộm và lợi dụng.

Vì vậy việc phòng chống keylogger có thể nói là còn quan trọng hơn cả phòng chống virus nữa.

2 – Các loại keylogger

2.1- Các phần mềm theo dõi bàn phím (software keyloggers)

Các phần mềm được bí mật cài vào máy tính cần theo dõi để ghi lại các phím đã gõ gồm có 5 loại sau:

  • Phần mềm keylogger chạy trong máy ảo: trên máy bị theo dõi, cài một máy ảo tối thiểu. Trong máy ảo đó chạy phần mềm keylogger. Đây là một cách làm khó nhưng tinh vi vì hệ điều hành chính vẫn giữ nguyên, không bị thay đổi nên rất khó phát hiện. Blue Pill là một ví dụ của loại malware này được công bố năm 2006, lúc đầu được tác giả coi là 100% không thể phát hiện được. Nhưng sau đó chính tác giả cũng phát triển một kỹ thuật có thể phát hiện được loại malware này.
  • Phần mềm keylogger chạy trong nhân hệ điều hành: loại phần mềm này khó viết và cũng khó diệt. Chúng được lập trình dưới dạng một rootkit xâm nhập vào nhân hệ điều hành và hoạt động như một driver bàn phím do đó có thể bắt mọi thông tin từ bàn phím chuyển cho hệ điều hành.
  • Phần mềm keylogger dùng giao diện lập trình (API) của bàn phím: loại phần mềm này dùng các hàm của API liên tục thăm dò trạng thái bàn phím, từ đó có thể ghi lại các phím đã gõ. Dễ viết nhưng làm tăng mức độ sử dụng CPU và cũng có thể bỏ sót phím.
  • Phần mềm bắt các dữ liệu nhập vào web form: một web form là nơi người dùng nhập dữ liệu vào, ví dụ màn hình đăng nhập Gmail. Phần mềm loại này nói chặt chẽ thì không phải ghi các phím đã gõ mà ghi lại các dữ liệu do người dùng nhập vào các web form: username, password, v.v…. trước khi dữ liệu đó được chuyển lên Internet, trước cả khi dữ liệu được mã hóa trong một kết nối dùng giao thức https. Đây là một trong những cách phổ biến để ăn trộm password.
  • Phần mềm bắt các gói dữ liệu của mạng: loại này có thể tìm được các password không mã hóa.

Một số phần mềm keylogger hiện nay còn có thể:

  • Ghi lại nội dung clipboard: vì vậy các password dài, phức tạp nhập bằng cách copy/paste qua clipboard có thể bị mất theo cách này.
  • Chụp ảnh, thậm chí quay phim màn hình và/hoặc ghi lại chuyển động của chuột: các keylogger loại này có thể phát hiện được các password nhập bằng bàn phím ảo trên màn hình (mà một số site ngân hàng hay dùng) hoặc các password dùng ảnh đồ họa.

Các dữ liệu ghi được, được chuyển cho hacker bằng một trong các cách:

  • Dữ liệu được tự động tải lên một site của hacker.
  • Dữ liệu định kỳ được tự động chuyển bằng email đến địa chỉ nhận của hacker.
  • Dữ liệu được chuyển qua mạng không dây bằng một thiết bị lắp trộm vào máy bị theo dõi.
  • Keylogger cho phép hacker từ xa đăng nhập vào máy để đọc các dữ liệu đã ghi được.

2.2 – Các thiết bị phần cứng theo dõi bàn phím.

Thiết bị phần cứng theo dõi bàn phím (hardware keylogger) là một thiết bị điện tử lắp chen vào giữa đường cáp của bàn phím nối với máy tính hoặc thậm chí lắp vào ngay bên trong bàn phím.

Các dữ liệu về các phím đã gõ được lưu vào bộ nhớ trong của thiết bị.

Hacker cần phải sờ được vào máy tính để lắp thiết bị này và đọc dữ liệu nó ghi được. Một máy tính để bàn có thể bị lắp loại thiết bị này mà người dùng không để ý nên không phát hiện được. Nhưng với máy tính xách tay thì hầu như không có chỗ để lắp.

Ví dụ tại đây chào bán các hardware keylogger lắp vào chân bàn phím có thể tự động gửi email những thứ đã ghi được qua kết nối Wifi của bản thân nó, hoặc các keylogger lắp vào chân màn hình có bộ nhớ 2GB có thể quay phim màn hình (giá 194USD).

2.3 – Thiết bị bắt sóng của bàn phím không dây

Bàn phím không dây cần truyền dữ liệu từ bàn phím tới bộ thu bằng sóng vô tuyến. Các thiết bị loại này sẽ bắt các sóng đó, giải mã để tìm ra các phím đã gõ.

2.4 – Thiết bị thu âm bàn phím

Mỗi phím trên bàn phím khi gõ phát ra âm thanh hơi khác nhau. Một thiết bị thu âm cực nhạy khi thu đủ một số lượng âm nhất định có thể giúp cho hacker dò ra được các phím đã gõ.

2.5 – Thiết bị thu sóng điện từ của bàn phím

Mỗi phím của bàn phím có dây khi bị gõ cũng phát ra một sóng điện từ có thể thu được ở khoảng cách tới 20m.

2.6 – Thử dùng một keylogger

Firefox có một add-ons cũng gọi là Keylogger được quảng cáo là

Nếu bạn lo lắng vì không biết con mình làm gì trên Internet ?

Nếu đêm bạn không ngủ được vì không biết chồng mình lọ mọ gì với máy tính vào lúc 2 giờ sáng?

Add-ons này dành cho bạn!!

Bạn có thể nhấn vào link trên và cài thử xem sao?

3 – Các biện pháp phòng chống keylogger.

Do có rất nhiều cách theo dõi bàn phím như nói ở trên, nên cách phòng chống keylogger cũng rất đa dạng. Không có thứ khóa nào chống được mọi loại trộm mà chỉ làm giảm khả năng bị trộm đi mà thôi.

Dưới đây điểm vài cách chính, phổ biến. Không có cách nào vạn năng, bạn tự chọn và thậm chí có thể phối hợp vài cách tùy theo nhu cầu bảo mật của bạn.

3.1 – Dùng một hệ điều hành sạch

Một trong những cách hiệu quả để chống các phần mềm keylogger là dùng Linux. Cho đến nay, vì nhiều lý do (xem tại đâytại đây), Linux hầu như không có các loại phần mềm độc hại (malware, gồm virus, spyware, keylogger, worm, …), các khe hở an ninh của nó cũng ít và khó khai thác.

Vì vậy chỉ cần dùng Linux, nguy cơ bị theo dõi đã giảm đi đáng kể.

Tuy nhiên, nếu cẩn thận hơn, có thể dùng Linux theo một trong những cách dưới đây:

Chạy Linux từ đĩa CD: Tải một bản Linux nổi tiếng (để chắc rằng nó không có sẵn keylogger) từ trên mạng về. Kiểm tra số md5 để chắc chắn nó là nguyên bản rồi ghi vào đĩa CD. Khởi động máy tính từ đĩa CD đó để dùng bản Linux đó. Hệ điều hành đó sạch vì trước đó nó không có keylogger và khi sử dụng keylogger cũng không thể cài vào đĩa CD.

Đây có lẽ là cách an toàn nhất, được các chuyên gia khuyên dùng khi giao dịch ngân hàng trên mạng (xem tại đâytại đây).

Nhược điểm:

  • Chỉ đề phòng được keylogger phần mềm, các loại khác nói ở trên thì không chống được.
  • Thời gian khởi động lâu. Mỗi lần dùng phải kết nối Internet, cài đặt bộ gõ tiếng Việt. (Để gõ tiếng Việt trong Firefox, cài add-ons AVIM là nhanh nhất.) Nếu định dùng thêm các phần mềm bảo mật khác thì mỗi lần dùng cũng phải cài lại vì kết quả cài không ghi được vào đĩa CD.
  • Về nguyên tắc, nếu bản Linux đó có khe hở an ninh thì trong thời gian bạn dùng, hacker từ mạng vẫn có thể xâm nhập vào được.

Vì vậy nếu dùng cách này, an toàn và tiện nhất là làm như sau:

  • Cài bản Linux định dùng lên ổ cứng. Cập nhật tất cả các bản vá mới nhất để đảm bảo là nó không có các khe hở an ninh (đến thời điểm đó).
  • Cài đặt, cấu hình tất cả những thứ cần thiết.
  • Dùng một phần mềm công cụ tạo bản Linux mới (Remastersys, …) từ bản đã sẵn sàng nói trên rồi ghi nó vào đĩa CD để dùng.

Chạy Linux từ ổ USB: cài một bản Linux vào ổ USB. Khởi động máy cho nó boot từ ổ USB đó. Cách này khắc phục được vài nhược điểm nêu trên: khởi động nhanh hơn; chỉ cần kết nối Internet và cài bộ gõ một lần đầu; có thể cài, cấu hình, tùy biến mọi thứ như với một bản Linux thông thường một lần, các thay đổi sẽ được ghi lại vào USB; có thể cập nhật các bản vá an ninh trong quá trình sử dụng.

Nhược điểm là USB có thể ghi được. Vì vậy trong quá trình sử dụng, keylogger có thể thâm nhập và cài vào USB.

Chạy Linux dành riêng trên ổ cứng: trên ổ cứng, cài một vài hệ điều hành trên các vùng ổ cứng (partitions) khác nhau (xem thêm tại đây). Khi khởi động máy sẽ có menu để chọn khởi động hệ điều hành nào.

Dành riêng một bản Linux chỉ để cho các công việc cần bảo mật (giao dịch ngân hàng, thư điện tử, …), không làm các việc khác để giảm tối đa khả năng lây nhiễm keylogger từ Internet. Khi nào cần bảo mật, khởi động máy vào bản Linux đó. Khi dùng xong, restart lại máy vào hệ điều hành khác (Windows hoặc Linux) dành cho các công việc bình thường.

Cách này nhanh và tiện hơn dùng USB nhưng cũng có nhược điểm như USB: keylogger có khả năng cài được vào ổ cứng.

3.2 – Hạn chế đăng nhập vào tài khoản chính

Khi thường xuyên đăng nhập thì khả năng bị lấy trộm password cũng cao hơn. Vì vậy:

  • Với email: không dùng hộp thư chính mà dùng hộp thư phụ như đã nêu ở đây. Cách này chỉ tránh bị mất email chính, nhưng không tránh được bị xem trộm thư nếu password hộp thư phụ bị lấy trộm.
  • Với blog: dùng cách đăng bài qua email, không trực tiếp đăng nhập vào blog (tất nhiên là phải bảo mật địa chỉ email cẩn thận).

3.3 – Hạn chế khả năng bị cài keylogger

Thiết bị và phần mềm keylogger có thể được hacker cài trực tiếp vào máy tính. Vì vậy bảo vệ máy tính (cất giữ, đăng nhập phải có mật khẩu) là những cách cần làm.

Cài đặt và sử dụng tốt các phần mềm anti-spyware để phát hiện và diệt phần mềm keylogger cũng là một biện pháp khác.

Để tránh phần mềm keylogger thâm nhập từ Internet có thể dùng các biện pháp phòng chống virus thông thường (không vào những site không tin cậy, không nhấn vào các link đáng ngờ trong thư điện tử, không dùng các ổ USB đã cắm vào các máy không tin cậy, đặc biệt là không cài các phần mềm từ các nguồn không tin cậy, v.v…).

3.4 – Tự động nhập username, password.

Một trong những cách tránh dùng bàn phím nhập password là dùng các phần mềm quản lý password (password manager) có tính năng tự động nhập password (và cả username).

Các phần mềm quản lý password có nhiều loại:

  • Phần mềm độc lập: ví dụ Keepass, một phần mềm chạy được trên khá nhiều hệ điều hành, kể cả các thiết bị cầm tay. Những phần mềm loại này lưu password trong một file cơ sở dữ liệu trên máy tính. Vì vậy muốn dùng trên nhiều máy thì nên lưu cơ sở dữ liệu đó trong một nơi lưu trữ online, dropbox chẳng hạn.
  • Phần mềm add-ons của Firefox: ví dụ LastPass, RoboForm, Mitto, … Các dịch vụ này lưu password dưới dạng mã hóa trên site của hãng, vì vậy bạn buộc phải tin tưởng vào hãng đó.

Khi đã khai địa chỉ site đăng nhập và username, password vào phần mềm quản lý password, mỗi lần mở site đó, username/password sẽ được tự động nhập vào các trường tương ứng và site tự động đăng nhập.

Những phần mềm nói trên có khả năng tạo các password ngẫu nhiên rất dài (tới hàng nghìn bit). Loại password đó rất mạnh và không thể dò tìm bằng các chương trình dò tìm password được. Nhưng nó cũng không thể nhớ và nhập bằng bàn phím được.

Password ngẫu nhiên, dài chỉ nhập được bằng hai cách: copy/paste hoặc dùng các phần mềm quản lý password để nhập tự động. Nếu copy/paste thì nội dung password khi copy sẽ lưu vào clipboard và có thể bị đọc trộm bởi các keylogger có chức năng theo dõi clipboard.

Có những phần mềm quản lý password có khả năng tự động nhập password không cần dùng clipboard để tránh keylogger theo dõi clipboard.

3.5 – Password dùng một lần (One-time passwords – OTP)

Các password dùng một lần chỉ có giá trị đăng nhập một lần, lần sau vẫn dùng password đó sẽ không đăng nhập được phải dùng password mới. Do vậy nếu keylogger có bắt được password cũng không dùng được.

Một số ngân hàng thường dùng password loại này. Mỗi lần trước khi đăng nhập vào tài khoản, báo cho ngân hàng bằng một cách nào đó, ngân hàng sẽ gửi password vào mobile phone của bạn. Lần sau muốn đăng nhập lại phải xin password mới.

Site KYPS cung cấp dịch vụ này miễn phí. Với mỗi site bạn cần đăng nhập, khai username, password của site với KYPS, KYPS sẽ cung cấp một danh sách các password dùng một lần cho site đó. Mỗi lần đăng nhập, nhập password của KYPS, KYPS sẽ tự động thực hiện đăng nhập vào site dùng username/password mà bạn đã khai.

3.6 – Bàn phím ảo (On-screen keyboards)

Để tránh dùng bàn phím vật lý, có thể dùng bàn phím ảo. Ví dụ add-ons Keylogger Beater của Firefox cài một bàn phím ảo lên màn hình. Khi cần nhập password, dùng chuột nhấn vào các phím ảo để nhập.

Loại bàn phím ảo này tránh được các keylogger theo dõi bàn phím vật lý, nhưng không tránh được các keylogger có khả năng theo dõi dữ liệu chuyển từ chương trình này sang chương trình khác cũng như các keylogger có khả năng theo dõi chuột hoặc quay phim màn hình.

3.7 – Phần mềm làm nhiễu bàn phím

Phần mềm làm nhiễu bàn phím chen vào giữa các phím gõ thật một số phím giả ngẫu nhiên (nhưng vẫn giữ nguyên tác dụng của phím thật). Phần mềm keylogger sẽ ghi lại cả phím thật và phím giả do đó không thể tìm ra password thật.

Một ví dụ của loại phần mềm này có tại đây.

Một loại phần mềm làm nhiễu bàn phím khác là KeyScrambler Personal, một add-ons của Firefox (mới chỉ có trên Windows). Phần mềm này mã hóa dữ liệu về các phím đã gõ ở mức nhân của hệ điều hành, do đó keylogger có bắt được dữ liệu dọc đường từ bán phím tới trình duyệt cũng không đọc được.

3.8 – Phần mềm nhận dạng tiếng nói hoặc chữ viết tay.

Để tránh dùng bàn phím nhập password, có thể dùng phần mềm nhận dạng tiếng nói. Người dùng đọc password và phần mềm sẽ chuyển thành ký tự nhập vào ô password.

Tương tự như vậy, với một số loại máy tính có màn hình cảm ứng người dùng có thể dùng bút viết password lên màn hình dưới dạng chữ viết tay. Phần mềm nhận dạng sẽ chuyển chữ viết tay thành các ký tự tương ứng để nhập vào ô password.

Hai cách nhập trên có thể tránh được keylogger theo dõi bàn phím vật lý nhưng không tránh được các keylogger theo dõi dữ liệu chuyển từ phần mềm này sang phần mềm khác hoặc keylogger chụp ảnh màn hình.

Một phần mềm nhận dạng tiếng nói cho Linux có tại đây nhưng không biết có dùng để nhập password được không.

3.9 – Một số phương pháp khác.

Ngoài các phương pháp nói trên, còn rất nhiều phương pháp khác để chống keylogger khi cần nhập password. Một vài phương pháp nêu dưới đây:

  • Một số phương pháp đã nêu ở đây.
  • Thủ thuật gõ nhiều nơi: gõ một vài ký tự đầu của password vào ô password, chuyển con trỏ chuột sang một ô khác của trình duyệt, ví dụ ô Search, gõ một số ký tự ngẫu nhiên tại đó, chuyển con trỏ chuột về ô password gõ tiếp các ký tự khác, … Với cách gõ đó, keylogger sẽ ghi cả ký tự password lẫn ký tự ngẫu nhiên.
  • Thủ thuật gõ password không theo thứ tự: ví dụ đầu tiên gõ một số ký tự cuối của password, đưa con trỏ chuột về vị trí đầu, gõ tiếp vài ký tự đầu của password, tiếp theo đưa con trỏ chuột vào giữa, gõ tiếp mấy ký tự giữa.
  • Thủ thuật copy/paste/remove password không theo thứ tự: tương tự cách trên, một password dài có thể được copy từng đoạn rồi paste vào ô password không theo thứ tự thật (đầu tiên nhập đoạn cuối, sau đó đến đoạn đầu rồi cuối cùng là đoạn giữa). Hoặc trong password chen vào một số ký tự ngẫu nhiên, sau khi nhập, bôi đen các ký tự đó rồi xóa nó đi.

Tuy nhiên nếu keylogger ghi được cả hoạt động của con trỏ chuột hoặc chụp ảnh màn hình thì các cách trên không hiệu quả.

Bảo vệ password chống keylogger

Trong bài này có nói vài cách phòng chống bị lấy trộm password để đột nhập Gmail. Như đã nói trong đó, cái khó đề phòng nhất là keylogger (phần mềm ghi lại các phím đã gõ). Keylogger có thể được bí mật cài vào máy của bạn bằng nhiều cách và từ đó nó ghi lại mọi phím bạn đã gõ ghi vào một file log, định kỳ gửi về cho hacker. Hacker đọc file log có thể tìm ra username và password của bạn.

Tôi vừa tìm được một bài viết hay, nêu vài cách bảo vệ password chống keylogger xin trình bày lại ở đây có bổ xung thêm chút ít:

Cách 1: dùng chen phím Home và End khi gõ password

Giả sử password thật là yeuanhem, khi gõ đảo thứ tự các cụm ký tự và chen vào các phím Home, End như sau:

anh[Home]yeu[End]em

Khi đó máy tính sẽ hiểu là những cụm ký tự đằng sau phím Home (yeu) đặt ở đầu, những ký tự sau phím End (em) đặt ở cuối, các ký tự còn lại (anh) đặt tiếp sau cụm ký tự của Home. Do đó password mà máy tính hiểu sẽ đúng là pass thật: yeuanhem.

Trong khi đó, keylogger sẽ ghi lại đúng thứ tự các phím đã gõ: anhyeuem hoặc là ghi cả hai phím Home và End dưới dạng: anhyeuem{Numpad.Return}{Numpad.Return} mà không ghi rõ vị trí phím Home, End trong chuỗi ký tự đó. Vì vậy hacker đọc hai cách ghi nói trên không tìm ra password thật.

(Cũng có nguy cơ là bây giờ keylogger đã được cải tiến, ghi được vị trí phím Home và End thì cách này không dùng được).

Cách 2: nhập ký tự qua bộ mã

Mỗi ký tự đều có một bộ mã tương ứng. Ví dụ chữ a hoa “A” có mã là u+0041, chữ a thường là u+0061. Muốn xem mã, trong Ubuntu vào Applicatios -> Accessories -> Character Map, trong Mandriva cài gói gucharmap rồi vào Menu -> Tools -> More -> Character Map. Nhấn vào ký tự rồi đọc mã ở bên dưới như hình sau:


Thay cho việc gõ trực tiếp phím a ta nhập ký tự a bằng cách nhấn và giữ hai phím Ctrl,  Shift rồi lần lượt nhấn  u và 0061 sau đó thả hai phím Ctrl, Shift ra. (Trong Windows, thay cho tổ hợp phím Ctrl+Shift là phím Alt).

Khi nhập password, mỗi ký tự trong password đều nhập theo cách này thì keylogger không ghi được.

Cách này hơi mất thì giờ, phức tạp.

Cách 3: dùng một đoạn ký tự dài có sẵn

Một trong những nguyên tắc chọn password mạnh là password càng dài, càng rắc rối càng tốt. Nhưng dài và rắc rối thì lại khó nhớ, ghi ra đâu đó thì có nguy cơ bị xem trộm. Cách này làm như sau:

Chọn một trang web tương đối ổn định, chọn một hoặc vài đoạn chữ cố định, không bị thay đổi trên trang web đó. Các đoạn chữ đã chọn phải là cố định tức là không bị thay đổi thường xuyên theo nội dung website. Copy cả đoạn chữ đó rồi Paste (hoặc Ctrl+V) nó vào ô khai password. Khi cần nhập password, lại copy/paste vào ô password.

Hoặc dùng một phần mềm tạo password, tạo một password ngẫu nhiên thật dài. Ghi nó vào một file rồi cất file đó bằng TrueCrypt (xem cách làm ở đây). Khi cần, mở file ra cũng copy/paste để nhập password.

Khi dùng cách này, lúc copy từ trang web phải tránh không để người khác nhìn thấy.

Cách 4: phối hợp các cách trên

Có thể dùng một password phối hợp cả 3 cách trên: một phần password thì dùng Home, End; một phần thì dùng mã và phần còn lại dùng cách copy/paste. Password kiểu đó sẽ tránh được nhược điểm của từng cách đã nói ở trên.

Tôi xem xuống dưới bài viết nói trên mới biết cái này cần cho các cao thủ chơi game. Account game online hóa ra là cái hay bị hack nhất.

Vũ khí tin học bắt đầu xuất hiện trên không gian mạng

Trong một bài viết trướcMicrosoft là một khâu yếu trong an ninh quốc gia” có đoạn mô tả một cuộc tấn công mạng giả định và các hậu quả kinh hoàng của nó:

Một số chương trình mã độc đang chuyển động với quy mô lớn trên mạng Internet về phía nước Mỹ, tác động tới các hệ thống hạ tầng tối quan trọng.

…Hệ thống máy tính hỏng dẫn đến các nhà máy lọc dầu khổng lồ trong cả nước bốc cháy. Trung tâm kiểm soát không lưu của cục Hàng không Liên bang ở Virginia cũng bị sập mạng và các đòn đánh vẫn còn đang tiếp tục. Cục trưởng cục Kho bạc báo cáo với bạn “Thống đốc Ngân hàng trung ương vừa gọi. Trung tâm dữ liệu của Ngân hàng và các bản sao lưu đã bị tàn phá lớn. Tất cả dữ liệu bị mất”. Điện bị mất trên toàn quốc.Hàng nghìn người đã chết và còn nhiều nữa.”

Tháng 6/2010 vừa qua, lần đầu tiên đã phát hiện ra một con sâu máy tính (computer worm) có tên là Stuxnet hiện thực hóa bước đầu bức tranh được vẽ ở trên. Quá trình hoạt động của Stuxnet như sau:

  1. Stuxnet từ một ổ USB lây nhiễm vào máy tính chạy hệ điều hành Windows trong một mạng máy tính điều khiển một nhà máy công nghiệp nào đó.
  2. Sau đó, Stuxnet sẽ tìm đến các máy tính trong mạng có cài phần mềm điều khiển và thu thập dữ liệu WinCC/PCS 7 của hãng Siemen và lập trình lại các bộ điều khiển logic lập trình được (programmable logic controller – PLC) trong hệ thống điều khiển và che dấu sự thay đổi dưới dạng PLC rootkit. (về rootkit xem thêm tại đây).
  3. Các bộ điều khiển bị lập trình lại đó sẽ gửi các lệnh điều khiển sai đến hệ thống công nghiệp.

Khả năng tác động được vào các PLC của một sâu máy tính cực kỳ nguy hiểm. Ví dụ nếu nó nâng ngưỡng áp suất an toàn của một nồi hơi lên quá giới hạn thì nồi hơi sẽ nổ tung mà hệ thống an toàn, bảo vệ không hoạt động.

Với loại sâu như thế, không cần dùng quân đội, máy bay tấn công, có thể từ xa dễ dàng đánh sập hệ thống điện, viễn thông, ngân hàng, kiểm soát không lưu, v.v… của một quốc gia.

Stuxnet có mấy đặc điểm khác với tất cả các sâu máy tính trước đó:

  1. Nó là sâu đầu tiên nhằm tấn công vào các hệ thống điều khiển công nghiệp.
  2. Nó khai thác đồng thời 4 lỗi zero-day của hệ điều hành Windows, trong khi các sâu khác chỉ khai thác 1 lỗi (Lỗi zero-day là lỗi cho đến thời điểm đó chưa bị phát hiện hoặc vá).
  3. Dung lượng của Stuxnet lên tới gần 0,5MB, viết bằng nhiều ngôn ngữ lập trình khác nhau.
  4. Được ký bằng hai chữ ký số bị lấy cắp. Do đó mặc dù sâu này có nguồn gốc từ tháng 6/2009, đến tháng 6/2010 mới bị phát hiện.
  5. Có khả năng cập nhật được, do đó thay đổi được các tác động phá hoại.

Các chuyên gia nghiên cứu con sâu này kết luận rằng đây là một sản phẩm rất tinh vi, phức tạp do một nhóm từ 5-10 người viết trong nhiều tháng, được tài trợ đầy đủ và phải ở tầm quốc gia mới tạo ra được nó. Mục tiêu của nó không phải là kiếm tiền mà tấn công phá hoại vào các hệ thống công nghiệp tối quan trọng. Người phát ngôn của Siemen cho biết đến nay đã phát hiện được 15 hệ thống máy tính bị nhiễm trong đó có 5 nhà máy ở Đức. Khoảng 60% hệ thống bị nhiễm là ở Iran (với khoảng 30.000 máy tính bị nhiễm) vì vậy có những tin đồn là Israel, thậm chí cả Mỹ và NATO đứng đằng sau vụ này để phá hoại các nhà máy điện nguyên tử của Iran.

Mặc dù đến nay nó chưa gây ra tai họa nào được công bố, nhưng giám đốc hôi đồng Công nghệ Thông tin thuộc bộ Công nghiệp và Khai mỏ Iran tuyên bố:

“Một cuộc chiến tranh điện tử đã được tiến hành chống lại Iran. …. Con sâu đó được thiết kế để chuyển các dữ liệu về các dây chuyền sản xuất trong các nhà máy của Iran ra nước ngoài”.

Đây là một minh họa cụ thể cho lời cảnh báo đã nói ở trên “Microsoft là một khâu yếu trong an ninh quốc gia”. Tất nhiên các hệ thống Linux không phải là miễn nhiễm với loại tấn công như thế này, nhưng với thiết kế an ninh vốn có và sự rà soát lỗi thường xuyên bởi một cộng đồng đông đảo, viết một virus cho Linux khó hơn rất nhiều.

Update: cập nhật thêm một số thông tin về con sâu này tại đây.

Hai lỗ hổng an ninh gần đây của nhân Linux 64 bit

Linux Kernel Exploit Gives Hackers a Back Door

Linux nổi tiếng với các ưu điểm về an ninh so với nhiều hệ điều hành khác. Nhưng không có nghĩa là nó miễn dịch với các vấn đề an ninh.

Một lỗ hổng an ninh trong nhân Linux được phát hiện ra vào đầu tháng này cho phép hacker không chỉ dành được quyền root của các hệ điều hành Linux 64 bit mà còn tạo ra một cổng hậu (back door) để tiếp tục khai thác.

Các bản Linux như RHEL, CentOS, Debian, Ubuntu, SuSE, … đều bị lỗi này. Nó xuất hiện trong nhân Linux từ 2008 và mới đây, hacker Ac1db1tch3z đã công bố cách khai thác lỗi.

Lỗi chủ yếu do cách nhân Linux 64 bit bố trí bộ nhớ cho các lời gọi hệ thống 32 bit.

Các bản Linux 32 bit không bị lỗi này.

Thứ bảy vừa rồi, hãng an ninh Ksplice đã công bố một công cụ giúp người dùng Linux xác định xem máy của họ có bị khai thác hay chưa.

Để sửa lỗi, người dùng có thể dùng dịch vụ miễn phí 30 ngày Uptrack của Ksplice mà không cần reboot lại máy.

Hiện nay lỗ hổng này đã được vá. Nhiều bản Linux, bao gồm cả Ubuntu, Debian và CentOS đã phát hành các bản vá.

Một lỗ hổng khác

Một lỗ hổng thứ hai trong nhân Linux 64 bit gọi là CVE-2010-3301 cũng đã được phát hiện và vá xong tuần trước. Lỗi do các thanh ghi của nhân 64 bit làm việc không tốt khi thực hiện các lời gọi hệ thống 32 bit. Lỗi này cũng cho phép hacker dành được quyền root.

Bản cập nhật hôm thứ sáu của Ubuntu đã vá lỗ hổng này. RHEL thì không bị. Các nhà phát triển Debian, Fedora và các bản Linux khác đang tìm cách vá lỗi.

Trong khi chờ đợi, người dùng có thể dùng công cụ chkrootkit để kiểm tra xem có dấu hiệu xâm nhập hay không.

Điểm vài cách đột nhập GMail và cách phòng chống

Điểm vài cách đột nhập Gmail và cách phòng chống.

Giang hồ vẫn đồn rằng đột nhập Gmail không khó. Hôm nay thong thả thử tìm hiểu xem đại thể các chiêu thức bọn trộm sử dụng như thế nào.

Muốn bảo vệ mình phải biết cách bọn trộm hành động. Bài viết này nhằm mục đích đó và là bài tiếp theo trong loại bài về an ninh bảo mật đã viết trước đây.

Các cách nêu dưới đây không chỉ đúng cho Gmail mà cũng đúng cho các tài khoản online khác (tài khoản ngân hàng, các tài khoản mua sắm trực tuyến, …)

Search cụm từ “hack Gmail” ra 108.000 kết quả. Dưới đây thử điểm qua vài cách để dò ra password Gmail. (link gốc ở tiêu đề)

I- Vài cách lấy password Gmail

1-Dùng phishing

Phishing là cách lừa nạn nhân mở một trang web đăng nhập Gmail giả mạo nhưng giống như trang Gmail thật, để nạn nhân gõ username và password vào đó.

Trong cách này, hacker tải về file Gmail Phisher có chứa 3 file:

  • gmail.html
  • log.txt
  • mail.php

Upload cả 3 file đó lên một web server miễn phí trên Internet.

Sau đó gửi mail có chứa link đến file gmail.html cho nạn nhân với một nội dung lừa đảo ví dụ “Có thư quan trọng gửi cho bạn, hãy nhấn vào đây”. Khi nạn nhân kích vào link, màn hình đăng nhập Gmail giống như thật sẽ xuất hiện (nhưng trên thanh địa chỉ không phải địa chỉ của gmail mà là địa chỉ của web server chứa file gmail.html). Nạn nhân sẽ nhập username, password Gmail của họ để vào và username, password đó được ghi vào file log.txt, đồng thời xuất hiện thông báo “There has been a temporary error Please Try Again” . Khi nạn nhân kích chuột để thử lại lần nữa thì được dẫn đến trang đăng nhập của Gmail thực, do đó không biết lần trước mình bị lừa.

Hacker chỉ cần đọc file log.txt là có username và password của nạn nhân. Khai thác một số lỗi của trình duyệt hoặc DNS server, hacker còn có thể làm giả cả địa chỉ trang giả giống như địa chỉ trang thật.

Phishing là cách phổ biến nhất hiện nay để lấy username, password, mã PIN của các tài khoản online.

2- Dùng keylogger

Keylloger là phần mềm được bí mật cài trên máy nạn nhân tự động ghi lại các phím đã gõ, từ đó có thể dò ra username và password. Keylloger có thể được cài dưới dạng rootkit để xóa dấu vết. Các file log ghi được sẽ được tự động gửi về cho hacker. Các phần mềm keylloger có đầy trên Internet kể cả phần mềm thương mại.

Keylloger có thể cài vào máy bằng rất nhiều cách giống như virus: qua email, qua các trang web có chứa keylloger, qua các phần mềm tải về từ Internet, qua các usb, … thậm chí hacker trực tiếp cài vào máy nạn nhân.

Hiện nay còn có các keylloger phần cứng (hardware keylloger), khoảng từ 90-200$ một cái, được bí mật lắp vào máy lưu được 2,000,000 lần gõ phím!

3- Đọc password được Firefox “remember”

Firefox có tính năng nhớ username và password (nếu bạn ra lệnh cho nó làm như vậy). Các password đã nhớ có thể đọc từ Edit → Preferences → Security → Saved Passwords → Show Passwords.

4- Dò các câu trả lời an ninh yếu

Gmail có 5 câu hỏi an ninh sẵn và một câu tự viết dùng để khôi phục password khi quên. Nếu bạn chọn câu trả lời quá thật thà, ví dụ với câu hỏi “What is your library card number?”, bạn trả lời bằng số thẻ thư viện thật thì có rất nhiều người có thể biết số thẻ này và từ đó có thể reset password của bạn.

5- Dò từ các website an ninh yếu.

Người dùng Internet ngại nhớ password thường có thói quen dùng chung một password cho nhiều site khác nhau. Thông thường, các site đều lưu password dưới dạng đã mã hóa. Nhưng nếu có một site nào đó lưu password dưới dạng text thì hacker có thể đột nhập cơ sở dữ liệu, đọc password dễ dàng.

6- Các cách khác

Còn vài cách khác tinh vi hơn nhưng không hiểu còn tác dụng sau đợt siết chặt an ninh của Google vừa qua không.

II- Các biện pháp phòng chống

1- Dùng riêng một trình duyệt chỉ để vào Gmail. Ngoài một trình duyệt chính để làm mọi việc khác, cài riêng một trình duyệt chỉ để vào Gmail. Trình duyệt này có thể là Portable Firefox, Opera, Tor browser, Google Chrome, v.v… Như vậy hạn chế được các mã độc từ Internet cài trong các thư mục làm việc và kích hoạt khi trình duyệt chạy.

2- Luôn cập nhật phần mềm để vá các khe hở an ninh, cập nhật trình antivirus (nếu dùng Windows) để phát hiện các keylloger.

3- Thực hiện các biện pháp phòng lây nhiễm virus thông thường: không mở các file đính kèm email đáng ngờ, không kích chuột vào các link đáng ngờ trong email, không tải về cài các phần mềm không tin cậy, không vào các site linh tinh có khả năng có virus, … Và tốt nhất để tránh virus nên dùng Linux.

(Theo một bản tin gần đây, hơn 3 triệu website nhà nước Trung quốc bị cấy liên kết bẩn. Không hiểu các website gov.vn thì sao?)

4- Đừng bao giờ nhập username và password vào một trang đăng nhập Gmail không phải do bạn mở trực tiếp bằng cách gõ địa chỉ hoặc mở từ Favorites, Bookmarks do bạn lưu từ trước.

5- Không dùng Firefox để nhớ password của Gmail. Khi lần đầu vào Gmail, Firefox sẽ hỏi có nhớ password không, nhấn vào Never for this site.

6- Không dùng chung password của Gmail cho các site khác.

7- Chọn câu trả lời an ninh mà chỉ có bạn biết, người khác không biết hoặc không đoán được. Hoặc tốt nhất là tự đặt câu hỏi và trả lời (Gmail cho phép làm điều này).

8- Chỉ mở Gmail qua giao diện web trong trình duyệt. Đừng kích hoạt các tính năng truy cập Gmail qua một trình thư điện tử khác bằng POP hoặc IMAP. Nhà có nhiều cửa thì khả năng bị trộm vào cao hơn.

9- Hiện nay Gmail mặc định dùng giao thức https, mọi dữ liệu trao đổi với Internet đều được mã hóa tránh bị xem trộm trên đường truyền. Để cẩn thận hơn, vào Settings → General, đánh dấu chọn mục Always use https.

10- Dùng hộp thư phụ: Nếu thường xuyên dùng một địa chỉ Gmail thì có hai nguy cơ:

a/ Do sử dụng password thường xuyên nên khả năng bị lộ cao qua một trong những cách đã nêu ở trên.

b/ Nếu hacker có được password của bạn, chỉ đổi password thì bạn vẫn có thể lấy lại địa chỉ mail bằng cách recovery password. Nhưng nếu hacker thay đổi cả password và các địa chỉ recovery mail, số mobile phone thì coi như bạn mất địa chỉ gmail đó.

Để tránh phải mở Gmail thường xuyên, nên khai thêm một địa chỉ email phụ, ví dụ tại zoho.com. Khi đó bạn sẽ có địa chỉ mail chính ví dụ là zxc@gmail.com và địa chỉ phụ là zxc@zoho.com. Đặt Gmail tự động forward các thư nhận được (gửi cho zxc@gmail.com) về zxc@zoho.com (nhưng vẫn lưu một bản copy tại Gmail). Zoho mail cho phép gửi thư đi với địa chỉ nơi gửi là zxc@gmail.com. Vì vậy khi mở Zoho mail vẫn nhận được các thư gửi đến Gmail và gửi thư đi dưới tên Gmail. Nếu địa chỉ Zoho mail bị hacker chiếm thì vẫn quay về dùng Gmail được, hoặc tạo một địa chỉ Zoho mail khác và lại forward thư Gmail đến đó.

Cách làm trên tránh phải mở Gmail thường xuyên mà vẫn nhận và gửi thư đi như dùng Gmail. Nhược điểm là các thư gửi đi chỉ lưu ở Zoho mail, do đó mỗi thư gửi đi nên Bcc đến địa chỉ Gmail. Khi đó trong Gmail sẽ có đủ cả thư đã nhận và đã gửi.

11- Trong các cách lấy password nêu ở trên, một người cẩn thận có thể tránh được hầu hết trừ keylloger. Để tránh bị cài keylloger, nên cố gắng “dành riêng” một môi trường sử dụng Gmail theo một trong các cách sau:

  • Dành riêng một trình duyệt để vào Gmail như đã nói ở trên.
  • Dành riêng một partition trên ổ cứng hoặc một ổ USB, cài Linux và trình duyệt chỉ dùng để vào Gmail, không làm các việc khác. Khi nào dùng Gmail mới boot vào bản Linux đó.
  • Và an toàn nhất là dùng một bản Linux trên đĩa CD để vào Gmail, tương tự như cách đã nói ở đâyở đây. Cách này hơi chậm vì khởi động từ đĩa CD đã chậm, sau khi khởi động xong phải thiết lập kết nối Internet, cài extension AVIM để gõ tiếng Việt. Bù lại, không có keylloger nào cài được lên đĩa CD (trừ khi nó lẩn vào trong AVIM).

III- Các dấu hiệu nhận biết hộp thư Gmail đã bị xâm nhập.

1- Nhập đúng password nhưng không vào được Gmail. Trường hợp này hacker chiếm hộp thư của bạn và đã đổi password. Nếu như các recovery options không bị thay đổi thì bạn còn khả năng reset lại password như trường hợp quên password.

Tuy nhiên nếu hacker chỉ muốn theo dõi thư từ của bạn thì password không bị đổi và bạn vẫn mở hộp thư được.

2- Một số thư bạn chưa hề đọc nhưng bị đánh dấu là đã đọc (tiêu đề thư chuyển từ chữ đậm thành chữ thường). Tức là hacker đã đọc trước bạn. Nhưng đấy là loại hacker “gà mờ” vì thư đã đọc rất dễ dàng đánh dấu lại là “chưa đọc”.

3- Vào Settings → Forwading and POP/IMAP thì thấy thư bị forward (gửi tiếp) đến một địa chỉ lạ hoắc.

4- Cũng trong mục Forwading and POP/IMAP thấy POP hoặc IMAP bị enable mà trước đó bạn không hề làm thế. Khi đó, hacker có thể lấy thư của bạn về một phần mềm thư điện tử nào đó để xem.

5- Ở dưới đáy trang Gmail có mục Last account activity (các hoạt động gần đây nhất của hộp thư). Nhấn vào chữ Details màn hình sau xuất hiện:

Trong hình ví dụ trên có hai địa chỉ IP của máy chủ đã truy cập hộp thư Gmail trong thời gian gần đây: địa chỉ ở Vietnam 210.245.49.91 truy cập qua trình duyệt (Browser), địa chỉ ở Anh 72.5.230.103 truy cập qua POP.

Để tìm xem các máy chủ đó là máy nào, mở trang http://whatismyipaddress.com ,

Trước tiên nhấn vào menu MyIP. Kết quả cho 210.245.49.91. Đây là địa chỉ IP của máy chủ nhà cung cấp dịch vụ Internet FPT mà tôi đang dùng. Địa chỉ này trùng với địa chỉ trong bảng trên thể hiện những lần chính tôi truy cập vào Gmail.

Với địa chỉ máy chủ ở Anh, nhấn vào menu IP Lookup, nhập địa chỉ IP cần tìm (72.5.230.103) rồi nhấn nút Lookup IP Address. Kết quả lookup là:

Hostname:sender1.zohomail.com

ISP:Internap Network Services Corporation

Organization:Zoho Corporation

Đây là máy chủ của Zoho Mail, tôi dùng để lấy thư từ Gmail qua giao thức POP.

Nếu trong bảng trên, xuất hiện các địa chỉ IP lạ hoặc các địa chỉ IP của các nhà cung cấp dịch vụ Internet Việt nam nhưng vào những ngày, giờ (cột thứ ba) mà bạn hoàn toàn không truy cập Gmail thì chứng tỏ hộp thư Gmail của bạn bị xâm nhập trái phép.

Đây có lẽ là tính năng bảo mật hay nhất mà chỉ Gmail mới có. Hiện nay, Gmail còn đang thử nghiệm hệ thống hai mật khẩu: một mật khẩu thông thường và một mật khẩu gửi đến điện thoại di động của người dùng. Phải có cả hai mật khẩu này mới vào Gmail được.

Rootkit và cách phòng chống

Rootkit và cách phòng chống

Trước đây tôi có bài viết này về một spyware lẩn trong wallpaper có thể thu thập dữ liệu của smartphone gửi về một địa chỉ định trước.

Hôm qua, 7/9/2010, một bài viết khác trên VietnamNet nhắc lại vụ này có đoạn viết:

Phòng thí nghiệm của hãng bảo mật này (BitDefender) đã tạo ra một rootkit “mẫu” đi kèm với một số ứng dụng “giả danh” các ứng dụng hợp pháp. Kết quả, các mẫu rootkit nhanh chóng chiếm quyền điều hành điện thoại, cho phép hacker điều khiển từ xa ngay cả khi chiếc điện thoại nằm gọn trong tay bạn. Kẻ tấn công có thể truy cập vào cơ sở dữ liệu SQLite của điện thoại, từ đó có thể xem được toàn bộ tin nhắn, ghi nhớ hay địa chỉ liên lạc trên điện thoại bị nhiễm”

Vậy rootkit là cái gì?

Theo Wikipedia, rootkit hoạt động như thế này:

  • Đầu tiên, hacker dùng một cách nào đó để thâm nhập máy tính như một user bình thường (qua các lỗ hổng an ninh, qua các phần mềm tải về từ Internet, ….)
  • Sau đó, hacker sẽ cài phần mềm rootkit vào máy tính nạn nhân.
  • Rootkit này có hai nhiệm vụ: a/che giấu vết tích xâm nhập, không cho admin của máy biết là có kẻ xâm nhập, b/cho phép hacker xâm nhập và hoạt động trong máy với quyền cao hơn quyền user thường, thậm chí với quyền root. Với quyền đó, hacker có thể làm những điều mình muốn: điều khiển máy tính, thu thập dữ liệu, ăn trộm password, mở cổng hậu cho hacker thâm nhập, v.v….

Trong Linux, hiện tôi tìm được hai phần mềm chống rootkit (chắc còn nữa) là chkrookit (check rootkit) và rootkit hunter.

Cài đặt:

Trong Mandriva và Ubuntu, hai phần mềm trên có trong kho phần mềm. Mở menu chính Install & Remove software rồi tìm cài chkrootkitrkhunter.

Sử dụng:

Mở terminal rồi chạy các lệnh sau bằng quyền root:

rkhunter –update

rkhunter -c

Trong quá trình chạy lệnh thứ hai, thỉnh thoảng chương trình dừng lại yêu cầu Enter để chạy tiếp. Kết quả hiện trên màn hình và ghi vào file /var/log/rkhunter.log (xem bằng quyền root).

Với chkrootkit, chạy lệnh sau:

chkrootkit

hoặc

chkrootkit -x để chạy trong expert mode.

Cũng có thể đặt lịch để các phần mềm trên tự động chạy bằng chương trình cron (hoặc các giao diện của nó).

Ví dụ trong Mandriva, mở Configure Your Desktop → Advanced → Task Scheduler. Với Ubuntu, cần cài gói gnome-schedule.

Và đừng có ham tải về cài những thứ linh tinh trên Internet. Nên theo lời khuyên này trong bài báo nói trên:

Chắc chắn, mô hình bảo mật của Android tốt hơn thiết kế an ninh trong Windows, nhưng điều đó không có nghĩa là Android là hoàn toàn không thể bị tấn công. Điều này cũng đúng với cả hệ điều hành Linux hay Mac OS X. Ngay cả OpenBSD, hệ điều hành được thiết kế bảo mật tốt nhất cũng vẫn có vấn đề an ninh. Vì vậy, cẩn trọng với các ứng dụng chia sẻ quá dễ dãi, hào phóng trên mạng là một cách để giảm bớt nguy cơ này.”

Search “linux rootkit” sẽ thấy nhiều thông tin hơn về rootkit. Ví dụ xem tài liệu này.

Ghi chép: Các kỹ thuật duyệt web an toàn (phần 2)

(tiếp theo phần trước)

III-2 Nguyên lý hoạt động của mạng Tor

Mạng Tor ra đời năm 2004, là thế hệ thứ hai của mạng Onion Routing đã nói ở trên.

Tor được định nghĩa: “là một phần mềm tự do và một mạng mở giúp bạn chống lại một dạng giám sát trên mạng  (gọi là traffic analysis,) đe dọa quyền tự do và riêng tư cá nhân, các hoạt động và quan hệ kinh doanh cần kín đáo, an ninh quốc gia”.

Mã nguồn của Tor được công bố theo giấy phép nguồn mở BSD license.

Mạng Tor là một mạng mở theo nghĩa nó gồm các máy chủ Tor tự nguyện tham gia mạng. Các máy chủ này cài phần mềm Tor, đóng vai trò là các bộ dẫn đường trung gian kiểu “củ hành” (onion router) đã nói ở trên. Hiện tại trên toàn mạng Internet có khoảng 1500 máy chủ Tor đang hoạt động.

Như trên đã nói, trong kỹ thuật truyền thông onion routing một vài máy chủ có bị hỏng, bị khống chế hoặc có ý đồ xấu cũng không phá vỡ được tính bảo mật của toàn mạng. Vì vậy mạng Tor có thể mở cho mọi máy chủ tham gia.

Kỹ thuật giám sát “traffic analysis” theo dõi, thống kê sự lưu thông của các gói tin trên mạng, có thể không cần đọc nội dung nếu gói tin được mã hóa, chỉ cần tìm ra nơi gửi nơi nhận, tần suất, số lượng, dung lượng gói tin để suy luận ra các thông tin cần thiết. Đây là kỹ thuật hay dùng trong quân sự, tình báo, phản gián.

Tor dựa trên giao thức TCP. Vì vậy những ứng dụng dùng TCP đều có thể dùng Tor (duyệt web, email, tin nhắn, chat, v.v…). Tor có thể chạy trên Windows, Mac OS và Linux.

Mục đích của Tor:

Thứ nhất, Tor ngăn các website bạn đến thăm và các dịch vụ khác mà bạn dùng biết được IP của bạn, từ đó xây dựng cơ sở dữ liệu về các thói quen và điều bạn quan tâm. Khi dùng Tor bạn được cấp một IP giả và thay đổi liên tục.

Thứ hai, Tor ngăn những kẻ xem trộm trên đường truyền (như các nhà cung cấp dịch vụ Internet) biết được bạn nhận thông tin gì và từ đâu. Nó cũng cho phép bạn đến bất kỳ đâu trên Internet, công bố bất kỳ điều gì bạn muốn mà không bị chặn bởi tường lửa.

Thứ ba, Tor chuyển thông tin của bạn qua nhiều máy chủ Tor theo cách sao cho không máy nào có thể biết bạn đi đâu.

Tor hoạt động như thế nào?

Bước 1: giả sử Alice cần liên hệ với Bob. Thay vì kết nối với Bob qua các máy chủ trung gian thông thường, Alice sẽ kết nối với một máy chủ thư mục Dave thuộc mạng Tor để lấy danh sách các máy chủ Tor hiện có trên mạng (đánh dấu bằng chữ thập màu xanh).

Bước 2: từ danh sách các máy chủ Tor, Alice sẽ chọn một số (thường là 3) máy chủ Tor ngẫu nhiên để tạo nên một tuyến liên lạc bằng Tor với máy Bob. Các đường truyền màu xanh được mã hóa, màu đỏ không mã hóa.

Khi tuyến liên lạc đã được chọn, máy Alice sẽ lập các gói tin mã hóa nhiều lớp kiểu “củ hành” như đã mô tả ở mục III.1- và gửi đi theo nhiều chặng như hình trên. Tại mỗi nút, máy chủ Tor giải mã lớp thông tin dành cho mình để biết phải gửi gói tin đến máy nào tiếp theo. Mỗi máy chỉ biết hai máy lân cận với nó, chỉ giải mã đọc được thông tin dành cho nó. Do đó có kiểm soát được máy cũng không biết được nơi đi, nơi đến và nội dung gói tin.

Máy chủ Tor cuối cùng trong tuyến kết nối Tor được gọi là exit node (nút thoát khỏi mạng Tor).

Nếu máy Alice cần liên hệ với một máy khác, quá trình trên lặp lại. Một tuyến đường mới được vạch ra, không trùng với đường cũ.

III-3 Cài đặt và sử dụng Tor để duyệt web.

Tor có thể chạy được trên cả Windows, Mac OS và Linux.

1- Cài trên Ubuntu, Linux Mint, …

1- Vào menu Administration → Software Sources → Other Software → Add rồi thêm dòng sau:

deb http://deb.torproject.org/torproject.org <DISTRIBUTION> main

(thay <DISTRIBUTION> bằng tên phiên bản Ubuntu: lucid, karmic, jaunty,..)

Trong kho cuả Ubuntu có thể cũng có Tor. Nhưng cài từ kho của Tor thì cập nhật hơn.

2- Mở terminal chạy hai lệnh sau để nhập chữ ký số của repo nói trên:

gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -

3- Chạy tiếp hai lệnh sau để cài các gói phần mềm (hoặc cài bằng Synaptic Package Manager ba gói tor, tor-geoipdb, polipo):

sudo apt-get update
sudo apt-get install tor tor-geoipdb polipo

4- Mở trang này, nhấn phím phải chuột vào “Polipo configuration for Tor “ và chọn Save Link As để tải về và lưu file cấu hình polipo.conf vào thư mục tùy chọn.

5- Dùng quyền root, mở thư mục /etc/polipo, đổi tên file config thành config.back. Copy file polipo.conf ở bước trước vào thư mục này rồi đổi tên thành config

6- Khởi động lại polipo bằng lệnh (lần khởi động máy sau thì không cần)

sudo /etc/init.d/polipo restart

7- Mở trình duyệt Firefox, vào menu Tools → Add-ons rồi tìm cài extension Torbutton. Khi cài xong, khởi động lại Firefox, ở góc dưới bên phải màn hình có hình

Thông báo trên cho biết hiện Tor disabled, trình duyệt truy cập Internet trực tiếp như bình thường.

8- Để dùng Tor, kích chuột vào hàng chữ Tor Disabled để nó chuyển thành

Kiểm tra tình trạng sử dụng Tor: Mở trang https://check.torproject.org . Nếu màn hình sau xuất hiện:

tức là bạn đang dùng Tor. Ở dòng Your IP addres … có địa chỉ IP giả không phải địa chỉ IP thật của máy bạn.

Từ bây giờ có thể lướt web bằng mạng Tor. Tốc độ có hơi chậm hơn truy cập Internet trực tiếp, nhưng đó là cái giá phải trả cho an ninh của bạn.

Khi nào muốn lướt web bình thường, chỉ cần nhấn vào hàng chữ Tor Enabled ở góc dưới bên phải màn hình cho nó đổi thành Tor Disabled.

Ngoài trang nêu trên, còn một số trang khác để kiểm tra xem bạn có đang dùng Tor thật không. Ví dụ http://torstatus.blutmagie.de/ . Trong trang này có danh sách các máy chủ Tor và một số thông số liên quan.

2- Cài trên Mandriva:

Trong kho của Mandriva đã có tor và polipo. Vào menu Install & Remove Software chọn cài bình thường.

Các bước tiếp theo làm giống như trên.

3- Tor browser:

Tại site của Tor Project có sẵn các bản Firefox kết hợp với Tor (gọi là Tor browser) và trình điều khiển Vidalia. Tải về từ đây. Tor browser không cần cài đặt rắc rối như nói ở trên.

Với Linux, tải về file nén tor-browser-gnu-linux-i686-1.0.9-dev-en-US.tar.gz, save vào thư mục Home. Nhấn phím phải chuột vào file, chọn Extract Here để giải nén thành thư mục tor-browser_en-US.

Mở thư mục đó ra, kích chuột vào file start-tor-browser để mở Tor browser.

Đầu tiên, trình điều khiển Vidalia xuất hiện như hình sau. Nếu kết nối vào mạng Tor thành công thì có thông báo Connected to the Tor network! như trên hình.

Tiếp theo, trình duyệt Firefox xuất hiện tự động mở trang https://check.torproject.org để kiểm tra lại kết nối Tor.

Firefox được mở sẵn ở chế độ Private Browsing (không lưu thông tin trong quá trình duyệt web trên máy), cài extension Torbutton để ở chế độ Tor Enabled. Đồng thời, extention NoScripts được cài sẵn để chặn mọi script nếu muốn (mặc định không chặn).

Trong màn hình trên, địa chỉ IP ở mục Your IP address … là địa chỉ giả (địa chỉ của máy Tor cuối cùng, exit node, trong tuyến kết nối hiện tại). Có thể nhấn vào Use a New Indentity trong Vidalia Control Center để đổi sang địa chỉ IP khác.

Tôi chạy Tor browser trên Ubuntu được, nhưng chạy trên Mandriva bị báo lỗi.

Update: cho đến hôm nay 8/10/2010, các bản tor browser chỉ chạy được trong GNOME. Khi chạy trong KDE bị báo lỗi không connect được với X server.

Chạy từ USB: Tor browser không cần cài đặt nên có thể giải nén hoặc copy thư mục tor-browser_en-US đã nói ở trên vào một USB. Khi cần, cắm USB vào máy đang chạy, rồi kích file start-tor-browser để mở trình duyệt.

Windows và Mac OS cũng có các gói Tor browser với cách dùng tương tự như trên, tải về từ cùng địa chỉ trên. Riêng Windows còn có gói tích hợp cả trình chat và IM Pidgin để chat và gửi tin nhắn qua mạng Tor.

III-4 Một vài chú ý khi dùng Tor

Mục đích dùng Tor là để lên mạng ẩn danh và bảo vệ thông tin. Nhưng các tác nhân bên ngoài Tor có thể phá hỏng mục đích đó. Vì vậy cần chú ý:

1- Khi dùng Tor, Torbutton sẽ tắt các plugin Java, Flash, ActiveX, RealPlayer, Quicktime, Adobe’s PDF, v.v… vì các plugin đó có thể bị điều khiển để lộ IP thật của bạn. Vì vậy các tính năng liên quan sẽ không dùng được, ví dụ xem video YouTube. Có thể cấu hình Torbutton để bật plugin lên, nhưng như vậy thì không an toàn.

2- Các cookie cũng là nguồn lộ thông tin. Nếu trình duyệt trong chế độ Tor disaled lưu lại một số cookie thì khi chuyển sang chế độ Tor enabled, các cookie đó sẽ bị Torbutton xử lý sao cho an toàn, nhưng cũng không chắc lắm.

3- Nếu trên máy có các malware chuyên đánh cắp thông tin, ví dụ trình theo dõi bàn phím keylogger, thì việc lộ thông tin không phải do Tor.

4- Một trong những khâu yếu của mạng Tor là máy chủ cuối cùng (exit node). Tại máy chủ này, các gói tin đã bị bóc hết các lớp vỏ mã hóa bên ngoài. Nếu máy chủ đó có dụng ý xấu thì thông tin bị lộ tại đó. Tuy nhiên vì mỗi lần kết nối, tuyến liên lạc Tor được chọn ngẫu nhiên, nên mỗi lần lại có một exit node khác nhau và sác xuất bị rơi vào một máy xấu là thấp.

Để tránh sơ suất ở hai trường hợp đầu nói trên, tốt nhất là dùng hai trình duyệt. Một trình duyệt không Tor cho các mục đích thông thường và Tor browser cho các trường hợp cần ẩn danh. Ví dụ dùng Firefox và Google Chrome chẳng hạn. Cũng có một bản Opera Tor nhưng chỉ chạy trên Windows.

Để tránh bị cài các malware đánh cắp thông tin, tốt nhất là nên dùng một bản Linux khởi động từ đĩa CD. Bản Linux TAILS (The AmnesicIncognito Live System) hoặc Privatix Live System dựng trên nền Debian và cài sẵn Tor là những bản như thế.

Cuối cùng cần nhớ, cũng như mọi biện pháp bảo mật khác, Tor nghe thì rất hay nhưng cũng không thể đảm bảo 100%.

IV- Mạng riêng ảo (Virtual Private Network – VPN)

(còn tiếp)

Ghi chép: Các kỹ thuật duyệt web an toàn (phần 1)

Ghi chép: Các kỹ thuật duyệt web an toàn (phần 1).

I – Các nguy cơ bị mất thông tin riêng tư khi duyệt web

Khi duyệt web, dù vô tình hay cố ý, bạn cung cấp rất nhiều thông tin cá nhân lên mạng Internet và có thể bị thu thập hoặc đọc trộm:

  • Địa chỉ IP máy của bạn, bạn xem những trang nào, số lần và tần suất bạn mở một trang, địa chỉ email, địa chỉ nhà ở, ngày tháng năm sinh mà bạn khai tại một số trang, v.v… Các website có thể thu thập những thông tin đó để marketing, thậm chí để chia sẻ, bán cho các đối tượng khác.
  • Các username, password của webmail, tài khoản ngân hàng, … có thể bị đánh cắp bằng nhiều cách.
  • Nội dung thư điện tử, nội dung các văn bản soạn trên web (blog, Google Docs, …) có thể bị xem trộm trên đường truyền, ghi trộm bởi các malware cài trên máy bạn.
  • Một trong những nơi tập trung nhiều thông tin cá nhân nhất là máy chủ của các nhà cung cấp dịch vụ Internet cho bạn. Và tại đó, thông tin có thể dễ dàng được thu thập, xem trộm vì nhiều lý do.

Thông tin truyền đi trên Internet đi theo nhiều chặng, qua nhiều máy chủ trung gian (còn gọi là hop – bước nhảy). Có thể kiểm tra điều đó dễ dàng: mở trang web này (và còn nhiều trang khác có tính năng tương tự), đánh dấu chọn mục Trace, gõ địa chỉ máy chủ trên Internet (vd: mail.google.com) rồi nhấn nút GO ta sẽ có danh sách các máy chủ trung gian phải đi qua. Tại mỗi máy đó, thông tin có thể bị sao lưu, thống kê, xem trộm hoặc gửi đi đâu đó.

Ngay cả trên máy tính của bạn, trình duyệt web cũng lưu lại nhiều cạm bẫy. Mỗi trang web bạn đã xem có thể lưu lại một cookie, một file nhỏ để theo dõi thói quen người dùng. Các đoạn phần mềm java script, flash, các ảnh có thể chứa các mã độc. Các trang web đã xem được lưu lại dưới dạng cache trình duyệt, lịch sử các trang đã xem (history), username và password nhờ trình duyệt nhớ hộ, … đều có thể bị xem trộm bởi người hoặc phần mềm.

Có những thông tin như tên tuổi, địa chỉ, bạn có thể cố ý thay đổi. Nhưng cũng có những thông tin không thể thay đổi được. Cách đây ít năm, đã có một thí nghiệm tại Mỹ thu thập các loại thông tin do một người đưa lên Internet để dựng lại bức tranh về người đó (nam hay nữ, tầm bao nhiêu tuổi, sống ở đâu, làm nghề gì, có gia đình chưa, sở thích cá nhân, v.v…). Bức tranh dựng được chính xác đến nỗi mà người đó phải chuyển đi thành phố khác.

Một câu chuyện khác xảy ra ở Việt nam, tôi đọc được cách đây không lâu trên báo. Một phóng viên báo tỉnh được giao viết một phóng sự điều tra. Báo đó chưa kịp đăng thì một báo khác đã đăng. Phóng viên đó bị nghi ngờ chuyển bài đi nơi khác. Nhờ có người giúp đỡ, phóng viên đó đến đơn vị quản máy chủ Internet và “xin” được password Gmail của một đồng nghiệp đã nghi sẵn và từ đó minh oan được rằng chính đồng nghiệp đó đã lấy trộm bài báo gửi đi cho báo khác. (Đó là trước đây. Hiện nay Gmail đã dùng https thì không thể lấy được password dễ như vậy).

Tóm lại, Internet giống như một khu rừng hoang. Nhiều hoa thơm, trái lạ nhưng nguy hiểm cũng rình rập sau mỗi gốc cây, kể cả khi bạn là người du lịch vô tư trong sáng nhất.

II – Các biện pháp duyệt web an toàn đơn giản

II-1 Tránh lưu thông tin trên máy cá nhân

Trình duyệt Firefox có chế độ Private Browsing (vào Tools → Start Private Browsing), trình duyệt Google Chrome có chế độ Incognito Windows là những chế độ duyệt web không lưu lại dữ liệu gì trên máy cá nhân.

Nếu cẩn thận hơn, có thể tắt Java script, không cho hiện các ảnh (với Firefox: vào Preferences → Content, bỏ chọn các mục Load images automatically, Enable JavaScript). Tuy nhiên nếu trang web dùng JavaScript để hoạt động thì không bỏ được.

Các ảnh động Flash có thể chặn được bằng extensions Flashblock và chọn được chỉ cho chạy các Flash cần thiết. Phần lớn ảnh động Flash là ảnh trang trí hoặc quảng cáo nên chặn lại thì tốc độ duyệt web nhanh hơn và tránh được mã độc lẩn trong đó.

II-2 Kết nối với máy chủ bằng giao thức https

Nếu trang web hỗ trợ giao thức https thì giữa trình duyệt và trang web có thể thiết lập một kết nối an toàn. Mọi thông tin trao đổi giữa trình duyệt và trang web đều được mã hóa, không xem trộm được trên đường truyền. Một ví dụ cho loại kết nối này là dịch vụ Gmail, Zoho Mail (xem thêm tại đâytại đây).

Kết nối này có hai nhược điểm chính:

1- Chỉ kết nối được với máy chủ hỗ trợ https. Hiện nay phần lớn trang web không hỗ trợ kiểu kết nối này.

2- Tuy nội dung trao đổi được mã hóa, nhưng vẫn có thể biết người dùng kết nối vào trang web nào.

II-3 Dùng proxy server thông thường (web proxy).

Các máy chủ proxy là loại máy chủ trung gian trên mạng Internet. Thay vì kết nối thẳng vào trang web xyz.com, người dùng mở trang proxy abc.com rồi rồi gõ địa chỉ trang xyz.com vào đó. Máy chủ proxy abc.com sẽ kết nối và mở trang xyz.com. rồi truyền trang đó về trình duyệt của người dùng.

Các máy chủ proxy thông thường dùng giao thức http, không mã hóa dữ liệu.

Dùng máy chủ trung gian như trên về phía người dùng cuối đạt được hai mục đích:

  • Dấu được địa chỉ IP và các thông tin cá nhân khác của người duyệt web đối với trang web cần mở. (nhưng không dấu được với bản thân proxy hoặc với những kẻ đọc trộm trên đường truyền). Trang xyz chỉ biết là yêu cầu gửi từ máy chủ proxy đến và chuyển dữ liệu cho proxy. Địa chỉ IP nó ghi lại là của máy chủ proxy, không phải của máy người dùng.
  • Xem được các trang bị chặn bởi tường lửa.

Nhược điểm:

  • Dữ liệu truyền giữa máy người dùng và proxy không được mã hóa nên có thể bị xem trộm dọc đường truyền. Người xem trộm sẽ biết được bạn vào trang web nào, đọc cái gì.
  • Bản thân các máy chủ proxy cũng có thể thu thập dữ liệu về bạn hoặc thả virus vào máy của bạn. Khi dùng proxy thì không có cách nào khác ngoài việc tin tưởng vào nó.

Cách dùng: Trên Internet có rất nhiều web proxy (search “free web proxy”) lấy quảng cáo làm nguồn sống. Theo trang web proxy.org hiện có hơn 5300 proxy hoạt động trong tổng số 38.000 proxy server với nhiều tiêu chí lựa chọn khác nhau.

Chọn được trang nào, mở trang đó ra rồi nhập địa chỉ website cần truy cập vào đó và nhấn Enter  (hoặc nhấn nút GO hay Surf).

II-4 Dùng proxy server bảo mật (ssl proxy)

Các proxy bảo mật là loại proxy dùng giao thức https mã hóa dữ liệu truyền giữa proxy và trình duyệt (xem thêm về https tại đây). Địa chỉ các proxy này bao giờ cũng bắt đầu bằng https://

Loại proxy này cũng đạt được hai mục đích của proxy thông thường đã nói ở trên và khắc phục được nhược điểm thứ nhất: dữ liệu trao đổi giữa trình duyệt và proxy được mã hóa nên không sợ bị đọc trộm trên đường truyền từ trình duyệt đến proxy.

Tuy nhiên nó không khắc phục được nhược điểm thứ hai. Bạn dùng một proxy là buộc phải tin tưởng vào nó. Nếu nó thu thập dữ liệu về bạn hoặc nó bị hacker khống chế thì …

Tìm theo từ khóa “free ssl proxy” có thể tìm được nhiều địa chỉ các proxy bảo mật miễn phí.

Cách dùng: tương tự như trên.

Chú ý: cả hai loại proxy trên có chung nhiệm vụ chính là làm dịch vụ duyệt web trung gian. Nhưng mỗi proxy cụ thể lại có những đặc điểm riêng cần chú ý khi lựa chọn. Ví dụ webwarper.net cho phép truy cập nhanh bằng cách nén nội dung website, nhưng lại không đảm bảo ẩn danh hoàn toàn, v.v…

II-5 Các cách khác:

Còn nhiều cách nữa. Ví dụ xem tại :http://civisec.org/guides/everyones-guides

III – Mạng TOR

Mạng Tor là một kỹ thuật truyền dữ liệu trên Internet (duyệt web, email, chat, …) tương đối mới, dễ sử dụng và có tính an toàn cao.

Tor dựa trên kỹ thuật truyền tin mã hóa nhiều chặng nêu dưới đây.

III-1 Kỹ thuật truyền tin mã hóa nhiều chặng (Onion Routing)

Onion routing là kỹ thuật thông tin nặc danh (anonymous), chống xem trộm trên một mạng máy tính.

Thay vì kết nối trực tiếp giữa máy gửi tin và nhận tin, hai máy đó được kết nối gián tiếp qua nhiều máy chủ dẫn đường đặc biệt (onion router) chọn ngẫu nhiên.

Tại máy gửi tin, các gói tin được mã hóa thành nhiều lớp theo thứ tự các bộ dẫn đường đã chọn, mỗi lớp dùng khóa mã công khai (public key) của một bộ dẫn đường (router).

Vì vậy mỗi gói tin gồm nhiều lớp giống như củ hành và do đó có tên gọi onion (củ hành, xem hình dưới).

Khi gói tin đó truyền đến một router A, router đó dùng khóa mã riêng của mình (private key) giải mã lớp thông tin dành cho nó có địa chỉ router B tiếp theo và gửi gói tin tới đó. Tại router B, quá trình trên lặp lại và gói tin được gửi tiếp đến router C.

Quá trình truyền tin trả lời cũng làm tương tự theo thứ tự ngược lại.

Như vậy, mỗi router chỉ biết router trước đó gửi tin cho nó và router tiếp sau mà nó phải chuyển tiếp tin tới đó. Chỉ có router đầu tiên biết địa chỉ máy gửi và router cuối cùng biết địa chỉ máy nhận. Mỗi router cũng chỉ giải mã được phần thông tin dành cho nó mà không giải mã được các lớp thông tin khác được mã hóa bằng các khóa mã khác.

Kỹ thuật này tương tự như việc cho một bức thư vào nhiều lớp phong bì lồng nhau, rồi gửi từ nơi gửi đến nơi nhận qua nhiều người đưa thư theo từng chặng. Mỗi người đưa thư mở một lớp phong bì để đọc địa chỉ người đưa thư tiếp theo và chuyển thư cho người đó, cứ thế cho đến người nhận cuối cùng.

Ưu điểm của kỹ thuật này là nếu một số router trung gian bị khống chế, theo dõi bởi kẻ xem trộm cũng không thể xem được nội dung gói tin và địa chỉ nơi gửi, nơi nhận vì không thể giải mã được hết các lớp mã hóa khác do không biết khóa mã. Gói tin vẫn được truyền đi nặc danh và bảo mật. Chỉ khi nào theo dõi được toàn bộ các router mới có thể tìm được nơi gửi và nơi nhận.

Vì vậy bạn không cần phải tin cậy vào các router như phải tin cậy vào proxy. Và do đó, máy của bạn cũng có thể tham gia làm một onion router nếu muốn. Càng nhiều router thì mức độ an toàn của mạng càng cao.

Trong mỗi phiên liên lạc, các router lại được chọn ngẫu nhiên từ rất nhiều router có trên mạng. Vì vậy rất khó theo dõi.

(Còn tiếp)

//

Linux virus và những lời cảnh báo.

Linux virus và những lời cảnh báo.

Unreal là một game bắn súng khá phổ biến tương tự như Doom hoặc Quarke. Mới đây, trên diễn đàn Unreal IRCd Forums đã ra thông báo:

Chúng tôi phát hiện ra rằng gói Unreal3.2.8.1.tar.gz trên các site mirror đã bị thay thế bằng một gói khác có chứa một virus cửa hậu (backdoor). Virus này cho phép thực hiện bất kỳ một lệnh nào theo quyền của user chạy ircd. …

Gói này bị thay vào tháng 11/2009 và hình như không ai phát hiện ra cho đến nay (6/2010).

Lẽ ra chúng tôi phải phát hiện ra sự thay thế đó, nhưng đã không phát hiện ra. Chúng tôi đã không ký các phiên bản phát hành bằng chữ ký số PGP/GPG mà lẽ ra phải ký.”

Vụ này không có hậu quả nghiêm trọng ảnh hưởng đến các doanh nghiệp, tổ chức vì nó nằm trong một chương trình trò chơi. Nhưng nó cũng phát đi những lời cảnh báo sau:

  • Linux không phải miễn nhiễm với virus. Mặc dù so với Windows hiện tại nó an toàn hơn, khó khai thác các lỗ hổng an ninh hơn và có số lượng virus ít hơn rất nhiều nhưng nó vẫn có khả năng bị tấn công. Cái gì con người làm ra, con người cũng có thể phá.

  • Việc tải các file từ Internet về phải hết sức thận trọng. Tốt nhất là chỉ nên tải từ các kho chính thức. Và kể cả các kho chính thức cũng không phải an toàn. Gói phần mềm có virus nói trên có cả trong kho chính thức của bản Linux Gentoo. Gần đây cũng đã phát hiện được một virus nữa lẩn trong screensaver trên site gnome-look.org.

  • Những ai đưa phần mềm của mình lên Internet để chia sẻ cũng nên quản lý thật cẩn thận.

Microsoft là một khâu yếu trong an ninh quốc gia.

Cyber War : Microsoft a weak link in national security

(Đây là bài điểm cuốn sách mới của một cựu cố vấn Nhà Trắng. Tôi tóm tắt một số đoạn đáng chú ý. -zxc232)

Cựu cố vấn Nhà Trắng Richard A. Clarke vừa công bố cuốn sách mới “ Chiến tranh mạng: mối đe dọa tiếp theo của An ninh Quốc gia và điều cần làm”

Clark chính là người đã nhiều lần cảnh báo Nhà Trắng về Al Qaeda trước khi xảy ra vụ tấn công 11/9/2001. Do đó ông trở thành người được công chúng biết đến nhiều nhất về chủ đề An ninh Quốc gia.

Richard A. Clarke

Xem thêm về tiểu sử của Clarke tại đâytại đây. Ông là chuyên gia quốc tế về an ninh nói chung trong đó có an ninh mạng, là cố vấn an ninh cao cấp qua 3 đời tổng thống Mỹ. Các chức vụ từng giữ:

– Trợ lý đặc biệt của Tổng thống về các công việc toàn cầu (Special Assistant to the President for Global Affairs)
– Nhà điều phối quốc gia về an ninh và chống khủng bố (National Coordinator for Security and Counterterrorism)
– Cố vấn đặc biệt cho Tổng thống về an ninh mạng (Special Advisor to the President for Cyber Security)

Trong cuốn sách trên, Clarke viết: “ Trong khi có vẻ như nước Mỹ có một ưu thế nào đó về chiến tranh mạng, thực tế loại chiến tranh đó đặt Mỹ vào hoàn cảnh hiểm nghèo hơn các nước khác. Sự phụ thuộc rất lớn của hệ thống tài chính và năng lượng của Mỹ vào không gian mạng phơi bày chúng ta trước những cuộc tấn công trên mạng có sức tàn phá lớn. “Điều ai cũng biết là dân chúng Mỹ và các công ty cổ phần đang điều hành các hệ thống then chốt của đất nước là những đối tượng chắc sẽ bị tổn thương trong một cuộc chiến trên mạng”

Từ trang 64 của sách, tác giả giả thiết bạn là trợ lý của Tổng thống về An ninh Quốc nội và dẫn dắt bạn đi qua một kịch bản sụp đổ. Cục An ninh Quốc gia vừa gửi đến điện thoại BlackBerry của bạn một cảnh báo nguy hiểm:” Một số chương trình mã độc đang chuyển động với quy mô lớn trên mạng Internet về phía nước Mỹ, tác động tới các hệ thống hạ tầng tối quan trọng”.

Nhưng trong thời gian bạn còn đang đi tới văn phòng làm việc, một trong những mạng chính đã sụp đổ vì bị tấn công từ chối dịch vụ. Hệ thống máy tính hỏng dẫn đến các nhà máy lọc dầu khổng lồ trong cả nước bốc cháy. Trung tâm kiểm soát không lưu của cục Hàng không Liên bang ở Virginia cũng bị sập mạng và các đòn đánh vẫn còn đang tiếp tục.

Cục trưởng cục Kho bạc báo cáo với bạn “Thống đốc Ngân hàng trung ương vừa gọi. Trung tâm dữ liệu của Ngân hàng và các bản sao lưu đã bị tàn phá lớn. Tất cả dữ liệu bị mất”. Điện bị mất trên toàn quốc.Hàng nghìn người đã chết và còn nhiều nữa. Nhưng những người cần phải báo cáo với bạn không liên lạc được.

Clarke giận dữ viết “Vào thời điểm bắt đầu kỷ nguyên chiến tranh mạng, chính phủ Mỹ bảo dân chúng và ngành công nghiệp là hãy tự bảo vệ chính họ”

Tại sao nhà nước đối phó với vấn đề đó chậm như vậy. Clarke cho rằng đó là do thiếu đồng thuận về những việc phải làm và sợ những thủ tục hành chính trì trệ.

Trong danh sách những nguyên nhân đối phó kém. Microsoft là nguyên nhân thứ 5.

Microsoft là một trong những công ty nổi tiếng về tài trợ cho các nhà hoạt động chính trị. Người khổng lồ phần mềm hào phóng này đã chuyển từ việc hậu thuẫn cho đảng Cộng hòa trong nhiệm kỳ của tổng thống Clinton sang tiếp tục ủng hộ Obama, nhưng chương trình vẫn luôn luôn rõ ràng: “ Đừng quy định gì về an ninh trong công nghiệp phần mềm, đừng để Lầu Năm góc ngừng dùng phần mềm của chúng tôi dù nó có bao nhiêu khe hở an ninh đi nữa và đừng có nói gì về sản xuất phần mềm ở nước ngoài hoặc đàm phán với Trung quốc”

Clark ghi nhận rằng, ban đầu Microsoft không có ý định làm phần mềm cho những mạng quan trọng. Mục đích của công ty chỉ là “bán được phần mềm với chi phí sản xuất thấp. Khởi đầu không có khoản đầu tư nào cho việc bảo đảm chất lượng một cách kỹ lưỡng và kiểm soát chất lượng như NASA yêu cầu đối với các phần mềm dùng trong các chuyến bay vũ trụ có người lái.”

Tuy thế mọi người vẫn mua phần mềm Microsoft để dùng cho những hệ thống quan trọng. “Chúng rẻ hơn các phần mềm tự viết”. Và khi chính phủ tung ra chương trình Phần mềm bán sẵn (Commercial Off-the-Shelf) để cắt giảm chi phí, phần mềm Microsoft bắt đầu thâm nhập vào mạng quân sự. Những loại cải cách cắt giảm chi phí như thế “mang vào Lầu Năm góc nguyên xi những lỗi và khe hở an ninh như trên máy tính riêng của bạn.”

Sự cố trên tàu sân bay USS Yorktown năm 1997 là hậu quả của điều đó. Toàn bộ mạng điều hành con tàu này dùng Windows NT. “Khi Windows NT bị treo như Windows thường bị, cả con tàu trở thành một cục gạch nổi chết dí trên mặt nước.

Phản ứng lại với sự cố đó và “cả đống những sự cố khác – a legion of other failures”, chính phủ bắt đầu nhìn sang hệ điều hành Linux. Bộ Quốc phòng đã có thể “đổi tay và chuyển hướng” sang phần mềm nguồn mở, chọn những thành phần họ cần và khắc phục các lỗi dễ dàng hơn nhiều.

Đối phó lại điều đó, Clark viết: “Microsoft, kể cả đích thân Bill Gates, bắt đầu chiến đấu để làm chậm quá trình chấp nhận phần mềm nguồn mở của các ủy ban chính phủ. Tuy thế, vì các cơ quan chính phủ vẫn dùng Linux nên tôi đã yêu cầu cục An ninh quốc gia (NSA) tiến hành đánh giá Linux. Trong một động thái làm cộng đồng nguồn mở giật mình, NSA đã tham gia cộng đồng nguồn mở bằng cách công bố các sửa chữa để tăng cường an ninh cho Linux ( SELinux là do NSA phát triển và nguồn mở hóa năm 2000). Microsoft cho tôi một ấn tượng rất rõ ràng là nếu chính phủ Mỹ ủng hộ Linux, Microsoft sẽ ngừng hợp tác với chính phủ ( nghĩa là ngừng đóng góp các loại quỹ). Điều đó chẳng ảnh hưởng gì đến tôi nhưng có tác động đến các người khác. Phần lớn các cơ quan chính phủ vẫn tiếp tục mua phần mềm Microsoft, mặc dù Linux là miễn phí.”

Microsoft cũng giữ quan điểm cứng rắn đó với ngành công nghiệp ngân hàng và tài chính, dứt khoát từ chối yêu cầu của các chuyên gia an ninh đòi truy cập mã nguồn. Khi các ngân hàng đe dọa dùng Linux, Microsoft đề nghị họ chờ đến phiên bản hệ điều hành mới – Vista.

Clarke tâm sự: “Người của Microsoft công nhận với tôi rằng công ty thực sự không chú ý nghiêm chỉnh đến an ninh, ngay cả khi họ lúng túng vì những lỗi an ninh bị khai thác công khai và thường xuyên”. Khi Apple và Linux bắt đầu tạo nên sự cạnh tranh thật sự ( về an ninh), Microsoft mới nâng cấp chất lượng trong vài năm gần đây. Nhưng điều mà Microsoft làm đầu tiên là lobby để chống lại việc đưa ra các tiêu chuẩn an ninh cao hơn của chính phủ.

Clarke kết luận: “Microsoft có thể mua được nhiều người phát ngôn và những nhà hoạt động hậu trường với chi phí chỉ bằng phần nhỏ của chi phí để tạo ra một hệ điều hành an toàn hơn. Công ty đó là một trong vài công ty thống trị công nghiệp mạng mà với họ hiện tại như thế này là tốt, thay đổi có thể sẽ xấu.”

Lời bình của người dịch:

Clarke kết án Microsoft khá nặng và đó là quan điểm riêng của ông. Tuy nhiên, quan điểm này rất có trọng lượng dựa trên chức vụ mà ông từng đảm nhiệm và những thông tin mà ông có. Hơn nữa, ông không thể đặt điều vu cáo Microsoft về một vấn đề nghiêm trọng đến thế mà không có cơ sở nếu không muốn bị kiện ngược ra tòa.

Thái độ thù địch của Clarke có lẽ bắt nguồn từ những va chạm và áp lực mà ông gặp trong quá trình làm việc với Microsoft về an ninh phần mềm. Thái độ cứng rắn của Microsoft xuất phát từ địa vị bá chủ thế giới về phần mềm của họ và cũng không có gì là lạ. Tay xe ôm ở đầu ngõ nhà tôi kể rằng hồi Bill Gate sang Việt nam, chúng ta cũng có thương lượng về các điều kiện mua phần mềm, đại loại như “nếu chúng tôi mua phần mềm, ông hãy để tiền đó đầu tư vào việc phát triển phần mềm ở Việt nam” v.v và v.v.. Một trong những người tham gia đàm phán sau đó có kết một câu “Nhục lắm!” Và tay xe ôm vừa mân mê cái mũ bảo hiểm dành cho khách nói: “Có lẽ cảm giác đó là một trong những nguyên nhân cho một loạt chủ trương, chỉ thị thúc đẩy dùng phần mềm nguồn mở tại Việt nam sau đó.”

Qua lời Clarke ta có thể thấy rằng cuộc đấu tranh giữa phần mềm nguồn mở và nguồn đóng không đơn giản chỉ là trên phương diện kỹ thuật, cái nào hay hơn, tốt hơn. Nó còn là cuộc đấu tranh để bảo vệ lợi nhuận, bất chấp cả an ninh quốc gia và dùng đến một vũ khí mạnh nhất thế giới là tiền. Như có lần tôi đã nói ở đây, hoạt động vận động hậu trường (lobby) là hoạt động hợp pháp trong chính trường Mỹ. Cả hai phe đều có các tổ chức để làm việc này, nhưng chắc là về tiền thì phe ủng hộ phần mềm nguồn mở kém hơn rất nhiều.

Với chúng ta, những người ủng hộ PMNM, từ nay biết thêm một điều: PMNM chưa được dùng ở những nơi đáng lẽ có thể dùng được không phải vì nó kém mà còn vì nhiều lý do “tế nhị” khác.

Ngay cả ở Việt nam cũng thế. Tôi được quyền mua phần mềm cho cơ quan mà lại đi dùng PMNM không mất tiền đúng là có hơi “điên”.

Các quan chức có trách nhiệm về an ninh suy nghĩ thế nào về cuốn sách này?

Google cấm dùng Windows vì lý do an ninh

Không phải cấm người dùng mà là cấm nhân viên của hãng.
Tờ “Thời báo Tài chính – Financial Times” vừa đưa tin hôm nay rằng theo các nguồn tin nội bộ ” từ đầu tháng 1, sau vụ tấn công của hacker Trung quốc vào các máy chủ của Google, Google đã ra một chỉ thị nội bộ chuyển sang hệ điều hành khác, Mac hoặc Linux, không dùng Windows nữa vì các lý do an ninh.

Nhân viên nào vẫn muốn dùng Windows phải được phép của một cấp lãnh đạo rất cao. Mua một máy Windows mới phải được phép của Tổng giám đốc Thông tin (CIO).”

Windows vốn nổi tiếng là một hệ điều hành có nhiều lỗ hổng an ninh và là đích ngắm cho hacker toàn thế giới. Trong cuộc tấn công gần đây có nguồn gốc từ Trung quốc, các hacker đã dùng malware trong những máy PC chạy Windows và Internet Explorer 6.

Site Business Insider nói rằng Google hiện có hơn 20.000 giấy phép sử dụng Windows (cho hơn 10.000 nhân viên trên toàn cầu) sẽ không được thay mới hoặc nâng cấp nữa.

Ngoải ra, Google có khoảng 450.000 máy chủ (2006) chạy Linux và các phần mềm ứng dụng tự viết.

Có 2 vấn đề đặt ra:

1- Các công ty khác có theo gương Google không? Một công ty hàng đầu thế giới với hơn 10.000 nhân viên có thể bỏ được Windows thì điều đó chắc phải khả thi và buộc phải bỏ Windows vì lý do an ninh thì điều đó đáng để người khác suy nghĩ.

2- Từ nay, hacker sẽ bắt đầu tập trung chú ý vào các hệ điều hành Mac và Linux. Điều này không vui gì.

Bảo mật tối đa: Ubuntu Privacy Remix

Bảo mật tối đa: Ubuntu Privacy Remix

( Tình cờ lọ mọ vào site Ubuntu Derivatives phát hiện ra cái này. Có lẽ ít người cần đến nó, nhưng xem để biết dữ liệu của mình mong manh như thế nào cũng hay. Và nếu chỉ dựa vào Microsoft, làm sao có được một công cụ như thế này)

Dữ liệu để trong máy tính có khi còn dễ mất hơn hàng hóa bầy ngoài chợ. Hàng bầy ngoài chợ, kẻ qua người lại lấy cũng khó, chủ quầy ngồi canh, mất là biết ngay. Dữ liệu trong máy tính:

  • Có nhiều cửa sơ hở để vào, vào được rồi lục lung tung chủ nhân cũng không biết. Lấy đồ đi chủ nhân cũng không biết là mất vì những dấu vết ăn trộm người bình thường khó mà phát hiện được.

  • Nếu máy bạn nối mạng (nhiều loại mạng), thì các phần mềm độc hại – malware (trojan, rootkit, keylogger, …) từ mạng đột nhập vào thỏa sức hoành hành, sao chép mật khẩu và file gửi đi đâu không rõ. Thậm chí hacker có thể ngồi từ xa, chạy máy tính của bạn và tha hồ lục lọi.

  • Nếu máy của bạn không nối mạng, vẫn còn nhiều cách để người khác xem dữ liệu như đã nói ở đây.

Một trong những trường hợp nguy hiểm nhất là giao dịch ngân hàng online (xem thêm tại đâytại đây)

Ubuntu Privacy Remix (UPR) là một bản Linux dựa trên Ubuntu 9.04 có mục đích tạo một môi trường máy tính làm việc cô lập (Nội bất xuất, ngoại bất nhập) để bảo vệ dữ liệu cá nhân trước những truy cập trái phép.

Các tính năng chính như sau (website tại đây):

1. UPR là một hệ điều hành chỉ đọc (read-only)

Các site lưu trữ online, các file tải về từ Internet, các email, các website bị nhiễm độc, …. đó là những nguồn có chứa các phần mềm độc hại (malware) sẽ theo mạng về cài lên máy của bạn, lục lọi dữ liệu của bạn khi bạn truy cập vào đó. Ngoài ra, malware còn có thể do một người khác cố tình cài lên máy của bạn để lấy trộm thông tin (mật khẩu, file) và gửi về nơi được chỉ định trước.

Nhưng tôi đã cài phần mềm anti-virut

Nếu xét về mặt mất dữ liệu thì phần mềm anti-virut chẳng ăn thua gì. Thứ nhất nó không phát hiện được hết malware. Chỉ cần một con lọt lưới là dữ liệu ra đi. Thứ hai, với những con mới, trong khi chờ công ty sản xuất phần mềm anti-virut phát hiện được và tìm ra cách diệt nó, nó đã kịp lục tung máy tính của bạn rồi.

Nhưng tôi chỉ làm việc với account user thường, có quyền giới hạn, không thay đổi được hệ thống.

Quyền đó là đủ để malware chui vào két dữ liệu Truecrypt của bạn hoặc lấy cắp khóa mã hóa bí mật GPG của bạn rồi.

Mặt khác, hệ thống của bạn luôn có các lỗ hổng an ninh. Khi chưa bị phát hiện hoặc chưa kịp vá thì hacker đã chui được vào.

Vậy thì làm thế nào

Để làm những việc nói trên, malware phải được cài vào hệ điều hành, hacker có chui vào theo các lỗ hổng an ninh cũng phải sửa đổi một cái gì đó mới hoạt động được. Vì vậy cách bảo vệ tốt nhất là có một hệ điều hành sạch và không thay đổi được sau mỗi lần khởi động.

UPR là hệ điều hành sạch theo nghĩa nó là phần mềm nguồn mở. Vì vậy có thể “soi” mã nguồn của nó để tin chắc là không có malware nào hoặc cái cổng hậu (backdoor) nào được cố tình cài cắm trong đó. Thực ra để làm được việc đó khá khó và mất nhiều công. Phải tải mã nguồn về, có một đội chuyên gia lập trình giỏi ngồi duyệt mã rồi tự dịch phần mềm từ mã nguồn đã duyệt sang mã máy để dùng, không tải mã dịch sẵn từ Internet xuống.

UPR được ghi trên một đĩa CD chỉ đọc (read-only). Vì vậy không thay đổi được nó. Nó chỉ làm việc trong chế độ live CD: khởi động và chạy từ CD, không cài đặt lên máy. Khác với các bản live CD Linux khác dùng để thử trước tính năng rồi mới cài lên máy, UPR được tối ưu hóa cho chế độ live CD vì đấy là chế độ làm việc duy nhất của nó.

Như vậy, malware không thể cài được vào UPR, hacker cũng không thể sửa đổi gì trong UPR để hoạt động.

Chạy một bản Linux từ đĩa CD read-only để bảo vệ tài khoản khi giao dịch ngân hàng online là một phương pháp được chính thức khuyên dùng (xem thêm tại đâytại đây). Nhưng UPR còn nhiều hơn thế.

2. Mã hóa

Tôi đã mã hóa các dữ liệu cá nhân của tôi…

Mã hóa tốt là một trong những biện pháp quan trọng nhất để bảo vệ dữ liệu. Tuy nhiên:

a/dựa vào riêng phần mềm mã hóa là không đủ an toàn,

Ví dụ, các phần mềm như Microsoft Office hoặc Google Desktop khi mở một file đã mã hóa chứa trong két dữ liệu TrueCrypt thì cũng tạo một bản copy không mã hóa của file đó trên ổ cứng.

b/ các phần mềm malware có thể làm giảm độ an toàn, thậm chí đánh lừa được các phần mềm mã hóa.

Phần mềm trojan có thể chờ lúc bạn mở két dữ liệu TrueCrypt mới chui vào lấy file gửi đi. Phần mềm keyloggers có thể ghi các phím bạn đã gõ, trong đó có cả mật khẩu của khóa mã bí mật GPG của bạn rồi gửi nó đi cùng với khóa mã đó. Người nhận được mật khẩu và khóa mã bí mật sẽ tha hồ đọc các dữ liệu đã mã hóa của bạn.

Tóm lại là mã hóa cũng chưa thật sự an toàn nếu có mặt malware. UPR vừa thực hiện mã hóa mạnh, vừa cách ly để malware không có mặt trong hệ thống.

Trong UPR đã cài sẵn hai phần mềm mã hóa nguồn mở tốt nhất hiện nay là TrueCrypt (xem thêm tại đây) và GnPG (xem thêm tại đây).

Để phù hợp với chế độ live CD, trong UPR còn có tính năng extended Truecrypt volumes để tiện sử dụng hơn.

3. Không kết nối mạng

Các đường kết nối mạng là nơi: a/ malware từ ngoài thâm nhập vào máy tính và b/ malware từ trong máy tính gửi dữ liệu lấy cắp được ra ngoài.

Tất nhiên để tránh điều đó, bạn có thể rút dây mạng ra khi làm việc. Nhưng còn các kiểu kết nối mạng khác có thể bị tự động kích hoạt mà user không biết và tắt nó đi không phải việc dễ dàng với user bình thường.

Vì vậy, UPR đã sửa nhân Linux để tắt tất cả các kết nối mạng: LAN (mạng cục bộ), WLAN (Wireless Local Area Network, mạng cục bộ wifi), Bluetooth, IR (kết nối hồng ngoại) và PPP (Point to Point Protocol, giao thức kết nối điểm – điểm).

Tất nhiên không có mạng thì … Nhưng UPR không phải hệ điều hành dùng cho các công việc bình thường. Nó chỉ được dùng khi bạn có nhu cầu bảo vệ các dữ liệu cá nhân quan trọng và không có mạng là cái giá phải trả.

Nếu bạn muốn có một hệ điều hành tương đối an toàn mà vẫn vào Internet được, xin chờ Google Chrome OS.

4. Không ổ cứng.

Giống như kết nối mạng, các ổ cứng trên máy tính mà bạn chạy bản UPR ở chế độ live CD có thể là: a/ nguồn chứa các malware sẽ xâm nhập vào bộ nhớ RAM của UPR và khi đã hoạt động, b/ nó có thể ghi các dữ liệu lấy cắp được ra các ổ cứng đó.

Khi chạy một hệ Linux thường từ đĩa CD, các ổ cứng có thể bị mount ngẫu nhiên hoặc do user vụng về không biết, nhấn chuột nhầm chẳng hạn. Nếu trên ổ cứng có các swap partition sẵn thì nó luôn được tự động mount và dữ liệu riêng tư có thể bị lưu lên đó.

Vì vậy, nhân Linux của UPR được sửa để khi boot nó hoàn toàn không nhận được các ổ cứng SATA và ATA do đó không mount được các ổ trên dù cố tình.

Riêng ổ cứng SCSI thì vẫn có thể mount được vì cần để mount các ổ USB. Nhưng trong các máy tính cá nhân hiện nay hầu như không có ổ cứng SCSI.

5. Những vấn đề mà UPR không thể bảo vệ bạn được.

Chẳng có cái gì đảm bảo an ninh tuyệt đối. Dưới đây là những tình huống tấn công mà UPR không thể bảo vệ bạn được:

1. Các kiểu tấn công dưới mức hệ điều hành.

Ví dụ có một thiết bị do thám chuyên dụng được lắp vào trong máy tính để ghi lại các phím đã gõ (hardware keyloggers).

2. Các kiểu tấn công không phải tin học.

Ví dụ trong phòng có một camera soi màn hình, bàn phím và ghi lại toàn bộ hình ảnh, hoạt động. Hoặc bạn dùng một mật khẩu mã hóa tồi có thể đoán được (ngày sinh, biển số xe, …).

3. Phân tích các bức xạ máy tính.

Các thiết bị điện tử, đặc biệt là màn hình máy tính, đều phát ra các sóng điện từ. Dùng một thiết bị thu thích hợp có thể thu được các sóng đó ngay cả từ khoảng cách trên 100m. Có thể thu ảnh màn hình máy tính và cho hiện lên ở một màn hình thứ hai ở xa. Gần đây, viện nghiên cứu công nghệ Thụy sỹ đã chứng minh rằng ngay cả sóng điện từ yếu của bàn phím có dây cũng có thể thu được từ một khoảng cách thích hợp và từ đó biết được nội dung đã gõ. Các loại bàn phím không dây, mã hóa yếu thì rõ ràng không thích hợp để gõ các dữ liệu nhạy cảm.

4. Tấn công kiểu “Khởi động nguội”

Khởi động nguội ( Cold Boot Attack) là kiểu tấn công khi một máy tính đang chạy một hệ điều hành nhỏ (minimal OS) thì bị cắt điện rồi lại bật lại (không clean shutdown hay restart bằng phần mềm). Vì hệ điều hành nhỏ nên nó không dùng hết bộ nhớ RAM, phần RAM còn lại có thể chứa các dữ liệu riêng tư của bạn như khóa mã TrueCrypt hoặc GPG. Thực nghiệm chứng tỏ các dữ liệu đó vẫn đọc được từ RAM sau 2-3 phút không có điện.

Nếu trong khoảng thời gian đó, một hệ điều hành khác có malware được khởi động, thì rất có thể nó sẽ đọc được khóa mã còn lưu trong RAM nếu RAM không bị ghi đè.

Từ phiên bản UPR 8.04 release 3, trong quá trình shutdown, bộ nhớ còn trống sẽ bị ghi đè trước khi ổ CD mở.

6. Dùng thế nào

Website không hướng dẫn cụ thể cách dùng. Nhưng có lẽ phải dùng kết hợp với một ổ USB để ghi dữ liệu. Khi đã khởi động xong UPR, cắm ổ USB vào rồi dùng TrueCrypt để tạo nên một ổ mã hóa kiểu extended Truecrypt volumes trong một file để vừa lưu các settings của các phần mềm, vừa lưu dữ liệu. Tất nhiên là cái ổ USB đó phải giữ gìn, không cắm linh tinh vào các máy khác.

Ghi chép về bảo mật Gmail (và các webmail khác)

Ghi chép về bảo mật cho Gmail (và các webmail khác).

( Tiếp theo bài Ghi chép về mã hóa, một số khái niệm về mã hóa cần xem trước trong bài đó)

Gửi, nhận email hoặc dùng webmail (Gmail, Yahoo Mail, …) hoặc dùng một phần mềm email client (KMail, Evolution, Thunderbird, Outlook, Outlook Express, …). Bảo mật cho chúng về cơ bản vẫn là mã hóa và chữ ký số với các công cụ như đã nói ở bài trước.

1. Bảo mật cho webmail

a- Bảo mật cho mật khẩu

Nếu người khác biết hoặc lấy được mật khẩu hộp thư của bạn, họ sẽ dễ dàng xem trộm thư, gửi thư mang tên bạn. Vì vậy mật khẩu là cái cần bảo vệ đầu tiên.

Gmail, Yahoo Mail và Hotmail đều có chế độ đăng nhập https://, tức là mã hóa, bảo mật được mật khẩu truyền từ trình duyệt lên máy chủ mail. Nếu mật khẩu truyền đi không mã hóa (http://), nó dễ dàng bị xem trộm dọc đường truyền.

Mật khẩu có thể bị xem trộm ngay trên máy của bạn. Mật khẩu khi lưu trong settings của trình duyệt (nếu chọn chế độ nhớ mật khẩu) có thể bị đọc trộm bởi người (dùng các cách đã nói ở đây) hoặc bởi spyware nếu không chọn chế độ lưu dùng master password. Khi gõ mật khẩu, phần mềm trojan lẩn trong máy trạm có thể ghi lại được và gửi về cho hacker. Vì vậy tốt nhất là không chọn chế độ lưu mật khẩu và tránh các phần mềm có thể bị cài trojan như đã nói ở đây.

b- Bảo mật cho thư trên đường truyền từ máy trạm đến máy chủ thư.

Gmail có thể thiết lập trong settings để luôn làm việc với https, kể cả khi nhận và gửi thư, tức là thư gửi từ trình duyệt lên máy chủ Gmail và nhận từ máy chủ về đều được mã hóa trên đường truyền giữa trình duyệt và máy chủ. Yahoo Mail và Hotmail khi đăng nhập dùng https, khi vào đến màn hình thư lại chuyển sang chế độ http. Như vậy, thư gửi/nhận giữa trình duyệt và máy chủ không được mã hóa (?).

c- Bảo mật cho thư tại máy chủ thư và truyền đi nơi khác.

Không ai biết thư gửi từ máy chủ các dịch vụ mail đó đến máy chủ nơi nhận có được mã hóa hay không. Nếu không, tức là thư có thể bị xem trộm trên đường truyền giữa các máy chủ mail gửi và nhận.

Thư lưu trên máy chủ của Gmail chắc chắn là dưới dạng không mã hóa vì Gmail dùng phần mềm scan nội dung thư của khách hàng, tìm ra các từ khóa để có thể cho hiện các nội dung quảng cáo phù hợp ở bên phải màn hình thư. Yahoo Mail và Hotmail chắc cũng thế. Đây là cái giá bạn trả cho các dịch vụ miễn phí: cho phép phần mềm đọc thư của bạn. Nhưng như vậy, về nguyên tắc, nhân viên của Gmail cũng có thể đọc thư của bạn.

Vì thư lưu không mã hóa, nếu hacker xâm nhập được vào máy chủ thư (như đã xẩy ra với Gmail và với hệ thống thư của bộ Quốc phòng Mỹ gần đây), chúng sẽ dễ dàng sao chép và đọc thư. Không có máy chủ nào, ngay cả của bộ Quốc phòng Mỹ, có thể đảm bảo là không bị hack.

d- Thư mạo danh hoặc bị thay đổi nội dung

Điểm yếu cuối cùng là các thư của các dịch vụ nói trên đều không có chữ ký số. Vì vậy không có gì để xác định thư gửi từ zxc232@Gmail.com có đúng là từ đó gửi đi không và còn nguyên bản không. Thư không có chữ ký số rất có thể là một thư mạo danh hoặc đã bị thay đổi nội dung trên đường truyền.

2. FireGPG

Hai extension của Firefox: FireGPGgWebs MailCloak cho phép ký và mã hóa các webmail. FireGPG tích hợp vào Gmail nhưng cũng có thể dùng cho các webmail khác, chạy được trên Windows, Linux và MacOS. MailCloak dùng được cho cả Gmail, Yahoo Mail và Hotmail, không có bản cho Linux và vẫn còn trong giai đoạn thử nghiệm.

Khi đã ký và mã hóa được thư thì các nhược điểm nói ở trên của webmail sẽ được khắc phục hoàn toàn.

FireGPG dựa trên phần mềm nguồn mở GPG (xem giải thích tại đây) để: mã hóa, giải mã, ký và kiểm tra chữ ký đối với thư Gmail.

Để cài, mở trang này (bản trong kho của Firefox có lỗi), nhấn vào nút Download FireGPG. Khi xuất hiện cảnh báo ở đầu trang “ Firefox prevented this site …” nhấn vào nút Allow để cho phép cài.

CHÚ Ý: FireGPG cập nhật không kịp với Firefox. Bản trên trang chủ là FireGPG 0.7.10 (thời điểm viết bài này) tôi thử làm việc tốt với OpenSUSE 11.2, Firefox 3.5.9 và Linux Mint 8, Firefox 3.5.8. Các bản Linux mới hơn với Firefox 3.6 đều bị báo lỗi, nhưng vẫn có cách sử dụng được.

a- Tạo bộ khóa mã mới.

Nếu trên máy chưa có bộ khóa mã nào thì cần tạo mới một bộ. Cách tạo dưới đây dùng FireGPG nhưng cũng có thể dùng các phần mềm khác như Seahorse, Kleopatra.

Cài xong FireGPG, khởi động lại Firefox sẽ xuất hiện màn hình hướng dẫn từng bước. Nhấn vào nút Next đi tới màn hình sau:

Màn hình trên cho biết trên máy bạn đã có cài phần mềm GnuPG. Thư mục mặc định để lưu các khóa mã là thư mục Home của bạn. Nếu muốn bảo vệ khóa kín đáo hơn, có thể nhấn vào Set a home dir để quy định một thư mục khác. Nhấn tiếp vào Next.


Hệ thống mã hóa PGP làm việc với một cặp khóa: khóa mã bí mật (private key) và khóa mã công khai (public key). Hình trên thông báo bạn chưa có khóa bí mật nào trong vòng chìa khóa (keyring) và đưa ra hai cách: Tạo một cặp khóa (Generate a private key and a public key) hoặc Nhập một khóa bí mật đã có sẵn dưới dạng một file nằm trong một thư mục trên máy của bạn (Import a private key).

Nhấn vào Generate để tạo mới một cặp khóa, màn hình sau xuất hiện:


Trong màn hình trên, lần lượt nhập tên, địa chỉ email, password. Tuổi thọ của cặp khóa có thể là vô hạn (đánh dấu chọn The key never expires) hoặc hữu hạn (nhập số năm, tháng, ngày vào ô Key expires in …).

Phải biết password đã khai ở trên mới sử dụng được private key sau này.

Nếu chọn mục Advanced options, còn có thể quy định chiều dài khóa Key length (1024, 2048 và 4096 bit, càng dài càng khó phá) và kiểu khóa (thuật toán) Key type: DSA (chữ ký số) và El Gamal (mã hóa dùng hai khóa) hoặc RSA (mã hóa dùng hai khóa). Mặc định khóa dài 2048 bit và dùng cặp thuật toán DSA & El Gamal.

Nhấn vào nút Generate key để bắt đầu tạo cặp khóa. Việc này phải mất một lúc, có thể làm treo Firefox và liệt luôn cả máy tính (tạm thời). Trong lúc đó nên làm một việc gì khác trên máy để tăng tính ngẫu nhiên cho khóa.

Khi khóa được tạo xong, màn hình sau xuất hiện:

Nhấn nút OK, màn hình sau xuất hiện:

Hàng chữ đỏ bên trên cho biết FireGPG chưa kết nối được với máy chủ gửi thư của Gmail (smtp.gmail.com). Trong các phần dưới cho biết kết nối được mã hóa (Use SSL) và dùng cổng 465. Nếu muốn có thể quy định một máy chủ gửi thư khác.

Nhấn nút Next đi tới màn hình sau:

Màn hình này cho biết đã kết nối được với máy chủ gửi thư (SMTP server). Có thể chọn sẵn một số option mặc định ở đây.


Màn hình trên chọn sẵn một số option chung của FireGPG. Để nguyên rồi nhấn Next đến màn hình kết thúc.


b-Gửi khóa công khai

Người giao dịch cần có khóa công khai của bạn để:

  • Mã hóa thư gửi cho bạn.

  • Kiểm tra chữ ký của bạn trong thư bạn gửi cho họ.

Vì vậy cần có một cách nào đó gửi khóa công khai cho họ. Trong màn hình Key manager trên:

Export to server: xuất khóa công khai của bạn lên máy chủ khóa (key server) pgp.mit.edu để ai cần mã hóa văn bản gửi cho bạn hoặc kiểm tra chữ ký của bạn cũng có thể lấy được khóa đó.

Export to file: xuất khóa công khai (public key) thành một file rồi gửi kèm file đó theo thư cho người cần đến. Nhấn vào nút này, màn hình sau xuất hiện:

Quy định tên file và thư mục chứa file rồi nhấn nút Save.

c- Viết thư có chữ ký số hoặc mã hóa thư.

Hình dưới đây là màn hình soạn thảo thư của Gmail sau khi đã cài FireGPG.

Nếu FireGPG tích hợp tốt với Gmail không bị báo lỗi thì sẽ xuất hiện các chức năng như trong hình trên: Sign (ký số vào thư), Encrypt (mã hóa thư), Encrypt a file and attach (mã hóa một file đính kèm), With a signature (mã hóa, ký một file đính kèm),..

Nếu bị báo lỗi ở đáy màn hình khi soạn thư “Gmail support seems broken” thì các tính năng trên không xuất hiện nhưng vẫn dùng được bằng cách khác, thủ công hơn. Các webmail khác (Yahoo, Hotmail, …) không được tích hợp FireGPG nên cũng không xuất hiện các chức năng trên nhưng vẫn làm thủ công được.

Ký thư bằng chữ ký số: nhấn vào chữ Sign, biểu tượng bên trái đang từ mờ sẽ được tô màu vàng. Nhấn nút Send để gửi thư đi. Một màn hình xuất hiện cho chọn private key (nếu bạn có nhiều cái), sau khi chọn màn hình thứ hai xuất hiện yêu cầu nhập passphrase, nhập password đã khai ở phần trước rồi OK, thư sẽ được gửi đi.

Nơi nhận sẽ nhận được thư kèm chữ ký số. Cách kiểm tra chữ ký xem phần sau.

Mã hóa thư gửi đi: Để mã hóa thư gửi cho ai đó, trước hết phải có public key của người đó.

Public key đó có thể được người nhận gửi đến cho bạn dưới dạng một file kèm theo email. Download file key đó, ghi nó vào một thư mục nào đó rồi dùng chức năng Import from file của Key Manager nhập khóa vào keyring. Để mở Key Manager: trong Firefox vào menu Tools -> FireGPG -> Key Manager.

Nếu người nhận đã gửi public key của mình lên một trong những máy chủ khóa (key server), trong màn hình Key Manager, nhấn vào Import from server ta có màn hình sau:

Gõ vào ô Search tên người nhận rồi nhấn nút Search. Các khóa tìm được sẽ xuất hiện (một người có thể có nhiều khóa), chọn những cái cần rồi nhấn nút Import selected keys để nhập chúng vào keyring trên máy của bạn.

Sau khi viết thư xong: nhấn vào chữ Encrypt, biểu tượng bên trái thành màu vàng. Nhấn nút Send, quá trình lặp lại như trên.

Nếu FireGPG có lỗi không hiển thị được chữ Encrypt trong Gmail, hay trong các webmail khác mà FireGPG không được tích hợp, vẫn mã hóa được mail làm như sau:

Bôi đen nội dung thư cần mã hóa, nhấn phím phải chuột vào vùng bôi đen rồi chọn trong menu con FireGPG → Encrypt. Một màn hình xuất hiện để chọn public key của người nhận. Chọn xong nhấn OK, màn hình sau xuất hiện:

Nhấn nút Copy to clipboard and close rồi quay lại màn hình soạn thư, nhấn phím phải chuột và chọn Paste. Toàn bộ nội dung đã mã hóa ở trên sẽ được dán đè lên nội dung thư đã soạn. Nhấn nút Send để gửi thư đi.

Trên đây chỉ lướt qua cách dùng đơn giản. FireGPG còn nhiều tính năng và cách dùng hay.

Update (9/6/2010): FireGPG vừa ra phiên bản cuối 0.8 và tác giả tuyên bố bỏ tính năng tích hợp với Gmail và ngừng phát triển tiếp vì không có thời gian. Trừ phần tích hợp với Gmail, các tính năng nói trên vẫn sử dụng được kể cả với Gmail nhưng phải làm thủ công hơn như đã nêu.

3. Hushmail

Hushmail là một dịch vụ thư miễn phí khắc phục được phần nào các nhược điểm bảo mật đã nêu ở mục 1 và cách dùng cũng đơn giản hơn FireGPG (kiếm tiền bằng dịch vụ Premium):

  • Hushmail mã hóa thư trên đường truyền giữa máy trạm và máy chủ theo giao thức https.

  • Thư lưu trên ổ cứng máy chủ Hushmail cũng được mã hóa. Do đó không ai đọc được thư đó, kể cả hacker.

  • Thư gửi giữa một địa chỉ Hushmail này cho một địa chỉ Hushmail khác được mã hóa cả nội dung thư và file đính kèm. Như vậy thư trao đổi giữa hai địa chỉ Hushmail thì an toàn, nhưng gửi ra ngoài hoặc nhận từ ngoài Hushmail vào thì không.

  • Thư gửi từ Hushmail có chữ ký số, tránh được thư mạo danh.

Các trường hợp sau thì Hushmail cũng không an toàn:

  • Các thư phạm pháp có lệnh của tòa án Canada buộc Hushmail tiết lộ nội dung cho cơ quan điều tra.

  • Hacker chiếm quyền điều khiển máy chủ Hushmail, dùng phần mềm mã hóa để giải mã thư. (Nếu hacker chỉ xâm nhập máy chủ Hushmail thì không copy hoặc đọc thư được).

  • Máy tính của bạn bị nhiễm virus (key logger) hoặc bị hacker điều khiển.

  • Có lỗ hổng an ninh trong các phần mềm của Hushmail hoặc phần mềm trên máy tính của bạn để hacker lợi dụng.

(còn tiếp về các email client: Kmail, Evolution, Thunderbird,…)

Ghi chép về mã hóa (sửa, bổ xung)

Ghi chép về mã hóa.

(Mọi bản ghi chép công bố trên blog này đều là ghi chép cá nhân nhặt nhạnh trên Internet để tìm hiểu sâu hơn đôi chút một vấn đề. Thông tin trong đó có thể sai theo hiểu biết hạn chế của tác giả.)

Mã hóa là gì

Xét ví dụ một bảng mã hóa (mật mã) đơn giản, các chữ cái chuyển thành một cặp số cột – hàng:

1

2

3

4

5

1

A

B

C

D

E

2

F

G

H

I/J

K

3

L

M

N

O

P

4

Q

R

S

T

U

5

V

W

X

Y

Z

Theo bảng này, từ “TAN CONG” sẽ được mã hóa (encryption) là: 44 11 33 31 43 33 22. Dãy số này được gọi là mật mã của từ TAN CONG.

Người không có bảng mã trên, đọc hàng số đó sẽ không hiểu gì. Người có bảng mã sẽ giải mã (decryption) được hàng số đó thành từ “tan cong”. Bảng mã nói trên là một dạng thuật toán mã hóa.

Mã hóa là việc dùng một thuật toán mã hóa và một hoặc nhiều khóa mã biến đổi thông tin có nghĩa (plaintext – văn bản) thành chuỗi ký tự vô nghĩa (ciphertext – mật mã). Chỉ những người biết thuật toán và có khóa mã mới giải mã thông tin đã mã hóa thành thông tin có nghĩa.

Hệ thống mã hóa: gồm thuật toán (hàm toán học) để mã hóa, các khóa mã và các thủ tục (protocol) để thực hiện quá trình mã hóa.

Mã hóa “mạnh” và “yếu”: mã hóa được chia thành 2 loại. Mã hóa yếu chỉ có mục đích hạn chế người bình thường không đọc được nội dung, mã hóa mạnh thì ngay cả các siêu máy tính có thể phải mất hàng chục năm hay lâu hơn mới phá mã được nếu không có khóa mã.

Mã hóa dùng một khóa mã bí mật (symmetric key technique)

Trong kỹ thuật mã hóa này, người gửi và người nhận thông tin có cùng một khóa mã duy nhất. Người gửi dùng khóa mã, mã hóa thông tin rồi gửi đi. Người nhận dùng cũng khóa mã đó để giải mã thông tin và đọc.

Vì chỉ có một khóa mã và dùng chung nên kỹ thuật mã này còn có nhiều tên khác nhau như : symmetric-key, secret-key, single-key, shared-key, one-key, và private-key. Dưới đây ta sẽ gọi là khóa chung.

Hình 2.1: Mã hóa dùng một khóa mã bí mật

Loại khóa này tương tự như những khóa thông thường chỉ có một chìa. Chỉ có thể đóng, mở khóa bằng những chìa giống hệt nhau.

Chuẩn mã hóa quốc gia đầu tiên của Mỹ (và cũng được sử dụng rộng rãi trên toàn thế giới) là DES (Data Encryption Standard) dùng khóa mã đối xứng dài 56 bit. Sau khi được công bố năm 1976, đến năm 1999 mật mã này bị phá trong 22 giờ 15 phút, dùng cách vét cạn (brute force): dò thử tất cả 70,000,000,000,000,000 tổ hợp ký tự của khóa 56 bit.

Về nguyên tắc để dò một số lượng lớn khóa mã như vậy phải có một siêu máy tính cực nhanh. Tuy nhiên năm 1997, dự án DESCHALL Project dùng thời gian rỗi của hàng nghìn máy tính trên Internet đã phá được DES, dành giải thưởng $10,000 của RSA Security .

Hiện nay, DES được coi là không đủ an toàn và thay bằng AES (Advanced Encryption Standard) công bố năm 2002 với khóa mã dài 128, 192 hoặc 256 bit. Ngoài ra còn các chuẩn mã hóa một khóa khác như Twofish, Serpent, AES (Rijndael), Blowfish, CAST5, RC4, TDES, IDEA.

Ưu nhược điểm: nhanh, rất phù hợp nếu thông tin mã hóa không phải chuyển đi đâu (chỉ dùng cho một người).

Nếu thông tin mã hóa phải chuyển qua mạng cho một người thứ hai đọc, nhất là trên khoảng cách xa, khó khăn chính là phải chuyển được khóa mã cho người nhận một cách bí mật (phân phối khóa). Nếu trong quá trình chuyển khóa mã, một bên thứ ba có thể sao chép được khóa mã đó thì họ cũng có thể chặn bắt thông tin đã mã hóa và dùng khóa mã giải mã dễ dàng.

Mã hóa dùng hai khóa mã: khóa mã công khai và khóa mã bí mật. (asymmetric key techniques)

Để tránh được nhược điểm về phân phối khóa nói trên người ta dùng phương thức mã hóa có hai khóa mã (còn gọi là mã hóa không đối xứng – asymmetric key techniques) mới xuất hiện năm 1975.

Loại mã hóa này có hai khóa mã: một khóa mã công khai (public key) dùng để mã hóa và một khóa bí mật (private key) dùng giải mã.

Xét ví dụ tương tự: A định gửi một bức thư mật cho B. Các bước tiến hành như sau:

  • A yêu cầu B gửi chìa khóa công khai của B đến cho A. Vì là chìa công khai nên B có thể gửi qua bưu điện, nhờ người khác, thậm chí treo ở một nơi công cộng v.v… mà không cần giữ bí mật.

  • A viết thư, bỏ vào một cái hòm có hai chìa khóa khác nhau. Chìa công khai của B được dùng để khóa hòm đó lại rồi hòm được gửi qua bưu điện.

  • Chìa công khai của B, ai cũng có thể có một bản sao nhưng chìa công khai chỉ dùng để khóa, không dùng mở được. Do đó trên đường vận chuyển, người thứ ba không mở được.

  • B nhận được hòm, dùng chìa khóa bí mật của B để mở hòm. Khi đã khóa bằng chìa công khai của B thì chỉ có thể mở được bằng chìa bí mật của B, người khác không có chìa bí mật này không thể mở được.

Hình 3.1: Mã hóa dùng khóa công khai và khóa bí mật

Điểm hay của cách làm này là cái khóa mã công khai không cần dấu diếm. Cách làm tương tự khi muốn nhận email bí mật như sau:

  • B dùng phần mềm tạo ra một bộ khóa mã riêng cho mình gồm một khóa công khai (public key) và một khóa bí mật (private key). Bộ khóa mã này gắn liền với một địa chỉ email của B.

  • Khóa bí mật được cất giữ cẩn thận trên máy tính của B. Khóa công khai có thể gửi kèm theo email cho A hoặc gửi vào một máy chủ công cộng trên Internet kèm theo địa chỉ email, bất kỳ ai muốn gửi mật thư cho B đều có thể vào máy chủ đó tải bản sao khóa công khai của B về.

  • Người gửi (A) soạn thư, dùng khóa mã công khai của B để mã hóa bức thư đó rồi gửi cho B. Trên đường truyền dù có ai chặn xem thư cũng không thể đọc được vì thư đã bị mã hóa, không có khóa bí mật không giải mã được.

  • Khi thư đến máy tính của người nhận (B), người nhận dùng khóa mã bí mật và phần mềm giải mã để giải mã bức thư.

Cách mã hóa này có hai ưu điểm:

  • Hai người trao đổi thông tin mật cho nhau không cần có thỏa thuận trước. Nếu một người có địa chỉ email kèm một khóa công khai gửi trên một máy chủ Internet, bất kỳ người nào nếu cần đều có thể tải khóa công khai đó về tạo một mật thư gửi cho địa chỉ email đó, không cần quen biết, thỏa thuận gì trước.

  • Không cần có một phương thức phân phối khóa mã tin cậy và bí mật. Để đàm bảo bí mật, khóa mã kiểu gì cũng phải định kỳ thay đổi. Trước đây, dùng hệ thống mã hóa một khóa, các ngân hàng, bộ ngoại giao phải cử người đi khắp thế giới để giao khóa mã mới rất mất thì giờ và tốn kém.

Thuật toán mã hóa hai khóa phổ biến hiện nay là RSA.

Hàm băm mật mã (Cryptographic Hash function – CHF)

Khái niệm hàm băm (hash function) khác với khái niệm hàm băm mật mã (cryptographic hash function). Dưới đây ta chỉ xét khái niệm thứ hai và gọi tắt là hàm băm.

Định nghĩa: CHF là một thuật toán xác định, áp dụng vào một khối dữ liệu có chiều dài bất kỳ để tính ra được một một chuỗi bit có chiều dài cố định (128 bits,256 bits, …) gọi là trị số băm (hash value) sao cho khi dữ liệu thay đổi dù chỉ một bit thì khi tính lại trị số băm sẽ thay đổi và do đó, mỗi khối dữ liệu sẽ có một trị số băm duy nhất.

Hiểu nôm na, một khối dữ liệu có một trị số băm duy nhất tương tự như số chứng minh với một người. Điểm khác biệt là khi người đó chỉ rụng một sợi tóc thì khi tính lại trị số băm cũng thay đổi.

Tại sao lại dùng từ “băm”: để tính trị số băm, thường dữ liệu được chia nhỏ (băm) ra thành nhiều phần rồi áp dụng một thuật toán tính nào đó.

Một hàm băm lý tưởng sẽ có các tính chất sau:

  • Dễ dàng tính trị số băm với bất kỳ khối dữ liệu nào.

  • Từ trị số băm không thể tính ngược ra khối dữ liệu (hàm một chiều).

  • Không thể thay đổi khối dữ liệu (dù chỉ một bit) mà không làm thay đổi trị số băm.

  • Không thể có hai khối dữ liệu khác nhau mà có cùng một trị số băm.

Dùng làm gì:

  • Xác nhận tính toàn vẹn của dữ liệu sau khi truyền qua mạng: các file cài đặt một bản Linux (iso) được đặt trên Internet kèm theo trị số băm md5. Sau khi tải file về, tính lại md5 của file đã tải, nếu giống với trị số đã cho trước tức là file tải về nguyên vẹn, giống hoàn toàn như file đặt trên Internet, không bị lỗi (thiếu, sai) khi download. Một email, một file được gửi qua mạng cùng với trị số băm ban đầu của nó để người nhận kiểm tra tương tự.

  • Dùng trong chữ ký số (xem phần dưới)

  • Kiểm tra password: một phần mềm tạo ra password rồi lưu giữ không phải dưới dạng nguyên bản đọc được mà dưới dạng trị số băm của password đó (để tránh bị hacker xâm nhập lấy cắp). Khi user khai password, password đó được tính trị số băm và so sánh với trị số đã lưu.

  • ….

Hai hàm băm hiện được dùng rộng rãi là MD5 và SHA-1. SHA-1 là chuẩn của Mỹ và được xem như an toàn hơn MD5.

Chữ ký số (digital signatures)

Một chữ ký số đặt vào một văn bản điện tử cũng có công dụng tương tự như một chữ ký tay vào văn bản giấy:

  • Nó xác nhận rằng văn bản đúng là do người ký phát hành.

  • Người đã ký cũng không thể phủ nhận là mình không phát hành văn bản đó vì chỉ người đó mới có chữ ký số đó. Chữ ký tay có thể bắt chước giả mạo được, nhưng chữ ký số thì không. Cũng không thể tách chữ ký số ra khỏi một văn bản và gán nó vào văn bản khác.

  • Chữ ký số còn một công dụng nữa mà chữ ký tay không có là nó xác thực văn bản gốc vẫn nguyên vẹn không bị sửa đổi trên đường truyền. Văn bản giấy mà bị cạo sửa tinh vi thì chắc phải dùng máy móc chuyên dụng mới phát hiện được.

Hình 5.1: Chữ ký số

Quá trình tạo và kiểm tra chữ ký số cũng dùng kỹ thuật mã hóa hai khóa nhưng ngược với cách mã hóa đã nói ở trên, gồm 3 thuật toán:

  • Một thuật toán tạo khóa tạo ra một cặp khóa bí mật và công khai theo các số ngẫu nhiên như đã mô tả ở trên.

  • Một thuật toán tạo chữ ký số: từ một văn bản và một khóa bí mật tạo ra một chữ ký số và chèn nó vào văn bản. Văn bản trở thành văn bản đã ký. Trong hình bên trái của Hình 5.1, trị số băm của văn bản được tính sau đó mã hóa bằng khóa bí mật của người ký tạo thành chữ ký số của người đó. Nếu dùng dịch vụ chữ ký số của một nhà cung cấp thì có kèm theo một giấy chứng nhận (certificate) của nhà cung cấp đó. Tất cả được chèn vào văn bản tạo thành văn bản đã ký (Digital signed data)

  • Một thuật toán kiểm tra dùng văn bản đã ký, khóa công khai của người ký để xác thực chữ ký đúng là của người ký. Trong hình bên phải của Hình 5.1, từ văn bản đã ký tách riêng phần văn bản và chữ ký. Sau đó tính trị số băm của văn bản, dùng khóa công khai của người ký để giải mã chữ ký số và tách ra trị số băm gốc đã kèm trong chữ ký đó ở bước trên. Nếu hai trị số băm trùng nhau thì chữ ký đúng. (và văn bản đúng nguyên bản gốc không bị thay đổi trên đường truyền).

Hai hệ thống chữ ký số phổ biến hiện nay là RSADSA.


PGP – một hệ thống mã hóa hỗn hợp.

PGP (Pretty Good Privacy) là một hệ thống mã hóa hỗn hợp, kết hợp những ưu điểm của hai hệ thống mã hóa một khóa và hai khóa nêu trên, do Phillip Zimmermann sáng tạo ra năm 1991.

Các bước phần mềm PGP thực hiện:

  • Nén dữ liệu chưa mã hóa lại. Việc nén này làm giảm thời gian truyền qua mạng và tiết kiệm ổ cứng nhưng tác dụng chính là tăng cường an ninh. Phần lớn các kỹ thuật phá mã (cryptanalysis) tìm kiếm các mẫu ký tự giống nhau trong dữ liệu đã mã hóa để dò ra khóa mã. Khi nén, số các mẫu giống nhau đó giảm xuống tối thiểu, sẽ khó dò hơn rất nhiều.

  • Tạo khóa mã bí mật dùng một lần (session key). Khóa mã này là một số ngẫu nhiên được tạo ra dựa trên chuyển động ngẫu nhiên của chuột và các phím ngẫu nhiên đã gõ. (TrueCryp dùng cách tạo khóa này, nhưng không phải dùng một lần, xem ở đây).

  • Mã hóa dữ liệu đã nén: Dùng khóa mã vừa tạo và một thuật toán mã hóa một khóa nhanh và tin cậy để mã hóa dữ liệu đã nén. Kết quả là dữ liệu được mã hóa (từ plaintext thành cyphertext). Để giải mã cũng vẫn dùng session key. Hai bước 2,3 dữ liệu được mã hóa bằng kỹ thuật mã hóa một khóa bí mật đã nói ở trên.

  • Mã hóa khóa mã session key: dùng khóa công khai của người nhận (public key) để mã hóa khóa bí mật dùng một lần (session key). Kết quả có được session key đã mã hóa.

  • Gửi dữ liệu đến người nhận: Gửi đồng thời cả dữ liệu đã mã hóa (cyphertext) và session key đã mã hóa cho người nhận.

  • Người nhận giải mã theo ba bước: dùng private key của mình để giải mã session key. Khi đã có session key, dùng nó để giải mã dữ liệu. Sau đó dữ liệu được giải nén để có thể đọc được. Ba bước đó phần mềm PGP tự làm. Như vậy trong các bước 4,5,6 session key được mã hóa dùng kỹ thuật mã hóa hai khóa.

Hình 6.1: PGP mã hóa và gửi đi ở máy tính người gửi

Hình 6.2: PGP giải mã trên máy tính người nhận

Trên đường truyền, người thứ ba có thể chặn, sao chép được dữ liệu đã mã hóa và session key đã mã hóa. Tuy nhiên, muốn giải mã được dữ liệu phải giải mã được session key, mà session key chỉ giải mã được bằng private key lưu ở máy tính người nhận. Session key lại là số ngẫu nhiên và quá lớn nên không thể dò bằng cách vét cạn các tổ hợp ký tự được.

Năm 1997, PGP trở thành chuẩn gọi là OpenPGP. Hầu hết các chương trình email hiện nay đều hỗ trợ chuẩn này.

Tổ chức Phần mềm Tự do (Free Software Foundation) đã xây dựng một phần mềm tự do, nguồn mở tương thích với OpenGPG gọi là GNU Privacy Guard (viết tắt GnuPG hoặc GPG) và một số phần mềm đồ họa dùng thư viện GnuGPG để mã hóa, giải mã và ký số ( KGPG, Seahorse, MacGPG).

Chứng chỉ số (public key certificate, digital certificate, security certificate hoặc identity certificate)

Nếu hai người đã biết nhau thì khi trao đổi thư mật mã chỉ cần gửi cho nhau khóa mã công khai là đủ.

Nhưng khi liên lạc với một người, một tổ chức mà mình không biết thì cần phải có một bên thứ ba tin cậy xác nhận đó đúng là người, tổ chức như họ đã xưng danh.

Cũng tương tự như khi gặp nhau bình thường thì danh thiếp là đủ, nhưng giao dịch ngân hàng thì phải đưa chứng minh thư (do công an cấp và xác nhận).

Chứng chỉ số là một file trong đó có:

  • Serial Number: số xác định duy nhất cho chứng chỉ.

  • Subject: tên người, tổ chức, thực thể (một địa chỉ email?) được cấp chứng chỉ.

  • Signature Algorithm: thuật toán để tạo chữ ký.

  • Issuer: tổ chức (công ty) cấp chứng chỉ (sau khi đã kiểm tra thông tin về đối tượng được cấp).

  • Valid-From: Ngày có hiệu lực của chứng chỉ.

  • Valid-To: Ngày hết hạn chứng chỉ.

  • Key-Usage: mục đích sử dụng mã khóa công khai (ví dụ để mã hóa hay để ký).

  • Public Key: mã khóa công khai của đối tượng được cấp chứng chỉ.

  • Thumbprint Algorithm: thuật toán dùng tạo trị số băm cho chứng chỉ.

  • Thumbprint: chữ ký số của tổ chức cấp chứng chỉ để kiểm tra, xác nhận rằng chứng chỉ đúng là do tổ chức đó cấp và không bị thay đổi.

Hình dưới đây là chứng chỉ số của site mail.google.com do công ty Thawte cấp:

Như vậy, chứng chỉ số giống chứng minh thư: có tên người được cấp và các thông tin về người đó cùng với tên, chữ ký, dấu của cơ quan cấp (công an). Tất cả những cái đó dùng để xác thực đối tượng được cấp chứng minh thư.

Điểm khác với chứng minh thư là người (hoặc phần mềm) nhận chứng chỉ số của một người khác phải:

  • Kiểm tra chữ ký số của cơ quan cấp xem có đúng là do cơ quan đó cấp không.

  • Kiểm tra trị số băm của chứng chỉ xem chứng chỉ có bị thay đổi không.

  • Kiểm tra xem chứng chỉ còn hạn sử dụng không (cái này giống CMT).

  • Dùng khóa công khai của người có chứng chỉ để tạo văn bản mật gửi cho họ (nếu cần).

Tất cả những việc trên do phần mềm làm và làm rất nhanh.

Như vậy một chứng chỉ số = chứng minh thư + 1 chìa khóa.

Hai cách cấp chứng chỉ số:

  • Chứng chỉ do một cơ quan, công ty chuyên môn, có uy tín về cấp chứng chỉ số (Thawte, Verisign, …) cấp. Mỗi chứng chỉ chỉ có một chữ ký xác nhận duy nhất của cơ quan cấp chứng chỉ (hoặc cấp dưới được ủy quyền của họ). Cách này có tên là public key infrastructure (PKI) theo chuẩn X.509. Chứng chỉ số có thể cấp có phí hoặc miễn phí.

  • Chứng chỉ do nhiều người khác đã từng giao dịch với người có chứng chỉ đó ký xác nhận. Cách này gọi là web of trust (mạng lưới tin cậy) dựa trên hệ thống mã hóa PGP, GPG hoặc các hệ thống khác dùng chuẩn OpenPGP.


Kênh thông tin an toàn trên Internet

Khi dùng Internet, máy tính người dùng thiết lập một kênh trao đổi thông tin với một đối tác liên lạc: một địa chỉ web, một địa chỉ email, một máy fax Internet, một nickname chat, một username để nói chuyện qua VoIP v.v…

Khi đó xuất hiện hai vấn đề liên quan đến an ninh, bảo mật:

  • Đối tác liên lạc có đúng là người mà ta định liên lạc không?

  • Quá trình trao đổi thông tin có bị “nghe trộm” không?

Giao thức xác thực và mã hóa SSL (Secure Socket Layer) thế hệ sau của nó là TLS (Transport Layer Security) giải quyết hai vấn đề trên.

Hoạt động như sau (giả sử liên lạc với công ty ZXC có domain zxc.com):

Kết nối qua cổng dành riêng: Phần mềm máy trạm (trình duyệt web, trình thư điện tử, …) kết nối với phần mềm máy chủ tương ứng (web server, mail server, …) qua cổng dành riêng cho giao dịch an toàn. Ví dụ: cổng duyệt web thường là 80 (giao thức http), cổng dành riêng là 443 (giao thức https), cổng nhận thư POP thường là 110 (giao thức POP3), cổng dành riêng là 995 (giao thức POP3S), v.v…

Thống nhất bộ mã hóa: Phần mềm máy trạm cũng gửi tới máy chủ một danh sách các bộ mã hóa mà nó hỗ trợ. Phần mềm máy chủ chọn một bộ mã hóa mạnh nhất mà nó cũng hỗ trợ, thông báo cho máy trạm biết để thống nhất dùng trong phiên liên lạc đó.

Xác thực đối tác liên lạc: Máy chủ sẽ gửi chứng chỉ số của công ty ZXC (trong đó có khóa mã công khai của công ty) về cho máy trạm.

Kiểm tra chứng chỉ số:

  • Nếu chứng chỉ do một công ty cấp chứng chỉ số (ví dụ Thawte) cấp, nó được mã hóa bằng khóa bí mật của Thawte. Phần mềm máy trạm dùng khóa công khai của Thawte để giải mã được thì chứng tỏ chứng chỉ đó đúng do Thawte cấp. Sau đó có thể vào site của Thawte để kiểm tra xem trong danh sách công ty có công ty ZXC không.

  • Nếu các thông tin khác (thời hạn hiệu lực của chứng chỉ, địa chỉ domain, …) đều hợp lệ thì phiên liên lạc sẽ tiếp tục. Đến đây, vấn đề 1 nói trên được giải quyết, người dùng biết chắc là đang giao dịch với máy chủ của công ty ZXC.

Tạo khóa mã chung: máy trạm dựa trên một số ngẫu nhiên tạo một khóa mã chung, mã hóa nó bằng khóa mã công khai của máy chủ và gửi cho máy chủ. Khóa này chỉ dùng trong một phiên kết nối, đến phiên sau lại tạo khóa khác, vì vậy nó còn được gọi là session key.

Máy chủ dùng khóa mã bí mật của nó giải mã khóa mã chung nói trên. Từ thời điểm đó, mọi thông tin trao đổi giữa máy trạm và máy chủ được mã hóa bằng khóa mã chung đó, tức là dùng kỹ thuật mã hóa một khóa. Thông tin đã được mã hóa bằng một khóa mã chỉ có máy trạm và máy chủ biết vì vậy không thể bị đọc trộm trên đường truyền. Vấn đề 2 nói trên được giải quyết.

Như vậy giao thức SSL và TLS giải quyết hai vấn đề: nó xác thực đối tác liên lạc và mã hóa thông tin trao đổi. Về mặt an ninh, hai giao thức này tương đương nhau (xem thêm).

Hầu hết các dịch vụ Internet đều có thể dùng SSL/TLS: truy cập web đến các site webmail hoặc ngân hàng, mua bán trên mạng (HTTPS), gửi nhận email (POPS, IMAPS, SMTPS), v.v…

Điều kiện để dùng được kênh an toàn là máy chủ phải được cài đặt để hỗ trợ kênh đó ở dịch vụ cần thiết và phải có chứng chỉ số hợp lệ.

Truy cập web an toàn.

Đây là trường hợp riêng của kênh thông tin Internet an toàn đã nói ở trên. Kênh mở trang web an toàn dùng giao thức HTTPS (Hypertext Transfer Protocol Secure) là kết hợp của giao thức mở trang web thông thường HTTP (HyperText Transfer Protocol) và giao thức xác thực, mã hóa SSL/TLS.

Khi vào trang web bằng kênh thông thường ta gõ: http://www.zxc.com

Khi vào trang web bằng kênh an toàn: https://www.zxc.com

Việc đầu tiên, trang web sẽ gửi chứng chỉ số của nó (security certificate) để trình duyệt kiểm tra.

Nếu chứng chỉ do một cơ quan cấp tin cậy mà trình duyệt biết (Thawte, Verisign, …) và các mục khác trong chứng chỉ đều hợp lệ thì kết nối an toàn được thiết lập và trang web sẽ được tải về xuất hiện trong trình duyệt.

Nếu chứng chỉ không hợp lệ (invalid): cơ quan cấp vô danh, sai tên đối tượng (chứng chỉ cấp cho www.zxa.com), hết hạn, … trình duyệt (Firefox) sẽ cho xuất hiện thông báo kiểu như sau:

Trong ví dụ trên, trình duyệt không biết (unknown) cơ quan cấp (issuer) chứng chỉ nên chứng chỉ bị coi là không hợp lệ (invalid).

Khi mở một trang web trong máy chủ của mạng LAN, chứng chỉ do máy chủ cấp chứng chỉ của công ty bạn cấp thì thường gặp thông báo trên. Nhưng vì ta biết chứng chỉ đó hợp lệ nên có thể nhấn vào dòng Or you can add an exception (bạn có thể bổ xung một ngoại lệ) để bảo trình duyệt chấp nhận chứng chỉ đó.

Khi việc xác thực đối tác liên lạc bằng trang web đã xong (chứng chỉ được xác nhận là hợp lệ), kênh kết nối an toàn giữa trình duyệt và máy chủ web được thiết lập. Mọi dữ liệu truyền qua lại trên kênh đó đều được mã hóa: trang web được mã hóa truyền xuống trình duyệt, trình duyệt giải mã và cho hiển thị; username, password và nội dung soạn thảo (email chẳng hạn) do bạn gõ vào đều được trình duyệt mã hóa trước khi chuyển cho máy chủ web. Nếu có người “xem trộm” chặn sao chép các thông tin đó trên đường truyền thì cũng không thể đọc được trừ khi phá được mật mã.

Trong Firefox, khi đã mở một trang web bằng kênh an toàn, vd: https://mail.google.com, nhấn chuột vào biểu tượng ở bên trái thanh địa chỉ ta sẽ có màn hình thông tin sau:

Mục đầu cho biết bạn đang kết nối với đúng google.com mà không phải một site mạo danh nào khác. Mục thứ hai cho biết chủ nhân của google.com là không rõ (unknown) vì khi xin cấp chứng chỉ, công ty Google không khai mục này, lẽ ra nó phải là Google Inc. Mục thứ ba cho biết việc xác nhận ở mục đầu do công ty Thawte thực hiện. Mục cuối cùng thông báo kết nối được mã hóa để tránh xem trộm trên đường truyền.

Nhấn vào More Information còn nhiều thông tin khác.

Cần nhấn mạnh là kết nối bằng kênh an toàn chỉ đảm bảo hai điều: đến đúng địa chỉ và dữ liệu truyền trên kênh được mã hóa ngăn xem trộm trên đường truyền. Password Gmail của bạn vẫn có thể bị lấy trộm bởi một mallware keylogger, bị đọc trộm nếu lưu bất cẩn trong cache trình duyệt, v.v… Tóm lại vấn đề an ninh trình duyệt còn rộng lớn hơn rất nhiều.

Không phải website nào cũng truy cập được bằng https. Thường chỉ những site có trao đổi thông tin cá nhân (webmail) hoặc nhạy cảm (mua bán, ngân hàng) mới hỗ trợ chế độ này.

Gửi nhận email an toàn

Cái này để dành một bài khác.

Phá mật mã

Ngành mật mã học có hai nhánh: cryptographic chuyên nghiên cứu cách mã hóa, giải mã và cryptanalysis chuyên nghiên cứu cách phá mã khi không biết khóa mã và thuật toán mã.

Một trong những cách phá mã đơn giản nhất là dò khóa mã (brute force) bằng cách thử tất cả các tổ hợp ký tự có thể (vét cạn). Với một khóa mã 128 bit, số khóa có thể là 2128 xấp xỉ bằng 3×1038 (38 số không). Nếu một máy tính có khả năng kiểm tra được 1018 khóa trong một giây thì cũng phải mất 1013 năm (gấp một nghìn lần tuổi vũ trụ!). Đấy là lý thuyết.

Thực tế nếu password của bạn chỉ gồm toàn chữ cái, lại ngắn, trùng với tên, ngày sinh của vợ, v.v… thì việc dò nhanh hơn nhiều. Một số site sau khi nhập ba lần mật khẩu không đúng, không cho nhập nữa là để tránh những phần mềm dò mật khẩu tự động. Một số địa chỉ email bắt buộc phải có cả chữ và số là để tránh dò địa chỉ gửi thư rác.

Ngoài cách trên còn hàng chục cách khác cùng với phần mềm, máy tính để phá mã!

Bản thân các thuật toán, phần mềm mã hóa cũng có thể có các điểm yếu, lỗ hổng an ninh bị khai thác để phá mã. Tháng 8/2009, một lỗ hổng an ninh đã được phát hiện ra trong giao thức SSLv3 và TLS.

Về nguyên tắc cái gì do con người tạo ra thì con người cũng có thể tìm cách phá được. Cũng như virus và các vấn đề an ninh khác, đây là cuộc rượt đuổi bất tận giữa bên xây và bên phá không bao giờ kết thúc.

Tuy nhiên, chúng ta sống bằng niềm tin vào “an ninh tương đối”. Hệ thống cửa và khóa cửa nhà bạn “chẳng là cái đinh gì” đối với những tay trộm cao thủ. Nhưng chẳng ai vì thế mất ăn mất ngủ gia cường ba bốn lớp cửa với hàng chục cái khóa. Đơn giản là vì sác suất trộm viếng nhà bạn không cao và những tay cao thủ thì nhằm vào nhà các đại gia hoặc ngân hàng hiệu quả hơn!

Ghi chép về mã hóa 1

Ghi chép về mã hóa 1

(Mọi bản ghi chép công bố trên blog này đều là ghi chép cá nhân nhặt nhạnh trên Internet để tìm hiểu sâu hơn đôi chút một vấn đề. Thông tin trong đó có thể sai theo hiểu biết hạn chế của tác giả.)

1-Mã hóa là gì

Xét ví dụ một bảng mã hóa (mật mã) đơn giản, các chữ cái chuyển thành một cặp số (cột,hàng):

1

2

3

4

5

1

A

B

C

D

E

2

F

G

H

I/J

K

3

L

M

N

O

P

4

Q

R

S

T

U

5

V

W

X

Y

Z

Theo bảng này, từ “TAN CONG” sẽ được mã hóa (encryption) là: 44 11 33 31 43 33 22

Người không có bảng mã trên, đọc hàng số đó sẽ không hiểu gì. Người có bảng mã sẽ giải mã (decryption) được hàng số đó thành từ “tan cong”. Bảng mã nói trên là một dạng thuật toán mã hóa.

Mã hóa là việc dùng một thuật toán mã hóa và một hoặc nhiều khóa mã biến đổi thông tin có nghĩa (plaintext) thành chuỗi ký tự vô nghĩa (ciphertext – mật mã). Chỉ những người biết thuật toán và có khóa mã mới giải mã thông tin đã mã hóa thành thông tin có nghĩa.

Hệ thống mã hóa: gồm thuật toán (hàm toán học) để mã hóa, các khóa mã và các thủ tục (protocol) để thực hiện quá trình mã hóa.

Mã hóa “mạnh” và “yếu”: mã hóa được chia thành 2 loại. Mã hóa yếu chỉ có mục đích hạn chế người bình thường không đọc được nội dung, mã hóa mạnh thì ngay cả các siêu máy tính có thể phải mất hàng chục năm hay lâu hơn mới phá mã được nếu không có khóa mã.

2-Mã hóa dùng một khóa mã bí mật (symmetric key techniques)

Trong kỹ thuật mã hóa này, người gửi và người nhận thông tin có cùng một khóa mã duy nhất. Người gửi dùng khóa mã, mã hóa thông tin rồi gửi đi. Người nhận dùng cũng khóa mã đó để giải mã thông tin và đọc.

Vì chỉ có một khóa mã và dùng chung nên kỹ thuật mã này còn có nhiều tên khác nhau như : symmetric-key, secret-key, single-key, shared-key, one-key, và private-key

Hình 2.1: Mã hóa dùng một khóa mã bí mật

Loại khóa này tương tự như những khóa thông thường chỉ có một chìa. Chỉ có thể đóng, mở khóa bằng những chìa giống hệt nhau.

Chuẩn mã hóa quốc gia đầu tiên của Mỹ (và cũng được sử dụng rộng rãi trên toàn thế giới) là DES (Data Encryption Standard) dùng khóa mã đối xứng dài 56 bit. Sau khi được công bố năm 1976, đến năm 1999 mật mã này bị phá trong 22 giờ 15 phút, dùng cách vét cạn (brute force): dò thử tất cả 70,000,000,000,000,000 tổ hợp ký tự của khóa 56 bit.

Về nguyên tắc để dò một số lượng lớn khóa mã như vậy phải có một siêu máy tính cực nhanh. Tuy nhiên năm 1997, dự án DESCHALL Project dùng thời gian rỗi của hàng nghìn máy tính trên Internet đã phá được DES, dành giải thưởng $10,000 của RSA Security .

Hiện nay, DES được coi là không đủ an toàn và thay bằng AES (Advanced Encryption Standard) công bố năm 2002 với khóa mã dài 128, 192 hoặc 256 bit. Ngoài ra còn các chuẩn mã hóa một khóa khác như Twofish, Serpent, AES (Rijndael), Blowfish, CAST5, RC4, TDES, IDEA.

Ưu nhược điểm: nhanh, rất phù hợp nếu thông tin mã hóa không phải chuyển đi đâu (chỉ dùng cho một người).

Nếu thông tin mã hóa phải chuyển qua mạng cho một người thứ hai đọc, nhất là trên khoảng cách xa, khó khăn chính là phải chuyển được khóa mã cho người nhận một cách bí mật (phân phối khóa). Nếu trong quá trình chuyển khóa mã, một bên thứ ba có thể sao chép được khóa mã đó thì họ cũng có thể chặn bắt thông tin đã mã hóa và dùng khóa mã giải mã dễ dàng.

3-Mã hóa dùng hai khóa mã: khóa mã công khai và khóa mã bí mật. (asymmetric key techniques)

Để tránh được nhược điểm về phân phối khóa nói trên người ta dùng phương thức mã hóa có hai khóa mã (còn gọi là mã hóa không đối xứng) mới xuất hiện năm 1975.

Loại mã hóa này có hai khóa mã: một khóa mã công khai (public key) dùng để mã hóa và một khóa bí mật (private key) dùng giải mã.

Xét ví dụ tương tự: A định gửi một bức thư mật cho B. Các bước tiến hành như sau:

  • A yêu cầu B gửi chìa khóa công khai của B đến cho A. Vì là chìa công khai nên B có thể gửi qua bưu điện, nhờ người khác, thậm chí treo ở một nơi công cộng v.v… mà không cần giữ bí mật.

  • A viết thư, bỏ vào một cái hòm có hai chìa khóa khác nhau. Chìa công khai của B được dùng để khóa hòm đó lại rồi hòm được gửi qua bưu điện.

  • Chìa công khai của B, ai cũng có thể có một bản sao nhưng chìa công khai chỉ dùng để khóa, không dùng mở được. Do đó trên đường vận chuyển, người thứ ba không mở được.

  • B nhận được hòm, dùng chìa khóa bí mật của B để mở hòm. Khi đã khóa bằng chìa công khai của B thì chỉ có thể mở được bằng chìa bí mật của B, người khác không có chìa bí mật này không thể mở được.

Hình 3.1: Mã hóa dùng khóa công khai và khóa bí mật

Điểm hay của cách làm này là cái khóa mã công khai không cần dấu diếm. Cách làm tương tự khi muốn nhận email bí mật như sau:

  • B dùng phần mềm tạo ra một bộ khóa mã riêng cho mình gồm một khóa công khai (public key) và một khóa bí mật (private key). Bộ khóa mã này gắn liền với một địa chỉ email của B.

  • Khóa bí mật được cất giữ cẩn thận trên máy tính của B. Khóa công khai có thể gửi kèm theo email cho A hoặc gửi vào một máy chủ công cộng trên Internet kèm theo địa chỉ email, bất kỳ ai muốn gửi mật thư cho B đều có thể vào máy chủ đó tải bản sao khóa công khai của B về.

  • Người gửi (A) soạn thư, dùng khóa mã công khai của B để mã hóa bức thư đó rồi gửi cho B. Trên đường truyền dù có ai chặn xem thư cũng không thể đọc được vì thư đã bị mã hóa, không có khóa bí mật không giải mã được.

  • Khi thư đến máy tính của người nhận (B), người nhận dùng khóa mã bí mật và phần mềm giải mã để giải mã bức thư.

Cách mã hóa này có hai ưu điểm:

  • Hai người trao đổi thông tin mật cho nhau không cần có thỏa thuận trước. Nếu một người có địa chỉ email kèm một khóa công khai gửi trên một máy chủ Internet, bất kỳ người nào nếu cần đều có thể tải khóa công khai đó về tạo một mật thư gửi cho địa chỉ email đó, không cần quen biết, thỏa thuận gì trước.

  • Không cần có một phương thức phân phối khóa mã tin cậy và bí mật. Để đàm bảo bí mật, khóa mã kiểu gì cũng phải định kỳ thay đổi. Trước đây, dùng hệ thống mã hóa một khóa, các ngân hàng, bộ ngoại giao phải cử người đi khắp thế giới để giao khóa mã mới rất mất thì giờ và tốn kém.

4-Hàm băm mật mã (Cryptographic Hash function – CHF)

Khái niệm hàm băm (hash function) khác với khái niệm hàm băm mật mã (cryptographic hash function). Dưới đây ta chỉ xét khái niệm thứ hai và gọi tắt là hàm băm.

Định nghĩa: CHF là một thuật toán xác định, áp dụng vào một khối dữ liệu có chiều dài bất kỳ để tính ra được một một chuỗi bit có chiều dài cố định (128 bits,256 bits, …) gọi là trị số băm (hash value) sao cho khi dữ liệu thay đổi dù chỉ một bit thì khi tính lại trị số băm sẽ thay đổi và do đó, mỗi khối dữ liệu sẽ có một trị số băm duy nhất.

Hiểu nôm na, một khối dữ liệu có một trị số băm duy nhất tương tự như số chứng minh với một người. Điểm khác biệt là khi người đó chỉ rụng một sợi tóc thì khi tính lại trị số băm cũng thay đổi.

Tại sao lại dùng từ “băm”: để tính trị số băm, thường dữ liệu được chia nhỏ (băm) ra thành nhiều phần rồi áp dụng một thuật toán tính nào đó.

Một hàm băm lý tưởng sẽ có các tính chất sau:

  • Dễ dàng tính trị số băm với bất kỳ khối dữ liệu nào.

  • Từ trị số băm không thể tính ngược ra khối dữ liệu (hàm một chiều).

  • Không thể thay đổi khối dữ liệu (dù chỉ một bit) mà không làm thay đổi trị số băm.

  • Không thể có hai khối dữ liệu khác nhau mà có cùng một trị số băm.

Dùng làm gì:

  • Xác nhận tính toàn vẹn của dữ liệu sau khi truyền qua mạng: các file cài đặt một bản Linux (iso) được đặt trên Internet kèm theo trị số băm md5. Sau khi tải file về, tính lại md5 của file đã tải, nếu giống với trị số đã cho trước tức là file tải về nguyên vẹn, giống hoàn toàn như file đặt trên Internet, không bị lỗi (thiếu, sai) khi download. Một email, một file được gửi qua mạng cùng với trị số băm ban đầu của nó để người nhận kiểm tra tương tự.

  • Dùng trong chữ ký số (xem phần dưới)

  • Kiểm tra password: một phần mềm tạo ra password rồi lưu giữ không phải dưới dạng nguyên bản đọc được mà dưới dạng trị số băm của password đó (để tránh bị hacker xâm nhập lấy cắp). Khi user khai password, password đó được tính trị số băm và so sánh với trị số đã lưu.

  • ….

5-Chữ ký số (digital signatures)

Một chữ ký số đặt vào một văn bản điện tử cũng có công dụng tương tự như một chữ ký tay vào văn bản giấy:

  • Nó xác nhận rằng văn bản đúng là do người ký phát hành.

  • Người đã ký cũng không thể phủ nhận là mình không phát hành văn bản đó vì chỉ người đó mới có chữ ký số đó. Chữ ký tay có thể bắt chước giả mạo được, nhưng chữ ký số thì không. Cũng không thể tách chữ ký số ra khỏi một văn bản và gán nó vào văn bản khác.

  • Chữ ký số còn một công dụng nữa mà chữ ký tay không có là nó xác thực văn bản gốc vẫn nguyên vẹn không bị sửa đổi trên đường truyền. Văn bản giấy mà bị cạo sửa tinh vi thì chắc phải dùng máy móc chuyên dụng mới phát hiện được.

Hình 5.1: Chữ ký số

Quá trình tạo và kiểm tra chữ ký số cũng dùng kỹ thuật mã hóa hai khóa nhưng ngược với cách mã hóa đã nói ở trên, gồm 3 thuật toán:

  • Một thuật toán tạo khóa tạo ra một cặp khóa bí mật và công khai theo các số ngẫu nhiên như đã mô tả ở trên.

  • Một thuật toán tạo chữ ký số: từ một văn bản và một khóa bí mật tạo ra một chữ ký số và chèn nó vào văn bản. Văn bản trở thành văn bản đã ký.
    Trong hình bên trái của Hình 5.1, trị số băm của văn bản được tính sau đó mã hóa bằng khóa bí mật của người ký tạo thành chữ ký số của người đó. Nếu dùng dịch vụ chữ ký số của một nhà cung cấp thì có kèm theo một giấy chứng nhận (certificate) của nhà cung cấp đó. Tất cả được chèn vào văn bản tạo thành văn bản đã ký (Digital signed data)

  • Một thuật toán kiểm tra dùng văn bản đã ký, khóa công khai của người ký để xác thực chữ ký đúng là của người ký. Trong hình bên phải của Hình 5.1, từ văn bản đã ký tách riêng phần văn bản và chữ ký. Sau đó tính trị số băm của văn bản, dùng khóa công khai của người ký để giải mã chữ ký số và tách ra trị số băm gốc đã kèm trong chữ ký đó ở bước trên. Nếu hai trị số băm trùng nhau thì chữ ký đúng. (và văn bản đúng nguyên bản gốc không bị thay đổi trên đường truyền).

Hai hệ thống chữ ký số phổ biến hiện nay là RSA DSA.


6-PGP – một hệ thống mã hóa hỗn hợp.

PGP (Pretty Good Privacy) là một hệ thống mã hóa hỗn hợp, kết hợp những ưu điểm của hai hệ thống mã hóa một khóa và hai khóa nêu trên, do Phillip Zimmermann sáng tạo ra năm 1991.

Các bước phần mềm PGP thực hiện:

  • Nén dữ liệu chưa mã hóa lại. Việc nén này làm giảm thời gian truyền qua mạng và tiết kiệm ổ cứng nhưng tác dụng chính là tăng cường an ninh. Phần lớn các kỹ thuật phá mã (cryptanalysis) tìm kiếm các mẫu ký tự giống nhau trong dữ liệu đã mã hóa để dò ra khóa mã. Khi nén, số các mẫu giống nhau đó giảm xuống tối thiểu, sẽ khó dò hơn rất nhiều.

  • Tạo khóa mã bí mật dùng một lần (session key). Khóa mã này là một số ngẫu nhiên được tạo ra dựa trên chuyển động ngẫu nhiên của chuột và các phím ngẫu nhiên đã gõ. (TrueCryp dùng cách tạo khóa này, nhưng không phải dùng một lần, xem ở đây).

  • Mã hóa dữ liệu đã nén: Dùng khóa mã vừa tạo và một thuật toán mã hóa một khóa nhanh và tin cậy để mã hóa dữ liệu đã nén. Kết quả là dữ liệu được mã hóa (từ plaintext thành cyphertext). Để giải mã cũng vẫn dùng session key. Hai bước 2,3 dữ liệu được mã hóa bằng kỹ thuật mã hóa một khóa bí mật đã nói ở trên.

  • Mã hóa khóa mã session key: dùng khóa công khai của người nhận (public key) để mã hóa khóa bí mật dùng một lần (session key). Kết quả có được session key đã mã hóa.

  • Gửi dữ liệu đến người nhận: Gửi đồng thời cả dữ liệu đã mã hóa (cyphertext) và session key đã mã hóa cho người nhận.

  • Người nhận giải mã theo ba bước: dùng private key của mình để giải mã session key. Khi đã có session key, dùng nó để giải mã dữ liệu. Sau đó dữ liệu được giải nén để có thể đọc được. Ba bước đó phần mềm PGP tự làm. Như vậy trong các bước 4,5,6 session key được mã hóa dùng kỹ thuật mã hóa hai khóa.

Hình 6.1: PGP mã hóa và gửi đi ở máy tính người gửi

Hình 6.2: PGP giải mã trên máy tính người nhận

Trên đường truyền, người thứ ba có thể chặn, sao chép được dữ liệu đã mã hóa và session key đã mã hóa. Muốn giải mã được dữ liệu phải giải mã được session key, mà session key chỉ giải mã được bằng private key lưu ở máy tính người nhận. Session key lại là số ngẫu nhiên và quá lớn nên không thể dò bằng cách vét cạn các tổ hợp ký tự được.

Năm 1997, PGP trở thành chuẩn gọi là OpenPGP. Hầu hết các chương trình email hiện nay đều hỗ trợ chuẩn này.

Tổ chức Phần mềm Tự do (Free Software Foundation) đã xây dựng một phần mềm tự do, nguồn mở tương thích với OpenGPG gọi là GNU Privacy Guard (viết tắt GnuPG hoặc GPG) và một số giao diện đồ họa dùng thư viện GnuGPG để mã hóa, giải mã và ký số ( KGPG, Seahorse, MacGPG)

(còn tiếp)

Mười cách người khác đọc dữ liệu của bạn

Mười cách người khác đọc dữ liệu của bạn.

Zxc232 biên soạn (dựa theo bài này)

Root là user cao cấp nhất, có toàn quyền với toàn bộ hệ điều hành, tương tự như Administrator của Windows. Vì vậy để an toàn (tránh dùng user root rồi xóa nhầm, sửa nhầm linh tinh trong hệ thống) và bảo mật (hạn chế hacker dùng được quyền root), các bản Linux như Mandriva, Ubuntu, … không cho log in với tên root.

Chế độ khởi động bình thường của Linux là multiuser mode (nhiều người dùng chung một máy). Mỗi user có một thư mục Home riêng (/home/username) với toàn quyền trên đó nhưng không đọc được thư mục Home của user khác. Root đương nhiên đọc được thư mục Home của mọi user và đó chính là vấn đề của bài viết này.

Trong chế độ multiuser, các thao tác cần đến quyền root (ví dụ cài phần mềm) đều phải nhập password của root (Mandriva) hoặc password của user thuộc nhóm sudo (Ubuntu) để thực hiện với quyền root. Khi thực hiện xong thao tác đó là hết quyền, hạn chế lạm dụng.

Tuy nhiên, các bản Linux đều có chế độ single user mode đăng nhập vào hệ thống với tên root, thường là không cần password. Chế độ này cần thiết để thực hiện một số thao tác bảo trì, sửa chữa hệ thống nhưng nếu có người truy cập vật lý (physical access) hay nói nôm na là sờ được vào máy của bạn, họ có thể khởi động máy ở chế độ single user mode rồi đọc thoải mái các thư mục Home của mọi user (và còn một số cách khác nêu dưới đây).

Wikipedia đánh giá trường hợp này “ is viewed as a security vulnerability” (được xem như một lỗ hổng an ninh). Hồi mới tập tọng Linux, tôi cũng phát biểu đây là một lỗ hổng an ninh, bị các bậc tiền bối đập cho tơi tả. Nhưng hồi đó mình chưa biết hỏi cụ Gúc để cãi.

Các cách nêu dưới đây cho phép một user làm một trong các việc sau:

  • Log in vào máy ở chế độ single user mode với tên root không cần biết password của root (nếu có).

  • Tạo password mới cho root không cần biết password cũ.

  • Mount một partition trên ổ cứng từ đó đọc được dữ liệu trên partition đó

Vì vậy nó vừa là cách để khôi phục password của root nếu quên, vừa là cách đọc dữ liệu của người khác cần phải đề phòng .

Các vấn đề dưới đây, nếu đi sâu còn phức tạp và còn nhiều cách làm nữa. Tuy nhiên ở đây chỉ giới hạn ở mức tối thiểu phù hợp với người dùng bình thường. Có cách tôi đã thử, có cách chưa, chỉ giới thiệu để biết.

1. Khôi phục password của root.

1.1-Từ Grub menu, khởi động vào chế độ single user mode.

Khi khởi động máy đến lúc Grub menu xuất hiện, chọn chế độ khởi động là recovery mode (Ubuntu) hoặc safe mode (Mandriva). Các chế độ này chính là single user mode.

Các bản Linux khác sẽ khởi động thẳng vào dấu nhắc của root. Riêng Ubuntu và các phiên bản của nó sẽ xuất hiện một menu phụ. Chọn trong đó Drop to root shell prompt để vào dấu nhắc root.

Tại dấu nhắc, gõ lệnh passwd rồi Enter. Tiếp theo, nhập hai lần password mới tùy chọn của root.

1.2-Khởi động vào single user mode khi chế độ đó không có trong Grub menu

Vì nhiều lý do (ví dụ xem phần sau), trong Grub boot có thể không có menu recovery mode hoặc safe mode nhưng vẫn khởi động vào dấu nhắc root được như sau:

Mandriva: khi xuất hiện Grub menu, nhấn F3, chọn Safe trong menu con và Enter. Gõ thêm vào cuối hàng lệnh mới xuất hiện từ single và nhấn Enter.

Ubuntu: khi xuất hiện Grub menu, nhấn phím E rồi dùng phím mũi tên di chuyển con trỏ đến cuối cụm từ quiet splash và gõ thêm từ single vào đó. Nhấn Ctrl+X. Khi menu con xuất hiện, chọn tiếp Drop to root shell prompt.

Hệ thống sẽ khởi động vào chế độ single user mode và xuất hiện dấu nhắc root.

1.3-Khởi động vào dấu nhắc root dùng shell

Nếu single user mode bị disabled hoặc có root password bảo vệ, cũng làm tương tự như mục 1.2-. Nhưng thay cho từ single, thêm init=/bin/bash rồi nhấn phím B để khởi động.

Khi xuất hiện dấu nhắc, gõ lệnh sau rồi Enter để mount root partition ở chế độ read/write:

#mount -no remount,rw / (chú ý cuối lệnh có ký hiệu thư mục gốc /).

Sau đó chạy lệnh passwd để đổi password của root như nói ở 1.1-.

Cách này tôi chưa thử.

1.4-Khởi động từ một hệ thống file khác

Cách này phức tạp nhưng về nguyên tắc thực hiện được. Tải về một bản Linux tối thiểu (search “minimal linux” để tìm, chỉ dưới 50MB) rồi giải nén nó vào một thư mục bạn có quyền ghi (ví dụ /tmp). Sau đó khi khởi động, sửa option root= trỏ vào bản Linux đó. Khởi động xong thì mount partition của bản Linux cũ như nói ở trên.

1.5-Khởi động từ một USB

Hiện nay có rất nhiều cách để cài một bản Linux vào một USB (ví dụ xem tại đây). Ubuntu có công cụ Startup Disk Creator trong System → Administration.

Cắm USB vào máy rồi khởi động. Đến màn hình BIOS, nhấn F12 (hoặc phím nào đó tùy loại mainboard) để chọn khởi động vào Linux cài trên USB.

Khi xuất hiện Grub menu, chọn khởi động vào single user mode như nói ở 1.1- nhưng ở đây là single user mode của bản Linux cài trên USB. Khi xuất hiện dấu nhắc root, chạy lệnh sau để tìm các ổ cứng và partition trên đó:

fdisk -l

Tạo một thư mục mới trên USB (ví dụ thư mục newdir) bằng lệnh sau:

mk /newdir

Sau đó mount partition trên ổ cứng có bản Linux mà ta muốn sửa password của root hoặc muốn đọc vào thư mục đó (ví dụ partition /dev/hda1):

mount -o,rw /dev/hda1 /newdir

Chuyển thư mục newdir thành thư mục gốc bằng lệnh:

chroot /newdir

rồi dùng lệnh passwd để tạo password mới cho root của bản Linux trên ổ cứng như nói ở 1.1-

Nếu chỉ cần xem nội dung các thư mục trên một partition thì có thể làm đơn giản hơn. Khởi động vào bản Linux trên USB bình thường. Sau đó (ví dụ với Ubuntu trên USB) nhấn vào menu Places → Computer rồi nhấn tiếp vào partition ở cột bên trái và đọc nội dung ở cột phải như hình sau:

1.6-Khởi động từ CD

Dùng một đĩa Live CD của một bản Linux nào đó. Khởi động vào bản Live CD đó giống như cách làm với USB ở trên. Sau đó làm tiếp cũng như với USB.

1.7-Khởi động từ mạng LAN

Cách này khó nhưng về nguyên tắc làm được nếu máy nối vào mạng LAN và trên mạng đã có một máy chủ được cấu hình như boot server.

Trước hết phải sửa BIOS để máy boot được từ LAN. Khi đã boot được từ một hệ điều hành trên boot server thì các bước tiếp theo như mục 1.5-.

Nếu BIOS có password bảo vệ mà bạn không biết và do đó không sửa cho máy boot từ LAN được, theo một trong các cách sau:

  • Hỏi cụ Gúc tìm master password của BIOS.

  • Rút ổ cắm nguồn của máy, tháo pin của BIOS ra chờ khoảng 120 giây rồi lắp lại, cắm nguồn khởi động lại máy và load lại default BIOS settings (không có password).

  • Một số mainboard có jumper để reset lại BIOS.

(Chú ý là một số notebook có tính năng an ninh chống reset BIOS).

1.8-Khởi động từ một ổ cứng khác khởi động được.

Dùng một ổ cứng khác khởi động được vào một bản Linux mà bạn làm chủ lắp thêm vào máy, ổ cứng cũ có bản Linux mà ta muốn xem hoặc thay password của root để nguyên. Vào BIOS, đổi ổ mới thành ổ khởi động trước (hoặc nhấn F12 chọn nó khi khởi động máy). Khi khởi động được rồi thì làm tiếp như 1.5-

1.9-Lắp ổ cứng sang một máy khác như ổ cứng phụ

Tháo ổ cứng có Linux mà ta muốn xem hoặc đổi password của root lắp sang một máy khác đã có Linux mà ta làm chủ. Sau đó khởi động máy đó và làm tiếp như nêu ở 1.5-

1.10-Khai thác lỗ hổng an ninh

Nếu một máy đã cài chạy từ lâu hoặc đã lâu không chạy và không có ai bảo trì, cập nhật phần mềm thì rất có thể là nó đang có một lỗ hổng an ninh chưa được vá. Khai thác lỗ hổng đó có thể xâm nhập được hệ thống để xem dữ liệu hoặc đổi password của root.

Cách này dành cho các cao thủ Linux nhưng về nguyên tắc là làm được.

2. Khôi phục username, password của user.

Nếu còn một user khác, log in vào bằng tên user đó rồi dùng User Management để khai lại password mới cho user đã quên password.

Nếu chỉ có một user duy nhất mà quên password:

  • Khi boot máy đến Grub menu, chọn chế độ khởi động là recovery mode (Ubuntu) hoặc safe mode, (Mandriva).

  • Các bản Linux khác sẽ khởi động thẳng vào dấu nhắc của root. Riêng Ubuntu và các phiên bản của nó sẽ xuất hiện một menu phụ. Chọn trong đó Drop to root shell prompt để vào dấu nhắc root.

  • Chạy tiếp lệnh startx để vào màn hình đồ họa. Sau đó vào tiếp User Management để khai lại password.

  • Nếu quên cả username, mở thư mục /home. Tên mỗi thư mục con trong đó là username tương ứng. Ví dụ /home/zxc thì username là zxc.

  • Hoặc không cần chạy startx mà chạy ngay lệnh passwd username để khai password mới. Ví dụ username là zxc lệnh sẽ là passwd zxc.

3. Bảo vệ máy của bạn

Như vậy, nếu máy của bạn người khác có thể sờ vào được (truy cập vật lý) thì có nhiều cách để họ đọc dữ liệu, thay password của root, thay password của chính bạn để bạn không thể đăng nhập vào máy nữa. Đó là chưa kể đến những cách truy cập máy từ Internet không nói đến ở đây.

Các cách bảo vệ dưới đây (cũng như các loại khóa ta dùng trong nhà) có tính tương đối và tùy hoàn cảnh mà áp dụng. Cũng như khóa, có cách dưới đây chỉ chống được trộm vặt, có cách chống được trộm cao cấp, tùy chọn theo nhu cầu của bạn.

3.1-Bảo vệ vật lý máy

Để máy trong tủ, trong phòng có khóa hoặc khi mang đi đâu thì giữ bên mình. Gỡ bỏ các ổ mềm, ổ CD, DVD, đổ keo vào các cổng USB. Chọn mua loại máy có thiết bị bảo vệ phụ bằng vân tay, ảnh chân dung, thẻ mã hóa, v.v….

3.2-Khóa chế độ boot thẳng vào dấu nhắc root.

Trong Ubuntu làm như sau:

  • Khởi động máy vào Recovery Mode rồi chọn Drop to root shell promt như nói ở trên.

  • Tại dấu nhắc lệnh, gõ lệnh passwd rồi Enter.

  • Nhập hai lần password tùy chọn cho root.

Từ lần sau, khi boot vào Recovery mode rồi Drop to root shell promt phải nhập password của root mới vào được hệ thống.

Với Mandriva, tôi chưa tìm ra cách.

Còn một cách nữa là đặt password cho Grub menu (tức là cho trình grub) nhưng hơi phức tạp. Các bản Linux mới nhất có option đặt password này đơn giản hơn. Ví dụ với Mandriva 2010 mở Control Center → Boot → Set up boot system. Tuy nhiên, nếu máy dùng chung thì cách này không có tác dụng bảo vệ thư mục Home của bạn vì người dùng chung vẫn có thể boot vào Single user mode.

Cách thứ ba là dùng quyền root mở file /boot/grub/menu.lst (với Grub1.5 trong Mandriva chẳng hạn) hoặc file /boot/grub/grub.cfg (Ubuntu từ 9.10 trở đi) rồi đánh dấu # vào đầu hàng Recovery mode hoặc safe mode để tắt nó đi. Tuy nhiên, chế độ boot đó không phải là thừa, khi cần đến nó lại phải bật lên cũng mệt.

3.3-Mã hóa dữ liệu

Cách này có vẻ hiệu quả nhất. Nếu dữ liệu đã được mã hóa thì các cách nêu trên có truy cập được vào thư mục cũng không đọc được dữ liệu chứa trong đó, kể cả truy cập vật lý hay truy cập từ Internet. Nhất là các loại ổ USB, ổ cứng ngoài, laptop, netbook dễ bị đánh mất hoặc ăn trộm rất nên dùng. Các công cụ mã hóa cũng rất đa dạng.

Một số bản Linux cho phép tạo thư mục Home mã hóa ngay trong quá trình cài đặt. Trong Ubuntu, vào System → Administration → Disk Utility có thể Format rồi mã hóa cả một partition.

Hoặc mã hóa cao cấp và kỹ lưỡng hơn bằng TrueCrypt xem ở đây.

Tuy nhiên cái gì cũng có giá của nó. Khóa nhiều lớp quá, mật mã phức tạp quá thì khi mở đóng mất nhiều thời gian và nếu đánh mất mật mã thì chết dở.

Mã hoá bảo vệ dữ liệu bằng TrueCrypt

Mã hoá bảo vệ dữ liệu bằng TrueCrypt.

Trong thời buổi mà phần mềm gián điệp (spyware) tung hoành khắp nơi, chả có gì đảm bảo là những file dữ liệu quý báu của bạn không bị nó sao ra một bản gửi về đâu chẳng biết.

Vì vậy cũng giống như sắm một cái két sắt để trong nhà, trên máy tính của bạn cũng nên có một cái két như thế. Khác với két sắt, két dữ liệu có hai lớp bảo vệ: phải mở két bằng mật khẩu mới truy cập được các file ở bên trong, nội dung các file đó lại được mã hoá bằng mật khẩu, phải qua quá trình giải mã mới đọc được.

I. Giới thiệu chung TrueCrypt

Một trong những phần mềm tốt nhất để tạo một két dữ liệu như thế là TrueCrypt với các tính năng chính:

1- Tạo một vùng ổ cứng mã hoá tự động. Có mấy cách tạo:

  • Tạo một ổ cứng ảo bên trong một file rồi mount nó như một ổ cứng thật.

  • Tạo ổ mã hoá trên toàn bộ một partition hoặc trên toàn bộ một ổ cứng trong, ổ cứng ngoài, ổ USB,….

  • Tạo ổ mã hoá trên partition hoặc ổ cứng có cài một hệ điều hành (hiện tại mới hỗ trợ Windows). Trước khi khởi động vào hệ điều hành phải nhập mật khẩu hoặc khoá mã. Tức là mã hóa toàn bộ một hệ điều hành.

2- Dữ liệu được mã/giải mã tự động: được mã hoá rồi mới ghi vào ổ, được giải mã khi đọc từ ổ ra ngoài, hoàn toàn tự động không cần user làm gì. Các quá trình mã/giải mã được thực hiện trong RAM, không một dữ liệu chưa mã hoá nào được ghi vào ổ. Tốc độ mã/giải mã rất nhanh không ảnh hưởng đến hoạt động trên máy. Cách mã/giải mã là cần đến đâu làm đến đấy trong RAM (on-the-fly) nên nhanh và không cần nhiều RAM.

3- Vùng ổ này xuất hiện trong Windows như một ổ D, E, F, …., còn trong Linux được mount vào thư mục /media/truecrypt như các partition khác. Để bảo vệ một file chỉ cần move/copy nó vào ổ hoặc thư mục nói trên, file sẽ tự động được mã hóa trước khi ghi. Khi mở file, nó sẽ được tự động giải mã để đọc được. Trong ổ hoặc thư mục mã hóa đó, có thể làm các thao tác bình thường như với các thư mục thông thường: xóa, tạo thư mục/file mới, đổi tên,…

4- Dữ liệu đã lưu chỉ có thể giải mã nếu có password và/hoặc file khoá mã đúng. Nếu không sẽ không đọc được nội dung file dù có dùng quyền root (toàn các ký tự loằng ngoằng không có nghĩa). Toàn bộ hệ thống file đã lưu vào ổ mã hoá đều được mã hoá (tên file, tên thư mục, nội dung file, các metadata của file và cả các vùng trống, chưa có dữ liệu cũng được mã hoá).

5- Đặc biệt, trong trường hợp bị lộ hoặc bị ép phải khai một mật khẩu, vẫn có thể dấu được dữ liệu bằng nhiều cách: ổ mã hoá bí mật, hệ điều hành bí mật, …(xem chi tiết ở dưới).

6- Chạy được trên Windows 7, Mac OS 10.6 và Linux. Dùng các thuật toán mã hoá mạnh nhất hiện nay AES-256, Serpent, và Twofish. Kiểu hoạt động: XTS.

II. Cài đặt:

Trong các kho phần mềm của PCLinuxOS có sẵn TrueCrypt, Ubuntu và Mandriva thì không có vì cho rằng TrueCrypt không phải PMNM. Bản mới nhất tải về từ đây.(có bản cài cho Windows XP/Vista/7, Mac OS, OpenSUSE, Ubuntu).

Với Ubuntu và Linux Mint, sau khi tải về file truecrypt-6.3a-ubuntu-x86.tar.gz, giải nén thành file truecrypt-6.3a-ubuntu-x86. Mở terminal tại thư mục chứa file đã giải nén rồi chạy lệnh sau để cài:

sudo ./truecrypt-6.3a-ubuntu-x86

Update 5/2/2011: Mandriva và PCLinuxOS hiện cũng cài được như Ubuntu nói trên. Không cần convert phức tạp như dưới đây nữa.

Với Mandriva và PCLinuxOS: phức tạp hơn.

 

Tìm cài từ kho phần mềm các gói sudo, alien, rpm-build .

Cũng tải về file cài đặt dành cho Ubuntu truecrypt-6.3a-ubuntu-x86.tar.gz, giải nén thành file script truecrypt-6.3a-ubuntu-x86. Mở terminal tại thư mục có file giải nén, chạy lần lượt các lệnh:

su

./truecrypt-6.3a-ubuntu-x86

Khi chạy lệnh thứ hai, màn hình cho chọn 2 Installation options, nhập số 2 rồi Enter để giải nén tiếp file script thành file /root/tmp/truecrypt-6.3a-0_i386.deb.

Chạy tiếp lệnh alien -r /root/tmp/truecrypt-6.3a-0_i386.deb

để convert thành file /root/tmp/truecrypt-6.3a-0_i386.rpm

 

Nhấn vào file đó để cài TrueCrypt.

Nhấn menu Install and Remove software, nếu gói sudo chưa cài thì cài.

Nhấn Alt+F2 rồi chạy lệnh kdesu kwrite /etc/sudoers (hoặc gksu gedit /etc/sudoers nếu dùng Gnome)

Khi màn hình kwrite mở file sudoers, tìm đến dòng root ALL=(ALL) ALL thêm vào bên dưới một dòng username ALL=(ALL) ALL, trong đó username là username đang dùng để đăng nhập vào Mandriva.

Đồng thời đánh thêm dấu # ở đầu dòng Default  requiretty để disable nó đi.

Save file rồi đóng kwrite lại.

III. Các bước thiết lập ổ mã hoá:

1- Chạy TrueCrypt (với các bản GNOME từ System → Preferences → TrueCrypt, với Ubuntu chạy từ Applications → Accessories → TrueCrypt, với Mandriva chạy từ Tools → TrueCrypt).

Màn hình chính xuất hiện:


2- Nhấn vào nút Create Volume. Màn hình sau xuất hiện:

3- Trong màn hình trên có hai phương án tạo ổ cứng mã hoá tuỳ chọn:

  • Tạo ổ cứng ảo bên trong một file. File đó sẽ có kích thước tuỳ chọn. Phương án này đơn giản dễ làm dành cho các user bình thường.

  • Tạo ổ cứng mã hoá trên toàn bộ một partition, một ổ cứng thứ hai không cài hệ điều hành, một ổ USB, ….

Giả sử ta chọn phương án 1 rồi nhấn nút Next . Màn hình sau xuất hiện.


4- Màn hình trên cho hai phương án tạo ổ mã hoá trong một file: Ổ mã hoá tiêu chuẩn (Standard) và ổ mã hoá bí mật (Hidden). Ổ bí mật là ổ mã hoá nằm bên trong một ổ mã hoá tiêu chuẩn và có password khác. Nếu buộc phải tiết lộ mật khẩu của ổ mã hoá tiêu chuẩn thì khi mở ổ đó ra cũng không thể phát hiện được ổ bí mật . Dưới đây ta gọi ổ tiêu chuẩn là ổ mã hóa ngoài.

Giả sử ta chọn phương án tạo ổ bí mật rồi nhấn nút Next .


5- Màn hình trên yêu cầu chọn thư mục và file chứa ổ mã hoá. File này có thể nằm trên ổ cứng trong máy, trên ổ cứng ngoài, trên USB,…tùy ý.Nhấn vào nút Select File .


6- Trong màn hình trên, mặc định file nằm ở thư mục Home của user (vdu: /home/zxc). Nếu muốn chuyển sang thư mục khác, nhấn vào hình tam giác nhỏ bên trái chữ Browse for other folders để chọn. Ví dụ nếu trên máy cài nhiều hệ điều hành thì nên để file này vào thư mục trên partition dùng chung.

Nhập tên file (tuỳ ý, muốn bí mật thì đặt một tên file vô nghĩa) chứa ổ mã hoá vào ô Name rồi nhấn nút Save .

(Chú ý: có thể chọn một file có sẵn làm file chứa ổ mã hoá. Nhưng khi đó nội dung file đã có sẽ bị xoá hết.)

Màn hình sẽ quay trở lại màn hình trên với đường dẫn và tên file đã chọn như sau (tên file do ta đặt là TrueCrypt File, thư mục /home/zxc/DATA):


Nhấn tiếp nút Next ta đi tới màn hình sau:

7- Màn hình trên cho chọn thuật toán mã hoá (Encryption Algorithm) và thuật toán băm (Hash Algorithm).

Trong phần mã hóa, nếu muốn có thể chọn các thuật toán mã hóa khác hoặc mã hóa hai, ba lần, mỗi lần bằng một thuật toán (tốc độ mã/giải mã sẽ chậm nhưng độ bảo mật tăng).

Nếu chưa am hiểu nhiều về mã hoá, cứ để nguyên hai thuật toán đã chọn sẵn rồi nhấn nút Next để đi tới màn hình sau:


8- Màn hình trên yêu cầu nhập vào dung lượng ổ mã hoá ngoài (Outer Volume size). Ví dụ nhập 500 MB như trong hình rồi nhấn nút Next .


9- Màn hình trên yêu cầu nhập hai lần password cho ổ mã hoá bên ngoài (Outer Volume Password). Chú ý:

  • Password này là password có thể tiết lộ nếu bị bắt buộc.

  • Password cho ổ bên ngoài nên khác hẳn password cho ổ bí mật bên trong.

  • Chiều dài tối đa của password là 64 ký tự. Tối thiểu nên là 20 ký tự, nếu ngắn hơn sẽ có màn hình cảnh báo, nhấn Yes để chấp nhận.

  • Khi nhập, nếu muốn kiểm tra password đã nhập, đánh dấu mục Display password để password hiển thị dưới dạng đọc được không phải dưới dạng dấu *

  • Nếu muốn chắc chắn nữa thì dùng password phối hợp với keyfile. Xem thêm tại đây.

CHÚ Ý: các password của ổ ngoài và ổ trong nên càng dài, càng phức tạp, càng ngẫu nhiên càng tốt để tránh các chương trình dò tìm password.

Sau khi nhập xong, nhấn nút Next đi tới màn hình sau:


Màn hình này cho chọn định dạng ổ. Nếu chỉ dùng trong Windows thì chọn FAT hoặc NTFS. Nếu chỉ dùng trong Linux thì chọn ext3, ext4, … Nếu trên máy có cả Windows và Linux và định dùng chung ổ mã hóa thì nên chọn NTFS. Chọn xong nhấn Next để tới màn hình:

10- Di chuột lung tung trong màn hình một lúc (càng lâu càng tốt để tăng độ mạnh cho khoá mã). Sau đó nhấn nút Format , quá trình tạo ổ mã hoá bắt đầu. Khi format xong màn hình sau xuất hiện:


Nhập password của Linux user vào đây rồi nhấn OK để đi tới màn hình tiếp như dưới đây.


11- Màn hình trên thông báo cho biết ổ mã hóa bên ngoài đã được tạo xong và sẽ được mount vào thư mục /media/truecrypt1. Trong thư mục này nên lưu các file mật nhưng chưa phải tối mật đề phòng trường hợp phải giao mật khẩu.

Nhấn Open Outer Volume để mở thư mục /media/truecrypt1 hiện còn trống. Nhấn phím phải chuột trong thư mục đó chọn Create Document → Empty File tạo một file bất kỳ rồi quay lại màn hình trên nhấn nút Next. Màn hình sau xuất hiện:


12- Thông báo trên cho biết chương trình đã tính ra dung lượng lớn nhất có thể của ổ mã hóa bí mật (= dung lượng ổ mã hóa ngoài trừ đi dung lượng các file đã có trong ổ mã hóa ngoài).

Nhấn nút Next để tới màn hình chọn thuật toán mã hóa cho ổ bí mật (tương tự như ở bước 6). Để nguyên các lựa chọn mặc định, nhấn Next tiếp để tới màn hình chọn dung lượng ổ bí mật:


13- Màn hình trên cho biết dung lượng tối đa của ổ bí mật do chương trình tính ra là 496MB (trên 500MB dung lượng ổ mã hóa tiêu chuẩn). Ta có thể gõ vào ô trắng ở trên dung lượng lựa chọn rồi nhấn nút Next.

( Mặc dù trong ổ ngoài ta mới chỉ tạo một file có dung lượng =0, nhưng ở đây dung lượng ổ bí mật chỉ cho phép tối đa là 496MB trong khi đáng lẽ phải là 500MB. Đây là do giới hạn của hệ điều hành, không phải lỗi của TrueCrypt)


14- Màn hình trên cho nhập password của ổ bí mật. Password này phải khác password của ổ mã hóa ngoài. Nhập xong thì nhấn Next. đi tới màn hình chọn định dạng cho ổ bí mật


rồi format ổ đó tương tự bước 9 ở trên. Khi format xong, màn hình sau xuất hiện:

15- Màn hình trên thông báo cho biết đã tạo xong ổ bí mật. Ổ này cần phải được bảo vệ (sẽ nói ở phần sau). Khi nhấn OK sẽ xuất hiện màn hình kết thúc. Nếu muốn tạo một ổ mã hóa nữa thì nhấn Next (có thể tạo tối đa 64 ổ mã hóa), nếu không nhấn Exit.

IV. Sử dụng ổ mã hóa

Nếu dùng trình duyệt file (Nautilus, Dolphin,…) mở thư mục đã chọn ở bước 6, ta sẽ thấy file đã tạo với dung lượng đã chọn ở bước 7. File đó chứa ổ mã hóa ngoài và bên trong ổ mã hóa ngoài là ổ mã hóa bí mật.

Để dùng được ổ ngoài hoặc ổ bí mật, trước tiên ta phải mở ổ ngoài bằng password và gắn nó ( mount) vào thư mục /media/truecrypt1. Cách làm như sau:

Chạy lại chương trình TrueCrypt như đã nói ở bước 1. Màn hình sau xuất hiện:

Nhấn nút Select File. Trong màn hình mới, tìm đến thư mục có file mã hóa đã tạo ở trên, chọn file đó rồi nhấn nút Open. Màn hình trên sẽ như sau:

Trong phần trên màn hình, chọn một slot còn trống (các cột còn trắng) rồi nhấn nút Mount. Màn hình nhập password xuất hiện:


Đến đây có ba tình huống:

A- Nếu định dùng ổ ngoài: nhập mật khẩu của ổ ngoài rồi OK. (ổ bí mật sẽ không được mở)

B- Nếu định dùng ổ bí mật: nhập mật khẩu của ổ bí mật rồi OK. (ổ ngoài không mở)

C- Nếu định dùng ổ ngoài, bảo vệ ổ bí mật: nhấn nút Options để có màn hình sau:


Đánh dấu chọn mục Protect hidden volume … (Bảo vệ ổ bí mật khi mount ổ ngoài) như trong hình trên. Mục đích để khi ghi file vào ổ ngoài nếu hết dung lượng, không ghi đè lên ổ bí mật làm hỏng ổ đó.

Nhập password của ổ mã hóa ngoài vào ô trên cùng, password của ổ bí mật vào ô Password to hidden volume rồi nhấn OK.

Trong cả ba tình huồng trên, khi mount xong, slot đã chọn sẽ có thông tin như sau:


Trong hình trên, file mã hóa nằm ở thư mục /home/zxc/DATA, thư mục được mount vào ổ mã hóa ngoài là /media/truecrypt1.

Nhấn nút Exit để thoát màn hình chương trình TrueCrypt. Chương trình vẫn chạy ngầm và có một biểu tượng trên panel.

Mở chương trình duyệt file Nautilus, tìm đến thư mục /media sẽ thấy thư mục truecrypt1 như hình dưới đây:


Thư mục truecrypt1:

  • Sử dụng bình thường như mọi thư mục khác

  • Khi ghi các file vào thư mục đó, file sẽ được mã hóa, khi mở các file trong thư mục đó, file sẽ được giải mã trước khi hiển thị.

  • Dung lượng, nội dung của truecrypt1 chính là dung lượng, nội dung ổ mã hóa ngoài hoặc trong.

  • Nếu trước đó, không làm động tác mount như đã nói ở trên, thư mục truecrypt1 không xuất hiện trong /media. Nếu không mount, sẽ không truy cập được các file đã mã hóa, khi đọc nội dung file mã hóa đã tạo ở bước 6, ví dụ bằng mc sẽ thấy như thế này:

Đó là nội dung ổ đã mã hóa. Không có mật khẩu để giải mã thì nội dung đó là vô nghĩa.

Phần trên là động tác mở két để lấy/cất dữ liệu. Khi dùng xong, muốn đóng két lại thì nhấn đúp vào biểu tượng TrueCrypt trên panel để mở màn hình chính ra rồi nhấn nút Dismount hoặc Dismount All

V. Tại sao lại gọi là ổ mã hóa bí mật

Chỉ có người tạo ra nó, biết nó nằm ở đâu và biết mật khẩu để mở, còn thì không có dấu vết nào trên ổ cứng, không có cách nào để chứng minh là có ổ bí mật và đọc được nội dung của nó kể cả khi biết mật khẩu ổ mã hóa ngoài. Vì vậy nếu quên mật khẩu và/hoặc keyfile là mất dữ liệu.

VI. Kết luận

Các bản Linux lớn hiện nay đều có công cụ để mã hóa thư mục hoặc hệ thống file, thậm chí ngay từ khi cài đặt. Tuy nhiên so với TrueCrypt có một số nhược điểm (dùng giao diện dòng lệnh, tốc độ chậm hơn, không có ổ bí mật, không chọn được thuật toán mã hóa, không tạo ổ dùng chung nhiều hệ điều hành được v.v…).

Bài viết này cũng chỉ giới thiệu cách tạo ổ mã hóa đơn giản nhất dùng file. TrueCrypt còn có thể mã hóa cả một partition hoặc ổ cứng ngoài, sau đó mount tự động hoặc có thể mã hóa cả một hệ điều hành.

Hướng dẫn sử dụng chi tiết tại đây.

// // // //

Ghi chép về an ninh trong Linux

Ghi chép về an ninh trong Linux

I. Khái niệm chung

Trong hoạt động của máy tính, một thực thể có thể cần phải truy cập đến một thực thể khác để thực hiện một hành động nào đó. Ví dụ: một user đọc một file, một chương trình chơi nhạc gọi một chương trình khác để phát âm ra loa, v.v..

Các thực thể thực hiện các hành động đối với các thực thể khác được gọi là chủ thể truy cập (subject). Các thực thể được truy cập gọi là đối tượng truy cập (object). Chủ thể thường là một tiến trình (process) hoặc một mạch tiến trình (thread), đối tượng là file, thư mục, các cổng TCP, các vùng bộ nhớ dùng chung, v.v…

Để đảm bảo an ninh cho hệ thống, việc truy cập không thể tự do, bừa bãi mà cần được kiểm soát. Hệ thống kiểm soát truy cập (Access control systems) thực hiện ba dịch vụ chính: nhận dạng và xác thực ( identification and authenticationI&A), cấp phép ( authorization), và theo dõi ( accountability)

I.1-Xác nhận (Nhận dạng và xác thực – Identification and authentication – I&A)

Một chủ thể truy cập trước hết phải cung cấp một dấu hiệu nhận dạng (identity) hợp lệ (vd: một cặp username và password tối thiểu 6 ký tự chẳng hạn. Nếu chỉ có username, hoặc chỉ có pasword hoặc có cả username và password nhưng password chỉ có 5 ký tự là không hợp lệ). Sau khi kiểm tra là chủ thể có dấu hiệu nhận dạng hợp lệ, quá trình xác thực sẽ so sánh dấu hiệu đó với dấu hiệu đã đăng ký để xác nhận chủ thể đó đúng là nó.

Quá trình đó tương tự như khi ta trình giấy mời vào một cuộc họp quan trọng: đầu tiên người gác cổng phải xem giấy mời có hợp lệ không (đúng mẫu giấy mời, có chữ ký và dấu v.v…) sau đó tra xem tên ghi trên giấy và tên trên chứng minh thư có trùng nhau không và thậm chí tên đó có trong danh sách khách mời không v.v.. Nếu tất cả đều đúng thì ta được xác nhận đúng là người được mời họp và được vào.

I.2- Cấp phép (Authorization)

Việc cấp phép xác định chủ thể được làm những hành động gì trên đối tượng.

Trong các hệ điều hành, quyền của chủ thể trên đối tượng là tổ hợp của ba loại quyền truy cập cơ bản sau:

  • Read (R): chủ thể có thể

    • Đọc nội dung file

    • Đọc (liệt kê) nội dung thư mục

  • Write (W): chủ thể có thể thay đổi nội dung file hoặc thư mục.

  • Execute (X): nếu file là một chương trình, chủ thể có thể chạy chương trình đó.

Cách cấp phép cụ thể tùy theo mô hình (kỹ thuật) kiểm soát truy cập (xem dưới đây).

I.3- Theo dõi (Accountability)

Việc theo dõi các hành động của chủ thể được thực hiện tự động bằng các audit trails (records) và các file log. Dựa vào đó có thể:

  • Phát hiện các vi phạm quy tắc an ninh.

  • Tái tạo lại các sự cố về an ninh.

II. Các kỹ thuật kiểm soát truy cập (Access control techniques)

II.1-Kiểm soát truy cập tùy ý (Discretionary access control – DAC)

Trong kỹ thuật này, mỗi đối tượng đều có một chủ nhân (owner). Chủ nhân của đối tượng có toàn quyền quyết định chính sách truy cập đối tượng: cho chủ thể nào được truy cập và được làm những hành động gì trên đối tượng. Vì thế mới có tên là “Kiểm soát truy cập tùy ý”, theo ý muốn của chủ nhân đối tượng, không có một chính sách truy cập thống nhất trong toàn hệ thống.

Ví dụ khi một user tạo ra một file thì user đó là owner của file và có toàn quyền cho phép các user khác được truy cập vào file đó theo các mức độ khác nhau hoặc cấm hoàn toàn không cho ai ngoài mình được truy cập file.

Đây là kỹ thuật (hoặc còn gọi là mô hinh) kiểm soát truy cập phổ biến của các hệ thống file Linux hiện nay.

II.2-Kiểm soát truy cập bắt buộc (Mandatory access control – MAC)

Trong kỹ thuật MAC, chính sách truy cập các đối tượng được thiết lập chung, thống nhất, bắt buộc cho toàn hệ thống bởi người quản trị an ninh hệ thống ( security policy administrator), không phải theo ý thích của các chủ nhân các đối tượng. Kỹ thuật này thường được dùng trong các hệ thống phân cấp có các dữ liệu cần bảo mật cao như các hệ thống mật của chính phủ hoặc quân đội. Có hai đặc điểm quan trọng sau:

  • Nhãn bảo mật (Security label): trong hệ thống MAC, tất cả các chủ thể và đối tượng truy cập đều có nhãn bảo mật gán cho chúng. Để truy cập vào một đối tượng, chủ thể phải có nhãn với cấp bảo mật bằng hoặc cao hơn cấp bảo mật của đối tượng.

  • Kiểm soát xuất nhập dữ liệu: một trong các chức năng tối quan trọng của hệ MAC là kiểm soát việc nhập dữ liệu từ các máy khác vào và xuất dữ liệu ra các thiết bị bên ngoài (kể cả máy in). Trong quá trình xuất nhập, nhãn bảo mật phải luôn luôn được thiết lập và bảo trì một cách thích hợp sao cho các dữ liệu mật luôn luôn được bảo vệ.

Trong kỹ thuật DAC, chủ thể truy cập thừa kế các quyền của user khi truy cập đối tượng. Các quyền đó có thể quá rộng (ví dụ khi user là root, chương trình do root chạy sẽ có quyền truy cập như root) nên nếu chủ thể bị hacker điều khiển, tác hại sẽ lớn. MAC cho phép giới hạn quyền của chủ thể ở mức tối thiểu cần thiết, hạn chế được tác hại nói trên.

II.3-Kiểm soát truy cập dựa trên chức danh (Role-based access control – RBAC)

Trong kỹ thuật RBAC, hệ thống gồm nhiều chức danh khác nhau, tương tự như chức danh trong một tổ chức. Mỗi chức danh đó có quyền thực hiện các hành động khác nhau. Khác với MAC có hành động chỉ giới hạn ở các quyền đọc, viết, hành động trong RBAC từ mức đơn giản đọc, viết đến mức phức tạp là một chuỗi các hành động tạo thành một giao dịch (transaction) hoàn chỉnh. RBAC cũng giống MAC là chính sách truy cập được thiết lập tập trung bởi người quản trị an ninh mà không tùy thuộc vào chủ nhân các đối tượng như với DAC.

Ba quy tắc cơ bản của RBAC:

1. Gán chức danh: một chủ thể truy cập chỉ có thể thực hiện hành động nếu nó được gán một chức danh nhất định trong hệ thống.

2. Cho phép đảm nhiệm chức danh: một chủ thể chỉ có thể được gán một số chức danh nhất định. (tương tự như một nhân viên chưa có bằng đại học thì không thể làm trưởng phòng).

3. Cho phép thực hiện giao dịch: một chủ thể đã được gán một chức danh chỉ được thực hiện các giao dịch mà chức danh đó được phép làm.

RBAC thường được dùng trong các phần mềm thương mại hoặc quân sự, nơi cần bảo mật các giao dịch.

III. SELinux

SELinux là một công nghệ tăng cường an ninh cho nhân Linux. SELinux là sản phẩm chung của cục An ninh Quốc gia Mỹ và một số công ty tin học, đã được tích hợp vào nhân Linux (Linux kernel) từ phiên bản 2.6 trở đi.

Các bản Linux trước 2.6 chỉ dùng phương pháp quản lý truy cập tùy ý (DAC). SELinux thông qua cơ chế mô đun an ninh ( Linux Security Modules – LSM) bổ xung thêm hai phương pháp quản lý truy cập MAC và RBAC vào nhân Linux.


Hình 1: Chính sách an ninh và các module an ninh tăng cường độc lập với nhau trong SELinux.

Trong hình 1, người quản trị an ninh hệ thống dùng các công cụ chính sách (Policy utilities) để thiết lập chính sách an ninh (Security policy) chung cho hệ thống. Mỗi khi nhân Linux cần truy cập một đối tượng nào đó, trước tiên nó sẽ gọi (Request) hàm an ninh trong Security module, hàm này kiểm tra các điều kiện truy cập theo Security policy đã thiết lập rồi cho phép (Response) thực hiện truy cập.

IV. AppArmor

SELinux tuy tốt về mặt an ninh nhưng phức tạp, khó sử dụng. AppArmor là bộ phần mềm được xem là một giải pháp thay thế thân thiện, dễ sử dụng hơn. Các đặc điểm chính:

  • Cũng dựa trên cơ chế mô đun an ninh LSM như SELinux.

  • Mỗi chương trình có một security profile giới hạn quyền truy cập của chương trình ở mức tối thiểu đủ để thực hiện công việc của mình. Các profile này do người quản trị an ninh lập và như vậy áp dụng kỹ thuật MAC vào Linux. Chương trình chỉ được hoạt động trong giới hạn mà security profile của nó cho phép.

  • Ngoài các profile lập bằng tay, AppArmor còn có mode tự học: các hoạt động của chương trình được lưu lại trong log, các log này có thể chuyển thành profile.

  • SELinux dùng secutity label do đó đòi hỏi hệ thống file phải hỗ trợ dạng label đó. AppArmor không dùng secutity label nên áp dụng với hệ thống file nào cũng được.

  • SELinux truy cập file dựa trên số inode (inode number), AppArmor truy cập file bằng đường dẫn (path). Cách nào hay hơn thì còn đang cãi nhau. Một trong những phần mềm an ninh mới nhất dùng kỹ thuật MAC nhưng truy cập file bằng đường dẫn là Tomoyo.

V. Ứng dụng

Các máy để bàn thường chỉ kiểm soát truy cập theo kỹ thuật DAC. Vì vậy các bản Linux desktop không cài sẵn SELinux hoặc AppArmor. OpenSUSE là bản Linux desktop có đầy đủ giao diện đồ họa nhất để thiết lập và quản trị AppArmor (có cả wizard) nhưng mặc định cũng không kích hoạt (enable) AppArmor. Mandriva có các gói phần mềm SELinux và AppArmor trong kho nhưng không cài có lẽ vì đã có Msec. Linux Mint có cài một vài thư viện của hai phần mềm trên nhưng không đầy đủ.

Trong một thế giới kết nối Internet, các máy để bàn đều bị nhòm ngó và có nguy cơ bị biến thành máy tính âm binh (zombie) trong một mạng máy tính ma (botnet) thì có lẽ tăng cường an ninh bằng SELinux hoặc AppArmor vẫn tốt hơn mặc dù như vậy sẽ gây phức tạp hơn cho việc cài thêm các phần mềm mới.

Còn với các máy chủ thì tăng cường an ninh bằng SELinux hoặc AppArmor là đương nhiên.

VI. Ảo hóa hệ điều hành

Một trong những giải pháp nữa để tăng cường an ninh là dùng các máy chủ ảo. Trên một máy chủ vật lý chạy một hệ điều hành chủ, trong hệ điều hành chủ dùng phần mềm ảo hóa để tạo nên một số máy chủ ảo. Mỗi máy chủ ảo chạy một hệ điều hành và chương trình ứng dụng riêng. Các máy chủ ảo cô lập so với nhau và với máy chủ chính. Như vậy khi một máy ảo bị tấn công không ảnh hưởng tới các máy khác.

Để tránh mã độc Windows: giao dịch ngân hàng bằng LiveCD Linux

Avoid Windows Malware: Bank on a Live CD

krebs_lol_624.gif

(Sau một loạt bài về các vụ ăn trộm tiền trên mạng đăng trong chuyên mục Security Fix , phóng viên Brian Krebs đề xuất một giải pháp chống trộm hiệu quả và rẻ tiền. Bài đăng trên một trong những tờ báo hàng đầu thế giới: Washington Post)

Loạt phóng sự điều tra tôi viết về các tổ chức tội phạm trên mạng ăn trộm hàng triệu đô la của các doanh nghiệp vừa và nhỏ đã tạo ra nhiều câu hỏi của các chủ doanh nghiệp muốn biết làm thế nào để tự bảo vệ trước dạng tội phạm như thế.

Tôi biết một cách đơn giản nhất, hiệu quả nhất: đừng dùng Windows khi truy cập vào tài khoản ngân hàng trên mạng.

Tôi không đưa ra lời khuyên đó một cách dễ dàng. Tôi đã phỏng vấn hàng chục công ty nạn nhân mất từ $10,000 đến $500,000 chỉ vì bị nhiễm một phần mềm mã độc. Tôi đã nghe nhiều câu chuyện đáng tin cậy về vô số cách mà bọn tội phạm dùng để qua mặt gần như mọi hàng rào an ninh mà các ngân hàng dựng nên.

Nhưng dù cho các ngân hàng hoặc bọn tội phạm dùng cách gì, tất cả các cuộc tấn công đều có một mẫu số chung duy nhất không thể phủ nhận được: chúng thành công vì bọn tội phạm có thể cài được một phần mềm mã độc cho phép chúng dành được quyền kiểm soát các máy tính Windows

Tại sao hệ điều hành lại quan trọng như vậy? Hầu như tất cả các phần mềm ăn trộm dữ liệu hiện nay đều được viết để tấn công Windows và sẽ không thể chạy được trên một hệ điều hành không phải Windows. Các mã độc chạy trên Windows hiện tinh vi đến mức mà ngân hàng rất khó phân biệt được đâu là giao dịch của khách hàng và đâu là của hacker.

Cuộc tấn công nổi tiếng ăn trộm tiền của quận Bullit, Kentucky cho thấy bọn trộm đã dùng mã độc làm thất bại hai tuyến phòng thủ chủ yếu của ngân hàng như thế nào. Nhiều ngân hàng có chế độ “kiểm soát kép”: phải có ít nhất hai người có thẩm quyền cùng ký một lệnh chuyển tiền. Trong cuộc tấn công nói trên, bọn trộm cấy phần mềm mã độc vào máy tính của kho bạc, từ đó đăng ký được chính chúng là người có thẩm quyền cho chuyển tiền.

Ngân hàng cũng thường đăng ký các địa chỉ IP của khách hàng và có các biện pháp an ninh phụ khi khách hàng truy cập vào tài khoản nhưng không dùng địa chỉ IP đó. Trong trường hợp quận Bullit và ít nhất ba nạn nhân khác mà tôi đã phỏng vấn trong ba tháng qua, bọn hacker dùng phần mềm mã độc để chuyển hướng kết nối của chúng vào site của ngân hàng đi qua chính máy tính và địa chỉ IP của nạn nhân (do đó đối với ngân hàng, kết nối đến từ IP đã đăng ký).

Phần mềm mã độc cũng giúp bọn trộm làm thất bại hệ thống xác thực hai yếu tố, yêu cầu khách hàng ngoài username và password phải cung cấp thêm một mã xác thực phụ nữa ví dụ mã sáu ký tự do một thẻ tạo mã bỏ túi tạo ra và thay cái khác 30 giây một lần.

Trong hai tháng qua, tôi đã viết về cảnh ngộ khốn khổ của hai công ty nạn nhân mặc dù ngân hàng của họ đã yêu cầu dùng các mã an ninh phụ đó.

David Johnston, chủ công ty Sign Designs, California, mất gần $100,000 ngày 23/7 do một phần mềm mã độc Windows. Ngân hàng của Johston cũng yêu cầu khách hàng ngoài username và password phải nhập mã do thẻ an ninh Vasco tạo ra. Nhưng bọn trộm cài được mã độc vào máy tính của người quản lý và bắt được một mã an ninh khi người đó log in. Sau đó chúng làm chậm quá trình log in của người quản lý đó lại để chúng có thời gian hoạt động.

Cũng bằng cách đó, bọn trộm đã lấy được $447,000 của công ty Ferma.

Tôi không phải người duy nhất khuyên các khách hàng giao dịch ngân hàng qua mạng nên truy cập vào tài khoản từ các máy tính không Windows. Trung tâm Phân tích và Chia sẻ thông tin dịch vụ tài chính (Financial Services Information Sharing and Analysis Center, FS-ISAC), một nhóm các nhà công nghiệp được một số các ngân hàng lớn nhất thế giới hỗ trợ, vừa mới ban hành bản hướng dẫn khuyến nghị các doanh nghiệp thực hiện các giao dịch ngân hàng qua mạng “bằng một máy tính không nối mạng LAN, được bảo mật và khóa hoàn toàn sao cho các hoạt động duyệt Web và gửi email thông thường không thực hiện được”.

Đáp lại loạt bài phóng sự được công bố trên chuyên mục Security Fix của Washington Post, học viện công nghệ SANS, một tổ chức đào tạo và nghiên cứu về an ninh mạng đã treo giải cho sinh viên viết báo cáo về các phương pháp hiệu quả nhất để các doanh nghiệp vừa và nhỏ phòng chống tội phạm trên mạng. Kết quả? Có rất nhiều cách, nhưng cách rẻ nhất và hiển nhiên nhất là dùng một đĩa CD chỉ đọc (read-only), boot được có một hệ điều hành như Knoppix hoặc Ubuntu. Báo cáo của SANS có thể xem ở đây.

Được gọi là “Live CD”, những hệ điều hành này có thể tải miễn phí từ mạng và ghi vào đĩa CDROM. Cái hay của những đĩa này là nó có thể biến một máy tính Windows tạm thời thành máy Linux mà không phải cài bất kỳ cái gì vào ổ cứng. Các chương trình từ Live CD được tải vào bộ nhớ RAM của máy và mọi dữ liệu như lịch sử các trang web đã duyệt hoặc các hoạt động khác sẽ bị xóa hoàn toàn khi tắt máy. Để quay lại Windows chỉ cần khởi động lại và lấy đĩa CD ra khỏi ổ.

Điểm quan trọng hơn là những phần mềm mã độc dùng ăn trộm dữ liệu trong Windows không thể tải hoặc hoạt động được trong Linux. Ngay cả nếu máy Windows đã nhiễm mã độc trong ổ cứng, khi boot máy bằng Live CD, các mã độc đó không hoạt động được.

Arc of Steuben, một tổ chức phi lợi nhuận chăm sóc những người khuyết tật đã theo đúng lời khuyên trên. Tháng 9/2009 tôi có viết bài về bọn trộm đã dùng mã độc để ăn trộm gần $200,000 của họ như thế nào. Kể từ đó, họ đã giới hạn chỉ cho phép dùng các máy Linux trong mạng của họ để giao dịch ngân hàng theo một báo cáo tại đây cho biết.

Tất nhiên một máy tính Mac cũng có thể tránh được mã độc Windows. Nhưng dùng Live CD Linux là cách rẻ nhất. Nếu bạn muốn làm quen xin xem hướng dẫn tại đây.

Cảnh sát bang New South Wales: đừng dùng Windows để giao dịch ngân hàng trên Internet

NSW Police: Don’t use Windows for internet banking

By Munir Kotadia
Oct 8, 2009 5:31 PM

(xem thêm bài này cũng của một chuyên gia  tại đây)

Các khách hàng muốn an toàn khi kết nối với các dịch vụ ngân hàng internet thì nên dùng Linux hoặc Apple iPhone, một thanh tra cảnh sát bang New South Wales, Australia khuyên như vậy khi phát biểu thay mặt chính quyền bang trong một buổi điều trần trước quốc hội về tội phạm Internet.

Thanh tra Bruce van der Graaf thuộc đơn vị điều tra tội phạm máy tính nói rằng ông có hai quy tắc để bảo vệ chính ông khỏi bọn tội phạm Internet khi giao dịch ngân hàng qua mạng (banking online).

Quy tắc 1 là không bao giờ kích chuột vào một đường link trên site ngân hàng (nếu site đó là site giả mạo – phishing – đường link trên đó sẽ là một cái bẫy của bọn tội phạm) và quy tắc 2 là không dùng Microsoft Windows (để giao dịch ngân hàng trên mạng).

(Xem thêm: Giám đốc FBI suýt bị sập bẫy tin tặc)

“Nếu bạn muốn dùng Internet để mua bán, hãy khởi động từ một đĩa Linux, Ubuntu hay gì đó tùy bạn. Puppy Linux cũng là một bản Linux nhỏ , khởi động rất nhanh. Bạn sẽ có một hệ điều hành hoàn toàn sạch, chỉ làm việc trong bộ nhớ máy tính và rất an toàn khi giao dịch ngân hàng qua mạng” van der Graaf khuyên.

Sau đó, van der Graaf giải thích cho các dân biểu khởi động máy tính nghĩa là thế nào và nói rằng phương pháp mà ông đề nghị đảm bảo “100 phần trăm là sạch”. Ông nói khởi động sạch như vậy sẽ tránh được mọi mã độc đã nhiễm vào máy “Nếu quý vị có một ổ cứng bị nhiễm mã độc … thì sẽ không sao”

Van der Graaf cũng nhắc đến iPhone mà ông nói là “hoàn toàn an toàn” khi giao dịch ngân hàng qua mạng. “Một phương pháp nữa là dùng điện thoại iPhone của Apple. Nó chỉ chạy được một lệnh một lần do đó không sợ nhiễm mã độc” (ở đây chắc có ý muốn nói iPhone là hệ single-tasking, mà các mã độc thì phải hoạt động trong môi trường multi-tasking).

Van der Graaf nói ông nêu hai phương án thay thế Windows nói trên vì ông lo rằng các đạo luật trong tương lai buộc các nhà cung cấp dịch vụ Internet hoặc các ngân hàng phải kiểm tra máy của khách hàng đã được bảo vệ thì mới cho kết nối vào hệ thống.

“Nếu quý vị đặt ra luật buộc các ISP phải kiểm tra máy khách hàng phải có tường lửa hay một cái gì đó tương tự, thì những người dùng các phương pháp nêu trên không giao dịch được (vì không có tường lửa, nhưng lại rất an toàn. Tóm lại là đừng chỉ dựa vào Windows mà làm luật!)”

(Washingtonpost vừa có một bài hướng dẫn dùng LiveCD Ubuntu để E-Banking)

zxc232

Mã độc nguồn mở!

Why malware writers are turning to open source

Nick Heath – 2009/09/21 11:19:02

Những kẻ viết mã độc (malware) đang nguồn mở hóa sản phẩm của mình để cải tiến nó tốt hơn.

Bằng cách cho người khác truy cập tự do vào mã nguồn của các loại mã độc (malware) chuyên ăn trộm thông tin cá nhân và thông tin tài chính, các tác giả của những mã độc đó hy vọng sẽ mở rộng được tính năng của nó so với các loại trojan thông thường.

Theo Candid Wuest, nhà nghiên cứu của Symantec, khoảng 10% thị trường trojan hiện nay được nguồn mở hóa. Việc chuyển sang mô hình nguồn mở cho phép các kẻ tội phạm bổ xung được tính năng cho các mã độc của chúng.

"Ưu điểm là có nhiều người tham gia vào phát triển một mã độc hơn là chỉ có tác giả, nếu người đó chuyên về mã hóa, họ sẽ bổ xung tính năng mã hóa (để tránh bị các chương trình diệt virus phát hiện), kẻ chuyên về video streaming có thể bổ xung tính năng streaming từ xa," Wuest nói.

Việc nguồn mở hóa các trojan bắt đầu từ năm 1999 khi nhóm Dead Cow công bố mã nguồn của trojan Back Orifice. Gần đây, những tác giả của Limbo Trojan cũng công bố mã nguồn để đẩy nhanh việc sử dụng nó bởi những kẻ lừa đảo trên mạng.

Sau khi ra đời năm 2007, Limbo Trojan trở thành trojan được sử dụng rộng rãi nhất thế giới nhưng tới năm 2008 thì mất ngôi vị đó sau khi Zeus Trojan tinh vi hơn xuất hiện. Trở thành trojan thống trị trên thị trường đem lại cho tác giả của chúng rất nhiều tiền: các máy bị nhiễm và các thông tin cá nhân, tài chính mà trojan đánh cắp được trị giá hàng triệu đô la trên thị trường đen. Limbo Trojan trước đây được bán cho những kẻ lừa đảo trên mạng với giá 350USD, trong khi Zeus Trojan hiện nay có giá từ 1000 đến 3000USD.

Tuy nhiên người đứng đầu bộ phận công nghệ mới của hãng an ninh mạng RSA là Uri Rivner cho biết việc nguồn mở hóa không cứu vãn được vị trí suy đồi của Limbo Trojan.

"Chúng chuyển sang mô hình kinh doanh hệt như các dự án phần mềm nguồn mở khác: cho không phiên bản cơ bản, bán phiên bản tiên tiến hơn hoặc dịch vụ hỗ trợ chuyên nghiệp hoặc dịch vụ cá biệt hóa theo yêu cầu khách hàng. Lúc mới nguồn mở hóa thì đó là tin nóng, nhưng từ đó "khách hàng" ngừng mua nó. Nó không còn là trojan tốt nhất nữa, nhưng vì nó là phần mềm nguồn mở nên những kẻ tội phạm trên mạng có thể thử dùng nó như công cụ đầu tay"

Tính phổ biến của Limbo tiếp tục giảm mặc dù có nhiều tính năng mới được bổ xung cho phép kẻ tội phạm có thể thêm các trường phụ vào mã PIN để đánh lừa các website của ngân hàng, thu thập danh sách các phím đã gõ và các file đã lưu trên máy tính bị nhiễm trojan.

Và trong khi việc nguồn mở hóa không mang lại may mắn cho Limbo, nó còn tạo ra thêm vấn đề cho những kẻ lừa đảo trên mạng: các công ty an ninh mạng cũng có mã nguồn của nó.

Đại đa số trojan lây nhiễm bằng con đường download: nó tự động được tải về máy khi bạn mở một website đã nhiễm độc, hoặc một thông báo của một mạng xã hội thúc dục mọi người tải về một bản cập nhật an ninh nhưng thực ra đó là một trojan.
Các phương pháp lây nhiễm đó tỏ ra hiệu quả hơn các kỹ thuật trước đây như gửi một email có link đến file đã nhiễm hoặc có file đính kèm chứa trojan.
Các nhà phân tích của RSA nói phương pháp mới đã tăng số lần lây nhiễm theo cấp số nhân: tháng 8/2008 hãng chỉ phát hiện được 613 lần lây nhiễm, tháng 8/2009 là 19.102

Mở rộng “kinh doanh” blog, khỏi lo mất blog! (cập nhật 23/9/09)

Tôi mở “cửa hàng” zxc232.wordpress.com với hai mục đích:

  1. Ghi lại những cảm nhận, thông tin có được trong những chuyến đi khám phá vào vùng đất mới “Phần mềm nguồn mở” mà “từ bé đến giờ” chưa hề biết khi vẫn còn quanh quẩn trong lũy tre làng Windows.
  2. Chia sẻ, rủ rê các bạn cùng làng mạnh dạn đến những chân trời mới.

Khi công cuộc “kinh doanh” trên đã ổn định và có hướng phát đạt, điều đương nhiên là nghĩ cách mở rộng (và khỏi lo mất blog khi một nhà cung cấp dở chứng như Yahoo). Tôi đã làm như sau:

  1. Dùng chức năng “Xuất ra – Export” trong bảng điều khiển của blog WordPress để xuất toàn bộ nội dung blog thành một file xml. Đây cũng là một bản sao lưu.
  2. Vào trang này để convert file xml nói trên thành một file tương thích với Blogger. Vào trang Blogger tạo một blog mới http://zxc232.blogspot.com. Nhấn vào Import Blog Tool để nhập file vừa convert. Khi nhập xong, toàn bộ các bài viết, bình luận, chuyên mục, … từ WordPress sẽ được chuyển sang Blogger. Ta có blog mới giống như blog cũ.
  3. Vào trang multiply.com tạo tiếp một blog mới nữa (). Nhấn vào Post – Blog, màn hình để viết post xuất hiện. Dưới đáy màn hình này, chọn Import Blogs – Blogger để nhập toàn bộ nội dung Blogger vừa lập sang Multiply.
  4. Sau ba bước trên ta được ba blog nội dung giống nhau về các post. Blogger nhập được các comment của WordPress, Multiply không nhập được comment của Blogger. Khi import xong cũng nên duyệt qua vì một số định dạng của post có thể bị sai lệch.

Một số dịch vụ blog nổi tiếng khác như Windows Live, Yahoo! 360plus, LiveJournal thì không có công cụ để chuyển blog. Tuy nhiên vẫn có thể dùng được bằng cách treo blast hay thông báo là các bài cũ xem ở WordPress, trên các blog đó chỉ post bài mới. Riêng trang profile của Windows Live, mục Web activities cho phép tự động cập nhật link các post của WordPress.

Để đăng một post mới, tất cả các blog trên đều có tính năng gửi post qua email. (trừ Yahoo). Mỗi blog trên cho phép tạo một địa chỉ email riêng để nhận post (và dĩ nhiên là phải giữ bí mật địa chỉ đó nếu bạn không muốn người khác post linh tinh lên blog của bạn). Trong chương trình soạn mail thường dùng (Gmail, Yahoo Mail, Outlook, Thunderbird, …) tạo một nhóm nhận thư với tất cả các địa chỉ trên. Soạn post mới như một email rồi gửi đăng cho cả nhóm.

Nhưng gửi post qua email có cái dở là không xếp chuyên mục (categories) và gán tag được. Phải vào từng blog sửa lại bằng tay.
Các blog đều có chức năng thông báo comment mới qua email. WordPress còn cho phép trả lời comment bằng email (các blog khác thì chưa kip xem có hay không). Khai một địa chỉ email chung là theo dõi được comment trên tất cả các blog.
Multiply có chức năng cross-posting với Blogger và copy post sang một số blog khác nhưng hoạt động có vẻ không tốt lắm.
Trong các blog nói trên, WordPress vẫn có vẻ nhiều tính năng nhất và lại là phần mềm nguồn mở. Bảng điều khiển của nó ban đầu hơi ngợp nhưng khi quen rồi thì rất tiện. Multiply tuy được nhiều blogger của Yahoo cũ dùng nhưng các tính năng quản lý không bằng WordPress.

Thực ra làm như trên cũng để nghịch nữa. Chẳng cần thiết phải quảng cáo blog cầu kỳ đến thế. Tuy nhiên cách làm trên (tối thiểu với hai blog) còn có hai điểm hay quan trọng là:

  1. Bạn luôn có mặt trên Internet, dịch vụ blog này trục trặc thì có dịch vụ khác.
  2. Các post của bạn có nhiều bản ở nhiều nơi (trong email và trên các blog). Khỏi sợ mất hay lo sao lưu như khi chỉ có một blog.

Mới thử sơ sơ thì ba blog WordPress, Blogger và Multiply có vẻ đáp ứng tốt nhất với cách làm trên. Những cái còn lại không trục trặc kiểu này thì kiểu khác.

Cập nhật 23/9/2009: qua một thời gian thử thì thấy:

  • Khi gửi post bằng Gmail tới WordPress, Windows Live, Blogger và Multiply, ba blog đầu nhận tốt, giữ nguyên định dạng đã format trên Gmail. Riêng Multiply rất dở: xuống dòng linh tinh, thêm nhiều dòng trắng phải sửa lại rất mệt.
  • Nếu trong post có ảnh đã chèn khi soạn trong Gmail, lúc gửi sang blog hơi chập chờn, có lúc nhận tốt có lúc không.
  • Trong các dịch vụ email, trình soạn thảo mail của Gmail và Zoho (zoho.com) cho phép chèn ảnh vào mail. Yahoo Mail, Hotmail, Mail.com không chèn được ảnh. Riêng Zoho còn cho phép chèn cả bảng.
  • Giữa Multiply và Blogger có chế độ liên thông với nhau (cross-posting). Nếu post lên Blogger thì sau vài tiếng, post cũng xuất hiện trên Multiply. Chiều ngược lại (Multiply -> Blogger) chưa thử. Như vậy nếu tối thiểu có hai blog Blogger và Multiply là ổn.
  • WordPress, Multiply và Blogger đều gửi được thông báo có comment về Gmail. Wordpres còn có thể trả lời comment bằng Gmail. Windows Live chỉ cho phép gửi về Hotmail.

Lý do số 1 chuyển sang OpenSource là để cải thiện an ninh, bảo mật

Bill Vass là Chủ tịch kiêm Tổng Giám đốc điều hành (Chief Operating Officer) của Sun Microsystems Federal, Inc. Bài dưới đây đăng trên blog của ông, tôi lược dịch lại. Link gốc nhấn vào tên bài.

Thursday Apr 16, 2009

Lý do số 1 chuyển sang phần mềm nguồn mở là để cải thiện an ninh (The No. 1 Reason to Move to Open Source is to IMPROVE Security)

Nếu bạn cũng như tôi đã làm việc lâu năm trong lĩnh vực mã hóa và an ninh mạng thì sẽ thấy rõ ràng rằng các phần mềm mã nguồn mở thương mại an toàn hơn. Thực tế cho thấy  cuối những năm 90 nhiều hệ thống tác nghiệp của các cơ quan tình báo và các hệ thống chiến thuật của bộ Quốc phòng Mỹ chuyển sang dùng phần mềm nguồn mở CHỈ ĐỂ CẢI THIỆN AN NINH. Hiện nay, đại đa số các hệ thống quan trọng của các cơ quan tình báo (những người quan tâm nhất đến an ninh mạng – Cyber security) đều chạy trên các hệ điều hành nguồn mở như Solaris và Linux. Điều đó cũng đúng với các cơ quan khác như cục Hàng không Liên bang (FAA – Federal Aviation Administration), cục Thuế (Internal Revenue Service -IRS) và nhiều cơ quan khác quan tâm về an ninh mạng.

Dưới đây tôi sẽ dẫn bạn đi qua một vài lý do tại sao phần mềm nguồn mở thương mại lại an toàn hơn, rồi sẽ cung cấp cho bạn một vài số liệu cụ thể.

Trước tiên cần nhìn vào dây chuyền xây dựng phần mềm. Thực tế hiện nay, tất cả các phần mềm đều được viết trên toàn cầu. Bạn phải chấp nhận rằng phần mềm của Microsoft, Oracle và IBM được lập trình tại Ấn độ, Trung quốc và Nga. Nếu phần mềm có nguồn mở thì không có gì có thể giấu ẩn bên trong mã. Nếu con ngựa thành Troa được làm bằng thủy tinh thì những người dân thành Troa có kéo nó vào bên trong thành không? KHÔNG. Các chính phủ minh bạch (open gvernments) thì các công dân của họ an toàn hơn và phần mềm nguồn mở cũng an toàn hơn cho bất kỳ ai dùng chúng. Sự giám sát công cộng là một điều rất hay.

Giả sử bạn đang xếp hàng chờ qua cổng an ninh ở sân bay, trước bạn là một người mang một cái cặp “nguồn đóng” khóa kín. Anh ta nói với nhân viên an ninh sân bay rằng đừng lo, hãy tin vào anh ta, mọi thứ trong cặp đã được kiểm tra kỹ rồi. Bạn cảm thấy thế nào? Tốt hơn hết người đứng trước bạn là người mang cặp “nguồn mở” vui vẻ mời nhân viên an ninh kiểm tra mọi thứ trong đó vì anh ta không có gì phải che dấu.

Bạn sẽ cảm thấy an toàn hơn khi đi máy bay với người nào trong hai người nói trên? Vậy thì tại sao bạn lại phải tin một người bán phần mềm chất vào máy chủ của bạn những phần mềm cực kỳ quan trọng mà chẳng ai biết có gì trong đó trừ chính công ty bán phần mềm hoặc một nhóm nhà lập trình? Đôi khi tôi cũng có nghe những người bán phần mềm nguồn đóng nói rằng “nhưng ai cũng có thể nhìn thấy cơ chế bảo mật của phần mềm nguồn mở hoạt động như thế nào”. Đó lại chính là điều làm cho phần mềm nguồn mở mạnh hơn phần mềm nguồn đóng.

Các nhà lập trình nguồn đóng chỉ biết nói: “Hãy tin vào chúng tôi”. Các nhà lập trình nguồn mở thì có thể nói: “Hãy xem việc đảm bảo an ninh của chúng tôi. Chúng tôi xây dựng tính an toàn bảo mật trong mọi thứ: hồ sơ, mô hình, kiến trúc, quá trình xét duyệt, việc chọn ngôn ngữ lập trình, các tiêu chuẩn lập trình, mã nguồn, các phương pháp kiểm tra, các công cụ, kỹ thuật, cấp phép, quản lý rủi ro, sửa chữa, ….”. Bạn có được bức tranh toàn cảnh của toàn bộ quá trình lập trình. Với phần mềm nguồn mở, ưu điểm về an ninh bảo mật không chỉ ở khả năng đọc được mã nguồn mà là cả vòng đời phát triển công nghệ ngay từ đầu đã dựa trên những nền tảng an ninh và mục tiêu an ninh.

Tất cả các loại thiết bị an ninh vật lý đều là nguồn mở. Bạn có thể đến phòng đăng ký sáng chế hoặc xem online trên mạng để biết một cái khóa có cấu tạo thế nào, hoạt động ra sao và chính điều đó làm cho chúng trở nên an toàn hơn. Tôi thường nghe các nhà bán phần mềm nguồn đóng nói rằng họ có những người “đủ năng lực” xem xét mã nguồn của họ. Anh chàng mang cặp “nguồn đóng” trong ví dụ trên có lẽ cũng đã có ai đó “đủ năng lực” trong công ty khám xét cặp của anh ta rồi và nhân viên an ninh sân bay tốt hơn hết là cứ cho cái cặp đó qua cổng an ninh mà không phải xem xét gì cả? Sai. Với cái cặp “nguồn mở” BẤT KỲ AI cũng có quyền khám xét … kể cả các cơ quan tình báo.

Các cơ quan tình báo là một bộ phận của Cộng đồng Nguồn mở tham gia xem xét mã nguồn. Nhưng nên nhớ rằng có hàng triệu triệu dòng lệnh. Microsoft có khoảng 30 triệu dòng lệnh, Oracle khoảng 15 triệu, Solaris khoảng 20 triệu. Rồi Linux khoảng 12 triệu, MySQL khoảng …Vài trăm chuyên gia chẳng có cách nào xem hết được cái đống lệnh đó.

Hệ điều hành Solaris của Sun trước đây đã được điểm cao nhất về an ninh mà chính phủ dành cho hệ điều hành dùng trong các tổ chức và ngày nay vẫn thế. Nó được cấp phép bởi chính phủ liên bang, được rà soát bởi các chuyên gia giỏi nhất của Sun, của các cơ quan tình báo và vô số những người thông minh khác trong cộng đồng. Ấy thế mà khi Solaris được công bố mã nguồn, trong vòng một tháng chúng tôi nhận được thông báo về 28 lỗi bảo mật mới do cộng đồng 160,000 người dùng Solaris phát hiện và đã kịp vá lỗi trước khi có kẻ khai thác chúng vào những mục đích xấu.

Cũng những điều nói trên đã xảy ra khi chúng tôi nguồn mở hóa Java. Ngay khi bạn nguồn mở hóa một phần mềm, một cộng đồng người dùng đông đảo sẽ xem xét mã nguồn đó và bạn sẽ kịp vá lỗi trước khi nó gây ra tai họa.

Vì thế tại sao các cơ quan an ninh quốc gia và nhiều tổ chức nhà nước khác đã có một sáng kiến lớn là chuyển sang dùng phần mềm nguồn mở. Sự quan sát, săm soi của công chúng sẽ làm tăng chất lượng của chương trình. Mỗi lần bạn mua bán trên mạng, bạn đều phải dùng thuật toán mã hóa RSA. Thuật toán này là nguồn mở, nó bị phê phán, sửa, rồi lại bị phê phán, lại sửa bởi rất nhiều người cứ như thế cho đến khi nó được đưa vào ứng dụng.

Một ví dụ ngược lại là clipper chip, một con chip mã hóa được chính quyền Clinton tung ra làm thiết bị bảo mật cho các công ty viễn thông. Sau khi ra đời được 48 giờ thì nó bị phá (chip này ra đời năm 1993 và đến 1996 thì chết – ND). Nếu nó là nguồn mở thì sẽ có người phát hiện được lỗi và sẽ kịp sửa trước lúc đưa vào ứng dụng. Nhưng nó lại là nguồn đóng. Thuật toán RSA theo tôi biết thì chưa bao giờ bị phá trừ khi dùng cách tấn công brute force.

Nếu bạn xem Cơ sở Lỗi bảo mật quốc gia (National Vulnerability Database – NVD), bạn sẽ thấy rằng các sản phẩm phần mềm nguồn mở có ít lỗi hơn và mức độ bị khai thác lỗi cũng thấp hơn các sản phẩm nguồn đóng tương đương.

Đồ thị dưới đây là mức độ rủi ro theo báo cáo Airius Risk Report tính toán dựa trên số liệu của NVD. Nhìn vào đó bạn sẽ thấy rằng các sản phẩm nguồn đóng có độ rủi ro (về bảo mật) cao hơn nhiều so với các sản phẩm nguồn mở tương đương.

sun-rr-b-123107-new-small

sun-rr-a-123107-new-small.jpg

Và cũng không phải vì các phần mềm nguồn mở ít người dùng. Có 6 tỷ lần cài đặt Java, 14 triệu lần Open Solaris, 120 triệu lần Open Office và 115 triệu lần MySQL.

Phần mềm nguồn mở có an toàn không?

Một trong những lý luận thường gặp nhất của những người chống Linux (nhưng tuyệt đại đa số không hiểu gì về Linux) là Linux không an toàn. Cái cảm giác mơ hồ về một sản phẩm  do một đám người ảo trên mạng tham gia xây dựng, ai cũng có thể đọc được “ruột” của nó dẫn đến cảm giác bất an cũng là điều dễ hiểu.

Để trấn an nỗi lo lắng đó của những người sử dụng bình thường, có thể dùng các lý lẽ sau đây:

  1. Quân đội Mỹ, quân đội Pháp, các tổ chức tài chính hàng đầu: ngân hàng HSBC, Morgan Stanley, thị trường chứng khoán NewYork, các chính phủ G7, các đại công ty thuộc danh sách Fortune 500, v.v…. đều đang dùng Linux và dùng trong những hệ thống có yêu cầu an ninh rất cao (chi tiết xem thêm ở đây).
  2. Trong một cuộc thi hack các hệ điều hành năm 2008, các hệ điều hành Mac Leopard và Windows Vista đều bị hạ. Duy nhất chỉ có Ubuntu Linux trụ vững được.
  3. Khi bạn mua một thiết bị gia dụng đắt tiền (xe máy, điều hòa, v.v…), giữa một thiết bị được mở toang, bày giữa cửa hàng cho ai cũng xem được từng bộ phận bên trong với một thiết bị niêm phong kín, (của cùng các hãng danh tiếng) cái nào đáng tin cậy hơn?
  4. Cách đây ít năm, Microsoft đã có lần bị tố cáo là để cổng hậu (backdoor) trong Windows cho FBI khi cần có thể vào kiểm soát máy tính. Tất nhiên là hãng ra sức thanh minh. Nhưng ngoài việc tin vào Bill Gate, bạn có cách nào kiểm tra được không? Ngược lại, với phần mềm nguồn mở, về nguyên tắc có thể đọc từng dòng mã nguồn để kiểm tra xem có mã độc nào lẫn trong đó không trước khi cho dịch thành mã máy để chạy. Tất nhiên việc này đòi hỏi phải có một đội ngũ chuyên gia trình độ cao mà chỉ ở quy mô chính phủ hoặc các ngành cần an ninh cao như quân đội, công an có thể tổ chức làm được (và nên làm, như Cuba, một nước có tinh thần cảnh giác rất cao hiện đang làm. Việt nam mà chưa làm thì cũng hơi lạ).
  5. Nếu các lý lẽ nói trên vẫn chưa thuyết phục nổi bạn và bạn cho rằng mình cẩn thận hơn chính phủ Anh, công việc của mình quan trọng hơn chỉ huy tác chiến của quân đội Mỹ và những thứ “linh tinh” đã nêu ở mục 1 thì mời bạn chịu khó xem báo cáo sau đây:

 

Báo cáo về an ninh: Windows so với Linux

Một đánh giá độc lập của  Nicholas Petreley

Posted in Security, 22nd October 2004 07:26 GMT

(Bản báo cáo này khoảng 50 trang, tôi lược dịch một số phần đáng chú ý. Những lập luận thì có thể còn phải bàn, nhưng hệ tiêu chí đánh giá lỗi bảo mật và số lượng, tỷ lệ lỗi thì đáng tin cậy. Nguyên bản xem tại đây – ND)

Tóm tắt

Nhiều công trình đã được thực hiện để xem Linux có thực sự an toàn hơn Windows hay không. Chúng tôi so sánh Windows và Linux bằng cách tìm hiểu 40 bản vá/thông báo lỗi bảo mật gần đây của Microsoft Windows Server 2003 và Red Hat Enterprise Linux AS v.3 theo các tiêu chí sau:

  1. Mức độ nghiêm trọng của lỗi bảo mật dựa trên các tiêu chí:
    1. Mức độ thiệt hại có thể do lỗi đó gây ra.
    2. Khả năng khai thác lỗi đó dễ hay khó.
    3. Khả năng bộc lộ của hệ thống do lỗi (cần loại truy cập nào để khai thác được lỗi?)
  2. Số lượng lỗi nghiêm trọng.

Kết quả không có gì bất ngờ. Ngay cả theo những tiêu chuẩn chủ quan của Microsoft, 38% lỗi bảo mật của Windows được xem là nghiêm trọng, trong khi đó Red Hat chỉ có 10%. Nếu theo các tiêu chuẩn riêng của chúng tôi, số lỗi nghiêm trọng của Windows chiếm tới 50% tổng số lỗi đã công bố.

Thêm vào đó, chúng tôi đã tìm kiếm trong cơ sở dữ liệu lỗi bảo mật của đội Ứng cứu khẩn cấp máy tính Mỹ ( the United States Computer Emergency Readiness Team- CERT), các dữ liệu ở đó khẳng định kết luận của chúng tôi ở một tầm mức còn lớn hơn. Khi tìm trong cơ sở dữ liệu về lỗi bảo mật của Windows, trong 40 lỗi đầu xếp theo thứ tự giảm dần về mức độ nghiêm trọng thì 39 lỗi thuộc loại trên ngưỡng báo động cao (severe alert) của CERT. Trong khi đó Red Hat Linux chỉ có 3/40 lỗi thuộc loại đó. Nếu tìm chung trong cơ sở dữ liệu Linux, chỉ có 6/40 lỗi đầu vượt ngưỡng nói trên.

Vậy thì tại sao vẫn còn những lời đồn đại rằng Linux không an toàn bằng Windows? Một trong những nguyên nhân là những lời đồn đại đó dựa trên những tiêu chí không đầy đủ và có những lỗ hổng về mặt logic như phân tích dưới đây.

Hóa giải những điều đồn đại

Số lượng ít nên an toàn

Một trong những điều hoang tưởng được lặp lại nhiều nhất về độ an toàn của Windows so với Linux là lập luận rằng Windows có nhiều virus, mã độc và các vụ tấn công an ninh là do các hacker chỉ tập trung vào Windows vì thị phần của nó rất lớn. Linux ít bị hơn vì chiếm thị phần nhỏ, các hacker chưa thèm để ý đến. Và ngụ ý đằng sau lập luận này là Linux và các ứng dụng Linux cũng không an toàn gì hơn Windows và các ứng dụng Windows.

Lý luận này không đứng vững được khi xét đến các phần mềm máy chủ web. Theo một nghiên cứu của hãng NetCrap tháng 9/2004 [1], 68% website chạy trên phần mềm máy chủ web nguồn mở Apache, 21% chạy trên Microsoft IIS (Internet Information Services). Nếu theo lý luận trên, virus, malware nhằm vào Apache và hệ điều hành bên dưới nó phải nhiều hơn, cũng như các cuộc tấn công thành công vào Apache phải nhiều hơn Windows server và IIS.

Tuy nhiên thực tế lại chứng tỏ ngược lại. IIS từ lâu đã là mục tiêu hàng đầu của các loại sâu (worm) và các kiểu tấn công, và nhiều những cuộc tấn công thành công lớn. Sâu Code Red khai thác lỗi tràn bộ đệm của IIS để giành quyền kiểm soát web server đã lan tràn trên 300,000 máy chủ và chỉ dừng lại do bản thân sâu đó được lập trình tự ý ngừng lây nhiễm. Sâu Code Red.A còn lây nhanh hơn và cũng tự ngừng sau ba tuần. Một sâu khác, IISWorm, có tác hại giới hạn chỉ vì người viết nó kém chứ không phải IIS tự bảo vệ tốt.

Sâu cho Apache cũng có, ví dụ Slapper (mặc dù thực ra Slapper khai thác lỗi của OpenSSL, không phải lỗi của Apache). Tuy nhiên, sâu Apache hiếm khi tạo nên thành tựu nổi bật vì tác hại của chúng giới hạn và dễ dàng bị tiêu diệt. Có thể diệt sâu và khôi phục site bị nhiễm chỉ bằng một vài lệnh mà không cần phải reboot máy nhờ vào bản chất module của Linux và Unix.

Có lẽ vì thế mà theo nghiên cứu nói trên của Netcrapt, 47 trong 50 site có thời gian chạy liên tục dài nhất (uptime) chạy trên Apache [2] . Không một site nào trong 50 site trên chạy trên Windows hoặc IIS.

Xem được mã nguồn là dễ tìm ra lỗi để tấn công.

Thành công về an ninh nêu trên của Apache cũng bác bỏ một điều hoang tưởng khác: Phần mềm nguồn mở nguy hiểm hơn phần mềm nguồn đóng vì ai cũng có thể tìm hiểu mã nguồn để tìm ra khe hở tấn công.

Thực tế thì số lượng virus, worm, Trojan, spyware và các loại mã độc khác trên Windows nhiều không đếm xuể (mặc dù mã nguồn của Windows không công khai). Chúng hung hăng tới mức có thể lây nhiễm vào một hệ Windows XP chưa được vá sau 16 phút kết nối Internet, ngắn hơi thời gian cần để tải và cài đặt bản vá [3].

Một ví dụ khác: Apache là phần mềm nguồn mở và thường cũng chạy trên các hệ điều hành nguồn mở, ai cũng đọc được mã nguồn của hai phần mềm đó. Nếu theo lý luận trên, chúng phải bị tấn công nhiều hơn, thời gian uptime ngắn hơn Microsoft Windows và IIS, nhưng thực tế ngược lại như đã nói ở trên. Vậy việc đọc được mã nguồn không mang lại lợi ích gì thêm cho hacker. (Đọc được mã nguồn là một chuyện, có tìm ra khe hở trong đó để tấn công hay không lại là chuyện khác – ND)

Các lý lẽ mơ hồ chỉ dựa trên một tiêu chí

Hai lý lẽ nữa là “Linux có nhiều cảnh báo về lỗi an ninh hơn Windows và vì thế Windows an toàn hơn” và “thời gian trung bình từ lúc phát hiện lỗi đến lúc công bố bản vá của Linux dài hơn của Windows và do đó Windows an toàn hơn”.

Cái lý lẽ sau là bí hiểm nhất vì không hiểu nó dựa vào đâu. Microsoft mất bảy tháng để chữa một trong những lỗi nghiêm trọng nhất (Microsoft Security Bulletin MS04-007 ASN.1 Vulnerability, eEye Digital Security publishes the delay in advisory AD20040210) và có những lỗi Microsoft còn công khai nói họ sẽ không bao giờ chữa.

Thời gian khắc phục lỗi nhanh cũng không phải là một tiêu chí để nói là Windows an toàn hơn Linux. Nếu bạn bị đau tim, bạn muốn vào cấp cứu ở một bệnh viện có thời gian từ lúc vào viện đến lúc xuất viện ngắn nhất hay là đến một bệnh viện có chế độ chăm sóc chu đáo nhất?

Việc lựa chọn phần mềm rõ ràng không chỉ dựa trên một tiêu chí thời gian chữa lỗi ngắn nhất. Ngay số lần cảnh báo lỗi an ninh chung chung cũng vô nghĩa. Phải biết rõ trong đó bao nhiêu lỗi có thể gây hậu quả, trong các hậu quả, bao nhiêu phần trăm là nghiêm trọng? Nên chọn một phần mềm có 100 lỗi nhưng đều nhẹ hoặc chỉ user có quyền đăng nhập mới khai thác được hay chọn một phần mềm chỉ có 1 lỗi nhưng hacker có thể qua Internet chui vào xóa hết dữ liệu?

(Trong phần sau của báo cáo này, tác giả xây dựng một hệ thống các tiêu chí logic, chi tiết để đánh giá mức độ nghiêm trọng của các lỗi bảo mật. Kết quả đánh giá đã trình bày tóm tắt ở phần đầu báo cáo – ND)

So sánh thiết kế của Windows và Linux.

1- Thiết kế của Windows

Virus, Trojan và các loại mã độc khác thâm nhập được vào Windows vì những nguyên nhân rất thông thường với Windows nhưng xa lạ với Linux:

  1. Windows chỉ gần đây mới chuyển từ thiết kế một người dùng sang thiết kế nhiều người dùng.
  2. Windows được thiết kế theo nguyên tắc đơn khối (monolithic) không phải đa khối (modular) như Linux.
  3. Windows phụ thuộc quá sâu vào mô hình RPC ( Remote Procedure Call).
  4. Windows tập trung vào giao diện đồ họa.

Gần đây Windows mới phát triển từ thiết kế một người dùng (single-user design) sang mô hình đa người dùng (multi-user model)

Thiết kế đầu tiên của Windows là một người dùng (single-user). Vì vậy cả người dùng và phần mềm ứng dụng đều có thể tự do truy cập đến toàn hệ thống, lục lọi mọi chương trình hệ thống hoặc file hệ thống quan trọng. Do đó, virus và các loại mã độc cũng có thể làm vậy vì Windows không cô lập, bảo vệ các chương trình hoặc file hệ thống.

Windows XP là phiên bản Windows đầu tiên có những cố gắng nghiêm chỉnh để cách ly người dùng khỏi hệ thống, mỗi người dùng có các file riêng và quyền truy cập hệ thống hạn chế. Nhưng khi đó, các ứng dụng Windows cũ lại không chạy được vì chúng “quen” được phép lục tung hệ thống. Do đó, Windows XP có một kiểu chạy tương thích (compatibility mode) cho phép các chương trình ứng dụng chạy như thể chạy trên các hệ Windows cũ, có quyền truy cập tự do vào hệ thống. (Và virus cũng có thể làm được vậy – ND)

Như vậy, Windows XP đã là một tiến bộ nhưng vẫn không phải hệ đa người dùng (multi-user) thực sự và do đó vẫn còn các lỗ hổng an ninh của hệ single-user.

Windows Server 2003 là một bước tiến mới về môi trường đa người dùng thật sự nhưng vẫn không thoát khỏi các lỗ hổng an ninh thừa kế từ các đời single-user trước. Vì vậy, Windows server 2003 mặc định phải tắt nhiều tính năng của trình duyệt có nguy cơ về an ninh như ActiveX, scripting,…

(Ở đây có hai vấn đề: a/do mới chuyển sang multi-user nên công nghệ sẽ không hoàn chỉnh, chín muồi được như Linux đã làm từ hàng chục năm nay, b/vẫn phải đảm bảo tương thích với một số ứng dụng cũ nên sẽ tạo lỗ hổng an ninh. Gần đây, Google khi xây dựng hệ Chrome OS đã hứa hẹn là sẽ thiết kế mới hoàn toàn để đảm bảo an ninh. Và chỉ có như vậy mới triệt để -ND)

Windows được thiết kế đơn khối (Monolithic by Design) không phải đa khối (Modular).

Một hệ đơn khối thì các tính năng tích hợp trong một thể thống nhất. Ngược với đơn khối, trong hệ đa khối các tính năng được chia thành các lớp (các module) riêng biệt, mỗi lớp có khả năng truy cập giới hạn đến các lớp khác.

Trong khi một số nhược điểm an ninh của Windows là do thiết kế đơn người dùng như đã nói ở trên, một số nhược điểm khác lại do những quyết định thiết kế cố tình. Microsoft đã loại trình duyệt Nestcape cạnh tranh bằng cách tích hợp trình duyệt Internet Explorer vào hệ điều hành đến mức không thể gỡ ra được. Dùng Help hay Outlook, … đều phải gọi đến IE. Microsoft đã thành công loại các sản phẩm cạnh tranh bằng cách tích hợp ngày càng nhiều các dịch vụ vào hệ điều hành nhưng điều đó cũng tạo nên một con quái vật gồm các dịch vụ phụ thuộc qua lại lẫn nhau chặt chẽ và đó chính là một hệ đơn khối.

Sự phụ thuộc chặt chẽ vào nhau của các dịch vụ tạo ra hai hệ quả xấu.

Thứ nhất, trong một hệ đơn khối, mọi lỗ hổng an ninh của một bộ phận sẽ ảnh hưởng đến tất cả các bộ phận khác phụ thuộc vào nó. Việc tích hợp IE vào hệ điều hành sẽ làm cho một lỗ hổng an ninh của IE sẽ ảnh hường đến hàng loạt ứng dụng khác.

Thứ hai, một hệ đơn khối về bản chất là không ổn định. Khi thiết kế một hệ có quá nhiều quan hệ phụ thuộc lẫn nhau giữa các bộ phận, việc thay đổi một bộ phận có thể gây nên vô số rủi ro, ảnh hưởng dây chuyền đến các bộ phận khác phụ thuộc vào bộ phận bị thay đổi. Một ví dụ điển hình là mỗi lần cập nhật hoặc vá lỗi một bộ phận của Windows thường làm hỏng các bộ phận hoặc ứng dụng khác (nhất là ứng dụng của bên thứ ba).

Windows phụ thuộc quá nhiều vào mô hình RPC.

RPC là chữ viết tắt của Remote Procedure Call (gọi thủ tục từ xa). Một chương trình gửi một message lên mạng để bảo một chương trình khác làm một việc gì đó. Sở dĩ có từ “remote – từ xa” là vì chương trình được gọi có thể nằm trên cùng máy, trên máy khác trong mạng hoặc thậm chí trên Internet.

RPC là một nguy cơ an ninh tiềm ẩn vì nó cho phép một máy khác trong mạng có thể bảo máy của bạn làm một việc gì đó. Windows phụ thuộc vào RPC đến mức mà bạn không thể tắt RPC đi ngay cả khi máy không nối mạng. Một số lỗi an ninh nghiêm trọng của Windows Server 2003 (xem bảng dưới đây) là do khe hở an ninh trong chính chức năng RPC chứ không phải trong chương trình sử dụng RPC. Cách thông thường nhất để khai thác một lỗ hổng RPC là tấn công dịch vụ sử dụng RPC.

Điều quan trọng là RPC không phải lúc nào cũng cần và vì thế rất khó hiểu là tại sao Microsoft lại dựa vào nó một cách bừa bãi đến vậy. Nếu một web site dùng một database server và một web server trên cùng một máy thì database server không cần phải dùng đến RPC để liên lạc với web server (nhưng lại vẫn phải dùng nếu là sản phẩm của Microsoft).

Nhắc đến điều đó vì chính sâu Slammer, một trong những sâu nguy hiểm nhất từng tấn công Internet, khai thác một trong những lỗi RPC của Microsoft. Slammer lây nhanh qua nhiều hệ thống đến nỗi thực tế đã làm tê liệt Internet.

Windows chú trọng vào giao diện đồ họa máy để bàn quen thuộc

Microsoft xem giao diện Windows quen thuộc của máy để bàn là một ưu điểm khi dùng Windows Server 2003.

Vì thế người dùng đăng nhập vào Windows Server với tên người quản trị (admininstrator) và có toàn quyền với hệ thống. Như vậy, khi dùng một chương trình dễ bị lỗi an ninh như IE, toàn server sẽ bị nguy hiểm.

(Trong Linux server thì không như vậy. Xem phần sau)

2- Thiết kế của Linux

Theo kết quả một cuộc điều tra mùa hè 2004 của Evans Data Linux Developers, 93% nhà lập trình Linux đã gặp dưới hai sự cố khi máy Linux bị lỗi. 87% chỉ gặp 1 sự cố và 78% chưa bao giờ gặp một cuộc xâm nhập nào vào máy Linux. Trong một số ít trường hợp bị xâm nhập, nguyên nhân chủ yếu là do đặt cấu hình an ninh không tốt.

92% số người được hỏi chưa bao giờ gặp một virus, Trojan hoặc các loại mã độc khác trên các máy Linux.

Virus, Trojan và các loại mã độc khác hiếm khi nhiễm được vào một hệ Linux một phần vì các lý do sau:

  1. Linux có thiết kế multi-user lâu đời, được rà soát, bổ xung đầy đủ.
  2. Linux hầu như dựa trên thiết kế đa khối.
  3. Linux không phụ thuộc vào RPC, các dịch vụ thường mặc định được cấu hình không dùng RPC.
  4. Các máy chủ Linux là lý tưởng để quản trị từ xa, không trực tiếp.

Linux có thiết kế multi-user lâu đời, được rà soát, bổ xung đầy đủ.

Ngay từ đầu, Linux xây dựng theo mô hình Unix đã là một hệ multi-user, mỗi user chỉ có quyền truy cập hạn chế, vừa đủ vào hệ thống vào các ứng dụng. Khi một user chạy một ứng dụng, ứng dụng đó chạy theo các quyền hạn chế của user, chỉ ghi vào thư mục riêng của user, không thay đổi các file hệ thống và cả các thư mục của user khác trừ khi người quản trị cho phép.

Điều quan trọng nữa là mọi tính năng, dịch vụ mà Linux cung cấp hầu hết đều dưới dạng các module thư viện (modular libraries). Do đó, khi một trình soạn văn bản cần tô màu một ảnh JPEG, chức năng tô màu sẽ chạy với cùng quyền truy cập như trình soạn văn bản, tức là với quyền của user sử dụng trình soạn văn bản đó. Nếu có một lỗ hổng an ninh trong thủ tục tô màu, hacker khai thác lỗ hổng đó cũng chỉ có quyền như user và do đó hạn chế thiệt hại vì không tác động được vào hệ thống. Đó chính là ưu điểm của thiết kế đa khối.

Do bản chất đa khối của Linux, khi gửi một email có nhiễm virus cho một Linux user, virus đó không thể lan ra toàn bộ máy. Dù trình email client có tồi đến thế nào đi nữa thì virus cũng chỉ có thể nhiễm, làm hỏng thư mục riêng của user. Trình duyệt Linux không hỗ trợ các đối tượng kém an toàn như ActiveX controls, và dù nó có hỗ trợ thì một ActiveX control chứa mã độc cũng chỉ chạy với quyền của user đang dùng trình duyệt, không thể phá hoại hệ thống hoặc các user khác được.

Ngay cả các dịch vụ, như máy chủ web, cũng chạy như một user với quyền truy cập hạn chế. Ví dụ trong bản Linux Debian, máy chủ web Apache chạy với quyền của user www-data. Nếu hacker chiếm được quyền kiểm soát Apache, hacker đó cũng chỉ tác động được đến các file mà user www-data là chủ (owner). Cơ sở dữ liệu MySQL, thường dùng chung với Apache, được chạy với quyền của user mysql. Do đó nếu Apache có lỗ hổng, hacker kiểm soát được Apache cũng không kiểm soát được MySQL vì MySQL do một user khác làm chủ.

Ngoài ra, các user điều khiển các dịch vụ như nói ở trên thường không có quyền truy cập các lệnh. Vì vậy nếu hacker nắm được quyền điều khiển user mysql cũng không thể phát ra các lệnh cho máy chủ Linux vì user mysql không có quyền chạy lệnh.

Ngược hẳn lại các điều nói trên, Windows ban đầu được thiết kế để mọi user và mọi ứng dụng đều có quyền admininstrator với mọi file của toàn bộ hệ thống. Chỉ sau này, Windows mới hạn chế dần quyền của user. Windows Server 2003 đã gần đạt được đến mức đó. Nhưng phương pháp luận của Microsoft để dựng rào cản giữa user và hệ thống vẫn là dựa trên cơ sở thiết kế cũ mà không thiết kế lại một cách cơ bản để hỗ trợ khả năng multi-user và đảm bảo an ninh.

Thiết kế Linux là đa khối, không phải đơn khối

Linux là một hệ điều hành phần lớn theo thiết kế đa khối từ nhân (kernel) đến các ứng dụng. Trong Linux hầu như không có cái gì liên kết chặt với cái khác đến mức không gỡ ra được. Hệ thống Help hoặc trình email không phụ thuộc vào một động cơ trình duyệt (browser engine) duy nhất. Có thể dễ dàng cấu hình trình email dùng động cơ trình duyệt có sẵn hoặc bất kỳ trình duyệt nào khác để xem các thư HTML. Vì vậy một lỗ hổng an ninh trong động cơ trình duyệt sẽ ảnh hưởng rất ít hoặc không ảnh hưởng đến các ứng dụng khác vì có ít hoặc không có ứng dụng nào phụ thuộc vào trình duyệt đó.

Không phải mọi thứ trong Linux đều đa khối. Hai môi trường đồ họa phổ biến nhất GNOME và KDE có thiết kế ít nhiều đơn khối; ít nhất cũng đủ để nếu update một phần của GNOME hoặc KDE có thể có nguy cơ làm hỏng các phần khác. Tuy nhiên, chúng cũng không đơn khối đến độ chỉ cho phép chạy các ứng dụng viết riêng cho chúng. Có thể chạy các ứng dụng GNOME trong KDE và ngược lại.

Nhân Linux dùng các module driver, nhưng về cơ bản nó là nhân đơn khối trong đó các dịch vụ của nhân phụ thuộc lẫn nhau. Tuy nhiên, tác hại của tính đơn khối này cũng được giảm đến mức tối thiểu vì nhân Linux được thiết kế sao cho nhỏ nhất. Linux đi theo triết lý sau: “Nếu một việc có thể làm được bên ngoài nhân, thì nó phải được làm ngoài nhân”.

(Hình như điều này bây giờ đã thay đổi, xem tại đây – ND)

Ngược lại, lỗi driver màn hình là nguyên nhân phổ biến nhất dẫn đến cái-chết-màn-hình-xanh của Windows. Đó là vì Windows tích hợp đồ họa vào nhân, lỗi đồ họa sẽ làm sập cả hệ thống. Trong Linux, trừ một vài trường hợp ngoại lệ như với driver màn hình Nvidia, Linux buộc tất cả các driver card màn hình chạy bên ngoài nhân. Một lỗi của driver có thể làm hỏng môi trường đồ họa nhưng không làm sập cả hệ thống. Chỉ cần khởi động lại môi trường đồ họa mà không phải khởi động lại máy tính.

Linux không bị phụ thuộc vào mô hình RPC (Remote Procedure Call)

Như đã nói ở trên, Windows phụ thuộc nặng vào RPC và cho chạy nó cả khi không cần thiết. Điều đó dẫn tới những nguy cơ an ninh nghiêm trọng.

Phần lớn các chương trình Linux khi cài đặt đều mặc định tắt truy cập mạng. Ví dụ cơ sở dữ liệu MySQL thường được cài sao cho nó không nghe các lệnh từ mạng. Nếu bạn xây dựng một website dùng Apache và MySQL chạy trên cùng một máy thì Apache sẽ liên hệ trực tiếp với MySQL và MySQL sẽ không liên hệ gì với mạng. (Ngược lại Microsoft SQL Server luôn luôn lắng nghe mạng dù có cần hay không). Nếu muốn MySQL nghe các lệnh đến từ mạng thì phải thiết lập điều đó bằng tay, rồi xác định user và máy được phép truy cập đến MySQL.

Ngay cả khi các ứng dụng Linux mặc định sử dụng mạng, chúng cũng thường được cấu hình để chỉ trả lời máy cục bộ, bỏ qua các yêu cầu của các máy khác trong mạng.

Các máy chủ Linux là lý tưởng để quản trị từ xa

Máy chủ Linux thường có thể và nên cài như một hệ “không đầu – headless” (không có màn hình) và quản trị từ xa (truy cập máy chủ từ một máy khác trong mạng, không dùng bàn phím, màn hình nối trực tiếp vào máy chủ – ND). Đó là kiểu cài lý tưởng cho máy chủ vì quản trị từ xa không có những nguy cơ mà quản trị tại chỗ có thể gặp.

Ví dụ, bạn có thể log in vào máy để bàn của bạn như một user thường với quyền hạn hạn chế rồi quản trị máy chủ Linux qua một giao diện quản trị web (Admininstration consol). Ngay cả những lỗi an ninh nguy hiểm nhất của trình duyệt web cũng chỉ ảnh hưởng đến user thường mà bạn đã dùng log in vào máy để bàn của bạn, không ảnh hưởng gì đến máy chủ.

(webmin là một trong những giao diện quản trị web quản trị được khá nhiều thứ trên máy chủ – ND)

Trong các phần tiếp theo, tác giả xây dựng một hệ thống các tiêu chí đánh giá lỗi bảo mật, áp dụng cụ thể vào 40 lỗi được công bố gần thời điểm viết báo cáo và kết quả tìm kiếm trong cơ sở dữ liệu lỗi của CERT. Kết quả tóm tắt đã được nêu ở phần đầu báo cáo.

Chi tiết đọc thêm tại đây.

Thi hack ba hệ điều hành lấy 20.000USD

Một cuộc thi hack máy tính mới đây được tổ chức. Ba chiếc notebook cài các hệ điều hành Windows Vista, Mac OS X và Ubuntu Linux với các bản vá lỗi mới nhất. Cuộc thi tiến hành trong ba ngày. Trong ngày đầu, người nào hack được máy nào sẽ được thưởng 20.000 USD và chiếc máy tính đó. Sang ngày thứ hai, giải thưởng rút xuống còn 10.000 USD + notebook và tới ngày thứ ba thì chỉ còn 5.000 USD. Luật chơi cũng nới lỏng dần: trong ngày đầu chỉ được tấn công hệ điều hành, sang ngày thứ hai được phép khai thác lỗi của các phần mềm tiêu chuẩn và tới ngày thứ ba thì được dùng mọi biện pháp có thể.

Máy đầu tiên bị hạ vào ngày thứ hai là MacBook Air chạy hệ điều hành Mac Leopard khi một lỗi trong trình duyệt Safari bị khai thác. Sang ngày thứ ba, đến lượt chiếc laptop Fujitsu U810 cài Windows Vista bị hạ khi các hacker khai thác một lỗi trong phần mềm Adobe Flash.

Hết thời hạn ba ngày, duy nhất chỉ còn chiếc Sony Vaio cài Ubuntu Linux là trụ vững được, chưa bị hack. Nếu cho thêm thời gian? Không ai biết được. Dù sao Linux cũng phần nào chứng minh được tiếng tăm an toàn của nó xưa nay.

Cuộc thi này nối tiếp cuộc thi năm ngoái chỉ nhằm hack hệ điều hành Mac OS X. Chi tiết xem thêm tại đây.