KR102296754B1 - 보안 저장소 장치 - Google Patents

보안 저장소 장치 Download PDF

Info

Publication number
KR102296754B1
KR102296754B1 KR1020207002143A KR20207002143A KR102296754B1 KR 102296754 B1 KR102296754 B1 KR 102296754B1 KR 1020207002143 A KR1020207002143 A KR 1020207002143A KR 20207002143 A KR20207002143 A KR 20207002143A KR 102296754 B1 KR102296754 B1 KR 102296754B1
Authority
KR
South Korea
Prior art keywords
storage
hardware processor
access request
data packet
response
Prior art date
Application number
KR1020207002143A
Other languages
English (en)
Other versions
KR20200035016A (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 KR20200035016A publication Critical patent/KR20200035016A/ko
Application granted granted Critical
Publication of KR102296754B1 publication Critical patent/KR102296754B1/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
    • 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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0677Optical disk device, e.g. CD-ROM, DVD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload

Abstract

설명된 시스템 및 방법은 컴퓨터 보안 위협으로부터, 특히 랜섬웨어 및 개인 데이터에 대한 무단 액세스로부터 호스트 시스템을 보호할 수 있게 한다. 일부 실시예에서, 종래의 비휘발성 저장소 유닛(예를 들어, 자기, 광 또는 솔리드 스테이트 드라이브)은 전용 보안 프로세서와 페어링하여, SATA, PCI, 또는 USB 커넥터와 같은 종래의 저장소 인터페이스를 통해 호스트 시스템의 1차 프로세서(primary processor)에 연결될 수 있는 보안 저장소 장치를 형성한다. 상기 1차 프로세서와 보안 프로세서는 저장소 인터페이스를 통해 메시지 및 데이터를 교환한다. 상기 보안 프로세서는 상기 저장소 유닛으로의 상기 1차 프로세서의 액세스를 제어하고, 보안 및 데이터 암호화 동작을 수행할 수 있다.

Description

보안 저장소 장치
본 출원은 2017년 4월 8일에 출원된 미합중국 가특허출원 번호 제62,541,505호(발명의 명칭 "보안 저장소 장치(Secure Storage Device)")의 출원일에 대한 우선권을 주장하며 그 전체 내용은 본 명세서에서 참조로서 포함된다.
본 발명은 컴퓨터 보안에 관한 것이며, 구체적으로는 악성 소프트웨어(멀웨어)로부터 컴퓨터를 보호하는 것에 관한 것이다.
악성 소프트웨어는 세계적으로 많은 수의 컴퓨터 시스템에 영향을 주고 있다. 멀웨어는 컴퓨터 바이러스, 웜, 루트킷(rootkit) 및 스파이웨어와 같은 많은 형태로, 수백만의 컴퓨터 사용자에게 심각한 위협이 되고 있으며, 무엇보다도 데이터 및 민감한 정보의 손실, 신원 도용, 및 생산성 손실에 있어 이들을 취약하게 하고 있다. 랜섬웨어(Ransomware)는 컴퓨터의 하드 드라이브와 같은 저장 매체에서 발견된 파일 세트를 암호화하고, 그 후 파일 소유자에게 각 데이터를 복구하기 위해 비용을 지불하도록 요구하는 특히 위험한 유형의 멀웨어이다.
안티-멀웨어 소프트웨어는 악성 소프트웨어를 탐지 및/또는 불능화시키기 위해 사용될 수 있다. 그러나, 멀웨어는 탐지를 회피하기 위한 다양한 전략들을 채용한다. 그러한 한 전략은 난독화(obfuscation)를 포함하는데, 예를 들어 악성 코드를 암호화하거나, 또는 각각의 감염된 컴퓨터에 조금씩 다른 코드 버전을 사용한다(보통 폴리모피즘(polymorphism)으로 알려진 특징). 다른 예시적인 탐지 회피 방법은 복수의 에이전트들 중에서 악성 활동들을 분할하고, 이때 각각의 에이전트는 별개로 취해지는 경우 멀웨어를 나타내는 것으로 여겨질 수 없는 별도의 활동들의 세트를 수행하는 것이다.
디지털 저장 데이터를, 악성 소프트웨어에 의한 것을 포함하여 도난 및 무단 수정으로부터 보호하기 위한 강력한 시스템 및 방법을 개발하는 데 강한 관심이 있다.
일 태양에 따르면, 컴퓨터 시스템은 제1 하드웨어 프로세서 및 보안 저장소 장치를 포함하하고, 상기 보안 저장소 장치는 저장소 전송 프로토콜에 따라 포맷된(format, 형식화된) 저장소 액세스 요청을 수신하도록 구성된 저장소 인터페이스를 통해 상기 제1 하드웨어 프로세서에 연결된다. 상기 보안 저장소 장치는 제2 하드웨어 프로세서 및 비휘발성 저장소 유닛을 포함한다. 상기 제1 하드웨어 프로세서는, 상기 저장소 유닛 상에 데이터 패킷을 저장하기 위하여 상기 제1 하드웨어 프로세서 상에서 실행되는 소프트웨어에 의한 요청을 탐지하는 것에 응답하여, 상기 데이터 패킷을 암호화하도록 구성된다. 상기 제1 하드웨어 프로세서는 추가적으로, 상기 데이터 패킷을 암호화하는 것에 응답하여, 트루 저장소 액세스 요청(true storage access request)을 상기 저장소 인터페이스로 전송하도록 구성되고, 상기 트루 저장소 액세스 요청은 상기 암호화된 데이터 패킷을 포함한다. 상기 제1 하드웨어 프로세서는 추가적으로, 상기 저장소 전송 프로토콜에 따라 더미(dummy, 무의미) 저장소 액세스 요청을 생성하도록 구성되고, 상기 더미 저장소 액세스 요청은 적어도 암호 키(cryptographic key)의 일부를 포함하며, 그리고 상기 더미 저장소 액세스 요청을 상기 저장소 인터페이스로 전송하도록 구성된다. 상기 제2 하드웨어 프로세서는, 상기 저장소 인터페이스를 통해 통신을 수신하는 것에 응답하여, 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하도록 구성된다. 응답으로, 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는 경우, 상기 제2 하드웨어 프로세서는 상기 더미 저장소 액세스 요청에 따라 상기 암호 키를 결정하도록 구성된다. 상기 제2 하드웨어 프로세서는 추가적으로, 상기 트루 저장소 액세스 요청을 수신하는 것에 응답하여, 상기 데이터 패킷을 복호화(decrypt)하기 위하여 상기 암호 키를 채용하며, 그리고 상기 복호화된 데이터 패킷이 악성 소프트웨어를 포함하는지 여부를 결정하도록 구성된다.
다른 태양에 따르면, 보안 저장소 장치는 제1 하드웨어 프로세서 및 비휘발성 저장소 유닛을 포함하고, 상기 보안 저장소 장치는 저장소 전송 프로토콜에 따라 포맷된(format, 형식화된) 저장소 액세스 요청을 수신하도록 구성된 저장소 인터페이스를 통해 제2 하드웨어 프로세서에 연결되도록 구성된다. 상기 제2 하드웨어 프로세서는, 상기 저장소 유닛 상에 데이터 패킷을 저장하기 위하여 상기 제2 하드웨어 프로세서 상에서 실행되는 소프트웨어에 의한 요청을 탐지하는 것에 응답하여, 상기 데이터 패킷을 암호화하도록 구성된다. 상기 제2 하드웨어 프로세서는 추가적으로, 상기 데이터 패킷을 암호화하는 것에 응답하여, 트루 저장소 액세스 요청(true storage access request)을 상기 저장소 인터페이스로 전송하도록 구성되고, 상기 트루 저장소 액세스 요청은 상기 암호화된 데이터 패킷을 포함한다. 상기 제2 하드웨어 프로세서는 추가적으로, 상기 저장소 전송 프로토콜에 따라 더미(dummy, 무의미) 저장소 액세스 요청을 생성하도록 구성되고, 상기 더미 저장소 액세스 요청은 적어도 암호 키(cryptographic key)의 일부를 포함하며, 그리고 상기 더미 저장소 액세스 요청을 상기 저장소 인터페이스로 전송하도록 구성된다. 상기 제1 하드웨어 프로세서는, 상기 저장소 인터페이스를 통해 통신을 수신하는 것에 응답하여, 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하도록 구성된다. 응답으로, 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는 경우, 상기 제1 하드웨어 프로세서는 상기 더미 저장소 액세스 요청에 따라 상기 암호 키를 결정하도록 구성된다. 상기 제1 하드웨어 프로세서는 추가적으로, 상기 트루 저장소 액세스 요청을 수신하는 것에 응답하여, 상기 데이터 패킷을 복호화(decrypt)하기 위하여 상기 암호 키를 채용하며, 그리고 상기 복호화된 데이터 패킷이 악성 소프트웨어를 포함하는지 여부를 결정하도록 구성된다.
또 다른 태양에 따르면, 컴퓨터 보안 방법은 보안 저장소 장치를 저장소 전송 프로토콜에 따라 포맷된(format, 형식화된) 저장소 액세스 요청을 수신하도록 구성된 저장소 인터페이스를 통해 제1 하드웨어 프로세서에 연결하는 것을 포함하고, 상기 보안 저장소 장치는 제2 하드웨어 프로세서 및 비휘발성 저장소 유닛을 포함한다. 상기 방법은 추가적으로, 상기 저장소 유닛 상에 데이터 패킷을 저장하기 위하여 상기 제1 하드웨어 프로세서 상에서 실행되는 소프트웨어에 의한 요청을 탐지하는 것에 응답하여, 상기 데이터 패킷을 암호화하기 위해 상기 제1 하드웨어 프로세서를 채용하는 것을 포함한다. 상기 방법은 추가적으로, 상기 데이터 패킷을 암호화하는 것에 응답하여, 트루 저장소 액세스 요청(true storage access request)을 상기 저장소 인터페이스로 전송하기 위해 상기 제1 하드웨어 프로세서를 채용하는 것을 포함하고, 상기 트루 저장소 액세스 요청은 상기 암호화된 데이터 패킷을 포함한다. 상기 방법은 추가적으로, 상기 저장소 전송 프로토콜에 따라 더미(dummy, 무의미) 저장소 액세스 요청을 생성하기 위해 상기 제1 하드웨어 프로세서를 채용하는 것을 포함하고, 상기 더미 저장소 액세스 요청은 적어도 암호 키(cryptographic key)의 일부를 포함하고, 상기 더미 저장소 액세스 요청을 상기 저장소 인터페이스로 전송하기 위해 상기 제1 하드웨어 프로세서를 채용하는 것을 포함한다. 상기 방법은 추가적으로, 상기 저장소 인터페이스를 통해 통신을 수신하는 것에 응답하여, 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것을 포함한다. 응답으로, 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는 경우, 상기 방법은 추가적으로 상기 데이터 패킷을 복호화(decrypt)하기 위하여 상기 암호 키를 채용하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것; 및 상기 복호화된 데이터 패킷이 악성 소프트웨어를 포함하는지 여부를 결정하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것을 포함한다.
본 발명의 전술한 태양들 및 장점은 후술하는 상세한 설명 및 도면을 참조로 이해하면 더욱 잘 이해될 것이다.
도 1은 본 발명의 일부 실시예에 따라 컴퓨터 보안 위협으로부터 보호되는 호스트 시스템의 예시적인 하드웨어 구성을 보여주는 도면.
도 2는 본 발명의 일부 실시예에 따른 보안 저장소 장치의 예시적인 하드웨어 구성을 보여주는 도면.
도 3a는 본 발명의 일부 실시예에 따라 보호되는 호스트 시스템 상에서 실행되는 예시적인 소프트웨어 구성 요소들을 보여주는 도면.
도 3b는 본 발명의 일부 실시예에 따라 대체가능한 소프트웨어 구성 요소들의 세트를 보여주는 도면.
도 4는 본 발명의 일부 실시예에 따라 상기 보안 저장소 장치 내에서 실행되는 예시적인 소프트웨어 구성 요소들을 보여주는 도면.
도 5는 본 발명의 일부 실시예에 따라 도 3a 및 도 3b의 컴퓨터 보안 모듈(computer security module, CSM)에 의해 수행되는 단계들의 예시적인 세트를 보여주는 도면.
도 6은 본 발명의 일부 실시예에 따라 상기 보안 저장소 장치 내에서 실행되는 소프트웨어에 의해 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 7은 본 발명의 일부 실시예에 따라 저장소 시맨틱 맵(storage semantic map)을 유지하기 위하여 상기 보안 저장소 장치 내에서 실행되는 소프트웨어에 의해 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
이하의 설명에서, 구조들 사이에서 언급된 모든 연결들은 직접적인 동작 연결들 또는 매개 구조들을 통한 간접적인 동작 연결들일 수 있는 것으로 이해된다. 구성 요소들의 세트는 하나 이상의 구성 요소를 포함한다. 구성 요소의 임의의 열거는 적어도 하나의 구성 요소를 언급하는 것으로 이해된다. 복수의 구성 요소는 적어도 2개의 구성 요소를 포함한다. 달리 요구되지 않는다면, 기술된 어떠한 방법 단계들도 설명된 특정 순서로 반드시 실행될 필요는 없다. 제2 구성 요소로부터 유도되는 제1 구성 요소(예컨대, 데이터)는 제2 구성 요소와 동일한 제1 구성 요소는 물론, 제2 구성 요소 그리고 선택적으로는 다른 데이터를 처리하는 것에 의해 생성된 제1 구성 요소를 포함한다. 파라미터에 따라 결정 또는 판정하는 것은 파라미터에 따라 그리고 선택적으로는 다른 데이터에 따라 결정 또는 판정하는 것을 포함한다. 달리 구체화되지 않는다면, 일부 수량/데이터의 표시자는 수량/데이터 그 자체, 또는 수량/데이터 그 자체와 상이한 표시자일 수 있다. 컴퓨터 프로그램은 과업을 수행하는 프로세서 명령들의 시퀀스이다. 본 발명의 일부 실시예들에서 설명되는 컴퓨터 프로그램들은 독립형 소프트웨어 개체들 또는 다른 컴퓨터 프로그램들의 서브-개체들(예를 들어, 서브루틴들, 라이브러리들)일 수 있다. 컴퓨터 판독 가능 매체는 자성, 광, 및 반도체 저장 매체와 같은 비-일시적 매체(non-transitory medium)(예컨대, 하드 드라이브, 광 디스크, 플래시 메모리, DRAM)는 물론, 전도성 케이블 및 파이버 옵틱 링크와 같은 통신 링크들을 포함한다. 일부 실시예들에 따르면, 본 발명은, 그 중에서도, 본원에 설명된 방법들을 수행하기 위해 프로그래밍된 하드웨어(예컨대, 하나 이상의 프로세서들)는 물론, 본원에서 설명된 방법들을 수행하기 위한 명령들을 인코딩하는 컴퓨터-판독 가능 매체를 포함하는 컴퓨터 시스템을 제공한다.
후술하는 설명은 본 발명의 실시예들을 예시적으로 설명하는 것이며, 반드시 제한적인 것은 아니다.
도 1은 본 발명의 일부 실시예에 따라 컴퓨터 보안 위협으로부터 보호되는 호스트 시스템(10)의 예시적인 하드웨어 구성을 보여준다. 예시적인 호스트 시스템(10)은 컴퓨터(예를 들어서, 개인용 컴퓨터, 기업용 서버 등), 모바일 컴퓨팅 장치(예를 들어서, 랩탑, 태블릿 PC들), 전기통신 장치(예를 들어서, 스마트폰), 디지털 어플라이언스(TV, 게임 컨솔 등), 웨어러블 컴퓨팅 장치(예를 들어서, 스마트워치) 또는 프로세서와 메모리를 구비하고, 컴퓨터 보안 보호를 필요로 하는 임의의 다른 전자 장치를 포함한다. 단순성을 위하여, 도시된 호스트 시스템은 컴퓨터 시스템이고, 모바일 전화기, 스마트워치 등과 같은 다른 호스트 시스템들의 하드웨어 구성은 도시된 구성과 다소 상이할 수 있다.
호스트 시스템(10)은 하드웨어 프로세서(16) 및 메모리 유닛(18)을 포함하는 물리적 장치들의 세트를 포함한다. 일부 실시예에서, 프로세서(16)는 신호 및/또는 데이터의 세트로 산술 및/또는 논리 연산을 실행하도록 구성된 물리적 장치(예컨대, 반도체 기판에 형성된 멀티-코어 집적 회로, 마이크로프로세서 등)를 포함한다. 일부 실시예에서, 이러한 연산들은 프로세서 명령(예를 들어, 머신 코드 또는 다른 유형의 인코딩(encoding))의 시퀀스 형태로 프로세서(16)에 전달된다. 메모리 유닛(18)은 프로세서(16)에 의해 액세스되거나 생성되는 데이터 및/또는 명령들을 저장하는 휘발성 컴퓨터-판독 가능 매체(예컨대, DRAM, SRAM)를 포함할 수 있다.
입력 장치(20)는 사용자가 호스트 시스템(10)으로 데이터 및/또는 명령들을 도입할 수 있게 하는 장치와, 그러한 도입을 가능하게 하는 각각의 하드웨어 인터페이스 및/또는 어댑터를 포함할 수 있다. 예시적인 입력 장치는 특히 버튼, 키보드, 마우스, 조이스틱, 터치스크린, 마이크로폰, 카메라, 게임 컨트롤러, 제스처 감지 시스템(gesture detection system) 및 모션 감지 센서를 포함한다. 출력 장치(22)는 특히 모니터와 같은 디스플레이 장치 및 스피커는 물론, 호스트 시스템(10)이 사용자에게 데이터를 통신하게 할 수 있는 그래픽 카드와 같은 하드웨어 인터페이스/어댑터를 포함할 수 있다. 일부 실시예에서, 입력 장치(20)와 출력 장치(22)는 터치-스크린 장치들의 경우와 같이, 하드웨어의 공통적인 부품을 공유할 수 있다. 네트워크 어댑터(들)(26)은 LAN(local area network)과 같은 통신 네트워크에 그리고/또는 다른 장치/컴퓨터 시스템에 호스트 시스템(10)이 연결될 수 있게 한다.
보안 저장소 장치(24)는 소프트웨어 명령들 및/또는 기타 데이터의 비휘발성 저장, 판독, 및 기록을 가능하게 하는 컴퓨터-판독 가능 매체를 포함한다. 예시적인 저장소 장치(24)는 자기, 광, 및 플래시 메모리 장치들은 물론, CD 및/또는 DVD 디스크들 및 드라이브들과 같은 소거 가능 매체를 포함한다. 일부 실시예에서, 보안 저장소 장치(24)는 이하에 상세히 나타낸 바와 같이 저장된 데이터의 보안을 향상시키도록 특별히 구성된 다른 하드웨어 및 소프트웨어 구성 요소를 구비한다.
일부 실시예에서, 컨트롤러 허브(28)는 프로세서(16)와 장치(18, 20, 22, 24 및 26)들 사이의 통신을 가능하게 하는 복수의 시스템, 주변, 및/또는 칩셋 버스들, 및/또는 다른 모든 회로망을 포함한다. 컨트롤러 허브(28)의 예시적인 구성 요소는 메모리 컨트롤러, 입력/출력(I/O) 컨트롤러, 및 인터럽트 컨트롤러(interrupt controller)를 포함한다. 하드웨어 제조사 및 장치에 따라서, 이러한 컨트롤러의 일부 또는 전부는 단일 집적 회로로 통합될 수 있고, 그리고/또는 프로세서(16)와 통합될 수 있다. 일부 실시예에서, 출력 장치(22)의 일부를 형성하는 그래픽 어댑터와 같은 일부 다른 장치는 또한 프로세서(16)와 통합될 수 있다.
도 2는 본 발명의 일부 실시예에 따른 보안 저장소 장치(24)의 예시적인 하드웨어 구성을 보여준다. 일부 실시예는 종래의 저장소 장치 - 1차 저장소(primary storage)(30)(예를 들어, 자기 또는 솔리드 스테이트 드라이브(magnetic or solid state drive))를 호스트(10)의 1차 프로세서로부터 분리된 전용 보안 프로세서(116)와 페어링(pairing)함으로써 악성 소프트웨어에 의해 야기되는 위험을 완화시킨다. 이 보조 프로세서는 종래의 하드 드라이브 폼 팩터를 가정하는 일반적인 인쇄 회로 기판 상에 저장소 유닛 및/또는 추가적인 하드웨어와 통합될 수 있다. 다른 예시적인 실시예에서, 보안 저장소 장치(24)는 외부 대용량 저장소 장치(예를 들어, 플래시 드라이브, 외부 하드 드라이브)로서 패키지 될 수 있고, 이는 범용 직렬 버스(USB) 또는 Thunderbolt® 인터페이스/커넥터와 같은 종래의 인터페이스를 통해 호스트 시스템에 연결될 수 있다.
1차 저장소(30)는 호스트 시스템(10)을 위한 사실상의 저장소 장치로서 작용할 수 있다. 그러므로, 1차 저장소(30)는 문서, 이미지, 사운드 파일 등과 같은 사용자의 데이터 뿐만 아니라 호스트 프로세서(16) 상에서 실행되는 다른 소프트웨어 어플리케이션 및/또는 운영 시스템(operating system)에 속하는 코드 및/또는 데이터를 저장할 수 있다.
보안 프로세서(116)는 신호 및/또는 데이터의 세트로 수리 및/또는 논리 연산을 수행하도록 구성된 물리적 전자 회로(예컨대, 반도체 기판에 형성된 집적 회로)를 포함한다. 일부 실시예에서, 프로세서(116)는 개인용 컴퓨터 및/또는 모바일 전화기에서 중앙 처리 장치(central processing unit, CPU)로서 사용되는 유형의 다목적, 범용 마이크로프로세서이다. 이러한 프로세서의 예로는 Intel®, AMD®, 및 ARM®과 같은 제조사의 기존 프로세서가 있다. 선택적인 실시예에서, 프로세서(116)는 커스터마이징된 전자 회로, 예컨대 주문형 집적 회로(application-specific integrated circuit, ASIC) 또는 필드 프로그래머블 게이트 어레이(field-programmable gate array, FPGA)를 포함한다. 프로세서(116)의 다른 실시예로는 그래픽 처리 장치(graphics processing unit, GPU) 또는 앞서 언급된 것들의 조합을 포함한다. 이러한 특화된 프로세서를 사용하는 것은 이들의 아키텍쳐가 병렬 연산(parallel computation) 및 특정의 특화된 과업을 위해 특별히 제작되고 최적화될 수 있다는 점에서 유리할 수 있다. 병렬, 특수화된 아키텍쳐는 이하에서 더 설명되는 바와 같이 암호화/복호화와 같은 어플리케이션(application, 응용 프로그램)에 도움이 될 수 있다.
보안 저장소 장치(24)의 추가적인 하드웨어 구성 요소는 프로세서(116)에 의해 액세스되거나 생성되는 데이터 및/또는 명령들을 저장하기 위한 휘발성 컴퓨터-판독가능 매체(예컨대, DRAM, SRAM)를 제공하는 보안 메모리(118)를 포함할 수 있다. 장치(24)는 장치(24)의 하드웨어 구성 요소를 상호 연결하는 버스 및/또는 다른 모든 회로망을 일반적으로 나타내는 보안 컨트롤러(34)를 더 포함할 수 있다. 보안 저장소 장치(24)는 저장소 인터페이스(36)(예를 들어, 직렬 ATA(Serial AT Attachment, SATA) 또는 PCI Express 인터페이스 및/또는 커넥터)를 거쳐 호스트 시스템(10)의 컨트롤러 허브(28)에 추가적으로 연결될 수 있다.
일부 실시예에서, 보안 저장소 장치(24)는 비휘발성 컴퓨터-판독 가능 매체를 포함하는 2차 저장소 장치(32)를 더 포함할 수 있다. 일부 실시예에서, 1차 저장소(30) 및 2차 저장소(32)는 단일 물리적 대용량 저장소 장치 - 자기, 광, 또는 솔리드 스테이트 드라이브의 특징적 논리 파티션(distinct logical partition)으로서 구현된다. 2차 저장소(32)는 프로세서(16) 상에서 실행되는 소프트웨어에는 보이지 않을 수 있고, 보조 보안 프로세서(116) 상에서 실행되는 소프트웨어에만 액세스 가능할 수 있다. 이러한 격리는 호스트 프로세서(16)에게 제한된 범위의 저장소 주소를 노출시키도록 구성된 하드웨어 논리(보안 컨트롤러(34)의 회로)를 사용하여 달성될 수 있다.
2차 저장소(32)는 특히 멀웨어를 나타내는 시그니쳐와 같은 데이터 및 보안 코드를 저장하는데 사용될 수 있다. 2차 저장소(32)는 기동(부팅, boot-up) 시 프로세서(116)에 의해 실행될 코드를 추가로 저장할 수 있다. 보안 저장소 장치(24)의 일부 실시예는 이하에서 보다 상세히 보여지는 바와 같이, 파일 시스템 시맨틱 맵의 인코딩을 저장하기 위해 2차 저장소(32)를 사용한다. 저장소(32)의 다른 실시예는 1차 저장소(30)에 저장된 데이터의 부분 사본(예를 들어, 백업)를 저장할 수 있다.
일부 실시예에서, 1차 저장소(30) 및 2차 저장소(32)는 위치 표시자(주소)들의 세트를 통해 주소 지정이 가능하다. 구현에 따라, 저장소(30, 32)는 개별적인 주소 지정 가능 유닛으로, 예를 들어서 섹터, 블록, 및/또는 클러스터로 분할될 수 있다.
도 3a는 본 발명의 일부 실시예에 따라 호스트 프로세서(16) 상에서 실행되는 예시적인 소프트웨어 구성 요소들을 보여준다. 운영 시스템(OS)(40)은 호스트 시스템(10)의 하드웨어와 어플리케이션(41a-b)들과 같은 다른 소프트웨어 사이에 인터페이스를 제공하는 컴퓨터 프로그램들의 세트를 포함한다. OS(40)는 특히 Windows®, MacOS®, Linux®, iOS®, 또는 Android®와 같은 널리 이용가능한 임의의 운영 시스템을 포함할 수 있다. 어플리케이션(41a-b)들은 특히 워드 프로세서, 스프레드시트 어플리케이션, 이미지 어플리케이션, 게임, 브라우저 및 전자 통신 어플리케이션을 포함하는 임의의 컴퓨터 프로그램을 일반적으로 나타낸다.
본 발명의 일부 실시예는 멀웨어로부터 호스트 시스템(10)을 보호하는 소프트웨어를 포함하는 컴퓨터 보안 모듈(computer security module, CSM)(44)을 추가적으로 포함한다. CSM(44)은, 예를 들어, 악성 소프트웨어를 탐지하기 위한 컴퓨터 프로그램 및/또는 그러한 소프트웨어를 불능화시키기 위한 컴퓨터 프로그램을 포함할 수 있다. 일부 실시예에서, CSM(44)은 OS(40)와 보안 저장소 장치(24) 사이의 인터페이스로서 작동하는 저장소 매개체 구성 요소(42)를 더 포함한다. 예시적인 저장소 매개체(42)는 1차 저장소(30)로부터의/로의 데이터의 읽기 및 쓰기를 가능하게 하는 저장소 드라이버로서 작동할 수 있다. 저장소 매개체(42)는 이하에서 보다 상세히 보여지는 바와 같이 보안 프로세서(116) 상에서 실행되는 소프트웨어와 메시지 및/또는 데이터를 교환하도록 추가적으로 구성될 수 있다.
도 3b는 하드웨어 가상화 환경에서, 예를 들어, 클라우드 컴퓨팅 어플리케이션에서 작동하는 대체가능한 실시예를 보여준다. 가상 머신(virtual machine, VM)은 실제 물리적 머신/컴퓨터 시스템의 모방(emulation, 에뮬레이션)을 설명하기 위해 본 기술분야에서 사용되는 용어로, 상기 VM은 운영 시스템 및 기타 어플리케이션을 실행할 수 있다. 하이퍼바이저는 가상 프로세서 및 가상 MMU와 같은 복수의 가상화된 장치들을 생성하거나 사용가능하게 하고, 호스트 시스템(10)의 실제의 물리적인 장치들을 대신하여 그러한 가상화된 장치들을 소프트웨어에 제공하도록 구성된 소프트웨어를 포함한다. 그러한 동작들은 통상적으로 가상 머신 노출로 알려져 있다. 하이퍼바이저는 다수의 가상 머신들에 의해 호스트 시스템(10)의 하드웨어 리소스들의 공유가 가능하게 할 수 있고, 그리고 각각의 VM이 독립적으로 작동하고 개별적인 호스트 상에서 동시에 실행되는 다른 VM들을 알지 못하도록 이러한 멀티플렉싱을 추가적으로 관리할 수 있다. 유명한 하이퍼바이저의 예로는, 특히 VMware Inc.의 VMware vSphere™ 및 오픈 소스 Xen 하이퍼바이저가 있다. 본 명세서에서, 소프트웨어는 이들이 개별적인 가상 머신의 가상 프로세서 상에서 실행될 때 가상 머신 내에서 실행된다고 지칭된다.
도 3b에 도시된 예시적인 구성에서, 하이퍼바이저(46)는 게스트 VM(48a)을 노출시킨다. 운영 시스템 및 사용자 어플리케이션들의 세트는 게스트 가상 머신(48a) 내에서 실행되는 반면, CSM(44)은 게스트 VM(48a)으로부터 분리된 전용 보안 가상 머신(48b) 내에서 실행된다. 도 3b에 대한 선택적인 실시예에서, CSM(44) 및/또는 저장소 매개체(42)는 하이퍼바이저(46)에 의해 로딩/호출되는 라이브러리들의 세트를 포함할 수 있다. 그러므로, CSM(44) 및/또는 저장소 매개체(42)는 하이퍼바이저(46)의 프로세서 권한 레벨(processor privilege level)(예를 들어서, 링 -1 또는 Intel® 플랫폼들 상의 VMXroot)에서, 게스트 VM(48a) 아래에서 실행될 수 있다. 도 3b에 도시된 것과 같은 구성은 향상된 보안으로 인해 도 3a에 도시된 것 보다 바람직할 수 있다. 게스트 VM(48a)과 보안 VM(48b)의 가상 환경은 서로로부터 비교적 잘 분리될 수 있고, 따라서 게스트 VM(48a) 내에서 실행되는 악성 소프트웨어가 보안 VM(48b) 내에서 실행되는 소프트웨어를 감염시키거나 또는 그렇지 않으면 간섭할 수 없다.
도 4는 본 발명의 일부 실시예에 따라 보안 저장소 장치(24) 내에서(즉, 프로세서(116) 상에서) 실행되는 소프트웨어 구성 요소들의 예시적인 세트를 보여준다. 도시된 소프트웨어는 저장소 보안 에이전트(50) 및 암호화 엔진(cryptographic engine)(52)을 포함한다. 에이전트(50)는 1차 저장소(30)의 파일 시스템 시맨틱 맵을 유지하고, 1차 저장소(30)에 액세스하려는 호스트 프로세서(16) 상에서 실행되는 소프트웨어에 의한 요청이 컴퓨터 보안 위협을 나타내는지 여부를 결정하기 위해 휴리스틱(heuristic)(예를 들어, 결정 규칙)들의 세트를 적용하도록 구성될 수 있다. 엔진(52)은 1차 저장소(30)로 오는 그리고/또는 1차 저장소(30)로부터 오는 데이터 패킷에 대해 암호화 및/또는 복호화 동작을 수행하도록 구성될 수 있다. 구성 요소들(50 및 52)의 동작은 이하에서 상술될 것이다.
일부 실시예에서, CSM(44)은, 예를 들어서 저장소 매개체(42)에 의해 관리되는 통신 채널을 통해 통지/신호를 교환함으로써, 보안 저장소 장치(24) 내에서 실행되는 소프트웨어(예컨대, 보안 에이전트(50))와 협력한다. 프로세서(16)로부터 보안 저장소 장치(24)로의 예시적인 통지(본 출원서에서 다운링크(downlink) 통지로 칭함)는 프로세서(116)에 의해 수행될 동작의 표시자 및 파일명, 암호화 키, 플래그들의 세트 등과 같은 기타 데이터를 포함한다. 이하에서 더 상술되는 바와 같이, CSM(44)은 또한 특정 보안 관련 이벤트에 응답하여 다운링크 통지를 전송할 수 있다.
예시적인 통신 채널은 프로세서와 대용량 저장소 유닛 사이에 데이터를 전송하는 규칙적인 수단을 사용할 수 있다. 예를 들어, CSM(44) 및 보안 에이전트(50)는 직렬 ATA 또는 소형 컴퓨터 시스템 인터페이스(small computer system interface, SCSI) 프로토콜과 같은 저장소 전송 프로토콜에 따라 메시지를 교환할 수 있다. 상기 저장소 전송 프로토콜은 저장소 인터페이스를 통한 통신의 형식(format, 포맷), 프레임/패킷의 크기 및 콘텐트, 헤더 및/또는 페이로드의 수, 크기, 순서 및/또는 형식, 다양한 컨트롤 비트 및 데이터 필드의 중요성, 커맨드(command)의 인코딩 등을 설정한다.
일부 실시예에서, 다운링크 통지는 더미 액세스 요청(dummy access request)으로 위장된다. 본 명세서에서 더미 액세스 요청은 통신 프로토콜에 따라 적절하게 포맷(format, 형식화)되었지만(예컨대, 잘 구성된 SATA 커맨드), 통지로서 해석되는 대신 그렇게 수행되지는 않는 것으로 여겨지는 저장소 액세스 요청을 지칭한다. 용어 "더미(dummy, 무의미)"는 그렇게 수행될 것으로 의도된 저장소 액세스 동작을 나타내는 "트루(true)" 또는 "진정한(genuine)" 저장소 액세스 요청으로부터 상기 요청을 구별하기 위해 사용된다.
일부 실시예에서, 더미 요청은 유효하지 않은 저장소 액세스 요청이고, 이러한 점에서 하나의 이러한 더미 요청을 실행하면 예외/오류가 발생한다. 이러한 경우, 오류 핸들러(fault handler)는 개별적인 오류를 인터셉트하고, 상기 개별적인 오류를 야기하는 요청을 다운링크 통지로서 결정할 수 있다. 다른 실시예에서, 더미 요청은 그 자체에 오류가 있는 것은 아니나, 파라미터 값(플래그)들의 특정한, 비정상적인, 또는 모순적인 조합을 포함할 수 있다. 또 다른 실시예에서, 더미 요청은 유효한, 통상적인 요청을 포함할 수 있고; 이러한 더미 요청은 예를 들어 저장소 통신 프로토콜에 의해 정의된 기타 데이터 필드의 또는 페이로드의 콘텐트에 따라서와 같이 식별될 수 있다.
더미 액세스 요청의 일 예는 범위 외(out-of-range) 주소, 즉 1차 저장소(30)의 정상적인 주소 지정가능 범위 밖의 주소에 액세스 하기 위한 요청을 포함한다. 예로는 '블록 B 읽기' 또는 '주소 A에서 페이로드 P 쓰기'를 포함하며, 이때 상기 블록 B의 주소 및 주소 A는 1차 저장소(30)의 정상적인 주소 지정가능 범위 밖에 있다. 각각의 이러한 주소(A 및/또는 B의 특정 값)는 보안 저장소 장치(24) 내부에서 실행되는 소프트웨어에 통신되는 특정 명령 또는 이벤트에 대응할 수 있다. 다른 실시예에서, 다운링크 통지는 정상적인 주소 지정가능 범위 내에 있지만, 정상적인 작동 중에 일반적으로는 액세스되지 않는 주소에서 저장소에 액세스하기 위한 요청으로서 위장될 수 있다. 예를 들어서, 마스터 부트 레코드(master boot record, MBR) 또는 중요 OS 구성 요소(예컨대, Windows®의 NTOSKRNL.EXE)를 현재 보유하고 있는 저장소 위치에 대한 쓰기 요청은 보안 저장소 장치(24)에 의해 인터셉트될 수 있고 CSM(44)로부터 다운링크 통지로서 해석될 수 있다.
또 다른 예에서, 더미 액세스 요청은 특정 페이로드 콘텐트(예컨대, 특정 비트 패턴 또는 시그니쳐)에 따라 식별될 수 있다. 이러한 실시예에서, 보안 프로세서(116) 상에서 실행되는 소프트웨어 구성 요소는 더미 액세스 요청을 탐지하기 위해 페이로드 콘텐트를 분석(parse)할 수 있다. 다양한 페이로드 P는 보안 저장소 장치(24)로의 다양한 통지/명령에 대응할 수 있다.
또 다른 예에서, 더미 액세스 요청은 이를 테면 저장소 통신 프로토콜에 의해 정의되는 또 다른 데이터 필드의 콘텐트에 따라, 예를 들어, 직렬 ATA 프로토콜에서 특정된 '커맨드(Command)' 및/또는 '보조(Auxiliary)' 필드의 콘텐트에 따라 식별될 수 있다. 그러한 일 예에서, 멀웨어 시그니쳐를 업데이트 하는 커맨드는 CSM(44)에 의해 발행된 더미 액세스 요청의 '커맨드' 필드로 인코딩 될 수 있다. 실제 시그니쳐는 또 다른 더미 액세스 요청의 페이로드로서 전송될 수 있다.
다운링크 통지의 몇몇 다른 예는 특정 저장소 위치에서 저장된 데이터를 스캔하기 위한 명령을 포함한다: 개별적인 위치는 더미 액세스 요청의 페이로드 내로 인코딩 될 수 있다. 또 다른 예에서, 특징적인(distinct) 주소 A를 포함하는 더미 쓰기 요청은 특징적인 안티 멀웨어 방법 또는 파라미터를 나타낼 수 있다. 각각의 주소 또는 주소 A의 범위는 특징적인 휴리스틱 또는 멀웨어를 나타내는 시그니쳐들의 특징적인 그룹을 나타낼 수 있다.
따라서, 저장소 매개체(42)는 다운링크 통지에 대한 응답(acknowledgement) 및/또는 다른 형태의 반응(response)을 통해, 예를 들어, 하드웨어 인터럽트 - IRQ 또는 장치(24)에 의해 전송되고, 저장소 매개체(42)에 의해 그리고/또는 OS(40)의 다른 이벤트 핸들러에 처리되는 비동기식(asynchronous) SATA 통지를 통해, 장치(24)로부터 통지/신호(본 출원서에서 업링크(uplink) 통지로 칭함)를 수신할 수 있다. 예시적인 업링크 통지는, 특히 보안 경고, 예를 들어 가능한 랜섬웨어 공격의 표시자 및 저장소 장치(24)의 펌웨어 업데이트 시도의 표시자를 포함한다.
또 다른 예시적인 업링크 통지는 암호 키에 대한 요청을 포함한다. 그러한 일 예에서, 보안 에이전트(50)는 암호화된 데이터 패킷을 기록하려는 시도를 탐지할 수 있다. 그러한 시도는 디스크 데이터의 자동 암호화가 활성화되었음을 나타낼 수 있다(예를 들어, Microsoft®의 Bitlocker® 기술). 응답하여, 일부 실시예는 CSM(44)으로부터 암호 키를 요청할 수 있다. 이 방법의 보다 상세한 내용은 이하에서 추가로 제공된다.
일부 실시예는 다운링크-업링크 통지의 시퀀스를 사용하여 반복적인 멀웨어 탐지 버전을 구현한다. 이러한 일 예에서, 다운링크 통지는 저장소 보안 에이전트(50)에게 멀웨어에 대해 특정 파일을 스캔하도록 지시한다. 그러고 나서 에이전트(50)는 스캔 결과를 CSM(44)에 통신할 수 있고, 이는 제1 스캔 결과에 따라 다른 파일 또는 폴더를 선택할 수 있고, 새로운 다운링크 통지 등을 통해 보안 에이전트(50)에 새로운 스캔 타겟을 통신할 수 있다. 이러한 반복적인 스킴(scheme, 구성)은 보안 저장소 장치(24) 상에 복잡한 소프트웨어를 설치해야 하는 상당히 복잡한 멀웨어 탐지 절차를 가능하게 할 수 있다.
도 5는 본 발명의 일부 실시예에 따라 CSM(44)에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다. CSM(44)은 호스트 시스템(10) 내의 복수의 소스들로부터 보안 관련 데이터를 수집할 수 있고, 소프트웨어의 실행 동안 특정 이벤트의 발생에 관한 통지를 수신할 수 있다. 하나의 예시적인 소스는 OS(40)의 시스템 호출 기능이고, 이는 개별적인 시스템 호출이 발생할 때마다 CSM(44)에 신호를 보내도록 후킹(hooking)함으로써 변경될 수 있다. 보안 정보 및 통지의 다른 예시적인 소스는 OS 미니필터를 포함한다. 일부 실시예에서, CSM(44)은 보안 저장소 장치(24)로부터에 대한 업링크 통지를 추가로 수신할 수 있다. 이벤트의 발생을 탐지하는 것에 응답하여, 단계(206)에서 CSM(44)은 호스트 시스템(10)이 현재 공격을 받고 있는지 여부를 결정하기 위해 휴리스틱들의 세트를 적용할 수 있다. 분석이 멀웨어가 의심된다고 밝히는 경우, CSM(44)은 예를 들어 악성 프로세스의 실행을 차단하거나 또는 그렇지 않으면 방지하고 호스트 시스템(10)의 사용자 또는 관리자에게 경고하는 것과 같은 적절한 안티-멀웨어 조치를 취할 수 있다(단계 212-214). 일부 탐지된 이벤트는 보안 저장소 장치(24)에 다운링크 통지를 보장(warrant)한다. 이러한 일 예에서, CSM(44)은 보안 에이전트(50)로 하여금 저장소 액세스 시도의 조사를 수행하도록 지시할 수 있다. 다운링크 통지는 도 5에 단계들(208-210)로 도시되어 있다.
일부 실시예에서, 저장소 보안 에이전트(50)는 OS(40)의 파일 시스템과 독립적인 방식으로, 저장소(30)에 저장된 메타데이터로부터 OS(40)에 의해 사용되는 파일 시스템의 시맨틱을 재생성한다. 달리 말하면, 에이전트(50)는 OS(40)의 파일 시스템의 대안 또는 섀도에 해당하는 파일 시스템 시맨틱 지식베이스(knowledgebase)를 유지한다. 종래의 컴퓨터 시스템에서, 하드웨어 레벨에서 데이터는 시맨틱 정보가 없는 블록으로서 저장된다. 예를 들어서, 어떤 데이터의 청크가 어느 파일/폴더에 속하는지 명확하지 않다. 더 복잡한 문제는 단일 파일의 데이터가 연속적으로 저장되지 않고, 저장소 매체 전체에 걸쳐 여러 위치에 분산되어 있는 단편화(fragmentation)이다. 자산을 저장소 위치와 연관시키고, 하드웨어 레벨 정보를 의미있는 데이터로 변환하는 부기(bookkeeping) 작업은 일반적으로 OS에 의해 수행된다. OS는 메타데이터로 인코딩되고 저장소 매체의 특정 섹션 내에 저장되는, 파일 시스템으로 알려진 특수한 데이터 구조를 유지함으로써 이러한 과업을 관리한다. 예시적인 파일 시스템은 특히 FAT, FAT32, 및 NTFS를 포함한다.
일부 실시예에서, 파일 시스템 시맨틱 맵은 1차 저장소(30)의 섹션과 OS(40)의 파일 시스템의 항목(item) 사이의 맵핑의 인코딩을 포함한다. 예시적인 파일 시스템 항목은 디렉터리(directory) 및 파일을 포함한다. 예시적인 시맨틱 맵 항목은 주소 [A1 A2]의 범위를 파일 F(여기서 F는 경로, 예를 들어, C:\user\docs\Letter.txt 또는 /home/user/docs/Letter.txt로 표현될 수 있음)와 연관시킨다. 이러한 연관은 개별적인 주소의 범위에 저장된 데이터가 파일 F의 일부를 형성한다는 것을 효과적으로 나타낸다. 다른 예시적인 파일 시스템 시맨틱 맵 항목은 주소 [A3 A4]의 범위가 파일 시스템 메타데이터를 저장한다는 것을 특정한다. 또 다른 예시적인 파일 시스템 시맨틱 맵 항목은 각각의 주소 지정가능 유닛(예를 들어, 주소 범위가 아닌 저장소 블록 또는 섹터)을 파일 시스템 항목과 연관시킨다. 시맨틱 맵 데이터는 본 기술분야에 알려져 있는 임의의 방법을 사용하여, 예를 들어 비트맵, 연결 목록(linked list) 등으로서 인코딩 될 수 있다.
도 6은 본 발명의 일부 실시예에 따라 저장소 보안 에이전트(50)에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다. 에이전트(50)는 저장소 인터페이스(36)를 통해 OS(40)로부터 저장소 액세스 요청을 수신한다. 일반적인 요청은 동작(읽기, 쓰기)의 표시자, 주소의 표시자, 및 페이로드를 포함한다. 예시적인 저장소 액세스 요청은 "주소 A에서 N 바이트의 블록 읽기" 및 "주소 A에서 페이로드 P 쓰기"의 시맨틱을 갖는다. 액세스 요청은 개별적인 요청의 파라미터 값(예컨대, 플래그, 속성)들의 세트를 추가적으로 포함할 수 있다. 저장소 액세스 요청의 실제 포맷 및 인코딩은 하드웨어 및 소프트웨어 구현 사이에서 변화될 수 있다.
액세스 요청이 디바이스(24)에 도달하는 경우, 에이전트(50)는 요청의 파라미터에 따라 상기 개별적인 요청이 트루 저장소 액세스 또는 더미 저장소 액세스(즉, CSM(44)으로부터의 통지)를 나타내는지 여부를 결정할 수 있다. 예시적인 일 실시예에서, 범위 밖의 주소에 액세스하기 위한 요청은 그러한 통지를 나타낼 수 있다. 상기 개별적인 액세스 요청이 다운링크 통지를 포함하는 경우, 단계(236)는 상기 개별적인 요청의 파라미터에 따라 특정 동작을 선택하고 수행할 수 있다(이하의 일부 예 참조).
단계들(228-230)의 시퀀스에서, 보안 에이전트(50)는 시맨틱 맵에 따라 개별적인 저장소 액세스 요청의 시맨틱을 추가적으로 디코딩(decode) 할 수 있다. 예를 들어서, 에이전트(50)는 기록되고 있는 것이 메타데이터인지 또는 실제 파일인지, 새 파일이 생성되고 있는지, 어떤 특정 파일이 현재 기록되거나 판독되고 있는지 등을 결정할 수 있다. 추가적인 단계(232)는 요청된 액세스가 컴퓨터 보안 위협을 나타내는지 여부를 결정하기 위해 액세스 휴리스틱들의 세트를 적용할 수 있다. '아니오'인 경우, 에이전트(50)는 상기 개별적인 액세스가 진행되도록 허용할 수 있다. 휴리스틱이 상기 요청된 액세스 요청이 컴퓨터 보안 모듈(44)에 통지하는 것을 인가(warrant)한다는 것을 나타내는 경우, 에이전트(50)는 보안 경고에 해당하는 업링크 통지를 수행할 수 있다.
도 7은 파일 시스템 시맨틱 맵을 유지하기 위하여 저장소 보안 에이전트(50)에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다. 맵 생성은, 예를 들어, 부팅시에 개시될 수 있다. 일부 실시예에서, 에이전트(50)는 OS(40)에 의해 사용되는 파일 시스템 메타데이터가 저장되는 1차 저장소(30) 상의 위치를 결정할 수 있다. 이를 달성하기 위한 여러가지 방법들이 컴퓨터 포렌식(forensic) 기술 분야에 알려져 있다. 일부 실시예는 파일 시스템 데이터의 위치를 결정하기 위하여 호스트 상에서 실행되는 소프트웨어 구성 요소(예를 들어, CSM(44))를 사용한다. 그러고 나서 CSM(44)은 다운링크 통지를 사용하여 개별적인 위치를 보안 에이전트(50)에 통신할 수 있다.
단계들(254-256)의 시퀀스에서, 에이전트(50)는 1차 저장소(30) 내에 저장된 파일 시스템 메타데이터를 분석하고, 상기 개별적인 메타데이터에 따라서 시맨틱 맵을 조립한다. 일부 실시예는 결정된 시맨틱 맵 데이터(즉, 섀도 파일 시스템)을 보안 메모리(118) 및/또는 2차 저장소(32) 내에 저장한다. 그러고 나서, 프로세서(16)에서 소프트웨어의 실행 중에, 에이전트(50)는 저장소 액세스 요청에 주목(listen for) 할 수 있고, 그러한 요청이 메타데이터에서 변경을 나타내는지 여부를 결정할 수 있다(예를 들어서, 파일/디렉터리 생성 또는 삭제). '예'인 경우, 에이전트(50)는 그에 따라 상기 시맨틱 맵을 업데이트 할 수 있다(도 7의 단계들 260-262-264).
도시된 통지 및 휴리스틱의 시스템은 다양한 적용예에 사용될 수 있으며, 이들의 일부 예가 이하에서 제공된다.
하드웨어를 보호하기 위한 커맨드 필터링
면밀히 제조된 악성 소프트웨어는 저장소 장치의 펌웨어를 은밀히(surreptitiously) 업데이트 하기 위하여 ATA 커맨드 세트의 특정 기능(예를 들어서, DOWNLOAD MICROCODE 커맨드)을 악용할 수 있고, 그렇게 함으로써 하드웨어 레벨 멀웨어를 상기 장치 자체에 도입할 수 있다. 하나의 이러한 예시적인 멀웨어는 백도어(backdoor)이고, 이는 개별적인 저장소 장치를 제어하고 그리고/또는 이의 행동을 변경시키기 위하여 호스트 상에서 실행되는 소프트웨어에 의해 사용될 수 있다.
이러한 선진 공격을 방지하기 위해, 일부 실시예에서 저장소 보안 에이전트(50)는 저장소 인터페이스(36)를 통해 수신한 저장소 액세스 요청을 필터링하도록 구성된다. 필터링 규칙은 예를 들어서, 가장 일반적인 액세스 요청(예컨대, 장치 읽기, 쓰기, 식별을 위한 커맨드 등)의 실행만을 허용하고, 다른 모든 커맨드/요청을 차단하는 것처럼 기본적인 것일 수 있다. 다른 실시예는 보다 정교한 필터링 휴리스틱, 예를 들어서 현재 컨텍스트에 적용된 필터링 규칙을 구현할 수 있다. 다른 예에서, 보안 에이전트(50)는 호스트 시스템(10)의 관리자로부터 명백한 확인시, 특정 ATA 커맨드/액세스 요청의 실행을 조정(condition)할 수 있다.
일부 실시예에서, 특정 커맨드/요청은 차단되지 않지만 대신에 보안 프로세서(116) 상에서 실행되는 소프트웨어에 의해(예컨대, 보안 에이전트(50)에 의해) 에뮬레이트되고 추가적으로 분석된다. 이러한 커맨드를 수신하는 것에 응답하여, 보안 소프트웨어는, 호스트 프로세서(16) 상에서 실행되는 소프트웨어가 개별적인 커맨드/액세스 요청이 성공적으로 수행되었다고 믿도록 속이기 위해, 인공 응답을 리턴할 수 있다. 보안 에이전트(50)는 안티 멀웨어 연구를 돕기 위하여 이러한 커맨드들을 추가적으로 기록(log) 할 수 있다.
하드웨어 레벨에서 이벤트 중간차단(interception) 및 해석
시맨틱 맵(섀도 파일 시스템)을 유지하는 것은 저장소 보안 에이전트(50)로 하여금, 액세스 요청을 수신하는 것에 응답하여, 프로세서(16) 상에서 소프트웨어의 실행 중에 발생하는 보안 관련 이벤트들을 탐지할 수 있게 한다. 예를 들어서, 쓰기 요청에 응답하여, 에이전트(50)는 기록되고 있는 것이 메타데이터인지 또는 파일의 실제 콘텐트인지, 개별적인 쓰기가 비어있는 저장소 섹션으로 향하는 것인지 또는 기존의 정보를 덮어쓰기 하는 것인지, 개별적인 쓰기가 진정한 쓰기(genuine write)인지 또는 프로세서(16)로부터의 다운링크 통지인지 등을 결정할 수 있다.
파일 생성, 파일 삭제 및 파일 다시 쓰기(rewrite)와 같은 파일 시스템 이벤트는 이벤트 특이적 동작 시퀀스에 따라 수행된다. 예시적인 패턴은 메타데이터 읽기, 이어서 메타데이터 쓰기, 이어서 페이로드 쓰기를 포함할 수 있다. 에이전트(50)는 각각의 파일 시스템 이벤트의 유형을 식별하기 위해, 이러한 패턴을 인코딩하는 휴리스틱들의 세트를 사용할 수 있다. 또한, 에이전트(50)는 각각의 읽기/쓰기 동작의 타겟, 예를 들면 어느 파일에 기록되고 있는지, 어느 파일이 읽히고 있는지를 식별할 수 있다.
종래의 컴퓨터 보안 시스템/방법과는 대조적으로, 이러한 이벤트 중간 차단은 프로세서(16) 상에서 실행되는 소프트웨어에 관한 지식 없이도 실질적으로(virtually) 일어난다. 따라서, 악성 소프트웨어는 이벤트 탐지를 방지하지 못하거나 또는 그렇지 않으면 간섭하지 못할 수 있다. 그러고 나서, 에이전트(50)와 같은 보안 소프트웨어는 업링크 통지를 사용하여 CSM(44)에 보안과 관련있는 것으로 간주되는 특정 이벤트의 발생을 통지할 수 있다.
액세스 기반 멀웨어 스캐닝(On-access malware scanning)
보안 에이전트(50)는 파일을 열기 위한 시도 및/또는 실행가능한 파일을 실행하기 위한 시도를 탐지할 수 있다. 이러한 방식으로 탐지될 수 있는 다른 동작은 파일 추가(append) 및 후속 쓰기를 위한 저장소의 할당을 포함한다. 각각의 이러한 이벤트는 개별적인 저장소 액세스를 지시한 프로세스에 속하는 개별적인 파일의 스캔 또는 리소스(메인 실행 파일(main executable), 라이브러리 등)의 스캔을 시작하도록 하는 트리거(trigger)로서 사용될 수 있다. 스캔은 저장소 액세스 요청을 발행한 프로세스가 중단된 동안 수행되거나, 또는 개별적인 프로세스가 계속 실행되도록 허용되는 동안 오프라인(offline)으로 수행될 수 있다.
스캔은 컴퓨터 보안 기술 분야에서 알려진 임의의 방법에 따라서, 예를 들어, 개별 파일의 콘텐트를 멀웨어를 나타내는 시그니쳐 또는 코드 패턴의 라이브러리에 대해 매칭시킴으로써 수행될 수 있다. 이러한 목적을 위해, 멀웨어를 나타내는 시그니쳐의 라이브러리는 2차 저장소(32) 상에 저장될 수 있다. 라이브러리는 정기적인 또는 요청에 의한(on demand) 업데이트를 통해 최신 상태로 유지될 수 있다. 일부 실시예는 다운링크 통지(예를 들어, 더미 저장소 액세스 요청)들의 세트를 통해 보안 저장소 장치(24) 상에서 실행되는 시그니쳐 라이브러리 및/또는 다른 소프트웨어를 업데이트한다.
액세스 기반 스캐닝의 변형에서, 에이전트(50)는 호스트 시스템(10) 및/또는 OS(40)의 부트(boot) 시퀀스를 탐지하기 위해 휴리스틱들의 세트를 사용할 수 있다. 달리 말하면, 저장소 액세스 요청의 시퀀스를 분석함으로써, 에이전트(50)는 호스트 시스템(10)이 현재 부팅 과정에 있다는 것(즉, 하드웨어 및/또는 소프트웨어 초기화)을 결정할 수 있다. 예시적인 부트 시퀀스는 일반적으로 마스터 부트 레코드(master boot record, MBR) 또는 GUID 파티션 테이블(GUID partition table, GPT)로 알려진 데이터 구조를 저장하는 위치로부터의 읽기 요청 시퀀스로 시작된다.
장치 식별(Identify Device)
Read DMA Ext A: 00000000 C: 0001
Read DMA Ext A: 00000000 C: 0001
Read DMA Ext A: 00000001 C: 0001
Read DMA Ext A: E8E088AF C: 0001
Read DMA Ext A: 00000002 C: 0020
Read DMA Ext A: E8E0888F C: 0020
Read DMA Ext A: 00000002 C: 0020
...
OS(40)가 로딩을 시작했음을 나타내는 저장소 액세스 요청의 예시적인 시퀀스가 아래에 도시되어 있다.
장치 식별(Identify Device)
Read FPDMA Queued A: 00000000 C: 0001 T: 04
Read FPDMA Queued A: 00000001 C: 0001 T: 05
Read FPDMA Queued A: 00000002 C: 0020 T: 06
Read FPDMA Queued A: 00000000 C: 0001 T: 07
...
액세스 요청의 부트 시퀀스의 다른 전형적인 특징은 2-5 쓰기 요청의 짧은 시퀀스에 의해 인터럽트 된 읽기 요청의 매우 긴 시퀀스(예를 들어, 2-3000 연속 읽기 요청)를 포함한다. 이러한 패턴은 OS-특이적일 수 있다. 패턴 분석은 부트 프로세스의 다양한 단계를 추론하기 위하여, 연속적인 읽기/쓰기 요청의 수를 주소 정보의 그리고/또는 다른 파라미터 값의 분석과 결합할 수 있다.
일부 실시예는 OS(40)의 초기화를 탐지하기 위해, 액세스 요청 패턴 매칭과 시맨틱 맵 정보를 결합할 수 있다. 이러한 일 예에서, 보안 에이전트(50)는 저장소 액세스 이벤트로부터 직접, 호스트 프로세서(16) 상에서 실행되는 소프트웨어의 유형 및/또는 위치에 관한 정보를 수집하기 위한 반복적인 과정을 수행할 수 있다. 마스터 부트 레코드에 대한 액세스를 탐지함으로써, 에이전트(50)는 파티션 정보를 결정할 수 있다. 그러고 나서, 일련의 읽기 요청이 볼륨 헤더에서 타겟이 된다. 이러한 요청으로부터, 에이전트(50)는 개별 볼륨에 관한 정보를 결정하고 인증(validate)할 수 있다. 그 다음, 에이전트(50)는 부팅시 동반되는 읽기 및/또는 쓰기의 시퀀스에 따라, 중요 OS 파일들(예를 들어, Windows®의 NTOSKRNL.EXE와 같은 초기화시 OS(40)가 로딩하는 리소스들)의 세트의 저장소 위치를 자동으로 식별할 수 있다. 개별 부트 시퀀스는 또한 운영 시스템의 유형(예를 들어, OS(40)의 메이크(make), 버전 등)을 나타낼 수 있다.
그러고 나서 일부 실시예는, 탐지된 부트/초기화 단계 이후의 시간대 동안(예를 들어, 몇 초) 열려있는 모든 파일을 스캔할 수 있다. 스캐닝은 무결성 검증, 즉 파일의 콘텐트가 예를 들어 악성 소프트웨어에 의해 손상되었는지 여부를 결정하는 것을 포함할 수 있다. 무결성 검증은 개별 파일의 현재 콘텐트의 해시(hash)를 2차 저장소(32) 상에 저장된 기준 해시와 비교하는 것을 포함할 수 있다.
부트 시퀀스와 연관된 또 다른 예시적인 적용예에서, 일부 실시예는 OS(40) 외부에서 실행되고, OS(40)의 무결성 및/또는 신뢰성을 테스트하도록 구성된 에이전트로서 보안 저장소 장치(24)를 사용할 수 있다. 예를 들어, 에이전트(50)는 호스트 시스템(10)을 재부팅(reboot, 리부트)하기 위한 요청을 자동으로 탐지할 수 있다. 그러고 나서, 재부팅이 실제로 진행중이라는 것을 탐지하는 것에 응답하여(예를 들어, 장치 탐지 및 초기화 동작으로부터, 또는 CSM(44)에 의한 다운링크 통지에 응답하여), 에이전트(50)는 정상적인 부트 시퀀스를 중단하고 1차 저장소(30)의 부트 영역 및/또는 OS(40)의 데이터 구조를 스캔하도록 구성된 보안 에이전트 또는 대안 OS(alternative OS)를 노출시킬 수 있다. 스캔이 완료되고 시스템이 안전하다고 간주되는 경우, 에이전트(50)는 OS(40)의 부팅을 재개할 수 있다.
저장된 자산 보호
1차 저장소(30)의 부트 영역은 일반적으로 OS가 로딩되기 전에 판독되는 리소스를 저장한다. 시맨틱 맵을 유지함으로써, 에이전트(50)는 쓰기 요청이 개별 부트 영역을 타겟으로 하고 있는지 여부를 결정할 수 있고, 응답으로, 개별적인 쓰기 및/또는 CSM(44)에 통지를 차단할 수 있다. 유사한 전략이 OS(40) 또는 다른 어플리케이션, 예컨대 특정 파일, 라이브러리 등의 소중한 자산을 보호하기 위해 사용될 수 있다.
암호화된 데이터로 작동
OS(40)의 일부 버전은 1차 저장소(30) 상에 암호화된 형태로 데이터를 유지하기 위한 옵션을 가지고 있다. 그러한 일 예는 Microsoft® Windows®의 Bitlocker® 기능이다. 저장된 데이터가 암호화되는 경우, OS(40) 외부에서 실행되는 엔터티(저장소 보안 에이전트(50) 포함)는 개별 데이터 또는 파일 시스템 시맨틱 맵의 구성을 허용하는 시스템 메타데이터에 대한 접근권을 갖지 못할 수 있다.
그러나, 에이전트(50)는 암호화 키 또는 개별적인 키를 도출하는데 도움이 되는 정보를 얻기 위하여 CSM(44)과 협력할 수 있다. 이러한 정보는 예를 들어, 비밀번호, 비밀, 난스(nonce) 등을 포함할 수 있고, 이로 인해 암호화 키 자료라고 일컬어진다. CSM(44)은 사용자 비밀번호 또는 개별적인 키와 관련하여 사용되는 또 다른 비밀을 요청하는 사용자 인터페이스를 노출시키고, 비밀번호/비밀을 에이전트(50)에 통신할 수 있다. 또 다른 실시예에서, CSM(44)은 키 자료를 얻기 위해 OS의 암호화 에이전트(예를 들어, Bitlocker® 모듈)와 직접 인터페이스 할 수 있다. 키 자료를 얻는 것에 응답하여, CSM(44)은 키 자료 자체 또는 상기 키 자료의 저장소 위치를 다운링크 통지(예를 들어, 더미 저장소 액세스 요청)를 통해 에이전트(50)에 통신할 수 있다.
일단 암호화 키를 가지게 되면, 에이전트(50)는 파일 시스템 시맨틱 맵을 구성 및/또는 유지하기 위하여 저장된 데이터를 복호화(decrypt, 해독)하기 위해 암호화 엔진(52)을 사용할 수 있다. 일부 실시예에서, 에이전트(50)는 실질적으로 호스트 프로세서(16) 상에서 실행되는 다른 소프트웨어 또는 OS(40)에 대한 지식 없이, 1차 저장소(30)로의 및/또는 1차 저장소(30)로부터의 데이터 트래픽의 온라인 스캐닝/분석을 수행하기 위해 암호화 키를 추가로 사용할 수 있다. 일 예에서, 쓰기 요청을 인터셉트하는 것에 응답하여, 보안 에이전트(50)가 의도된 주소에 원래의 (암호화된) 페이로드를 기록하기 전에, 개별 페이로드를 복호화하고 분석할 수 있다. 일부 실시예에서, 개별 페이로드를 복호화하는 것에 응답하여, 에이전트(50)는 2차 저장소(32)에 암호화되지 않은 버전의 페이로드를 저장할 수 있다.
일반적인 암호화 탐지
저장소 보안 에이전트(50)의 일부 실시예는 저장소(30)의 섹션(예를 들어, 블록, 섹터 등) 내에 저장된 데이터가 암호화되는지 아닌지 여부를 자동으로 결정할 수 있다. 이러한 결정은 엔트로피 또는 본 기술분야에 알려진 다른 방법과 같은 정보 복잡성 수단(information complexity measures)을 사용할 수 있다. 긍정 오류(false positive)를 피하기 위해, 일부 실시예는 개별 파일에 대해 이용가능한 메타데이터를 사용하여 상기 개별 파일이 반드시 암호화될 필요 없이 높은 엔트로피를 가질 수 있는지 여부를 결정할 수 있다. 이러한 예는 MP3, JPG, MPG, ZIP 등과 같은 포맷에 따라 압축된 데이터를 포함한다. 개별 파일이 이러한 카테고리 중 하나에 속하는지 여부를 결정하기 위해, 일부 실시예는 메타데이터에 따라 상기 개별 파일의 헤더 섹션의 위치를 찾고, 각각의 헤더에서 파일 유형 정보를 검색할 수 있다.
일부 실시예에서, 파일 시스템 시맨틱 맵의 각각의 엔트리는 예를 들어 개별 파일 시스템 항목(파일, 폴더 등)이 암호화되었는지 아닌지 여부, 개별 파일 시스템 항목이 압축되었는지 아닌지 여부 등을 나타내는 플래그들의 세트로 증대될 수 있다. 상기 플래그들은 나머지 시맨틱 맵 데이터와 함께 에이전트(50)에 의해 유지될 수 있다.
고급 랜섬웨어(advanced ransomware)의 탐지
본 명세서에 기술된 시스템들 및 방법들은 저장된 데이터를 암호화하기 위한 시도를 자동으로 탐지하는 것을 가능하게 한다. 탐지(detection)는 프로세서(16) 상에서 실행되는 소프트웨어와는 독립적으로 수행되며 그리고 사실상 이에 의해 탐지되지 않을 수 있다. 이러한 자동 암호화 탐지의 유용한 어플리케이션은 랜섬웨어 및 사용자 데이터의 무단 또는 의도하지 않은 암호화를 포함하는 활동을 갖는 다른 유형의 악성 소프트웨어의 탐지를 포함한다.
하나의 예시적인 탐지 휴리스틱은 암호화되지 않은 콘텐트를 암호화된 콘텐트로 덮어쓰기 하려는 시도를 탐지하는 것을 포함한다. 탐지 휴리스틱들의 다른 세트는 저장소 액세스 요청의 현재 스트림(stream)을 특정 사용자 및/또는 구동중인 어플리케이션에 대응하는 "정상" 패턴과 비교하기 위해 통계를 채용한다. 탐지를 달성하기 위해, 일부 실시예는 예를 들어 어떤 어플리케이션/프로세스가 특정 사용자에 의해 개시될 가능성이 있는지, 어떤 저장소 위치가 개별 사용자에 의해 일반적으로 액세스 되는지, 각각의 프로세스/어플리케이션과 연관된 저장소 요청의 일반적인 패턴이 무엇인지 등을 나타내는 사용자 프로파일 및/또는 어플리케이션 프로파일들의 세트를 결정한다. 저장소 액세스 요청의 현재 시퀀스가 "정상"의 패턴을 벗어난 경우, 예를 들어 에이전트(50)가 파일 생성 활동에서 비정상적인 스파이크를 탐지한 경우, 이때 개별 파일의 콘텐트는 암호화되면, 에이전트(50)는 랜섬웨어 공격이 진행되고 있다고 결정할 수 있다.
에이전트(50)가 의심스러운 암호화 활동을 탐지하는 경우, 에이전트(50)는 상기 개별 활동을 중단시키고(예컨대, 의심스러운 쓰기들의 세트를 차단), 그리고/또는 업링크 통지 메커니즘을 사용하여 CSM(44)에 신호를 보낼 수 있다. 따라서, CSM(44)은 가능한 공격에 대한 경고로서 통지를 사용할 수 있고, 예를 들면 에이전트(50)에 의해 통지된 이벤트들을 호스트 시스템(10) 상에서 또는 통신 네트워크를 통해 호스트 시스템(10)에 연결된 다른 컴퓨터 상에서 발생하는 다른 멀웨어를 나타내는 이벤트들과 연관시키기 위해 추가적인 휴리스틱들을 적용할 수 있다.
소프트웨어 버저닝(software versioning) 및 백업과 같은 어플리케이션을 위한 자산 섀도잉(shadowing)
일부 실시예에서, 저장소 보안 에이전트(50)는 파일을 삭제하거나 또는 덮어쓰기 하려는 시도를 자동으로 탐지하고, 응답으로, 삭제된/덮어쓰기된 데이터의 사본을 별도 위치, 1차 저장소(30) 또는 2차 저장소(32) 상에 저장한다. 따라서 삭제 또는 덮어쓰기 되는 파일의 섀도 복사본(shadow copy)은 새로 쓰여진 데이터와 함께 유지된다. 일부 실시예는 동일한 파일의 둘 이상의 연속 버전을 저장하고, 개별적인 버전 중 적어도 하나는 암호화되지 않는다. 이러한 메커니즘은 개별 파일을 저장된 버전의 임의의 것으로 잠재적으로 복원함으로써 데이터의 안전한 복구를 가능하게 할 수 있다.
이러한 자산 섀도잉의 가능한 어플리케이션은 특히, 보안, 백업 및 소프트웨어 버저닝을 포함한다. 컴퓨터 보안 실시예에서, 에이전트(50)는 예를 들어, 특정 파일이 상대적으로 짧은 시간 간격 내에서 반복적으로 덮어쓰기 되는 것을 탐지할 수 있다. 이러한 파일 활동은 멀웨어를 나타내는 것일 수 있다. 일부 실시예는 예를 들어 이전 버전이 암호화되지 않은 반면 최신 버전이 암호화되어 있는지 여부를 결정하기 위해, 동일한 파일의 연속 버전을 비교할 수 있다. 이전에 언급한 바와 같이, 암호화에서의 이러한 변경은 랜섬웨어 공격을 나타낼 수 있다. 보다 일반적으로, 파일의 백업 사본을 유지하는 것은 예를 들어, 악성 소프트웨어가 중요 OS 자산을 수정하는 것을 잠재적으로 방지할 수 있고, 이에 따라 OS 기능의 악성 후킹을 방지할 수 있다. 이러한 수정이 탐지되는 경우, 에이전트(50)는 CSM(44)에 통지할 수 있다. 차례로, CSM(44)은 에이전트(50)로 하여금 특정 파일에 대한 변경을 롤백(roll back) 하도록 지시할 수 있다.
최적화
일부 실시예는 보안 저장소 장치(24)의 레벨로부터 파일 시스템 시맨틱을 해독(unscrambling)하는 컴퓨팅 오버헤드(computational overhead)를 낮추기 위해 추가로 최적화 될 수 있다. 하이브리드(hybrid) 실시예에서, 시맨틱 표시자는 CSM(44)으로부터 보안 에이전트(50)로 전달되는 반면, 에이전트(50)는 파일 삭제, 파일 덮어쓰기, 무단 데이터 암호화 등과 같은 악성 저장소 이벤트를 인터셉트하고 대응할 수 있다. 이러한 실시예에서, CSM(44)은 Windows®의 파일 시스템 미니필터의 것과 유사한 기능을 갖는 경량 저장소 액세스 필터를 포함할 수 있다. 상기 저장소 액세스 필터는, 예를 들어 특히 파일, 개별 데이터/파일의 이름 및/또는 디스크 위치에 대한 쓰기 시도, 및 쓰기 동작을 수행하는 프로세스의 식별을 결정할 수 있다. 그러고 나서 저장소 액세스 필터는 그러한 시맨틱 정보를 다운링크 통지를 통해 저장소 보안 에이전트(50)에 전송할 수 있다. 에이전트(50)는 응답 패킷 또는 업링크 통지를 사용하여 수신을 응답할 수 있다. 일부 실시예에서, 다운링크 통지는 통지 큐(notification queue)에 추가된다.
보안 저장소 장치(24)의 레벨에서, 에이전트(50)는 쓰려고 하는 시도를 식별하고, 개별적인 이러한 시도를 다운링크 통지 큐로부터의 데이터와 매칭시키려고 시도할 수 있다. 성공적인 매치는 에이전트(50)로 하여금 개별적인 쓰기 시도의 시맨틱을 결정할 수 있게 하며, 이는 에이전트(5)로 하여금 보다 정교한 휴리스틱을 적용하여 상기 개별적인 쓰기 시도가 의심스러운지, 예방될 필요가 있는지 여부 등을 결정할 수 있게 한다. 하드웨어 레벨에서(즉, 특정 메타데이터 변경으로부터) 탐지된 쓰기 시도를 다운링크 통지를 통해 전달되는 쓰기 시도와 매치하는 것이 실패하면, OS(40)의 저장소 액세스 미니필터에 의한 탐지를 피할 수 있는 악성 소프트웨어를 나타낼 수 있다. 이러한 경우, 보안 에이전트(50)는 개별적인 쓰기 시도를 차단할 수 있고 그리고/또는 업링크 통지를 통해 CSM(44)에 통지할 수 있다.
본 발명은 특히 악성 소프트웨어와 같은 컴퓨터 보안 위협으로부터 호스트 시스템을 보호하기 위한 시스템 및 방법에 관한 것이다. 기술된 시스템 및 방법은 종래의 방어를 파괴할 수 있는 정교한 멀웨어로부터 호스트 시스템(예를 들어, 컴퓨터, 모바일 통신 장치, 등)을 보호하는데 특히 적합하다. 예시적인 어플리케이션은 랜섬웨어 및 사유(proprietary), 개인(private), 및/또는 비밀 데이터의 도용으로부터의 보호를 포함한다.
본 발명의 일부 실시예는 악성 소프트웨어가 호스트 시스템의 프로세서와 비휘발성 저장소(예를 들어, 자기, 광 또는 솔리드 스테이트 드라이브) 사이의 데이터의 트래픽에 성공적으로 개입할 수 있다는 관찰정보에 의존한다. 개별적인 프로세서 상에서 실행되는 보안 소프트웨어는 이러한 개입 모두를 차단하거나 방지할 수 없고, 결과적으로 데이터 도용 또는 손실의 실질적인 위험이 있다. 이러한 문제를 해결하기 위해, 본 발명의 예시적인 실시예는 호스트 시스템의 메인 프로세서와 저장소 장치 사이의 데이터 트래픽을 인터셉트하고, 분석하고, 그리고/또는 선택적으로 차단하도록 구성된 별도의 프로세서로 보안 소프트웨어의 일부를 대체한다. 보조 보안 프로세서는 향상된 보안 저장소 장치를 형성하기 위해 저장소 장치 및/또는 추가적인 하드웨어와, 예를 들어 일반적인 인쇄 회로 기판 상에, 통합될 수 있다. 상기 보안 저장소 장치는 하드 드라이브 또는 다른 비휘발성 저장소의 종래의 폼 팩터를 가정할 수 있고, 직렬 ATA(Serial AT Attachment, SATA) 또는 주변 구성 요소 상호 연결(peripheral component interconnect, PCI) 익스프레스 인터페이스/커넥터와 같은 종래의 저장소 인터페이스/커넥터를 통해 호스트 시스템의 나머지 하드웨어에 연결될 수 있다. 선택적인 실시예에서, 보안 저장소 장치(즉, 저장소 + 보조 프로세서)는 외부 드라이브로서 패키지 될 수 있고, 예를 들어 범용 직렬 버스(USB) 또는 다른 종래의 인터페이스/커넥터를 통해 호스트 시스템에 연결될 수 있다.
종래의 안티-멀웨어 시스템에서, 예방, 탐지 및 대책(countermeasures)은 악성 코드를 또한 구동하는 동일한 물리적 프로세서 상에서 실행되는 소프트웨어에서 구현된다. 또한, 종래의 시스템에서, 멀웨어 및 합법적인 소프트웨어 둘 모두는 동일한 물리적 저장소 장치(예를 들어, 하드 드라이브)에 액세스 할 수 있다. 이러한 구성은 잠재적으로, 면밀히 제조된 악성 코드가 보안 소프트웨어를 약화시키는 것을 허용할 수 있다. 대조적으로, 본 발명의 일부 실시예에서, 물리적 저장소로의 액세스는 사용자 어플리케이션(및 잠재적으로 악성 코드)을 구동하는 메인 프로세서와는 별개의, 보조 프로세서에 의해 제어된다. 따라서 멀웨어는 보조 프로세서 상에서 실행되는 보안 소프트웨어에 접근할 수 없다.
상기의 실시예들이 본 발명의 범위를 벗어나지 않는다면 다양한 방법으로 변경될 수 있음은 본 기술분야의 통상의 기술자에게 당연한 것이다. 따라서 본 발명의 범위는 이하의 청구항과 그들의 법적 균등물에 의해서 결정되어야 한다.

Claims (21)

  1. 제1 하드웨어 프로세서 및 보안 저장소 장치를 포함하는 컴퓨터 시스템으로서, 상기 보안 저장소 장치는 저장소 전송 프로토콜에 따라 포맷된(format, 형식화된) 저장소 액세스 요청을 수신하도록 구성된 저장소 인터페이스를 통해 상기 제1 하드웨어 프로세서에 연결되고, 상기 보안 저장소 장치는 제2 하드웨어 프로세서 및 비휘발성 저장소 유닛을 포함하고,
    상기 제1 하드웨어 프로세서는:
    상기 저장소 유닛 상에 데이터 패킷을 저장하기 위하여 상기 제1 하드웨어 프로세서 상에서 실행되는 소프트웨어에 의한 요청을 탐지하는 것에 응답하여, 상기 데이터 패킷을 암호화하고,
    상기 데이터 패킷을 암호화하는 것에 응답하여, 트루 저장소 액세스 요청(true storage access request)을 상기 저장소 인터페이스로 전송하고, 상기 트루 저장소 액세스 요청은 상기 암호화된 데이터 패킷을 포함하고,
    상기 저장소 전송 프로토콜에 따라 더미(dummy, 무의미) 저장소 액세스 요청을 생성하고, 상기 더미 저장소 액세스 요청은 적어도 암호 키(cryptographic key)의 일부를 포함하며, 그리고
    상기 더미 저장소 액세스 요청을 상기 저장소 인터페이스로 전송하도록 구성되고; 그리고
    상기 제2 하드웨어 프로세서는:
    상기 저장소 인터페이스를 통해 통신을 수신하는 것에 응답하여, 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하고;
    상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하는 것에 응답으로, 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는 경우, 상기 더미 저장소 액세스 요청에 따라 상기 암호 키를 결정하고,
    상기 트루 저장소 액세스 요청을 수신하는 것에 응답하여, 상기 데이터 패킷을 복호화(decrypt)하기 위하여 상기 암호 키를 채용하며, 그리고
    상기 복호화된 데이터 패킷이 악성 소프트웨어를 포함하는지 여부를 결정하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  2. 제1항에 있어서,
    상기 제2 하드웨어 프로세서는, 상기 복호화된 데이터 패킷이 악성 소프트웨어를 포함하는지 여부를 결정하는 것에 응답하여, 상기 복호화된 데이터 패킷이 악성 소프트웨어를 포함하는 경우, 상기 저장소 전송 프로토콜에 따라 포맷된 통지를 상기 저장소 인터페이스에 전송하도록 추가적으로 구성되고, 상기 통지는 상기 제1 하드웨어 프로세서로 하여금 상기 통지 메시지를 보안 경고로서 해석하게 할 수 있도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  3. 제2항에 있어서,
    상기 통지는 상기 제1 하드웨어 프로세서에서 하드웨어 인터럽트(hardware interrupt)를 유발하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  4. 제1항에 있어서,
    상기 통신은 상기 저장소 유닛 상에서 위치를 나타내는 주소를 포함하고, 상기 제2 하드웨어 프로세서는 상기 주소에 따라 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  5. 제4항에 있어서,
    상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하는 것은:
    상기 주소를 범위 외(out-of-range) 주소(즉, 정상적인 주소 지정가능 범위 밖의 주소)와 비교하는 것; 및
    상기 주소를 범위 외(out-of-range) 주소(정상적인 주소 지정가능 범위 밖의 주소)와 비교하는 것에 응답으로, 상기 비교 결과에 따라 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 결정하는 것을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  6. 제1항에 있어서,
    상기 통신은 페이로드(payload)를 상기 저장소 유닛에 기록하기 위한 요청을 포함하고, 상기 제2 하드웨어 프로세서는 상기 페이로드에 따라 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  7. 제1항에 있어서,
    상기 제2 하드웨어 프로세서는:
    상기 저장소 유닛 상에 저장된 복수의 데이터 패킷과 상기 제1 하드웨어 프로세서 상에서 실행되는 운영 시스템(operating system)에 의해 유지되는 1차 파일 시스템(primary file system)의 복수의 파일들 사이의 맵핑(mapping)을 포함하는 섀도 파일 시스템을 유지하고;
    상기 트루 저장소 액세스 요청을 수신하는 것에 응답하여, 상기 복수의 파일들 중의 파일을 상기 섀도 파일 시스템에 따라 식별하여 상기 데이터 패킷이 상기 파일의 일부를 형성하도록 하고; 그리고
    상기 파일을 식별하는 것에 응답하여, 상기 파일이 악성 소프트웨어를 포함하는지 여부를 결정하도록 추가적으로 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  8. 제7항에 있어서,
    상기 제2 하드웨어 프로세서는:
    상기 섀도 파일 시스템에 따라 상기 저장소 인터페이스를 통해 상기 제1 하드웨어 프로세서로부터 수신한 다른 통신이 새 파일의 생성을 나타내는지 여부를 결정하고; 그리고
    상기 섀도 파일 시스템에 따라 상기 저장소 인터페이스를 통해 상기 제1 하드웨어 프로세서로부터 수신한 다른 통신이 새 파일의 생성을 나타내는지 여부를 결정하는 것에 응답으로, 상기 다른 통신이 상기 새 파일의 생성을 나타내는 경우, 상기 새 파일의 생성을 나타내기 위하여 상기 섀도 파일 시스템을 업데이트 하도록 추가적으로 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  9. 제1항에 있어서,
    상기 제2 하드웨어 프로세서는, 상기 데이터 패킷을 복호화하는 것에 응답하여, 상기 복호화된 데이터 패킷을 상기 저장소 유닛에 기록하도록 추가적으로 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  10. 제1항에 있어서,
    상기 저장소 인터페이스는 직렬 ATA(serial ATA, SATA) 인터페이스 및 범용 직렬 버스(universal serial bus, USB) 인터페이스로 이루어지는 군으로부터 선택되는 항목(item)을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  11. 제1 하드웨어 프로세서 및 비휘발성 저장소 유닛을 포함하는 보안 저장소 장치로서, 상기 보안 저장소 장치는 저장소 전송 프로토콜에 따라 포맷된(format, 형식화된) 저장소 액세스 요청을 수신하도록 구성된 저장소 인터페이스를 통해 제2 하드웨어 프로세서에 연결되도록 구성되고,
    상기 제2 하드웨어 프로세서는:
    상기 저장소 유닛 상에 데이터 패킷을 저장하기 위하여 상기 제2 하드웨어 프로세서 상에서 실행되는 소프트웨어에 의한 요청을 탐지하는 것에 응답하여, 상기 데이터 패킷을 암호화하고,
    상기 데이터 패킷을 암호화하는 것에 응답하여, 트루 저장소 액세스 요청(true storage access request)을 상기 저장소 인터페이스로 전송하고, 상기 트루 저장소 액세스 요청은 상기 암호화된 데이터 패킷을 포함하고,
    상기 저장소 전송 프로토콜에 따라 더미(dummy, 무의미) 저장소 액세스 요청을 생성하고, 상기 더미 저장소 액세스 요청은 적어도 암호 키(cryptographic key)의 일부를 포함하며, 그리고
    상기 더미 저장소 액세스 요청을 상기 저장소 인터페이스로 전송하도록 구성되고; 그리고
    상기 제1 하드웨어 프로세서는:
    상기 저장소 인터페이스를 통해 통신을 수신하는 것에 응답하여, 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하고;
    상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하는 것에 응답으로, 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는 경우, 상기 더미 저장소 액세스 요청에 따라 상기 암호 키를 결정하고,
    상기 트루 저장소 액세스 요청을 수신하는 것에 응답하여, 상기 데이터 패킷을 복호화(decrypt)하기 위하여 상기 암호 키를 채용하며, 그리고
    상기 복호화된 데이터 패킷이 악성 소프트웨어를 포함하는지 여부를 결정하도록 구성되는 것을 특징으로 하는 보안 저장소 장치.
  12. 보안 저장소 장치를 저장소 전송 프로토콜에 따라 포맷된(format, 형식화된) 저장소 액세스 요청을 수신하도록 구성된 저장소 인터페이스를 통해 제1 하드웨어 프로세서에 연결하는 것(상기 보안 저장소 장치는 제2 하드웨어 프로세서 및 비휘발성 저장소 유닛을 포함함);
    상기 저장소 유닛 상에 데이터 패킷을 저장하기 위하여 상기 제1 하드웨어 프로세서 상에서 실행되는 소프트웨어에 의한 요청을 탐지하는 것에 응답하여, 상기 데이터 패킷을 암호화하기 위해 상기 제1 하드웨어 프로세서를 채용하는 것;
    상기 데이터 패킷을 암호화하는 것에 응답하여, 트루 저장소 액세스 요청(true storage access request)을 상기 저장소 인터페이스로 전송하기 위해 상기 제1 하드웨어 프로세서를 채용하는 것(상기 트루 저장소 액세스 요청은 상기 암호화된 데이터 패킷을 포함함);
    상기 저장소 전송 프로토콜에 따라 더미(dummy, 무의미) 저장소 액세스 요청을 생성하기 위해 상기 제1 하드웨어 프로세서를 채용하는 것(상기 더미 저장소 액세스 요청은 적어도 암호 키(cryptographic key)의 일부를 포함함);
    상기 더미 저장소 액세스 요청을 상기 저장소 인터페이스로 전송하기 위해 상기 제1 하드웨어 프로세서를 채용하는 것;
    상기 저장소 인터페이스를 통해 통신을 수신하는 것에 응답하여, 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것;
    상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하는 것에 응답으로, 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는 경우, 상기 데이터 패킷을 복호화(decrypt)하기 위하여 상기 암호 키를 채용하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것; 및
    상기 데이터 패킷을 복호화하는 것에 응답하여, 상기 복호화된 데이터 패킷이 악성 소프트웨어를 포함하는지 여부를 결정하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것을 포함하는 것을 특징으로 하는 컴퓨터 보안 방법.
  13. 제12항에 있어서,
    상기 복호화된 데이터 패킷이 악성 소프트웨어를 포함하는지 여부를 결정하는 것에 응답하여, 상기 복호화된 데이터 패킷이 악성 소프트웨어를 포함하는 경우, 상기 저장소 전송 프로토콜에 따라 포맷된 통지를 상기 저장소 인터페이스에 전송하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것을 추가적으로 포함하고, 상기 통지는 상기 제1 하드웨어 프로세서로 하여금 상기 통지 메시지를 보안 경고로서 해석하게 할 수 있도록 구성되는 것을 특징으로 하는 컴퓨터 보안 방법.
  14. 제13항에 있어서,
    상기 통지는 상기 제1 하드웨어 프로세서에서 하드웨어 인터럽트(hardware interrupt)를 유발하도록 구성되는 것을 특징으로 하는 컴퓨터 보안 방법.
  15. 제12항에 있어서,
    상기 통신은 상기 저장소 유닛 상에서 위치를 나타내는 주소를 포함하고, 상기 제2 하드웨어 프로세서는 상기 주소에 따라 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하도록 구성되는 것을 특징으로 하는 컴퓨터 보안 방법.
  16. 제15항에 있어서,
    상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하는 것은:
    상기 주소를 범위 외(out-of-range) 주소(즉, 정상적인 주소 지정가능 범위 밖의 주소)와 비교하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것; 및
    상기 주소를 범위 외(out-of-range) 주소(정상적인 주소 지정가능 범위 밖의 주소)와 비교하는 것에 응답으로, 상기 비교 결과에 따라 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 결정하는 것을 포함하는 것을 특징으로 하는 컴퓨터 보안 방법.
  17. 제12항에 있어서,
    상기 통신은 페이로드(payload)를 상기 저장소 유닛에 기록하기 위한 요청을 포함하고, 상기 제2 하드웨어 프로세서는 상기 페이로드에 따라 상기 통신이 상기 더미 저장소 액세스 요청을 포함하는지 여부를 결정하도록 구성되는 것을 특징으로 하는 컴퓨터 보안 방법.
  18. 제12항에 있어서,
    상기 저장소 유닛 상에 저장된 복수의 데이터 패킷과 상기 제1 하드웨어 프로세서 상에서 실행되는 운영 시스템(operating system)에 의해 유지되는 1차 파일 시스템(primary file system)의 복수의 파일들 사이의 맵핑(mapping)을 포함하는 섀도 파일 시스템을 유지하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것;
    상기 트루 저장소 액세스 요청을 수신하는 것에 응답하여, 상기 복수의 파일들 중의 파일을 상기 섀도 파일 시스템에 따라 식별하여 상기 데이터 패킷이 상기 파일의 일부를 형성하도록 하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것; 및
    상기 파일을 식별하는 것에 응답하여, 상기 파일이 악성 소프트웨어를 포함하는지 여부를 결정하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것을 추가적으로 포함하는 것을 특징으로 하는 컴퓨터 보안 방법.
  19. 제18항에 있어서,
    상기 섀도 파일 시스템에 따라 상기 저장소 인터페이스를 통해 상기 제1 하드웨어 프로세서로부터 수신한 다른 통신이 새 파일의 생성을 나타내는지 여부를 결정하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것; 및
    상기 섀도 파일 시스템에 따라 상기 저장소 인터페이스를 통해 상기 제1 하드웨어 프로세서로부터 수신한 다른 통신이 새 파일의 생성을 나타내는지 여부를 결정하는 것에 응답으로, 상기 다른 통신이 상기 새 파일의 생성을 나타내는 경우, 상기 새 파일의 생성을 나타내기 위하여 상기 섀도 파일 시스템을 업데이트 하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것을 추가적으로 포함하는 것을 특징으로 하는 컴퓨터 보안 방법.
  20. 제12항에 있어서,
    상기 데이터 패킷을 복호화하는 것에 응답하여, 상기 복호화된 데이터 패킷을 상기 저장소 유닛에 기록하기 위해 상기 제2 하드웨어 프로세서를 채용하는 것을 추가적으로 포함하는 것을 특징으로 하는 컴퓨터 보안 방법.
  21. 제12항에 있어서,
    상기 저장소 인터페이스는 직렬 ATA(serial ATA, SATA) 인터페이스 및 범용 직렬 버스(universal serial bus, USB) 인터페이스로 이루어지는 군으로부터 선택되는 항목(item)을 포함하는 것을 특징으로 하는 컴퓨터 보안 방법.
KR1020207002143A 2017-08-04 2018-07-31 보안 저장소 장치 KR102296754B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762541505P 2017-08-04 2017-08-04
US62/541,505 2017-08-04
US16/045,115 US20190042781A1 (en) 2017-08-04 2018-07-25 Secure Storage Device
US16/045,115 2018-07-25
PCT/EP2018/070692 WO2019025423A1 (en) 2017-08-04 2018-07-31 SECURE STORAGE DEVICE

Publications (2)

Publication Number Publication Date
KR20200035016A KR20200035016A (ko) 2020-04-01
KR102296754B1 true KR102296754B1 (ko) 2021-09-03

Family

ID=65229581

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207002143A KR102296754B1 (ko) 2017-08-04 2018-07-31 보안 저장소 장치

Country Status (11)

Country Link
US (1) US20190042781A1 (ko)
EP (1) EP3662385B1 (ko)
JP (1) JP7121112B2 (ko)
KR (1) KR102296754B1 (ko)
CN (1) CN110998582B (ko)
AU (1) AU2018311120B2 (ko)
CA (1) CA3069053A1 (ko)
ES (1) ES2907777T3 (ko)
IL (1) IL272150B2 (ko)
SG (1) SG11202000097TA (ko)
WO (1) WO2019025423A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10733290B2 (en) * 2017-10-26 2020-08-04 Western Digital Technologies, Inc. Device-based anti-malware
US20190362075A1 (en) * 2018-05-22 2019-11-28 Fortinet, Inc. Preventing users from accessing infected files by using multiple file storage repositories and a secure data transfer agent logically interposed therebetween
US11216391B1 (en) * 2018-06-21 2022-01-04 Amazon Technologies, Inc. Using an I/O proxy device to filter I/O messages in a computer system
US11132437B2 (en) * 2018-06-26 2021-09-28 The Government Of The United States Of America, As Represented By The Secretary Of The Navy Secure computer operating system through interpreted user applications
US10614232B2 (en) * 2018-09-10 2020-04-07 John Almeida Storing and using multipurpose secret data
US10892895B2 (en) * 2018-09-10 2021-01-12 Atense, Inc. Storing and using multipurpose secret data
US11036856B2 (en) 2018-09-16 2021-06-15 Fortinet, Inc. Natively mounting storage for inspection and sandboxing in the cloud
US11403394B2 (en) 2019-09-17 2022-08-02 International Business Machines Corporation Preventing selective events of a computing environment
JP7352158B2 (ja) * 2019-09-27 2023-09-28 大日本印刷株式会社 デバイス、コンピュータプログラム及び監視方法
US11271933B1 (en) * 2020-01-15 2022-03-08 Worldpay Limited Systems and methods for hosted authentication service
JP6820076B1 (ja) * 2020-02-03 2021-01-27 Necプラットフォームズ株式会社 記憶装置、記憶方法、及びプログラム
US11586734B2 (en) * 2020-02-28 2023-02-21 Kioxia Corporation Systems and methods for protecting SSDs against threats
CN113392062B (zh) * 2020-03-12 2023-04-07 Oppo广东移动通信有限公司 数据存储方法、装置、电子设备和计算机可读存储介质
KR102323732B1 (ko) * 2020-04-02 2021-11-11 주식회사 수산아이앤티 해쉬 관리를 통해 파일을 보호하는 장치 및 방법
CN111428272B (zh) * 2020-04-21 2023-06-06 深圳融安网络科技有限公司 移动存储设备的安全访问方法、设备及存储介质
US11526633B2 (en) 2020-08-27 2022-12-13 Kyndryl, Inc. Media exfiltration prevention system
US20220123932A1 (en) * 2020-10-19 2022-04-21 Western Digital Technologies, Inc. Data storage device encryption
FR3131020A1 (fr) * 2021-12-22 2023-06-23 Orange Module et procédé de sécurisation d’un équipement informatique
CN115186300B (zh) * 2022-09-08 2023-01-06 粤港澳大湾区数字经济研究院(福田) 文件安全处理系统及文件安全处理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040177261A1 (en) 2002-11-18 2004-09-09 Watt Simon Charles Control of access to a memory by a device
US20080140724A1 (en) 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for servicing object requests within a storage controller
US20090022324A1 (en) 2007-07-17 2009-01-22 Sony Corporation Information processing apparatus, content providing system, information processing method, and computer program
US20160179607A1 (en) 2014-12-19 2016-06-23 Verizon Patent And Licensing Inc. Failure management for electronic transactions
US20170324758A1 (en) 2015-05-07 2017-11-09 Cyber-Ark Software Ltd. Detecting and reacting to malicious activity in decrypted application data

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328962A (ja) * 1995-05-31 1996-12-13 Mitsubishi Electric Corp 端末機と、当該端末機に接続されるメモリカードからなるシステム
JP2000089992A (ja) 1998-09-11 2000-03-31 Fujitsu Ltd 記憶装置
JP4119882B2 (ja) 2004-11-19 2008-07-16 株式会社メガチップス メモリ情報保護システム、メモリ情報の保護方法、および半導体メモリ
JP4538027B2 (ja) 2007-08-22 2010-09-08 株式会社東芝 半導体装置
US8341751B2 (en) * 2007-12-26 2012-12-25 Wilson Kelce S Software license management
JP5564197B2 (ja) 2009-04-23 2014-07-30 株式会社メガチップス メモリ制御装置、半導体メモリ装置、メモリシステム及びメモリ制御方法
US9363088B2 (en) * 2010-07-22 2016-06-07 Zixcorp Systems, Inc. Automated provisioning of a network appliance
EP2828783B1 (en) * 2012-03-19 2019-01-09 Intel Corporation Anti-malware protection operation with instruction included in an operand
US9678978B2 (en) * 2012-12-31 2017-06-13 Carbonite, Inc. Systems and methods for automatic synchronization of recently modified data
CA2900504A1 (en) * 2013-02-13 2014-08-21 Security First Corp. Systems and methods for a cryptographic file system layer
CN105229659B (zh) * 2013-03-28 2019-04-16 爱迪德技术有限公司 混淆由软件应用对数据存储装置的访问
US9864879B2 (en) * 2015-10-06 2018-01-09 Micron Technology, Inc. Secure subsystem

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040177261A1 (en) 2002-11-18 2004-09-09 Watt Simon Charles Control of access to a memory by a device
US20080140724A1 (en) 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for servicing object requests within a storage controller
US20090022324A1 (en) 2007-07-17 2009-01-22 Sony Corporation Information processing apparatus, content providing system, information processing method, and computer program
US20160179607A1 (en) 2014-12-19 2016-06-23 Verizon Patent And Licensing Inc. Failure management for electronic transactions
US20170324758A1 (en) 2015-05-07 2017-11-09 Cyber-Ark Software Ltd. Detecting and reacting to malicious activity in decrypted application data

Also Published As

Publication number Publication date
IL272150A (en) 2020-03-31
AU2018311120A1 (en) 2020-01-30
US20190042781A1 (en) 2019-02-07
RU2020103936A3 (ko) 2022-03-01
EP3662385A1 (en) 2020-06-10
RU2020103936A (ru) 2021-09-06
AU2018311120B2 (en) 2023-03-16
JP7121112B2 (ja) 2022-08-17
CN110998582A (zh) 2020-04-10
IL272150B1 (en) 2023-08-01
CN110998582B (zh) 2024-02-02
RU2768196C2 (ru) 2022-03-23
ES2907777T3 (es) 2022-04-26
EP3662385B1 (en) 2022-01-19
CA3069053A1 (en) 2019-02-07
KR20200035016A (ko) 2020-04-01
JP2020529681A (ja) 2020-10-08
WO2019025423A1 (en) 2019-02-07
SG11202000097TA (en) 2020-02-27
IL272150B2 (en) 2023-12-01

Similar Documents

Publication Publication Date Title
KR102296754B1 (ko) 보안 저장소 장치
US9087199B2 (en) System and method for providing a secured operating system execution environment
US9747443B2 (en) System and method for firmware based anti-malware security
JP6370747B2 (ja) バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法
US8621620B2 (en) System and method for protecting and securing storage devices using below-operating system trapping
KR101946982B1 (ko) 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가
US8549648B2 (en) Systems and methods for identifying hidden processes
US8966624B2 (en) System and method for securing an input/output path of an application against malware with a below-operating system security agent
US20120254993A1 (en) System and method for virtual machine monitor based anti-malware security
US20120254994A1 (en) System and method for microcode based anti-malware security
US9202053B1 (en) MBR infection detection using emulation
Rodionov et al. Bootkits: Past, present and future
RU2768196C9 (ru) Защищённое запоминающее устройство
US20240126882A1 (en) Instructions to process files in virtual machines

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right