KR102289456B1 - Plc용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법 - Google Patents

Plc용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법 Download PDF

Info

Publication number
KR102289456B1
KR102289456B1 KR1020200060736A KR20200060736A KR102289456B1 KR 102289456 B1 KR102289456 B1 KR 102289456B1 KR 1020200060736 A KR1020200060736 A KR 1020200060736A KR 20200060736 A KR20200060736 A KR 20200060736A KR 102289456 B1 KR102289456 B1 KR 102289456B1
Authority
KR
South Korea
Prior art keywords
verification
firmware
ews
plc
hash value
Prior art date
Application number
KR1020200060736A
Other languages
English (en)
Inventor
조성제
유근하
Original Assignee
단국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 단국대학교 산학협력단 filed Critical 단국대학교 산학협력단
Priority to KR1020200060736A priority Critical patent/KR102289456B1/ko
Application granted granted Critical
Publication of KR102289456B1 publication Critical patent/KR102289456B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/058Safety, monitoring
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/14Plc safety
    • G05B2219/14084Remote diagnostic
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/14Plc safety
    • G05B2219/14114Integrity, error detector, switch off controller, fail safe
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 RTOS(Real Time Operating System)가 탑재된 임베디드 장치의 펌웨어에 대한 무결성을 실시간성(Real Time) 및 안전성(safety), 경량화(light-weight)를 만족시키면서 원격으로 검증할 수 있도록 한 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법에 관한 것으로, 탑재될 펌웨어의 변조되지 않은 원본 이미지 파일을 저장하고, 플래시 메모리의 영역을 지정하여 피검증 수단(PLC)에게 MAC 주소 기반의 하드웨어 ID와 함께 검증 요청을 하는 검증 수단(EWS);검증 수단(EWS)의 검증 요청에 따라 하드웨어 ID와 시간 정보를 확인한 뒤, 올바른 사용자라면 함께 전달받은 임의의 값(cryptographic nonce)을 의사 난수 생성기의 키값으로 사용하여 해쉬값을 생성하고, 모든 메모리 블록에 대해 순회가 이루어지면 생성된 해쉬값을 검증 수단(EWS)으로 보내는 피검증 수단(PLC);을 포함하고, 상기 검증 수단(EWS)은 자체적으로 생성한 해쉬값과 피검증 수단으로부터 전달받은 해쉬값을 비교하여 위변조 여부를 판단하는 것이다.

Description

PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법{System and Method for Remote Attestating to Verify Firmware of Programmable Logic Controllers}
본 발명은 PLC(Programmable Logic Controller)에 대한 사이버 공격 대응에 관한 것으로, 구체적으로 RTOS(Real Time Operating System)가 탑재된 임베디드 장치의 펌웨어에 대한 무결성을 실시간성(Real Time) 및 안전성(safety), 경량화(light-weight)를 만족시키면서 원격으로 검증할 수 있도록 한 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법에 관한 것이다.
산업이 발전하면서 수많은 디지털 시스템이 산업 제어 시스템(Industrial Control Systems, ICS) 등에 사용되고 있다. ICS의 한 구성요소인 PLC(Programmable Logic Controller)는 네트워크로 연결되어 산업 플랜트를 제어하는 데 중요한 역할을 하고 있다.
하나의 예로 화력발전소에서는 CTCS(Condenser Tube Cleaning System)와 DFS(Debris Filter System)를 제어하기 위하여, 항만 자동화 터미널에서는 OHS(Over Head Shuttle)를 제어하기 위하여 PLC를 사용한다.
PLC에 사용되는 네트워크 프로토콜은 Ethernet/IP, DeviceNet, ControlNet, PROFIBUS, MODBUS TCP/IP, DNP3, Foundation Fieldbus 등이 대표적이고 기타 많은 프로토콜이 존재한다.
그러나 각 산업 시스템에서 자체개발한 특허 표준 네트워크 프로토콜을 사용했던 이전과 달리, 최근에는 PLC에 상용 표준 네트워크 프로토콜을 사용함에 따라 네트워크를 이용한 PLC에 대한 사이버 공격이 증가했다. Stuxnet, Duqu, Flame, Gauss, Shamoon, SkyWiper 등의 PLC 사이버 공격을 그 예로 들 수 있다.
기존의 IT 시스템에 대한 공격과 마찬가지로, 산업 제어 시스템에 대한 공격은 더욱 강력하고 유연한 시스템 조작을 가능하게 만들기 위하여 하위 레벨의 제어를 목표로 한다. 산업 제어 시스템에 대한 사이버 공격은 사이버 수단을 통해 물리적인 현상을 이끌어내는 것이다.
PLC는 사용자의 입력과 요구사항에 맞게 장치들을 제어 및 관리하도록 만들어지는 임베디드 장치로서, 가장 낮은 추상화 계층은 펌웨어(firmware)다.
펌웨어는 기본적으로 장치의 하드웨어와 프로그래밍 가능한 고수준 소프트웨어를 연결하기 위해 탑재되는 마이크로 코드이다.
따라서 PLC 펌웨어가 공격당하면 공격자는 산업 제어 시스템의 장치들을 제어할 수 있다. 그러므로 PLC 펌웨어의 보안 강화가 필요하고 주기적으로 또는 사용자의 요청이 있을 시에 펌웨어의 무결성(integrity)을 검증할 수 있어야 한다.
그러나 PLC는 PC와 달리 임베디드 장치의 특징인 한정적인 동작속도와 자원으로 인해 PC에 사용되는 일반적인 보안 솔루션을 적용하기 어려워 공격 사실을 감지하기 힘들다.
따라서, 임베디드 장치의 특성을 고려한 펌웨어 무결성 검증을 위한 새로운 기술의 개발이 요구되고 있다.
대한민국 공개특허 제10-2014-0070203호 대한민국 공개특허 제10-2010-0053900호 대한민국 등록특허 제10-10-1563441호
본 발명은 종래 기술의 PLC 사이버 공격 대응 기술의 문제점을 해결하기 위한 것으로, RTOS(Real Time Operating System)가 탑재된 임베디드 장치의 펌웨어에 대한 무결성을 실시간성(Real Time) 및 안전성(safety), 경량화(light-weight)를 만족시키면서 원격으로 검증할 수 있도록 한 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 PLC에 사용되는 μC/OS-Ⅱ 운영체제의 텍스트 영역에 대한 무결성을 검증하며, PLC 시스템 구동 중에 텍스트 영역의 위변조 여부를 다른 장치에서 주기적 또는 비주기적으로 확인하여 검증할 수 있도록 한 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 텍스트 영역을 무작위로 순회하기 위하여 시간정보를 기반으로 임의의 값을 생성하기 위한 난수 생성기로 생성하는 난수의 중복 검사 단계에서 비트 연산을 통해 적은 수의 배열만을 사용하여 메모리 사용을 최소화할 수 있도록 한 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 텍스트 영역 전체를 대상으로 해쉬값을 생성하지 않고 무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성하는 것에 의해 무결성 검증 로직의 실행시간을 효과적으로 단축할 수 있도록 한 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 외부 PC에서 원본 이미지를 암호화하여 보관하고, 무결성 검증을 요청할 때는 일시적으로 복호화하여 원본 이미지를 복구하여 무결성 검증을 진행하고 다시 암호화하여 저장하는 것에 의해 외부 PC의 보안성을 높일 수 있도록 한 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 외부 PC에서 암호화한 이미지 및 무결성 검증 프로세스를 하드웨어를 기반으로 보안을 강화시키는 기술인 독립된 보안 영역이 제공하는 신뢰 실행 환경(TEE, Trusted Execution Environment)에서 실행하여 강력한 보안성을 제공하는 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명은 원격 검증을 요청할 때, 사용자 인증을 위한 방안으로 EWS의 하드웨어 ID를 검사하는 사용자 인증 로직을 포함하여 펌웨어의 이미지가 유출되었을 경우를 대비할 수 있도록 한 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명의 다른 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치는 탑재될 펌웨어의 변조되지 않은 원본 이미지 파일을 저장하고, 플래시 메모리의 영역을 지정하여 피검증 수단(PLC)에게 MAC 주소 기반의 하드웨어 ID와 함께 검증 요청을 하는 검증 수단(EWS);검증 수단(EWS)의 검증 요청에 따라 하드웨어 ID와 시간 정보를 확인한 뒤, 올바른 사용자라면 함께 전달받은 임의의 값(cryptographic nonce)을 의사 난수 생성기의 키값으로 사용하여 해쉬값을 생성하고, 모든 메모리 블록에 대해 순회가 이루어지면 생성된 해쉬값을 검증 수단(EWS)으로 보내는 피검증 수단(PLC);을 포함하고, 상기 검증 수단(EWS)은 자체적으로 생성한 해쉬값과 피검증 수단으로부터 전달받은 해쉬값을 비교하여 위변조 여부를 판단하는 것을 특징으로 한다.
여기서, 상기 검증 수단(EWS)에 저장되는 펌웨어 이미지는 피검증 수단(PLC)의 메모리에 탑재되는 실행코드이고, 검증 수단(EWS)과 피검증 수단(PLC)은 각각 펌웨어 이미지와 메모리를 동일한 크기를 갖는 임의의 메모리 블록으로 나누는 것을 특징으로 한다.
그리고 상기 검증 수단(EWS)은, 원본 펌웨어 이미지를 암호화하여 보관하고, 무결성 검증을 요청할 때는 일시적으로 복호화하여 원본 펌웨어 이미지를 복구하여 무결성 검증을 진행하고 다시 암호화하여 저장하는 것을 특징으로 한다.
그리고 상기 검증 수단(EWS)은, 텍스트 영역(flash memory)의 시작 주소부터 끝 주소까지 무결성 검증을 진행하거나, 무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성할 수 있도록 하는 것을 특징으로 한다.
그리고 상기 피검증 수단(PLC)은 접근을 허가하고자 하는 검증 수단(EWS)의 MAC 주소를 가지고 있으며, 검증 수단(EWS)으로부터 검증 요청을 받았을 때, 자신이 가지고 있는 검증 수단(EWS)의 MAC주소에 시간 정보를 Salt로 사용하여 해시값 생성하는 것을 특징으로 한다.
다른 목적을 달성하기 위한 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치는 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치의 검증 수단(EWS)이, 암호화된 펌웨어 원본 이미지를 보관하는 펌웨어 원본 이미지 저장부;펌웨어 원본 이미지를 암호화 및 복호화하는 펌웨어 원본 이미지 암호/복호화부;무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성하도록 하는 검증 섹터 선택부;피검증 수단으로 임의의 값을 전송하여 무결성 검증 요청을 하는 무결성 검증 요청부;피검증 수단으로부터 해쉬값을 전달받는 피검증 수단 해쉬값 수신부;자신이 가지고 있던 펌웨어의 원본 이미지 파일을 사용해 생성한 해쉬값을 생성하는 검증 해쉬값 생성부;자신이 가지고 있던 펌웨어의 원본 이미지 파일을 사용해 생성한 해쉬값과 피검증 수단으로부터 전달받은 해쉬값을 비교하는 해쉬값 비교 검증부;를 포함하는 것을 특징으로 한다.
다른 목적을 달성하기 위한 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 방법은 검증 수단(EWS)이 플래시 메모리의 영역을 지정하여 피검증 수단(PLC)에게 MAC 주소 기반의 하드웨어 ID와 함께 검증 요청을 하는 단계;검증 수단(EWS)의 검증 요청에 따라 하드웨어 ID와 시간 정보를 확인한 뒤, 올바른 사용자라면 함께 전달받은 임의의 값(cryptographic nonce)을 의사 난수 생성기의 키값으로 사용하여 해쉬값을 생성하는 단계;피검증 수단(PLC)이 생성한 해쉬값을 검증 수단(EWS)에게 보내고, 검증 수단(EWS)은 자신이 가지고 있는 온전한 펌웨어에 대한 해쉬값을 생성하는 단계;검증 수단(EWS)이 자체적으로 생성한 해쉬값과 피검증 수단(PLC)으로부터 전달받은 해쉬값을 비교하여 위변조 여부를 판단하는 단계;를 포함하는 것을 특징으로 한다.
여기서, 검증 수단(EWS)은 피검증 수단(PLC)에게 전송한 임의의 값과 동일한 값을 의사 난수 생성기의 키값으로 사용하여 온전한 펌웨어에 대한 해쉬값을 생성하는 것을 특징으로 한다.
그리고 상기 검증 수단(EWS)은, 원본 펌웨어 이미지를 암호화하여 보관하고, 무결성 검증을 요청할 때는 일시적으로 복호화하여 원본 펌웨어 이미지를 복구하여 무결성 검증을 진행하고 다시 암호화하여 저장하는 것을 특징으로 한다.
그리고 상기 검증 수단(EWS)은, 텍스트 영역(flash memory)의 시작 주소부터 끝 주소까지 무결성 검증을 진행하거나, 무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성할 수 있도록 하는 것을 특징으로 한다.
이상에서 설명한 바와 같은 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법은 다음과 같은 효과가 있다.
첫째, RTOS(Real Time Operating System)가 탑재된 임베디드 장치의 펌웨어에 대한 무결성을 실시간성(Real Time) 및 안전성(safety), 경량화(light-weight)를 만족시키면서 원격으로 검증할 수 있도록 한다.
둘째, PLC에 사용되는 μC/OS-Ⅱ 운영체제의 텍스트 영역에 대한 무결성을 검증하며, PLC 시스템 구동 중에 텍스트 영역의 위변조 여부를 다른 장치에서 주기적 또는 비주기적으로 확인하여 효과적인 검증할 수 있도록 한다.
셋째, 텍스트 영역을 무작위로 순회하기 위하여 시간정보를 기반으로 임의의 값을 생성하기 위한 난수 생성기로 생성하는 난수의 중복 검사 단계에서 비트 연산을 통해 적은 수의 배열만을 사용하여 메모리 사용을 최소화할 수 있도록 한다.
넷째, 텍스트 영역 전체를 대상으로 해쉬값을 생성하지 않고 무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성하는 것에 의해 무결성 검증 로직의 실행시간을 효과적으로 단축할 수 있도록 한다.
다섯째, 외부 PC에서 원본 이미지를 암호화하여 보관하고, 무결성 검증을 요청할 때는 일시적으로 복호화하여 원본 이미지를 복구하여 무결성 검증을 진행하고 다시 암호화하여 저장하는 것에 의해 외부 PC의 보안성을 높일 수 있도록 한다.
여섯째, 임베디드 장치 스스로 검증하지 않고, 암호학적 해쉬 알고리즘과 통신을 사용해 원본 이미지와 대조하는 방법으로 펌웨어에 대한 무결성을 원격으로 검증하여 검증 결과에 대한 신뢰성을 높일 수 있다.
일곱째, 외부 PC에서 암호화한 이미지 및 무결성 검증 프로세스를 하드웨어를 기반으로 보안을 강화시키는 기술인 독립된 보안 영역이 제공하는 신뢰 실행 환경(TEE, Trusted Execution Environment)에서 실행하여 강력한 보안성을 제공할 수 있다.
여덟째, 원격 검증을 요청할 때, 사용자 인증을 위한 방안으로 EWS의 하드웨어 ID를 검사하는 사용자 인증 로직을 포함하여 펌웨어의 이미지가 유출되었을 경우를 대비할 수 있도록 한다.
도 1은 본 발명에 따른 원격 보증 증명의 개념을 나타낸 구성도
도 2는 본 발명의 제 1 실시 예에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치의 전체 구성도
도 3은 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 방법을 나타낸 플로우 차트
도 4는 본 발명의 제 2 실시 예에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치의 전체 구성도
도 5는 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치의 상세 구성도
도 6은 검증 수단(EWS)이 시간정보를 기반으로 생성한 nonce값을 피검증 수단(PLC)으로 전달하는 과정을 나타낸 구성도
도 7은 본 발명에 따른 무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성하는 일 예를 나타낸 구성도
도 8은 피검증 수단의 메모리 주소에 할당되는 값의 확인 및 펌웨어 이미지 추출 과정을 나타낸 구성도
도 9는 MD5 해쉬 연산 수행 및 검증 수단(EWS),피검증 수단(PLC)에서 생성한 해쉬값 비교를 나타낸 구성도
이하, 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법의 바람직한 실시 예에 관하여 상세히 설명하면 다음과 같다.
본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법의 특징 및 이점들은 이하에서의 각 실시 예에 대한 상세한 설명을 통해 명백해질 것이다.
도 1은 본 발명에 따른 원격 보증 증명의 개념을 나타낸 구성도이다.
본 발명은 도 1에서와 같이, Host(PLC)가 자신의 하드웨어 및 소프트웨어 구성을 원격 서버(EWS)로 인증하고, 원격 시스템(EWS)이 다른 시스템(PLC)의 플랫폼 무결성에 대한 신뢰 수준을 결정할 수 있도록 한 것이다.
Challenge-Response는 EWS측에서 송신한 질문(Challenge)에 대해 PLC가 올바른 응답(Response)을 하였는지 여부를 확인하여 PLC의 무결성을 검증하는 것이다.
ICS 또는 SCADA(Supervisory Control and Data Acquisition) 시스템에서 사용하는 PLC 등의 주변 임베디드 장치를 PLC 공격의 중간 도구로 활용할 수 있다.
네트워크를 이용한 원격 펌웨어 업데이트는 널리 분산되어 있는 여러 PLC 및 주변 임베디드에 대한 펌웨어 업데이트를 용이하게 하는 기능이다. 하지만 무결성 검증 및 인증과정이 제대로 이루어지지 않는다면, 펌웨어 변조 공격에 취약할 수 있다.
본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법은 RTOS(Real Time Operating System)가 탑재된 임베디드 장치의 펌웨어에 대한 무결성을 실시간성(Real Time) 및 안전성(safety), 경량화(light-weight)를 만족시키면서 원격으로 검증할 수 있도록 한 것으로, 일 예로 PLC에 사용되는 μC/OS-Ⅱ 운영체제의 텍스트 영역에 대한 무결성을 검증하며, PLC 시스템 구동 중에 텍스트 영역의 위변조 여부를 다른 장치에서 주기적 또는 비주기적으로 확인하여 효과적인 검증할 수 있도록 한 것이다.
본 발명은 임베디드 장치의 펌웨어에 대한 무결성을 실시간성(Real Time) 및 안전성(safety), 경량화(light-weight)를 만족시키면서 원격으로 검증할 수 있도록 하기 위하여, 무작위 순회 원격 보증증명, 검증 수단과 피검증 수단 간의 동기화 기반의 사용자 인증, 플래시 메모리 특성 반영하여 sector를 지정하는 선택적 검증의 특징을 포함한다.
본 발명은 텍스트 영역을 무작위로 순회하기 위하여 시간정보를 기반으로 임의의 값을 생성하기 위한 난수 생성기로 생성하는 난수의 중복 검사 단계에서 비트 연산을 통해 적은 수의 배열만을 사용하여 메모리 사용을 최소화할 수 있도록 하는 구성을 포함할 수 있다.
본 발명은 텍스트 영역 전체를 대상으로 해쉬값을 생성하지 않고 무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성하는 것에 의해 무결성 검증 로직의 실행시간을 단축하기 위한 구성을 포함할 수 있다.
본 발명은 외부 PC에서 원본 이미지를 암호화하여 보관하고, 무결성 검증을 요청할 때는 일시적으로 복호화하여 원본 이미지를 복구하여 무결성 검증을 진행하고 다시 암호화하여 저장하는 것에 의해 외부 PC의 보안성을 높이는 구성을 포함할 수 있다.
본 발명은 외부 PC에서 암호화한 이미지 및 무결성 검증 프로세스를 하드웨어를 기반으로 보안을 강화시키는 기술인 독립된 보안 영역이 제공하는 신뢰 실행 환경(TEE, Trusted Execution Environment)에서 실행하여 강력한 보안성을 제공하기 위한 구성을 포함할 수 있다.
본 발명은 임베디드 환경에 사용되는 PLC용 펌웨어의 무결성을 검증하기 위한 '원격 보증증명(remote attestation)'을 위한 다음의 방법을 포함한다.
본 발명에 따른 원격 보증증명(remote attestation)을 위한 방법들은 모두 Challenge-response 방식을 기반으로 인증과정을 수행하며, RTOS가 탑재된 임베디드 장치의 펌웨어에 대한 무결성을 원격으로 검증한다.
첫째, 순차 순회 원격 보증증명(Sequential access-based remote attestation)은 플래시 메모리 영역을 순차적으로 순회하며 해쉬값을 생성한다.
둘째, 무작위 순회 원격 보증증명(Random access-based remote attestation)은 플래시 메모리 영역을 무작위로 순회하며 해쉬값을 생성한다.
이와 같이 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법에서는 PLC 펌웨어의 무결성을 검증하기 위해 암호화 해시 함수(Cryptographic Hash Function)를 사용한다.
암호화 해시 함수는 역상 저항성(Preimage resistance), 제 2 역상 저항성(Second preimage resistance), 충돌 저항성(Collision resistance)의 특성을 갖는다.
이와 같은 특성에 따라 암호화 해시 함수는 가변 길이 입력값을 고정 길이 출력값으로 생성하며, 복호화(출력값을 사용한 입력값 유추)가 불가능하다.
또한, 일반적인 암/복호화 알고리즘에 사용되는 비밀 키를 관리할 필요도 없다는 장점도 가진다.
따라서, 암호화 해시 함수는, 메모리 공간 및 연산 능력에 대한 제약사항(비밀 키를 안전하게 저장하기 위한 메모리 공간과 복호화를 위한 연산량 소모 등) 때문에 충분한 보안 기법을 적용하기 힘든 임베디드 환경에 적합한 무결성 검증을 가능하게 한다.
이하의 설명에서 검증 수단은 EWS(Engineering Workstation)을 일 예로 설명하였으나 이로 제한되지 않는다.
EWS(Engineering Workstation)는 PLC용 프로그램을 개발하기 위한 IDE(통합개발환경)을 갖춘 서버/PC/노트북이다. EWS는 PLC보다 보안상 안전하며, TEE (Trusted Execution Environment)를 구비하고 있어, 원격 보증증명(remote attestation)에 활용될  펌웨어 이미지(또는 PLC용 전체 프로그램 이미지)를 안전하게 보관하면서 암호화 연산을 수행할 수 있다.
EWS에서 설치되는 IDE로는 TI(Texas Instruments)사의 Code Composer Studio 등이 있다.
본 발명에 따른 원격 보증증명은 임베디드 장치가 실행 중일 때 주기적 또는 필요한 경우 검증 수단(EWS)의 요청에 따라 비주기적으로 실행 가능하며, 공격자가 펌웨어의 이미지 파일을 가지고 있을 경우를 대비하여 하드웨어 ID를 이용한 사용자 인증을 수행하는 구성을 포함할 수 있다.
본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법이 적용되는 임베디드 장치는 펌웨어를 플래시 메모리에 적재하기 전, 플래시 메모리의 전체 영역에 erase를 수행하여 모든 값을 0xFFFF로 초기화한 뒤 펌웨어를 적재하고, 펌웨어를 적재할 플래시 메모리의 특정 Sector도 지정할 수 있다.
따라서, 플래시 메모리 영역 중에서 펌웨어가 적재된 영역을 제외한 영역은 0xFFFF값을 갖게 된다. 펌웨어가 플래시 메모리의 전 영역에 걸쳐 적재되지 않았다면, 플래시 메모리의 모든 영역에 대한 무결성을 검사할 필요가 없다.
본 발명에서는 무결성 검증이 불필요한 영역 즉, 플래시 메모리 영역 중 erase되어 펌웨어가 적재되지 않아 0xFFFF인 채 남아있는 영역에 대해서는 해시 계산을 하지 않아 연산량을 줄여 효율적인 원격 보증증명을 구현한다.
이와 같이 본 발명은 암호화 해시 함수의 출력값의 신뢰성을 높이기 위한 방안으로 선택적 무결성 검증 방식을 적용한다. 즉, 검증 수단(EWS)는 원격 보증증명 요청 시 무결성을 검증하고자 하는 플래시 메모리의 Sector를 지정하여 원하는 Sector만 선택적으로 검증할 수 있도록 한 것이다.
그리고 원격 보증증명은 전체 플래시 메모리 영역을 일정한 크기를 갖는 n개의 메모리 블록으로 나누어 블록 단위로 수행된다. 메모리 블록의 크기 s가 커지면 메모리 블록의 개수 n은 작아지고, 반대로 s가 작아지면 n은 커진다.
무작위 순회 원격 보증증명 기법을 사용할 경우, 메모리 블록을 무작위로 순회하기 위한 의사 난수를 생성하는 과정을 거치기 때문에 n이 작을수록 실행시간은 줄어든다.
그러나 n이 작을수록 무작위로 순회하는 경우의 수 또한 줄어들어 공격자가 메모리 블록 순회 순서를 예측하기 쉬워질 수 있다. 따라서 보안과는 상충관계에 있으므로 적절한 크기를 선택해야 한다.
'순차 순회 원격 보증증명'은 피검증 수단(PLC)이 펌웨어의 메모리 블록을 순차적으로 순회하여 생성한 해쉬값과 검증 수단(EWS)이 같은 방법으로 원본 이미지 파일에 대하여 생성한 해쉬값을 비교하여 검증하는 것이다.
순차 순회 원격 보증증명의 검증 과정은 다음과 같다.
먼저, 검증 수단(EWS)이 플래시 메모리의 영역을 지정하여 피검증 수단(PLC)에게 MAC 주소 기반의 하드웨어 ID와 함께 검증 요청을 보낸다.
이는 펌웨어의 이미지가 유출되었을 경우를 대비하기 위한 사용자 인증 로직으로 하드웨어 ID는 EWS의 MAC 주소를 기반으로 하며, 시간 정보를 Salt로 사용하여 해시값을 생성하여 함께 전달한다.
피검증 수단(PLC)은 검증 요청을 받으면 하드웨어 ID를 확인한 뒤, 올바른 사용자라면 가장 낮은 주소의 메모리 블록에서부터 가장 높은 주소의 메모리 블록까지 순차적으로 접근하며 암호화 해시 함수를 적용한다.
모든 메모리 블록을 순회한 후에 피검증 수단(PLC)은 생성한 해시값을 검증 수단(EWS)에게 보낸다. 검증 수단(EWS)은 피검증 수단(PLC)의 해시값 생성 과정과 같은 방법으로 검증 수단(EWS) 자신이 가지고 있는 원본 이미지 파일에 대한 해시값을 생성한다.
검증 수단(EWS)은 자체적으로 생성한 해시값과 피검증 수단(PLC)으로부터 전달받은 해시값을 비교하여 위변조 여부를 판단하고, 검증 수단(EWS)은 주기적으로 검증을 요청하여 검증한다.
두 해시값이 일치하면 무결성 검증을 진행하고, 일치하지 않는다면 사용자 인증에 실패하였으므로 진행하지 않고 이와 같은 과정은 검증 수단(EWS)과 피검검증 수단(PLC)의 시간 동기화를 통한 시간 일치가 필요하다.
표 1은 순차 순회 원격 보증증명의 알고리즘을 나타낸 의사 코드(pseudo code)이다.
모든 플래시 메모리의 영역에 대하여 무결성 검증을 요청하기 위해서는 [표 1]에서 S[]배열의 모든 값을 0으로 설정해야 하며, 이 경우 N은 전체 메모리 블록의 개수로 설정한다.
Figure 112020051180416-pat00001
이러한 순차 순회 원격 보증증명은 항상 같은 순서로 순회하기 때문에 동일한 펌웨어에 대하여 항상 같은 해쉬값을 생성한다. 그렇기 때문에 중간자 공격에 의해 해쉬값이 공격자에게 유출되면, 공격자가 펌웨어를 위변조했더라도 유출된 해쉬값을 재생 공격을 통해 재사용하였을 때 펌웨어의 무결성을 장담할 수 없다.
따라서, 본 발명에서는 순차 순회 원격 보증증명의 취약점을 보완하기 위하여 '무작위 순회 원격 보증증명'으로 시간 정보를 기반으로 한 임의의 값을 의사 난수 생성기(pseudo random number generator)의 키값으로 사용해 메모리 블록을 무작위로 순회한다.
의사 난수 생성기는 주어진 키값에 따라 생성하는 의사 난수의 값과 순서가 달라진다. 이를 통해 메모리 블록 접근 순서가 실행시마다 바뀌어 공격자로 하여금 메모리 블록 접근 순서를 예측하기 어렵게 한다.
메모리 블록 접근 순서가 바뀌기 때문에 동일한 펌웨어에 대하여 실행시마다 다른 해쉬값을 생성한다. 이는 곧 중간자 공격에 의해 해쉬값이 유출되었더라도 재생 공격으로부터 안전하다는 의미이다.
표 2는 본 발명에 따른 무작위 순회 원격 보증증명의 알고리즘을 나타낸 의사 코드이다.
모든 플래시 메모리의 영역에 대하여 무결성 검증을 요청하기 위해서는 표 2에서 S[]배열의 모든 값을 0으로 설정해야 하며, 이 경우 N은 전체 메모리 블록의 개수로 설정한다.
Figure 112020051180416-pat00002
본 발명에 따른 무작위 순회 원격 보증증명의 검증 과정은 다음과 같다.
검증 수단(EWS)이 플래시 메모리의 영역을 지정하여 피검증 수단(PLC)에게 MAC 주소 기반의 하드웨어 ID, 시간 정보를 기반으로 한 임의의 값과 함께 검증 요청을 보낸다.
피검증 수단(PLC)은 검증 요청을 받으면 하드웨어 ID와 시간 정보를 확인한 뒤, 올바른 사용자라면 함께 전달받은 임의의 값(cryptographic nonce)을 의사 난수 생성기의 키값으로 사용한다.
생성된 의사 난수는 각 메모리 블록에 대해 암호학적 해쉬 알고리즘을 적용하는 순서로 사용된다.
모든 메모리 블록에 대해 순회가 이루어지면 피검증 수단(PLC)은 생성한 해쉬값을 검증 수단(EWS)에게 보낸다. 검증 수단(EWS)은 피검증 수단(PLC)에게 전송한 임의의 값과 동일한 값을 의사 난수 생성기의 키값으로 사용한다.
검증 수단(EWS)은 피검증 수단(PLC)의 해쉬값 생성 과정과 같은 방법으로 검증 수단(EWS) 자신이 가지고 있는 온전한 펌웨어에 대한 해쉬값을 생성한다.
같은 키값을 사용하는 이유는 피검증 수단(PLC)과 같은 순서의 의사 난수를 얻기 위함이다. 검증 수단(EWS)은 자체적으로 생성한 해쉬값과 피검증 수단(PLC)로부터 전달받은 해쉬값을 비교하여 위변조 여부를 판단한다. 검증 수단(EWS)은 주기적으로 검증을 요청하여 검증한다.
이를 위한 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치를 구체적으로 설명하면 다음과 같다.
도 2는 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치의 전체 구성도이다.
본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치는 도 2에서와 같이, 탑재될 펌웨어의 변조되지 않은 원본 이미지(100) 파일을 저장하고, 플래시 메모리의 영역을 지정하여 피검증 수단(PLC)(300)에게 MAC 주소 기반의 하드웨어 ID와 함께 검증 요청을 하고, 자체적으로 생성한 해쉬값과 피검증 수단(300)으로부터 전달받은 해쉬값을 비교하여 위변조 여부를 판단하는 검증 수단(EWS)(200)과, 검증 수단(EWS)(200)의 검증 요청에 따라 하드웨어 ID와 시간 정보를 확인한 뒤, 올바른 사용자라면 함께 전달받은 임의의 값(cryptographic nonce)을 의사 난수 생성기의 키값으로 사용하여 해쉬값을 생성하고, 모든 메모리 블록에 대해 순회가 이루어지면 생성된 해쉬값을 검증 수단(EWS)(200)으로 보내는 피검증 수단(PLC)(300)을 포함한다.
여기서, 검증 수단(EWS)(200)의 펌웨어 이미지(Firmware Image)는 피검증 수단(PLC)(300)의 Flash Memory(400)에 탑재되는 실행코드이고, 검증 수단(EWS)(200)과 피검증 수단(PLC)(300)은 각각 Firmware Image와 Flash Memory를 각각 동일한 크기를 갖는 256개의 임의의 Memory Block으로 나눈다.
검증 수단(EWS)(200)이 피검증 수단(PLC)(300)에게 무결성 검증 요청(무작위 순회시 nonce와 함께 요청)을 하면, 피검증 수단(PLC)(300)은 펌웨어가 탑재된 Flash Memory를 순회하며 Hash값 H(P)을 생성한다.
피검증 수단(PLC)(300)은 생성한 Hash값 H(P)를 검증 수단(EWS)(200)으로 전송하고, 검증 수단(EWS)(200)은 펌웨어 이미지(Firmware Image)를 순회하며 Hash값 H(E)을 생성하고, Hash값 H(P)와 Hash값 H(E)을 비교하여 피검증 수단(PLC)(300)에 탑재된 펌웨어의 무결성 손상 여부를 검사한다.
도 3은 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 방법을 나타낸 플로우 차트이다.
본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 방법은 크게 검증 수단이 가지고 있는 펌웨어의 원본 이미지에 대한 해쉬값을 생성하고, 필요시 시간정보를 기반으로 한 임의의 값(nonce)을 생성하여 원본 이미지를 무작위로 순회하는 피검증 수단에 탑재되는 펌웨어에 대한 MD5 해쉬값 생성 단계(S301)와, 펌웨어에 대한 MD5 해쉬값 생성 단계에서 생성한 임의의 값을 피검증 수단으로 전송하여 무결성 검증 요청을 하는 단계(S302)와, 피검증 수단이 자신의 텍스트 영역에 대하여 MD5 해쉬값 생성하고 전송받은 임의의 값을 사용하여 텍스트 영역을 무작위로 순회하는 펌웨어에 대하여 MD5 해쉬연산을 하는 단계(S303)와, 검증 수단이 자신이 가지고 있던 펌웨어의 원본 이미지 파일을 사용해 생성한 MD5 해쉬값과 피검증 수단으로부터 전달받은 MD5 해쉬값을 비교하여 다를 경우에는 무결성이 훼손되었음을 알리는 검증 수단과 피검증 수단의 MD5 해쉬값 비교 단계(S304)를 포함한다.
도 4는 본 발명의 제 2 실시 예에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치의 전체 구성도이다.
본 발명의 제 2 실시 예에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치는 검증 수단에서 원본 이미지를 암호화하여 보관하고, 무결성 검증을 요청할 때는 일시적으로 복호화하여 원본 이미지를 복구하여 무결성 검증을 진행하고 다시 암호화하여 저장하는 구성을 포함하는 것이다.
도 5는 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치의 상세 구성도이다.
본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치는 암호화된 펌웨어 원본 이미지를 보관하는 펌웨어 원본 이미지 저장부(51)와, 펌웨어 원본 이미지를 암호화 및 복호화하는 펌웨어 원본 이미지 암호/복호화부(52)와, 무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성하도록 하는 검증 섹터 선택부(53)와, 피검증 수단으로 임의의 값을 전송하여 무결성 검증 요청을 하는 무결성 검증 요청부(54)와, 피검증 수단으로부터 MD5 해쉬값을 전달받는 피검증 수단 해쉬값 수신부(55)와, 자신이 가지고 있던 펌웨어의 원본 이미지 파일을 사용해 생성한 MD5 해쉬값을 생성하는 검증 해쉬값 생성부(56)와, 자신이 가지고 있던 펌웨어의 원본 이미지 파일을 사용해 생성한 MD5 해쉬값과 피검증 수단으로부터 전달받은 MD5 해쉬값을 비교하는 해쉬값 비교 검증부(57)를 포함한다.
도 6은 검증 수단(EWS)이 시간정보를 기반으로 생성한 nonce값을 피검증 수단(PLC)으로 전달하는 과정을 나타낸 구성도이다.
검증 수단(EWS)은 시간정보를 기반으로 생성한 nonce 값을 피검증 수단(PLC)으로 전달하고, 이는 SCI(Serial Communication Interface)를 이용한 통신으로 진행되고, Nonce 값에 따른 MD5 해쉬 함수의 입력 순서를 다르게 한다.
도 7은 본 발명에 따른 무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성하는 일 예를 나타낸 구성도이다.
본 발명의 일 실시 예에서는 text 영역(flash memory)의 시작 주소(0x300000, Sector H)부터 끝 주소(0x3FFFFF, Sector A)까지 무결성 검증을 진행한다.
이러한 일 실시 예에 따른 방법에서의 무결성 검증 로직의 실행시간 단축을 위하여, 도 7에서와 같이 텍스트 영역 전체를 대상으로 해쉬값을 생성하지 않고 무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성할 수 있도록 한다.
예를 들어, flash memory는 8개의 Sector(A~H)(Sector H가 낮은 주소, Sector A가 높은 주소)로 나뉜다.
무결성 검증 시간의 대부분이 MD5 해쉬값을 생성하는 시간이므로, 사용자의 요구에 따라 무결성 검증을 수행할 Sector 선택을 할 수 있도록 한 것이다.
일 예로, 실행 옵션으로 0을 입력하면 기존의 방식과 마찬가지로 flash memory 전체 영역 검사를 하고, 실행 옵션으로 2와 3을 함께 입력하면 2개의 Sector를 3번째 Sector부터 검사를 한다.
Sector H가 낮은 주소이므로 3번째 Sector는 Sector F가 되며, Sector F로부터 2개의 Sector를 검사하므로 Sector F~E를 순회하며 해쉬값 생성을 한다.
만약, 실행 옵션으로 2와 8을 입력했을 경우, Sector A부터 2개의 Sector를 검사하고, 이 경우, flash memory의 가장 높은 주소를 초과하게 되므로 가장 낮은 주소로 복귀하여 8번째 Sector인 A와 1번째 Sector인 A를 순회하며 해쉬값 생성을 하는 것이다.
도 8은 피검증 수단의 메모리 주소에 할당되는 값의 확인 및 펌웨어 이미지 추출 과정을 나타낸 구성도이다.
컴파일 된 바이너리를 disassemble하여 Device(피검증 수단)의 메모리주소에 할당되는 값을 확인할 수 있고, Uniflash를 이용하여 펌웨어의 이미지를 추출할 수 있다.
도 9는 MD5 해쉬 연산 수행 및 검증 수단(EWS),피검증 수단(PLC)에서 생성한 해쉬값 비교를 나타낸 구성도이다.
nonce 값을 입력값에 포함하여 MD5 해쉬 연산을 수행하고, 검증 수단(EWS), 피검증 수단(PLC)에서 생성한 해쉬값을 비교한다.
이상에서 설명한 본 발명에 따른 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법은 RTOS(Real Time Operating System)가 탑재된 임베디드 장치의 펌웨어에 대한 무결성을 실시간성(Real Time) 및 안전성(safety), 경량화(light-weight)를 만족시키면서 원격으로 검증할 수 있도록 한 것이다.
이상에서의 설명에서와 같이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명이 구현되어 있음을 이해할 수 있을 것이다.
그러므로 명시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 하고, 본 발명의 범위는 전술한 설명이 아니라 특허청구 범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
100. 펌웨어 원본 이미지
200. 검증 수단(EWS)
300. 피검증 수단(PLC)
400. 플래시 메모리

