Capacitat Instruccions RISC millorades per maquinari (Capability Hardware Enhanced RISC Instructions, CHERI) és una tecnologia de processador d'ordinador dissenyada per millorar la seguretat. CHERI té com a objectiu abordar la causa arrel dels problemes causats per la manca de seguretat de la memòria en implementacions comunes de llenguatges com C/C++, que són responsables d'al voltant del 70% de les vulnerabilitats de seguretat dels sistemes moderns.

El maquinari funciona donant a cada referència a qualsevol peça de dades o recurs del sistema les seves pròpies regles d'accés. Això impedeix que els programes accedeixin o canviïn coses que no haurien de fer. També fa que sigui difícil enganyar una part d'un programa perquè accedeixi o canviï alguna cosa a la qual hauria de poder accedir, però en un moment diferent. El mateix mecanisme s'utilitza per implementar la separació de privilegis, dividint els processos en compartiments que limiten el dany que pot fer un error (de seguretat o d'un altre tipus).

CHERI es pot afegir a moltes arquitectures de conjunts d'instruccions diferents, com ara MIPS, AArch64 i RISC-V, fent-lo utilitzable en una àmplia gamma de plataformes.

El programari s'ha de recompilar per obtenir beneficis de seguretat de memòria detallats de CHERI, però la majoria del programari requereix pocs (si n'hi ha) canvis al codi font. La importància de CHERI ha estat reconeguda pels governs com una manera de millorar la ciberseguretat i protegir els sistemes crítics. Està en desenvolupament actiu per part de diverses organitzacions empresarials i acadèmiques.

Rerefons CHERI és una arquitectura de capacitat. Les primeres arquitectures de capacitat, com l'ordinador CAP i Intel iAPX 432, van demostrar una gestió segura de la memòria, però es van veure obstaculitzats per les despeses generals de rendiment i la complexitat. A mesura que els sistemes es van fer més ràpids i complexos, es van estendre vulnerabilitats com els desbordaments de memòria intermèdia i els errors d'ús després de l'ús lliure. CHERI aborda aquests reptes amb un disseny pensat per a entorns informàtics moderns. Impulsa la seguretat de la memòria i proporciona un ús compartit i aïllament segur per gestionar la complexitat del programari creixent i combatre els ciberatacs.

Mecanisme alt=Pointers lowered to CHERI capabilities or addresses.|miniatura|Accés a la memòria amb i sense CHERI. Un sistema CHERI funciona a nivell de maquinari proporcionant un tipus forçat per maquinari (una capacitat CHERI) que autoritza l'accés a la memòria. Aquest tipus inclou una adreça i altres metadades, com ara límits i permisos. Les instruccions com ara càrregues, emmagatzematge i salts que accedeixen a la memòria utilitzen un d'aquests tipus per autoritzar l'accés, mentre que a les arquitectures tradicionals simplement utilitzarien una adreça.

