ES2214062T3 - Procedimiento para la proteccion de direcciones de entrada. - Google Patents

Procedimiento para la proteccion de direcciones de entrada.

Info

Publication number
ES2214062T3
ES2214062T3 ES99970480T ES99970480T ES2214062T3 ES 2214062 T3 ES2214062 T3 ES 2214062T3 ES 99970480 T ES99970480 T ES 99970480T ES 99970480 T ES99970480 T ES 99970480T ES 2214062 T3 ES2214062 T3 ES 2214062T3
Authority
ES
Spain
Prior art keywords
address
data
entry
correlation
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES99970480T
Other languages
English (en)
Inventor
Christian May
Jurgen Freiwald
Olaf Brixel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Application granted granted Critical
Publication of ES2214062T3 publication Critical patent/ES2214062T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Hardware Redundancy (AREA)

Abstract

Procedimiento para la protección de direcciones de entrada para funciones en programas informáticos, en el que se puede reconocer una dirección de entrada admisible a través de una correlación de datos, que no están dentro de la misma instrucción individual, y se deposita en una célula de la memoria inmediatamente delante o detrás de la dirección de entrada una dirección de un dato correlacionado.

Description

Procedimiento para la protección de direcciones de entrada.
En las tarjetas de chips futuras deben autorizarse aplicaciones de terceros, que pueden llamar funciones del sistema operativo. En este caso podría existir el peligro de que estas aplicaciones por terceros contengan intentos de manipulación o de sabotaje con respecto a otras partes del programa. Un tipo de ataque posible sería no utilizar un puntero de función válido de una rutina del sistema operativo desde la aplicación, sino utilizar otra dirección de entrada. De esta manera, el código del sistema operativo no sería realizado de forma correcta y se provocarían, por ejemplo, posiblemente pérdidas de datos debido a la sobrescritura errónea de un área de la memoria.
Según el estado de la técnica, está planeada una solución a través de la entrada en direcciones previamente definidas a intervalos fijos (puertas). En este caso, debe verificarse en primer lugar si se encuentra una dirección de puerta en el área de las direcciones permitidas para el módulo. En el caso de resultado positivo, se salta a la puerta y se lleva a cabo desde allí en adelante un salto a la función propiamente dicha. Esto es un inconveniente porque en este caso debe realizarse un salto calculado, que conduce a una mirilla en la tubería de la CPU. De una manera alternativa, el salto a la función puede tener lugar con retraso después de algunas instrucciones prioritarias del programa de la función. Esto conduce a un problema de optimización difícil para el compilador, en el caso de que al comienzo de la función se inicie un bucle y haya que saltar constantemente en vaivén entre el código en la puerta y el código desplazado.
Se describe en el documento EP 0 859 319 A1 un circuito de control para la autorización de acceso a áreas de memoria, para la que están contenidas tablas de direcciones en la memoria, que contienen en primer lugar las direcciones de instrucciones del programa, en segundo lugar las direcciones de un área de la memoria a proteger y en tercer lugar las direcciones de aquellas instrucciones del programa que pueden acceder al área de la memoria protegida. El circuito comprende medios para la comparación de una dirección actual de una instrucción del programa con las direcciones del área protegida. En el caso de que exista una coincidencia, se compara la dirección del área de la memoria, desde la que ha sido leída la instrucción del programa, con la tabla de las direcciones de aquellas instrucciones del programa, que pueden acceder al área protegida de la memoria. De esta manera se puede detectar e impedir un acceso no autorizado al área protegida.
El cometido de la presente invención es crear un procedimiento para la protección de direcciones de entrada, en el que no debe ningún salto calculado y, por lo tanto, no aparece ninguna mirilla en la tubería de las instrucciones de la CPU.
Según la invención, este cometido se soluciona porque se puede saltar directamente a direcciones de entrada admisibles, y pueden reconocerse a través de una correlación de datos que no pueden estar dentro de la misma instrucción individual.
En este caso, el compilador o enlace puede asegurar a través de la organización del código del programa que solamente las direcciones de entrada legales cumplen esta correlación. Por ejemplo, se puede realizar la correlación porque la célula de la memoria contiene la dirección de los datos correlacionados inmediatamente delante o detrás de la dirección de entrada.
Una posibilidad preferida es en este caso que la célula de la memoria contenga inmediatamente delante o detrás de la dirección de salto una referencia a la entrada correspondiente en una lista protegida de direcciones de entrada legales.
En este caso, es especialmente preferido verificar de forma automática durante la ejecución de la llamada de la función si se cumple la correlación de los datos.
Es especialmente preferido verificar adicionalmente de forma automática durante la realización de la llamada de la función si el dato correlacionado se encuentra en el área de la memoria reservada prevista.
Si las instrucciones del programa no exceden un cierto número máximo n de bytes, se puede aplicar otra solución según la invención, previendo un código especial no operativo, que sirve para evitar correlaciones casuales y que puede ser introducido posteriormente por el compilador o enlace.
En este caso, es especialmente preferido que se lleve a cabo la correlación entre datos de código, que están distanciados entre sí al menos n bytes.
Además, la dirección de entrada se puede proteger según la invención a través de la inserción de una secuencia especial de bytes, que no puede aparecer dentro del código regular, por ejemplo a través de un código no operativo especial.
Por lo tanto, según la invención, se puede evitar la mirilla en la tubería a través de un salto directo a la dirección del puntero de la función. No obstante, para ello hay que procurar entonces que direcciones de salto legales estén caracterizadas por correlaciones de código no locales. El compilador o enlace debe asegurar a través de la organización del código del programa que solamente las direcciones legales de salto de función cumplan esta correlación. "Correlación no local" significa en este caso una correlación de datos que no pueden estar dentro de la misma instrucción local.
Por lo tanto, son posibles, por ejemplo, las siguientes formas de realización preferidas:
1.
Correlación con datos en áreas de la memoria reservadas para ello. Una ejecución sencilla podría contener, por ejemplo en el área de la memoria inmediatamente delante de la dirección de entrada la dirección de un dato correlacionado, que corresponde, por ejemplo, de nuevo a la dirección de entrada legal de la función. Durante la ejecución de la llamada de la función se puede verificar de forma automática si se cumple esta correlación y/o si el dato correlacionado se encuentra en el área de la memoria reservada prevista. El mecanismo es a primera vista muy similar al mecanismo de puerta anterior, pero tiene la ventaja de que no se produce ningún salto calculado y las instrucciones de la función pueden ser obtenidas directamente en el controlador de la tubería. Solamente se produce una mirilla en el caso de fallo de una entrada ilegal.
2.
Correlación de datos del programa en áreas no reservadas de la memoria. Esta solución presupone que las instrucciones del programa no exceden un cierto número máximo n de bytes. Entonces deben excluirse las áreas de datos más largas en el segmento del código. Además, este método presupone un código no operativo especial (SNOP), que nunca se emplea en el código regular y solamente se inserta posteriormente para evitar correlaciones casuales por el compilador / enlace. Aquí se pueden distinguir todavía dos tipos de soluciones:
a)
la correlación se realiza entre datos de código, que están distanciados entre sí al menos n bytes. El compilador o enlace debe asegurar en este caso que se eviten las eventuales correlaciones casuales en el código a través de la entrada de códigos intermedios SNOP.
Una ejecución posible es la siguiente: inmediatamente delante de la dirección de entrada de la función está un valor, que es una función de los n + m bytes siguientes (m \geq 0, por lo demás opcional). Si se cumpliese esta correlación de una manera casual en algún lugar del código, entonces el compilador o bien el enlace deben anular esta correlación casual: puesto que como consecuencia de los n + m bytes según la suposición termina al menos una instrucción auténtica, después de su término se puede insertar una serie de instrucciones SNOP, hasta que se modifica el valor de la función. La función se puede seleccionar en este caso libremente dentro de ciertos límites.
b)
La dirección de salto es protegida a través de la inserción de una secuencia especial de bytes, que no puede aparecer dentro del código regular. Ejemplo de ello es una secuencia de códigos de operación (SNOP).
Por lo tanto, según la invención, las direcciones de entrada para funciones se protegen a través de correlaciones de códigos no locales, que solamente pueden aparecer en las direcciones de entrada.
De este modo se evita de forma ventajosa el mecanismo de puerta, que implica un salto calculado y provoca una mirilla en la tubería de instrucciones.
En su lugar, se salta directamente a la dirección de entrada a la función. Las instrucciones siguientes se pueden cargar en la tubería, independientemente de que la verificación de la dirección de salto resulte positiva o negativa. De esta manera, se eleva la eficiencia de las llamadas de la función supervisadas.

