Download - Aspectos y seguridad
![Page 1: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/1.jpg)
Aspectos y Seguridad
CC71P – Objetos y Aspectos
Mauricio Quezada
11/11/10
![Page 2: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/2.jpg)
Agenda
1. Motivación
2. Aspectos y Seguridad
3. Un sistema de permisos con AOP
4. AOP y el modelo de seguridad de Java
5. Conclusiones
2
![Page 3: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/3.jpg)
CONTROL DE ACCESO + ASPECTOS1 - Motivación
3
![Page 4: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/4.jpg)
Seguridad y Software
• La seguridad debe ser un hecho durante todas las fases del desarrollo
Motivación - 4
![Page 5: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/5.jpg)
Seguridad y Software
• La seguridad debe ser un hecho durante todas las fases del desarrollo
• Es un cross-cutting concern
Motivación - 5
![Page 6: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/6.jpg)
Seguridad y Software
• La seguridad debe ser un hecho durante todas las fases del desarrollo
• Es un cross-cutting concern
• Veremos un ejemplo utilizando AspectJ
Motivación - 6
![Page 7: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/7.jpg)
Control de Acceso (AC)
Motivación - 7
Autenticación Autorización
![Page 8: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/8.jpg)
AC con Aspectos
• Identification
– Asignar una identidad a los clientes
Motivación - 8
![Page 9: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/9.jpg)
AC con Aspectos
• Identification
– Asignar una identidad a los clientes
• Authentication
– Afirmar que alguien es quien dice ser
Motivación - 9
![Page 10: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/10.jpg)
AC con Aspectos
• Identification
– Asignar una identidad a los clientes
• Authentication
– Afirmar que alguien es quien dice ser
• Authorization
– Asegurar que tiene los permisos necesarios
Motivación - 10
![Page 11: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/11.jpg)
AC con Aspectos
• Asumiremos una clase Server que implementa service de la interfaz ServerInterface
Motivación - 11
![Page 12: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/12.jpg)
Identification & Authentication
aspect Identification perthis(this(Client)) {
public Subject subject = null;
}
aspect Authentication percflow(serviceRequest()) {
private Subject subject;
pointcut serviceRequest():
call(* ServerInterface+.service(..));
...
Motivación - 12
![Page 13: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/13.jpg)
Identification & Authentication
aspect Identification perthis(this(Client)) {
public Subject subject = null;
}
aspect Authentication percflow(serviceRequest()) {
private Subject subject;
pointcut serviceRequest():
call(* ServerInterface+.service(..));
...
Motivación - 13
![Page 14: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/14.jpg)
Identification & Authentication
aspect Identification perthis(this(Client)) {
public Subject subject = null;
}
aspect Authentication percflow(serviceRequest()) {
private Subject subject;
pointcut serviceRequest():
call(* ServerInterface+.service(..));
...
Motivación - 14
![Page 15: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/15.jpg)
Authentication
...
pointcut authenticationCall(Object caller):
this(caller) &&
serviceRequest() &&
if(Identification.hasAspect(caller));
public Subject getSubject() {
return subject;
}
...
Motivación - 15
![Page 16: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/16.jpg)
Authentication
before(Object caller): authenticationCall(caller) {
Identification id = Identification.aspectOf(caller);
if(id.subject == null) {
<login>
subject = id.subject;
}
}
}
Motivación - 16
![Page 17: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/17.jpg)
Authorization
aspect Authorization {
pointcut checkedMethods():
within(Server) && execution(* service(..));
Object around(): checkedMethods() {
Authentication auth = Authentication.aspectOf();
Subject subject = auth.getSubject();
boolean allowed = <check access control>;
if(allowed) return proceed();
else <access denied>}
}
Motivación - 17
![Page 18: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/18.jpg)
Authorization
aspect Authorization {
pointcut checkedMethods():
within(Server) && execution(* service(..));
Object around(): checkedMethods() {
Authentication auth = Authentication.aspectOf();
Subject subject = auth.getSubject();
boolean allowed = <check access control>;
if(allowed) return proceed();
else <access denied>}
}
Motivación - 18
![Page 19: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/19.jpg)
Otras consideraciones
• Generalizar el ejemplo utilizando aspectos abstractos
Motivación - 19
![Page 20: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/20.jpg)
Otras consideraciones
• Generalizar el ejemplo utilizando aspectos abstractos
• Extender los requerimientos:
– Confidencialidad
– Integridad
– No Repudiabilidad
– …etc.
Motivación - 23
![Page 21: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/21.jpg)
Seguridad y AOP
1. Código más mantenible
Motivación - 24
![Page 22: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/22.jpg)
Seguridad y AOP
1. Código más mantenible
2. Separación de responsabilidades (especialización)
Motivación - 25
![Page 23: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/23.jpg)
Seguridad y AOP
1. Código más mantenible
2. Separación de responsabilidades (especialización)
3. Las interacciones framework-applicationestán bien definidas
Motivación - 26
![Page 24: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/24.jpg)
Ejemplo (1)
void around():
execution(String Encrypter.getPrivateKey())
{
if(!Policy.isAllowed( ... ))
throw new RuntimeException(“Denied!”);
else
proceed();
}
27
![Page 25: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/25.jpg)
Ejemplo (2)
privileged aspect Sniffing {
after(Encrypter e):
set(private String Encrypter.privateKey)
&& this(e)
{
System.out.println(“The key is ” + e.privateKey);
}
}
28
![Page 26: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/26.jpg)
HACIA UN SISTEMA DE PERMISOS2 – Aspectos y Seguridad
29
![Page 27: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/27.jpg)
Identificando el problema
• Usar aspectos para mejorar la seguridad puede ser un arma de doble filo
Aspectos y Seguridad - 30
![Page 28: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/28.jpg)
Identificando el problema
• Usar aspectos para mejorar la seguridad puede ser un arma de doble filo
1. Invocation Interception
2. Privileged Aspects
Aspectos y Seguridad - 31
![Page 29: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/29.jpg)
1. Invocation Interception
• Parameter Alteration / Invocation hijacking
pointcut polcheck():
execution(boolean Policy.isAllowed(..));
boolean around(): polcheck() {
boolean res = proceed();
return true;
}
32
![Page 30: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/30.jpg)
1. Invocation Interception
• Parameter Alteration / Invocation hijacking
pointcut polcheck():
execution(boolean Policy.isAllowed(..));
boolean around(): polcheck() {
boolean res = proceed();
return true;
}
33
![Page 31: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/31.jpg)
2. Privileged aspects
• Altera propiedades de encapsulación de Java
34
![Page 32: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/32.jpg)
2. Privileged aspects
• Altera propiedades de encapsulación de Java
• ¿Son necesarios los aspectos privileged?
35
![Page 33: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/33.jpg)
Problemas
• Advices, inter-type declarations pueden alterar el estado de un objeto
36
![Page 34: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/34.jpg)
Problemas
• Advices, inter-type declarations pueden alterar el estado de un objeto
• La interacción de dos o más módulos puede ser influenciada
37
![Page 35: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/35.jpg)
Problemas
• Advices, inter-type declarations pueden alterar el estado de un objeto
• La interacción de dos o más módulos puede ser influenciada
• Un programa “seguro” sin aspectos no lo es necesariamente con aspectos.
38
![Page 36: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/36.jpg)
Problemas
• Advices, inter-type declarations pueden alterar el estado de un objeto
• La interacción de dos o más módulos puede ser influenciada
• Un programa “seguro” sin aspectos no lo es necesariamente con aspectos.
• …intencional o accidentalmente
39
![Page 37: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/37.jpg)
Soluciones propuestas
• Invocation Interception
– Uso de declare precedence
40
![Page 38: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/38.jpg)
Soluciones propuestas
• Invocation Interception
– Uso de declare precedence
• No es suficiente!
– Se vuelve intratable con muchos aspectos
– No hay un aspecto en el tope de la jerarquía
41
![Page 39: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/39.jpg)
Soluciones propuestas
• Privileged Aspects
– Eliminarlos por completo
42
![Page 40: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/40.jpg)
Soluciones propuestas
• Privileged Aspects
– Eliminarlos por completo
• No es suficiente!
– Adaptar un módulo no diseñado para ser “seguro”
– Una política puede depender del estado interno de un módulo
43
![Page 41: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/41.jpg)
Soluciones propuestas
• Modificar o extender el lenguaje de aspectos
– Por ejemplo, describir qué partes pueden ser accedidas por cierto módulo
44
![Page 42: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/42.jpg)
Soluciones propuestas
• Modificar o extender el lenguaje de aspectos
– Por ejemplo, describir qué partes pueden ser accedidas por cierto módulo
• No es suficiente!
– Abstracciones de aspectos son “compiladas” en abstracciones de objetos
• Los aspectos desaparecen
45
![Page 43: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/43.jpg)
An Aspect Permission System
• Funcionamiento en tiempo de ejecución (load-time o run-time)
46
![Page 44: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/44.jpg)
An Aspect Permission System
• Funcionamiento en tiempo de ejecución (load-time o run-time)
• Inserción de chequeos de seguridad (weaving)
47
![Page 45: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/45.jpg)
An Aspect Permission System
• Funcionamiento en tiempo de ejecución (load-time o run-time)
• Inserción de chequeos de seguridad (weaving)
• Mantener una identidad de los aspectos (en caso de inlining)
48
![Page 46: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/46.jpg)
HISTORY-BASED ACCESS CONTROL3 – Un sistema de permisos con AOP
49
![Page 47: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/47.jpg)
History-based vs Stack-basedinspection
• Los aspectos son “compilados” (woven) a bytecode
50
![Page 48: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/48.jpg)
History-based vs Stack-basedinspection
• Los aspectos son “compilados” (woven) a bytecode
=> Los advices no dejan trazas en el stack
51
![Page 49: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/49.jpg)
History-based vs Stack-basedinspection
• Los aspectos son “compilados” (woven) a bytecode
=> Los advices no dejan trazas en el stack
• Por lo tanto, necesitamos mirar algo más que el Stack en presencia de Aspectos
54
![Page 50: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/50.jpg)
Contexto y Caso de estudio
55
• jFTPd
![Page 51: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/51.jpg)
History-based Access Control
1) Weaver-based para reforzar los chequeos en run-time
2) History-based para el modelo de control de acceso
56
![Page 52: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/52.jpg)
1) Weaver-based
• Implementación:
– Sólo afecta al weaver de aspectos
– La JVM no sufre modificaciones
– Basado en anotaciones
57
![Page 53: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/53.jpg)
1) Weaver-based
• Implementación:
– Sólo afecta al weaver de aspectos
– La JVM no sufre modificaciones
– Basado en anotaciones
• Independiente de la estrategia y del momento del weaving
58
![Page 54: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/54.jpg)
1) Weaver-based
• Implementación:
– Sólo afecta al weaver de aspectos
– La JVM no sufre modificaciones
– Basado en anotaciones
• Independiente de la estrategia y del momento del weaving
• Los aspectos no pueden interferir con el modelo de seguridad
59
![Page 55: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/55.jpg)
1) Weaver-based
class Secret {
@CheckAOPPermission(
permission=“SecretPermission”
)
private String secret;
...
}
60
![Page 56: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/56.jpg)
2) History-based
• Permisos actuales dependen de todos los permisos anteriores
61
![Page 57: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/57.jpg)
2) History-based
• Permisos actuales dependen de todos los permisos anteriores
1. Derechos estáticos (static rights, SR)
2. Derechos actuales (current rights, CR)
CR0 = SR
CRi ≤ ∩k<i CRk
62
![Page 58: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/58.jpg)
2) History-based
• En load-time (o compile-time) se asignan los SR de cada aspecto
63
![Page 59: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/59.jpg)
2) History-based
• En load-time (o compile-time) se asignan los SR de cada aspecto
• Centrado en la clase PermissionManager
64
![Page 60: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/60.jpg)
2) History-based
• En load-time (o compile-time) se asignan los SR de cada aspecto
• Centrado en la clase PermissionManager
• Cuando corresponda, se llama a demand(Permission p) para chequear
CR = p v p => CR
65
![Page 61: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/61.jpg)
History-based Access Control
66
![Page 62: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/62.jpg)
67
![Page 63: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/63.jpg)
Ejemplo
PermissionManager mngr =
PermissionManager.getPermissionManager();
AOPPermission perm =
new SensitiveOpPermission();
mngr.demand(perm);
<sensitive operation>
68
![Page 64: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/64.jpg)
Ejemplo
PermissionManager mngr =
PermissionManager.getPermissionManager();
AOPPermission perm =
new SensitiveOpPermission();
mngr.demand(perm);
<sensitive operation>
69
![Page 65: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/65.jpg)
Ejemplo
PermissionManager mngr =
PermissionManager.getPermissionManager();
AOPPermission perm =
new SensitiveOpPermission();
mngr.demand(perm);
<sensitive operation>
70
![Page 66: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/66.jpg)
Ejemplo
PermissionManager mngr =
PermissionManager.getPermissionManager();
AOPPermission perm =
new SensitiveOpPermission();
mngr.demand(perm);
<sensitive operation>
71
![Page 67: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/67.jpg)
Ejemplo
PermissionManager mngr =
PermissionManager.getPermissionManager();
AOPPermission perm =
new SensitiveOpPermission();
mngr.demand(perm);
<sensitive operation>
72
![Page 68: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/68.jpg)
Implicit Modifications
// advice before weaving
before(): ... { <something useful> }
// advice after weaving
before(): ... {
PermissionManager mngr = PM.getPM();
mngr.updateCurrent(<full aspect name>);
<something useful>
}
73
![Page 69: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/69.jpg)
Explicit Modifications
• grant(Permission) { <block> }
– Ejecuta <block> con permisos elevados
• accept(Permission) { <block> }
– Los permisos son elevados si <block> termina normalmente
74
![Page 70: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/70.jpg)
Evaluación del Prototipo
• Modificación del weaver/compiler + librería a run-time (PermissionManager)
• 3 Permisos principales: Config, Auth, CoreLoop
75
![Page 71: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/71.jpg)
Tiempos de Ejecución [seg]
76
![Page 72: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/72.jpg)
Evaluación de este enfoque
• El modelo History-based es muy estricto comparado con uno Stack-based
• Una implementación ideal requeriría integrar el sistema al compilador y al lenguaje base
• No toma en cuenta el mecanismo de
class-loading
77
![Page 73: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/73.jpg)
CLASS-BASED SECURITY4 – AOP y el modelo de seguridad de Java
78
![Page 74: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/74.jpg)
Class-based security
• Al considerar el mecanismo de class-loading, el supuesto de identidad de aspectos ya no es válido
79
![Page 75: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/75.jpg)
Class-based security
• Al considerar el mecanismo de class-loading, el supuesto de identidad de aspectos ya no es válido
• ¿Cómo integrar aspectos con el modelo de clases de Java?
80
![Page 76: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/76.jpg)
Dynamic Class Loading
• La carga de clases en Java es de manera dinámica y lazy
81
![Page 77: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/77.jpg)
Dynamic Class Loading
• La carga de clases en Java es de manera dinámica y lazy
• Separa clases confiables de las no confiables
82
![Page 78: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/78.jpg)
Dynamic Class Loading
• La carga de clases en Java es de manera dinámica y lazy
• Separa clases confiables de las no confiables
• La identidad de una clase está dada por su full-qualified name más su defining classloader
83
![Page 79: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/79.jpg)
Dynamic Class Loading
• Objetivos
– Asignación de Protection Domains
– Separación de Namespaces
– …Entre otros
84
![Page 80: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/80.jpg)
Asignación de Protection Domains
• Cada class loader asigna un protectiondomain a las clases que define
85
![Page 81: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/81.jpg)
Asignación de Protection Domains
• Cada class loader asigna un protectiondomain a las clases que define
• Un protection domain encapsula los permisos asignados a las clases del dominio
86
![Page 82: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/82.jpg)
Asignación de Protection Domains
• Por lo tanto, un aspecto también tendrá un protection domain asignado
87
![Page 83: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/83.jpg)
Asignación de Protection Domains
• Por lo tanto, un aspecto también tendrá un protection domain asignado
• Al usar inlining, un aspecto puede “compilar” un advice dentro de una clase confiable
88
![Page 84: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/84.jpg)
Asignación de Protection Domains
• Por lo tanto, un aspecto también tendrá un protection domain asignado
• Al usar inlining, un aspecto puede “compilar” un advice dentro de una clase confiable
• Por lo que el protection domain del aspecto no se conserva en algunos casos
89
![Page 85: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/85.jpg)
Separación de namespaces
• Los aspectos también pueden quebrar este principio por medio del inlining
90
![Page 86: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/86.jpg)
Separación de namespaces
• Los aspectos también pueden quebrar este principio por medio del inlining
• Al resolver una clase, un advice puede usar el defining class-loader del join point shadow en vez del class-loader que define al aspecto
91
![Page 87: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/87.jpg)
Evaluación de AspectJ
92
Defining class loader
la : aspectolb : tipo dinámico del llamadorlc : tipo estático del llamadold : tipo dinámico del llamado
Permite el weaving de un advice
No permite el weaving de un advice
![Page 88: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/88.jpg)
Evaluación de AspectJ
• lb ≤ lc y lc ≥ ld (por restricciones de JVM)
• Si la es ancestro de lb lc ld entonces es posible hacer un advice (lo cual no es deseable)
• Hacer un advice a partir de b requiere la ≥ lb
• Caso especial cuando la < o ≠ lb , la < lc, la ≥ ld
asdf - 93
![Page 89: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/89.jpg)
Observación
• Load-time weaving de AspectJ usa su propio class-loader, lo que impide tener separación de namespaces efectiva
• Sin embargo, AspectJ ofrece otras formas de weaving en compile o post-compile time
94
![Page 90: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/90.jpg)
CONCLUSIONES
95
![Page 91: Aspectos y seguridad](https://reader033.vdocuments.co/reader033/viewer/2022052907/55913a5d1a28ab19128b4584/html5/thumbnails/91.jpg)
Conclusiones
• AOSD permite una buena separación de intereses en cuanto a Seguridad
• Sin embargo, es un arma de doble filo
• La inserción de untrusted aspects requiere una arquitectura más elaborada
• Aun así, AspectJ por ejemplo, no está 100% integrado al modelo de clases de Java
96