KR20120012983A - 애플리케이션 보안을 제공하는 방법, 장치, 및 컴퓨터 프로그램 - Google Patents

애플리케이션 보안을 제공하는 방법, 장치, 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR20120012983A
KR20120012983A KR1020117029612A KR20117029612A KR20120012983A KR 20120012983 A KR20120012983 A KR 20120012983A KR 1020117029612 A KR1020117029612 A KR 1020117029612A KR 20117029612 A KR20117029612 A KR 20117029612A KR 20120012983 A KR20120012983 A KR 20120012983A
Authority
KR
South Korea
Prior art keywords
application
valid value
valid
value
values
Prior art date
Application number
KR1020117029612A
Other languages
English (en)
Other versions
KR101336378B1 (ko
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 KR20120012983A publication Critical patent/KR20120012983A/ko
Application granted granted Critical
Publication of KR101336378B1 publication Critical patent/KR101336378B1/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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

장치의 초기화에 응답하여 유효값(validation value)이 복수 개의 애플리케이션 실행가능 파일들 각각에 대해 계산되고 상기 유효값들이 랜덤 액세스 메모리의 보호 메모리 부분에 저장된다. 상기 장치상에 특정 애플리케이션을 론칭(launching)하려는 시도가 결정되며, 상기 애플리케이션과 관련이 있는 실행가능한 파일에 대한 현재의 유효값이 계산된다. 상기 현재의 유효값이 상기 저장된 유효값들 중 하나의 대응하는 유효값과 비교되며, 상기 애플리케이션의 론칭이 상기 비교의 결과들에 기반하여 규제된다.

Description

애플리케이션 보안을 제공하는 방법, 장치, 및 컴퓨터 프로그램{Method, apparatus, and computer program for providing application security}
본 명세서는 일반적으로 기술하면 컴퓨터 보안에 관한 것이며, 더 구체적으로 기술하면 모바일 소프트웨어 플랫폼들에서의 애플리케이션 보안을 위한 시스템들, 장치들, 컴퓨터 프로그램들, 및 방법들에 관한 것이다.
무선 전화의 초기에는, 셀룰러폰들과 같은 대부분의 이동 기기들이 내장 기기들, 예컨대 몇 가지 전용 기능들을 수행하기 위한 고정 프로그램 세트를 지니는 특수용 기기들이었다. 최근에는, 이동 기기들(예컨대, "스마트폰들")이 기존 기능의 변경 사항들을 허용하면서 새로운 기능들을 추가할 수 있는 범용 컴퓨팅 기기들로 진화하였다. 이는 기존 프로그램들을 업데이트하고 그리고/또는 상기 기기들에 새로운 프로그램들을 추가함으로써 달성될 수 있다.
이동 기기들에 대한 새롭거나 변경된 프로그램들의 합법적인 유일한 출처가 서비스들을 생성하여 서비스들을 상기 기기들에 제공하는 데 종사하는 기기 제조업체들 및/또는 서비스 사업자들인 경우가 종종 있었다. 이로 인해 제조업체들 및 서비스 제공자들이 상기 기기들을 사용하는 방법에 관한 세심한 관리를 유지할 수 있지만, 소비자들은 소비자들의 이동 기기들이 더 많고 다양한 기능들을 수행하기를 요구하여 왔다. 이러한 기능들 중 일부 기능들은 고도로 전문화된 것이거나 소규모 사용자 그룹들을 대상으로 한 것이다. 이 때문에, 비록 그러한 특징들이 기존 기기들 및 서비스 네트워크들과 호환가능하다 하더라도, 제조업체들 및 서비스 제공자들 자체로서는 그러한 특징들을 제공하는 소프트웨어를 제작하는 것이 그다지 유익하지 않을 수 있다.
최근에, 제3자들에 의해 개발된 애플리케이션 소프트웨어가 설치 및 실행될 수 있도록 이동 소프트웨어 플랫폼들이 많이 개방되어 왔다. 예를 들면, 심비안TM, 아이폰TM OS 및 안드로이드TM와 같은 이동 운영 시스템들을 위한 크고 활동적인 커뮤니티들이 존재한다. 이러한 제3자 개발자들의 커뮤니티들은 신뢰할 수 있고 신뢰할 수 없는 소프트웨어 공급업체들을 포함할 수 있다. 신뢰할 수 있는 개발자들은 기업들 및 인증 프로그램에 관련되어 있거나, 그렇지 않으면 자신들이 제공하는 소프트웨어가 안전하고 신뢰할 수 있게 하는데 강력한 동기들(예컨대, 법적 책임)을 가지는 다른 엔티티들을 포함할 수 있다.
비록 특정 개발자가 신뢰할 수 없는 개발자로서 분류될 수 있지만, 이는 반드시 상기 개발자의 소프트웨어가 안전하지 않거나 신뢰할 수 없다는 것, 즉 단지 그러한 소프트웨어의 안전성이 알려지지 않은 것만을 의미하지 않는다. 보안을 최우선적으로 우려하는 자들(예컨대, 정부, 비즈니스 기업들)에게는 신뢰할 수 없는 소프트웨어의 사용 및 이용가능성이 문제가 될 수 있지만, 일반적으로는 어느 누구든지 소프트웨어를 작성 및 게시할 수 있는 것이 순수한 혜택(net benefit)으로서 보인다. 때로는, 가장 새롭게 창작한 제품들이 개인들이나 소규모 개별 개발자 그룹들에서 제작되고 있다. 또한, 소프트웨어는 소규모 그룹들 또는 개인들이 마치 기업에서 제작된 소프트웨어처럼 신뢰가능하고 사용하기에 편리한(때로는 그보다는 더 신뢰가능하고 사용하기에 편리한) 제품들을 제작하는 것이 가능한 영역들 중 한 영역이다. 그러므로, 소규모 개발자들이 이동 컴퓨팅 플랫폼에 기여할 수 있게 하는 것은 상기 플랫폼이 이해관계자들에게 필수적이며 혜택을 받을 수 있게 하는데 도움을 줄 수 있다.
제조업체들 및 소프트웨어/서비스 제공자들의 경우에는, 신뢰할 없는 소프트웨어로 인한 보안 관련 위협들을 처리해야 한다. 비록 제조업체들 및 제공자들이 특정 위협을 제기할 수 있는 신뢰할 수 없는 소프트웨어의 출처가 아니더라도, 자신들의 플랫폼들이 말웨어(malware)에 의해 쉽게 공격당하는 것으로 보이는 경우에 자신들의 평판들이 실추될 수 있다. 비록 소프트웨어가 고의적인 악성 소프트웨어가 아니더라도, 자신들의 플랫폼들 상에서 실행하는 신뢰할 수 없거나 변조된 소프트웨어는 기기 및/또는 시스템 고장들을 일으키며, 이는 제공자들 및 제조업체들에 악영향을 줄 수 있다.
따라서, 본 발명의 목적은 애플리케이션 보안을 제공하는 기법들을 제공하는 것이다.
본 명세서에는 애플리케이션 보안을 제공하는 시스템들, 장치들, 컴퓨터 프로그램들, 데이터 구조들, 및 방법들이 개시되어 있다. 한 실시예에서는, 장치가 보호 메모리 부분을 갖는 랜덤 액세스 메모리를 포함한다. 상기 장치는 상기 랜덤 액세스 메모리에 연결된 프로세서를 포함한다. 상기 프로세서는 상기 장치로 하여금 상기 장치의 초기화에 응답하여 복수 개의 애플리케이션 실행가능 파일들 각각에 대해 유효값(validation value)을 계산하며 상기 보호 메모리 부분에 상기 유효값들을 저장하게 하는 실행가능한 명령어들로 구성된다. 상기 장치상에 특정 애플리케이션을 론칭(launching)하려는 시도는 상기 프로세서에 의해 결정되며, 그리고 상기 애플리케이션과 관련이 있는 실행가능한 파일에 대한 현재의 유효값이 계산된다. 상기 프로세서는 상기 현재의 유효값을 상기 저장된 유효값들 중 하나의 대응하는 유효값과 비교하며, 그리고 상기 비교의 결과들에 기반하여 상기 애플리케이션의 론칭을 규제한다.
더 구체적인 실시예들에서는, 상기 실행가능한 명령어들이 상기 장치로 하여금 상기 애플리케이션의 론칭과는 무관한 런-타임 이벤트(run-time event)에 응답하여 상기 애플리케이션과 관련이 있는 실행가능한 파일에 대한 유효값을 다시 계산하며 그리고 계산된 유효값을 상기 저장된 유효값과 비교하여 상기 애플리케이션이 조작되지 않게 한다. 상기 값들이 일치(match)하지 않을 경우에, 상기 애플리케이션은 신뢰할 수 없는 애플리케이션으로서 취급되며 그에 대한 더 이상의 액세스가 허용되지 않고 그에 관한 계속중인 어떠한 액세스 동작들(예컨대, 판독 및 실행)이라도 종료될 수 있다. 상기 런-타임 이벤트는 상기 대응하는 저장된 유효값의 이전의 계산 다음의 시간 경과 및 상기 실행가능한 파일의 페이징의 임의 조합을 포함할 수 있다.
새로운 애플리케이션의 설치의 경우에, 상기 애플리케이션에 대해 새로운 유효값이 계산되며 이는 상기 보호 메모리 부분에 저장된다. 임의의 기존 애플레이션의 재설치의 경우에, 상기 애플리케이션에 대한 상기 보호 메모리 부분 내의 상기 대응하는 저장된 유효값은 상기 재계산된 값으로 대체된다. 상기 설치된 애플리케이션에 대한 저장된 유효값은 사용된 유효화 알고리즘에 의해 계산될 수도 있고 단지 성공적인 애플리케이션 유효화 직후에만 개별적으로 생성될 수도 있다.
다른 더 구체적인 실시예들에서는, 상기 실행가능한 명령어들은 추가로 상기 장치로 하여금 예상되는 사용에 기반하여 상기 복수 개의 애플리케이션 파일들 각각에 대한 우선순위를 설정하게 할 수 있으며, 상기 유효값들을 계산하고 이들을 상기 보호 메모리 부분에 저장하는 것은 개별 우선순위들에 의해 좌우된다.
다른 더 구체적인 실시예들에서는, 상기 유효값들을 계산하고 이들을 상기 보호 메모리 부분에 저장하는 것은 애플리케이션 프로그램을 론칭하려는 시도를 결정하는 것과 동시에 이루어질 수 있다. 그러한 경우에, 상기 실행가능한 명령어들은 부가적으로 상기 장치로 하여금 a) 상기 현재의 유효값을 상기 대응하는 유효값과 비교할 경우에 상기 대응하는 저장된 유효값이 이용가능하지 않음을 결정하게 하고; 그리고 b) 상기 현재의 유효값을 상기 저장된 유효값들 중 하나의 대응하는 유효값과 비교하는 것을 용이하게 하기 위해 상기 대응하는 유효값의 계산 및 저장이 상위 우선순위에서 이루어지게 할 수 있다.
본 발명의 다른 한 실시예에서는, 방법이 장치의 초기화에 응답하여 복수 개의 애플리케이션 실행가능 파일들 각각에 대해 유효값을 계산하고 상기 장치의 랜덤 액세스 메모리의 보호 메모리 부분에 상기 유효값들을 저장하는 것을 포함한다. 상기 장치상에 특정 애플리케이션을 론칭하려는 시도가 결정되며 상기 애플리케이션과 관련이 있는 실행가능한 파일에 대한 현재의 유효값이 계산된다. 상기 현재의 유효값은 상기 저장된 유효값들 중 하나의 대응하는 유효값과 비교되고, 상기 애플리케이션의 론칭은 상기 비교의 결과들에 기반하여 규제된다.
더 구체적인 실시예에서는, 상기 방법이 부가적으로 상기 애플리케이션의 소프트웨어 초기화 이벤트에 응답하여 상기 애플리케이션과 관련이 있는 실행가능한 파일에 대해 업데이트된 유효값을 계산하는 것을 포함할 수 있다. 그러한 경우에, 상기 대응하는 저장된 유효값은 상기 보호 메모리 부분에서 상기 업데이트된 유효값으로 대체된다. 그러한 경우에 상기 소프트웨어 초기화 이벤트는 상기 장치의 사후-초기화 런-타임 동안 상기 애플리케이션의 유효화 및 상기 애플리케이션의 재설치의 임의 조합을 포함할 수 있다.
본 발명의 다른 실시예에서는, 컴퓨터-판독가능 저장 매체가 장치에 의해 실행될 경우에, a) 상기 장치의 초기화에 응답하여 복수 개의 애플리케이션 실행가능한 파일들 각각에 대해 유효값을 계산하고 상기 유효값들을 랜덤 액세스 메모리의 보호 메모리 부분에 저장하는 동작; b) 상기 장치상에 특정 애플리케이션을 론칭하려는 시도를 결정하는 동작; c) 상기 애플리케이션과 관련이 있는 실행가능한 파일에 대해 현재의 유효값을 계산하는 동작; d) 상기 현재의 유효값을 상기 저장된 유효값들 중 하나의 대응하는 유효값과 비교하는 동작; 및 d) 상기 비교의 결과들에 기반하여 상기 애플리케이션의 론칭을 규제하는 동작;을 수행하는 명령어들로 부호화되어 있다.
본 발명의 다른 한 실시예에서는, 방법이 장치상의 특정 애플리케이션의 변경 이벤트에 응답하여 상기 애플리케이션과 관련이 있는 하나 이상의 실행가능한 파일들에 대해 유효값을 계산하는 것을 포함한다. 상기 유효값들은 상기 장치의 랜덤 액세스 메모리의 보호 메모리 부분에 저장된다. 상기 장치상의 특정 애플리케이션을 론칭하려는 시도가 결정되며, 현재의 유효값이 상기 애플리케이션과 관련이 있는 실행가능한 파일에 대해 결정된다. 상기 현재의 유효값은 상기 저장된 유효값들 중 하나의 대응하는 유효값과 비교되며, 상기 애플리케이션의 론칭은 상기 비교의 결과들에 기반하여 규제된다. 상기 변경 이벤트는 상기 애플리케이션의 초기 설치, 상기 애플리케이션의 재설치, 및 상기 장치의 런-타임 동안 상기 애플리케이션의 유효화의 임의 조합을 포함할 수 있다.
이들 및 다른 여러 이점 및 특징은 본 명세서에 첨부되어 본 명세서의 일부를 형성하는 특허청구범위에 구체적으로 기재되어 있다. 그러나, 변형물들 이점들을 좀더 잘 이해하기 위해서는, 본 발명의 전형적인 실시예들에 따른 시스템들, 장치들, 컴퓨터 프로그램 제품들, 및 방법들의 대표적인 예들이 예시 및 기재되어 있는, 본 명세서의 추가 부분을 이루는 도면들, 및 그에 따른 설명 내용을 참조하여야 한다.
본 발명의 애플리케이션 보안 기법은 제조업체들 및 소프트웨어/서비스 제공자들의 경우에 신뢰할 수 없는 소프트웨어의 사용 및 이용가능성이 문제가 될 수 있는, 신뢰할 없는 소프트웨어로 인한 보안 관련 위협들을 처리할 수 있다.
첨부도면들에 예시되어 있는 전형적인 실시예들과 연관지어 본 발명을 설명하면 다음과 같다.
도 1은 본 발명의 전형적인 실시예에 따른 이동 보안 프레임워크를 블록 다이어그램으로 보여주는 도면이다.
도 2는 본 발명의 전형적인 실시예에 따른 이동 보안 프레임워크의 세부를 블록 다이어그램으로 보여주는 도면이다.
도 3은 본 발명의 전형적인 실시예에 따른 이동 장치를 블록 다이어그램으로 보여주는 도면이다.
도 4a, 도 4b 및 도 5는 본 발명의 전형적인 실시예들에 따른 절차들을 예시하는 흐름도들이다.
이하 여러 전형적인 실시예의 설명에서는, 예를 들어 여러 전형적인 실시예들이 도시되어 있는, 본 명세서의 일부를 이루는 첨부도면들을 참조한다. 당업자라면 구조 측면 및 동작 측면에서의 변경들이 본 발명의 범위로부터 벗어나지 않고 이루어질 수 있기 때문에 다른 실시예들이 활용될 수 있음을 이해할 것이다.
일반적으로, 본 명세서는 애플리케이션 소프트웨어가 최초의 설치 유효화 절차 이후에 상기 애플리케이션 소프트웨어가 조작되지 않게 하는 개선된 이동 컴퓨팅 프레임워크들에 관한 것이다. 그러한 유효화는 애플리케이션 소프트웨어가 변경 또는 변조되지 않음으로써 안전하게 실행될 수 있게 해 준다. 소프트웨어 변조는, 사용자 및/또는 시스템 상호작용들에 의해 초래되는 데이터 변조에 기인하는 것과 같이 우연히 발생할 수 있다. 그러한 변조는 또한 기기상에서 실행하는 악성 소프트웨어로부터나 (예컨대, 사용자의 작업 기기에 관한 회사 보안의 예방조치들을 무효로 하는) 사용자의 액션들에 의한 것과 같이 고의로 발생할 수 있다.
이하의 설명에서는, "유효 데이터(validation data)"라는 용어가 데이터 블록(예컨대, 파일)의 상태를 식별하는데 사용되는 임의의 단일 값(예컨대, 고정 비트 크기의 워드)을 나타내는데 사용될 수 있다. 검사합(checksum) 또는 암호화 해시(cryptographic hash)는 유효 데이터로서 사용될 수 있다. 일반적으로, 상기 유효 데이터를 생성하기 위한 알고리즘은, 상기 데이터 블록에 대한 임의의 변경으로 변경되지 않은 데이터 블록에 대한 값과 동일한 유효값이 생성될 기회가 통계학적인 의미를 지니지 않도록 선택되어야 한다. 그러한 변경들은 상기 데이터 블록에 추가되거나 상기 데이터 블록으로부터 제거되는 데이터를 지니는 것을 포함할 수도 있고 상기 데이터 블록의 크기 면에서의 순수한 변경 없이 변경되는 임의의 데이터 부분을 지니는 것을 포함할 수도 있다.
소프트웨어 플랫폼은 검사합 및/또는 암호화 해시들과 같은 유효 데이터를 사용하여 론칭될 소프트웨어를 유효화함으로써 실행가능한 것들 및 다른 데이터를 조작으로부터 보호할 수 있다. 예를 들면, 상기 소프트웨어가 시스템에 성공적으로 설치된 다음에, 실행가능한 것들 및 구성 데이터와 같은 중요한 모든 파일에 대해 해시(hash)가 계산될 수 있다. 이러한 해시는 검사합 또는 당업계에 알려져 있는 임의의 해시 타입 함수를 사용하여 획득되는 유사한 변수를 포함할 수 있다. 이러한 변수는 영속 저장 장치(예컨대, 하드 드라이브, 플래시 메모리)의 특정 파일 시스템 위치에 저장된다. 상기 소프트웨어가 론칭된 후에, 시스템은 상기 해시를 재계산하고 이를 사전에 저장된 값과 비교한다. 상기 비교가 성공적인 경우에, 상기 애플리케이션에 대한 중요한 데이터가 조작되지 않았기 때문에 상기 론칭이 속행될 수 있다.
위에 기재된 플랫폼은 상기 플랫폼의 영속 파일 시스템이 영속적으로 저장된 검사합 데이터의 악성 중복기록을 방지하는데 충분한 보호기능을 제공할 수 없는 지를 타협하는데 취약할 수 있다. 예를 들면, 악의가 있는 사용자/악성 소프트웨어는, 키 파일들을 변경하고, 변경된 파일들 상의 해시 값들을 재계산하며, 그리고 상기 저장된 값들을 상기 재계산된 값들로 대체하도록 디스크 드라이브 또는 플래시 메모리 상에 저장된 이러한 데이터의 지식으로부터 혜택을 받을 수 있다. 이는 상기 시스템이 이동 기기에서 실행하도록 조작되거나 비-유효화된 소프트웨어를 론칭하는 것을 허용할 수 있다.
도 1에는 위에서 지적된 결함들을 극복하는 한가지 방법이 나타나 있는데, 도 1에는 본 발명의 한 실시예에 따른 보안 플랫폼(100)의 여러 실시태양들이 예시되어 있다. 상기 보안 플랫폼(100)은 애플리케이션 파일들이 론칭되기 전에 애플리케이션 파일들의 무결성(integrity)을 검증할 수 있다. 상기 보안 플랫폼(100)은 애플리케이션들과 관련이 있는 검사합 데이터를 저장하기 위한 랜덤 액세스 메모리(random access memory; RAM)를 사용한다. 상기 플랫폼(100)은 블록(104)으로 나타낸 바와 같이 메모리 액세스 보호부를 사용한다. 상기 메모리 액세스 보호부(104)는 하드웨어 및 소프트웨어 특징들의 임의 조합에 의해 제공될 수 있다.
메모리 액세스 보호부(104)의 일례에서는, 소정의 하드웨어 및 메모리 액세스가 중앙 처리 유닛(central processing unit; CPU) 아키텍처에서 정의된 계층 보호 영역들을 통해 제한될 수 있다. 그러한 경우에, 프로세서는 특권부여 명령어들을 포함하여, 모든 명령어들의 실행을 가능하게 하는 "시스템" 실행 모드를 포함할 수 있다. 시스템 모드에서는, 프로세스들을 통해, 메모리 관리 하드웨어 및 다른 주변기기들에 대한 액세스뿐 아니라 보다 적은 보호 모드들(예컨대, "사용자" 모드) 상에서 제공되는 것과는 다른 어드레스 공간(address space)에 대한 액세스가 제공될 수 있다. 예를 들면, 운영 시스템 커널은 대개 시스템 모드에서 메모리에 액세스할 수 있지만, 사용자 프로그램들(예컨대, 워드 프로세서)은 이러한 메모리에 직접 액세스할 수 없다. 사용자 모드는 정규 사용시 오기능(malfunctioning)의 잠재성이 높은 모든 소프트웨어를 "샌드박스(sandbox)"하는데 사용될 수 있다. 시스템 모드 자원들에 대한 모든 사용자 모드 액세스 시도들은 안전하게 관리되는 시스템 호출(system call)들을 통해 수행된다. 사용자 모드 프로세스가 유효하지 않거나 액세스가능하지 않은 시스템 호출을 시도하는 경우에, 사용자 모드 프로세스는 나머지 시스템에 영향을 주지 않고 점진적으로 종료될 수 있다.
그러한 아키텍처(100)는 파워온, 리셋, 또는 상기 아키텍처(100)의 하드웨어와 관련이 있는 다른 초기화 조건시 유효 데이터를 준비하는 부트-타임(boot-time) 모듈(106)을 포함한다. 일반적으로, 상기 부트-타임 모듈(106)은 영속 저장 장치(108)를 통해 판독하고 다수의 애플리케이션들(110)과 관련이 있는 중요한 파일들의 유효값들(예컨대, 검사합, 해시)을 계산할 수 있다. 이러한 유효값들은 상기 부트-타임 모듈(106)에 의해 보호 RAM(102)에 저장되는 값들(112; H1-HN)로서 도시되어 있다. 상기 값들(112)의 위치는, 시스템이 계속 실행되는 동안 상기 부트-타임 모듈(106)에 의해 지속적으로 유지될 수도 있고 런-타임 모듈(114)과 같은 다른 용도의 모듈들로 전달될 수도 있다.
상기 부트-타임 모듈(106)이 상기 애플리케이션들(110)을 유효화하고 상기 값들(112)을 저장한 후에, 상기 런-타임 모듈(114)은, 상기 애플리케이션들(110)을 실행하도록 하는 요구가 수신될 경우에 상기 애플리케이션들(110) 중의 어느 한 애플리케이션의 중요한 파일들에 관한 동일한 값들을 재계산할 수 있다. 상기 런-타임 모듈(114)이 또한 예컨대 상기 부트-타임 모듈(106)과의 통신 및/또는 통합에 의해 RAM(112)에서 상기 대응하는 값들(112)에 액세스할 수 있다. 상기 재계산된 값이 RAM(102)에서 상기 대응하는 값(112)과 일치하는 경우에, 상기 애플리케이션(110)의 실행은 상기 런-타임 모듈(114)에 의해 허용된다. 이와는 달리, 상기 재계산된 값이 RAM(102)에서 상기 대응하는 값(112)과 일치하지 않는 경우에, 상기 런-타임 모듈(114)은 상기 애플리케이션(110)을 실행시키지 않고, 다른 적절한 액션들(예컨대, 시스템 오류의 기록, 사용자에게의 경고)을 취할 수 있다. 상기 런-타임 모듈(114)은 현재 재계산된 값이 상기 저장된 값에 대응하지 않는 경우에 가상 "샌드박스(sandbox)" 등에서 실행하는 프로세스에 대한 액세스 특권들을 낮추는 것과 같은 다른 방식으로 상기 애플리케이션(110)의 실행을 규제할 수 있다.
당업자라면 이해하겠지만, 상기 부트-타임 및 런-타임 모듈들(106,114) 중 어느 하나가 런-타임시 새롭게 설치된 애플리케이션들(110)에 대해 유사한 유효화 절차들을 수행할 수 있다. 예를 들면, 특정 애플리케이션이 다운로드되어 설치될 경우에, 상기 모듈들(106,114) 중 하나 또는 양자 모두가 상기 새롭게 설치된 애플리케이션에 대해 유효 데이터(112)를 계산하여 이를 보호 RAM(102)에 추가하도록 조정할 수 있다. 그런 다음에, 상기 새롭게 추가된 애플리케이션이 시스템의 재부팅 또는 리셋 없이 실행되는 경우에, 상기 런-타임 모듈(114)이 일반적인 방식으로 상기 새로운 애플리케이션을 유효화할 수 있다.
예시된 소프트웨어 플랫폼(100)은 영속 파일 시스템(예컨대, 저장 장치(108)) 상에 해시/검사합 데이터를 저장하는 것에 의존하지 않는다. 그 대신에, 상기 데이터는 런-타임 모듈(106)에 의한 성공적인 설치/유효화 절차 다음에 RAM(102)에만 저장된다. 상기 플랫폼(100)이 메모리 액세스 보호부(104)를 제공하기 때문에, 악성 또는 오기능 소프트웨어가 상기 RAM(102)에 액세스하여 상기 저장된 값들(102)을 변경할 수 없다. 상기 애플리케이션 소프트웨어가 론칭되기 전에 상기 런-타임 모듈(114)에 의해 수행된 해시/검사합은 소프트웨어가 유효하고 실행 이전에 변조 또는 조작되지 않았음을 보장한다.
상기 유효 데이터(112)가 영구 및/또는 영속 메모리에 저장되지 않기 때문에, 상기 유효 데이터(112)는 예컨대, 상기 소프트웨어 애플리케이션들(110)을 설치하는데 최초로 사용된 유효화와 동일하거나 유사한 유효화 절차를 실행함으로써 장치 부팅 다음에 다시 계산될 필요가 있을 수 있다. 프로세서 속도, 애플리케이션들의 수 등등에 의존하여, 부트-타임 유효화는 상당량의 시간이 소요될 수 있다. 이는 이동 기기들에서 다소 완화되는데, 그 이유는 상기 이동 기기들이 (전력 공급 모드 및 대기 모드 중 어느 한 모드로) 종종 항상 온 상태에 있고 몇 주 또는 몇 달에 한번 재부팅되지 않아도 되기 때문이다. 더욱이, 부팅 시간들에 관한 애플리케이션 유효화의 영향을 줄이기 위한 방식(scheme)이 여러 가지 채용될 수 있다.
몇몇 실시예들에서는, 상기 부트-타임 유효화가 중요한 시스템 파일들이 검증된 이후의 백그라운드에서 처리될 수 있다. 일반적으로는, 상기 기기상에서 가장 많이 사용되는 소프트웨어를 추적하고, 이러한 소프트웨어에 상위 우선순위가 제공되게 하는 것이 가능하다. 이로 인해 사용자는 유효화가 덜 사용되는 애플리케이션들 상에서 수행됨과 동시에 상기 이동 기기의 일부 특징들을 사용할 수 있다. 또한, 네트워크 이벤트들을 리스닝하는 소프트웨어와 같은 "항상-온(always-on)" 상태에 있는 소프트웨어에 상위 우선순위가 제공되어 새로운 이벤트가 수신될 경우에 사용자에게 데이터가 프롬프트/디스플레이되게 할 수 있다. 애플리케이션 소프트웨어에 대한 유효화가 개시되기 전에 사용자(또는 시스템)이 상기 애플리케이션 소프트웨어의 사용을 요구하는 경우에, 상기 시스템은 요구된 애플리케이션의 론치 타임을 최소화하도록 유효화 절차를 우선순위화하는 준비(provisions)를 포함할 수 있다. 이는 임의의 현재 유효화 액션들을 정지시키고 상기 부트-타임 모듈(106)에 의한 즉각적인 유효화를 위한 대기열(queue)의 최상위로 상기 요구된 애플리케이션을 이동시키는 것을 포함한다. 이는 또한, (예컨대, 선점형 멀티태스킹 운영 시스템(pre-emptive multitasking operating system)에서 가능한 것처럼) 더 높은 CPU 우선순위로 상기 유효화를 처리하고 있는 어떤 소정의 스레드(thread)들 또는 프로세스들을 포함할 수 있다.
도 2를 지금부터 참조하면, 본 발명의 전형적인 실시예에 따른 보안 아키텍처 구성요소들이 블록 다이어그램으로 좀더 상세하게 도시되어 있다. 도 2의 구성요소들은 도 1의 유사하거나 비슷한 구성요소들과 동일한 참조번호들을 지닐 수 있다. 예를 들면, 부트-타임 모듈(106)은 보호 메모리 공간(104) 내의 RAM(102)에 액세스하도록 구성되고, 영속 데이터 저장소(108) 내의 애플리케이션 데이터(예컨대, 파일들)에 액세스할 수 있다.
상기 부트-타임 모듈(106)은 입력으로서 부트 및/또는 리셋 신호(204)를 수신하는 초기화기(initializer; 202)를 포함할 수 있다. 상기 부트/리셋 신호(204)는 하드웨어 및/또는 소프트웨어에 의해 제공될 수 있다. 후자는 부트로더들, 부트 스크립트들, 또는 소정 레벨의 시스템 초기화를 실행하는 다른 어떤 소프트웨어를 포함할 수 있다. 상기 신호(204)에 응답하여, 상기 초기화기(202)는 우선순위화기(prioritizer; 202)로 시그널링(208)하여 유효화를 위해 파일들 및/또는 다른 시스템 데이터를 선택하기 시작한다. 상기 우선순위화기(206)는 데이터베이스(212)에 액세스(210)할 수 있는데, 상기 데이터베이스(212)는 현재의 애플리케이션 우선순위를 포함하고 애플리케이션들을 특정 파일들에 매핑하는 것을 가능하게 한다. 예를 들면, 한 애플리케이션은 실행하는데 필요한, 실행가능한 것들, 구성 파일들, 객체 파일들, 라이브러리들 등등의 임의 조합을 포함할 수 있다. 단지 이러한 파일들의 부분집합만이 유효화하는데 필요할 수 있다. 예를 들면, 중요한 애플리케이션 파일들은 단일 패키지(예컨대, zip 아카이브)로 캡슐화될 수 있으며 파일들은 단지 그러한 패키지로부터 액세스가능할 수 있다. 그러한 경우에, 유효화는 상기 패키지 내의 단일 파일들 대신에 전체 패키지에 대해 한번 수행될 수 있다.
상기 데이터베이스(212)는 임시 또는 영속 저장 장치를 포함할 수 있으며, 상기 부트-타임 모듈(106)에 의해 변경 및/또는 업데이트될 수 있다. 예를 들면, 사용 패턴들이 변경됨에 따라, 애플리케이션 및 파일 유효화의 우선순위들이 변경될 수 있다. 상기 데이터베이스(212)는 처음부터 끝까지 통과하게 되는 링크 리스트(linked list)와 같은 임의의 데이터 구조를 포함할 수 있다. 상기 데이터베이스(212)는 고속 조회(fast lookup)들(예컨대, 이진 트리들, 해시 세트들)을 가능하게 하는 더 복잡한 구조들을 포함할 수 있으며 데이터를 찾기 위한 탐색들 및 질의(query)들을 활용하는 것과 같은, 모든 기능을 갖춘 관계형 데이터베이스와 관련이 있는 고수준의 기능들을 제공할 수 있다.
상기 데이터베이스(212)에서 찾은 각각의 파일에 대해, 상기 우선순위화기(206)는 해시 생성기(218)에 (예컨대 신호(216)를 통해) 파일 참조를 전송할 수 있다. 상기 전송된 파일 참조는 파일이름 또는 파일 시스템(108)에 적합한 다른 데이터(예컨대, 핸들들, 포인터들, 아이노드들 등등)를 포함할 수 있다. 상기 해시 생성기(218)는 파일 데이터(220)를 회수하고 해시(222)(또는 유사한 값)를 생성한다. 해시 값(222)은 보호 저장 구성요소(224)에 전송되는데, 상기 보호 저장 구성요소(224)는 해시/유효값 세트(112)를 갖는 RAM(102)의 적합한 위치에 상기 값(222)을 저장(226)한다.
상기 유효값들(112)은 인접 메모리 블록에 리스트로서 저장될 수 있으며, 그러한 경우에 단일 값, 예컨대 상기 리스트의 상단부에 대한 포인터(228)로 참조될 수 있다. 상기 값들(112)은 당업계에 공지되어 있는 다른 어떤 데이터 구조에 저장될 수 있다. 조회들의 빈도 및 보호 RAM(102) 내에서의 공간의 이용가능성에 의존하여, 상기 값들은 리스트보다 신속한 조회들을 허용하는 데이터 구조들, 예컨대 이진 트리들, 해시 세트들 등등으로서 저장될 수 있다.
상기 런-타임 모듈(114)은 또한 영속 데이터 저장소(108) 및 보호 메모리 공간(104) 내의 RAM(102)에 연결되어 있는 것으로 도시되어 있다. 상기 런-타임 모듈(114)의 론처(launcher) 구성요소(232)는 특정 애플리케이션의 론칭과 관련이 있는 요구(230)를 수신할 수 있다. 상기 요구(230)는 론처(232)가 실제로 상기 프로그램을 론칭하는(예컨대, 상기 애플리케이션과 관련이 있는 새로운 시스템 프로세스를 인스턴스화(instantiating)하는) 결과를 초래할 수도 있고 단지 상기 론처 구성요소(232)로 하여금 상기 애플리케이션이 검증된 경우에 상기 요구를 포워드하게만 할 수도 있다.
론처가 조회 구성요소(236)에 요구(234)를 전송하여 요구된 애플리케이션과 관련이 있는 중요한 파일들 모두를 결정한다. 상기 조회 구성요소(236)는 상기 데이터베이스(212)에 액세스하여 경로(238)로 나타낸 바와 같이, 이러한 데이터를 결정할 수 있다. 이러한 파일들의 리스트를 획득함에 따라, 상기 조회 모듈은 상기 리스트를 해시 생성기 구성요소(240) 및 보호 액세스 모듈(242)에 전송한다. 상기 해시 생성기(240)는 현재 메모리(102)에 있는 유효값들(112)을 초기에 생성했던 해시 생성기(218)와 동일한 알고리즘들 및/또는 코드를 사용할 수 있다. 상기 해시 생성기(240)는 경로(243)로 나타낸 바와 같이 파일 데이터를 회수하고 경로(244)를 통해 해시 값들을 비교기(248)에 출력한다.
상기 구성요소(240)에 의한 해시들의 생성과 동시에, 상기 보호 액세스 모듈(242)은 RAM(102)에 저장된 값들을 회수(246)하는데, 이러한 값들은 또한 경로(250)를 통해 상기 비교기(248)에 전달된다. 상기 비교기(242)는 상기 생성된 값들(244)과 상기 저장된 유효값들(250)을 비교하고 론처(232)에 전송되는 신호(252)로서 일치가 존재하는 지를 나타내는 신호(252)를 출력한다. 상기 신호(252)가 일치를 나타내는 경우에, 상기 애플리케이션이 실행을 위해 허용가능한 것으로 가정될 수 있으며, 론처(232)는 성공을 나타내고 그리고/또는 상기 애플리케이션이 론칭되게 하는 신호(254)를 출력할 수 있다.
앞서 언급한 바와 같이, 상기 부트-타임 구성요소(106)에 의한 RAM(102) 내의 값들(112)의 삽입은 부트 동안과 부트 후 모두에서 이루어질 수 있다. 후자의 경우에는, 보호 RAM(102)에 저장된 유효값이 계산되기 전에 상기 런-타임 모듈(114)이 보호 RAM(102)에 저장된 유효값에 액세스할 필요가 있는 상황이 존재할 수 있다. 도 2에 도시된 바와 같이, 상기 조회 모듈(236)은 필요한 값들이 아직 계산되지 않았음을 (직접적으로나 또는 간접적으로) 결정할 수 있으며, 재우선순위화 신호(254)를 상기 우선순위화기(206)에 전송하여 그러한 계산들에 높거나 즉각적인 우선순위가 제공되게 할 수 있다. 이러한 신호(254)로 인해 상기 런-타임 모듈(114)은 상기 유효값들이 RAM(102)에 부여될 때까지 유효화를 중단할 수 있다.
도 2에 도시된 기능 구성요소들은 단지 본 발명의 여러 실시태양을 예시하려고 의도된 전형적인 구조일 뿐이다. 당업자라면 이러한 교시들에 비추어 볼 때 여러 변형이 이루어질 수 있음을 알 수 있을 것이다. 예를 들면, 상기 부트-타임 및 런-타임 모듈들(106,114)은 단일 기능 유닛/프로세스로 결합가능할 수도 있고 더 소규모의 개별 기능 유닛들/프로세스들로 분리가능할 수도 있다. 여러 인터페이스는, 상기 모듈들(106,114) 및 RAM(102), 파일 시스템(108) 및/또는 데이터베이스(212) 간의 암호 통신을 사용하는 것과 같은, 외부 분석에 대한 유효 데이터의 노출을 방지하는 추가적인 조치들을 사용할 수 있다.
당업자라면 알 수 있겠지만, 예시된 실시예들은 중요한 파일들이 애플리케이션 소프트웨어의 론칭 동안 손상되지 않게 하는데 도움을 줄 수 있다. 여기서 생길 수 있는 한가지 문제는 런-타임시 코드가 동적으로 로드되는 경우들을 포함한다. 예를 들면, 시스템이 온-디맨드 페이징(on-demand paging)을 사용할 수 있는데, 이로 인해 코드가 실행에 필요할 경우에 하드 디스크로부터 RAM으로 로드되게 한다. 그러한 경우에, 몇몇 코드 부분들은 상기 애플리케이션이 먼저 론칭될 경우에 RAM 내에 로드되지 않고, 특정 기능이 액세스된 후에 메모리 내에 부여될 수 있다. 그러한 경우에, 악의가 있는 사용자들 또는 악성 소프트웨어는 유효화 검사 이후이지만, 실제 코드가 RAM 내로의 실행을 위해 로드되기 전에 애플리케이션을 중복기록하는 것을 허용할 수 있다.
온-디맨드 페이징을 처리하는 한가지 방법은 적어도 일부 소프트웨어가 실행하고 있는 동안 애플리케이션 소프트웨어의 무결성(integrity)을 보장하는 주기적인 검사합 검사를 구현하는 것이다. 예를 들면, 온-디맨드 페이지에 대한 액세스가 특정 애플리케이션용으로 검출되는 경우에, 페이징된 부분(또는 전체 애플리케이션)은 재유효화될 수 있다. 다른 경우에, 만약 겉보기 성능(apparent performance)이 영향을 받지 않는다면(예컨대, 기기가 유휴 상태에 있는 경우에), 주기적인 재유효화가 예컨대 임의의 간격으로 이루어질 수 있다.
여러 타입의 장치들이 본 명세서에서 설명한 바와 같이 애플리케이션들을 유효화하기 위해 사용될 수 있다. 예를 들면, 사용자들은 점차로 이동 통신 기기들(예컨대, 셀룰러폰들)을 주 컴퓨팅 기기들로서 사용하고 있다. 도 3을 지금부터 참조하면, 본 발명의 전형적인 실시예들에 따른 동작들을 수행할 수 있는 대표적인 이동 장치(300)의 전형적인 실시예가 예시되어 있다. 당업자라면 상기 전형적인 장치(300)가 단지 그러한 기기들과 관련이 있을 수 있는 일반 기능들만을 나타내는 것임과 또한 고정 컴퓨팅 시스템들이 마찬가지로 그러한 동작들을 수행하도록 하는 컴퓨팅 회로를 포함하는 것임을 알 수 있을 것이다.
사용자 장치(300)는 예를 들면 이동 장치, 이동 전화, 이동 통신 기기, 이동 컴퓨터, 랩톱 컴퓨터, 데스크톱 컴퓨터, 전화 기기, 비디오(영상) 전화, 회의용 전화, 텔레비전 장치, 디지털 비디오 레코드(digital video recorder; DVR), 셋톱 박스(set-top box; STB), 라디오 장치, 오디오/비디오 플레이어, 게임 기기, 위치결정 기기, 디지털 카메라/캠코더, 및/또는 이와 유사한 것들, 또는 이들의 임의 조합을 포함할 수 있다. 더욱이, 상기 사용자 장치(300)는 도 1 및 도 2와 관련지어 도시 및 설명된 애플리케이션 보안 프레임워크의 기능들의 임의 조합을 포함할 수 있다. 상기 장치들은 또한 도 4a 및 4b, 및 도 5와 관련지어 이하에 설명되는 처리 기능들 중 어느 하나의 기능을 수행할 수 있다.
상기 처리 유닛(302)은 상기 장치(300)의 기본 기능들을 제어한다. 그러한 관련 기능들은 프로그램 저장 장치/메모리(304)에 저장된 명령어들로서 포함될 수 있다. 본 발명의 전형적인 실시예에서는, 상기 저장 장치/메모리(304)와 관련이 있는 프로그램 모듈들은, 정보가 이동 단말기의 전력다운시 소실되지 않도록 비-휘발성의 '전기적으로 소거가능하고 프로그램가능한 판독-전용 메모리(electrically erasable programmable read-only memory; EEPROM)', 플래시 '판독 전용 메모리(read-only memory; ROM)', 하드-드라이브 등등에 저장된다. 본 발명에 따른 동작들을 수행하기 위한 관계형 소프트웨어는 또한 컴퓨터 프로그램 제품 및 컴퓨터 판독가능 매체를 통해 제공될 수 있으며, 그리고/또는 (예컨대, 인터넷 및 중개용 무선 네트워크들과 같은 하나 이상의 네트워크들을 통해 전자 방식으로 다운로드되는) 데이터 신호들을 통해 상기 이동 장치(300)에 전송될 수 있다.
상기 이동 장치(300)는 처리/제어 유닛(302)에 연결된 하드웨어 및 소프트웨어 구성요소들을 포함할 수 있다. 상기 이동 장치(300)는 유선 또는 무선 데이터 접속들의 임의 조합을 유지하기 위한 다중 네트워크 인터페이스들을 포함할 수 있다. 예시된 이동 장치(300)는 네트워크 데이터 변경들을 수행하기 위한 무선 데이터 전송 회로를 포함한다. 이러한 무선 회로는 아날로그-디지털(analog-to-digital; A/D) 변환, 디지털-아날로그(digital-to-analog; D/A) 변환, 음성 부호화/복호화, 암호화/해독화, 오류 검출 및 정정, 비트 스트림 변환, 필터링 등등을 포함하는 여러 기능을 수행하도록 채용되는 디지털 신호 프로세서(digital signal processor; DSP)(306)를 포함한다. 일반적으로 안테나(310)에 연결된 송수신기(308)는 송출 라디오 신호들(312)을 전송하며 무선 기기와 관련이 있는 착신 라디오 신호들(314)을 수신한다. 이러한 구성요소들은 상기 장치(300)가 이동 전화 서비스 제공자 네트워크들, 근거리 통신 네트워크들, 및 인터넷 및 공중 교환 전화 네트워크(Public Switched Telephone Network; PSTN)와 같은 공중 네트워크들을 포함하는 하나 이상의 통신 네트워크들(315)에 연결될 수 있게 해준다.
상기 이동 장치(300)는 또한 상기 처리/제어 유닛(302)에 연결된 대체 네트워크/데이터 인터페이스(316)를 포함할 수 있다. 상기 대체 데이터 인터페이스(316)는 유선 및 무선 매체들을 포함하는 데이터 전송 매체 중 어느 한 방식을 사용하는 보조 데이터 경로들을 통해 통신할 수 있는 능력을 포함할 수 있다. 대체 데이터 인터페이스들(316)의 예들에는 USB, 블루투스, RFID, 이더넷, 302.11 Wi-Fi, IRDA, 초광대역 무선, WiBree, GPS 등등이 있다. 이러한 대체 인터페이스들(316)은 또한 상기 네트워크들(315)을 통해서나 또는 직접 및/또는 피어-투-피어(peer-to-peer) 통신 링크들을 통해 통신하는 것이 가능할 수 있다.
상기 프로세서(302)는 이동 단말기와 관련이 있는 사용자-인터페이스 하드웨어(318)에 연결된다. 상기 이동 단말기의 사용자-인터페이스 하드웨어(318)는 예를 들면 디스플레이(320)를 포함할 수 있다. 사용자-인터페이스(318)는 또한 사용자 입력들을 수신하는 것이 가능한 입력 기기와 같은 트랜스듀서(transducer; 324)를 포함할 수 있다. 상기 트랜스듀서(324)는 또한 국부적인 조건들(예컨대, 위치 온도, 가속도, 방위, 근접 등등)을 측정하고 미디어(예컨대, 텍스트, 정지 화상들, 비디오, 사운드 등등)를 생성하는 것이 가능한 감지 기기들을 포함할 수 있다. 키패드들, 스피커들, 마이크로폰들, 음성 명령들, 스위치들, 터치 패드/스크린, 포인팅 기기들, 트랙볼, 조이스틱, 진동 생성기들, 광, 가속도계들 등등과 같은 다른 사용자-인터페이스 하드웨어/소프트웨어가 상기 인터페이스(318)에 포함될 수 있다. 이들 및 다른 사용자-인터페이스 구성요소들은 당업계에 공지되어 있는 바와 같이 상기 프로세서(302)에 연결된다.
상기 프로그램 저장 장치/메모리(302)에는 상기 이동 장치(300) 상의 기능들과 관련이 있는 기능들 및 애플리케이션들을 수행하기 위한 운영 시스템들이 포함되어 있다. 상기 프로그램 저장 장치(304)는 판독-전용 메모리(ROM), 플래시 ROM, 프로그램가능하고 그리고/또는 소거가능한 ROM, 랜덤 액세스 메모리(RAM), 가입자 인터페이스 모듈(subscriber interface module; SIM), 무선 인터페이스 모듈(wireless inerface module; WIM), 스마트 카드, 하드 드라이브, 컴퓨터 프로그램 제품, 또는 다른 착탈식 메모리 기기 중 하나 이상을 포함할 수 있다.
상기 이동 장치(300)의 저장 장치/메모리(304)는 또한 본 발명의 전형적인 실시예들에 따라 기능들을 수행하는 특수 소프트웨어 모듈들을 포함할 수 있다. 예를 들면, 상기 프로그램 저장 장치/메모리(304)는 하나 이상의 애플리케이션들(330) 및/또는 이들과 관련이 있는 파일들의 상태를 검증하는 유효값(예컨대, 검사합들, 해시들)을 저장하는 것이 가능한 RAM의 보호 메모리 부분(328)을 포함할 수 있다. 부트-타임 유효화 모듈(332)은 부트, 리셋, 저-전력/대기 및 최대-전력 모드들 등 간의 전이 등등과 같은 기기 초기화 이벤트에 응답하여 이러한 유효값들을 계산한다.
상기 저장 장치/메모리(304)는 상기 부트-타임 유효화 모듈(332)(및 다른 시스템 구성요소)에 의해 사용될 수 있는 애플리케이션 메타데이터(334)를 포함할 수 있다. 상기 애플리케이션 메타데이터(334)는 데이터베이스, 레지스트리, 파일, 또는 다른 어떤 데이터 구조의 일부일 수 있다. 상기 애플리케이션 메타데이터(334)는 애플리케이션들(330)의 이름들/식별자들, 각각의 애플리케이션(330)에 의해 사용되거나 각각의 애플리케이션(330)에 포함되는 중요한 파일들, 애플리케이션들(330)의 사용 데이터 등등과 같은 데이터를 포함할 수 있다.
론처(336)는, 예컨대 영속 저장 장치로부터 RAM으로의 명령어들의 전달, 프로세스 식별자의 생성, 특권들의 결정/설정, CPU 시간에 대한 우선순위의 결정/설정 등등에 의해 애플리케이션들(330)의 론칭을 좌우하는 운영 시스템 구성요소일 수 있다. 런-타임 유효화 모듈(338)은 상기 론처(336)를 대상으로 하는 론치 요구들을 검출하고 그에 응답하여 현재 영속 저장 장치에 존재하는 실행가능한 것들(및 다른 데이터)의 기존 상태에 기반하여 론칭되는 애플리케이션에 대한 현재의 유효 데이터를 결정한다. 이러한 현재값들은 보호 RAM(328)에 저장되어 있는 이전에 계산된 값들에 비교된다. 상기 비교에서 어떠한 변경도 존재하지 않았던 것으로 나타난 경우에, 상기 유효화 모듈(338)은 상기 론처(336)가 애플리케이션 프로세스(들)의 실행을 속행할 수 있게 한다.
상기 런-타임 유효화 모듈(338)은, 예컨대 중요한 파일들을 결정하는, 상기 부트-타임 모듈(332)에 대해 설명한 바와 유사한 목적을 위해 상기 애플리케이션 메타데이터(334)에 액세스할 수 있다. 비록 상기 런-타임 모듈(338)이 상대적인 애플리케이션 우선순위에 대해 걱정할 필요가 없을 수 있다 하더라도, 상기 런-타임 및 부트-타임 모듈들(338,332)은 병행 실행할 수 있는데, 이는 이전에 계산되고 저장된 유효 데이터가 보호 메모리(328)에 존재하지 않는 상황을 초래할 수 있다. 그러한 경우에, 상기 런-타임 모듈(338)은 상기 부트-타임 모듈(332)에 시그널링하여, 예컨대 요구된 애플리케이션의 상대적인 우선순위를 증가시킴으로써 그러한 유효화를 수행할 수 있다. 다른 구조들이 가능한데, 예컨대, 상기 런-타임 모듈(338) 자체는 자신의 이미 계산된 값을 보호 메모리에 삽입하고 현재의 애플리케이션이 손상되지 않았음을 보장할 수 있다(예컨대, 장치(300)가 단지 단시간 동안 실행함으로써, 소프트웨어를 현재 실행함으로써 손상되는 파일들의 염려가 적어진다).
상기 론처(336) 및/또는 런-타임 유효화 모듈(338)은 또한 상기 애플리케이션 메타데이터(334)를 업데이트하도록 작용할 수 있다. 예를 들면, 상기 론처(336)는 애플리케이션 론치들이 얼마나 자주 요구되는지에 따라 애플리케이션들(330)의 상대적인 우선순위에 영향을 주는 통계치들을 제공할 수 있다. 데이터가 손상된 경우에, 상기 유효화 모듈(338)은 상기 메타데이터(334)에서 변조된 데이터에 플래그를 설정함으로써, 장래의 실행을 방지하고 그리고/또는 영향을 받은 애플리케이션들의 복구들 또는 재설치를 개시할 수 있다. 그에 따른 결과들은 서비스 제공자들, 기기 제조업자들, 및/또는 소프트웨어 제작자들에게 유용할 수 있다. 이 때문에, 상기 런-타임 모듈(338)은 네트워크(315)를 통해 손상된 파일들의 돌발상황(incident)들을 보고하는 보고 기능을 제공할 수 있다.
도 3의 이동 장치(300)는 본 발명의 원리들이 적용될 수 있는 컴퓨팅 환경의 대표적인 예로서 제공된다. 본 명세서에서 제공되는 설명으로부터, 당업자라면 본 발명이 현재 공지되어 있고 장래에 이루어지는 다른 여러 이동통신 및 지상통신 컴퓨팅 환경들에 마찬가지로 적용가능하다는 점을 알 수 있을 것이다. 예를 들면, 데스크톱 및 서버 컴퓨팅 기기들은 마찬가지로 프로세서, 메모리, 사용자 인터페이스, 및 데이터 통신 회로를 포함한다. 따라서, 본 발명은 데이터가 네트워크를 통해 통신될 수 있는 공지된 임의의 컴퓨팅 구조에 적용가능하다.
도 4a를 지금부터 참조하면, 장치상에서의 애플리케이션들의 초기화 검사를 수행하는 절차(400)가 흐름도로 예시되어 있다. 상기 절차는 검사될 파일들 또는 다른 데이터의 리스트를 획득하는 것(402)을 포함한다. 상기 리스트는 특수 데이터베이스에 저장될 수도 있고 다른 어떤 방식(예컨대, 파일 디렉토리들의 횡단)으로 획득될 수 있다. 이러한 동작(402)은 또한 상기 절차(400)가 진행되고 있는 동안(예컨대, 상기 절차(400)가 런-타임 프로세스들과 동시에 실행을 속행할 수 있는 동안) 가장 필요할 것 같은 파일들이 먼저 완료되도록 상대적인 우선순위들을 발견하거나 결정하는 것을 포함할 수 있다.
상기 리스트의 각각의 파일에 대해, 상기 파일에 대한 해시/검사합을 계산하는 것(406), 및 상기 계산된 해시/검사합을 보호 RAM에 저장하는 것(408)을 포함하는 루프(404)가 진입된다. 모든 중요한 파일들이 처리된 경우에, 그 절차는 완료(410)된다. 본 발명의 한 실시예에 따른 유사한 절차(420)가 도 4b에 나타나 있다. 이러한 절차(420)는 일부 또는 모든 애플리케이션 데이터가 재유효화되게 하는 이벤트를 대기(422)하는 무한 루프를 포함한다. 그러한 이벤트에는 임의의 사후-초기화, 현재 실행하는 프로그램의 일부를 페이징하는 것과 같은, 실제로 특정 애플리케이션을 론칭하는 것과는 무관한 런-타임 이벤트, 시간 경과, 특정 애플리케이션의 소프트웨어 초기화 이벤트, 새로운 애플리케이션의 설치, 기존 애플리케이션의 재설치 등등이 있을 수 있다.
도 4a와 마찬가지로, 도 4b에서의 절차(420)는 (우선순위로 또한 분류될 수 있지만, 이러한 것이 재유효화 이벤트에 의존할 필요가 없을 수 있는) 리스트를 획득 하는 것(424) 및 루프(426)가 각각의 파일을 통해 반복하는 경우에 해시/검사합 데이터를 계산(428)하고 이를 보호 메모리에 저장(430)하는 것을 포함한다. 그리고나서, 이와 같이 저장된 해시/검사합 데이터는 이하에서 설명되는 바와 같이 사용될 수 있다. 해시/검사합이 이미 (도 4a에서의 절차를 통해) 저장된 경우에, 그러한 저장(430)은 상기 보호 메모리 부분 내의 대응하는 저장된 유효값을 업데이트된 유효값으로 대체하는 것을 포함할 수 있다.
도 5를 지금부터 참조하면, 장치상에서의 애플리케이션 론치 유효화를 수행하기 위한 절차(500)가 흐름도로 예시되어 있다. 그러한 절차(500)는 도 4a 및 4b와 관련지어 위에서 설명한 바와 같은 소프트웨어의 초기 유효화 다음에 수행될 수 있다. 상기 절차(500)는 애플리케이션 론치 요구를 대기(502)하는 무한 루프로서 구성될 수 있다. 그러한 애플리케이션에 대한 파일 리스트(504)가 획득되고, 루프(506)가 각각의 파일을 통해 반복된다. 상기 파일에 대해 현재의 해시/검사합(H*)이 계산되고 이전에 저장된 해시/검사합(H)이 보호 RAM으로부터 획득(510)된다. H* 및 H 값들은 비교(512)된다. H 및 H*가 일치하지 않는 경우에, 상기 애플리케이션 론치가 거부(514)되고 대기 상태(502)로 복귀하도록 상기 절차가 루프(506)로부터 중단된다. 상기 루프(506)가 완료되면, 상기 애플리케이션 론치가 허용(516)되고 대기 상태(502)로 진입하게 된다.
본 발명의 전형적인 실시예들에 대한 위의 내용은 예시 및 설명을 위해 제시된 것이었다. 이는 본 발명을 전부 열거하려고 의도한 것도 아니고 개시된 정확한 형태로 본 발명을 한정하려고 의도된 것도 아니다. 위의 교시에 비추어 볼 때, 여러 변경들 및 변형들이 이루어질 수 있다. 여기서 의도된 점은 본 발명의 범위가 이러한 구체적인 내용으로 한정되는 것이 아니고 오히려 첨부된 특허청구범위로 결정된다는 점이다.

