KR101636638B1 - Anti-malware protection operation with instruction included in an operand - Google Patents

Anti-malware protection operation with instruction included in an operand Download PDF

Info

Publication number
KR101636638B1
KR101636638B1 KR1020147026115A KR20147026115A KR101636638B1 KR 101636638 B1 KR101636638 B1 KR 101636638B1 KR 1020147026115 A KR1020147026115 A KR 1020147026115A KR 20147026115 A KR20147026115 A KR 20147026115A KR 101636638 B1 KR101636638 B1 KR 101636638B1
Authority
KR
South Korea
Prior art keywords
controller
instruction
data
read
malware
Prior art date
Application number
KR1020147026115A
Other languages
Korean (ko)
Other versions
KR20140125445A (en
Inventor
폴 사디카란
니콜라스 디 트리안타필로우
파리토쉬 사세나
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20140125445A publication Critical patent/KR20140125445A/en
Application granted granted Critical
Publication of KR101636638B1 publication Critical patent/KR101636638B1/en

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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)

Abstract

안티 멀웨어 보호를 RAID와 같은 다수의 저장 장치를 갖는 시스템으로 확장하기 위한 시스템 및 방법이 개시된다. 실시예에서, 신뢰 연결은 호스트와 다수의 저장 장치의 컨트롤러 사이에 설정될 수 있다. 신뢰 연결은 호스트에 의해 안티 멀웨어 보호 관련 동작을 재전송함으로써 저장 장치상의 멀웨어 감염된 위치를 보존하기 위해 멀웨어에 의한 시도를 약화시키는 다양한 정보 암호화 기술을 사용할 수 있다. 호스트와 다수의 저장 장치의 컨트롤러 사이의 암호화 및 신뢰 연결을 통해서, 안티 바이러스 및/또는 안티 멀웨어 소프트웨어(이하, AVS)는 암호화된 안티 멀웨어 보호 관련 동작을 다수의 저장 장치의 컨트롤러에 송신하여, 멀웨어에 의한 검출 및/또는 전환을 극복할 수 있다. 다른 실시예가 설명되고 청구될 수 있다.A system and method for extending anti-malware protection to a system having multiple storage devices, such as RAID, is disclosed. In an embodiment, a trusted connection may be established between the host and the controller of the plurality of storage devices. Trusted connections can use a variety of information encryption techniques that weaken attempts by malware to preserve the malware infected location on the storage device by retransmitting anti-malware protection related actions by the host. Through encryption and trusted connections between the host and controllers of multiple storage devices, anti-virus and / or anti-malware software (AVS) sends encrypted anti-malware protection related actions to controllers of multiple storage devices, Can be overcome. Other embodiments may be described and claimed.

Figure R1020147026115
Figure R1020147026115

Description

명령어가 피연산자에 포함된 안티 멀웨어 보호 동작{ANTI-MALWARE PROTECTION OPERATION WITH INSTRUCTION INCLUDED IN AN OPERAND}ANTI-MALWARE PROTECTION OPERATION WITH INSTRUCTION INCLUDED IN AN OPERAND}

본 개시는 일반적으로 데이터 처리의 기술분야에 관한 것이다. 특히, 본 개시는 안티 멀웨어 보호를 다수의 저장 장치를 갖는 시스템, 특히 RAID(redundant array independent disk) 시스템으로 확장하는 것에 관한 것이다.
This disclosure generally relates to the technical field of data processing. In particular, this disclosure relates to extending anti-malware protection to systems with multiple storage devices, particularly redundant array independent disk (RAID) systems.

멀웨어(malware)(또는 악성 코드(malicious code))는 문제를 발생하거나 컴퓨터를 손상시킬 수 있는 다양한 타입의 소프트웨어를 지칭하기 위해 사용되는 포괄적 용어이다. 멀웨어라는 용어는 바이러스, 웜(worm), 트로이 목마, 매크로 바이러스, 루트키트(rootkit) 멀웨어, 및 백도어(backdoor)를 포함할 수 있다. 시간의 경과에 따라, 멀웨어는 점점 더 은밀해지고 공격 목표를 지향하도록 진화해 왔다.Malware (or malicious code) is a generic term used to refer to various types of software that can cause problems or damage a computer. The term malware can include viruses, worms, Trojan horses, macro viruses, rootkit malware, and backdoors. Over time, malware has evolved to become more and more secretive and to target attacking goals.

일부 경우에, 멀웨어는 커널 모듈(예를 들어, 루트키트(rootkit))을 감염시켜 코어 운영 체제 안으로 숨음으로써 더욱 은밀해져 왔다. 루트키트, 특히 관리자 또는 고 레벨 특권(예를 들어, 인텔 아키텍처 프로세서들의 경우에 링 0 특권)으로 실행하는 것들은 전통적인 안티 바이러스 솔루션(anti-virus solution) 또는 안티 멀웨어 솔루션(anti-malware solution) (이하, AVS)에 의해 감지하기 매우 어렵거나 거의 불가능하다. 예를 들어, 관리자 특권을 갖는 루트키트 및 거기에 숨겨진 다른 멀웨어는 저장 장치에 멀웨이를 보존하기 위해 AVS로부터의 질의를 차단하고 부정확한 정보를 AVS에 제공할 수 있다.
In some cases, malware has become more secretive by infecting kernel modules (for example, rootkits) and hiding them into the core operating system. Those running as rootkits, especially administrators or high-level privileges (for example, ring 0 privileges in the case of Intel architecture processors), require either a traditional anti-virus solution or an anti-malware solution , AVS). ≪ / RTI > For example, a rootkit with administrator privileges and other malware hidden in it can block queries from AVS and save incorrect information to AVS to preserve the way to the storage device.

본 발명의 실시예는 동일한 참조 번호가 동일한 요소를 지칭하는 첨부 도면의 도형으로 제한이 아닌 예로서 예시된다.
도 1은 본 개시의 다양한 실시예를 실시하는 사용에 적절한 컴퓨팅 장치의 블록도이다.
도 2는 본 개시의 방법의 다양한 실시예에 대한 동작을 예시하는 흐름도이다.
도 3은 본 개시의 다양한 실시예를 실시하는 사용에 적절한 컴퓨팅 배열의 블록도이다.
도 4는 본 개시의 다양한 실시예에 따른 신뢰 판독 프로세스를 예시하는 스윔 레인 다이어그램(swim lane diagram)이다.
도 5는 본 개시의 다양한 실시예에 따른 신뢰 판독 프로세스를 예시하는 스윔 레인 다이어그램이다.
도 6은 본 개시의 다양한 실시예에 따른 신뢰 채널 프로세스의 유지를 예시하는 스윔 레인 다이어그램이다.
Embodiments of the invention are illustrated by way of example and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to like elements.
1 is a block diagram of a computing device suitable for use to implement various embodiments of the present disclosure.
Figure 2 is a flow chart illustrating operation for various embodiments of the method of the present disclosure.
3 is a block diagram of a computing arrangement suitable for use in implementing various embodiments of the present disclosure.
Figure 4 is a swim lane diagram illustrating a trust reading process in accordance with various embodiments of the present disclosure.
5 is a swim lane diagram illustrating a trust reading process in accordance with various embodiments of the present disclosure.
6 is a swim lane diagram illustrating retention of a trust channel process in accordance with various embodiments of the present disclosure.

본 개시의 실시예는 안티 멀웨어 보호를 다수의 저장 장치를 갖는 시스템으로 확장하는 것에 관한 것일 수 있다. 실시예에서, 신뢰 연결이 호스트와 다수의 저장 장치 사이에 설정될 수 있다. 신뢰 연결은 호스트에 의해 안티 멀웨어 보호 관련 동작을 재전송함으로써 저장 장치상의 멀웨어 감염 위치를 보존하기 위해 멀웨어에 의한 시도를 약화시키는 다양한 정보 암호화 기술을 사용할 수 있다. 호스트와 다수의 저장 장치의 컨트롤러 사이의 암호화 및 신뢰 연결을 통해서 안티 바이러스 및/또는 안티 멀웨어 소프트웨어(이하, AVS)는 암호화된 안티 멀웨어 보호 관련 동작을 다수의 저장 장치의 컨트롤러에 송신하여 멀웨어에 의한 검출 및/또는 전환을 극복할 수 있다.Embodiments of the present disclosure may relate to extending anti-malware protection to systems with multiple storage devices. In an embodiment, a trusted connection may be established between the host and multiple storage devices. Trusted connections can use a variety of information encryption techniques that weaken attempts by malware to preserve the malware infection location on the storage device by retransmitting anti-malware protection related actions by the host. Through encryption and trusted connections between the host and the controllers of multiple storage devices, the anti-virus and / or anti-malware software (AVS) sends the encrypted anti-malware protection related actions to the controllers of the multiple storage devices, Detection and / or conversion can be overcome.

일 실시예에 따르면, 컨트롤러는 호스트 장치로부터 제 1 어드레스 및 피연산자를 갖는 제 1 명령어를 수신할 수 있다. 제 1 명령어는 명목상 안티 멀웨어 보호 관련 동작과 연관될 수 있고, 제 1 어드레스는 다수의 저장 장치의 제 1 하나 이상의 저장 위치를 지칭할 수 있다. 게다가, 컨트롤러는 다수의 저장 장치의 제 2 하나 이상의 저장 위치에서 동작될 제 2 명령어를 피연산자로부터 복구할 수 있다. 그 다음, 컨트롤러는 안티 멀웨어 보호 관련 동작을 실시하기 위해 제 2 하나 이상의 저장 위치에서 동작하도록 제 2 명령어를 실행할 수 있다.According to one embodiment, the controller may receive a first instruction from the host device having a first address and an operand. The first instruction may be associated with a nominal antimalware protection related operation, and the first address may refer to a first one or more storage locations of the plurality of storage devices. In addition, the controller may recover from the operand a second instruction to be operated in a second one or more storage locations of the plurality of storage devices. The controller may then execute a second instruction to operate at a second one or more storage locations to effect anti-malware protection related operations.

예시적 실시예의 다양한 양태는 그의 작업의 본질을 다른 당업자에게 전달하기 위해 당업자에 의해 통상 이용되는 용어를 사용하여 설명될 것이다. 그러나, 일부 대체 실시예는 설명된 양태의 일부를 사용하여 실시될 수 있다는 점이 당업자에게 분명할 것이다. 설명의 목적을 위해, 특정 수, 재료, 및 구성은 예시적 실시예의 철저한 이해를 제공하기 위해 진술된다. 그러나, 대체 실시예는 특정 상세 없이 실시될 수 있다는 점이 당업자에게 분명할 것이다. 다른 경우에, 잘 알려진 특징은 예시적 실시예를 모호하게 하지 않도록 생략되거나 간략화된다.Various aspects of the exemplary embodiments will be described using terms commonly used by those skilled in the art to convey the nature of the operation to others skilled in the art. However, it will be apparent to those skilled in the art that some alternative embodiments may be practiced using some of the described aspects. For purposes of explanation, specific numbers, materials, and configurations are set forth in order to provide a thorough understanding of the exemplary embodiments. However, it will be apparent to those skilled in the art that alternative embodiments may be practiced without the specific details. In other instances, well-known features may be omitted or simplified in order not to obscure the exemplary embodiment.

게다가, 다양한 동작은 차례로 예시적 실시예를 이해할 시에 가장 도움이 되는 방식으로 다수의 개별 동작으로서 설명될 것이지만, 설명의 순서는 이러한 동작이 반드시 순서 의존적인 것을 암시하는 것으로서 해석되지 않아야 한다. 특히, 이러한 동작은 표현의 순서로 수행될 필요는 없다.In addition, while the various operations are, in turn, described as a number of separate operations in a manner that is most helpful in understanding the exemplary embodiment, the order of description should not be construed as implying that such operations are necessarily order dependent. In particular, such operations need not be performed in the order of presentation.

"일 실시예에서"라는 구가 반복적으로 사용된다. "일반적으로"라는 구는 동일한 실시예를 언급하지 않지만, 언급할 수도 있다. "포함하는(comprising)", "갖는(having)", 및 "구비하는(including)"이라는 용어는 상황이 다르게 지시되지 않으면, 동의어이다. 구 "A/B"는 "A 또는 B"를 의미한다. 구 "A 및/또는 B"는 "(A), (B), 또는 (A 및 B)"를 의미한다. 구 "A, B 및 C 중 적어도 하나"는 "(A), (B), (C), (A 및 B), (A 및 C), (B 및 C) 또는 (A, B 및 C)"를 의미한다. 구 "(A) B"는 "(B) 또는 (A B)"를 의미하며, 즉 A는 선택적이다.The phrase "in one embodiment" is used repeatedly. The phrase "generally" does not refer to the same embodiment, but may be mentioned. The terms "comprising," "having," and "including" are synonymous unless the context indicates otherwise. The phrase "A / B" means "A or B". The phrase "A and / or B" means "(A), (B), or (A and B) ". At least one of the phrases "A, B, and C" means "A, B, C, A and B, A and C, B and C, " The phrase "(A) B" means "(B) or (A B) ", that is, A is optional.

도 1은 본 개시의 실시예를 실시하는데 적절한 컴퓨팅 장치(100)를 예시한다. 아래에 더 상세히 설명되는 바와 같이, 컴퓨팅 장치(100)는 컴퓨팅 장치(100)의 하나 이상의 저장 장치를 감염시킬 수 있는 멀웨이에 대해 회복력이 있도록 구성될 수 있다. 도시된 바와 같이, 컴퓨팅 장치(100)는 서로 결합된 호스트 CPU(central processing unit)(102), 시스템 메모리(104), 칩셋(106), 및 다중 장치 컨트롤러(108)를 포함할 수 있다. 다중 장치 컨트롤러(108)는 하나 이상의 저장 장치(110a, 110b)(집합적으로 110)에 차례로 결합될 수 있다.FIG. 1 illustrates a computing device 100 suitable for practicing the embodiments of the present disclosure. As will be described in greater detail below, the computing device 100 may be configured to be resilient to a multiway that may infect one or more storage devices of the computing device 100. As shown, the computing device 100 may include a central processing unit (CPU) 102, a system memory 104, a chipset 106, and a multiple device controller 108 coupled together. The multiple device controller 108 may in turn be coupled to one or more storage devices 110a, 110b (collectively, 110).

