Để học sinh cấp 1 cũng hiểu được "Backdoor" là cái gì!

Mình nhớ hồi kỳ 1 năm 5 đại học, lớp mình có học môn Xử lý tiếng nói. Review qua thì đây là 1 môn học khá là ác mộng với lớp mình. Bên dưới là ảnh đề thi cuối kỳ mà mình có chụp lại được vì làm bài xong sợ tạch và phải học lại. May mắn thay là Thầy rất dễ tính nên cả lớp ko ai tạch nếu như đi học đầy đủ cả.

Những ấn tượng sâu sắc nhất về Thầy giáo dạy môn này của lớp mình là 2 câu nói với đại ý là như sau:
  • Ừ, lại "rút kinh nghiệm". Sợi dây kinh nghiệm của chúng ta có vẻ dài vô tận nhỉ, thấy rút mãi chưa hết.
  • Để giải thích 1 khái niệm khoa học, hãy cố gắng giải thích sao cho đến bác nông dân cày ruộng cũng có thể hiểu được. Càng cần ít tri thức để hiểu thì nghĩa là lời giải thích càng xuất sắc!
Trong đó, mấy thằng bọn mình tâm đắc nhất là câu nói thứ 2. Đến mức mà Thầy còn đố cả lớp phải giải thích các khái niệm sao cho học sinh cấp 3/cấp 2/cấp 1 hay là bác nông dân nghe cũng thấy hiểu. Đương nhiên là bọn mình ko làm được rồi, cố gắng lắm cũng chỉ đến mức cho học sinh cấp 2 hiểu được thôi. Mà mình cũng quên mất lần đó là giải thích về khái niệm j rồi.

Do đó, trong bài viết này, mình sẽ cố gắng giải thích khái niệm "Backdoor" (cửa hậu/cửa sau) của phần mềm (hoặc thuật toán) sao cho cần càng ít tri thức để hiểu thì càng tốt. Đương nhiên mình sẽ cập nhật lại bài viết nếu như phát hiện ra cách giải thích cần ít tri thức hơn. Ban đầu, mình sẽ giải thích với kiến thức của học sinh cấp 2 (nước ta).
Đề thi cuối kỳ môn Xử lý tiếng nói, lớp KSTN CNTT K58

1. Khái niệm "backdoor".

"Backdoor" (hay còn gọi là "trapdoor") là 1 khái niệm dùng nhiều trong Tin học, dùng để chỉ một cách thức qua mặt một vấn đề mà ko cần phải thực hiện đầy đủ các bước quy định mà vấn đề đó đặt ra. Vấn đề ở đây có thể là Hệ thống hoặc Thuật toán. 

Có thể hiểu backdoor là 1 cửa bí mật để xâm nhập vào chương trình hoặc để phá giải ngược 1 thuật toán mã hóa, mà người nào biết nó thì có thể dễ dàng xâm nhập hoặc phá giải; còn không biết thì sẽ phải thực hiện đầy đủ các thủ tục đăng nhập Hệ thống cũng như giải đầy đủ bài toán.

2. Giải thích "backdoor".

Với các sinh viên ngành CNTT, nhất là chuyên ngành ATTT, khái niệm Backdoor trong Hệ thống là khá dễ hiểu. Vậy còn Backdoor trong thuật toán thì như nào? Mình sẽ viết 1 bài riêng có nói về "Knapsack backdoor" (cửa bẫy Bài toán đóng thùng) để ví dụ cụ thể về 1 loại Backdoor của thuật toán.

Với học sinh cấp 3 thì sao? Các em chắc ít khi nghe nói đến Hệ thống, do đó mình sẽ lấy ví dụ về Backdoor trong Thuật toán! Nghe thì ghê gớm chứ cũng chẳng có j khó hình dung đâu. Đơn cử như bài toán giải phương trình này.
Cách giải, các em có thể vào đây để xem nhé! (Cái trang web khốn kiếp kia nó bắt mình phải tắt AdBlock để enable quảng cáo của nó thì nó mới cho xem. Mọi người nhớ cẩn thận, chỉ cần lăn chuột lướt xem đáp án thôi, chứ ko cần click chuột j đâu, đề phòng bị Click jacking)

Nói nôm na rằng nhờ phương pháp "ép nghiệm" bằng máy tính cầm tay kia, các em có thể giải quyết bài toán dễ dàng hơn rất nhiều so với cách làm trực tiếp thông thường. (còn cách làm trực tiếp thông thường thế nào thì mình cũng ko biết nhé, mình rửa tay gác kiếm Toán thi đại học lâu lắm rồi).