Claims (20)

  1. 보호 메모리 부분을 포함하는 랜덤 액세스 메모리;
    상기 랜덤 액세스 메모리에 연결된 프로세서;를 포함하는 장치로서,
    상기 프로세서는,
    상기 장치로 하여금,
    상기 장치의 초기화에 응답하여 복수 개의 애플리케이션 실행가능 파일들 각각에 대해 유효값(validation value)을 계산하고 상기 보호 메모리 부분에 상기 유효값들을 저장하게 하며;
    상기 장치상에 특정 애플리케이션을 론칭(launching)하려는 시도를 결정하게 하고;
    상기 애플리케이션과 관련이 있는 실행가능한 파일에 대한 현재의 유효값을 계산하게 하며;
    상기 현재의 유효값을 상기 저장된 유효값들 중 하나의 대응하는 유효값과 비교하게 하고; 그리고
    상기 비교의 결과들에 기반하여 상기 애플리케이션의 론칭을 규제하게 하는 실행가능한 명령어들로 구성되는, 장치.
  2. 제1항에 있어서, 상기 실행가능한 명령어들은 추가로, 상기 장치로 하여금, 상기 애플리케이션의 론칭과는 무관한 런-타임 이벤트(run-time event)에 응답하여 상기 애플리케이션과 관련이 있는 실행가능한 파일에 대한 유효값을 다시 계산하게 하며 그리고 다시 계산된 값으로 상기 보호 메모리 부분 내의 상기 대응하는 저장된 유효값을 대체하게 하는, 장치.
  3. 제2항에 있어서, 상기 런-타임 이벤트는 상기 실행가능한 파일의 페이징을 포함하는, 장치.
  4. 제2항에 있어서, 상기 런-타임 이벤트는 상기 대응하는 저장된 유효값의 이전의 계산 다음의 시간 경과를 포함하는, 장치.
  5. 제1항에 있어서, 상기 실행가능한 명령어들은 추가로, 상기 장치로 하여금, 예상되는 사용에 기반하여 상기 복수 개의 애플리케이션 파일들 각각에 대한 우선순위를 설정하게 하며, 상기 유효값들을 계산하고 이들을 상기 보호 메모리 부분에 저장하는 것은 개별 우선순위들에 의해 좌우되는, 장치.
  6. 제1항에 있어서, 상기 유효값들을 계산하고 이들을 상기 보호 메모리 부분에 저장하는 것은 애플리케이션 프로그램을 론칭하려는 시도를 결정하는 것과 동시에 이루어지는, 장치.
  7. 제6항에 있어서, 상기 실행가능한 명령어들은 추가로, 상기 장치로 하여금,
    상기 현재의 유효값을 상기 대응하는 유효값과 비교할 경우에 상기 대응하는 저장된 유효값이 이용가능하지 않음을 결정하게 하고; 그리고
    상기 현재의 유효값을 상기 저장된 유효값들 중 하나의 대응하는 유효값과 비교하는 것을 용이하게 하기 위해 상기 대응하는 유효값의 계산 및 저장이 상위 우선순위에서 이루어지게 하는, 장치.
  8. 장치의 초기화에 응답하여 복수 개의 애플리케이션 실행가능 파일들 각각에 대해 유효값을 계산하고 상기 장치의 랜덤 액세스 메모리의 보호 메모리 부분에 상기 유효값들을 저장하는 것;
    상기 장치상에 특정 애플리케이션을 론칭하려는 시도를 결정하는 것;
    상기 애플리케이션과 관련이 있는 실행가능한 파일에 대한 현재의 유효값을 계산하는 것;
    상기 현재의 유효값을 상기 저장된 유효값들 중 하나의 대응하는 유효값과 비교하는 것; 및
    상기 애플리케이션의 론칭을 상기 비교의 결과들에 기반하여 규제하는 것;을 포함하는, 방법.
  9. 제8항에 있어서, 상기 애플리케이션의 론칭과는 무관한 런-타임 이벤트(run-time event)에 응답하여,
    상기 애플리케이션과 관련이 있는 실행가능한 파일에 대한 현재의 유효값을 계산하는 것;
    상기 현재의 유효값을 상기 저장된 유효값들 중 하나의 대응하는 유효값과 비교하는 것; 및
    상기 비교의 결과들에 기반하여 상기 애플리케이션의 파일들에 관한 액세스를 규제하는 것;을 추가로 포함하는, 방법.
  10. 제9항에 있어서, 상기 런-타임 이벤트는 상기 실행가능한 파일의 페이징을 포함하는, 방법.
  11. 제9항에 있어서, 상기 런-타임 이벤트는 상기 대응하는 저장된 유효값의 이전의 계산 다음의 시간 경과를 포함하는, 방법.
  12. 제8항에 있어서,
    예상되는 사용에 기반하여 상기 복수 개의 애플리케이션 파일들 각각에 대한 우선순위를 설정하는 것;을 추가로 포함하며,
    상기 유효값들을 계산하고 이들을 상기 보호 메모리 부분에 저장하는 것은 개별 우선순위들에 의해 좌우되는, 방법.
  13. 제8항에 있어서, 상기 유효값들을 계산하고 이들을 상기 보호 메모리 부분에 저장하는 것은 애플리케이션 프로그램을 론칭하려는 시도를 결정하는 것과 동시에 이루어지며, 상기 방법은 추가로,
    상기 현재의 유효값을 상기 대응하는 유효값과 비교할 경우에 상기 대응하는 저장된 유효값이 이용가능하지 않음을 결정하는 것; 및
    상기 현재의 유효값을 상기 저장된 유효값들 중 하나의 대응하는 유효값과 비교하는 것을 용이하게 하기 위해 상기 대응하는 유효값의 계산 및 저장이 상위 우선순위에서 이루어지게 하는, 방법.
  14. 제8항에 있어서,
    상기 애플리케이션의 소프트웨어 초기화 이벤트에 응답하여 상기 애플리케이션과 관련이 있는 실행가능한 파일에 대해 업데이트된 유효값을 계산하는 것; 및
    상기 보호 메모리 부분에서 상기 대응하는 저장된 유효값을 상기 업데이트된 유효값으로 대체하는 것;을 추가로 포함하는, 방법.
  15. 제14항에 있어서, 상기 소프트웨어 초기화 이벤트는 상기 애플리케이션의 재설치를 포함하는, 방법.
  16. 제14항에 있어서, 상기 소프트웨어 초기화 이벤트는 상기 장치의 사후-초기화 런-타임 동안 상기 애플리케이션의 유효화를 포함하는, 방법.
  17. 장치에 의해 실행될 경우에 청구항 제8항의 방법을 수행하는 명령어들로 부호화된 컴퓨터-판독가능 저장 매체.
  18. 장치상의 특정 애플리케이션의 변경 이벤트에 응답하여 상기 애플리케이션과 관련이 있는 하나 이상의 실행가능한 파일들에 대해 유효값을 계산하고 상기 유효값들을 상기 장치의 랜덤 액세스 메모리의 보호 메모리 부분에 저장하는 것;
    상기 장치상의 특정 애플리케이션을 론칭하려는 시도를 결정하는 것;
    상기 애플리케이션과 관련이 있는 실행가능한 파일에 대한 현재의 유효값을 결정하는 것;
    상기 현재의 유효값을 상기 저장된 유효값들 중 하나의 대응하는 유효값과 비교하는 것; 및
    상기 애플리케이션의 론칭을 상기 비교의 결과들에 기반하여 규제하는 것;을 포함하는, 방법.
  19. 제18항에 있어서, 상기 변경 이벤트는 상기 애플리케이션의 초기 설치 또는 상기 애플리케이션의 재설치 중 적어도 하나를 포함하는, 방법.
  20. 제18항에 있어서, 상기 변경 이벤트는 상기 장치의 런-타임 동안 상기 애플리케이션의 유효화를 포함하는, 방법.