호스트 CPU(102)는 복수의 명령어를 인출하고 실행하도록 구성된 다양한 단일 코어 또는 멀티 코어 마이크로프로세서 중 하나 이상일 수 있다. 호스트 CPU(102)는 예를 들어 컴퓨팅 장치(100)의 다양한 구성요소의 동작 및 상호 연결을 용이하게 하도록 구성된 운영 체제의 명령어를 실행할 수 있다. 호스트 CPU(102)는 또한 운영 체제에 의해 론칭되는 애플리케이션의 명령어를 실행할 수 있다. 일 실시예에 따르면, 호스트 CPU(102)는 캘리포니아주 산타클라라 소재의 Intel® 코포레이션에서 입수 가능한 Intel® Core i3, Intel® Core i5 및 Intel® Core i7 마이크로프로세서와 같은 멀티 코어 프로세서이다.The host CPU 102 may be one or more of a variety of single-core or multi-core microprocessors configured to fetch and execute a plurality of instructions. Host CPU 102 may execute instructions of an operating system configured to facilitate operation and interconnection of various components of computing device 100, for example. Host CPU 102 may also execute instructions of an application launched by the operating system. According to one embodiment, the host CPU 102 is a multicore processor, such as the Intel® Core i3, Intel® Core i5 and Intel® Core i7 microprocessors available from Intel® Corporation of Santa Clara, Calif.

시스템 메모리(104)는 호스트 CPU(102)에 통신 가능하게 결합될 수 있다. 시스템 메모리(104)는 호스트 CPU(102)에 의해 실행되는 명령어, 및 실행되는 명령어와 연관된 데이터를 수신하고 저장하도록 구성될 수 있다. 시스템 메모리(104)는 비휘발성 및/또는 휘발성 메모리를 포함할 수 있다. 실시예에서, 시스템 메모리(104)는 DRAM(dynamic random access memory), SDRAM(synchronous dynamic random access memory), ROM(read only memory), 플래시 메모리 등 중 하나 이상을 포함할 수 있다.The system memory 104 may be communicatively coupled to the host CPU 102. The system memory 104 may be configured to receive and store the instructions executed by the host CPU 102 and the data associated with the instructions being executed. The system memory 104 may include non-volatile and / or volatile memory. In an embodiment, the system memory 104 may include one or more of a dynamic random access memory (DRAM), a synchronous dynamic random access memory (SDRAM), a read only memory (ROM), a flash memory,

칩셋(106)은 시스템 메모리(104), 다양한 입/출력 유닛 및 호스트 CPU(102) 사이의 신호를 결합할 수 있다. 실시예에서, 칩셋(106)은 메모리 컨트롤러를 포함할 수 있다. 다른 실시예에서, 칩셋(106)은 호스트 CPU(102)와 통합되는 DMI(direct media interface)에 대한 상보적 인터페이스를 포함할 수 있다.The chipset 106 may combine signals between the system memory 104, the various input / output units, and the host CPU 102. In an embodiment, the chipset 106 may include a memory controller. In another embodiment, the chipset 106 may include a complementary interface to a direct media interface (DMI) that is integrated with the host CPU 102.

칩셋(106)은 통신 링크(112)를 통해 신호를 다중 장치 컨트롤러(108)에 송신하고 그것으로부터 신호를 수신할 수 있다. 통신 링크(112)는 다양한 통신 인터페이스 중 어느 하나일 수 있다. 예를 들어, 통신 링크(112)는 SATA(Serial Advance Technology Attachment), IDE(Integrated Development Environment), PCI(peripheral Component Interconnect), SCS(Small Computer System Interface), HyperTransport™, InfiniBand® 등과 같지만 이에 제한되지 않는 제어 버스, 어드레스 버스, 및 데이터 버스를 갖는 컴퓨터 버스 인터페이스일 수 있다. 대안으로, 통신 링크(112)는 이더넷과 같은 점 대 점 네트워크 연결일 수 있거나, IEEE(Institute of Electrical Electronic Engineers) 802.11 표준 중 하나를 따르는 것과 같은 무선 연결일 수 있다.The chipset 106 may transmit signals to and receive signals from the multi-device controller 108 via the communications link 112. The communication link 112 may be any of a variety of communication interfaces. For example, communication link 112 may include but is not limited to Serial Advance Technology Attachment (SATA), Integrated Development Environment (IDE), peripheral component interconnect (PCI), Small Computer System Interface (SCS), HyperTransport A control bus, an address bus, and a data bus. Alternatively, the communication link 112 may be a point-to-point network connection, such as Ethernet, or a wireless connection, such as following one of the Institute of Electrical and Electronic Engineers (IEEE) 802.11 standards.

도 1을 계속 참조하면, 다중 장치 컨트롤러(108)는 저장 장치(110)에 관한 명령어를 수신하고 응답하기 위해 통신 링크(112)를 통해 호스트 CPU(102)와 통신하도록 구성될 수 있다. 실시예에서, 다중 장치 컨트롤러(108)는 통신 링크(112)를 지원하는 커넥터를 통해 컴퓨팅 장치(100)에 통합되는 카드일 수 있다. 일 실시예에 따르면, 다중 장치 컨트롤러(108)는 칩셋(106)에 통합될 수 있다. 다른 실시예에 따르면, 다중 장치 컨트롤러(108)는 모듈러 네트워킹 랙 또는 캐비닛에 의해 실시되는 독립형 장치일 수 있고 네트워크 연결을 통해 칩셋(106)과 통신한다.With continuing reference to FIG. 1, the multiple device controller 108 may be configured to communicate with the host CPU 102 over the communication link 112 to receive and respond to instructions regarding the storage device 110. In an embodiment, the multiple device controller 108 may be a card that is integrated into the computing device 100 via a connector that supports the communication link 112. According to one embodiment, the multiple device controller 108 may be integrated into the chipset 106. According to another embodiment, the multi-device controller 108 may be a stand-alone device implemented by a modular networking rack or cabinet and communicates with the chipset 106 via a network connection.

실시예에서, 다중 장치 컨트롤러(108)는 안티 멀웨어 관련 동작을 수행하기 위해 신뢰 연결을 통해 호스트 CPU(102)와 (칩셋(106)에 의해) 통신하도록 구성된다. 실시예에서, 다중 장치 컨트롤러(108)는 도시된 바와 같이 서로 결합된 버스(114), 인터페이스 컨트롤러(116), 버퍼(118), 패리티 생성기(120), RAM(random access memory)(122), 마이크로컨트롤러(124), 컨트롤러 펌웨어(126), 및 하나 이상의 저장 장치 컨트롤러(128a, 128b)(집합적으로 128)를 포함한다.In an embodiment, the multi-device controller 108 is configured to communicate (by the chipset 106) with the host CPU 102 over a trusted connection to perform anti-malware related operations. In an embodiment, the multiple device controller 108 includes a bus 114, an interface controller 116, a buffer 118, a parity generator 120, a random access memory (RAM) 122, Microcontroller 124, controller firmware 126, and one or more storage controllers 128a, 128b (collectively 128).