Đó, Backdoor của phương trình này chính là "ép nghiệm". Xuất phát từ việc biết 2 giá trị nghiệm căn thức bậc 2 kia chứ đâu xa. Từ việc biết phương trình có 2 nghiệm như thế, các em dễ dàng xác định được nó phải có khả năng "phân tích ra thừa số" là 1 đa thức chứa 2 nghiệm như vậy (Định lý Bezout về nghiệm của đa thức). 

Tâm sư thêm 1 chút là hồi mình học ôn đội tuyển Toán lớp 12, mấy thằng lớp mình đã tự phát hiện ra kỹ thuật "ép nghiệm" kia mà hồi đó chưa có thế lực nào của Casio nổi lên cả. Khi đó bọn mình vô cùng lạm dụng "ép nghiệm". Tuy nhiên sau 1 hồi thấy nó xa rời tư duy và lạm dụng máy tính cầm tay quá, nên cũng đã hạn chế sử dụng. Vậy mà hồi mình lên đại học, ko hiểu vì một động lực kỳ diệu nào đó mà các thế lực sử dụng Casio nổi lên như cồn và tranh đấu ngôi vị độc tôn vs nhau 1 cách dậy sóng, kiểu ông nào cũng muốn bên còn lại công nhận "tao mới là chính tông" vậy! Đúng là ham thích fame mà.

Vậy, với học sinh cấp 2 thì sao? Đương nhiên, mình cũng sẽ lấy ví dụ về Backdoor trong Thuật toán nhé! Backdoor mà các em hay gặp chính là "yếu tố phụ" trong các bài toán Hình học đó thôi.

Ví dụ bài hình lớp 7 này. Cho tam giác nhọn ABC có B và C cố định. Dựng về phía ngoài tam giác ABC 2 tam giác vuông cân tại B và C là tam giác ABC và tam giác ACE. Hạ DM và EN vuông góc với đường thẳng BC (M và N nằm trên đường thẳng BC). Chứng minh tổng DM + EN là 1 hằng số.

Bài này mình ngồi nghĩ bừa ra thôi, chứ chắc đề bài có thể khó hơn vậy. Cách làm là từ A, hạ AH vuông góc với BC. Ta sẽ chứng minh DM + EN = BC dựa vào 2 cặp tam giác vuông bằng nhau. Quá là ez! "Yếu tố phụ" trong bài này chính là đường cao AH của tam giác ABC. Đó cũng chính là Backdoor của bài toán.

Khi các em biết kẻ thêm "yếu tố phụ", bài toán rất dễ giải; còn nếu ko nhìn ra được đường phụ, bài toán thực sự chắc là rất khó!

Tâm sự thêm 1 chút. Đối với mình, Hình học cấp 2 thực sự rất hay và khó. Lên cấp 3, mình ko được học các kiến thức Hình học khó để đi thi HSG quốc gia nên đối với mình, Hình học cấp 3 dễ hơn rất rất nhiều so với Hình học cấp 2. Các bài toán Hình học cấp 3 mà khó nhất với mình lại là các bài Hình học Oxy mà phải vận dụng các kiến thức của Hình học cấp 2 (như các tính chất của đường tròn, đường phụ, ...)

Vậy với các em nhỏ học sinh cấp 1? Cái này có vẻ anh chịu chưa tìm ra được ví dụ trực quan. Các em có thể hiểu "vừng ơi mở cửa ra" chính là "backdoor" trong truyện "Alibaba và 40 tên cướp" vậy. 

Vậy đó, Backdoor ko hề khó hiểu và khó hình dung. Do ngày xưa mình học nhiều Toán hơn các môn khác nên cũng chỉ lấy được ví dụ minh họa ở môn Toán thôi; còn các môn khác thì mình thiếu cái nhìn vững chắc nên chưa nhìn ra được ví dụ cụ thể.

3. Đặt "backdoor" vào chỗ nào?

Quay trở lại chuyên môn, Backdoor được chia thành 2 loại: backdoor có ích và backdoor có hại; tùy vào mục đích của người tạo ra backdoor.

Backdoor có ích là loại backdoor được người phát triển hệ thống tạo ra; có mục đích làm đơn giản hóa trong quá trình phát triển phần mềm, kiểm thử và vá lỗi. Loại backdoor này thông thường sẽ được loại bỏ trước khi đưa hệ thống vào sử dụng thực tế. Cũng có nhiều trường hợp backdoor này sẽ tiếp tục được giữ lại trong hệ thống cũng như phần mềm, để giúp nhà cung cấp có thể hiệu chỉnh phần mềm dễ dàng hơn, nhằm phục vụ người dùng hiệu quả hơn. Tuy nhiên các backdoor này (cho dù đã được remove hay chưa) thì đều không được công bố. Ví dụ như người sử dụng gà vịt hoặc lười cập nhật phiên bản mới, backdoor sẽ giúp hệ quản trị truy cập và thực thi công việc update một cách tự động. (Window update là 1 ví dụ chẳng hạn, sida vãi).