KR1020117029612A 2009-05-12 2010-05-12 애플리케이션 보안을 제공하는 방법, 장치, 및 컴퓨터 프로그램 KR101336378B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/464,414 US8839458B2 (en) 2009-05-12 2009-05-12 Method, apparatus, and computer program for providing application security
US12/464,414 2009-05-12
PCT/IB2010/001102 WO2010131106A1 (en) 2009-05-12 2010-05-12 Method, apparatus, and computer program for providing application security

Publications (2)

Publication Number Publication Date
KR20120012983A true KR20120012983A (ko) 2012-02-13
KR101336378B1 KR101336378B1 (ko) 2013-12-26

Family

ID=43069584

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117029612A KR101336378B1 (ko) 2009-05-12 2010-05-12 애플리케이션 보안을 제공하는 방법, 장치, 및 컴퓨터 프로그램

Country Status (6)

Country Link
US (1) US8839458B2 (ko)
EP (1) EP2430581B1 (ko)
KR (1) KR101336378B1 (ko)
CN (1) CN102804194B (ko)
CA (1) CA2761337C (ko)
WO (1) WO2010131106A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225061B2 (en) 2009-07-02 2012-07-17 Apple Inc. Method and apparatus for protected content data processing
US9219936B2 (en) * 2010-02-05 2015-12-22 Maxlinear, Inc. Conditional access integration in a SOC for mobile TV applications
US9177152B2 (en) 2010-03-26 2015-11-03 Maxlinear, Inc. Firmware authentication and deciphering for secure TV receiver
WO2011123561A1 (en) 2010-03-30 2011-10-06 Maxlinear, Inc. Control word obfuscation in secure tv receiver
US8892855B2 (en) 2010-08-10 2014-11-18 Maxlinear, Inc. Encryption keys distribution for conditional access software in TV receiver SOC
US20140006781A1 (en) * 2012-06-23 2014-01-02 Pomian & Corella, Llc Encapsulating the complexity of cryptographic authentication in black-boxes
KR102038964B1 (ko) * 2013-03-18 2019-11-26 삼성전자주식회사 어플리케이션 간의 상호 인증 방법 및 장치
CN104219198B (zh) * 2013-05-30 2018-04-27 中国银联股份有限公司 一种WebApp的防篡改方法
EP2840492A1 (en) * 2013-08-23 2015-02-25 British Telecommunications public limited company Method and apparatus for modifying a computer program in a trusted manner
US9535935B2 (en) * 2013-12-09 2017-01-03 Sap Se Schema-based application model validation in a database
US20150213253A1 (en) * 2014-01-28 2015-07-30 Qualcomm Incorporated Authorizing an application for use by a computing device
CN105320873B (zh) * 2014-07-02 2019-06-07 中国移动通信集团公司 一种终端应用的解锁方法、装置、终端及sim卡
US9934475B2 (en) * 2015-05-13 2018-04-03 Bank Of America Corporation Managing enterprise data movement using a heuristic data movement detection engine
EP3153985A1 (en) * 2015-10-08 2017-04-12 Thomson Licensing Device and method for password generation in a user device
CN108351770B (zh) * 2016-02-09 2020-02-28 西门子公司 用于安全地实施程序命令的方法和实施环境
CN107436757A (zh) * 2016-05-27 2017-12-05 上海汽车集团股份有限公司 电控单元软件版本校验方法、装置及车辆
US10503894B2 (en) * 2016-08-30 2019-12-10 Ncr Corporation Secure process impersonation
IT201900017534A1 (it) * 2019-09-30 2021-03-30 Magneti Marelli Spa "Sistema di elaborazione comprendente apparato di calcolo di tipo "trust anchor" e corrispondente procedimento"
CN111291371A (zh) * 2020-01-10 2020-06-16 北京深之度科技有限公司 一种应用程序安全验证方法及装置
US11632362B1 (en) * 2021-04-14 2023-04-18 SHAYRE, Inc. Systems and methods for using JWTs for information security
CN113176965A (zh) * 2021-04-25 2021-07-27 山东英信计算机技术有限公司 一种基于vr配置crc校验的防烧板方法、系统及介质

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493649A (en) * 1994-06-21 1996-02-20 Microsoft Corporation Detecting corruption in a computer program at execution time using a checksum
FR2748834B1 (fr) * 1996-05-17 1999-02-12 Gemplus Card Int Systeme de communication permettant une gestion securisee et independante d'une pluralite d'applications par chaque carte utilisateur, carte utilisateur et procede de gestion correspondants
US5944821A (en) * 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US6026293A (en) * 1996-09-05 2000-02-15 Ericsson Inc. System for preventing electronic memory tampering
US6708274B2 (en) * 1998-04-30 2004-03-16 Intel Corporation Cryptographically protected paging subsystem
US6212592B1 (en) * 1998-09-17 2001-04-03 Micron Technology, Inc. Computer system for processing system management interrupt requests
US6694434B1 (en) * 1998-12-23 2004-02-17 Entrust Technologies Limited Method and apparatus for controlling program execution and program distribution
WO2000072149A1 (en) 1999-05-25 2000-11-30 Motorola Inc. Pre-verification of applications in mobile computing
US6775536B1 (en) * 1999-11-03 2004-08-10 Motorola, Inc Method for validating an application for use in a mobile communication device
US6735700B1 (en) * 2000-01-11 2004-05-11 Network Associates Technology, Inc. Fast virus scanning using session stamping
ES2360005T3 (es) * 2000-09-21 2011-05-31 Research In Motion Limited Sistema y método de firma mediante código por software.
US7526811B1 (en) * 2001-05-22 2009-04-28 Novell, Inc. Methods for detecting executable code which has been altered
US7137004B2 (en) * 2001-11-16 2006-11-14 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US7434259B2 (en) * 2002-10-21 2008-10-07 Microsoft Corporation Method for prompting a user to install and execute an unauthenticated computer application
AU2002348969A1 (en) * 2002-11-08 2004-06-07 Nokia Corporation Software integrity test in a mobile telephone
US7500098B2 (en) * 2004-03-19 2009-03-03 Nokia Corporation Secure mode controlled memory
CN100340937C (zh) * 2004-04-12 2007-10-03 华为技术有限公司 一种软件保护方法及装置
US20060137007A1 (en) * 2004-12-16 2006-06-22 Nokia Corporation Revoking a permission for a program
US7577848B2 (en) * 2005-01-18 2009-08-18 Microsoft Corporation Systems and methods for validating executable file integrity using partial image hashes
US7467285B2 (en) * 2005-07-27 2008-12-16 Intel Corporation Maintaining shadow page tables in a sequestered memory region
US20070150966A1 (en) * 2005-12-22 2007-06-28 Kirschner Wesley A Method and apparatus for maintaining a secure software boundary
US20070226795A1 (en) * 2006-02-09 2007-09-27 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
WO2007117574A2 (en) * 2006-04-06 2007-10-18 Smobile Systems Inc. Non-signature malware detection system and method for mobile platforms
CN101236496A (zh) * 2007-01-29 2008-08-06 展讯通信(上海)有限公司 一种软件一致性检测方法和装置
US8832454B2 (en) * 2008-12-30 2014-09-09 Intel Corporation Apparatus and method for runtime integrity verification

