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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting 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.
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)
| 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)
| 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 |
-
1998
- 1998-10-09 DE DE19846676A patent/DE19846676C1/de not_active Expired - Fee Related
-
1999
- 1999-01-10 UA UA2001042325A patent/UA57855C2/uk unknown
- 1999-10-01 CN CNB998119431A patent/CN1237444C/zh not_active Expired - Fee Related
- 1999-10-01 RU RU2001112417/09A patent/RU2216770C2/ru not_active IP Right Cessation
- 1999-10-01 AT AT99970480T patent/ATE257255T1/de not_active IP Right Cessation
- 1999-10-01 BR BR9914396-8A patent/BR9914396A/pt not_active IP Right Cessation
- 1999-10-01 JP JP2000576345A patent/JP2002527809A/ja active Pending
- 1999-10-01 WO PCT/DE1999/003169 patent/WO2000022506A2/de not_active Ceased
- 1999-10-01 ES ES99970480T patent/ES2214062T3/es not_active Expired - Lifetime
- 1999-10-01 DE DE59908212T patent/DE59908212D1/de not_active Expired - Lifetime
- 1999-10-01 KR KR1020017004482A patent/KR20010080068A/ko not_active Abandoned
- 1999-10-01 EP EP99970480A patent/EP1127311B1/de not_active Expired - Lifetime
-
2001
- 2001-04-09 US US09/829,328 patent/US7039907B2/en not_active Expired - Fee Related
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 |