Aquestes metadades s'emmagatzemen en línia, juntament amb l'adreça, a la memòria de l'ordinador i estan protegides per un bit d'etiqueta, que s'esborra si es manipula la capacitat. Això informa a l'ordinador de quines àrees de memòria es pot accedir mitjançant una operació específica i com un programa pot modificar o llegir la memòria mitjançant aquesta operació. Això permet als sistemes CHERI detectar casos en què la memòria que estava fora dels límits d'on se suposava que el programa havia de llegir o escriure es va operar. Associar les metadades amb el valor utilitzat per accedir a la memòria, en lloc de la memòria a la qual s'accedeix (a diferència d'una unitat de gestió de memòria) significa que el maquinari pot detectar casos en què un programa intenta accedir a una part de la memòria a la qual hauria de tenir accés mentre té la intenció d'accedir a una part diferent de la memòria.

Les implementacions dels sistemes CHERI també inclouen modificacions a l'assignador de memòria predeterminat. Un assignador de memòria és un component que defineix que un rang d'adreces ha de ser tractat pel programador com un objecte. En un sistema CHERI, també ha de comunicar aquesta informació al maquinari, establint els límits al punter (representat per una capacitat CHERI) que es retorna. També pot comunicar la vida útil, per evitar errors d'ús després de l'ús o després de la reutilització.

Depenent del context, els sistemes CHERI es poden utilitzar per millorar les comprovacions a nivell de compilador, construir enclavaments segurs, o fins i tot per augmentar les arquitectures d'instruccions existents. Un informe de Microsoft el 2019 va trobar que les proteccions de CHERI es podrien utilitzar per mitigar més del 70% dels problemes de seguretat de memòria trobats el 2019 a l'empresa. Les arquitectures CHERI també estan dissenyades per ser compatibles amb els llenguatges de programació existents com C i C++. Un estudi realitzat per investigadors de la Universitat de Cambridge va trobar que la portació de sis milions de línies de codi C i C++ a CHERI requeria canvis al 0,026% de les línies de codi (LoC).

Limitacions L'arquitectura introdueix complexitat de maquinari a causa dels mecanismes de bits d'etiqueta i les comprovacions de capacitat necessàries per fer complir la seguretat de la memòria. Tot i que s'han implementat optimitzacions per minimitzar aquests impactes, les compensacions de rendiment poden variar en funció de les càrregues de treball específiques i de les implementacions específiques. A més, CHERI requereix modificacions tant als ecosistemes de programari com de maquinari. Implementacions com Morello permeten que s'executin binaris no modificats, però aquests no obtenen cap benefici de seguretat addicional. El programari s'ha de recompilar o adaptar per utilitzar el model basat en capacitats de CHERI, i els fabricants de maquinari han d'incorporar extensions CHERI als seus dissenys.

La normalització continua sent un esforç constant. Tot i que iniciatives com l'Aliança CHERI i l'estandardització RISC-V tenen com a objectiu establir un suport més ampli, la manca d'estàndards de la indústria àmpliament acceptats per a les funcions de CHERI ha retardat l'adopció. Adaptar el programari heretat o adaptar els sistemes existents per treballar amb CHERI pot ser un repte, especialment per a bases de codi grans i heterogènies. La dificultat sovint prové de les pràctiques de programació utilitzades durant el desenvolupament original del programari, com ara la implementació d'una gestió de memòria personalitzada, on identificar punters a partir de nombres enters pot ser especialment problemàtic.

Implementacions CHERI L'arquitectura CHERI s'ha implementat en múltiples plataformes i projectes:

Morello: desenvolupat per Arm com a part del programa Digital Security by Design (DSbD) finançat per UKRI, el xip Morello és una arquitectura de superconjunt dissenyada per avaluar les característiques experimentals de CHERI per a un ús potencial de producció a l'arquitectura AArch64. El tauler Morello admet CheriBSD, versions personalitzades d'Android i Linux. Continua sent un prototip d'investigació. CHERIoT: Introduït per Microsoft el 2023 i ara desenvolupat per diversos venedors, CHERIoT és una adaptació RISC-V CHERI optimitzada per a petits dispositius integrats. CHERIoT és un projecte co-dissenyat de maquinari i programari i crea un model de compartiment i RTOS personalitzat juntament amb un maquinari especialitzat per oferir garanties de seguretat de cadena. Incorpora funcions avançades de seguretat de memòria inspirades en els projectes de seguretat temporal CHERI realitzats a Morello. Sonata: Desenvolupada per lowRISC i fabricada per NewAE com a part del projecte Sunburst finançat per UKRI, la plataforma Sonata és un sistema basat en FPGA dissenyat per executar arquitectures RISC-V. El tauler té un disseny de codi obert, que permet als investigadors i desenvolupadors modificar i adaptar el seu maquinari i programari. Sonata està dissenyat principalment com un sistema de prototipatge per a CHERIoT. X730: Publicat per Codasip el 2024, aquesta IP del processador és una implementació de l'esborrany de l'estàndard RISC-V CHERI per a un processador de classe d'aplicació. ICENI: anunciat per SCI Semiconductor l'any 2024, ICENI és un microcontrolador compatible amb CHERIoT dissenyat per a sistemes integrats segurs.

Les implementacions de CHERI que s'orienten als sistemes operatius principals estan dissenyades per adaptar-se tant a programari heretat com a programari de capacitat pura, permetent una adaptació gradual a les aplicacions existents. CHERI també s'ha implementat en diverses arquitectures de maquinari en un entorn de recerca, incloent MIPS, AArch64 (mitjançant la plataforma Morello) i RISC-V.

Història A les dècades de 1970 i 1980, les primeres arquitectures de capacitat com l'ordinador CAP (desenvolupat a la Universitat de Cambridge) i l'Intel iAPX 432 van demostrar fortes propietats de seguretat. Aquests sistemes es basaven en taules d'indirecció per gestionar les capacitats, introduint colls d'ampolla de rendiment, ja que l'accés a la memòria requeria diverses cerques. Tot i que aquest enfocament funcionava quan els processadors eren lents i la memòria era ràpida, a mitjans de la dècada de 1980 es va tornar poc pràctic, ja que els processadors es van fer més ràpids i els temps d'accés a la memòria es van quedar enrere.

L'any 2010 DARPA va llançar el programa CRASH (Design Clean-Slate of Resilient, Adaptive, Secure Hosts), que va encarregar als participants el redisseny dels sistemes informàtics per millorar la seguretat. L'equip de SRI International i la Universitat de Cambridge van revisar les arquitectures de capacitats, buscant abordar els reptes de seguretat de la memòria inherents als dissenys convencionals.

El 2012 es van presentar els primers prototips de CHERI, aquests prototips feien servir un micronucli amb un muntatge escrit a mà per manipular capacitats. CHERI va ser dissenyat per ser fàcil d'implementar en arquitectures modernes de canalització superescalar. A diferència dels sistemes de capacitat anteriors, CHERI va eliminar la necessitat de taules d'indirecció, evitant els problemes de rendiment associats i demostrant que les arquitectures de capacitats modernes es podien implementar de manera eficient.

El 2014, el maquinari CHERI va demostrar la seva capacitat per executar un sistema operatiu complet semblant a UNIX, FreeBSD. Aquesta demostració va demostrar que el model de capacitat de CHERI es pot integrar amb els ecosistemes de programari existents. CHERI es va prototipar originalment com una extensió del MIPS-64. La implementació utilitzava capacitats de 256 bits, que contenien camps per a una base de 64 bits, longitud, tipus d'objecte i permisos, amb alguns bits reservats per a finalitats experimentals.

El 2023 Microsoft va presentar CHERIoT, una adaptació RISC-V CHERI optimitzada per a petits dispositius integrats. CHERIoT va incorporar idees de Cornucopia i tècniques de coloració de memòria com SPARC ADI i Arm MTE per millorar la seguretat. Com a part del projecte Sunburst finançat per UKRI, lowRISC va llançar la plataforma Sonata per avançar en el desenvolupament CHERI basat en RISC-V i donar suport als esforços d'estandardització. Tant el treball de recerca CHERI RISC-V com CHERIoT van introduir el procés d'estandardització d'una família oficial d'extensions RISC-V de CHERI. Codasip va anunciar que tenien nuclis IP RISC-V amb extensions CHERI disponibles per llicència.

El 2024 SCI Semiconductors va anunciar ICENI, un xip compatible amb CHERIoT dissenyat específicament per a sistemes integrats segurs. Codasip està desenvolupant activament una implementació del nucli Linux per a l'arquitectura RISC-V. La CHERI Alliance, una organització sense ànim de lucre amb seu a Cambridge, Regne Unit, es va establir per promoure l'adopció de la tecnologia CHERI i la seva integració en productes i sistemes digitals segurs, inclòs Google com a membre fundador.

Referències

Categoria:Microprocessadors