Backdoor có hại là 1 tập hợp cha của tập Backdoor có ích. Nó bao gồm 2 loại:
  • Loại 1 chính là các Backdoor giống như các Backdoor có ích trên. Tuy nhiên nó được giữ lại với mục đích khác mà chỉ có nhà phát triển mới biết họ sẽ sử dụng nó để làm trò con bò như thế nào với nó. Ví dụ như là giám sát, theo dõi người sử dụng, vân vân và mây mây ...
  • Loại 2 là các Backdoor do một bên thứ 3 (hacker) cố tình cài cắm vào trong phần mềm hoặc hệ thống; cái này được gọi là "mã độc Trojan horse" (Ngựa Trojan - xuất phát từ câu chuyện "con ngựa thành Tơ-roa"). Sau khi cài thành công, hacker có thể dễ dàng ra vào hệ thống; ngoài ra cũng có thể thoải mái tiêm chích thêm các loại mã độc khác vào Hệ thống hơn.
Lưu ý quan trong khác, Backdoor phải do con người điều khiển; khác với Virus hay Worm có thể tự động sao chép và hoạt động.

Backdoor loại 1 có thể được đặt ở vị trí "Đăng nhập" của phần mềm, hoặc trong quá trình xác thực một entry nào đó. Mình đã từng đặt 1 backdoor vào 1 app Android hồi đi thi Hackathon để đơn giản hóa quá trình đăng nhập và soát lỗi. Mình thấy dùng Backdoor kiểu đó khá tiện. Tuy nhiên nếu app đó của mình mà được nhiều người sử dụng như kiểu Flappy Bird của anh Nguyễn Hà Đông thì mình đã giàu sụ nhờ "bán thông tin cá nhân" rồi! Hêhê!

Backdoor loại 2, như đã nói, nó là "con ngựa thành Tơ-roa". Các bạn có thể Google search nhé. Còn ko có thể hiểu nôm na rằng hacker đã qua mặt, lừa người dùng trigger 1 đoạn chương trình mã độc. Khi đoạn chương trình này được kích hoạt, nó sẽ mở 1 port để tạo kết nối (TCP/UDP) đến máy tính của hacker. Từ đó hacker có thể truy cập máy tính từ xa thông qua mạng Internet; và có thể thỏa thích làm điều mình muốn. Các bạn muốn nghịch thì có thể thử nghịch con QuasarRAT này. Con Quasar này, mình đã từng sử dụng để làm ví dụ minh họa cho các học viên hồi đi công tác trên Bắc Kạn với Trần Sư huynh ở Cục An toàn thông tin.

Kết.

Xin lỗi các bác nông dân, cháu sẽ cố gắng quan sát hoạt động cuộc sống thường nhật ở quê mình hơn khi có dịp, để có thể giải thích cho các bác dễ hiểu hơn ạ!

Có thể thấy rằng việc phần mềm có Backdoor hay ko thì người sử dụng như chúng ta không có quyền được biết! Tuy vậy, cũng ko có đạo luật nào trên thế giới nghiêm cấm việc cài đặt Backdoor vào Hệ thống hay thuật toán cả. Backdoor có thể có ích hoặc có hại, tùy thuộc vào mục đích sử dụng. Backdoor có ích ví dụ như việc Chính phủ Mỹ yêu cầu Apple bẻ khóa chức năng "vô hiệu hóa Iphone sau vài lần nhập sai password", nhờ đó cảnh sát của họ có thể Bruteforce attack (tấn công vũ lực - vét cạn không gian mẫu) mà không lo việc Iphone bị khóa sau vài lần nhập sai password.

Để có thể làm được điều đó, Apple đương nhiên phải đặt Backdoor vào Iphone rồi. Tuy nhiên mình nghĩ Apple không cung cấp Backdoor này cho Chính phủ cũng vì đảm bảo quyền riêng tư cho người dùng. Dù j thì việc thực hiện Bruteforce attack cũng là 1 công đoạn mà không phải người dùng phổ thông nào cũng thực hiện nhanh được.

Nhận xét

Bài đăng phổ biến từ blog này

Trên con đường tu đạo luôn cực kỳ theo đuổi!

C++ Con trỏ (Pointer) toàn thư: Phần 4: Con trỏ "đa cấp". Đánh nhau bằng con trỏ.

Vừa ngộ ra sự vi diệu của Padding Oracle Attack thì được tin crush hồi lớp 12 sắp cưới.