En informática , el direccionamiento basado en capacidades es un esquema utilizado por algunas computadoras para controlar el acceso a la memoria como una implementación eficiente de la seguridad basada en capacidades . Bajo un esquema de direccionamiento basado en capacidades, los punteros son reemplazados por objetos protegidos ( capacidades nombradas ) que especifican tanto una ubicación en la memoria, junto con los derechos de acceso que definen el conjunto de operaciones que se pueden llevar a cabo en la ubicación de memoria. [1] Las capacidades solo se pueden crear o modificar mediante el uso de instrucciones privilegiadas que solo pueden ser ejecutadas por el núcleo o algún otro proceso privilegiado autorizado para hacerlo. Por lo tanto, un núcleo puede limitar el acceso del código de aplicación y otros subsistemas a las porciones mínimas necesarias de memoria (y deshabilitar el acceso de escritura cuando sea apropiado), sin la necesidad de usar espacios de direcciones separados y, por lo tanto, requerir un cambio de contexto cuando se produce un acceso.
Implementaciones prácticas
Hay dos técnicas disponibles para su implementación:
- Requiere que las capacidades se almacenen en un área particular de la memoria en la que no se pueda escribir mediante el proceso que las usará. Por ejemplo, el Plessey System 250 requería que todas las capacidades se almacenaran en segmentos de lista de capacidades.
- Ampliar la memoria con un bit adicional, que sólo se puede escribir en modo supervisor, que indica que una ubicación particular es una capacidad. Se trata de una generalización del uso de bits de etiqueta para proteger los descriptores de segmento en los sistemas grandes de Burroughs y se utilizó para proteger capacidades en el IBM System/38 .
Direccionamiento de capacidades en IBM System/38 y AS/400
El sistema operativo System/38 CPF admitía dos tipos de punteros de objetos: punteros autorizados y punteros no autorizados ; el primero era la implementación de la plataforma del direccionamiento basado en capacidades. [2] Ambos tipos de punteros solo se podían manipular mediante instrucciones privilegiadas y solo se diferenciaban en si las autorizaciones de objetos (es decir, los derechos de acceso) estaban codificadas o no en el contenido del puntero. Los punteros no autorizados no codificaban las autorizaciones de objetos y requerían que el sistema operativo verificara la autorización del objeto por separado para determinar si se permitía el acceso al objeto. Los punteros autorizados codificaban las autorizaciones de objetos, lo que significa que la posesión del puntero implicaba acceso y el sistema operativo no estaba obligado a verificar la autorización por separado. Los punteros autorizados eran irrevocables por diseño: si se alteraban las autorizaciones del objeto, no se alterarían las autorizaciones codificadas en ningún puntero autorizado que ya existiera.
Las primeras versiones del sistema operativo OS/400 para el AS/400 también admitían punteros autorizados y, por extensión, direccionamiento basado en capacidades. Sin embargo, los punteros autorizados se eliminaron en la versión V1R3 de OS/400, ya que su naturaleza irrevocable se consideró una vulnerabilidad de seguridad. [3] Desde entonces, todas las versiones de OS/400 (posteriormente IBM i) se basan únicamente en punteros no autorizados que no admiten direccionamiento basado en capacidades.
Cronología de los sistemas que adoptan el direccionamiento basado en capacidades
Referencias
- ^ Levy, Henry M. (16 de mayo de 2014). "Capacidad y conceptos de sistemas basados en objetos" (PDF) . Capability-Based Computer Systems . Digital Press. pág. 3-4. ISBN 978-1-4831-0106-4.
- ^ Levy, Henry M. (16 de mayo de 2014). "El IBM System/38" (PDF) . Sistemas informáticos basados en capacidades . Digital Press. ISBN 978-1-4831-0106-4.
- ^ Soltis, Frank (1997). Inside the AS/400 – Featuring the AS400e series (2.ª ed.). Duke Press. ISBN 978-1-882419-66-1.
Lectura adicional
- Fabry, RS (1974). "Direccionamiento basado en capacidad". Comunicaciones de la ACM . 17 (7): 403–412. doi : 10.1145/361011.361070 . S2CID 5702682.
- Wulf, W. ; Cohen, E.; Corwin, W.; Jones, A.; Levin, R.; Pierson, C.; Pollack, F. (junio de 1974). "HYDRA: el núcleo de un sistema operativo multiprocesador". Comunicaciones de la ACM . 17 (6): 337–345. doi : 10.1145/355616.364017 . ISSN 0001-0782. S2CID 8011765.
- Denning, PJ (diciembre de 1976). "Sistemas operativos tolerantes a fallos". ACM Computing Surveys . 8 (4): 359–389. doi :10.1145/356678.356680. ISSN 0360-0300. S2CID 207736773.
- Levy, Henry M. (1984). Sistemas informáticos basados en capacidades. Maynard, Mass.: Digital Press. ISBN 978-0-932376-22-0.
- Linden, Theodore A. (diciembre de 1976). "Estructuras de sistemas operativos para respaldar software seguro y confiable". ACM Computing Surveys . 8 (4): 409–445. doi :10.1145/356678.356682. hdl : 2027/mdp.39015086560037 . ISSN 0360-0300. S2CID 16720589.El mismo documento que el informe del NIST de EE. UU.
- Berstis, Viktors (6–8 de mayo de 1980). "Seguridad y protección de datos en el IBM System/38". Actas del 7º simposio anual sobre arquitectura informática . La Baule, Estados Unidos. págs. 245–252. doi : 10.1145/800053.801932 .
- Sincoskie, W. David ; Farber, David J. (julio de 1980). "SODS/OS: Sistema operativo distribuido para IBM Series/1". ACM SIGOPS Operating Systems Review . 14 (3): 46–54. doi :10.1145/850697.850704. S2CID 14245116.
- Myers, GJ ; Buckingham, BRS (octubre de 1980). "Una implementación de hardware de direccionamiento basado en capacidad". ACM SIGOPS Operating Systems Review . 14 (4): 13–25. doi :10.1145/641914.641916. S2CID 17390439.
- Houdek, ME; Soltis, FG ; Hoffman, RL (mayo de 1981). "Soporte del IBM System/38 para direccionamiento basado en capacidades". Actas del 8º Simposio Internacional ACM sobre Arquitectura de Computadores . ACM/IEEE. págs. 341–348.
- Buzzard, GD; Mudge, TN (agosto de 1983). Sistemas informáticos basados en objetos y el lenguaje de programación Ada (informe). Laboratorio de investigación informática y laboratorio de investigación robótica de la Universidad de Michigan, Departamento de ingeniería eléctrica y de computación. hdl :2027.42/3992.
Enlaces externos
- "Sobre la difusión del enfoque de capacidades". cap-talk (lista de correo). Archivado desde el original el 14 de abril de 2013. Consultado el 16 de julio de 2007 .