Giới thiệu về vấn đề bảo mật, an toàn hệ thống thông tin

Bảo mật thông tin là vấn đề rất quan trọng, đang thu hút nhiều người tập trung nghiên cứu và tìm mọi giải pháp để đảm bảo an toàn, an ninh cho hệ thống phần mềm, đặc biệt là các hệ thống thông tin trên mạng. Việc bảo mật cho hệ thống có thể thực hiện theo nhiều phương diện, ở nhiều tầng khác nhau, bao gồm từ phương diện kiểm soát truy nhập vật lý vào hệ thống, thực hiện sửa chữa, cập nhật, nâng cấp hệ điều hành cũng như vá mọi lỗ hổng về an ninh tìm thấy; quản lý các hoạt động trao đổi thông tin trên mạng (giám sát qua bức tường lửa, các bộ định vị Router, phát hiện và phòng ngừa sự xâm nhập, V.V.), xây dựng các giải pháp bảo mật ở mỗi phần mềm đến quản lý người dùng thông qua việc cấp quyền sử dụng, mật khẩu, mật mã, v.v.

Song, cũng cần phải hiểu rằng, không có một hệ thống thông tin nào được bảo mật 100%. Bất kỳ một hệ điều hành nào mà bạn đang sừ dụng cũng có thể có những lỗ hổng về an ninh và chưa phát hiện ra. Bộ phận quản trị mạng cũng có thể không phát hiện nhanh được những xâm nhập trái phép có thể làm hư hòng, thậm chí phá huỷ thông tin cùa bạn. Ngay cả những thuật toán mật mà nổi tiếng như MD5, SHA-1 cũng không thể khẳng định 100% múc độ an toàn, bởi vỉ có thể đến thời điểm này chưa phát hiện ra người có thể bẻ gãy được những thuật toán đó, nhưng cũng không có gl đảm bảo sẽ không có ai làm được điều đó trong tương lai.

Chính vì thế, ta cần phải !àm hai việc. Việc thứ nhất là cần phải xác định chinh sách hảo mật phù hợp cho hệ thống của mình. Chính sách bảo mật cho phép người dùng truy cập vào hệ thống theo những quyền đă được cấp và theo những thủ tuc nhất định. Tuy nhiên, khi đưa ra một chính sách bảo mật thì ta lại phải trả giá cho những phí tổn về thời gian và tài nguyên vì những qui dinh bắt buộc (thường là bất tiện) đối với người sử dụng và những tính phiền phức cùa các thủ tục bảo mật. Việc thứ hai là phải xây dựng các chiến lược phát hiện va phòng chong các cuộc tấn công vào hệ thống.

Việc đầu tiên cần phải thực hiện khi lập kế hoạch bảo mật hệ thống là bạn phải xác định rõ các yêu cầu cần bảo mật, những gì bạn cần phải bảo vệ trước các cuộc tấn còng, chính sách bào mật phải dựa trên những cơ sở nào?. Thông thường có hai loại yêu cầu bảo mật chung cho các hệ thống phần mềm trao đổi giữa các doanh nghiệp (B2B) [2],

■ Vấn đề bảo mật trong truyền thông. Phần lớn các hệ thống cùa chúng ta hiện nay được kết nối mang. Khi thông tin được gửi đi trên mạng (Internet) thì nó phải được bảo vệ để chống lại những kẻ nghe (xem) trộm. Bất kỳ một người nào đó cũng có thể truy cập vào các cáp mạng hoặc qua bộ định vị Router để làm thay đồi nội dung trao đồi trên dường truyền. Ta không thể biết được liệu đã có một sự thay đổi nào đã được thực hiện đối với các nội dung trao đổi kể từ lúc chúng được gừi đi hay chưa. Ngay cả khi bạn tin rằng những nội dung thông tin trao đổi được bào vệ chống những kẻ nghe trộm và những người lạ thì những giao thức truyền thông vẫn có thể còn có những lỗ hồng mà ta chưa phát hiện ra. Trong giao thức TCP/IP, người gửi gói tin đươc xác định thông qua địa chi IP và cổng kết nối ờ phần đầu của gỏi (Package Header) và chính các trường thông tin này có thể dễ dàng thay đổi được. Diều này dẫn tới vấn đề quan trọng là cần chứng thực, xác thực người gửi. Nói chung, có bốn yêu cầu cơ bản về bảo mật truyền thông.

  • Đám hảo tin cậy. Các nội dung thông tin không bị theo dõi hoặc sao chép bởi những thực thể không được uỷ thác.
  • Đảm bảo toàn vẹn. Các nội dung thông tin không bị thay đổi bời những thực thể không được uỳ thác.
  • Chửng minh xác thục. Không ai có thể tự trá hỉnh như là một bên hợp pháp trong quá trình trao đổi tin.
  • Không thế thoái thác trách nhiệm. Người gửi tín không thể thoái thác về những sự việc và những nội dung thông tin mà thực tế họ đã gửi đi.

