Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Giới thiệu về API bảo mật Java

Bảo mật là một trong những phần quan trọng nhất của phát triển ứng dụng. Ngôn ngữ Java giúp bạn dễ dàng phát triển các ứng dụng an toàn bằng cách cung cấp nhiều tùy chọn và tính năng giúp các ứng dụng an toàn. Bởi vì đây là một chủ đề lớn, bài viết này sẽ đề cập đến một số khía cạnh chính của các tính năng bảo mật và API có sẵn trong nền tảng Java.

Tổng quan

Nền tảng Java, ngay từ đầu, được xây dựng để lưu ý đến tính bảo mật. Thuộc tính loại an toàn của ngôn ngữ và tính năng thu gom rác tự động cho biết rằng kiến ​​trúc Java đã cố gắng hấp thụ các tính năng bảo mật ngay từ lõi của nó.

Trong những năm gần đây, an ninh là một trọng tâm chính. Ví dụ:các trình duyệt hiện đại đang cố gắng hạn chế hoặc giảm bớt sự hỗ trợ của plug-in như Java, Silverlight và Flash vì chúng có thể bị lạm dụng để kết hợp mã tinh vi vào một tiện ích bổ sung trông vô hại. Mặc dù môi trường Java sạch sẽ, nhưng bản chất của applet là nó tải mã không đáng tin cậy từ mạng công cộng. Đây có thể là một vi phạm an ninh lớn. Ngoài ra, thế giới trình duyệt đã thay đổi đáng kể trong vài năm qua. Nhu cầu tuyệt đối về Applet đã trở nên gần như lỗi thời. Có lẽ điều này và chủ yếu là mối quan tâm ngày càng tăng về bảo mật đã khiến Applet không được chấp nhận trên Java 9.

Khung bảo mật Java

Các dịch vụ Java Security đã mở rộng và bao gồm một tập hợp lớn các giao diện lập trình ứng dụng (API), công cụ, một số triển khai thuật toán bảo mật, cơ chế và giao thức. Điều này cung cấp một môi trường toàn diện để phát triển các ứng dụng an toàn và quản lý chúng cho phù hợp.

Phạm vi của API bảo mật Java rất rộng. Cơ sở của việc phát triển một ứng dụng an toàn nằm trong giao diện Cơ sở hạ tầng mật mã và khóa công khai (PKI), nhiều triển khai thuật toán chung có thể tương tác và các dịch vụ bảo mật khác. Có các giao diện để thực hiện xác thực và kiểm soát truy cập. Điều này cho phép các ứng dụng đề phòng việc truy cập trái phép vào các tài nguyên được bảo vệ.

Bảo mật ngôn ngữ

Để bắt đầu, bản thân ngôn ngữ được xây dựng với mối quan tâm đến việc đưa tính bảo mật vào cốt lõi của nó. Ví dụ đơn giản nhất có lẽ là sự kết hợp của kiểu an toàn. Nhập an toàn có nghĩa là các chương trình đã hạn chế quyền truy cập vào bộ nhớ trong thời gian chạy. Điều này đạt được bằng cách chỉ liên kết bộ nhớ với các đối tượng Java. Các đối tượng có một lớp tương ứng xác định hành vi của nó; điều này đảm bảo rằng chương trình có thể hoạt động dựa trên nó chỉ theo hành vi được xác định. Ý tưởng này cộng hưởng với việc kiểm tra kiểu động, nhưng Java cũng kết hợp kiểm tra kiểu tĩnh phức tạp bất cứ khi nào có thể để vượt qua hạn chế của đối tác động của nó. Ví dụ:trình xác minh mã byte là trình kiểm tra kiểu tĩnh hiệu quả được sử dụng tại thời điểm biên dịch để hiển thị bất kỳ loại lỗi nào và chủ động báo cáo cho nhà phát triển. Trình xác minh bytecode đảm bảo rằng một bytecode hợp pháp được thực thi bằng cách tuân theo Đặc tả ngôn ngữ Java. Ngoài ra, nó cũng kiểm tra vi phạm bộ nhớ, ngăn xếp dưới / tràn, định dạng thích hợp, v.v. Ngoài ra, còn có các công cụ sửa đổi như riêng tư, được bảo vệ và công khai để khẳng định quyền truy cập bị hạn chế.

Nhà cung cấp bảo mật

Các dịch vụ hoạt động như một nhà cung cấp bảo mật. Chúng, khi được cắm vào nền tảng Java thông qua các giao diện tiêu chuẩn, giúp ứng dụng dễ dàng nhận được các dịch vụ bảo mật. Ưu điểm của cơ chế này là nhà phát triển không cần phải biết về các chi tiết phức tạp và thay vào đó có thể tập trung vào việc tích hợp các tính năng bảo mật vào ứng dụng. Ý tưởng này được đóng gói trong lớp trừu tượng có tên là java.security.Provider . Dịch vụ bảo mật có được thông qua getInstance () phương pháp do Nhà cung cấp cung cấp . Có thể có nhiều nhà cung cấp được định cấu hình trong đó mỗi nhà cung cấp có tên và số phiên bản được định cấu hình trong mỗi thời gian chạy mà nó được cài đặt. Ví dụ:một chương trình có thể lấy một thuật toán thông báo thông báo cụ thể bằng cách tùy chọn yêu cầu một nhà cung cấp cụ thể theo tên của nó như sau:

