KR20210061446A - 안전 관련 데이터 스트림 검출 방법 - Google Patents

안전 관련 데이터 스트림 검출 방법 Download PDF

Info

Publication number
KR20210061446A
KR20210061446A KR1020217014219A KR20217014219A KR20210061446A KR 20210061446 A KR20210061446 A KR 20210061446A KR 1020217014219 A KR1020217014219 A KR 1020217014219A KR 20217014219 A KR20217014219 A KR 20217014219A KR 20210061446 A KR20210061446 A KR 20210061446A
Authority
KR
South Korea
Prior art keywords
data
hardware
simulation
hardware system
simulation model
Prior art date
Application number
KR1020217014219A
Other languages
English (en)
Inventor
페테르 프릴레르
Original Assignee
아베엘 리스트 게엠베하
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 아베엘 리스트 게엠베하 filed Critical 아베엘 리스트 게엠베하
Publication of KR20210061446A publication Critical patent/KR20210061446A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/058Safety, monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Quality & Reliability (AREA)
  • Automation & Control Theory (AREA)
  • Debugging And Monitoring (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)

Abstract

하나 이상의 데이터 처리 작업(2)을 실행하는 동안 하드웨어 시스템(1)에서 발생하는 안전 관련 데이터 스트림을 감지하는 방법. 이 방법은 하드웨어 시스템의 적어도 하나의 저장 유닛(3)에 저장될 수 있는 중요 데이터(6)를 정의하는 단계를 포함한다. 하드웨어 시스템(1)을 시뮬레이션 환경(4)에서 실행할 수 있는 시뮬레이션 모델(5)에 매핑한다. 시뮬레이션 환경(4)에서 시뮬레이션 모델(5)을 사용하여 시뮬레이션으로 데이터 처리 작업(2)을 실행한다. 데이터 처리 작업(2)을 실행하는 동안 시뮬레이션 모델(5)에서 중요 데이터(6) 및 중요 데이터(6) 인스턴스(6', 6")의 생성, 전송 및 삭제를 모니터링한다. 안전 관련 데이터 스트림의 식별 및 로그.

Description

안전 관련 데이터 스트림 검출 방법
본 발명은 적어도 하나의 데이터 처리 작업을 실행하는 동안 하드웨어 시스템에서 발생하는 안전 관련 데이터 스트림을 검출하는 방법에 관한 것이다.
정보 및 통신 기술(ICT) 시스템의 일반적인 작업은 권한없는 사용자나 응용 프로그램이 정보(데이터)에 액세스하는 것을 방지하는 것이다. 이를 위해, 예를 들어 액세스 제어(영어 기술 용어 "액세스 권한" 또는 "액세스 정책"으로도 지칭됨), 액세스 권한 관리("승인") 및 프로세스 및/또는 저장 공간의 격리(예: 샌드 박싱)와 같은, 상이한 방법들이 종래 기술에서 구현된다. 하위 수준에서는 이를 메모리 관리 유닛("메모리 관리 유닛"-MMU)을 통해 하드웨어에서 구현할 수 있다.
개념적 또는 구현 오류, 인증에 대한 표적 공격, 보조 경로("사이드 채널")를 통한 무의식적 정보 흐름 및 유사한 메커니즘은 데이터에 대한 원치 않는 액세스("누수") 기회를 제공할 수 있다. 그런 다음 공격은 하나 이상의 취약성을 악용하여 ICT 시스템에 영향을 미치거나 특정 결과("영향")를 가진 데이터에 대한 액세스 권한을 얻는다. 이는 시스템의 기밀성 규칙을 우회하거나 침투할 수 있음을 의미한다.
하드웨어 또는 컴퓨터 시스템의 기밀성 속성은 주로 다음과 같은 설계, 구현 및 운영에 관한 원칙 및 규정을 준수함으로써 충족된다.
- 설계 별 보안,
- 성공적으로 입증된 접근 방식 사용("Best Practice")
- 프로세스 및 표준 준수(예: ISO/IEC 27001 및 27002, ISO 15408/Common Criteria, NIST CSF, SAE J3061),
- 메모리-내 암호화와 같은 원칙,
- ASLR(Address Space Layout Randomization),
등.
개발 중, 특히 마지막 단계에서, 각 통합 단계 후에, 구현 및 결과 동작을 테스트해야한다. 예를 들어, 소프트웨어 및 하드웨어의 아키텍처 및 구현을 검토(오딧)하여 이를 수행할 수 있다. 이 접근 방식은 효과적이며 수십 년 동안 사용되어 왔지만 시간이 많이 걸리고 자동화하기가 어렵다. 그러나 무엇보다도 시스템의 소스(코드, 모델)를 사용할 수 있어야한다. 예를 들어, 기밀 유지를 위해 이것은 항상 바람직하지 않고 종종 가능하지도 않다(예: 타사 소프트웨어 라이브러리를 사용할 때).
정적 코드 분석(자동화될 수 있지만 누출을 찾는 데 그다지 효과적이지 않음) 또는 모델 검사(순차적으로 소스 공개가 필요함)는 또 다른 옵션이다. 이러한 방법도 공통적으로 갖는 것은 처리 체인(전송, 저장 및 처리 포함)에 대한 공격이고, 이 체인의 약점을 감지할 수 없다. 이는 예를 들어 컴파일, 링크, 전송(다운로드 등), 저장(예: 플래시 메모리, 하드 디스크, 등), 소프트웨어(인터프리터, 가상 머신 등) 및 마지막으로 하드웨어에서의 실행에 적용된다. 이것이 바로 많은 성공적인 공격이 여기서 시작되는 이유이다:
샌드 박스를 통한 공격에 관한 설명은 예를 들어: Lipp M., Gruss D., Schwarz M., Bidner D., Maurice C., Mangard S.(2017 년 9 월)의 논문 "Practical Keystroke Timing Attacks in Sandboxed JavaScript," in: Foley S., Gollmann D., Snekkenes E. (eds) Computer Security - ESORICS 2017, Lecture Notes in Computer Science, Vol. 10493.
캐시 공격에 관한 설명은, 예를 들어: Gruss, D., Maurice, C., Wagner, K., & Mangard, S. (July 2016) in "Flush + Flush: a fast and stealthy cache attack," in: International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment (p. 279-299). Springer, Cham.
스토리지에 대한 공격에 관한 설명은: Gruss, D., Maurice, C., & Mangard, S. (July 2016) in "Rowhammer.js: A remote software-induced fault attack in javascript," in: International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment (p. 300-321), Springer, Cham.
정적 테스트 외에도, 실행 중 시스템 동작을 검사하는 동적 테스트도 있다. 동적 테스트는 특히, 알려진 패턴이나 새로운 패턴(아직 정적으로 검색할 수 없음)과 일치하지 않는 시나리오와, 고려되지 않은 복잡성이나 속성으로 인해 분석에서 정적으로 찾을 수 없는 경우에 대해, 정적 테스트를 보완한다. 전체 시스템 설명과 소스 코드에 액세스할 수 없는 경우 정적 테스트의 가능성이 심각하게 제한되어, 동적 테스트의 중요성을 더욱 높일 수 있다.
동적 테스트 방법은 대부분 정의된 애플리케이션 시나리오("테스트 사례")의 (수동 또는 자동) 실행을 기반으로한다. 이 과제는 무엇보다도 다음에 놓여있다:
(i) 보안 문제를 인식하기 위해 이러한 테스트 케이스의 적절한 설계에,
(ii) 실행 중에(이상적으로는 주어진 시간에 가능한 가장 많은 수의 테스트 케이스를 실행할 수 있도록 자동으로 수행됨)
(iii) 테스트 결과의 정확한 평가에, 특히 보안 취약성 감지에.
본 발명과 관련하여, "테스트 케이스"는 바람직하게는 특정 테스트 또는 특정 시뮬레이션의 전제 조건, 입력, 실행 조건, 테스트 방법 및/또는 예상 결과를 정의하는 사양으로 지칭된다.
J., Hu, W., Irturk, A., Tiwari, M., Sherwood, T., & Kastner, R.은 논문 "Information flow isolation in I2C and USB" (June 2011) in: Proceedings of the 48th Design Automation Conference (p. 254-259), ACM에서, 예를 들어, I2C 주변 모듈에서, 특별하게 수정된 하드웨어를 기술하고 있으며, 여기서 레지스터 및 내부 버스들은 예를 들어, 데이터 워드 당 추가 비트에 의해 확장되어 있다. 및 USB의 정보 흐름 분리"(2011 년 6 월) 기사에서 설명한다. 이 비트(이 논문에서 "taint"라고 함)는 "중요한" 정보를 표시하고 하드웨어를 통해 이 정보로 "마이그레이션"한다. 데이터 처리 단계(예: 논리적 링크)는 이 마킹 비트에 의해 확장되어, 결과에 대한 중요 데이터의 영향을 매핑하고 후속 조치를 취할 수 있다. 그러나 이 절차는 특별히 수정된 하드웨어 없이는 구현될 수 없다.
본 발명의 목적은 특히 하드웨어 변경없이 동적 테스트를 제공하는 것이지만, 이 방법은 표준 하드웨어에 사용할 수 있을 뿐만 아니라 특히 산업 자동화 분야 및 임베디드 시스템에, 예를 들어 자동차 부문에서 사용될 수 있다.
이들 및 다른 목적은 본 발명에 따라 처음에 언급된 유형의 방법에 의해 달성되며, 이는 다음 단계를 포함한다: 하드웨어 시스템(1)의 적어도 하나의 저장 유닛(3)에 저장되거나 인터페이스를 통해 하드웨어 시스템(1)으로 전송될 수 있는 중요 데이터(6)를 정의하는 단계; 하드웨어 시스템(1)을 시뮬레이션 환경(4)에서 실행할 수 있는 시뮬레이션 모델(5)에 매핑하는 단계; 시뮬레이션 환경(4)에서 시뮬레이션 모델(5)과 함께 시뮬레이션으로 데이터 처리 작업(2)을 실행하는 단계; 데이터 처리 작업(2)을 실행하는 동안 시뮬레이션 모델(5)에서 중요 데이터(6) 및 중요 데이터(6)의 인스턴스(6‘, 6 ")의 생성, 전송 및 삭제를 모니터링하는 단계; 및 보안 관련 데이터 스트림 식별 및 로그(logging)하는 단계. 이러한 방법의 도움으로, 하드웨어 시스템에서의 원하지 않는 데이터 스트림의 발생을 이 용도를 위해 하드웨어 시스템을 변경할 필요없이 인식할 수 있다. 특히, 표준 CPU(가령, 인텔사, ARM, 인피네온, 등의)에 기초한 현재의 마이크로컨트롤러 시스템에서, 이러한 변형된 하드웨어를 획득하는 것이 거의 가능하지 않다. 그러나, 시뮬레이션 환경으로 사용될 수 있는 거의 모든 이러한 CPU들에 적합한 시뮬레이터들이 존재한다.
본원 발명과 관련하여, "시뮬레이션 환경"이라는 용어는 시뮬레이션 모델을 시뮬레이션하기에 적합한 시뮬레이션 소프트웨어를 구비한 컴퓨터 시스템을 지칭한다. 실제 하드웨어 시스템에 반해, 시뮬레이션 환경에서는 예를 들어 메모리 및 레지스터에 있는 데이터의 현재 상태를, 그리고 이 데이터를 변형하는 모든 프로세스를 모니터링할 수 있다. 이에 따라, 특히, 시뮬레이션 환경에서 데이터의 생성, 전송, 및 삭제를 모니터링하는 것이 가능하다. 특정 하드웨어 시스템의 시뮬레이션 모델을 시뮬레이션하기에 적합한 대응하는 시뮬레이션 환경이 당 분야에 알려져 있고, 이는 여기서 개시되는 교시 내용에 관하여 알기만 한다면 당 업자의 평균인의 능력 범위 내에 있어서, 주어진 하드웨어 시스템에 대한 적절한 시뮬레이션 환경을 선택하는 것이 가능하고, 선택된 시뮬레이션 환경에 의해 실행될 수 있는 시뮬레이션 모델에 이 하드웨어 시스템을 매핑할 수 있다.
본 설명과 관련하여, "인스턴스"는 소정의 시간에(가령, 생성/인스턴스화 시간에), 고려 중인 중요 데이터에 직접적으로 좌우되는 중요 데이터의 사본이다. 따라서 인스턴스는 예를 들어, 중요 데이터의 사본일 수 있고, 중요 데이터의 사본 및 (리)코딩일 수 있다. 리코딩은 예를 들어, 원본 데이터가 정수이고 인스턴스는 그의 부동소수점 표현일 때, 나타난다.
본 개시와 관련하여, "하드웨어 시스템"은 일반적으로 데이터 처리 시스템 및 그 주변 장치의 물리적 구성 요소(즉, 전자 및 기계 구성 요소)의 세트이다. 특히, 하드웨어 시스템은 알려진 시스템 아키텍처에 따른 컴퓨터 시스템일 수 있다. 그러나 하드웨어 시스템은 좁은 의미의 "컴퓨터 시스템"에 해당하지 않는 상호 작용하는 복수의 하드웨어 구성 요소의 구조 일 수도 있고, 예를 들어 센서 네트워크 또는 복수의 하드웨어 구성 요소가 있은 애드혹 네트워크이다.
하드웨어 시스템을 시뮬레이션 모델에 매핑하기 위해, 하드웨어 시스템은 유리하게는 적어도 하나의 통신 장치를 통해 서로 연결되고 이 통신 장치를 통해 각각의 데이터를 교환할 수 있는 다수의 하드웨어 구성 요소로 나눌 수 있고, 각각의 하드웨어 구성요소는 적어도 하나의 통신 유닛, 적어도 하나의 저장 유닛 및 적어도 하나의 프로세서 유닛을 갖는다. 시뮬레이션 모델을 모델링하기 위한 기초를 형성하는 이 분류를 적절하게 선택하면, 하드웨어 시스템을 상이한 수준(예: 추상 머신 또는 가상 머신 수준, CPU 명령 수준, 게이트 또는 비트 수준, 통신 또는 버스 수준 등)에서 시뮬레이션하고 관찰할 수 있다.
유리한 실시예에서, 중요 데이터는 데이터 특성을 정의함으로써 정의될 수 있다. 본 개시와 관련하여, 데이터 특성은 특히 데이터 콘텐츠, 생성 또는 발생 시간, 처리 시간, 스토리지 내 주소, 시스템 상태에 대한 종속성, 다른 (중요) 데이터에 대한 종속성, 등과 관련된 속성 및 이들의 조합을 지칭하는 것으로 이해된다. 예를 들어 소프트웨어 구성 요소의 소스 코드에 대한 지식 없이도 테스트가 가능하다.
데이터 속성의 관련 조합의 예는 가령, 호출 스택 데이터의 생성 및 삭제로부터의, 런타임 모니터링이다. 부 채널 공격의 일 유형은 키 검사 루틴의 런타임에 대한 정보를 사용하여, 예를 들어, 키에 관한 정보에 간접적으로 액세스할 수 있다(참조: Kocher, P. C. (1996, August), Timing attacks on implementations of Diffie-Hellman, RSA, DSS, and other systems. In Annual International Cryptology Conference (p. 104-113). Springer, Berlin, Heidelberg).
적어도 특정 보안 관련 데이터 스트림이 식별되면 경고 메시지가 유리하게 생성될 수 있다. 경고 메시지는 시뮬레이션 환경을 제어하는 데 사용되는 제어 및 모니터링 시스템의 사용자 인터페이스에 즉시 표시되어, 테스터가 시뮬레이션을 중단할지 또는 계속할지 여부를 결정할 수 있다. 필요한 경우 경고 메시지가 발생하면 시뮬레이션을 자동으로 종료할 수 있다.
식별된 안전 관련 데이터 스트림은 평가에 유용하게 저장될 수 있으며 평가는 그래픽으로 표시될 수도 있다. 이를 통해 수행된 테스트를 기록하고 보고할 수 있다.
시뮬레이션 과정도 유리하게 기록될 수 있다. 또한 필요한 경우 포괄적인 프로세스(이전 이력 포함)를 또한 기록하고, 필요한 경우 데이터 스트림 로그와 관련하여 나중에 분석/진단/문제해결을 지원할 수 있다.
유리한 방식으로, 데이터 처리 작업은 정의된 테스트 케이스를 처리하는 동안 필요한 경우 작동되는 애플리케이션 소프트웨어의 실행으로 인해 발생할 수 있다. 이를 통해 부분적으로 또는 전체적으로 애플리케이션 소프트웨어를 테스트하고 애플리케이션 소프트웨어와 기본 소프트웨어 부분(미들웨어, 프레임워크, 라이브러리, 운영 체제 등) 및 주어진 하드웨어 시스템과의 상호 작용에 대해 자세히 알아볼 수 있다.
본 발명에 따른 방법의 또 다른 유리한 실시예에서, 하드웨어 시스템의 일부는 허용된 도메인과 금지된 도메인으로 분할될 수 있다. 이를 통해 히트에 대한 관련성을 높일 수 있다.
허용된 도메인과 금지된 도메인으로의 분할은 예를 들어 중요 데이터의 정의 과정에서, 시뮬레이션 모델의 모델링 과정에서 또는 심지어 나중에 발생할 수 있으며, 이 경우 분할은 특히, 프로그래머 또는 테스트 담당자의 경험에 기반하여 또는 이전에 수행된 테스트 절차를 기반으로, 비교 가능한 하드웨어 시스템에 의해 지정될 수 있다. 본 명세서에 개시된 가르침에 대한 지식이 주어지면, 적절한 분할을 만드는 것은 당업자의 능력 내에 있다.
적어도 다음 데이터 스트림, 즉, 금지된 도메인의 통신 장치를 통한 중요 데이터 또는 그 인스턴스의 전송, 중요 데이터의 적어도 하나의 인스턴스가 계속 존재할 때 중요 데이터의 삭제, 및 금지된 도메인에서 중요 데이터 인스턴스 생성, 특정 시점 및/또는 시스템 상태 이후, 특히 데이터 처리 작업 완료 후 또는 애플리케이션 종료 후 중요 데이터의 계속성이 보안 관련 데이터 스트림으로 식별될 수 있다. 필요한 경우, 프로세스를 관찰함으로써, 시간의 중요도, 시스템 상태 등에 대한 종속성과 같은 추가 규칙을 고려할 수 있다(, 것은 본질적으로 허용 및 금지 도메인의 정의가 시뮬레이션 프로세스에 따라 변경됨을 의미한다.)
본 발명과 관련하여, "보안 관련 데이터 스트림"은 예를 들어, 각각의 애플리케이션에 대해 정의된 특정 기준, 예를 들어 앞 단락에 나열된 기준 중 하나에 대응하는 데이터 스트림이다.
본 발명은 본 발명의 예시적이고 개략적이고 비-제한적인 유리한 실시예를 도시하는 도 1 내지 5를 참조하여 아래에서 더 상세히 설명된다.
도 1은 본 발명에 따른 방법에 포함된 장치 및 방법 단계의 개략도이다.
도 2는 하드웨어 시스템과 그 시스템에서 실행되는 소프트웨어를 개략적으로 나타낸 것이다.
도 3은 도 2의 하드웨어 시스템이 시뮬레이션 모델로 매핑된 시뮬레이션 환경의 개략도이다.
도 4는 시뮬레이션 환경에서 수행된 시뮬레이션의 개략도이다. 그리고,
도 5는 시뮬레이션의 그래픽 처리 결과 다이어그램이다.
본 발명에 따른 방법의 필수 요체는 도 1에 추상적인 형태로 도시되어있다. 하드웨어 시스템(1)은 일반적으로 여러 하드웨어 구성 요소(7)로 구성되며(도 1에서, 하드웨어 구성 요소에는 상호 구별을 위해 소문자 a 내지 e가 제공됨), 이들은 적어도 하나의 통신 장치(8)를 통해 서로 연결되고 이 통신 장치(8)를 통해 데이터를 교환할 수 있다. 이러한 목적을 위해, 각 하드웨어 구성 요소(7)는 하드웨어 구성요소(7a)를 위해 도 1에 기호로 도시된 바와 같이, 대체로 통신 장치(9), 저장 유닛(3) 및 프로세서 유닛(10)을 가지고 있다. 도 1에 도시된 하드웨어 구성 요소(7c)는 예를 들어, 다른 하드웨어 구성 요소에 대해 제어 소프트웨어가 실행되는 종래의(노트북) 컴퓨터 일 수 있다. 하드웨어 시스템(1)은 또한 "중첩된" 하드웨어 구조를 가질 수 있는데, 즉 하드웨어 시스템이 상위 레벨 하드웨어 시스템의 일부라는 것을 의미한다. 예를 들어, 하드웨어 시스템(1)(또는 하드웨어 시스템(1)의 하드웨어 구성 요소(7))은 또한 SoC(system on a chip)로 설계될 수 있다. 이러한 하드웨어 시스템의 예로는 Infineon에서 만든 XC27x8X 시리즈의 마이크로 프로세서가 있다. 통신 장치(8)는 내부 버스 시스템에 의해 형성된다. 통신 유닛(9)은 CPU의 버스 커플링에서 볼 수 있다; 내부 레지스터 및 캐시는 저장 유닛(3)로 간주되고 프로세서 장치(10)는 SoC의 CPU가 된다. 해당되는 경우 CAN 컨트롤러, PWM 컨트롤러 또는 기타와 같은 주변 구성 요소를 하드웨어 시스템(1)의 추가 하드웨어 구성 요소(7)로 정의할 수 있다.
표현 수준에 따라, 하드웨어 시스템(1)의 하드웨어 구성 요소(7)는 다양한 유형의 유닛을 포함할 수 있다. 하드웨어 구성 요소(7)의 추가 예는 다음과 같다.
- 차량의 제어 장치(예: 엔진, 기어 박스, ABS, ESP 등을 위한 ECU 또는 기타 제어 장치),
- 예를 들어 WSN(무선 센서 네트워크)을 통해 통신하는 loT 시스템과 같은 센서 네트워크의 지능형 센서,
- 프로그래머블 (산업용) 컨트롤러(PLC)의 CPU 모듈 및/또는 I/O 모듈,
- 클라우드 또는 컴퓨터 클러스터의 노드.
예를 들어, 기존 PC와 관련하여, 메인 CPU는 하드웨어 구성 요소 7로 정의될 수 있으며, 디스크, 키보드, 그래픽 카드 등과 같은 주변 장치 컨트롤러는 추가 하드웨어 구성 요소로 정의된다.
통신 장치(8)는 내부 또는 외부 버스 시스템 또는 다른 유선 또는 무선 통신 장치(8)일 수 있다. 통신 장치(8)의 예는 PCI, PCI-X, PCIe, AGP, USB, I2C, 등과 같은 장치- 내부 버스, 및 CAN, LIN, Flexray,(자동차) 이더넷, MOST 등과 같은 외부 또는 필드 버스를 포함한다. 차량 부문에서는 이를 일반적으로 "차량-내 네트워크-IVN"이라고한다.
도 1에 도시된 형태에서 벗어나, 하드웨어 시스템(1)은 또한 하드웨어 구성 요소(7) 및 통신 시스템(8)의 상이한 배열을 포함할 수 있다; 예를 들어, 하드웨어 시스템(1)은 예를 들어 여러 계층적 버스, 스타 또는 메시 네트워크 등이 포함된 보다 복잡한 네트워크를 포함할 수 있다. 실제로 관련된 하드웨어 시스템(1)의 예는 임베디드 시스템이다.
본 개시와 관련하여, "임베디드 시스템"은 기술적인 맥락에서 통합된 하드웨어 시스템(1)으로 지칭된다. 임베디드 시스템은 예를 들어 의료 기술 장치, 세탁기 또는 냉장고와 같은 가전 제품, 텔레비전, DVD 플레이어, 셋톱 박스, 라우터 또는 이동 전화와 같은 엔터테인먼트 전자 제품, 자동차, 항공기, 선박 또는 기타 운송 장치와 같은 다양한 도로, 철도 또는 수상 차량, 산업 플랜트 및 우주 여행에 사용된다.
복잡한 전체 시스템의 경우(즉, 복잡한 기술적 맥락에서), 임베디드 시스템은 다른 통신 장치(8)를 통해 서로 네트워크로 연결된 복수의 자율적인 임베디드(서브) 시스템들의 네트워크일 수 있고, 서로 상이한 보안, 데이터 처리량 및/또는 속도 사양을 가진 여러 버스 시스템을 예로 들 수 있다.
하드웨어 시스템(1) 및/또는 그 안에 포함된 개별 또는 모든 하드웨어 구성 요소(7)는 선택적으로 런타임 환경, 런타임 라이브러리, 드라이버 등을 포함하는 운영 체제(11)를 가지며, 이는 이들이 알려진 방식으로 데이터 처리 작업(2)을 처리하거나 처리에 참여할 수 있도록한다. 예를 들어, 운영 체제(11)는 컴퓨터의 내부 및 외부 하드웨어의 동작 및 상호 작용을 제어하는 종래의 또는 전문화된 컴퓨터 운영 체제 일 수 있다. 운영 체제(11)의 예로는 개인용 컴퓨터, 태블릿 및 스마트 폰 영역의 Windows, Android, iOS, macOS, Linux 또는 UNIX, 자동차 부문의 QNX, Elektrobit OS, ROS, AUTOSAR 또는 다양한 제조업체의 독점 제품이 있다. 하드웨어 시스템(1)의 표현의 세부 수준에 따라, 단일 운영 체제(11)가 또한 복수의 하드웨어 구성 요소(7)에 할당될 수 있다. 이것은, 예를 들어 하드웨어 시스템(1)이(또는 포함하는) 경우이다. 운영 체제에 의해 제어되는 대응하는 버스 시스템을 통해 서로 통신하는 내부 하드웨어 구성 요소(7)를 가진 컴퓨터 시스템인(또는 이를 포함함) 경우이다. 그러나 시스템 경계 및 모델링에 따라 "작은", "큰" 또는 "중첩된" 장치를 하드웨어 구성 요소로 정의할 수도 있고, 이 경우 각 규칙 집합이 이 장치의 기능을 결정하는 운영 체제로 이해된다.
본 설명과 관련하여, 운영 체제(11)는 하드웨어 구성 요소(7) 및/또는 하드웨어 구성 요소 그룹(7) 및/또는 전체 하드웨어 시스템(1), 또는 그 안에서 발생하는 데이터 스트림의 시스템 리소스의 기능을 제어하는 프로그램 명령어의 모음인 것으로 이해된다. 복수의 운영 체제(11)가 또한 하드웨어 시스템(1)에 제공될 수 있다.
하드웨어 시스템(1)의 표현의 세부 수준이 이 하드웨어 시스템(1) 자체를 변경하지 않더라도, 표현의 유형 또는 하드웨어 구성 요소(7) 로의 분할은 후술하는 모델링 단계에, 즉, 하드웨어 시스템(1)의 시뮬레이션 모델(5) 생성에, 필수적이라는 점에 유의해야한다.
파라미터 데이터(13)에 따라, 애플리케이션 소프트웨어(12)는 하드웨어 시스템(1) 또는 개별 하드웨어 구성 요소(7)에 의해 처리되는 상이한 데이터 처리 작업(2)을 초래한다. 본 발명과 관련하여, 각 프로세스 단계(또는 각 프로세스 단계 그룹)는 일 하드웨어 구성 요소(7) 또는 복수의 하드웨어 구성 요소(7)에 의해 함께 실행되는 "데이터 처리 작업"(2)으로 볼 수 있다. 특히, 본 개시와 관련하여, 프로세스 단계는 데이터 스트림이 있는 데이터 처리 작업으로 간주된다.
본 개시와 관련하여, 다음은 특히 "데이터 스트림"으로 지칭된다:
- 한 저장 유닛(3)의 저장 주소에 저장된 데이터의 복사본을 동일한 저장 유닛(3) 또는 상이한 저장 유닛(3)의 다른 저장 주소에서 생성,
- 데이터 또는 데이터 사본 변경,
- 저장 유닛(3)의 저장 주소에 저장된 데이터 삭제,
- 복수의 하드웨어 구성 요소에 의해 사용되는 통신 장치(8)를 통해 하드웨어 구성 요소(7)로부터 하나(또는 복수)의 다른 하드웨어 구성 요소(7)로 데이터 항목을 전송, 및
- 하드웨어 시스템(1)의 외부 인터페이스를 통해 데이터 송수신.
본 설명과 관련하여, 애플리케이션 소프트웨어(12)의 실행에 영향을 미치는 프로그램 외부에 설정된 모든 영향 요인은 "파라미터 데이터"(13)라고한다. 파라미터 데이터(13)는 개발자 또는 사용자가 선택한 설정과 관련될 수 있고, 특정 환경 조건으로부터 나타날 수 있고, 구성 파일("INI"또는 "CFG"파일이라고도 함)에 통상적으로 정의된 기본 설정, 디폴트 값, 작동 모드 등을 지정할 수 있다. 이러한 파라미터 데이터(13)의 또 다른 예는 애플리케이션 소프트웨어(12)에 따라 하드웨어 시스템(1)(예를 들어 차량에 내장된 시스템일 수 있음)에서 처리되는 센서 데이터이다. 실제 하드웨어 시스템(1)에서, 이 파라미터 데이터(13)는 따라서 현재 환경 조건의 결과이다. 하드웨어 시스템(1)의 시뮬레이션 과정에서, 대응하는 파라미터 데이터(13)가 제공되고 테스트 케이스로서 처리될 수 있다.
운영 체제(11), 애플리케이션 소프트웨어(12) 및 파라미터 데이터(13)에 대한 심볼의 스택 디스플레이는 복수의 운영 체제 및/또는 애플리케이션 소프트웨어 유닛 및/또는 파라미터 데이터 세트가 하드웨어 시스템(11)과 관련될 수 있음을 보여주기 위한 것이다.
하드웨어 시스템(1) 및 할당된 운영 체제(11) 또는 할당된 운영 체제들(11)의 복잡한 아키텍처로 인해, 그리고 최신 프로그래밍 도구로 생성된 애플리케이션 소프트웨어(12)의 구조로 인해, 애플리케이션 소프트웨어(12)의 소스 코드에 기초하여 어떤 데이터 스트림이 특정 하드웨어 시스템(1)에서 데이터 처리 작업을 트리거할지 정적 방법을 통해 완전하게 예측하는 것이 더이상 가능하지 않다. 또한, 검사는 제한된 수의 예시적인 파라미터 데이터(13)를 사용해야만 수행될 수 있다. 그러나 공격에 악용될 수 있는 보조 경로를 통해 무의식적인 정보 스트림을 따라 취약성을 열 수 있는 것은 바로 이러한 것이다.
그러나 이러한 목적을 위해 특수 하드웨어가 필요하기 때문에 하드웨어 시스템(1)에서 발생하는 데이터 스트림을 모니터링하는 것은 불가능하다. 특수 하드웨어를 사용한 오류 분석은 변경되지 않은 실제 하드웨어에 대해서만 중요할 뿐이다.
자체적으로 볼 수 없는 데이터 스트림에 대한 통찰을 얻기 위해, 본 발명에 따른 하드웨어 시스템(1)은 시뮬레이션 환경(4)에서 실행될 수 있는 시뮬레이션 모델(5)로 매핑된다.
시뮬레이션 환경(4)은 관찰을 위해 데이터 처리 작업을 실행하는 동안 하드웨어 시스템(1)의 시뮬레이션 모델(5)에서 발생하는 데이터 스트림을 시뮬레이션할 수 있는 임의의 적합한 시뮬레이션 플랫폼일 수 있다.
시뮬레이션 환경(4)에서의 시뮬레이션은 개별 하드웨어 구성 요소(7)에 의해 실행되는 데이터 스트림을 관찰 및 로그한다. 이러한 관찰 및 로그는 바람직하게는 대응하는 사용자 인터페이스(25)를 통해 제어 및 모니터링 시스템(24)에 명시되는, 그리고, 시뮬레이션이 수행되기 전에 시뮬레이션 환경(4)의 "중요 데이터의 정의"(6)에서 이용 가능하게되는, 중요 데이터로 제한된다. 제어 및 모니터링 시스템(24)은 사용자가 사용자 인터페이스(25)를 사용하여 시뮬레이션 모델(5)의 모델링, 중요 데이터(6)의 정의, 시뮬레이션 실행의 시작 및 취소, 파라미터 데이터(13) 또는 테스트 케이스의 정의 또는 선택을 포함한, 시뮬레이션 환경(4)에서 시뮬레이션을 실행하는 데 필요한 모든 정의 및 명령어를 생성할 수 있도록한다.
하드웨어 시스템(1)이 시뮬레이션 모델(5)에 매핑될 수 있게하는 기술 및 시스템은 종래 기술로부터 알려져 있고 예를 들어 Ye, X., Fan, D., Sun, N., Tang, S., Zhang, M., & Zhang, H.의 논문 "SimICT: A fast and flexible framework for performance and power evaluation of large-scale architecture," September 2013, in: Proceedings of the 2013 International Symposium on Low Power Electronics and Design (p. 273-278), IEEE Press.에 기술되어 있다.
예를 들어, 시뮬레이션 모델(5)은, 전체 시스템의 모든 구성 요소를 소프트웨어에서 시뮬레이션할 수 없는 경우, 전체 시뮬레이션 모델의 생성이 너무 복잡한 경우, 또는 이러한 시뮬레이션에 컴퓨팅 시간이 너무 많이 필요할 경우, 상대적으로 큰 전체 시스템의 일부만 묘사할 수 있다. 이 경우에, 데이터 스트림과 관련이 없는 부분은 예를 들어 하드웨어-인-더-루프 시뮬레이션의 방식으로 실제 하드웨어 요소로서 시뮬레이션 환경(4)에 결합될 수 있다. 유사한 방식으로, 시뮬레이션 모델(5)이 실행되는 시뮬레이션 환경(4)은 하나(이상)의 시뮬레이션 환경과 데이터를 교환할 수 있고 - 이러한 추가의 시뮬레이션 환경은 발명의 방법에 따라 검사될 필요가 없는 데이터 베이스를 가진 요소들을 시뮬레이션하고 - 따라서, 더 간단한 구조를 가질 수 있다.
시뮬레이션에서, 시뮬레이션 모델(5)은 이전에 정의된 테스트 케이스에 기초하여 결정되는 파라미터 데이터(13)와 함께 애플리케이션 소프트웨어(12)로부터 발생하는 데이터 처리 작업(2)을 실행한다. 예를 들어 소프트웨어 프로그램 전체 또는 그 개별 부분을 처리할 수 있다. 예를 들어, 테스트 케이스는 가능한한 현실적인 하드웨어 시스템(1)의 프로세스를 위해 설계될 수 있지만, 특수 시나리오를 나타내거나 한계 범위의 작동 조건과 관련될 수도 있다. 차량용 운전자 지원 시스템과 관련하여 테스트 케이스를 생성하고 최적화하는 방법은 예를 들어 WO 2015/067649 A1에 개시되어 있으며 여기서 "테스트 시나리오"라고한다. 시뮬레이션 환경(4)은 시뮬레이션 모델(5)이 그러한 테스트 케이스에 따라 실행되도록 허용하지만, 시뮬레이션 모델(5)에서 중요 데이터의 물리적 사본의 생성, 전송, 처리/링크 및 삭제는 제어 및 모니터링 시스템(24)에 의해 모니터링되고 로그된다.
시뮬레이션이 종료된 후(또는 시뮬레이션 동안), 제어 및 모니터링 시스템(24)은 기록된 데이터를 사용하여 평가(14)를 생성하며, 이는 선택적으로 그래픽 표현도 포함한다. 평가(14)는 특히 유선 및/또는 무선 데이터 연결을 통한 중요 데이터의 전송 프로세스 뿐만 아니라 시뮬레이션 모델(5)로 모델링된 하드웨어 시스템(1)의 표현의 임의의 저장 위치에서 중요 데이터의 물리적 복사본의 생성 및 삭제를 보여준다. 시뮬레이션이 종료된 후 저장 유닛(3)에 존재할 수 있는 중요 데이터의 인스턴스가 특히 중요하다. 시뮬레이션 후(또는 구분된 데이터 처리 작업(2) 종료 후 또는 원래 저장 위치에서 중요 데이터(6)를 삭제한 후) 중요 데이터(6)의 복사본이 아직 삭제되지 않았거나 덮어 쓰여지지 않은 경우일 수 있고, 따라서 저장 유닛(3) 중 하나에서 감지되지 않은 특정 주소에 여전히 존재한다.
평가(14)에서, 저장 유닛(3) 및/또는 통신 장치(8) 및/또는 통신 유닛(9)은 각각 유리하게는 "허용된 도메인"(15) 및 "금지된 도메인"(16)으로 분할될 수 있다. 이러한 도메인들은 예를 들어, 전체 저장 유닛(3) 또는 저장 유닛(3)의 특정 주소 공간을 기반으로, 버스 주소에 기초하여, 또는 하드웨어 구성 요소(7)에 기초하여 정의될 수 있고, 이러한 정의 또는 분할은 제어 및 모니터링 시스템(24)을 통해 수행될 수도 있다.
시뮬레이션 모델(5)은 필요에 따라 정의 가능한 세부 사항으로 실행될 하드웨어 시스템(1)을 나타낼 수 있다. 시뮬레이션 모델(5)은 예를 들어 CPU 명령어 세트의 레벨(CPU 명령어 레벨) 또는 하드웨어 게이트 레벨에서 모델링될 수 있다. 필요한 세부 수준은 테스트할 공격 유형과 관련이 있다. 예를 들어, 소프트웨어 오류로 인해 원하지 않는 데이터 스트림을 찾으려면, CPU의 명령 수준에서의 시뮬레이션으로 충분하다. 하드웨어의 갭(예: SPECTER 및 MELTDOWN으로 알려진 보안 갭) 또는 캐시 공격으로 인해 원하지 않는 데이터 스트림을 찾으려면 하드웨어/게이트 수준에서 시뮬레이션을 수행해야한다.
특히, 하드웨어 시스템(1)은 또한 직접 저장 액세스, 주변 장치 등과 같은 서브 시스템 및 통신 인터페이스를 포함할 수 있다.
도 2는 운영 체제(11)가 실행되고 애플리케이션 소프트웨어(12)가 실행될 수 있는 하드웨어 시스템(1)의 구체적인 예를 도시한다. 하드웨어 시스템(1)은 프로세서 코어(18), 프로세서 캐시(19) 및 프로세서 IO(20)를 갖는 프로세서(17)와 함께 통상적인 컴퓨터 아키텍처에 따라 설계된다. 프로세서(17)는 버스 아키텍처(21)를 통해 추가 구성 요소(22)와 통신할 수 있다. 프로세서 코어(18), 프로세서 캐시(19), 프로세서 IO(20), 버스 아키텍처(21) 및 추가 구성 요소(22)로 구성된 유닛은 (일반적으로 센서 및 액추에이터를 통해) (실제) 환경과 정보를 교환하는 사이버-물리적 시스템으로 볼 수 있다. 이러한 사이버-물리적 시스템은 예를 들어 자동차 제어 장치(ECU)가 될 수 있다.
애플리케이션 소프트웨어(12)가 처리될 수 있는 운영 체제(11)는 하드웨어 시스템(1)에서 실행된다.
도 1과 관련하여 이루어진 일반적인 설명에 따라, 도 2의 프로세서(17)는 예를 들어, 제 1 하드웨어 구성 요소(7a)에 대응하고, 프로세서 코어(18)는 프로세서 유닛(10)에 대응하며, 프로세서 캐시(19)는 저장 유닛(3)에 대응하고, 프로세서 IO(20)는 통신 유닛(9)에 대응하며, BUS 배열(21)은 통신 장치(8)에 대응하고, 추가 구성요소(22)는 다른 하드웨어 구성요소(7)를 포함할 수 있다. 이미 언급한 바와 같이, 예를 들어, 더 자세한 수준에서, 다른 유형의 모델링도 가능하다.
도 3에서, 도 2의 하드웨어 시스템(1)의 모델링은 시뮬레이션 모델(5)의 예로서 도시되어 있으며, 이는 하드웨어 시스템(1)의 시뮬레이션으로서 시뮬레이션 환경(4)에 의해 작동될 수 있으며, 운영 체제(11) 및 애플리케이션 소프트웨어(12)를 고려한 것이다.
도 4는 본 발명에 따른 방법을 사용하여 테스트 실행에서 수행되는 단계를 개략적으로 나타낸 것이다. 테스터(23)는 제어 및 모니터링 시스템(24)의 사용자 인터페이스(25)를 통해 시뮬레이션 환경(4)을 운영할 수 있으며, 시뮬레이션 모델(5)의 모델링은 도 4의 예시에서 이미 완료되었다. 정의 단계 I에서, 테스터는 중요 데이터(6)를 정의하고, 이 정의는 특히 하드웨어 시스템(1) 및 그 상에서 실행되는 애플리케이션 소프트웨어(12)의 분석에 기초한다. 모니터링할 중요 데이터(6)는 예를 들어 소프트웨어에서 직접, 즉 편집 전에, 수행할 수 있는 특수 마킹을 통해 사용자가 지정한다. 이를 위해, 애플리케이션 소프트웨어(12)의 소스 코드 및/또는 심볼 파일과 같은 디버깅 정보에 대한 액세스가 적어도 부분적으로 필요하다. 필요한 경우 데이터 내용, 생성 시간, 처리 시간, 저장소 주소 등과 같은 속성과 같은 파일 특성을 지정하여 중요 데이터를 정의할 수도 있으며, 이는 소스 코드에 대한 액세스없이 대체로 가능하다.
따라서, 본 개시와 관련하여 "중요 데이터"라 함은 특히 실행자(예: 프로그래머 또는 테스터(23))에 의해 또는 이전에 규정된 성질에 의해, 수행되는 정의 단계에서 중요 데이터로 정의된 데이터를 의미한다. 중요 데이터를 정의하는 기준은 특히 각각의 개별 사례와, 검사할 하드웨어 시스템 및/또는 데이터 처리 작업에 따라 다르다. 당업자는 여기에 개시된 가르침에 익숙하다면 중요 데이터를 정의할 수 있다.
규칙은 중요 데이터(6)의 정의와 관련하여 작성될 수 있다. 예를 들어 모니터링되는 중요 데이터가 "초과"해서는 안되는 "한도"를 설명할 수 있다. 이러한 제한은 하드웨어의 특정 부분, 특정 저장 영역, CPU의 특정 부분 등과 관련될 수 있고 이러한 리소스를 허용된 도메인(15) 및 금지된 도메인(16)으로 나눈다. 이러한 정의에는 시스템 상태에 대한 특정 기간 또는 종속성과 같은 추가 제한 사항도 포함될 수 있다. 도메인 정의를 위한 추가 기능으로, 프로세스가 실행되는 컨텍스트가 사용될 수 있고, 예를 들어, 어느 사용자 하에서(또는 그를 위해 프로세스가 실행되고 있는지, 또는 프로세서가 사용자 또는 커널 모드에서 실행 중인지, 등이 사용될 수 있다.
시뮬레이션 과정에서 처리될 테스트 케이스는 정의 단계 I에서도 선택되거나 정의된다. 시뮬레이션 모델(5)의 모델링도 이 단계에서 또한 수행되거나 이 모델링이 적용될 수 있다.
시뮬레이션 모델(5) 모델링, 중요 데이터(6) 정의, 테스트 케이스 선택 및 규칙 및 한계 정의 단계는 임의의 순서로, 서로 병렬로, 또는 반복 단계로 수행할 수 있다.
단계 II에서는 검사할 애플리케이션 소프트웨어(12)가 애플리케이션 또는 테스트 사례를 기반으로 시뮬레이션 환경에 설정되고, 단계 III에서는 시뮬레이션 환경(4)에서 시뮬레이션이 시작되고, 진행중인 시뮬레이션이 제어 및 모니터링 시스템(24)에 의해 모니터링된다. 테스트할 애플리케이션 소프트웨어 및 모든 부분(프레임 워크, 런타임 라이브러리, 운영 체제 등) 및 하드웨어가 시뮬레이션 환경(4)에서 "실행"되기 때문에, 중요 데이터 또는 중요 데이터의 스트림에 대한 모든 액세스 데이터(및 사본)를 관찰, 모니터링하고 정의된 규칙과 비교한다. 규칙 위반은 기록 및/또는 경고 메시지로 보고될 수 있으므로 가능한 데이터 유출에 대한 정보를 생성한다. 또한 이러한 결과의 컨텍스트 및 이전 이력을 기록하여(추적 방법을 사용하여 시뮬레이션 환경(4)의 전체 시퀀스를 문서화할 수 있음) 추가 진단(또는 디버깅)에서 중요한 지원을 제공할 수 있다.
제어 및 모니터링 시스템(24)은 전형적인 디버거 인터페이스와 유사한 시뮬레이션 환경(4)의 내부 레지스터 및 상태에 적어도 부분적으로 액세스한다.
따라서, 중요 데이터(6), 이들에 대한 모든 액세스, 및 소프트웨어 및 하드웨어 활동(예: CPU 레지스터의 플래그)을 통해 이 데이터에서 파생될 수 있는 모든 변경 사항이 관찰되고 모니터링된다. 중요 데이터의 경로는 제어 및 모니터링 시스템(24)에 의해 저장될 수 있고, 예를 들어 트리 구조의 트레이스 형태로 평가(14)에 표시될 수 있다(단계 IV).
도 5에서, 중요 데이터(6)에 대한 그러한 평가(14)는 예로서 트리 구조로 도시된다. x 축은 시뮬레이션 타이밍을 나타내고, y 축은 하드웨어 부분을 허용 도메인(15)과 금지 도메인(16)으로 나눈 것을 나타낸다.
도 5에 도시된 예에서, 중요 데이터(6)의 모니터링은 시간(a)에서 시작된다(예를 들어, 중요 데이터가 하드웨어 구성 요소(7)의 메모리에 로드될 때). 시간(b)에서 프로세스 단계 과정에서, 첫 번째 인스턴스(6')로 지정된 중요 데이터의 복사본이 생성된다. 첫 번째 인스턴스는 허용 도메인(15)에 할당된 저장 영역에 위치한다. 시간(c)에서, 두 번째 인스턴스(6")는 복사에 의해 첫 번째 인스턴스에서 생성되고, 금지된 도메인(16)에 할당된 메모리에 저장된다. 이 프로세스는 제어 및 모니터링 시스템(24)에 의해 인식 및 보고된다. 필요한 경우 경고 메시지가 생성되거나 시뮬레이션 실행이 중단될 수 있다. 시간(d)에서, 중요 데이터의 원본이 삭제된다(예: 덮어 쓰기 또는 삭제). 그러나 첫 번째 인스턴스(6')는 이고 보고시점에서 (그러나 허용된 도메인에서) 여전히 존재한다. 이것은 또한 기록되고 보고된다. 이러한 방식으로, 모니터링된 중요 데이터(6)의 모든 인스턴스와 이에 대한 액세스를 감지할 수 있다. 새 인스턴스는 일반적으로 새 하위 트리의 시작 노드를 형성한다.
실제로, 위에서 설명한 평가(14)는 예를 들어 다음 프로세스를 문서화할 수 있다: 모니터링된 데이터가 외부 메모리로부터 CPU 레지스터로 업로드된다. 그러나 이로 인해 일반적으로 캐시에 복사본이 생성될 수 있으며(여러 수준에서도 가능) CPU 레지스터의 데이터가 삭제되거나 덮어써질 때도 이는 존재한다. 따라서 이 복사본(즉, 첫 번째 인스턴스(6'))을 다시 모니터링해야하므로 그래프에서 해당 위치(예: 캐시에 할당됨)에 새 분기를 형성한다. 버스를 통한 데이터 전송은 잠재적으로 동일한 버스에 연결된 모든 수신기가 이 시점에서 이 데이터를 읽을 수 있도록 허용한다(그리고 이후에 해당 데이터를 복사 또는 처리). 이것은 또한 문서화되고 그래프에서 새로운 분기로 이어진다.
또 다른 가능성은 모니터링된 데이터의 처리이다. 예를 들어 시프트 명령은 이진 데이터를 여러 비트 위치만큼 시프트하여 해당 데이터를 변경한다. 결과는 모니터링되는 데이터에 따라 다르므로, 그래프에 새 분기로 문서화되고 후속 조치도 취한다.
본 명세서에 개시된 절차는 예를 들어, 특히 차량에서 제어 장치 및 버스 시스템에서 "기밀성" 및 "프라이버시"와 같은 특성을 테스트하고 진단하기 위한 새로운 도구 제품군의 개발을 허용한다. 특히 자동화 및 자율 주행 차량의 개발과 관련하여, 특히 드라이브 트레인, 주행 기능, 차량 통신, 승객 편의(eHealth 포함) 및 탑재 하중 관리를 위한 미래의 제어 장치는 점점 더 개인적이고 미션 크리티컬한 데이터를 처리할 것이다. 이러한 데이터는 정의된 방식으로 만 공개 또는 전달될 수 있으며 우연히 또는 표적 공격의 결과로 액세스할 수 없다. 본 발명의 도움으로, 보안 관련 데이터 스트림에 대해 모든 세부 수준에서 다양한 하드웨어 시스템을 테스트할 수 있다. 테스트는 또한 임의의 폭으로 스케일링될 수 있으며, 이에 따라 예를 들어 복수의 상호 작용 시스템이 시뮬레이션될 수 있다. 확장 가능한 세부 정보 덕분에 오류는 애플리케이션 소프트웨어, 운영 체제 또는 이미 하이퍼바가저 또는 더 깊은 곳에서 하드웨어 구현에서 직접 감지할 수 있다(부 채널 공격과 관련이 있을 수 있음).

Claims (10)

  1. 적어도 하나의 데이터 처리 작업(2)을 실행하는 동안 하드웨어 시스템(1)에서 발생하는 안전 관련 데이터 스트림을 검출하는 방법으로서, 상기 방법은 다음 단계를 포함하는, 검출 방법.
    하드웨어 시스템(1)의 적어도 하나의 저장 유닛(3)에 저장되거나 인터페이스를 통해 하드웨어 시스템(1)으로 전송될 수 있는 중요 데이터(6)를 정의하는 단계,
    하드웨어 시스템(1)을 시뮬레이션 환경(4)에서 실행할 수 있는 시뮬레이션 모델(5)에 매핑하는 단계,
    시뮬레이션 환경(4)에서 시뮬레이션 모델(5)과 함께 시뮬레이션으로 데이터 처리 작업(2)을 실행하는 단계,
    데이터 처리 작업(2)을 실행하는 동안 시뮬레이션 모델(5)에서 중요 데이터(6) 및 중요 데이터(6)의 인스턴스(6‘, 6 ") 생성, 전송 및 삭제를 모니터링하는 단계, 및
    보안 관련 데이터 스트림 식별 및 로그(logging)하는 단계.
  2. 제 1 항에 있어서, 하드웨어 시스템(1)을 시뮬레이션 모델(5)에 매핑하기 위해, 하드웨어 시스템(1)이 다양한 하드웨어 구성 요소(7)들로 분할되고, 상기 다양한 하드웨어 구성요소(7)들은 적어도 하나의 통신 장치(8)를 통해 서로간에 연결되고, 이 통신 장치(8)를 통해 데이터를 교환할 수 있는 반면, 각 하드웨어 구성 요소(7)는 적어도 하나의 통신 유닛(9), 적어도 하나의 저장 유닛(3) 및 적어도 하나의 프로세서 유닛(10)을 구비하는, 검출 방법.
  3. 제 1 항 또는 제 2 항에 있어서, 상기 중요 데이터(6)는 데이터 특성을 정의함으로써 정의될 수 있는, 검출 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서, 적어도 특정 보안 관련 데이터 스트림이 식별될 때 경고 메시지가 생성되는, 검출 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서, 식별된 안전 관련 데이터 스트림은 평가(14)에 저장되는, 검출 방법.
  6. 제 5 항에 있어서, 상기 평가(14)는 그래픽으로 표시되는, 검출 방법.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 시뮬레이션 과정이 로그되는, 검출 방법.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서, 데이터 처리 작업(2)은 적용 가능한 경우, 정의된 테스트 케이스를 처리하는 동안, 작동되는 애플리케이션 소프트웨어(12)의 실행으로부터 발생하는, 검출 방법.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서, 상기 방법은 하드웨어 시스템의 일부를 허용 도메인(15)과 금지 도메인(16)으로 분할하는 단계를 더 포함하는, 검출 방법.
  10. 제 9 항에 있어서, 적어도 다음의 데이터 스트림이 보안 관련 데이터 스트림으로 식별되는, 검출 방법.
    금지된 도메인(16)의 통신 장치(8)를 통해 중요 데이터(6) 또는 중요 데이터의 인스턴스(6', 6")의 전송,
    중요 데이터(6)의 인스턴스(6', 6")가 계속 존재할 때 중요 데이터(6)의 삭제,
    금지된 도메인(16)에서 중요 데이터(6)의 인스턴스(6', 6") 생성
    특히 데이터 처리 작업이 완료된 후, 특정 시점 및/또는 시스템 상태 이후에 중요 데이터(6)의 계속적 존재.
KR1020217014219A 2018-10-11 2019-10-10 안전 관련 데이터 스트림 검출 방법 KR20210061446A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
ATA50889/2018 2018-10-11
ATA50889/2018A AT521713B1 (de) 2018-10-11 2018-10-11 Verfahren zur Detektion sicherheitsrelevanter Datenflüsse
PCT/AT2019/060339 WO2020073072A1 (de) 2018-10-11 2019-10-10 Verfahren zur detektion sicherheitsrelevanter datenflüsse

Publications (1)

Publication Number Publication Date
KR20210061446A true KR20210061446A (ko) 2021-05-27

Family

ID=68424542

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217014219A KR20210061446A (ko) 2018-10-11 2019-10-10 안전 관련 데이터 스트림 검출 방법

Country Status (7)

Country Link
US (1) US20210342249A1 (ko)
JP (1) JP7377260B2 (ko)
KR (1) KR20210061446A (ko)
CN (1) CN112840341B (ko)
AT (1) AT521713B1 (ko)
IL (1) IL282039A (ko)
WO (1) WO2020073072A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3828748A1 (en) * 2019-11-27 2021-06-02 AO Kaspersky Lab System and method for access control in electronic control units of vehicles
RU2750626C2 (ru) * 2019-11-27 2021-06-30 Акционерное общество "Лаборатория Касперского" Система и способ управления доступом в электронных блоках управления транспортными средствами
CN114384820B (zh) * 2021-11-30 2023-12-22 重庆长安汽车股份有限公司 基于云台架的自动驾驶算法仿真测试系统及方法
TWI797934B (zh) * 2021-12-30 2023-04-01 新唐科技股份有限公司 微控制晶片及存取方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0226906D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Virtual to physical memory address mapping within a system having a secure domain and a non-secure domain
JP4656929B2 (ja) * 2003-11-18 2011-03-23 クイックターン・デザイン・システムズ・インコーポレイテッド エミュレーションシステムとシミュレータとの間でのシミュレーション及び可視化データ転送のための最適化インターフェース
US8127360B1 (en) * 2006-06-29 2012-02-28 Symantec Corporation Method and apparatus for detecting leakage of sensitive information
US8060074B2 (en) 2007-07-30 2011-11-15 Mobile Iron, Inc. Virtual instance architecture for mobile device management systems
US9721089B2 (en) 2011-05-06 2017-08-01 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for efficient computer forensic analysis and data access control
US9298918B2 (en) * 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
JP5832954B2 (ja) * 2012-05-18 2015-12-16 日本電信電話株式会社 タグ付与装置及びタグ付与方法
JP5952218B2 (ja) * 2013-05-16 2016-07-13 日本電信電話株式会社 情報処理装置および情報処理方法
US10185584B2 (en) 2013-08-20 2019-01-22 Teleputers, Llc System and method for self-protecting data
AT513370B1 (de) 2013-11-05 2015-11-15 Avl List Gmbh Virtuelle Testoptimierung für Fahrerassistenzsysteme
US9473520B2 (en) 2013-12-17 2016-10-18 Verisign, Inc. Systems and methods for incubating malware in a virtual organization
CN105404828A (zh) 2014-09-12 2016-03-16 国际商业机器公司 用于数据安全的方法和系统
EP3001313A1 (de) * 2014-09-23 2016-03-30 dSPACE digital signal processing and control engineering GmbH Verfahren zur Simulation eines Anwendungsprogramms eines elektronischen Steuergeräts auf einem Computer
WO2016141998A1 (de) * 2015-03-12 2016-09-15 Siemens Aktiengesellschaft Vorrichtung und verfahren zum bereitstellen einer digitalen abbildung einer physikalischen entität
US10037221B2 (en) * 2015-12-28 2018-07-31 Amazon Technologies, Inc. Management of virtual desktop instance pools
US10719631B2 (en) * 2016-07-27 2020-07-21 Tortuga Logic Inc. Method and system for detecting hardware trojans and unintentional design flaws
JP6396519B2 (ja) 2017-01-23 2018-09-26 ファナック株式会社 通信環境への侵入を検出するシステム、および侵入検出方法
CN108255711A (zh) * 2017-12-29 2018-07-06 湖南优利泰克自动化系统有限公司 一种基于污点分析的plc固件模糊测试系统及测试方法

Also Published As

Publication number Publication date
EP3864547A1 (de) 2021-08-18
US20210342249A1 (en) 2021-11-04
AT521713B1 (de) 2023-07-15
AT521713A2 (de) 2020-04-15
CN112840341A (zh) 2021-05-25
CN112840341B (zh) 2024-03-15
IL282039A (en) 2021-05-31
AT521713A3 (de) 2023-04-15
WO2020073072A1 (de) 2020-04-16
JP2022502790A (ja) 2022-01-11
JP7377260B2 (ja) 2023-11-09

Similar Documents

Publication Publication Date Title
KR20210061446A (ko) 안전 관련 데이터 스트림 검출 방법
US8407800B2 (en) Method for software vulnerability flow analysis, generation of vulnerability-covering code, and multi-generation of functionally-equivalent code
US8918678B2 (en) Functional testing of a processor design
US10387655B2 (en) Method, system and product for using a predictive model to predict if inputs reach a vulnerability of a program
US20060129880A1 (en) Method and system for injecting faults into a software application
CN112541178A (zh) 控制流完整性实施的设备和方法
CN111859380A (zh) Android App漏洞的零误报检测方法
Wolf et al. Safe and secure cyber-physical systems and internet-of-things systems
JP2024507532A (ja) プログラムコード欠陥及び使用の許容可能性の判定のためのシステム及び方法
Cope Strong security starts with software development
CN107272441B (zh) 用于监控错误的方法和用于监控错误的数据处理装置
JP5975923B2 (ja) 車両用制御装置
EP3916598A1 (en) System and method for detecting exploitation of a vulnerability of software
Kästner et al. Detecting safety-and security-relevant programming defects by sound static analysis
US20160224456A1 (en) Method for verifying generated software, and verifying device for carrying out such a method
US20190205526A1 (en) Binary image stack cookie protection
CN115827291A (zh) 软件的持续监视和/或提供
EP3864547B1 (de) Verfahren zur detektion sicherheitsrelevanter datenflüsse
Moukahal et al. Towards a secure software lifecycle for autonomous vehicles
Ferry et al. Development and operation of trustworthy smart iot systems: The enact framework
CN113312626A (zh) 评估软件对工业自动化和控制系统的影响的系统和方法
Hong Performance, Security, and Safety Requirements Testing for Smart Systems Through Systematic Software Analysis
Fu Fault injection mechanisms for validating dependability of automotive systems
Lauber et al. Testing Security of Embedded Software Through Virtual Processor Instrumentation
Hossain et al. Integration testing based on indirect interaction for embedded system