Kinh nghiệm học và làm nghề an toàn thông tin
Do vậy, cách tiếp cận phù hợp để học và làm tốt nghề ATTT là rất quan trọng. Nhằm giúp những người mới tham gia học và làm nghề ATTT có một cách nhìn mới về nghề này, Tạp chí ATTT giới thiệu một số phương pháp học và làm nghề ATTT của tác giả Dương Ngọc Thái - một chuyên gia có nhiều kinh nghiệm và say mê với nghề ATTT.
Nghề an toàn thông tin
Hầu hết chúng ta đều nghĩ rằng, làm ATTT nghĩa là đảm bảo an toàn hệ thống mạng (network/system security), thực tế đây chỉ là một trong số rất nhiều công việc của ngành này. Dưới đây là bốn nhóm công việc chính trong ngành ATTT. Đối với mỗi nhóm công việc, tác giả sẽ bàn luận về triển vọng nghề nghiệp ở Việt Nam và Mỹ, hai nơi mà tác giả được tiếp cận, quan sát.
An toàn sản phẩm (product security): Công việc chính của nhóm này là làm việc với các đội phát triển sản phẩm, để tìm lỗ hổng và kỹ thuật tấn công mới, đảm bảo sản phẩm làm ra an toàn cho người dùng và an toàn cho hệ thống của công ty, cụ thể là:
- Kiểm định mã nguồn và thiết kế của sản phẩm;
- Phát triển các giải pháp kỹ thuật và quy trình phát triển phần mềm an toàn để phát hiện và ngăn chặn những kỹ thuật tấn công đã biết;
- Đào tạo nhân lực để nâng cao nhận thức về ATTT và kỹ năng viết mã an toàn;
- Nghiên cứu các hướng tấn công mới có thể ảnh hưởng hệ thống sản phẩm và dịch vụ của công ty.
Ở Mỹ, thông thường chỉ có các hãng lớn như Facebook, Google, Microsoft, Oracle,... hay các tập đoàn tài chính ngân hàng lớn mới có đội ngũ cán bộ kỹ thuật để đảm nhiệm công việc này. Các công ty vừa và nhỏ thường chỉ thuê dịch vụ của các công ty tư vấn. IBM và Big Four đều cung cấp dịch vụ tư vấn này. Còn ở Việt Nam, thị trường việc làm an toàn sản phẩm chưa có nhiều khởi sắc và rất ít tổ chức, doanh nghiệp có nhân viên chuyên trách lĩnh vực này. Các tổ chức, doanh nghiệp hầu như chỉ tập trung vào khâu đảm bảo an toàn vận hành. Các công ty tư vấn ATTT ở Việt Nam cũng ít khi tư vấn về an toàn sản phẩm, mà chỉ tập trung tư vấn chung về các quy trình và tiêu chuẩn ATTT.
An toàn vận hành (operations security): Công việc chính của nhóm này là đảm bảo an toàn cho toàn bộ hệ thống thông tin của doanh nghiệp, với ba nhiệm vụ chính:
- Ngăn chặn: đưa ra các chính sách, quy định, hướng dẫn về an toàn vận hành; kiện toàn hệ thống thông tin, từ các vành đai cho đến máy tính của người dùng cuối; cấp và thu hồi quyền truy cập hệ thống; quét tìm lỗ hổng trong hệ thống, theo dõi thông tin lỗ hổng mới và làm việc với các bên liên quan để vá lỗi.
- Theo dõi và phát hiện: thực hiện các hoạt động giám sát an ninh mạng.
- Xử lý: phản hồi (incident response) và điều tra số (digital forensics) khi xảy ra sự cố ATTT, từ việc tài khoản của nhân viên bị đánh cắp, rò rỉ thông tin sản phẩm mới, cho đến tấn công từ chối dịch vụ.
Đây là công việc khó khăn, thường chỉ có các công ty lớn của Mỹ mới có đội ngũ kỹ thuật để phụ trách toàn bộ khối lượng công việc này, nhất là đối với nhiệm vụ xử lý và điều tra.
Đa số các công ty chỉ tập trung vào ngăn chặn và sử dụng dịch vụ của bên thứ ba cho hai nhiệm vụ còn lại. Các hãng như Mandiant, Netwitness hay HBGary cung cấp dịch vụ điều tra các vụ xâm nhập và có nhiều hãng khác cung cấp dịch vụ giám sát an ninh mạng.
Ở Việt Nam, nhóm công việc này phong phú hơn so với nhóm an toàn sản phẩm. Các công ty và tổ chức tài chính lớn đều có người chuyên trách về an toàn vận hành. Tuy vậy, hầu như chưa có tổ chức nào làm về phản hồi và điều tra sự cố.
Phát triển công cụ (applied security):
Công việc chính của nhóm này là phát triển và cung cấp các công cụ, dịch vụ và thư viện phần mềm có liên quan đến ATTT cho các nhóm phát triển sản phẩm sử dụng lại. Nhóm này bao gồm các kỹ sư nhiều kinh nghiệm và có kiến thức vững chắc về ATTT. Họ phát triển các thư viện và dịch vụ dùng chung như phân tích mã tĩnh - phân tích mã động (static - dynamic code analysis), hộp cát (sandboxing), xác thực (authentication), kiểm soát truy cập (authorization), mã hóa (encryption) và quản lý khóa (key management)....
Đây là công việc dành cho những người đang phát triển phần mềm chuyên nghiệp và muốn chuyển sang làm về ATTT và cũng là công việc của những người đang làm về an toàn sản phẩm nhưng tập trung vào việc xây dựng sản phẩm hơn là tìm lỗ hổng. Công việc này thường chỉ có ở các công ty phần mềm lớn. Ở các công ty nhỏ thì các kỹ sư phần mềm thường phải tự thực hiện công việc này mà ít có sự hỗ trợ khác.
Tìm diệt mã độc và các nguy cơ khác (threat analysis): Công việc chính của nhóm này là phân tích, truy tìm và tiêu diệt tận gốc mã độc và các tấn công có chủ đích (targeted attack). Mã độc ở đây có thể là virus, sâu máy tính, hay mã khai thác các lỗ hổng đã biết (hoặc chưa được biết đến) mà phần mềm diệt virus thông thường chưa phát hiện được. Các loại mã độc này thường được sử dụng trong các tấn công có chủ đích vào doanh nghiệp.
Học an toàn thông tin
Lập trình là cách tốt nhất để tiếp thu kiến thức một môn học nào đó, biến nó thành của mình. Kỹ năng lập trình rất quan trọng, bởi hầu hết các vấn đề và giải pháp của ATTT là đến từ phần mềm. Muốn tìm lỗi của phần mềm thì bạn phải hiểu được phần mềm thông qua mã nguồn trực tiếp hay trung gian của nó. Có thể không phải lập trình hàng ngày, nhưng bạn phải viết được những công cụ đơn giản, hay những thư viện hỗ trợ cho công việc của mình và các lập trình viên khác. Người làm ATTT cần phải thông thạo C, x86 Assembly, Python (hoặc Ruby) và JavaScript.
Học như thế nào?
Ở đại học người ta có cách tiếp cận top- down, nghĩa là dạy từ đầu đến cuối những kiến thức nằm trong chương trình. Điều này dễ dẫn đến tình trạng là sinh viên phải học những kiến thức mà họ không thấy cần thiết. Nhưng thực tế, toàn bộ giáo trình đại học đã cung cấp một khung kiến thức rất cơ bản, cần thiết cho một kỹ sư ATTT.
Khi làm việc thì cách tiếp cận là bottom- up, nghĩa là “lao vào làm”, thấy thiếu kiến thức chỗ nào thì học để bù vào chỗ đó. Lúc này chúng ta hoàn toàn chủ động trong việc học và cũng hiểu rõ cần học cái gì và tại sao. Điều thú vị là mỗi khi truy ngược lại nguồn gốc của những kiến thức cần phải có, chúng ta sẽ thường thấy chúng nằm trong chương trình đại học. Ví dụ, muốn luyện kỹ năng dịch ngược mã phần mềm (reverse code engineering - RCE) thì cần phải có kiến thức về tổ chức và cấu trúc máy tính. Hoặc nếu muốn học về mật mã học thì phải học lý thuyết tính toán, mà khởi nguồn là lý thuyết máy tự động. Như vậy, để nhận thấy được những “lỗ hổng kiến thức”, bạn phải tham gia làm một công việc đủ chuyên sâu. Nếu bạn chỉ lập trình PHP thì bạn sẽ không thể hiểu được tại sao phải nắm vững tổ chức và kiến trúc máy tính. Hoặc công việc của bạn chỉ là quản trị hệ thống (sysadmin) thì cũng sẽ rất khó để thấy được tại sao cần phải học lý thuyết máy tự động.
Trước tiên, chúng ta cần tập trung nắm vững kiến thức cơ bản và dựa vào những chương trình của bậc đại học. Sau đó, cần tìm dự án lề (side project) mà bạn có thể tham gia, nó sẽ giúp bạn nhận ra những mảng kiến thức còn thiếu. Bạn có thể tham khảo chương trình SCPD, đây là chương trình học từ xa thông qua video của đại học Stanford. Ngoài Stanford và Coursera, bạn cũng có thể tham khảo các lớp trên Udacity, OCW và MITx. Và thời điểm tốt nhất để học là khi bạn đang là sinh viên hoặc là khi bạn đang làm nghề ATTT.