Claims (8)

1. Procedimiento para la protección de direcciones de entrada para funciones en programas informáticos, en el que se puede reconocer una dirección de entrada admisible a través de una correlación de datos, que no están dentro de la misma instrucción individual, y se deposita en una célula de la memoria inmediatamente delante o detrás de la dirección de entrada una dirección de un dato correlacionado.
2. Procedimiento según la reivindicación 1, en el que se deposita en la célula de la memoria inmediatamente delante o detrás de la dirección de entrada una referencia a una entrada en una lista protegida de direcciones de entrada legales.
3. Procedimiento según la reivindicación 1 ó 2, en el que se salta directamente a la dirección de entrada.
4. Procedimiento según una de las reivindicaciones 1 a 3, en el que durante la realización de una llamada de función se verifica de forma automática si se cumple la correlación de datos para la dirección de entrada respectiva.
5. Procedimiento para la protección de direcciones de entrada para funciones en programas informáticos, en el que se puede reconocer una dirección de entrada admisible a través de una correlación de datos, que no están dentro de la misma instrucción individual, y se lleva a cabo esta correlación con datos del programa en áreas no reservadas de la memoria, donde las instrucciones del programa no exceden un cierto número n máximo de bytes y se prevé un código no operativo especial (SNOP) para evitar las correlaciones casuales y se lleva a cabo la correlación entre datos de código, que están distanciados al menos n bytes entre sí.
6. Procedimiento según la reivindicación 5, en el que la dirección de entrada es protegida a través de la inserción de una secuencia especial de bytes, que no aparece dentro del código regular.
7. Procedimiento según la reivindicación 6, en el que como secuencia especial de bytes se utiliza un código no operativo especial (SNOP).
8. Procedimiento según una de las reivindicaciones 5 a 6, en el que se salta directamente a la dirección de entrada.
ES99970480T 1998-10-09 1999-10-01 Procedimiento para la proteccion de direcciones de entrada. Expired - Lifetime ES2214062T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE19846676A DE19846676C1 (de) 1998-10-09 1998-10-09 Verfahren zur Absicherung von Einsprungsadressen
DE19846676 1998-10-09