Claims (10)

  1. 탑재될 펌웨어의 변조되지 않은 원본 이미지 파일을 저장하고, 플래시 메모리의 영역을 지정하여 피검증 수단(PLC)에게 MAC 주소 기반의 하드웨어 ID와 함께 검증 요청을 하는 검증 수단(EWS);
    검증 수단(EWS)의 검증 요청에 따라 하드웨어 ID와 시간 정보를 확인한 뒤, 올바른 사용자라면 함께 전달받은 임의의 값(cryptographic nonce)을 의사 난수 생성기의 키값으로 사용하여 해쉬값을 생성하고, 모든 메모리 블록에 대해 순회가 이루어지면 생성된 해쉬값을 검증 수단(EWS)으로 보내는 피검증 수단(PLC);을 포함하고,
    상기 검증 수단(EWS)은 자체적으로 생성한 해쉬값과 피검증 수단으로부터 전달받은 해쉬값을 비교하여 위변조 여부를 판단하고,
    상기 검증 수단(EWS)에 저장되는 펌웨어 이미지는 피검증 수단(PLC)의 메모리에 탑재되는 실행코드이고, 검증 수단(EWS)과 피검증 수단(PLC)은 각각 펌웨어 이미지와 메모리를 동일한 크기를 갖는 임의의 메모리 블록으로 나누는 것이고,
    상기 검증 수단(EWS)은, 텍스트 영역(flash memory)의 시작 주소부터 끝 주소까지 무결성 검증을 진행하거나, 무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성할 수 있도록 하는 것을 특징으로 하는 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치.
  2. 삭제
  3. 제 1 항에 있어서, 상기 검증 수단(EWS)은,
    원본 펌웨어 이미지를 암호화하여 보관하고, 무결성 검증을 요청할 때는 일시적으로 복호화하여 원본 펌웨어 이미지를 복구하여 무결성 검증을 진행하고 다시 암호화하여 저장하는 것을 특징으로 하는 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치.
  4. 제 1 항에 있어서, 상기 검증 수단(EWS)은,
    텍스트 영역(flash memory)의 시작 주소부터 끝 주소까지 무결성 검증을 진행하거나,
    무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성할 수 있도록 하는 것을 특징으로 하는 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치.
  5. 제 1 항에 있어서, 상기 피검증 수단(PLC)은 접근을 허가하고자 하는 검증 수단(EWS)의 MAC 주소를 가지고 있으며, 검증 수단(EWS)으로부터 검증 요청을 받았을 때, 자신이 가지고 있는 검증 수단(EWS)의 MAC주소에 시간 정보를 Salt로 사용하여 해시값 생성하는 것을 특징으로 하는 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치.
  6. PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치의 검증 수단(EWS)이,
    암호화된 펌웨어 원본 이미지를 보관하는 펌웨어 원본 이미지 저장부;
    펌웨어 원본 이미지를 암호화 및 복호화하는 펌웨어 원본 이미지 암호/복호화부;
    무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성하도록 하는 검증 섹터 선택부;
    피검증 수단으로 임의의 값을 전송하여 무결성 검증 요청을 하는 무결성 검증 요청부;
    피검증 수단으로부터 해쉬값을 전달받는 피검증 수단 해쉬값 수신부;
    자신이 가지고 있던 펌웨어의 원본 이미지 파일을 사용해 생성한 해쉬값을 생성하는 검증 해쉬값 생성부;
    자신이 가지고 있던 펌웨어의 원본 이미지 파일을 사용해 생성한 해쉬값과 피검증 수단으로부터 전달받은 해쉬값을 비교하는 해쉬값 비교 검증부;를 포함하는 것을 특징으로 하는 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치.
  7. 검증 수단(EWS)이 플래시 메모리의 영역을 지정하여 피검증 수단(PLC)에게 MAC 주소 기반의 하드웨어 ID와 함께 검증 요청을 하는 단계;
    검증 수단(EWS)의 검증 요청에 따라 하드웨어 ID와 시간 정보를 확인한 뒤, 올바른 사용자라면 함께 전달받은 임의의 값(cryptographic nonce)을 의사 난수 생성기의 키값으로 사용하여 해쉬값을 생성하는 단계;
    피검증 수단(PLC)이 생성한 해쉬값을 검증 수단(EWS)에게 보내고, 검증 수단(EWS)은 자신이 가지고 있는 온전한 펌웨어에 대한 해쉬값을 생성하는 단계;
    검증 수단(EWS)이 자체적으로 생성한 해쉬값과 피검증 수단(PLC)으로부터 전달받은 해쉬값을 비교하여 위변조 여부를 판단하는 단계;를 포함하고,
    상기 검증 수단(EWS)은, 텍스트 영역(flash memory)의 시작 주소부터 끝 주소까지 무결성 검증을 진행하거나, 무결성 검증을 수행할 섹터를 선택하여 텍스트 영역의 일부분만을 대상으로 해쉬값을 생성할 수 있도록 하는 것을 특징으로 하는 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 방법.
  8. 제 7 항에 있어서, 검증 수단(EWS)은 피검증 수단(PLC)에게 전송한 임의의 값과 동일한 값을 의사 난수 생성기의 키값으로 사용하여 온전한 펌웨어에 대한 해쉬값을 생성하는 것을 특징으로 하는 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 방법.
  9. 제 7 항에 있어서, 상기 검증 수단(EWS)은, 원본 펌웨어 이미지를 암호화하여 보관하고, 무결성 검증을 요청할 때는 일시적으로 복호화하여 원본 펌웨어 이미지를 복구하여 무결성 검증을 진행하고 다시 암호화하여 저장하는 것을 특징으로 하는 PLC용 펌웨어 무결성을 검증하기 위한 원격 보증증명 방법.
  10. 삭제
