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
Publicar un comentario