버스(114)는 다중 장치 컨트롤러(108)의 수개의 구성요소 사이에서 저 저항 연결을 제공하도록 구성될 수 있다. 인터페이스 컨트롤러(116)는 통신 링크(112)에 사용되는 프로토콜을 다중 장치 컨트롤러(108)의 구성요소와 호환 가능한 프로토콜로 변환하기 위해 버스(114)를 통신 링크(112)에 통신 가능하게 결합하도록 구성될 수 있다. 버퍼(118)는 버스(114)에 결합되고 마이크로컨트롤러(124)에 일시적 저장을 제공하도록 구성될 수 있다. 패리티 생성기(120)는 버스(114)에 결합될 수 있고 마이크로컨트롤러(124)에 의해 처리된 데이터에 대해 패리티 데이터를 생성시킴으로써 암호화된 통신을 마이크로컨트롤러(124)에 의해 지원하도록 구성될 수 있다. 실시예에서, 패리티 데이터는 또한 하나 이상의 저장 장치(110)상에 저장될 수 있다. 실시예에서, 패리티 생성기(120)는 본 개시의 다양한 실시예에 따른 전용 또는 분산 패리티를 생성시키도록 구성될 수 있다. RAM(122)은 버스(114)에 결합될 수 있고, 명령어 및 그것의 피연산자를 저장하고 제공함으로써 마이크로컨트롤러(124)를 지원하고, 데이터를 호스트 CPU(102)에 송신하고 이로부터 데이터를 수신하는 것을 용이하게 하고, 데이터를 하나 이상의 저장 장치(110)에 저장하고 이로부터 데이터를 검색하는 것을 용이하게 하기 위해 동작 가능하도록 구성될 수 있다. RAM(122)은 본 개시의 수개의 실시예에 따른 SRAM, DRAM, SDRAM, 또는 임의의 다양한 타입의 랜덤 액세스 메모리 중 하나일 수 있다.The bus 114 may be configured to provide a low resistance connection between several components of the multiple device controller 108. The interface controller 116 is configured to communicatively couple the bus 114 to the communication link 112 to convert the protocol used for the communication link 112 to a protocol compatible with the components of the multi- . The buffer 118 may be coupled to the bus 114 and configured to provide temporary storage to the microcontroller 124. Parity generator 120 may be coupled to bus 114 and may be configured to support encrypted communication by microcontroller 124 by generating parity data for data processed by microcontroller 124. [ In an embodiment, parity data may also be stored on one or more storage devices 110. In an embodiment, the parity generator 120 may be configured to generate dedicated or distributed parity according to various embodiments of the present disclosure. The RAM 122 may be coupled to the bus 114 and may support the microcontroller 124 by storing and providing instructions and their operands and may be operable to transmit data to and receive data from the host CPU 102 And to facilitate storing data in one or more storage devices 110 and retrieving data therefrom. RAM 122 may be one of an SRAM, a DRAM, an SDRAM, or any of a variety of types of random access memory, according to some embodiments of the present disclosure.

마이크로컨트롤러(124)는 호스트 CPU(102)로부터 명령어 및 그것의 피연산자를 수신하고 명령어 및 그것의 피연산자를 하나 이상의 저장 장치 컨트롤러(128)에 송신하기 위해 버스(114)에 통신 가능하게 결합될 수 있다. 마이크로컨트롤러(124)는 명령어를 실행하도록 구성될 수 있고 ASIC(application specific integrated circuit), FPGA(field programmable gate array) 등 중 하나 이상을 포함할 수 있다. 마이크로컨트롤러(124)는 데이터를 하나 이상의 저장 장치(110)에 기록하거나 이로부터 데이터를 판독하기 위해 명령어(및 그것의 피연산자, 적용 가능하다면)를 하나 이상의 저장 장치 컨트롤러(128)에 송신하도록 구성될 수 있다. 마이크로컨트롤러(124)는 호스트 CPU(102)로부터 수신된 명령어에 응답하여 하나 이상의 저장 장치(110)로부터 데이터를 판독하고 데이터를 그것에 기록하도록 구성될 수 있다.The microcontroller 124 may be communicatively coupled to the bus 114 to receive the instruction and its operands from the host CPU 102 and to transmit the instruction and its operands to the one or more storage controllers 128 . The microcontroller 124 may be configured to execute instructions and may include one or more of an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), and the like. The microcontroller 124 is configured to send the instruction (and its operands, if applicable) to the one or more storage controllers 128 to write data to or read data from the one or more storage devices 110 . Microcontroller 124 may be configured to read data from and write data to one or more storage devices 110 in response to instructions received from host CPU 102. [

컴퓨터 시스템을 감염시키는 멀웨어는 호스트 CPU로부터 저장 컨트롤러로 송신되는 명령을 변경할 수 있다. 멀웨어가 컴퓨터 시스템을 감염시킬 때, 멀웨어는 종종 멀웨어가 컴퓨터 시스템의 리셋 또는 파워 다운 후에 컴퓨터 시스템의 파워 업시에 동작을 재개하도록 멀웨어 코드 및/또는 데이터를 컴퓨터 시스템의 비휘발성 메모리 또는 영구적 스토리지의 위치에 저장할 것이다. 이전에 논의된 바와 같이, 일부 멀웨어는 운영 체제의 더 높은 특권 부분, 예를 들어 커널을 감염시킬 수 있다. 그 다음, 멀웨어는 멀웨어 코드 및/또는 데이터를 저장하고 있는 비휘발성 메모리 또는 영구적 스토리지 내의 위치들을 통해 판독 또는 기록하기 위해 AVS 또는 다른 프로그램에 의한 시도를 재전송하도록 운영 체제에 대한 특권 액세스에 영향을 미칠 수 있다. 예를 들어, 컴퓨터 시스템에 의해 실행되고 있는 AVS는 메모리 또는 저장 장치의 각각의 위치를 판독함으로써 멀웨이를 나타내는 패턴을 검색하기 위해 비휘발성 메모리 또는 영구적 스토리지를 스캔하려고 시도할 수 있다. 깊게 뿌리 내린 멀웨어는 비휘발성 메모리 또는 영구적 스토리지의 컨트롤러에 송신되는 판독 또는 기록 명령의 어드레스를 변경시킴으로써 특정 메모리의 위치를 판독하거나 기록하기 위해 AVS에 의한 시도를 차단할 수 있다. 따라서, 비휘발성 메모리 또는 영구적 스토리지의 컨트롤러에 대한 신뢰 연결 없이 높은 특권 액세스를 사용하여 멀웨어를 제거하는 것은 어려울 수 있다.Malware that infects a computer system may change instructions sent from the host CPU to the storage controller. When malware infects a computer system, the malware often renders the malware code and / or data to a nonvolatile memory or permanent storage location of the computer system so that the malware resumes operation upon power up of the computer system after a reset or power down of the computer system Lt; / RTI > As discussed previously, some malware may infect a higher privileged portion of the operating system, such as the kernel. Then, malware will affect privileged access to the operating system to resend attempts by AVS or other programs to read or write to non-volatile memory or locations in persistent storage that store malware code and / or data . For example, an AVS running by a computer system may attempt to scan non-volatile memory or persistent storage to retrieve a pattern representing the way by reading the location of each of the memory or storage devices. Deeply rooted malware can block attempts by the AVS to read or write to the location of a particular memory by changing the address of a read or write command sent to the controller of the nonvolatile memory or permanent storage. Thus, it may be difficult to remove malware using high privileged access without a trusted connection to the controller of non-volatile memory or persistent storage.

실시예에서, 마이크로컨트롤러(124)는 다중 장치 컨트롤러(108)와 호스트 CPU(102)에 의해 실행되는, AVS와 같은 프로그램 사이에서 신뢰 연결을 설정하고 유지하기 위해 컨트롤러 펌웨어(126)의 명령을 실행하도록 구성될 수 있다. 컨트롤러 펌웨어(126)는 마이크로컨트롤러(125)가 암호화 기능을 수행하게 하도록 구성될 수 있다. 구체적으로, 컨트롤러 펌웨어(126)는 마이크로컨트롤러(124)에 의해 실행될 때, 다중 장치 컨트롤러(108)가 호스트 CPU(102)에 의해 실행되는 AVS와 대역 외 연결을 설정할 수 있게 하는 명령어를 포함할 수 있다. 예를 들어, 컨트롤러 펌웨어(126)는 마이크로컨트롤러(124)가 AVS에 의해 개시되는 신뢰 연결 프로토콜에 응답하도록 구성될 수 있다. 실시예에서, 컨트롤러 펌웨어(126)는 신뢰 연결을 설정하기 위해 AVS에 의한 요청을 수신하는 것에 응답하여 마이크로컨트롤러(124)가 AVS로부터 서명 인증서를 요청하여 AVS의 인가를 승인하여 신뢰 연결을 설정하게 하도록 구성될 수 있다. 컨트롤러 펌웨어(126)는 AVS로부터 수신된 메시지를 복호화하기 위해, AVS의 인증서에 대해 공개 키와 같은 복호화 코드를 포함할 수 있다. 부가적으로, 컨트롤러 펌웨어(126)는 비밀 키를 갖는 컨트롤러 인증서를 포함할 수 있으므로, AVS 및 다중 장치 컨트롤러(108)는 암호화의 듀얼 레벨을 이용한다. AVS와 다중 장치 컨트롤러(108) 사이의 이러한 통신은 호스트 CPU(102)에 의해 실행되는 운영 체제와 같은 다른 프로그램에 의해 다중 장치 컨트롤러(108)에 발행되는 명령을 판독/기록하기 위해 병렬로 동시에 생성될 수 있다. 따라서, 신뢰 및 인증 연결은 다중 장치 컨트롤러(108)와 호스트 CPU(102)에 의해 실행되는 프로그램들 사이의 대역 외에서 설정될 수 있다.The microcontroller 124 executes the instructions of the controller firmware 126 to establish and maintain a trusted connection between the multiple device controller 108 and the host CPU 102, . The controller firmware 126 may be configured to cause the microcontroller 125 to perform the encryption function. Specifically, controller firmware 126 may include instructions that, when executed by microcontroller 124, enable multi-device controller 108 to establish an out-of-band connection with an AVS executed by host CPU 102 have. For example, the controller firmware 126 may be configured so that the microcontroller 124 responds to a trusted connection protocol initiated by the AVS. In an embodiment, the controller firmware 126 may cause the microcontroller 124 to request a signing certificate from the AVS in response to receiving a request by the AVS to establish a trusted connection, to authorize the AVS to establish a trusted connection . Controller firmware 126 may include a decryption code such as a public key for the certificate of the AVS to decrypt the message received from the AVS. Additionally, the controller firmware 126 may include a controller certificate with a secret key, so that the AVS and the multiple device controller 108 use a dual level of encryption. This communication between the AVS and the multi-device controller 108 is generated concurrently in parallel to read / write commands issued to the multi-device controller 108 by another program, such as an operating system executed by the host CPU 102 . Thus, the trust and authentication connection can be established out-of-band between the programs executed by the multi-device controller 108 and the host CPU 102.

컨트롤러 펌웨어(126)는 다중 장치 컨트롤러(108)와 호스트 CPU(102)에 의해 실행되는 프로그램 사이에서 부가 암호화 통신을 지원하도록 구성될 수 있다. 일 실시예에 따르면, AVS는 더미 어드레스를 사용하여 판독/기록 명령을 다중 장치 컨트롤러(108)에 발행할 수 있고, AVS는 명령의 페이로드 또는 피연산자로 실제 판독/기록 어드레스를 암호화할 수 있다. 일 실시예에 따르면, AVS는 다중 장치 컨트롤러(108)의 인증서의 공개키를 사용하는 것에 더하여 피연산자를 AVS의 인증서의 비밀 키로 암호화함으로써 피연산자로 실제 판독/기록 어드레스를 암호화할 수 있다. 종종, 멀웨어는 멀웨어에 의해 점유되는 메모리/저장 위치에 전송되는 명령을 재전송하려고 시도할 수 있다. 그러나, 이러한 명령과 연관된 위치 어드레스가 더미 어드레스이므로, 멀웨어는 명령이 멀웨어에 의해 점유된 메모리 위치에 재전송되는 것으로 나타나지 않기 때문에, 이러한 명령을 무시할 가능성이 있을 것이다. 멀웨어는 적어도 2개의 이유로 명령의 피연산자로 암호화된 어드레스를 갖는 이러한 명령을 재전송할 가능성이 없을 것이다. 첫 번째, 멀웨어는 명령이 전송되는 실제 어드레스가 명령의 페이로드 또는 피연산자로 수행되기 때문에 명령을 재전송할 가능성이 없을 것이다. 두 번째, 멀웨어는 암호화된 피연산자를 복호화하기 위해 사용되는 복호화 코드, 공개 키, 비밀 키, 및/또는 유사한 기술이 실시예에서 컨트롤러 펌웨어(126) 내에 저장되기 때문에 명령을 재전송할 가능성이 없을 것이다. 따라서, 멀웨어에 의한 재전송 시도는 다중 장치 컨트롤러(108)가 AVS로부터 수신된 명령을 인증하려고 시도할 때 검출 가능하고 보고 가능할 것이다. 공개 키 기반 구조와 연관된 암호화 기술이 본 명세서에서 설명되지만, 대체 실시예에서 컨트롤러 펌웨어(126)는 다중 장치 컨트롤러(108)가 당업자에게 공지된 다른 암호화 기술을 사용함으로써 호스트 CPU(102)에 의해 실행되는 프로그램과 통신할 수 있게 하도록 구성될 수 있다.The controller firmware 126 may be configured to support additional cryptographic communication between the multiple device controller 108 and a program executed by the host CPU 102. [ According to one embodiment, the AVS may issue a read / write command to the multi-device controller 108 using the dummy address and the AVS may encrypt the actual read / write address with the payload or operand of the command. According to one embodiment, in addition to using the public key of the certificate of the multi-device controller 108, the AVS may encrypt the actual read / write address with the operand by encrypting the operand with the secret key of the certificate of the AVS. Often, malware can attempt to retransmit commands that are sent to memory / storage locations occupied by malware. However, since the location address associated with this command is a dummy address, there is a possibility that the malware will ignore such a command, since the command does not appear to be retransmitted to the memory location occupied by the malware. The malware will not be able to resend such an instruction with an address encrypted with the operand of the instruction for at least two reasons. First, malware will not be able to retransmit commands because the actual address at which the command is sent is done with the payload or operand of the command. Secondly, the malware will not be able to retransmit the command because the decryption code, public key, secret key, and / or similar techniques used to decrypt the encrypted operand are stored in the controller firmware 126 in the embodiment. Thus, a retry attempt by malware will be detectable and reportable when the multi-device controller 108 attempts to authenticate an instruction received from the AVS. Although an encryption technique associated with a public key infrastructure is described herein, controller firmware 126 in an alternate embodiment may be implemented by the host CPU 102 by way of the multi-device controller 108 using other encryption techniques known to those skilled in the art To communicate with a program that is being executed.

컨트롤러 펌웨어(126)는 펌웨어 서포트(130)를 이용함으로써 상술된 암호화 기능을 수행하도록 구성될 수 있다. 실시예에서, 펌웨어 서포트(130)는 상술된 암호화 기능을 지원하는 수개의 논리 블록을 포함할 수 있다. 펌웨어 서포트(130)는 명령 프로세서(132), 판독/기록 어드레스 생성기(134), 패리티 생성기(136), 및 암호화 및 MAC(message authentication code) 서포트(138)를 포함할 수 있다. 펌웨어 서포트(130)는 본 개시의 일 실시예에 따른 플래시와 같은 갱신 가능한 비휘발성 메모리에 저장될 수 있다. 암호화 및 MAC 서포트(138)는 마이크로컨트롤러(124)가 메시지를 암호화 및 복호화하게 하고, AVS와 같은 호스트 CPU(102)에 의해 실행되는 프로그램의 인가를 검증하게 하고, 프로그램과 하나 이상의 신뢰 연결을 유지하게 하기 위해 명령 프로세서(132), 판독/기록 어드레스 생성기(134), 및 패리티 생성기(136)와 협력하도록 구성될 수 있다.Controller firmware 126 may be configured to perform the encryption function described above by utilizing firmware support 130. [ In an embodiment, the firmware support 130 may include several logical blocks that support the encryption function described above. The firmware support 130 may include an instruction processor 132, a read / write address generator 134, a parity generator 136, and an encryption and message authentication code (MAC) The firmware support 130 may be stored in an updatable non-volatile memory such as flash according to one embodiment of the present disclosure. The encryption and MAC support 138 allows the microcontroller 124 to encrypt and decrypt the message, verify the authorization of the program to be executed by the host CPU 102, such as the AVS, maintains one or more trusted connections with the program Read / write address generator 134, and parity generator 136 to make the data to be written to the processor.

하나 이상의 저장 장치 컨트롤러(128)는 버스(114) 및 하나 이상의 저장 장치(110)에 결합될 수 있다.One or more storage controllers 128 may be coupled to bus 114 and one or more storage devices 110.

하나 이상의 저장 장치(110)는 상응하는 통신 링크(140a, 140b)(집합적으로 140)를 통해 다중 장치 컨트롤러(108)에 통신 가능하게 결합될 수 있다. 하나 이상의 저장 장치(110)는 하나 이상의 HDD(hard disk drive), SSD(solid-state drive), 또는 다른 비휘발성 메모리일 수 있다. 하나 이상의 저장 장치(110)는 다중 장치 컨트롤러(108)에 의해 판독되거나 기록되도록 통신 가능하게 결합되는 독립 디스크의 어레이를 포함할 수 있다. 통신 링크(140)는 집합적으로 본 개시의 다양한 실시예에 따른 SCSI(small computer system interface), IDE(integrated drive electronics) 인터페이스, 또는 다른 유사한 저장 인터페이스를 형성할 수 있다.One or more storage devices 110 may be communicatively coupled to the multiple device controller 108 via a corresponding communication link 140a, 140b (collectively 140). The one or more storage devices 110 may be one or more hard disk drives (HDDs), solid-state drives (SSDs), or other non-volatile memory. The one or more storage devices 110 may include an array of independent disks communicatively coupled to be read or written by the multiple device controller 108. The communication link 140 may collectively form a small computer system interface (SCSI), an integrated drive electronics (IDE) interface, or other similar storage interface according to various embodiments of the present disclosure.

실시예에서, 하나 이상의 저장 장치(110)는 일 실시예에 따른 다중 장치 컨트롤러(108)에 의한 동작에 응답하여 스트라이프 방식으로 데이터를 저장하고 검색하도록 구성될 수 있다. 예를 들어, 데이터는 패리티, 미러링, 또는 리던던시 없이 스트라이프 방식으로 하나 이상의 저장 장치(110)상에 저장될 수 있다. 다른 예로서, 데이터는 바이트 레벨 스트라이핑 및 전용 패리티를 사용하여 스트라이프 방식으로 하나 이상의 저장 장치(110)상에 저장될 수 있다. 또 다른 예로서, 데이터는 비트 레벨, 바이트 레벨, 및 블록 레벨 스트라이핑 중 하나를 사용하고 전용 패리티 및 분산 패리티 중 하나를 사용하여 하나 이상의 저장 장치(110)상에 저장될 수 있다. 결과적으로, 하나 이상의 저장 장치(110)는 표준 RAID 레벨 중 임의의 하나 이상, 예를 들어 RAID 레벨 0-6에서 RAID(redundant array of inexpensive disks) 구성 내의 다중 장치 컨트롤러(108)에 의해 동작되도록 구성될 수 있다.In an embodiment, the one or more storage devices 110 may be configured to store and retrieve data in a striped fashion in response to operations by the multiple device controller 108 in accordance with an embodiment. For example, data may be stored on one or more storage devices 110 in a striped fashion without parity, mirroring, or redundancy. As another example, data may be stored on one or more storage devices 110 in striped fashion using byte-level striping and dedicated parity. As another example, data may be stored on one or more storage devices 110 using one of bit-level, byte-level, and block-level striping and using either dedicated parity or distributed parity. As a result, the one or more storage devices 110 may be configured to be operated by multiple device controllers 108 in any one or more of the standard RAID levels, e.g., RAID levels 0-6 in a redundant array of inexpensive disks (RAID) .

AVS는 멀웨어의 존재를 검출하기 위해 AVS와 다중 장치 컨트롤러(108) 사이의 이전에 설명된 신뢰 연결에 의존할 수 있다. 예를 들어, AVS가 다중 장치 컨트롤러(108)와 신뢰 연결을 설정할 수 없는 경우, 또는 판독/기록 명령이 거절되거나 부정확한 데이터를 야기하는 경우이다. 실시예에서, AVS는 멀웨어가 저장 장치(110) 중 하나 이상에 존재할 수 있다는 것을 사용자에게 통지하는 표시를 디스플레이에 제공할 수 있다. 부가적으로 또는 대안으로, AVS는 멀웨어가 하나 이상의 저장 장치(110)상에 존재할 수 있다는 전자 통지를 하나 이상의 사용자에게 전송할 수 있으며, 그 결과 정확한 조치가 취해질 수 있다.The AVS may rely on the previously described trusted connection between the AVS and the multi-device controller 108 to detect the presence of malware. For example, if the AVS can not establish a trusted connection with the multi-device controller 108, or if the read / write command is rejected or causes inaccurate data. In an embodiment, the AVS may provide an indication to the display to notify the user that malware may reside in one or more of the storage devices 110. Additionally or alternatively, the AVS may send an electronic notification to one or more users that the malware may reside on one or more storage devices 110, so that corrective action can be taken.

유리하게, 다중 장치 컨트롤러(108) 내의 암호화 기능의 포함은 호스트 CPU(102)가 다중 장치 컨트롤러(108)와 호스트 CPU(102)에 의해 실행되는 하나 이상의 프로그램 사이에서 신뢰 연결을 설정하고 유지할 수 있게 한다. 신뢰 연결은 안티 멀웨어 프로그램에 하나 이상의 저장 장치(110)에 저장된 멀웨어를 (예를 들어 중복 기재) 스캔하고 정정하는 능력을 제공한다. 신뢰 연결은 멀웨어가 컴퓨팅 장치(100) 내에 높은 특권 액세스를 달성했을 때에도, 안티 멀웨어 프로그램에 멀웨어를 정정하는 능력을 제공한다.Advantageously, the inclusion of encryption functionality within the multiple device controller 108 allows the host CPU 102 to establish and maintain a trusted connection between multiple device controllers 108 and one or more programs executed by the host CPU 102 do. Trusted connections provide the ability to scan and correct malware (e.g., redundant description) stored in one or more storage devices 110 to an anti-malware program. Trusted connections provide the ability to correct malware in anti-malware programs even when the malware has achieved high privileged access within the computing device 100.

도 2는 다양한 실시예에 따른 다중 장치 컨트롤러(108)와 같은 복수의 저장 장치의 컨트롤러를 동작시키는 방법(200)을 예시한다. 블록(202)에서, 방법 (200)은 복수의 저장 장치의 컨트롤러에 의해, 명목상 안티 멀웨어 보호 관련 동작(예를 들어, 호스트 CPU(102)에 의해 실행되는 AVS에 의해 개시되는)과 연관될 수 있는 제 1 명령어를 수신하는 단계를 포함할 수 있다. 컨트롤러는 호스트 CPU(102)로부터 제 1 명령어를 수신할 수 있으며, 이는 다중 장치 컨트롤러(108)에 결합될 수 있다. 제 1 명령어는 제 1 어드레스 및 피연산자를 포함할 수 있다. 제 1 어드레스는 저장 장치의 제 1 하나 이상의 저장 위치를 지칭할 수 있다.FIG. 2 illustrates a method 200 of operating a controller of a plurality of storage devices, such as multiple device controller 108, in accordance with various embodiments. At block 202, the method 200 may be associated with a nominal antimalware protection related operation (e.g., initiated by an AVS executed by the host CPU 102) by a controller of the plurality of storage devices And receiving a first instruction having a first address. The controller may receive a first instruction from the host CPU 102, which may be coupled to the multiple device controller 108. The first instruction may comprise a first address and an operand. The first address may refer to a first one or more storage locations of the storage device.

도 1과 관련하여 상기 논의된 바와 같이, 호스트 CPU(102)에 의해 실행되는 AVS는 제 1 명령어의 피연산자를 암호화하기 위해, 하나 이상의 암호화 키, 예를 들어 AVS의 비밀 암호화 키 및 다중 장치 컨트롤러(108)의 공개 암호화 키를 사용할 수 있다.As discussed above in connection with FIG. 1, the AVS executed by the host CPU 102 may include one or more encryption keys, for example AVS secret encryption keys, and a multi-device controller (not shown) to encrypt the operands of the first instruction 108 may be used.

블록(204)에서, 방법(200)은 피연산자로부터, 다중 장치 컨트롤러(108)에 의해, 제 2 명령어를 복구하는 단계를 포함할 수 있다. 제 2 명령어는 복수의 저장 장치의 제 2 하나 이상의 저장 위치에서 동작될 수 있다. 제 2 명령어는 실질적으로 안티 멀웨어 보호 관련 동작과 연관될 수 있다. 실시예에서, 제 1 및 제 2 하나 이상의 저장 위치는 적어도 하나의 저장 위치에 따라 다를 수 있다.At block 204, the method 200 may include restoring the second instruction from the operand, by the multi-device controller 108. The second instruction may be operated in a second one or more storage locations of the plurality of storage devices. The second instruction may be substantially associated with anti-malware protection related operations. In an embodiment, the first and second one or more storage locations may differ depending on at least one storage location.

컨트롤러가 제 1 명령어의 피연산자로부터 제 2 명령어를 복구할 수 있게 하는 것은 멀웨이가 안티 멀웨어 보호 관련 동작의 타깃 저장 위치를 검색하는 것을 방지할 수 있다. 일 실시예에 따르면, 제 2 명령어는 멀웨어가 안티 멀웨어 보호 관련 동작을 검색하는 것을 더 방지하기 위해 암호화될 수 있다.Allowing the controller to recover the second instruction from the operand of the first instruction may prevent the way to retrieve the target storage location of the anti-malware protection related operation. According to one embodiment, the second instruction may be encrypted to further prevent malware from retrieving anti-malware protection related actions.

블록(206)에서, 방법(200)은 안티 멀웨어 보호 관련 동작을 실시하기 위해 제 2 하나 이상의 저장 위치에서 동작하도록 다중 장치 컨트롤러(108)에 의해 제 2 명령어를 실행하는 단계를 포함할 수 있다.At block 206, the method 200 may include executing a second instruction by the multiple device controller 108 to operate at a second one or more storage locations to perform anti-malware protection related operations.

제 2 하나 이상의 저장 위치에서 동작하는 단계는 저장 위치에 상주하는 멀웨이를 나타내는 패턴을 검색하기 위해 제 2 하나 이상의 저장 위치를 판독하는 단계를 포함할 수 있다. 부가적으로, 제 2 하나 이상의 저장 위치에서 동작하는 단계는 저장 위치에 상주하는 멀웨어를 제거하기 위해 새로운 데이터를 제 2 하나 이상의 저장 위치에 기록하는 단계를 포함할 수 있다.Operating at a second one or more storage locations may include reading a second one or more storage locations to retrieve a pattern representing a multiway that resides in the storage location. Additionally, operating at a second one or more storage locations may include writing new data to a second one or more storage locations to remove malware residing in the storage location.

블록(208)에서, 방법(200)은 제 2 명령어가 판독 명령어이면, 다중 장치 컨트롤러(108)에 의해 제 2 하나 이상의 저장 위치로부터 판독된 데이터를 어셈블링하여 어셈블링된 데이터를 형성하는 단계와, 다중 장치 컨트롤러(108)에 의해 어셈블링된 데이터를 제 1 명령어의 판독 출력 데이터로서 호스트 CPU(102)로 반환하는 단계를 포함한다.At block 208, the method 200 includes assembling the data read from the second one or more storage locations by the multi-device controller 108 to form assembled data if the second instruction is a read command , And returning the data assembled by the multi-device controller 108 to the host CPU 102 as readout data of the first instruction.

방법(200)은 컴퓨팅 장치(100)에 의해 전적으로 또는 부분적으로 실시될 수 있다. 예를 들어, 컴퓨팅 장치(100)는 다중 장치 컨트롤러(108)가 명령어의 실행에 응답하여 방법(200)의 동작 중 어느 것 또는 모두를 수행할 수 있게 하도록 구성된 명령어로 구체화된 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 일 실시예에 따르면, 컴퓨터 판독 가능 매체는 비일시적 컴퓨터 판독 가능 저장 매체일 수 있다. 더욱이, 도 1과 관련하여 설명된 기술 또는 구성 요소 중 하나 이상은 방법(200)과 결합되거나 방법에 사용될 수 있다.The method 200 may be wholly or partially implemented by the computing device 100. For example, the computing device 100 may be a computer readable storage medium embodied in instructions configured to enable the multi-device controller 108 to perform any or all of the operations of the method 200 in response to the execution of the instructions. . ≪ / RTI > According to one embodiment, the computer readable medium can be a non-transitory computer readable storage medium. Furthermore, one or more of the techniques or components described in connection with FIG. 1 may be combined with the method 200 or used in the method.

도 3은 본 개시의 다양한 실시예에 따른 안티 멀웨어 관련 동작을 수행하도록 구성된 시스템(300)을 예시한다. 시스템(300)은 하나 이상의 저장 장치(110)에 통신 가능하게 결합된 호스트 장치(302), 및 백엔드 서버(303)를 포함할 수 있다.FIG. 3 illustrates a system 300 configured to perform anti-malware related operations in accordance with various embodiments of the present disclosure. The system 300 may include a host device 302 communicatively coupled to one or more storage devices 110, and a back-end server 303.

호스트 장치(302)는 안티 멀웨어 관련 동작을 수행하기 위해 신뢰 연결 또는 대역 외 제 2 채널를 지원하는 소프트웨어 및 하드웨어를 포함할 수 있다. 호스트 장치(302)는 제 1 채널(308)을 통해 다중 장치 컨트롤러(306)에 통신 가능하게 결합되는 운영 체제(304)를 포함할 수 있다. 제 1 채널(308)은 호스트 CPU(도 1에 도시된 바와 같은)와 저장 장치 컨트롤러 사이에서 사용되는 다수의 표준 인터페이스 중 어느 하나, 예를 들어 ATA, PCI, 이더넷 등일 수 있다. 제 1 채널(308)은 다중 장치 컨트롤러(306)와 운영 체제(304)를 실행하는 하드웨어 사이의 물리 연결을 나타낸다. 제 1 채널(308)은 또한 운영 체제(304)와 컨트롤러 펌웨어(310) 사이의 논리 연결을 나타낸다.Host device 302 may include software and hardware to support a trusted connection or an out-of-band second channel to perform anti-malware related operations. The host device 302 may include an operating system 304 communicatively coupled to the multi-device controller 306 via a first channel 308. The multi- The first channel 308 may be any of a number of standard interfaces, such as ATA, PCI, Ethernet, etc., used between the host CPU (as shown in FIG. 1) and the storage controller. The first channel 308 represents a physical connection between the multiple device controller 306 and the hardware executing the operating system 304. The first channel 308 also represents a logical connection between the operating system 304 and the controller firmware 310.

운영 체제(304)는 본 개시의 다양한 실시예에 따른 마이크로소프트 코포레이션에 의해 개발된 윈도우 제품, 유닉스 기반 환경, 또는 OS X와 같은 매킨토시 관련 환경일 수 있다. 운영 체제(304)는 파일 시스템(312) 및 개인 SDK(software development kit)(314)를 포함할 수 있다. 파일 시스템(312)은 사용자 및 운영 체제(304)가 하나 이상의 저장 장치(110)상에 저장된 데이터를 구성하고 효율적으로 검색할 수 있게 하는 운영 체제(304)에 의해 동작 가능한 프로그램일 수 있다. 개인 SDK(314)는 운영 체제(304)에 의해 동작 가능한 소프트웨어의 개발을 가능하게 하는 다양한 툴을 포함할 수 있다.The operating system 304 may be a Windows product developed by Microsoft Corporation in accordance with various embodiments of the present disclosure, a UNIX based environment, or a Macintosh related environment such as OS X. [ The operating system 304 may include a file system 312 and a personal software development kit (SDK) 314. The file system 312 may be a program operable by an operating system 304 that allows the user and the operating system 304 to organize and efficiently retrieve data stored on one or more storage devices 110. The personal SDK 314 may include various tools that enable development of software operable by the operating system 304.

다중 장치 컨트롤러(306)는 제 1 통신 채널(308)를 유지하는 것에 더하여 제 2 및 신뢰 통신 채널(316)을 설정하고 유지하도록 구성될 수 있다. 다중 장치 컨트롤러(306)는 컨트롤러 펌웨어(310), 메모리(318), 및 시스템 온 칩(320)을 포함할 수 있다. 일 실시예에 따르면, 다중 장치 컨트롤러(306)는 도 1의 다중 장치 컨트롤러(108)일 수 있다.The multiple device controller 306 may be configured to set and maintain a second and trusted communication channel 316 in addition to maintaining the first communication channel 308. [ The multi-device controller 306 may include controller firmware 310, memory 318, and a system-on-chip 320. According to one embodiment, the multiple device controller 306 may be the multiple device controller 108 of FIG.

컨트롤러 펌웨어(310)는 프로그램으로 신뢰 채널을 설정하고 유지하는 것 및 호스트 장치(302) 외부에 있는 컴퓨터 시스템을 지원하는 암호화 기능성을 포함할 수 있다. 컨트롤러 펌웨어(310)는 저장 컨트롤러의 표준 동작에 따라 운영 체제(304)로부터 수신된 명령어에 응답하여 다중 장치 컨트롤러(306)가 하나 이상의 저장 장치(110)상에서 동작할 수 있게 하도록 구성된 다수의 명령어를 포함할 수 있다. 부가적으로, 컨트롤러 펌웨어(310)는 다중 장치 컨트롤러(306)에 의해 실행될 때, 다중 장치 컨트롤러(306)가 신뢰 채널(316)을 설정할 수 있게 하는 다수의 명령어를 포함할 수 있다.Controller firmware 310 may include establishing and maintaining a trusted channel as a program and cryptographic functionality to support a computer system external to host device 302. [ The controller firmware 310 includes a plurality of instructions configured to enable the multiple device controller 306 to operate on one or more storage devices 110 in response to an instruction received from the operating system 304 in accordance with the standard operation of the storage controller . The controller firmware 310 may include a plurality of instructions that when enabled by the multiple device controller 306 enable the multiple device controller 306 to establish the trust channel 316. [

컨트롤러 펌웨어(310)는 펌웨어 서포트(322) 및 신뢰 API(application programming interface)(324)를 포함할 수 있고, 컨트롤러 펌웨어(310)는 신뢰 채널(316)을 설정하기 위해 펌웨어 서포트(322) 및 신뢰 API(324)를 이용할 수 있다. 부가적으로, 펌웨어 서포트(322)는 착신 메시지를 복호화하고 인증하기 위해 컨트롤러 펌웨어(310)에 의해 사용될 수 있는 암호화 및 MAC(message authentication code) 서포트를 포함할 수 있다. 예를 들어, 질의 또는 시도가 백엔드 서버(303)에 의해 신뢰 채널(316)을 개시하는 것에 응답하여 컨트롤러 펌웨어(310)는 백엔드 서버(303)로부터 디지털 인증서, 디지털 서명, 또는/및 암호화된 메시지를 요청하기 위해 신뢰 API(324) 및 펌웨어 서포트(322)를 통해 백엔드 서버(303)와 통신할 수 있다. 일 실시예에 따르면, 컨트롤러 펌웨어(310)는 다중 장치 컨트롤러(306)에 의해 디코딩되도록 의도된 메시지를 복호화하는 비밀 키를 갖는 PKI 기반 인증서를 포함할 수 있다. 컨트롤러 펌웨어(310)는 또한 컨트롤러 펌웨어(310)가 백엔드 서버(303)를 인증할 수 있게 하기 위해 제한적으로 분산되는 대칭 또는 공개 암호화 키로 프리로딩될 수 있다. 일련의 핸드셰이크 신호를 통해, 컨트롤러 펌웨어(310) 및 백엔드 서버(303)는 신뢰 채널(316)을 설정할 수 있다. 일 실시예에 따르면, 백엔드 서버(303)는 컨트롤러 펌웨어(310)에서 암호화 키 및 코드를 인증하고 프로비저닝하거나 초기화할 수 있다.Controller firmware 310 may include firmware support 322 and trust application programming interface 324 and controller firmware 310 may include firmware support 322 and trust API 324 may be used. Additionally, the firmware support 322 may include encryption and MAC (message authentication code) support, which may be used by the controller firmware 310 to decrypt and authenticate incoming messages. For example, in response to a query or attempt initiating a trusted channel 316 by the back-end server 303, the controller firmware 310 receives a digital certificate, a digital signature, and / or an encrypted message from the back- To communicate with the back-end server 303 via the trust API 324 and the firmware support 322 to request the request. According to one embodiment, the controller firmware 310 may include a PKI-based certificate with a secret key that decrypts the message intended to be decrypted by the multiple device controller 306. Controller firmware 310 may also be preloaded with a symmetric or public encryption key that is limitedly distributed to enable controller firmware 310 to authenticate backend server 303. [ Through a series of handshake signals, the controller firmware 310 and the back-end server 303 can establish a trust channel 316. [ According to one embodiment, the backend server 303 may authenticate, provision, or initialize the encryption key and code in the controller firmware 310. [

일 실시예에 따르면, 컨트롤러 펌웨어(310)는 다중 장치 컨트롤러(306)에 의해 실행될 때, 다중 장치 컨트롤러(306)가 도 2의 방법(200)의 동작을 실행하게 하는 명령어를 포함할 수 있다.According to one embodiment, the controller firmware 310 may include instructions that when executed by the multiple device controller 306 cause the multiple device controller 306 to execute the operations of the method 200 of FIG.

메모리(318) 및 시스템 온 칩(320)은 데이터를 스트라이핑 방식으로 하나 이상의 저장 장치(110)에 저장하는 것과 관련된 명령어를 수신하고 실행할 시에 다중 장치 컨트롤러(306)를 지원할 수 있다. 예를 들어, 다중 장치 컨트롤러(306)는 패리티를 갖거나 갖지 않고, 비트 레벨, 바이트 레벨, 및 블록 레벨 스트라이핑 방식 중 어느 하나로 데이터를 하나 이상의 저장 장치에 기록하도록 구성될 수 있다.The memory 318 and the system-on-chip 320 may support the multiple device controller 306 upon receiving and executing instructions related to storing data in one or more storage devices 110 in a striping fashion. For example, the multiple device controller 306 may be configured to write data to one or more storage devices, with or without parity, in one of bit level, byte level, and block level striping schemes.

호스트 장치(302)는 안티 멀웨어 보호 관련 동작을 수행하기 위해 호스트 장치(302)의 호스트 CPU에 의해 실행될 수 있는 안티 멀웨어 및/또는 AVS(antivirus software) 애플리케이션(326)을 포함할 수 있다. AVS 애플리케이션(326)은 신뢰 채널(316)을 통해 다중 장치 컨트롤러(306)와 통신할 수 있는 것이 유리할 수 있다. AVS 애플리케이션(326)은 컨트롤러 펌웨어(310)의 신뢰 API(324)에 의해 인식 가능한 프로토콜을 따르도록 AVS 키트(328)를 사용할 수 있다. 백엔드 서버(303)와 유사하게, AVS 애플리케이션(326)은 컨트롤러 펌웨어(310) 내에 저장된 암호화 키 및/또는 코드를 사용하여 다중 장치 컨트롤러(306)에 의해 복호화될 수 있는 메시지를 암호화함으로써 제 2 및 신뢰 통신 채널(330)을 다중 장치 컨트롤러(306)로 개시하고 설정할 수 있다.The host device 302 may include anti-malware and / or antivirus software (AVS) applications 326 that may be executed by the host CPU of the host device 302 to perform anti-malware protection related operations. It may be advantageous for the AVS application 326 to be able to communicate with the multiple device controller 306 via the trusted channel 316. [ The AVS application 326 may use the AVS kit 328 to follow a protocol recognizable by the trust API 324 of the controller firmware 310. [ Similar to the backend server 303, the AVS application 326 encrypts messages that can be decrypted by the multi-device controller 306 using encryption keys and / or code stored in the controller firmware 310, The trusted communication channel 330 may be initiated and configured with the multi-device controller 306. [

AVS 애플리케이션(326)은 하나 이상의 저장 장치(110)의 저장 장치에 상주하는 멀웨어를 식별하고 제거할 수 있다. AVS 애플리케이션(326)은 저장 장치(110)의 판독 명령 및 타깃 저장 위치를 다중 장치 컨트롤러(306)에 송신된 판독 또는 기록 명령어의 피연산자로 삽입하고 암호화함으로써 멀웨어를 식별할 수 있다. AVS 애플리케이션(326)은 판독 데이터를 미리 결정된 패턴과 비교함으로써 저장 위치로부터 판독되는 데이터를 비교하고 저장 위치에 상주하는 멀웨어를 식별한다. 그 다음, AVS 애플리케이션(326)은 멀웨어가 저장 장치상에서 식별되었다는 것을 사용자 또는 전자 시스템에 통지하기 위한 애플리케이션(332)을 사용할 수 있다. 애플리케이션(332)은 감염된 저장 위치를 정정, 즉 소거하기 위해 AVS 애플리케이션(326)을 허가하도록 구성될 수 있거나, AVS 애플리케이션에게 사용자로부터의 추가 명령어를 대기하라고 명령하도록 구성될 수 있다. 따라서, 시스템(300)은 하나 이상의 저장 장치(110)를 갖는 시스템상에서 안티 멀웨어 보호 관련 동작을 실행하기 위해 사용될 수 있다.The AVS application 326 can identify and remove malware residing in the storage of one or more storage devices 110. [ The AVS application 326 may identify the malware by inserting and encrypting the read command and the target storage location of the storage device 110 into the operand of the read or write command sent to the multiple device controller 306. [ The AVS application 326 compares the read data to a predetermined pattern to compare the data read from the storage location and identifies the malware residing in the storage location. The AVS application 326 may then use an application 332 to notify the user or the electronic system that the malware has been identified on the storage device. The application 332 may be configured to authorize the AVS application 326 to correct or delete the infected storage location, or it may be configured to instruct the AVS application to wait for additional instructions from the user. Thus, the system 300 may be used to perform anti-malware protection related operations on a system having one or more storage devices 110. [

도 4는 본 개시의 일 실시예에 따른 복수의 저장 장치의 신뢰 판독을 실행하는 통신 시퀀스(400)를 예시한다. 404에서, 컴퓨팅 장치(100) 또는 호스트 장치(302)상에서 실행하는 AVS 프로그램과 같은 안티 바이러스 및/또는 안티 멀웨어(AV/AM) 에이전트(402)는 명령 어드레스를 세션 키로 암호화함으로써 신뢰 판독 명령 및 판독될 논리 블록 어드레스의 리스트를 발행할 수 있다.FIG. 4 illustrates a communication sequence 400 that performs a trust reading of a plurality of storage devices in accordance with one embodiment of the present disclosure. At 404, an anti-virus and / or anti-malware (AV / AM) agent 402, such as an AVS program running on the computing device 100 or the host device 302 encrypts the command address with the session key, A list of logical block addresses to be issued may be issued.

408에서, 컨트롤러 펌웨어(406)는 AV/AM 에이전트(402)로부터의 요청을 컨트롤러 펌웨어(406) 내에 위치된 세션 키로 인증할 수 있고, 컨트롤러 펌웨어(406)는 명령을 처리할 수 있다.At 408, the controller firmware 406 may authenticate the request from the AV / AM agent 402 with the session key located in the controller firmware 406, and the controller firmware 406 may process the command.

410에서, 컨트롤러 펌웨어(406)는 AV/AM 에이전트(402)에 의해 요청되는 모리 블록 어드레스상의 동작을 위해 판독 요청을 복수의 저장 장치(412)에 발행할 수 있다.At 410, the controller firmware 406 may issue a read request to a plurality of storage devices 412 for operation on the Mori block address requested by the AV / AM agent 402.

414에서, 저장 장치(412)는 요청된 논리 블록 어드레스에 저장된 데이터를 컨트롤러 펌웨어(406)로 반환할 수 있다.At 414, the storage device 412 may return the data stored in the requested logical block address to the controller firmware 406.

416에서, 컨트롤러 펌웨어(406)는 판독 데이터를 어셈블링하고 MAC(message authentication code)를 컴퓨팅할 수 있다. 실시예에서, MAC는 판독 데이터 상에서 해시 함수를 수행함으로써 컴퓨팅될 수 있다.At 416, the controller firmware 406 may assemble read data and compute a message authentication code (MAC). In an embodiment, the MAC may be computed by performing a hash function on the read data.

418에서, 컨트롤러 펌웨어(406)는 세션 키로 암호화되었던 신뢰 판독 데이터로 응답할 수 있다.At 418, the controller firmware 406 may respond with trusted read data that has been encrypted with the session key.

420에서, AV/AM 에이전트(402)는 예를 들어 복호화된 데이터의 MAC를 컴퓨팅하고 AV/AM 에이전트(402)의 MAC를 컨트롤러 펌웨어(406)의 MAC와 비교함으로써 신뢰 판독 데이터의 진정성(authenticity)을 검증할 수 있다.AM agent 402 compares the authenticity of the trusted read data by computing the MAC of the decrypted data and comparing the MAC of the AV / AM agent 402 to the MAC of the controller firmware 406, for example. Can be verified.

422에서, AV/AM 에이전트(402)는 메시지 인증이 실패하면 AV/AM 백엔드(424)에 통지할 수 있다. 그 다음, AV/AM 백엔드(424)는 멀웨어가 신뢰 판독을 방지할 수 있었다는 통지를 하나 이상의 사용자에게 제공할 수 있다.At 422, the AV / AM agent 402 may notify the AV / AM backend 424 if the message authentication fails. The AV / AM backend 424 may then provide a notification to one or more users that the malware could prevent a trusted read.

도 5는 본 개시의 일 실시예에 따른 신뢰 기록을 복수의 저장 장치(412)의 논리 블록 어드레스에 실행하는 통신 시퀀스(500)를 예시한다. 502에서, AV/AM 에이전트(402)는 명령 어드레스를 세션 키로 암호화함으로써 신뢰 기록 명령, 기록될 데이터, 및 동작되거나 기록되는 논리 블록 어드레스의 리스트를 발행할 수 있다.FIG. 5 illustrates a communication sequence 500 that executes a trust record in accordance with one embodiment of the present disclosure at a logical block address of a plurality of storage devices 412. At 502, the AV / AM agent 402 may issue a trust write command, data to be written, and a list of logical block addresses to be operated or written by encrypting the command address with the session key.

504에서, 컨트롤러 펌웨어(406)는 AV/AM 에이전트(402)로부터의 요청을 컨트롤러 펌웨어(406) 내에 위치된 세션 키로 인증할 수 있고, 컨트롤러 펌웨어(406)는 명령을 처리할 수 있다.At 504, the controller firmware 406 may authenticate the request from the AV / AM agent 402 with the session key located in the controller firmware 406, and the controller firmware 406 may process the command.

506에서, 컨트롤러 펌웨어(406)는 AV/AM 에이전트(402)에 의해 요청되는 논리 블록 어드레스에서 기록 요청을 발행된 데이터의 복수의 저장 장치(412)에 발행할 수 있다.At 506, the controller firmware 406 may issue a write request at a logical block address requested by the AV / AM agent 402 to a plurality of storage devices 412 of issued data.

508에서, 컨트롤러 펌웨어(406)는 데이터가 성공적으로 기록되었다는 것을 확인하기 위해 판독 요청을 저장 장치(412)에 발행할 수 있다.At 508, the controller firmware 406 may issue a read request to the storage device 412 to confirm that the data has been successfully written.

510에서, 저장 장치(412)는 논리 블록 어드레스에 저장된 데이터를 컨트롤러 펌웨어(406)로 반환할 수 있다.At 510, the storage device 412 may return the data stored in the logical block address to the controller firmware 406.

512에서, 컨트롤러 펌웨어(406)는 판독 데이터를 어셈블링하고 데이터의 MAC을 컴퓨팅할 수 있다.At 512, the controller firmware 406 can assemble the read data and compute the MAC of the data.

514에서, 컨트롤러 펌웨어(406)는 세션 키로 암호화되었던 기록된 데이터 확인으로 AV/AM 에이전트(402)에 응답할 수 있다.At 514, the controller firmware 406 may respond to the AV / AM agent 402 with the recorded data confirmation that was encrypted with the session key.

516에서, AV/AM 에이전트(402)는 신뢰 기록 데이터의 진정성을 검증할 수 있다.At 516, the AV / AM agent 402 may verify the authenticity of the trustworthy record data.

518에서, AV/AM 에이전트(402)는 메시지 인증이 실패하면 AV/AM 백엔드(424)에 통지할 수 있다.At 518, the AV / AM agent 402 may notify the AV / AM backend 424 if the message authentication fails.

도 6은 AV/AM 에이전트(402)와 컨트롤러 펌웨어(406) 사이에서 신뢰 연결을 유지하는 통신 시퀀스(600)를 예시한다. 602에서, AV/AM 에이전트는 하트비트 메시지를 컨트롤러 펌웨어(406)에 송신할 수 있다. 하트비트 메시지는 메시지의 수신에 확인 응답하기 위해 명령어를 포함하는 암호화된 메시지일 수 있다. AV/AM 에이전트(402)는 하트비트 메시지를 우선 AV/AM 에이전트(402)에 속하는 공개/비밀키 중 비밀 키로 암호화하고 그 다음 컨트롤러 펌웨어(406)에 속하는 공개/비밀 키 쌍 중 공개 키로 암호화할 수 있다.FIG. 6 illustrates a communication sequence 600 that maintains a trusted connection between the AV / AM agent 402 and the controller firmware 406. At 602, the AV / AM agent may send a heartbeat message to the controller firmware 406. The heartbeat message may be an encrypted message that includes an instruction to acknowledge receipt of the message. The AV / AM agent 402 first encrypts the heartbeat message with the secret key of the public / private key belonging to the AV / AM agent 402 and then encrypts it with the public key of the public / secret key pair belonging to the controller firmware 406 .

604에서, 컨트롤러 펌웨어(406)는 AV/AM 에이전트(402)로부터의 요청을 인증하고 하트비트 메시지를 처리할 수 있다. 컨트롤러 펌웨어(406)는 메시지를 첫 번째로 컨트롤러 펌웨어(406)의 비밀 키로 인증하고 두 번째로 AV/AM 에이전트(402)의 공개 키로 복호화함으로써 요청을 인증할 수 있다.At 604, the controller firmware 406 may authenticate the request from the AV / AM agent 402 and process the heartbeat message. The controller firmware 406 may authenticate the request by first authenticating the message with the secret key of the controller firmware 406 and secondly with the public key of the AV / AM agent 402.

606에서, 컨트롤러 펌웨어(406)는 하트비트 메시지를 MAC로 생성시킬 수 있다. MAC는 AV/AM 에이전트(402)에 의해 초기에 암호화되고 송신된 데이터상에서 컴퓨팅될 수 있다.At 606, the controller firmware 406 may generate a heartbeat message as a MAC. The MAC may be computed on data initially encrypted and transmitted by the AV / AM agent 402.

608에서, 컨트롤러 펌웨어(406)는 하트비트 응답 및 MAC으로 응답할 수 있다.At 608, the controller firmware 406 may respond with a heartbeat response and a MAC.

610에서, AV/AM 에이전트(402)는 하트비트 메시지의 진정성을 검증할 수 있다. AV/AM 에이전트(402)와 컨트롤러 펌웨어(406) 사이에서 신뢰 연결을 활성적으로 그리고 주기적으로 유지하고 검증하는 것을 통해서, AV/AM 에이전트는 하트비트 연결이 설명할 수 없는 상태로 방해되면 멀웨어의 새로운 존재를 통지받을 수 있다.At 610, the AV / AM agent 402 may verify the authenticity of the heartbeat message. By actively and periodically maintaining and verifying a trusted connection between the AV / AM agent 402 and the controller firmware 406, the AV / AM agent can determine whether the heartbeat connection is interrupted by an unexplained condition You can be notified of a new existence.

다양한 실시예의 일부 예가 이후에 개시된다.Some examples of various embodiments are disclosed hereinafter.

다양한 실시예에서, 적어도 하나의 컴퓨터 판독 가능 저장 매체는 다수의 저장 장치의 컨트롤러가 컨트롤러에 의한 명령어의 실행에 응답하여 컨트롤러와 결합된 호스트 컴퓨팅 장치로부터 제 1 명령어를 수신할 수 있게 하도록 구성된 다수의 명령어를 가질 수 있다. 제 1 명령어는 제 1 어드레스 및 피연산자를 포함할 수 있다. 제 1 명령어는 명목상 안티 멀웨어 보호 관련 동작과 연관될 수 있고, 제 1 어드레스는 저장 장치의 제 1 하나 이상의 저장 위치를 지칭할 수 있다. 컨트롤러는 또한 피연산자로부터, 저장 장치의 제 2 하나 이상의 저장 위치에서 동작될 수 있는 제 2 명령어를 복구할 수 있다. 제 2 명령어는 실질적으로 안티 멀웨어 보호 관련 동작과 연관될 수 있고, 제 1 및 제 2 하나 이상의 저장 위치는 적어도 하나의 저장 장치에 의해 다르다. 컨트롤러는 안티 멀웨어 보호 관련 동작을 실시하기 위해 제 2 하나 이상의 저장 위치에서 동작하도록 제 2 명령어를 실행할 수 있다. 컨트롤러는 컨트롤러 및 호스트 컴퓨팅 장치를 통신 가능하게 결합하는 신뢰 연결을 통해 제 1 명령어를 수신할 수 있다. 컨트롤러는 컨트롤러를 호스트 컴퓨팅 장치에 결합할 수 있는 제 2 채널을 통해 컨트롤러와 호스트 컴퓨팅 장치 사이에 신뢰 연결을 형성할 수 있다. 컨트롤러 및 호스트 컴퓨팅 장치는 제 1 채널을 통해 서로 더 결합될 수 있다.In various embodiments, the at least one computer-readable storage medium includes a plurality of storage devices configured to allow a controller of the plurality of storage devices to receive a first instruction from a host computing device coupled to the controller in response to execution of the instruction by the controller Command. The first instruction may comprise a first address and an operand. The first instruction may be associated with a nominal antimalware protection related action, and the first address may refer to a first one or more storage locations of the storage device. The controller may also recover from the operand a second instruction that may be operated in a second one or more storage locations of the storage device. The second instruction may be substantially associated with an anti-malware protection related operation, wherein the first and second one or more storage locations differ by at least one storage device. The controller may execute a second instruction to operate at a second one or more storage locations to effect anti-malware protection related operations. The controller may receive the first instruction through a trusted connection communicatively coupling the controller and the host computing device. The controller may establish a trusted connection between the controller and the host computing device via a second channel that can couple the controller to the host computing device. The controller and the host computing device may further be coupled together via a first channel.

다른 실시예에서, 안티 멀웨어 보호 동작은 제 2 하나 이상의 저장 위치에서 수행될 판독 동작 및 기록 동작 중 하나일 수 있다. 판독 동작 동안, 컨트롤러는 제 2 하나 이상의 저장 위치로부터 판독된 데이터를 어셈블링하여 어셈블링된 데이터를 형성하고, 어셈블링된 데이터를 제 1 명령어의 판독 출력 데이터로서 호스트 컴퓨팅 장치로 반환할 수 있다.In another embodiment, the anti-malware protection operation may be one of a read operation and a write operation to be performed at the second one or more storage locations. During a read operation, the controller may assemble the read data from the second one or more storage locations to form assembled data, and return the assembled data to the host computing device as the read output data of the first instruction.

다른 실시예에서, 피연산자로부터 제 2 명령어를 복구하는 컨트롤러는 명령어에 기초하여 피연산자를 디코딩하거나 복호화하도록 구성될 수 있다.In another embodiment, the controller for recovering the second instruction from the operand may be configured to decode or decode the operand based on the instruction.

다른 실시예에서, 컨트롤러는 피연산자로부터 제 2 명령어를 디코딩하거나 복호화하기 위해 비밀 키를 사용할 수 있다.In another embodiment, the controller may use the secret key to decode or decode the second instruction from the operand.

다른 실시예에서, 명령어는 컨트롤러의 인증서를 포함할 수 있다. 인증서는 비밀 키를 포함할 수 있다.In another embodiment, the instruction may include a certificate of the controller. The certificate may include a secret key.

다른 실시예에서, 저장 장치의 컨트롤러는 저장 장치의 제 2 하나 이상의 저장 위치에서 동작하도록 제 2 명령어를 실행할 수 있는 반면, 저장 장치는 독립 디스크의 어레이를 포함한다.In another embodiment, the controller of the storage device may execute a second instruction to operate in a second one or more storage locations of the storage device, while the storage device comprises an array of independent disks.

다양한 실시예에서, 데이터는 비트 레벨, 바이트 레벨, 및 블록 레벨 스트라이핑 중 하나를 사용하고 전용 패리티 및 분산 패리티 중 하나를 사용하여 독립 디스크의 어레이에 스트라이프 방식으로 저장될 수 있다. 데이터는 바이트 레벨 스트라이핑 및 전용 패리티를 사용하여 독립 디스크의 어레이에 스트라이프 방식으로 저장될 수 있다. 제 2 명령어는 멀웨어가 안티 멀웨어 보호 관련 동작을 검출하는 것을 방지하기 위해 암호화될 수 있다.In various embodiments, the data may be stored in a striped fashion on an array of independent disks using either bit-level, byte-level, and block-level striping and using either dedicated parity or distributed parity. Data can be stored in stripes on an array of independent disks using byte-level striping and dedicated parity. The second instruction may be encrypted to prevent malware from detecting anti-malware protection related actions.

다양한 실시예에서, 저장 장치의 컨트롤러는 듀얼 암호화 층을 사용할 수 있다.In various embodiments, the controller of the storage device may use a dual encryption layer.

실시예에서, 방법은 다수의 저장 장치의 컨트롤러에 의해, 호스트 컴퓨팅 장치로부터 제 1 명령어를 수신하는 단계를 포함할 수 있다. 호스트 컴퓨팅 장치는 컨트롤러에 결합될 수 있다. 제 1 명령어는 제 1 어드레스 및 피연산자를 포함할 수 있다. 제 1 명령어는 명목상 안티 멀웨어 보호 관련 동작과 연관될 수 있고, 제 1 어드레스는 저장 장치의 제 1 하나 이상의 저장 위치를 지칭할 수 있다. 방법은 피연산자로부터, 컨트롤러에 의해, 저장 장치의 제 2 하나 이상의 저장 위치에서 동작될 제 2 명령어를 복구하는 단계를 포함할 수 있다. 제 2 명령어는 실질적으로 안티 멀웨어 보호 관련 동작과 연관될 수 있고, 제 1 및 제 2 하나 이상의 저장 위치는 적어도 하나의 저장 위치에 따라 다를 수 있다. 방법은 안티 멀웨어 보호 관련 동작을 실시하기 위해 제 2 명령어상에서 동작하도록 컨트롤러에 의해, 제 2 명령어를 실행하는 단계를 포함할 수 있다.In an embodiment, the method may include receiving a first instruction from a host computing device by a controller of the plurality of storage devices. The host computing device may be coupled to the controller. The first instruction may comprise a first address and an operand. The first instruction may be associated with a nominal antimalware protection related action, and the first address may refer to a first one or more storage locations of the storage device. The method may include recovering, by the controller, a second instruction to be operated at a second one or more storage locations of the storage device from the operand. The second instruction may be substantially associated with anti-malware protection related operations, and the first and second one or more storage locations may be different depending on at least one storage location. The method may include executing a second instruction by a controller to operate on a second instruction to perform an anti-malware protection related operation.

다양한 실시예에 따르면, 수신하는 단계는 제 1 명령어를 컨트롤러 및 호스트 컴퓨팅 장치를 통신 가능하게 결합하는 신뢰 연결을 통해 수신하는 단계를 포함할 수 있다. 방법은 컨트롤러에 의해, 제 2 채널을 통해 컨트롤러와 호스트 컴퓨팅 장치 사이에 신뢰 연결을 형성하는 단계를 더 포함할 수 있다. 제 2 채널은 컨트롤러를 호스트 컴퓨팅 장치에 결합할 수 있다. 컨트롤러 및 호스트 컴퓨팅 장치는 제 1 채널을 통해 서로 더 결합될 수 있다. 피연산자는 암호화될 수 있고, 피연산자로부터 제 2 명령어를 복구하는 단계는 비밀 키를 사용함으로써 피연산자를 복호화하는 단계를 포함할 수 있다.According to various embodiments, the receiving step may include receiving a first instruction through a trusted connection communicatively coupling the controller and the host computing device. The method may further comprise, by the controller, establishing a trusted connection between the controller and the host computing device over the second channel. The second channel may couple the controller to the host computing device. The controller and the host computing device may further be coupled together via a first channel. The operand may be encrypted and the step of recovering the second instruction from the operand may comprise decrypting the operand by using the secret key.

다양한 실시예에 따르면, 제 1 및 제 2 명령어는 판독 또는 기록 명령어일 수 있다. 판독 명령어에 대해, 방법은 컨트롤러에 의해 제 2 하나 이상의 저장 위치로부터 판독된 데이터를 어셈블링하여 어셈블링된 데이터를 형성하는 단계와, 컨트롤러에 의해 어셈블링된 데이터를 제 1 명령어의 판독 출력 데이터로서 호스트 컴퓨팅 장치로 반환하는 단계를 더 포함할 수 있다. 저장 장치는 독립 디스크의 어레이를 포함할 수 있다. 데이터는 패리티, 미러링 또는 리던던시 없이 독립 디스크의 어레이에 스트라이프 방식으로 저장될 수 있다. 데이터는 바이트 레벨 스트라이핑 및 전용 패리티를 사용하여 독립 디스크의 어레이에 스트라이프 방식으로 저장될 수 있다.According to various embodiments, the first and second instructions may be read or write instructions. For a read command, the method comprises: assembling data read from a second one or more storage locations by a controller to form assembled data; and writing the data assembled by the controller as read out data of a first instruction To the host computing device. The storage device may comprise an array of independent disks. Data can be stored in stripes on an array of independent disks without parity, mirroring, or redundancy. Data can be stored in stripes on an array of independent disks using byte-level striping and dedicated parity.

실시예에서, 장치는 다수의 데이터 저장 장치, 및 데이터 저장 장치에 통신 가능하게 결합된 적어도 하나의 컨트롤러를 포함할 수 있다. 적어도 하나의 컨트롤러는 제 1 수의 명령어에 응답하여 데이터를 데이터 저장 장치에 기록하고 데이터 저장 장치로부터 데이터를 판독하도록 구성될 수 있다. 컨트롤러는 제 1 피연산자 및 제 1 하나 이상의 저장 위치에 상응하는 제 1 어드레스를 포함하는 제 1 저장 명령어를 수신하도록 구성될 수 있다. 컨트롤러는 제 1 피연산자에 기초하여 제 2 저장 명령어를 복구하도록 구성될 수 있다. 제 2 저장 명령어는 적어도 하나의 저장 위치에 따라 제 1 하나 이상의 저장 위치와 다른 제 2 하나 이상의 저장 위치에 상응하는 제 2 어드레스를 포함할 수 있다. 컨트롤러는 안티 멀웨어 보호 관련 동작을 실시하기 위해 제 2 하나 이상의 저장 위치에서 동작하도록 제 2 저장 명령어를 실행하기 위해 구성될 수 있다.In an embodiment, an apparatus may include a plurality of data storage devices, and at least one controller communicatively coupled to the data storage device. The at least one controller may be configured to write data to and read data from the data storage device in response to the first number of instructions. The controller may be configured to receive a first store instruction comprising a first operand and a first address corresponding to a first one or more storage locations. The controller may be configured to recover the second store instruction based on the first operand. The second store instruction may include a second address corresponding to a second one or more storage locations different from the first one or more storage locations according to the at least one storage location. The controller may be configured to execute a second store instruction to operate at a second one or more storage locations to effect anti-malware protection related operations.

다양한 실시예에서, 컨트롤러는 제 2 채널을 통해 컨트롤러와 호스트 컴퓨팅 장치 사이의 신뢰 논리 연결에 의해 호스트 컴퓨팅 장치로부터 제 1 저장 명령어를 수신하도록 구성될 수 있다. 제 2 채널은 컨트롤러 및 호스트 컴퓨팅 장치를 통신 가능하게 결합할 수 있다. 컨트롤러 및 호스트 컴퓨팅 장치는 제 1 채널을 통해 서로 더 결합될 수 있다.In various embodiments, the controller may be configured to receive the first store instruction from the host computing device by a trusted logical connection between the controller and the host computing device over the second channel. The second channel is capable of communicatively coupling the controller and the host computing device. The controller and the host computing device may further be coupled together via a first channel.

다양한 실시예에서, 컨트롤러는 제 1 채널을 통해 제 1 명령어 세트에 응답하고 제 2 채널을 통해 제 2 명령어 세트에 응답하도록 더 구성될 수 있다. 제 2 명령어 세트는 제 1 명령어 세트보다 더 적은 명령어를 포함할 수 있다. 제 2 채널은 대역 외 채널일 수 있다. 데이터 저장 장치는 독립 디스크의 어레이를 포함할 수 있다. 데이터는 비트 레벨, 바이트 레벨, 및 블록 레벨 스트라이핑 중 하나를 사용하고 전용 패리티 및 분산 패리티 저장 기술 중 하나를 사용하여 독립 디스크의 어레이에 스트라이프 방식으로 저장될 수 있다. 컨트롤러는 암호화된 통신을 컨트롤러에 의해 지원하도록 구성된 패리티 생성기를 포함할 수 있다.In various embodiments, the controller may be further configured to respond to the first set of instructions over the first channel and to the second set of instructions over the second channel. The second instruction set may include fewer instructions than the first instruction set. The second channel may be an out-of-band channel. The data storage device may comprise an array of independent disks. Data can be stored in stripes on an array of independent disks using either bit-level, byte-level, and block-level striping and using either dedicated parity or distributed parity storage techniques. The controller may include a parity generator configured to support the encrypted communication by the controller.

다양한 실시예에서, 장치는 다수의 데이터 저장 장치, 및 데이터 저장 장치에 통신 가능하게 결합된 적어도 하나의 컨트롤러를 포함할 수 있다. 적어도 하나의 컨트롤러는 더미 어드레스로 인코딩된 판독 및 기록 명령을 수신하도록 구성될 수 있다. 적어도 하나의 컨트롤러는 멀웨어 보호 관련 프로그램에 의해 암호화되었던 실제 판독 및 기록 어드레스를 각각의 판독 및 기록 명령의 피연산자로 복호화하도록 구성될 수 있다.In various embodiments, an apparatus may include a plurality of data storage devices, and at least one controller communicatively coupled to the data storage device. The at least one controller may be configured to receive a read and write command encoded with a dummy address. The at least one controller may be configured to decode the actual read and write addresses that were encrypted by the malware protection related program to the operands of the respective read and write instructions.

다양한 실시예에서, 실제 판독 및 기록 어드레스는 공개 키로 암호화될 수 있고 적어도 하나의 컨트롤러는 실제 판독 및 기록 어드레스를 공개 키에 상응하는 비밀 키로 복호화하도록 구성될 수 있다.In various embodiments, the actual read and write addresses may be encrypted with a public key, and at least one controller may be configured to decrypt the actual read and write addresses with a secret key corresponding to the public key.

다양한 실시예에서, 수신된 판독 및 기록 어드레스는 암호화의 듀얼 레벨로 암호화될 수 있었고 적어도 하나의 컨트롤러는 암호화의 듀얼 레벨을 복호화하도록 구성될 수 있다.In various embodiments, the received read and write addresses may be encrypted at a dual level of encryption and at least one controller may be configured to decrypt the dual level of encryption.

상술된 실시예 중 어느 것에 대한 특정 상세는 전적으로 또는 부분적으로 본 개시의 새로운 실시예를 형성하도록 하나 이상의 다른 실시예와 전적으로 또는 부분적으로 결합될 수 있다.The specific details of any of the above-described embodiments may be wholly or partially combined with one or more other embodiments to form a new embodiment of the disclosure in whole or in part.

Claims (28)

안티 멀웨어 보호를 제공하는 복수의 명령어를 갖는 컴퓨터 프로그램을 포함하는 컴퓨터 판독 가능 저장 매체로서,
상기 복수의 명령어는 복수의 저장 디바이스의 컨트롤러로 하여금 상기 컨트롤러에 의한 명령어의 실행에 응답하여,
상기 컨트롤러와 결합된 호스트 컴퓨팅 디바이스로부터 제 1 명령어를 수신하게 하고 - 상기 제 1 명령어는 제 1 어드레스 및 피연산자를 포함하고, 상기 제 1 명령어는 명목상 안티 멀웨어 보호 관련 동작과 연관되고, 상기 제 1 어드레스는 상기 복수의 저장 디바이스의 제 1 의 하나 이상의 저장 위치를 지칭함 - ,
상기 피연산자로부터 상기 복수의 저장 디바이스의 제 2 의 하나 이상의 저장 위치에서 동작될 제 2 명령어를 복구하게 하고 - 상기 제 2 명령어는 실질적으로 상기 안티 멀웨어 보호 관련 동작과 연관되고, 상기 제 1 의 하나 이상의 저장 위치 및 상기 제 2 의 하나 이상의 저장 위치는 적어도 하나의 저장 위치만큼 다름 -,
상기 안티 멀웨어 보호 관련 동작을 실시하기 위해 상기 제 2 의 하나 이상의 저장 위치에서 동작하는 상기 제 2 명령어를 실행하게 하고 - 상기 안티 멀웨어 보호 관련 동작은 상기 제 2 의 하나 이상의 저장 위치에서 수행될 판독 동작 또는 기록 동작 중 하나임 -,
상기 판독 동작에 대해, 상기 복수의 명령어는 또한 상기 컨트롤러로 하여금, 상기 제 2 의 하나 이상의 저장 위치로부터 판독된 데이터를 어셈블링하여 어셈블링된 데이터를 형성하게 하고, 상기 어셈블링된 데이터를 상기 제 1 명령어의 판독 출력 데이터로서 상기 호스트 컴퓨팅 디바이스에 반환하게 하고,
상기 기록 동작에 대해, 상기 복수의 명령어는 또한 상기 컨트롤러로 하여금, 상기 제 2 의 하나 이상의 저장 위치 내에 스트라이프 방식(a striped manner)으로 데이터를 저장하게 하도록 구성되는
컴퓨터 판독 가능 저장 매체.
A computer readable storage medium comprising a computer program having a plurality of instructions for providing antimalware protection,
Wherein the plurality of instructions cause the controller of the plurality of storage devices to perform the steps of:
Wherein the first instruction comprises a first address and an operand, the first instruction is associated with a nominal antimalware protection related operation, the first instruction is associated with a first address and an operand, Refers to a first one or more storage locations of the plurality of storage devices,
The second instruction being operative to substantially operate in the second one or more storage locations of the plurality of storage devices from the operand, wherein the second instruction is substantially associated with the anti-malware protection related operation, The storage location and the second one or more storage locations differ by at least one storage location,
To perform the anti-malware protection related operation, the anti-malware protection-related operation causing the second instruction to be executed in the second one or more storage locations, Or recording operation,
For the read operation, the plurality of instructions may also cause the controller to assemble data read from the second one or more storage locations to form assembled data, 1 < / RTI > command to the host computing device,
For the write operation, the plurality of instructions may also be configured to cause the controller to store data in a striped manner within the second one or more storage locations
Computer readable storage medium.
제 1 항에 있어서,
상기 컨트롤러는 상기 컨트롤러 및 상기 호스트 컴퓨팅 디바이스를 통신 가능하게 결합하는 신뢰 연결을 통해 상기 제 1 명령어를 수신할 수 있고, 상기 복수의 명령어는 또한 상기 컨트롤러로 하여금 상기 명령어의 실행에 응답하여,
상기 컨트롤러를 상기 호스트 컴퓨팅 디바이스에 결합하는 제 2 채널(secondary channel)을 통해 상기 컨트롤러와 상기 호스트 컴퓨팅 디바이스 사이에 상기 신뢰 연결을 형성하게 하도록 구성되고,
상기 컨트롤러 및 상기 호스트 컴퓨팅 디바이스는 또한 제 1 채널(primary channel)을 통해 서로 결합되는
컴퓨터 판독 가능 저장 매체.
The method according to claim 1,
Wherein the controller is capable of receiving the first instruction through a trusted connection that communicatively combines the controller and the host computing device and the plurality of instructions also cause the controller to respond to execution of the instruction,
And to establish the trusted connection between the controller and the host computing device via a secondary channel coupling the controller to the host computing device,
The controller and the host computing device may also be coupled to each other via a primary channel
Computer readable storage medium.
제 1 항에 있어서,
상기 컨트롤러로 하여금 상기 피연산자로부터 상기 제 2 명령어를 복구하게 하도록 구성된 상기 복수의 명령어는 또한, 상기 컨트롤러로 하여금 상기 복수의 명령어에 기초하여 상기 피연산자를 디코딩하거나 복호화하게 하도록 구성되는
컴퓨터 판독 가능 저장 매체.
The method according to claim 1,
Wherein the plurality of instructions configured to cause the controller to recover the second instruction from the operand are further configured to cause the controller to decode or decode the operand based on the plurality of instructions
Computer readable storage medium.
제 3 항에 있어서,
상기 복수의 명령어는 상기 컨트롤러로 하여금 비밀 키를 사용하여 상기 피연산자로부터 상기 제 2 명령어를 디코딩하거나 복호화하게 하도록 구성되는
컴퓨터 판독 가능 저장 매체.
The method of claim 3,
Wherein the plurality of instructions are configured to cause the controller to decode or decode the second instruction from the operand using a secret key
Computer readable storage medium.
제 4 항에 있어서,
상기 복수의 명령어는 상기 컨트롤러의 인증서를 포함하고, 상기 인증서는 상기 비밀 키를 포함하는
컴퓨터 판독 가능 저장 매체.
5. The method of claim 4,
Wherein the plurality of commands include a certificate of the controller, and the certificate includes the secret key
Computer readable storage medium.
제 1 항에 있어서,
상기 복수의 저장 디바이스는 독립 디스크의 어레이를 포함하는
컴퓨터 판독 가능 저장 매체.
The method according to claim 1,
Wherein the plurality of storage devices comprise an array of independent disks
Computer readable storage medium.
제 6 항에 있어서,
비트 레벨, 바이트 레벨, 및 블록 레벨의 스트라이핑 중 하나를 사용하고 전용 패리티 또는 분산 패리티 중 하나를 사용하여 상기 독립 디스크의 어레이에 데이터가 스트라이프 방식으로 저장되는
컴퓨터 판독 가능 저장 매체.
The method according to claim 6,
Data is stored in an array of independent disks in a striped fashion using one of bit level, byte level, and block level striping and using either dedicated parity or distributed parity
Computer readable storage medium.
제 1 항에 있어서,
상기 제 2 명령어는 멀웨어가 상기 안티 멀웨어 보호 관련 동작을 검출하는 것을 방지하도록 암호화되는
컴퓨터 판독 가능 저장 매체.
The method according to claim 1,
The second instruction is encrypted to prevent malware from detecting the anti-malware protection related operation
Computer readable storage medium.
안티 멀웨어 보호를 제공하는 방법으로서,
복수의 저장 디바이스의 컨트롤러에 의해, 상기 컨트롤러에 결합된 호스트 컴퓨팅 디바이스로부터 제 1 명령어를 수신하는 단계 - 상기 제 1 명령어는 제 1 어드레스 및 피연산자를 포함하고, 상기 제 1 명령어는 명목상 안티 멀웨어 보호 관련 동작과 연관되고, 상기 제 1 어드레스는 상기 복수의 저장 디바이스의 제 1 의 하나 이상의 저장 위치를 지칭함 - 와,
상기 컨트롤러에 의해, 상기 피연산자로부터 상기 복수의 저장 디바이스의 제 2 의 하나 이상의 저장 위치에서 동작될 제 2 명령어를 복구하는 단계 - 상기 제 2 명령어는 실질적으로 상기 안티 멀웨어 보호 관련 동작과 연관되고, 상기 제 1 의 하나 이상의 저장 위치 및 상기 제 2 의 하나 이상의 저장 위치는 적어도 하나의 저장 위치만큼 다름 - 와,
상기 컨트롤러에 의해, 상기 안티 멀웨어 보호 관련 동작을 실시하기 위해 상기 제 2 의 하나 이상의 저장 위치에서 동작하는 상기 제 2 명령어를 실행하는 단계 - 상기 제 1 명령어 및 상기 제 2 명령어는 판독 명령어 또는 기록 명령어임 - 를 포함하되,
상기 판독 명령어에 대해, 상기 방법은, 상기 컨트롤러에 의해 상기 제 2 의 하나 이상의 저장 위치로부터 판독된 데이터를 어셈블링하여 어셈블링된 데이터를 형성하는 단계와, 상기 컨트롤러에 의해 상기 어셈블링된 데이터를 상기 제 1 명령어의 판독 출력 데이터로서 상기 호스트 컴퓨팅 디바이스에 반환하는 단계를 더 포함하고,
상기 기록 명령어에 대해, 상기 방법은, 상기 컨트롤러에 의해 상기 복수의 저장 디바이스에 스트라이프 방식으로 데이터를 저장하는 단계를 더 포함하는
안티 멀웨어 보호를 제공하는 방법.
A method for providing antimalware protection,
Receiving a first instruction from a host computing device coupled to the controller by a controller of the plurality of storage devices, the first instruction comprising a first address and an operand, the first instruction being associated with a nominal anti- Wherein the first address refers to a first one or more storage locations of the plurality of storage devices,
Recovering, by the controller, a second instruction to be operated at a second one or more storage locations of the plurality of storage devices from the operand, the second instruction being substantially associated with the anti-malware protection related operation, The first one or more storage locations and the second one or more storage locations differ by at least one storage location,
Executing, by the controller, the second instruction operating in the second one or more storage locations to perform the anti-malware protection related operation, the first instruction and the second instruction being a read instruction or a write instruction Lt; RTI ID = 0.0 >
For the read command, the method further comprises: assembling data read from the second one or more storage locations by the controller to form assembled data; and writing the assembled data by the controller To the host computing device as readout output data of the first instruction,
For the write command, the method further comprises storing data in a striped fashion on the plurality of storage devices by the controller
How to provide anti-malware protection.
제 9 항에 있어서,
상기 수신하는 단계는 상기 컨트롤러 및 상기 호스트 컴퓨팅 디바이스를 통신 가능하게 결합하는 신뢰 연결을 통해 상기 제 1 명령어를 수신하는 단계를 포함하고,
상기 방법은, 상기 컨트롤러에 의해, 상기 컨트롤러를 상기 호스트 컴퓨팅 디바이스에 결합하는 제 2 채널(secondary channel)을 통해 상기 컨트롤러와 상기 호스트 컴퓨팅 디바이스 사이에 상기 신뢰 연결을 형성하는 단계를 더 포함하고,
상기 컨트롤러 및 상기 호스트 컴퓨팅 디바이스는 또한 제 1 채널(primary channel)을 통해 서로 결합되는
안티 멀웨어 보호를 제공하는 방법.
10. The method of claim 9,
Wherein the receiving comprises receiving the first instruction through a trusted connection communicatively coupling the controller and the host computing device,
The method further comprises the step of forming, by the controller, the trusted connection between the controller and the host computing device via a secondary channel coupling the controller to the host computing device,
The controller and the host computing device may also be coupled to each other via a primary channel
How to provide anti-malware protection.
제 9 항에 있어서,
상기 피연산자는 암호화되고,
상기 피연산자로부터 상기 제 2 명령어를 복구하는 단계는 비밀 키를 사용함으로써 상기 피연산자를 복호화하는 단계를 포함하는
안티 멀웨어 보호를 제공하는 방법.
10. The method of claim 9,
The operand is encrypted,
Wherein recovering the second instruction from the operand comprises decrypting the operand by using a secret key
How to provide anti-malware protection.
제 9 항에 있어서,
데이터는 패리티, 미러링 또는 리던던시 없이 독립 디스크의 어레이에 스트라이프 방식으로 저장되는
안티 멀웨어 보호를 제공하는 방법.
10. The method of claim 9,
Data is stored in stripes on arrays of independent disks without parity, mirroring, or redundancy.
How to provide anti-malware protection.
제 9 항에 있어서,
데이터는 바이트 레벨 스트라이핑 및 전용 패리티를 사용하여 독립 디스크의 어레이에 스트라이프 방식으로 저장되는
안티 멀웨어 보호를 제공하는 방법.
10. The method of claim 9,
Data is stored in stripes on an array of independent disks using byte-level striping and dedicated parity
How to provide anti-malware protection.
복수의 데이터 저장 디바이스와,
상기 복수의 데이터 저장 디바이스에 통신 가능하게 결합되고, 제 1 복수의 명령어에 응답하여 데이터를 상기 복수의 데이터 저장 디바이스에 기록하고 데이터를 상기 복수의 데이터 저장 디바이스로부터 판독하도록 구성된 적어도 하나의 컨트롤러를 포함하되,
상기 컨트롤러는,
제 1 저장 명령어를 수신하고 - 상기 제 1 저장 명령어는 제 1 피연산자, 및 상기 복수의 저장 디바이스의 제 1 의 하나 이상의 저장 위치에 상응하는 제 1 어드레스를 포함함 -,
상기 제 1 피연산자에 기초하여 제 2 저장 명령어를 복구하고 - 상기 제 2 저장 명령어는 적어도 하나의 저장 위치만큼 상기 제 1 의 하나 이상의 저장 위치와 다른, 상기 복수의 저장 디바이스의 제 2 의 하나 이상의 저장 위치에 상응하는 제 2 어드레스를 포함함 - ,
안티 멀웨어 보호 관련 동작을 실시하기 위해 상기 제 2 의 하나 이상의 저장 위치에서 동작하는 상기 제 2 저장 명령어를 실행하고 - 상기 안티 멀웨어 보호 관련 동작은 상기 제 2 의 하나 이상의 저장 위치에서 수행될 판독 동작 또는 기록 동작 중 하나임 -,
상기 판독 동작에 대해, 상기 컨트롤러는 또한, 상기 제 2 의 하나 이상의 저장 위치로부터 판독된 데이터를 어셈블링하여 어셈블링된 데이터를 형성하고, 상기 어셈블링된 데이터를 상기 제 1 명령어의 판독 출력 데이터로서 호스트 컴퓨팅 디바이스에 반환하고,
상기 기록 동작에 대해, 상기 컨트롤러는 또한, 상기 제 2 의 하나 이상의 저장 위치 내에 스트라이프 방식으로 데이터를 저장하는
안티 멀웨어 보호를 제공하는 장치.
A plurality of data storage devices,
And at least one controller communicatively coupled to the plurality of data storage devices and configured to write data to the plurality of data storage devices and read data from the plurality of data storage devices in response to a first plurality of instructions However,
The controller comprising:
Wherein the first store instruction comprises a first operand and a first address corresponding to a first one or more storage locations of the plurality of storage devices,
Recovering a second store instruction based on the first operand, wherein the second store instruction is different from the first one or more store locations by at least one store location, the second one or more store A second address corresponding to the location,
Executing the second store instruction operating at the second one or more storage locations to perform an anti-malware protection related operation, the anti-malware protection related operation comprising a read operation to be performed at the second one or more storage locations, Recording operation,
For the read operation, the controller is further configured to assemble data read from the second one or more storage locations to form assembled data, and to read the assembled data as readout data of the first instruction To the host computing device,
For the write operation, the controller is further configured to store data in a striped fashion within the second one or more storage locations
A device that provides anti-malware protection.
제 14 항에 있어서,
상기 컨트롤러는 상기 컨트롤러 및 상기 호스트 컴퓨팅 디바이스를 통신 가능하게 결합하는 제 2 채널을 통해 상기 컨트롤러와 상기 호스트 컴퓨팅 디바이스 사이의 신뢰 논리 연결에 의해 상기 호스트 컴퓨팅 디바이스로부터 상기 제 1 저장 명령어를 수신하도록 구성되고,
상기 컨트롤러 및 상기 호스트 컴퓨팅 디바이스는 또한 제 1 채널을 통해 서로 결합되는
안티 멀웨어 보호를 제공하는 장치.
15. The method of claim 14,
The controller is configured to receive the first store instruction from the host computing device by a trusted logical connection between the controller and the host computing device over a second channel communicatively coupling the controller and the host computing device ,
The controller and the host computing device may also be coupled to each other via a first channel
A device that provides anti-malware protection.
제 14 항에 있어서,
상기 컨트롤러는 또한 상기 제 1 채널을 통해 제 1 명령어 세트에 응답하고 상기 제 2 채널을 통해 제 2 명령어 세트에 응답하도록 구성되고,
상기 제 2 명령어 세트는 상기 제 1 명령어 세트보다 더 적은 명령어를 포함하는
안티 멀웨어 보호를 제공하는 장치.
15. The method of claim 14,
The controller is also configured to respond to the first instruction set over the first channel and to respond to the second instruction set over the second channel,
Wherein the second instruction set includes fewer instructions than the first instruction set
A device that provides anti-malware protection.
제 14 항에 있어서,
상기 제 2 채널은 대역 외 채널인
안티 멀웨어 보호를 제공하는 장치.
15. The method of claim 14,
The second channel is an out-of-band channel
A device that provides anti-malware protection.
제 14 항에 있어서,
상기 복수의 데이터 저장 디바이스는 독립 디스크의 어레이를 포함하는
안티 멀웨어 보호를 제공하는 장치.
15. The method of claim 14,
Wherein the plurality of data storage devices comprise an array of independent disks
A device that provides anti-malware protection.
제 18 항에 있어서,
비트 레벨, 바이트 레벨, 및 블록 레벨의 스트라이핑 중 하나를 사용하고 전용 패리티 또는 분산 패리티 저장 기술 중 하나를 사용하여 상기 독립 디스크의 어레이에 데이터가 스트라이프 방식으로 저장되는
안티 멀웨어 보호를 제공하는 장치.
19. The method of claim 18,
Data is stored in a striped fashion on the array of independent disks using one of bit level, byte level, and block level striping and using either dedicated parity or distributed parity storage techniques
A device that provides anti-malware protection.
제 14 항에 있어서,
상기 컨트롤러는 상기 컨트롤러에 의한 암호화된 통신을 지원하도록 구성된 패리티 생성기를 포함하는
안티 멀웨어 보호를 제공하는 장치.
15. The method of claim 14,
Wherein the controller comprises a parity generator configured to support encrypted communication by the controller
A device that provides anti-malware protection.
복수의 데이터 저장 디바이스와,
상기 복수의 데이터 저장 디바이스에 통신 가능하게 결합되는 적어도 하나의 컨트롤러를 포함하되,
상기 컨트롤러는,
잘못된 판독 및 기록 어드레스로 인코딩된 판독 및 기록 명령을 수신하고,
멀웨어 보호 관련 프로그램에 의해 암호화되었던 실제 판독 및 기록 어드레스를 각각의 판독 및 기록 명령의 피연산자로 복호화하도록 구성되고,
판독 명령에 대해, 상기 컨트롤러는 또한, 상기 실제 판독 및 기록 어드레스부터 판독된 데이터를 어셈블링하여 어셈블링된 데이터를 형성하고, 상기 어셈블링된 데이터를 상기 판독 명령의 판독 출력 데이터로서 반환하고,
기록 명령에 대해, 상기 컨트롤러는 또한, 상기 실제 판독 및 기록 어드레스 내에 스트라이프 방식으로 데이터를 저장하는
안티 멀웨어 보호를 제공하는 장치.
A plurality of data storage devices,
At least one controller communicatively coupled to the plurality of data storage devices,
The controller comprising:
Receiving a read and write command encoded with a wrong read and write address,
The actual read and write addresses that have been encrypted by the malware protection related program are decoded into the operands of the respective read and write commands,
For a read command, the controller is further configured to assemble data read from the actual read and write address to form assembled data, return the assembled data as read out data of the read command,
For a write command, the controller is further configured to store data in a striped fashion within the actual read and write addresses
A device that provides anti-malware protection.
제 21 항에 있어서,
상기 실제 판독 및 기록 어드레스는 공개 키로 암호화되고, 상기 적어도 하나의 컨트롤러는 상기 실제 판독 및 기록 어드레스를 상기 공개 키에 상응하는 비밀 키로 복호화하도록 구성되는
안티 멀웨어 보호를 제공하는 장치.
22. The method of claim 21,
Wherein the actual read and write addresses are encrypted with a public key and the at least one controller is configured to decrypt the actual read and write addresses with a secret key corresponding to the public key
A device that provides anti-malware protection.
제 22항에 있어서,
상기 수신된 판독 및 기록 어드레스는 듀얼 암호화 레벨로 암호화된 것이고, 상기 적어도 하나의 컨트롤러는 상기 듀얼 암호화 레벨을 복호화하도록 구성되는
안티 멀웨어 보호를 제공하는 장치.
23. The method of claim 22,
Wherein the received read and write addresses are encrypted with a dual encryption level and the at least one controller is configured to decrypt the dual encryption level
A device that provides anti-malware protection.
삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020147026115A 2012-03-19 2012-03-19 Anti-malware protection operation with instruction included in an operand KR101636638B1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/029656 WO2013141838A1 (en) 2012-03-19 2012-03-19 Anti-malware protection operation with instruction included in an operand

Publications (2)

Publication Number Publication Date
KR20140125445A KR20140125445A (en) 2014-10-28
KR101636638B1 true KR101636638B1 (en) 2016-07-05

Family

ID=49223113

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147026115A KR101636638B1 (en) 2012-03-19 2012-03-19 Anti-malware protection operation with instruction included in an operand

Country Status (5)

Country Link
US (1) US9027148B2 (en)
EP (1) EP2828783B1 (en)
KR (1) KR101636638B1 (en)
CN (1) CN104205044B (en)
WO (1) WO2013141838A1 (en)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9503476B2 (en) * 2014-01-28 2016-11-22 Vivint, Inc. Anti-takeover systems and methods for network attached peripherals
US10628353B2 (en) 2014-03-08 2020-04-21 Diamanti, Inc. Enabling use of non-volatile media-express (NVMe) over a network
US11921658B2 (en) 2014-03-08 2024-03-05 Diamanti, Inc. Enabling use of non-volatile media-express (NVMe) over a network
AU2015229802A1 (en) 2014-03-08 2016-10-06 Diamanti, Inc. Methods and systems for converged networking and storage
US10635316B2 (en) 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
US10657262B1 (en) * 2014-09-28 2020-05-19 Red Balloon Security, Inc. Method and apparatus for securing embedded device firmware
US11222116B2 (en) 2016-02-03 2022-01-11 Hewlett-Packard Development Company, L.P. Heartbeat signal verification
KR102573921B1 (en) 2016-09-13 2023-09-04 삼성전자주식회사 Storage device and method for protecting against virus/malware thereof and computing system having the same
US20190042781A1 (en) * 2017-08-04 2019-02-07 Bitdefender IPR Management Ltd. Secure Storage Device
US10868669B2 (en) * 2017-10-16 2020-12-15 Taiwan Semiconductor Manufacturing Company Ltd. Method for role-based data transmission using physically unclonable function (PUF)-based keys
CN111008378B (en) * 2019-11-29 2023-08-01 四川效率源信息安全技术股份有限公司 Method for cleaning malicious codes in hard disk firmware area
KR20220007988A (en) * 2020-07-13 2022-01-20 에스케이하이닉스 주식회사 Memory system for assuring reliability
CN113836073A (en) * 2021-07-30 2021-12-24 湖北三江航天万峰科技发展有限公司 Weapon system test data processing method, device and equipment
CN116795741B (en) * 2023-08-28 2023-11-10 凡澈科技(武汉)有限公司 Method and system for preventing memory data from being deleted and tampered

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090228262A1 (en) 2008-02-25 2009-09-10 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US20090293126A1 (en) 2008-05-23 2009-11-26 Verizon Corporate Services Group Inc. Malware detection device
US20100275034A1 (en) 2005-02-11 2010-10-28 Simplex Major Sdn, Bhd. Software protection method

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594780B1 (en) * 1999-10-19 2003-07-15 Inasoft, Inc. Operating system and data protection
KR100585095B1 (en) * 2003-06-26 2006-05-30 삼성전자주식회사 Method and apparatus for protecting data in data transmission system
WO2005015818A1 (en) * 2003-08-07 2005-02-17 Rao Mohan G R Data security and digital rights management system
US7647636B2 (en) * 2005-08-24 2010-01-12 Microsoft Corporation Generic RootKit detector
US8151352B1 (en) * 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
US8667597B2 (en) * 2008-06-25 2014-03-04 Lockheed Martin Corporation Systems, methods, and products for secure code execution
KR20100023494A (en) * 2008-08-22 2010-03-04 엘지전자 주식회사 Mobile terminal and method for protecting a virus in thereof
US8582775B2 (en) * 2009-02-12 2013-11-12 General Motors Llc Method of securing and authenticating data using micro-certificates
US8856534B2 (en) * 2010-05-21 2014-10-07 Intel Corporation Method and apparatus for secure scan of data storage device from remote server

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100275034A1 (en) 2005-02-11 2010-10-28 Simplex Major Sdn, Bhd. Software protection method
US20090228262A1 (en) 2008-02-25 2009-09-10 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US20090293126A1 (en) 2008-05-23 2009-11-26 Verizon Corporate Services Group Inc. Malware detection device

Also Published As

Publication number Publication date
CN104205044A (en) 2014-12-10
CN104205044B (en) 2017-02-22
KR20140125445A (en) 2014-10-28
US20130340088A1 (en) 2013-12-19
EP2828783A4 (en) 2015-11-25
US9027148B2 (en) 2015-05-05
EP2828783B1 (en) 2019-01-09
EP2828783A1 (en) 2015-01-28
WO2013141838A1 (en) 2013-09-26

Similar Documents

Publication Publication Date Title
KR101636638B1 (en) Anti-malware protection operation with instruction included in an operand
KR101636816B1 (en) Apparatus, system, and method for providing memory access control
TWI514187B (en) Systems and methods for providing anti-malware protection on storage devices
JP6611797B2 (en) Method for secure input mechanism based on privileged mode
WO2017041603A1 (en) Data encryption method and apparatus, mobile terminal, and computer storage medium
US8650649B1 (en) Systems and methods for determining whether to evaluate the trustworthiness of digitally signed files based on signer reputation
KR20180030328A (en) Storage device and method for protecting against virus/malware thereof and computing system having the same
TW201349850A (en) Secure key generating apparatus and method, host device and storage device
CN114830595A (en) Delegating cryptographic keys to a memory subsystem
EP3198518B1 (en) Prevention of cable-swap security attack on storage devices
CN113632066A (en) Error identification in executed code
Neugschwandtner et al. A transparent defense against USB eavesdropping attacks
KR20220085811A (en) One-time password generation
Khelif et al. Toward a hardware man-in-the-middle attack on pcie bus for smart data replay
TWI789291B (en) Module and method for authenticating data transfer between a storage device and a host device
US11954333B2 (en) Secured firmware with anti-malware
Plaga et al. Secure your SSH Keys! Motivation and Practical Implementation of a HSM-based Approach Securing Private SSH-Keys
Bel et al. Inkpack: A Secure, Data-Exposure Resistant Storage System
Bel et al. Inkpack

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: 20190530

Year of fee payment: 4