KR1020200060736A 2020-05-21 2020-05-21 Plc용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법 KR102289456B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200060736A KR102289456B1 (ko) 2020-05-21 2020-05-21 Plc용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200060736A KR102289456B1 (ko) 2020-05-21 2020-05-21 Plc용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법

Publications (1)

Publication Number Publication Date
KR102289456B1 true KR102289456B1 (ko) 2021-08-12

Family

ID=77314446

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200060736A KR102289456B1 (ko) 2020-05-21 2020-05-21 Plc용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102289456B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117997656A (zh) * 2024-04-03 2024-05-07 浙江大学 一种工控数据全生命周期安全管控系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100053900A (ko) 2008-11-13 2010-05-24 한국전력공사 통신기기 보안기능 처리용 보안전용 장치
JP2010250405A (ja) * 2009-04-13 2010-11-04 Mitsubishi Electric Corp 情報機器
KR20140070203A (ko) 2012-11-30 2014-06-10 한국전자통신연구원 임베디드 시스템의 펌웨어 무결성 검증 장치 및 방법
KR101563441B1 (ko) 2014-12-31 2015-10-26 한국조폐공사 펌웨어의 정당성 확인이 가능한 기계장치 및 이의 펌웨어 업데이트 방법
KR20190014444A (ko) * 2017-08-02 2019-02-12 삼성전자주식회사 보안 장치, 이를 포함하는 전자 장치 및 전자 장치의 동작 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100053900A (ko) 2008-11-13 2010-05-24 한국전력공사 통신기기 보안기능 처리용 보안전용 장치
JP2010250405A (ja) * 2009-04-13 2010-11-04 Mitsubishi Electric Corp 情報機器
KR20140070203A (ko) 2012-11-30 2014-06-10 한국전자통신연구원 임베디드 시스템의 펌웨어 무결성 검증 장치 및 방법
KR101563441B1 (ko) 2014-12-31 2015-10-26 한국조폐공사 펌웨어의 정당성 확인이 가능한 기계장치 및 이의 펌웨어 업데이트 방법
KR20190014444A (ko) * 2017-08-02 2019-02-12 삼성전자주식회사 보안 장치, 이를 포함하는 전자 장치 및 전자 장치의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117997656A (zh) * 2024-04-03 2024-05-07 浙江大学 一种工控数据全生命周期安全管控系统