Sự phát triển của công nghệ mật mã cho phép ta thực hiện được ba yêu cầu đầu tiên. Ví dụ, bạn có thể sử dụng SSL/TLS [4], được định nghĩa bời Netscape Communication Corporation cho việc bảo mầt kết nối theo HTTP, để bảo mật chương trình ứng dụng dựa vào Java. Yêu cầu thứ tư có thể thực hiện được bằng chữ ký số.

  • Kiểm soát truy cập. Khi nhận được một thông tin tù một kênh truyền được bào mật, ta cần phải dựa vào chính sách bảo mật để biết được những thao tác nào là được phép thực hiện đối với những thông tin đó. Việc kiểm soát truy cập đôi khi cũng nhầm lẫn VỚI việc xác thực. Trong nhiều trường hợp, cơ chế kiểm soát truy cập và cơ chế xác thực được tích hợp vào trong một cơ chế chung. Ví dụ, bạn có thể truy cập vào các trang Web cùa Apache Web Server thông qua các mật khẩu chỉ khi bạn đã được xác thực. Nhưng, nói chung ta cần phân biệt cơ chế kiểm soát truy cập với cơ chế xác thực. Xác thục được sừ dụng để khẳng định sự đồng nhất của người tham gia trao đổi tin. Trong những hệ thống lớn, thường có một cơ sở dữ liệu xác thực chứa các định danh và mật khẩu cùa nhiều người dùng, nhưng chi tập con trong số họ được quyền truy cập vào những thành phần đặc biệt của hệ thống.

Như chúng ta đã biết, mục đích của công nghệ Java là “ Viết chương trình một ỉần và chạy ờ mọi nơi”. Tất nhiên, việc phát tán các applet là thực sự có ý nghĩa trong thực tế chỉ khi những người sử dụng được đảm bào rằng các mã lệnh đó không tụ thay đổi và không phá huỳ trên máy của họ. Vì vậy, vấn đề bảo mật thông tin được xem là vấn đề chính được đề cập bời cả những người thiết kế lẫn người sừ dụng công nghệ Java để phát triển các phần mềm ứng dụng phân tán.

Trong công nghệ Java có ba cơ chế đảm bảo an toàn dữ liệu [2],

  • Dựa vào những đặc trưng của ngôn ngữ như: kiểm soát giới hạn của các cấu trúc dữ liệu như cấu trúc màng, kiểm tra chặt chẽ sự chuyển đổi giữa các kiểu đối tượng, không sử dụng con trò số học, v.v.
  • Cơ chế điều khiển việc thực hiện cùa các mã lệnh truy cập vào tệp, truy cập mạng, v.v.
  • Ơ chế hỗ trợ ký, xác nhận mã lệnh. Người viết chương trình có thể sù dụng những thuật toán mã hoá chuẩn để xác thực các mã lệnh trong chương trình. Người dùng những chương trinh này có thể xác thực được danh tính người tạo ra chúng và kiểm tra xem liệu nó đã bị thay đổi (lần cuối cùng) sau khi đã được ký xác nhận hay không.

Máy ảo Java JVM sẽ giúp chúng ta thực hiện được cơ chế thứ nhất, nghĩa là kiểm tra chì số các phần tử cùa mảng, sự tương thích về kiểu giữa các lóp đối tượng, V.V.

Một khi các tệp lớp (.class) được nạp vào JVM, chúng sẽ được kiểm tra xem có nguyên vẹn hay không. Điều quan trọng là, ngoài bộ nạp lóp mặc định, ta có thể tạo ra các bộ nạp lóp Loader riêng để kiểm soát các hoạt động trong JVM giúp ta thực hiện được cơ chế thứ hai.

Để đảm bảo an toàn cao hơn, ta nên sử dụng cà những bộ nạp ClassLoader chung của hệ thống (mặc định) và nhưng bộ nạp lớp riêng, kết hợp với lóp quàn trị an ninh SecurityManager để kiểm soát sự hoạt động của các đoạn mã lệnh. Nói chung ta nên xây dựng những lóp quản trị an ninh riêng cho từng ứng dụng.

Cơ chế thứ ba có thể dễ dàng thực hiện bằng cách sử dụng các thuật toán mật mã được cung cấp bời các lóp trong gói java, security hoặc xây dựng những thuật toán mật mã mới để ký nhận và xác thực chương trình. Cơ chế này sẽ được đề cập cụ thể ở phần cuối chương.