Publications (1)

Publication Number Publication Date
ES2214062T3 true ES2214062T3 (es) 2004-09-01

Family

ID=7884005

Family Applications (1)

Application Number Title Priority Date Filing Date
ES99970480T Expired - Lifetime ES2214062T3 (es) 1998-10-09 1999-10-01 Procedimiento para la proteccion de direcciones de entrada.

Country Status (12)

Country Link
US (1) US7039907B2 (es)
EP (1) EP1127311B1 (es)
JP (1) JP2002527809A (es)
KR (1) KR20010080068A (es)
CN (1) CN1237444C (es)
AT (1) ATE257255T1 (es)
BR (1) BR9914396A (es)
DE (2) DE19846676C1 (es)
ES (1) ES2214062T3 (es)
RU (1) RU2216770C2 (es)
UA (1) UA57855C2 (es)
WO (1) WO2000022506A2 (es)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7584354B2 (en) * 2003-01-31 2009-09-01 Intel Corporation Implementing portable content protection to secure secrets
KR100617698B1 (ko) * 2004-06-07 2006-08-28 삼성전자주식회사 기능별 데이터 저장을 위한 바이너리 파일 생성 장치 및방법과 그 방법이 저장된 컴퓨터 판독 가능한 저장 매체
KR102014083B1 (ko) * 2012-12-31 2019-08-27 삼성전자주식회사 단말기의 메모리 관리방법 및 장치
CN103150438B (zh) * 2013-03-12 2016-01-06 青岛中星微电子有限公司 一种电路编译方法及装置
CN105786524B (zh) * 2016-03-23 2019-03-12 福建正孚软件有限公司 软件钩子设置方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4439828A (en) * 1981-07-27 1984-03-27 International Business Machines Corp. Instruction substitution mechanism in an instruction handling unit of a data processing system
JPS59205605A (ja) * 1983-05-07 1984-11-21 Hitachi Ltd シ−ケンス制御装置
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
JP3499252B2 (ja) * 1993-03-19 2004-02-23 株式会社ルネサステクノロジ コンパイル装置及びデータ処理装置
JP3491365B2 (ja) * 1995-01-31 2004-01-26 ソニー株式会社 符号化データ復号方法および復号装置
US5797014A (en) * 1995-12-14 1998-08-18 International Business Machines Corporation Method for reducing processor cycles used for global offset table address computation in a position independent shared library
JPH10228421A (ja) * 1997-02-14 1998-08-25 Nec Ic Microcomput Syst Ltd メモリアクセス制御回路
DE19709975C2 (de) * 1997-03-11 1999-04-22 Siemens Ag Mikrocomputer

