Seguridad elemental del lenguaje | Java

La seguridad de Java incluye un gran conjunto de API, herramientas e implementaciones de algoritmos, mecanismos y protocolos de seguridad de uso común. En concreto la API de Java que incluye criptografía, infraestructura de clave pública, comunicación segura, autenticación y control de acceso, además posee un mecanismo seguro de carga y verificación de clases garantiza que solo se ejecute código Java legítimo.

Ahora veamos algunos módulos que son parte de la API de seguridad de JAVA:
  • java.base. Define las API fundamentales de Java SE ; los paquetes contenidos incluyen java.security, javax.crypto , javax.net.ssl y javax.security.auth
  • java.security.jgss. Define el enlace de Java de la API de servicios de seguridad genéricos de IETF (GSS-API). Este módulo también contiene mecanismos GSS-API, incluidos Kerberos v5 y SPNEGO
  • java.security.sasl. Define el soporte de Java para la capa de seguridad y autenticación simple de IETF (SASL). Este módulo también contiene mecanismos SASL, incluidos DIGEST-MD5, CRAM-MD5 y NTLM
  • java.smartcardio. Define la API de I/O de lectores de tarjetas inteligentes de Java
  • java.xml.crypto. Define la API para criptografía XML
  • jdk.jartool. Define API para firmar archivos jar
  • jdk.security.auth. Proporciona implementaciones de las interfaces javax.security.auth, y varios módulos de autenticación
  • jdk.security.jgss. Define extensiones Java para GSS-API y una implementación del mecanismo SASL GSS-API

Verificación de código de bytes y seguridad del lenguaje Java

El lenguaje Java está diseñado para ser de tipo seguro y fácil de usar. Proporciona administración automática de memoria, recolección de basura y verificación de rango en arreglos. Esto reduce la carga de programación general que recae sobre los desarrolladores, lo que genera menos errores de programación sutiles y un código más seguro y sólido.

Un compilador traduce los programas de Java en una representación de código de bytes independiente de la máquina. Se invoca un verificador de código de bytes para garantizar que solo se ejecuten códigos de bytes legítimos en el tiempo de ejecución de Java. Comprueba que los códigos de bytes se ajustan a la Especificación del lenguaje Java y no violan las reglas del lenguaje Java o las restricciones de espacio de nombres. El verificador también comprueba las infracciones de la gestión de la memoria, los sub-desbordamientos o desbordamientos de pila y los tipos de datos ilegales. Una vez que se han verificado los códigos de bytes, el tiempo de ejecución de Java los prepara para su ejecución.

Existen 4 niveles de acceso:
  • private. Es un modificador que no permite el acceso desde ningún otro lado que no sea la propia clase.
  • protected. Permite el acceso a subclases(clases que heredan) y clases dentro del mismo paquete
  • Package-private. Si no se especifica, este es el nivel de acceso predeterminado; permite el acceso a clases dentro del mismo paquete, es por este motivo que no necesitamos importar una clase dentro del mismo paquete para usarla.
  • public. El método, variable, propiedad, clase puede ser accedida desde cualquier paquete y clase donde esté importado.
Todo lo mencionado aquí lo puedes encontrar en la documentación de Oracle con mayor detalle y la versión en inglés.

Comentarios

Entradas populares