Also Published As

Publication number Publication date
KR101336378B1 (ko) 2013-12-26
US8839458B2 (en) 2014-09-16
CN102804194B (zh) 2016-01-20
CN102804194A (zh) 2012-11-28
US20100293614A1 (en) 2010-11-18
EP2430581B1 (en) 2020-10-14
EP2430581A4 (en) 2014-06-04
CA2761337A1 (en) 2010-11-18
WO2010131106A1 (en) 2010-11-18
EP2430581A1 (en) 2012-03-21
CA2761337C (en) 2016-04-19

Similar Documents

Publication Publication Date Title
KR101336378B1 (ko) 애플리케이션 보안을 제공하는 방법, 장치, 및 컴퓨터 프로그램
US10931451B2 (en) Securely recovering a computing device
US8291480B2 (en) Trusting an unverified code image in a computing device
US8254568B2 (en) Secure booting a computing device
US9189605B2 (en) Protected computing environment
US8789037B2 (en) Compatible trust in a computing device
US20060236122A1 (en) Secure boot
CN107679393B (zh) 基于可信执行环境的Android完整性验证方法和装置
WO2018005223A1 (en) Maintaining operating system secrets across resets
JP5346608B2 (ja) 情報処理装置およびファイル検証システム
US9483636B2 (en) Runtime application integrity protection
US20170255775A1 (en) Software verification systems with multiple verification paths
Khokhlov et al. Data security evaluation for mobile android devices
JP2018509692A (ja) 選択的なブロックベースの完全性保護技法
CN111353150B (zh) 一种可信启动方法、装置、电子设备及可读存储介质
CN117610083A (zh) 文件校验方法、装置、电子设备及计算机存储介质
Msgna et al. Secure application execution in mobile devices
WO2006115533A2 (en) Protected computing environment
KR20160118900A (ko) 보안 기능이 추가된 애플리케이션 배포 방법, 상기 애플리케이션의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171027

Year of fee payment: 5