Similar Documents

Publication Publication Date Title
Biham et al. Rogue7: Rogue engineering-station attacks on s7 simatic plcs
CN116601912B (zh) 提供加密安全的后秘密供应服务的系统、方法和存储介质
KR100670005B1 (ko) 모바일 플랫폼을 위한 메모리의 무결성을 원격으로 확인하는 확인장치 및 그 시스템 그리고 무결성 확인 방법
CN101213814B (zh) 安全修补系统
CN103946856B (zh) 加解密处理方法、装置和设备
JP5563067B2 (ja) 試験装置によってセキュアドチップへのアクセスを認証する方法
JP4638912B2 (ja) ディストリビューションcdを使用した、署名されたグループにおけるダイレクトプルーフの秘密鍵を装置に伝達する方法
US20060005046A1 (en) Secure firmware update procedure for programmable security devices
EP1582950A2 (en) Digital rights management system and method
JP2017139811A5 (ko)
JP7400744B2 (ja) 車両制御システム
KR102645542B1 (ko) 차량 내부 네트워크 장치 및 방법
KR102364649B1 (ko) Puf 기반 사물인터넷 디바이스 인증 장치 및 방법
CN113079001B (zh) 密钥更新方法、信息处理设备及密钥更新装置
Mansor et al. Don't brick your car: firmware confidentiality and rollback for vehicles
CN105279441A (zh) 用于对数据进行加密和解密的方法和架构
CN105141426A (zh) 工控设备安全认证方法、服务器和客户端
KR20210021284A (ko) 보호된 컨테이너 간의 보안 통신 방법 및 그러한 시스템
Won et al. A secure shuffling mechanism for white-box attack-resistant unmanned vehicles
KR102289456B1 (ko) Plc용 펌웨어 무결성을 검증하기 위한 원격 보증증명 장치 및 방법
US20020168067A1 (en) Copy protection method and system for a field-programmable gate array
KR102466866B1 (ko) 데이터의 검증 방법
CN113553592A (zh) 一种基于嵌入式信任根的智能设备安全代码更新方法
KR20230137422A (ko) 디지털 장치를 위한 신뢰할 수 있는 컴퓨팅
KR20200101020A (ko) 컨소시엄 블록체인 참가 노드 간의 인증 방안

Legal Events

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