13 Jan, 2021
An ninh tính toán
Ngày nay an ninh thông tin là khu vực gay go và phát triển nhanh trong kĩ nghệ phần mềm. Bỏ qua an ninh là điều có thể đưa tới nhiều vấn đề gây thiệt hại. Không may an ninh vẫn không được nhiều người phát triển phần mềm xem xét một cách nghiêm chỉnh hay không được dạy như một môn yêu cầu ở hầu hết các đại học. Khi công nghệ phát triển phổ biến hơn, việc lạm dụng nó trở nên ngày một nghiêm trọng hơn.
An ninh không phải là thứ bạn có thể mua và thêm vào cho hệ thống mà là một phần tích hợp của hệ thống phải được “dựng sẵn bên trong”. Cho dù bạn có thể sửa những khiếm khuyết an ninh nào đó sau khi hệ thống được phát triển, điều đó là quá trễ và sẽ tốn kém cho bạn nhiều để sửa hơn là xây dựng trong các pha kiến trúc, thiết kế và viết mã.
Một cách để giảm đe doạ an ninh là làm tăng nhận biết về rủi ro an ninh. Bất kì ai có cách hiểu thông thường sẽ tiến hành các biện pháp cần thiết nếu người đó biết tới rủi ro. Tuy nhiên, với phổ cập của máy tính, nhiều rủi ro không phải bao giờ cũng thấy được. Máy tính của bạn có thể có bảo vệ bằng mật khẩu, nhưng trừ phi bạn có mật khẩu rất mạnh và thay đổi nó thường xuyên, các hackers có thể vẫn dùng kĩ thuật “xâm nhập lực mạnh” để đoán ra tên người dùng và mật khẩu nhanh chóng và tấn công máy tính của bạn. Bạn có thể cẩn thận với những email không biết nhưng bạn có thể là chủ thể cho “giả mạo” khi bạn mở email từ bạn bè mà không biết rằng hackers đang dùng tên người bạn của bạn để nhử bạn vào việc mở bản đính kèm email nhiễm virus hay mở bí mật một ‘cửa hậu” trong máy tính của bạn để họ thu thập dữ liệu cá nhân của bạn.
Biết rủi ro là cách tốt nhất phòng ngự chống lại các hackers. Mọi ngày đều có những đe doạ mới, virus mới và phần mềm độc hại mới cho nên bạn phải theo sát với những vấn đề này. Mọi công ti phải có thủ tục an ninh tại chỗ để sẵn sàng giải quyết với những vấn đề mới. Ngay khi đe doạ an ninh được phát hiện, mọi máy tính phải được báo động để được an toàn bằng các cập nhật và miếng vá trong thời gian tối thiểu nhất có thể được. Khi một điểm mong manh mới được phát hiện, lực lượng đặc nhiệm an ninh sẽ tìm cách để sửa nó bằng những miếng vá nhưng những điều này có thể lại là rủi ro an ninh nữa. Miếng vá có thể chỉ ra trực tiếp chỗ yếu ở đâu và hackers không cần đi tìm chỗ yếu mà khai thác luôn chúng bởi vì phải mất thời gian cho tới khi mọi người đã cập nhật máy tính của họ. Không may một số người chưa bao giờ cập nhật cho tới khi quá trễ.
Với phát triển phần mềm, an ninh phải được “dựng sẵn bên trong” như một phần của toàn thể vòng đời phát triển. Khái niệm then chốt là ở chỗ bạn nhận diện rủi ro sớm và chăm lo tới chúng, dẫn tới chất lượng cao về an ninh với chi phí thấp. Bạn cần có yêu cầu an ninh được xác định rõ ràng và đúng đắn cho hệ thống. Bạn phải thiết kế và kiến trúc hệ thống với các xem xét về an ninh. Bạn phải tuân theo hướng dẫn về viết mã an ninh và thực hiện kiểm thử an ninh tương ứng. Nhiều người phát triển phần mềm coi kiểm thử an ninh là kiểm thử phi chức năng. Như nhiều kiểm thử phi chức năng khác, phần lớn các kiểm thử đều được thực hiện ở giai đoạn cuối cùng của phát triển trước khi đưa ra cho khách hàng. Hậu quả là ở chỗ nhiều lỗi an ninh, mà có thể được phát hiện và sửa, đi vào những giai đoạn phát triển sớm hơn mà không có kiểm tra. Rủi ro là sẽ quá trễ để tìm và sửa lỗi kiến trúc nền tảng hay thiết kế.
Người phát triển phần mềm giỏi biết cách thiết lập môi trường kiểm thử với an ninh có trong đầu, cũng như giải quyết dữ liệu kiểm thử của bạn với mục đích an ninh. Có các hướng dẫn an ninh phải được tuân theo và chính trách nhiệm của người quản lí dự án là bảo đảm rằng mọi người phát triển tuân theo chúng một cách cẩn thận. Trong phát triển phần mềm phân bố, tổ của bạn có thể được phân bố ở bất kì đâu trên thế giới. Nếu dữ liệu kiểm thử chứa thông tin tư như dữ liệu cá thể hay tài khoản ngân hàng, bạn phải chắc chúng không được gửi đi mà không được bảo vệ qua internet. Mặc cho sự kiện là Internet là môi trường bị ô nhiễm nơi các hackers có ở mọi nơi, nhiều công ti vẫn không dùng mật mã hoá dữ liệu và chung cuộc phải trả tiền nhiều về sau. Nếu bạn dùng Internet, bạn phải chắc chắn rằng đường trao đổi là được an ninh; cố giữ nó nhiều nhất có thể được bên trong mạng công ti, dùng VPN, các móc nối an ninh SSL hay mật mã hoá.
Ngày nay laptop ngày càng thành thông dụng ở chỗ làm việc. Chúng được dùng trong mạng công ti có an ninh, thế rồi được dùng bên ngoài công việc ở một mạng không dây nào đó tại quán cà phê, sân bay hay ở nhà vốn kém an ninh hơn nhiều. Rủi ro bị ô nhiễm là ở khắp nơi nếu máy tính của bạn không được bảo vệ đúng. Máy tính bị nhiễm virus có thể quay trở lại mạng công ti an ninh làm hỏng toàn thể mạng. Ngày nay nhiều hackers đang dùng “kẻ hít – sniffer” (một chương trình nhỏ nắm bắt và truyền thông tin mà không bị phát hiện) lẻn vào máy tính không được bảo vệ, toàn thể mạng có thể bị lâm nguy, vì thỉnh thoảng nó sẽ bị dò xét. Điều này gây ra lỗ hổng an ninh trong mạng toàn công ti.
Với chất lượng cao trong an ninh bạn có thể giảm nhẹ rủi ro của việc gây nguy hại cho kinh doanh của bạn. Để làm điều đó, bạn cần học về các đe doạ an ninh và cách tranh đấu với chúng, ngăn ngừa các lỗi an ninh được tạo ra hay giảm thiểu số lỗi bằng việc tuân theo các thủ tục và hướng dẫn an ninh và kiểm thử an ninh trong tất cả các giai đoạn phát triển. Tôi cũng tin rằng an ninh phải là môn học yêu cầu có trong mọi đại học.
—-Enlish version—-
Computing security
Today Information Security is a critical and fast growing area in software engineering. Neglecting security is an issue that could lead to many damaging problems. Unfortunately security is still not being taken seriously by many software developers or being taught as a required course at most universities. As the technology grows more popular, the misusing of it is getting more and more serious. Security is not a thing you could buy and add to a system but an integrated part of the system that must be “Built in”. Even you could fix some security deficiencies after the system is being developed, it is already too late and it would cost you much more to fix than build in security during the architect, design and coding phases.
One of the ways of reducing security threats is to increase awareness of security risks. Anyone with common sense would take necessary measures if he or she knows the risks. However, with the popular of computer, many risks are not always visible. Your computer may have a password protection, but unless you have a very strong password and keep changing it frequently, hackers can still use “Brute force intrusion” technique to guess user names and password quickly and attack your computer. You may be careful with unknown emails but you may be subjected to “Phishing” as you open email from friends without knowing that hackers are using your friend’s names to lure you into open a virus infected email attachment or secretly open a “backdoors” in your computer that let them collect your personal data.
Knowing the risks is the best way of defense against hackers. Yet everyday, there are new threats, new virus, and new malicious software so you must keep up with these issues. Every company must have security procedures in place to be ready to deal with new ones. As soon as a security threat is detected, all computers must be in alert and to be secured with updates and patches in minimal time possible. When a new vulnerability is detected, a security task force will find a way to repair it with patches but these could be a security risk too. Patches could point out directly where the weaknesses are and hackers would not need to search for weaknesses but just exploit them because it takes a while until everyone has updated their computers. Unfortunately some may never update until it is too late.
For software development, security must be “Built in” as part of the whole development life cycle. The key concept is that you identify the risk early and take care of them, leading to high quality in security for a low cost. You need to have security requirements that are clearly and correctly defined for the system. You must design and architect the system with security considerations. You must follow guidelines for secure coding and perform security tests accordingly. Many software developers consider security testing as non-functional tests. As many other non-functional tests, most of testing is performed at final stages of development before release to customers. The consequence is that many security bugs, which could be detected and fixed, go through earlier development stages without checking. The risk is it will be too late to find and fix a fundamental architectural error or design.
A good software developer knows how to set up test environment with security in mind, as well as handle your test data for security purpose. There are security guidelines which must be followed and it is the project manager‘s responsibility to make sure that every developers follow them carefully. In the distributed software development, your team can be distributed anywhere in the world. If the test data contain private information such as personal data or bank accounts, you must make sure they are not sent unprotected on the internet. In spite of the fact that Internet is a contaminated environment where hackers are everywhere, many companies are still do not use data encryption and end up paying much more later. If you use Internet, you must make sure that the communication lines are secured; try to keep it as much as possible inside the corporate networks, use VPN, SSL-secured links or encryption.
Today Laptops are getting more and more common at work. They are used in the secure company network, then are used out of the job in some wireless network at a coffee shop, airport or home with much less security. The risk of contamination is overwhelming if your computer is not properly protected. An infected computer can comes back in the secure company network endangering the whole network. Today many hackers are using “sniffer” (a small program that captures and transmits information without being discovered) sneaked in unprotected computer, the whole network can be endangered, since it might take a while to be detected. This causes a security hole in the whole company network.
With high quality in security you can mitigate the risks of endangering your businesses. In order to do that, you need to learn security threats and how to fight them, prevent security bugs to be created or minimize their number by following security procedures and guidelines and testing security in all development stages. I also believe that security must be a requirements course in all universities.