Also Published As

Publication number Publication date
DE19846676C1 (de) 2000-03-02
US7039907B2 (en) 2006-05-02
WO2000022506A3 (de) 2000-08-24
EP1127311A2 (de) 2001-08-29
CN1237444C (zh) 2006-01-18
EP1127311B1 (de) 2004-01-02
BR9914396A (pt) 2001-06-26
RU2216770C2 (ru) 2003-11-20
US20010039652A1 (en) 2001-11-08
KR20010080068A (ko) 2001-08-22
ATE257255T1 (de) 2004-01-15
JP2002527809A (ja) 2002-08-27
CN1323413A (zh) 2001-11-21
UA57855C2 (uk) 2003-07-15
DE59908212D1 (de) 2004-02-05
WO2000022506A2 (de) 2000-04-20

Similar Documents

Publication Publication Date Title
US20080140884A1 (en) Canary bit
KR100396448B1 (ko) 반도체기억장치, 그 제어장치 및 전자기기
DE50006022D1 (de) Integrierte sicherheitsschaltung
ES2214062T3 (es) Procedimiento para la proteccion de direcciones de entrada.
KR100391080B1 (ko) 1칩 마이크로컴퓨터 및 그것을 이용하는 ic 카드
RU2187147C2 (ru) Устройство защиты от воровства
US4388695A (en) Hardware memory write lock circuit
RU2000111507A (ru) Защищенная память с множеством уровней защиты
US5511178A (en) Cache control system equipped with a loop lock indicator for indicating the presence and/or absence of an instruction in a feedback loop section
DE60002464D1 (de) Berührungsempfindliche tafel mit hoher zuverlässigkeit
WO2003038574A3 (en) An apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment
EP1077425A4 (en) DEVICE AND SYSTEM FOR ELECTRONIC WALLET MANAGEMENT, ELECTRONIC WALLET AND TERMINAL
CA2806699A1 (en) Hacker virus security-integrated control device
ES2175601T3 (es) Circuito integrado y tarjeta inteligente que lo contiene.
CN102486755A (zh) 存储器保护单元和用于控制对存储设备的访问的方法
US20090083858A1 (en) Method of protecting a password from unauthorized access and data processing unit
ES2201038T3 (es) Mecanismo de enumeracion secuencial para asegurar la integridad del orden de ejecucion de aplicaciones de tarjetas interdependientes.
JPS6210745A (ja) メモリへのアクセスのコントロ−ル方法および装置
KR100614639B1 (ko) 쓰기 방지 가능한 버퍼 메모리를 갖는 메모리 장치 및그것을 포함하는 정보 처리 시스템
WO2001097010A2 (en) Data processing method and device for protected execution of instructions
Alam et al. SmashClean: A hardware level mitigation to stack smashing attacks in OpenRISC
US20060150255A1 (en) Manipulation-protected microcontroller system
CN101226572B (zh) 一种保护基本输入输出系统安全的信息安全计算机
Goodspeed et al. Half-Blind Attacks: Mask ROM Bootloaders are Dangerous.
MXPA01003581A (es) Procedimiento para asegurar direcciones introducidas