MessageDigest messageDigest = MessageDigest.getInstance("MD5",
   "MyProvider1");

Mật mã học

Các API mật mã Java được phân phối giữa hai gói: java.security javax.crypto . Java cung cấp một lượng lớn các dịch vụ mật mã bằng cách triển khai một số thuật toán mật mã. Một vài trong số chúng như sau:

  • java.security.MessageDigest: Lớp này cung cấp việc triển khai hàm băm một chiều lấy dữ liệu có kích thước tùy ý và xuất ra giá trị băm có độ dài cố định. Thuật toán được đặt tên là SHA-1 hoặc SHA-256.
  • java.security.Signature: Lớp này được sử dụng để cung cấp chức năng của thuật toán chữ ký số như các thuật toán DSA, RSA hoặc DSA, sử dụng thuật toán thông báo thông báo SHA-256. Chữ ký điện tử đặc biệt được sử dụng để đảm bảo tính toàn vẹn và tính xác thực của dữ liệu kỹ thuật số.
  • java.security.SecureRandom: Lớp này cung cấp chức năng tạo một số ngẫu nhiên mạnh về mặt mật mã.

Cơ sở hạ tầng khóa công khai (PKI)

Cơ sở hạ tầng PKI cho phép trao đổi dữ liệu an toàn bằng cách sử dụng mật mã khóa công khai. Nó bao gồm các khóa, chứng chỉ, mã hóa khóa công khai và chứng chỉ kỹ thuật số. Các lớp liên quan đến PKI được lưu trữ trong java.security java.security.cert gói.

Xác thực

Xác thực là quá trình xác minh danh tính người dùng. Java cho phép ứng dụng thực hiện xác thực người dùng với sự trợ giúp của mô-đun có thể cắm được. Có một lớp được gọi là LoginContext trong javax.security.auth.login bưu kiện. Lớp này được khởi tạo bằng tên và một CallbackHandler. LoginContext sử dụng tên như một chỉ mục cho cấu hình. Cấu hình xác định LoginModule cụ thể ( javax.security.auth.spi.LoginModule ). CallbackHandler được chuyển đến LoginModule để nhắc tên người dùng và mật khẩu, trong GUI chẳng hạn.

Giao tiếp an toàn

Nền tảng Java triển khai các giao thức SSL và TLS cung cấp chức năng cho tính toàn vẹn của thư, mã hóa dữ liệu và xác thực máy khách và máy chủ. Điều này có thể được sử dụng để mở đường truyền dữ liệu an toàn giữa các đồng nghiệp trên giao thức HTTP hoặc TCP / IP. Hỗ trợ API cho việc triển khai có thể được tìm thấy trong javax.net.ssl ​​ bưu kiện. Có nhiều lớp học hỗ trợ; ví dụ: SSLSocket lớp là một phần mở rộng của java.net.Socket lớp để cung cấp một ổ cắm an toàn sử dụng giao thức SSL / TLS. Đây không phải là gì ngoài một ổ cắm luồng bình thường với một lớp bảo vệ bổ sung đối với giao thức lớp truyền tải (TCP).

Kiểm soát truy cập

Lớp kiểm soát truy cập bảo vệ quyền truy cập vào các tài nguyên nhạy cảm như tệp cục bộ. java.lang.SecurityManager lớp trung gian tất cả các truy cập. Lớp này cho phép ứng dụng thực hiện chính sách bảo mật. Do đó, hoạt động không an toàn có thể bị hạn chế trong lần thử, do đó ứng dụng có toàn quyền kiểm soát các hoạt động được phép.

Kết luận

Đây là một chuyến tham quan nhanh về các tính năng, chức năng và API bảo mật của nền tảng Java. Java cung cấp hỗ trợ toàn diện để triển khai bảo mật trong một ứng dụng mà các nhà phát triển có thể không biết đến sự phức tạp liên quan đến việc triển khai chúng, nhưng vẫn gặt hái được lợi ích của nó. Điều này thúc đẩy việc phân phối sản phẩm nhanh chóng và hiệu quả mà không cần phải xây dựng mọi thứ từ đầu.

Tài liệu tham khảo

  • Tài liệu Java API
  • Tổng quan về Bảo mật Java

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chú ý đến các ước tính

  2. Tầm quan trọng của việc bảo trì trên MSDB

  3. Vấn đề Halloween - Phần 3

  4. Tránh tự ảo tưởng về Giải pháp HA / DR

  5. Django Migrations:A Primer