KR102038989B1 - Plc 프로토콜 암호화 방법 - Google Patents

Plc 프로토콜 암호화 방법 Download PDF

Info

Publication number
KR102038989B1
KR102038989B1 KR1020180008062A KR20180008062A KR102038989B1 KR 102038989 B1 KR102038989 B1 KR 102038989B1 KR 1020180008062 A KR1020180008062 A KR 1020180008062A KR 20180008062 A KR20180008062 A KR 20180008062A KR 102038989 B1 KR102038989 B1 KR 102038989B1
Authority
KR
South Korea
Prior art keywords
area
data
bytes
protocol
encryption
Prior art date
Application number
KR1020180008062A
Other languages
English (en)
Other versions
KR20190089493A (ko
Inventor
이장형
최종천
Original Assignee
이장형
최종천
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 이장형, 최종천 filed Critical 이장형
Priority to KR1020180008062A priority Critical patent/KR102038989B1/ko
Publication of KR20190089493A publication Critical patent/KR20190089493A/ko
Application granted granted Critical
Publication of KR102038989B1 publication Critical patent/KR102038989B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0457Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply dynamic encryption, e.g. stream encryption
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Abstract

본 발명의 일 실시예에 따른 PLC 프로토콜 암호화 방법은 타장치와의 통신 설정을 위한 헤더 영역과, 명령어 데이터 및 명령에 대응하는 응답데이터 중 적어도 하나를 포함하는 데이터 영역으로 구성되는 PLC(Programmable Logic Controller) 프로토콜 암호화 방법에 관한 것으로, 명령어, 데이터주소, 데이터타입 및 블록 수에 해당하는 영역은 미리 설정된 키 및 트윅에 기초하여 형태보존 암호화를 수행하고, 상기 형태보존암호화가 수행되지 않은 연속된 데이터 영역은 상기 트윅을 키로 하는 스트리밍 암호화가 수행된다.

Description

PLC 프로토콜 암호화 방법{METHOD OF ENCRYPTING PROTOCOL FOR PROGRAMMABLE LOGIC CONTROLLER}
본 발명은 프로토콜 암호화 방법에 관한 것으로, 구체적으로는 산업용 제어장비인 PLC(Programmable Logic Controller) 보안을 위한 PLC 프로토콜 암호화 방법에 관한 것이다.
2010년 악성코드 스턱스넷을 이용한 이란 원전에 대한 공격이후 다양한 형태의 제어시스템에 대한 공격이 발생하고 있으며, 이로 인하여 산업용 제어장비인 PLC(Programmable Logic Controller) 보안에 대한 관심이 증가되고 있다.
PLC는 산업용 제어시스템(SCADA: Supervisory Control and Data Acquisition)의 핵심 장치로 전력제어뿐만 아니라 공장자동화, 빌딩자동화 같은 다양한 분야에서 두루 사용되는 제어 장비로 입출력제어 및 센서 데이터 수집에 필요한 중요한 역할을 하고 있다.
산업용 제어시스템 보안에서 무결성과 가용성은 특히나 강조되는 부분으로 대규모 국가 기반시설이 오작동 되거나 정지되었을 때 미치는 파급효과를 고려해보면 장비를 직접 제어하고 있는 PLC 장비에 대한 보안강화는 시급한 문제라고 볼 수 있으며, 이에 가능한 모든 장비 와의 통신은 암호화 통신을 사용할 것과 일방향 통신기술을 적용할 것을 권장하고 있다.
한편, PLC 장비는 입출력 제어와 데이터 수집을 위해 주로 사용하기 때문에 기본 데이터 형태는 비트(bit) 데이터, 비트데이터를 담고 있는 바이트(byte)열, 바이트열을 이용해 실수나 정수를 표현하기 위한 워드(word) 데이터를 가지고 있다.
PLC 통신은 기본적으로 질의(Request)/응답(Response) 형태의 폴링 방식으로 동작하게 설계되어 있고, 시리얼 통신을 기반으로 설계된 경우가 많기 때문에 별도의 암호화를 적용하지 않은 프로토콜을 사용하고 있어 여러 가지 보안 취약점을 가지고 있다.
기존 PLC 통신의 주요 보안취약점은 공격 목적에 따라 크게 기밀성 공격, 무결성 공격, 가용성 공격으로 구분될 수 있다.
기밀성 공격은 PLC 통신의 내용이 읽히는 것으로 통신 패킷이 암호화 되어 있지 않기 때문에 패킷에 대한 탈취도 가능하며, 또한 프로토콜 공인 포트에 접속하여 형식에 맞는 질의패킷을 보내면 관련 응답을 보내주기 때문에 누구나 PLC 장치의 주소(IP address)를 알고 있으면 손쉽게 장치 내 정보를 얻어낼 수 있다.
무결성 공격은 잘못된 데이터를 삽입하는 것으로 PLC 통신은 암호화 되지 않은 통신 패킷에 대해 데이터 변형을 확인하기 위한 CRC나 LRC정도의 체크섬(Checksum) 기법만 제공하는 경우가 많아 패킷을 가로챈 후 임의의 다른 데이터로 변조하는 것이 어렵지 않게 가능하다.
가용성 공격은 운영에 대한 안정성을 해치는 기법으로 암호화되지 않은 패킷과 공인된 포트로 노출되어 있어 접속 가능한 장비를 해킹해서 특정 장비를 동작시키거나 동작을 정지시키는 명령 요청을 보내게 되면 PLC 장비는 별도의 인증이나 검증 없이 해당 명령을 수행하게 되어 정상적인 동작이 어렵게 된다
한편, 하기 선행기술문헌에는 분산 네트워크 프로토콜 기반의 데이터 전송 장치 및 그의 데이터 암호화 방법에 관한 발명이 개시되어 있으며, 본 발명의 기술적 요지는 개시하고 있지 않다.
대한민국 등록특허공보 제10-1590351호
본 발명의 일 실시예에 따른 PLC 프로토콜 암호화 방법은 전술한 문제점을 해결하기 위하여 다음과 같은 해결과제를 목적으로 한다.
기존에 사용되는 PLC 프로토콜의 길이를 변경하지 않고 보안성을 높일 수 있는 PLC 프로토콜 암호화 방법을 제공하는데 그 목적이 있다.
또한, 개발 현장에 따른 다양한 형식의 PLC 프로토콜에 적용이 가능한 PLC 프로토콜 암호화 방법을 제공하는데 그 목적이 있다.
본 발명의 해결과제는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 해결과제들은 아래의 기재로부터 당해 기술분야에 있어서의 통상의 지식을 가진 자에게 명확하게 이해되어 질 수 있을 것이다.
본 발명의 일 실시예에 따른 PLC 프로토콜 암호화 방법은 타장치와의 통신 설정을 위한 헤더 영역과, 명령어 데이터 및 명령에 대응하는 응답데이터 중 적어도 하나를 포함하는 데이터 영역으로 구성되는 PLC(Programmable Logic Controller) 프로토콜 암호화 방법에 관한 것으로, 명령어, 데이터주소, 데이터타입 및 블록 수에 해당하는 영역은 미리 설정된 키 및 트윅에 기초하여 형태보존 암호화를 수행하고, 상기 형태보존암호화가 수행되지 않은 연속된 데이터 영역은 상기 트윅을 키로 하는 스트리밍 암호화가 수행된다.
상기 PLC 프로토콜은 헤더 영역이 2 바이트의 Transaction ID 영역, 2 바이트의 Protocol ID 영역, 2 바이트의 추종 바이트 수 영역 및 1 바이트의 스테이션 번호 영역이 순차적으로 형성된 제1 PLC 프로토콜이고, 상기 제1 PLC 프로토콜은 제1 읽기-질의(Read Request) 프로토콜, 제1 읽기-응답(Read Response) 프로토콜, 제1 쓰기-질의(Write Request) 프로토콜 및 제1 쓰기-응답(Write Response) 프로토콜로 구분되는 것이 바람직하다.
상기 제1 읽기-질의 프로토콜의 데이터 영역은 1 바이트로 형성된 명령어 코드 영역, 2 바이트로 형성된 블록시작주소 영역 및 2바이트로 형성된 블록 수 영역을 포함하되, 상기 명령어 코드 영역, 블록시작주소 영역 및 블록 수 영역에는 형태보존 암호화가 수행되고, 상기 제1 읽기-응답 프로토콜의 데이터 영역은 1 바이트로 형성된 명령어 코드 영역, 2 바이트로 형성된 실제 쓰여질 바이트 수 영역 및 2개를 초과하는 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 코드 영역, 실제 쓰여질 바이트 수 영역 및 데이터 값 영역 중 최초 2개의 바이트에는 형태보존 암호화가 수행되고, 데이터 값 영역 중 형태보존 암호화가 수행되지 않은 나머지 영역에는 스트리밍 암호화가 수행되는 것이 바람직하다.
상기 제1 쓰기-질의 프로토콜의 데이터 영역은 1 바이트로 형성된 명령어 코드 영역, 2 바이트로 형성된 블록시작주소 영역, 2바이트로 형성된 블록 수 영역, 2 바이트로 형성된 바이트 카운트 영역 및 2개를 초과하는 아웃풋 밸류 영역을 포함하되, 상기 명령어 코드 영역, 블록시작주소 영역 및 블록 수 영역에는 형태보존 암호화가 수행되고, 상기 바이트 카운트 영역 및 아웃풋 밸류 영역에는 스트리밍 암호화가 수행되고, 상기 제1 쓰기-응답 프로토콜의 데이터 영역은 1 바이트로 형성된 명령어 코드 영역, 2 바이트로 형성된 블록시작주소 영역 및 2 바이트로 형성된 아웃풋 밸류수 영역을 포함하되, 상기 명령어 코드 영역, 블록시작주소 영역 및 아웃풋 밸류수 영역에는 형태보존 암호화가 수행되는 것이 바람직하다.
상기 PLC 프로토콜은 헤더 영역이 9 바이트의 고유아이디 영역, 1 바이트의 프레임 번호 영역, 1 바이트의 명령어 영역, 1 바이트의 예약 영역, 2 바이트의 데이터 길이 영역을 포함하는 제2 PLC 프로토콜이고, 상기 제2 PLC 프로토콜은 제2 읽기-질의(Read Request) 프로토콜, 제2 읽기-응답(Read Response) 프로토콜, 제2 쓰기-질의(Write Request) 프로토콜 및 제2 쓰기-응답(Write Response) 프로토콜로 구분되는 것이 바람직하다.
상기 제2 읽기-질의 프로토콜의 데이터 영역은 8 바이트로 형성된 디바이스 어드레스 영역 및 2 바이트로 형성된 블록크기 영역을 포함하되, 상기 명령어 영역, 예약 영역, 데이터 필드의 길이 영역, 디바이스 어드레스 영역 및 블록크기 영역에는 형태보존 암호화가 수행되고, 상기 제2 읽기-응답 프로토콜의 데이터 영역은 복수 개의 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 영역, 예약 영역 및 데이터 필드의 길이 영역에는 형태보존 암호화가 수행되고, 상기 데이터 값 영역에는 스트리밍 암호화가 수행되는 것이 바람직하다.
상기 제2 쓰기-질의 프로토콜의 데이터 영역은 8 바이트로 형성된 디바이스 어드레스 영역, 2 바이트로 형성된 블록크기 영역, 복수 개의 바이트로 형성된 밸류 영역을 포함하되, 상기 명령어 영역, 예약 영역, 데이터 필드의 길이 영역, 디바이스 어드레스 영역 및 블록크기 영역에는 형태보존 암호화가 수행되고, 상기 밸류 영역에는 스트리밍 암호화가 수행되고, 상기 제2 쓰기-응답 프로토콜의 데이터 영역은 복수 개의 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 영역, 예약 영역 및 데이터 필드의 길이 영역에는 형태보존 암호화가 수행되고, 상기 데이터 값 영역에는 스트리밍 암호화가 수행되는 것이 바람직하다.
상기 PLC 프로토콜은 헤더 영역이 20 바이트로 형성되는 제3 PLC 프로토콜이고, 상기 제3 PLC 프로토콜은 제3 질의(Request) 프로토콜 및 제3 응답(Response) 프로토콜로 구분되는 것이 바람직하다.
상기 제3 요청 프로토콜의 데이터 영역은 2 바이트로 형성된 명령어 영역, 2 바이트로 형성된 데이터 타입 영역, 2 바이트로 형성된 예약 영역, 2 바이트로 형성된 블록수 영역 및 복수 개의 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 영역, 데이터 타입 영역, 예약 영역 및 블록수 영역에는 형태보존 암호화가 수행되고, 상기 데이터 값 영역에는 스트리밍 암호화가 수행되는 것이 바람직하다.
상기 제3 응답 프로토콜의 데이터 영역은 2 바이트로 형성된 명령어 영역, 2 바이트로 형성된 데이터 타입 영역, 2 바이트로 형성된 예약 영역, 2 바이트로 형성된 에러상태 영역, 2 바이트로 형성된 블록수 영역 및 복수 개의 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 영역, 데이터 타입 영역, 예약 영역, 에러상태 영역 및 블록수 영역에는 형태보존 암호화가 수행되고, 상기 데이터 값 영역에는 스트리밍 암호화가 수행되는 것이 바람직하다.
본 발명의 일 실시예에 따른 PLC 프로토콜 암호화 방법은 기존 프로토콜 포맷의 변형이나 VPN과 같이 기존 통신환경을 변경할 필요 없이 보안성을 강화하면서도 기존 프로토콜 형태를 유지할 수 있는 암호화 방법을 제공함으로써, 기존의 PLC 통신의 보안 취약점을 해소할 수 있는 동시에 새로운 장비 또는 시스템의 도입을 위한 추가 비용을 절감할 수 있는 효과가 있다.
또한, 블록화된 데이터를 주고받는 PLC 프로토콜의 특성을 고려하여 형태보존암호를 적용함으로써 PLC 업체에서의 도입시 추가 개발에 대한 비용을 절감할 수 있는 효과가 있다.
본 발명의 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당해 기술분야에 있어서의 통상의 지식을 가진 자에게 명확하게 이해되어질 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 PLC 프로토콜의 일반적인 구성을 도시한 도면이다.
도 2 및 도 3은 제1 PLC 프로토콜의 구성을 도시한 도면이다.
도 4 및 도 5는 제2 PLC 프로토콜의 구성을 도시한 도면이다.
도 6은 제3 PLC 프로토콜의 구성을 도시한 도면이다.
첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
TCP/IP기반 PLC 프로토콜은 규격화된 통신환경, 암호화되지 않은 프로토콜 형식, 질의(Request)/응답(Response) 형식의 프로토콜 설계, 블록 단위의 데이터 읽기(Read) /쓰기(Write)를 지원하고 있다.
이러한 PLC 프로토콜의 구조는 도 1에 도시된 바와 같이 헤더 영역(10)과 데이터 영역(20)으로 구분된다.
헤더 영역(10)에는 모니터링 시스템(HMI) 등의 통신 대상과의 통신 설정을 위한 정보를 포함하고 있으며, 데이터 영역(20)의 경우 질의용 형식에는 명령어 및 데이터를 포함하고, 응답용 형식에는 명령에 대응하는 응답데이터를 포함하고 있다.
특히, 공개된 프로토콜 형식으로 만들어진 질의형식으로 지정된 포트에 접근하여 읽기나 쓰기에 대한 명령을 별도의 인증과정 없이 수행하는 것을 가능하게 하는 문제점이 된다.
이러한 문제점을 극복하기 위하여 PLC 프로토콜을 암호화하는 것이 요구되며, 특히 암호화 전/후의 프로토콜 길이의 변경 없이 적용 가능하도록 암호화하는 것이 바람직하다.
이를 위하여 본 발명의 일 실시예에 따른 PLC 프로토콜 암호화 방법은 PLC 제어의 핵심영역인 명령어, 데이터주소, 데이터타입, 블록 수에 해당하는 영역을 형태보존암호로 암호화하되, 미리 설정된 키(K) 및 트윅(T)에 기초하여 형태보존암호로 암호화한다.
이러한 키 및 트윅의 경우, PLC와 상기 PLC와 통신을 수행하는 모니터링 시스템 등의 타장치에 미리 설정되어야 한다.
아울러, 형태보존암호화가 수행되지 않은 데이터 영역은 상기 트윅(T)을 키로 하는 스트리밍 암호화가 수행된다.
암호화 영역에 대해 필요성을 설명하면 명령어는 읽기와 쓰기로 구분되는 읽기와 쓰기도 비트, 바이트, 워드에 따라 명령어가 다른 경우가 있고 연속데이터인지 단일데이터인지에 따라 명령어가 다른 경우가 있다.
데이터 주소는 데이터가 저장된 위치를 가르치는 것으로 실제 제어와 상태를 원하는 곳을 표현하는 값이며, 프로토콜에 따라 데이터주소 만으로도 제어용 데이터인지 실수형 데이터인지를 구분하는 것이 가능한 경우도 있다.
데이터타입은 데이터가 제어용 데이터인지 상태 데이터인지 비트인지 바이트인지 워드인지 등을 나타내는 정보이고, 블록 수는 시작주소로부터 읽거나 쓰는 데이터의 블록 수를 의미하는 값으로 원하는 블록의 정보를 찾아갈 때 사용된다.
형태보존암호를 적용하는 이유는 PLC 프로토콜마다 명령어 길이가 다르지만 PLC 데이터는 블록 단위로 읽어 오기 때문에 일반적으로 명령어 길이가 짧아 216인 16 바이트로 형태보존 암호화가 가능하고, 암호화된 데이터 길이가 원본 데이터 길이와 동일하기 때문에 프로토콜 길이에 대한 변경 없이 적용이 가능하다는 장점을 가지고 있다.
본 발명의 일 실시예에 따른 PLC 프로토콜 암호화 방법은 질의(Request) 형식에 대해서 헤더 영역(10)을 제외한 읽기/쓰기 명령과 관련된 데이터의 경우 형태보존암호를 적용해서 기존 프로토콜에서 지정된 길이와 동일한 길이로 암호화하는 것을 특징으로 한다.
또한, 응답데이터와 쓰기명령에서 데이터에 대해서는 RC4, Rabbit과 같은 스트림 암호화를 적용해 암호화 되지 않은 데이터가 노출되지 않도록 하는 것을 특징으로 한다.
앞에서 설명한 바와 같이 형태보존 암호화의 경우 미리 설정된 키 및 트윅에 기초하여 수행되며, 스트리밍 암호화의 경우 형태보존 암호화에서 사용되는 트윅을 스트리밍 암호화키로 하여 수행되는데, 이에 대한 형태보존 암호화 함수 및 스트리밍 암호화 함수는 다음과 같이 정의될 수 있다.
형태보존암호화 함수 = CF(K,T), (여기에서 K는 키, T는 트윅을 의미함)
스트리밍암호화 함수 = CS(T), (여기에서 T는 스트리밍암호화 키이며, 형태보존암호화에 사용되는 트윅을 의미함)
한편, 본 발명의 일 실시예에 따른 PLC 프로토콜 암호화 방법은 다양한 형식의 PLC 프로토콜에 적용이 가능하므로, 각 개발사에 맞는 프로토콜별 암호화가 가능하다는 장점이 있다.
이하에서는 PLC 프로토콜 중 국제 표준인 모드버스(Modbus) 프로토콜 등 다양한 형식의 프로토콜에 본 발명의 일 실시예에 따른 PLC 프로토콜 암호화 방법이 적용되는 여러 실시예들에 대하여 설명하도록 한다.
먼저, 도 2 및 도 3에 도시된 바와 같이 2 바이트의 Transaction ID 영역, 2 바이트의 Protocol ID 영역, 2 바이트의 추종 바이트 수(No. of bytes following) 영역 및 1 바이트의 스테이션 번호(Station No.) 영역의 총 7 바이트의 헤더 영역을 구비하는 제1 PLC 프로토콜에서의 암호화 방법을 설명하도록 한다.
이러한 제1 PLC 프로토콜의 형식은 실질적으로 모드버스 프로토콜의 형식으로, 구체적으로 제1 읽기-질의(Read Request) 프로토콜, 제1 읽기-응답(Read Response) 프로토콜, 제1 쓰기-질의(Write Request) 프로토콜 및 제1 쓰기-응답(Write Response) 프로토콜로 구분된다.
모드버스 프로토콜에서 암호화 대상은 명령어코드, 시작주소, 블록 수가 대상이 되며, 암호화 여부는 기본 값이 0인 프로토콜 아이디 필드를 활용해 0x0F와 같은 값으로 설정해 암호화 여부를 알릴 수 있다.
읽기 형식과 쓰기 형식 모두 12 바이트는 고정으로 전송이 되어야 하므로 전송된 7 바이트의 헤더 영역을 제외한 나머지 5 바이트에 대해 형태보존 암호화 기법을 적용해 암호화된 형태로 전송한다.
읽기에 대한 응답은 최소 레지스터 1개 이상의 값이 돌아오게 되므로 읽기 응답에 대해서도 동일하게 8번째에서 12번째까지 5 바이트에 대해 암호화된 영역을 평문변환한 후에 프로토콜에 대해 실제 길이와 같은 해석을 진행하며, 상술한 제1 PLC 프로토콜의 암호화 방법을 아래와 같이 정리해 볼 수 있다.
제1 PLC 프로토콜 중 제1 읽기-질의 프로토콜의 데이터 영역은 1 바이트로 형성된 명령어 코드 영역, 2 바이트로 형성된 블록시작주소 영역 및 2바이트로 형성된 블록 수 영역을 포함하되, 상기 명령어 코드 영역, 블록시작주소 영역 및 블록 수 영역에는 형태보존 암호화가 수행된다.
또한, 제1 PLC 프로토콜 중 제1 읽기-응답 프로토콜의 데이터 영역은 1 바이트로 형성된 명령어 코드 영역, 2 바이트로 형성된 실제 쓰여질 바이트 수 영역 및 2개를 초과하는 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 코드 영역, 실제 쓰여질 바이트 수 영역 및 데이터 값 영역 중 최초 2개의 바이트에는 형태보존 암호화가 수행되고, 데이터 값 영역 중 형태보존 암호화가 수행되지 않은 나머지 영역에는 스트리밍 암호화가 수행된다.
또한, 제1 PLC 프로토콜 중 제1 쓰기-질의 프로토콜의 데이터 영역은 1 바이트로 형성된 명령어 코드 영역, 2 바이트로 형성된 블록시작주소 영역, 2바이트로 형성된 블록 수 영역, 2 바이트로 형성된 바이트 카운트 영역 및 2개를 초과하는 아웃풋 밸류 영역을 포함하되, 상기 명령어 코드 영역, 블록시작주소 영역 및 블록 수 영역에는 형태보존 암호화가 수행되고, 상기 바이트 카운트 영역 및 아웃풋 밸류 영역에는 스트리밍 암호화가 수행된다.
아울러, 제1 PLC 프로토콜 중 제1 쓰기-응답 프로토콜의 데이터 영역은 1 바이트로 형성된 명령어 코드 영역, 2 바이트로 형성된 블록시작주소 영역 및 2 바이트로 형성된 아웃풋 밸류수 영역을 포함하되, 상기 명령어 코드 영역, 블록시작주소 영역 및 아웃풋 밸류수 영역에는 형태보존 암호화가 수행된다.
다음으로, 도 4 및 도 5에 도시된 바와 같이 9 바이트의 고유아이디 영역, 1 바이트의 프레임 번호 영역, 1 바이트의 명령어 영역, 1 바이트의 예약 영역, 2 바이트의 데이터 길이 영역을 포함하는 헤더 영역을 구비한 제2 PLC 프로토콜에서의 암호화 방법을 설명하도록 한다.
이러한 제2 PLC 프로토콜의 형식은 실질적으로 국내 PLC 업체인 싸이몬(CIMON)사의 프로토콜 형식으로, 구체적으로 제2 읽기-질의(Read Request) 프로토콜, 제2 읽기-응답(Read Response) 프로토콜, 제2 쓰기-질의(Write Request) 프로토콜 및 제2 쓰기-응답(Write Response) 프로토콜로 구분된다.
이러한 제2 프로토콜의 경우 데이터 영역에서의 최초 10 바이트가 장치 주소와 블록 수로 고정된 길이를 가지고 있어 도 4에 도시된 바와 같이 제2 읽기-질의 프로토콜의 경우 명령어 영역, 예약 영역, 데이터 필드의 길이 영역, 디바이스 어드레스(장치시작주소) 영역, 블록크기(블록 수) 영역에 대하여 모두 14 바이트에 대해 형태보존암호화 기법을 적용한다.
제2 읽기-응답 프로토콜의 경우 명령어 영역, 예약 영역, 데이터 필드의 길이 영역까지의 4 바이트만 형태보존암호화 기법을 적용하고, 나머지 데이터부 전체에 대해서는 트윅을 키로 하는 스트리밍암호화 기법을 적용한다.
제2 쓰기-질의 프로토콜의 경우 도 5에 도시된 바와 같이, 명령어 영역, 예약 영역, 데이터 필드의 길이 영역. 디바이스 어드레스 영역 및 블록크기 영역의 총 14 바이트에 대하여 형태보존암호화기법을 적용하여 암호화하고 나머지 영역인 복수 개의 바이트로 형성된 밸류 영역은 트윅을 이용한 스트리밍 암호화 기법을 적용하며, 제2 쓰기-응답 프로토콜의 경우 상술한 제2 읽기-응답 프로토콜과 동일하게 암호화된다.
한편 프로토콜의 체크섬은 암호화된 데이터가 적용된 이후 계산된 값을 적용하는 것이 바람직하며, 상술한 제2 PLC 프로토콜의 암호화 방법을 아래와 같이 정리해 볼 수 있다.
제2 PLC 프로토콜 중 제2 읽기-질의 프로토콜의 데이터 영역은 8 바이트로 형성된 디바이스 어드레스 영역 및 2 바이트로 형성된 블록크기 영역을 포함하되, 상기 명령어 영역, 예약 영역, 데이터 필드의 길이 영역, 디바이스 어드레스 영역 및 블록크기 영역에는 형태보존 암호화가 수행된다.
또한, 제2 PLC 프로토콜 중 제2 읽기-응답 프로토콜의 데이터 영역은 복수 개의 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 영역, 예약 영역 및 데이터 필드의 길이 영역에는 형태보존 암호화가 수행되고, 상기 데이터 값 영역에는 스트리밍 암호화가 수행된다.
또한, 제2 PLC 프로토콜 중 제2 쓰기-질의 프로토콜의 데이터 영역은 8 바이트로 형성된 디바이스 어드레스 영역, 2 바이트로 형성된 블록크기 영역, 복수 개의 바이트로 형성된 밸류 영역을 포함하되, 상기 명령어 영역, 예약 영역, 데이터 필드의 길이 영역, 디바이스 어드레스 영역 및 블록크기 영역에는 형태보존 암호화가 수행되고, 상기 밸류 영역에는 스트리밍 암호화가 수행된다.
아울러, 제2 PLC 프로토콜 중 제2 쓰기-응답 프로토콜의 데이터 영역은 복수 개의 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 영역, 예약 영역 및 데이터 필드의 길이 영역에는 형태보존 암호화가 수행되고, 상기 데이터 값 영역에는 스트리밍 암호화가 수행된다.
마지막으로, 도 6에 도시된 바와 같이 20 바이트의 헤더 영역을 구비하는 제3 PLC 프로토콜에서의 암호화 방법을 설명하도록 한다.
이러한 제3 PLC 프로토콜의 형식은 실질적으로 국내 업체인 LS 산전에서 사용하는 PLC 프로토콜의 형식으로, 구체적으로 제3 질의(Request) 프로토콜과, 제3 응답(Response) 프로토콜로 구분된다.
이러한 제3 PLC 프로토콜의 암호화 여부는 헤더 영역에서 PLC정보필드를 활용하여 암호화 여부에 대한 값을 지정할 수 있으며, 제3 PLC 프로토콜은 헤더 영역과 데이터 영역의 구분이 명확하고 공통된 형식을 가지고 있어서 데이터 영역의 명령어 영역, 데이터 타입 영역, 예약 영역, 블록수 영역을 형태보존 암호화 기법으로 암호화 한다.
또한 제3 PLC 프로토콜의 경우 장치주소가 구조화된 데이터 영역에 정의되어 있고 여러 개 주소를 개별적으로 지정하는 것이 가능하기 때문에 장치주소를 포함한 구조화된 데이터 전체는 스트리밍암호화 기법을 적용하며, 상술한 제3 PLC 프로토콜의 암호화 방법을 아래와 같이 정리해 볼 수 있다.
제3 PLC 프로토콜 중 제3 요청 프로토콜의 데이터 영역은 2 바이트로 형성된 명령어 영역, 2 바이트로 형성된 데이터 타입 영역, 2 바이트로 형성된 예약 영역, 2 바이트로 형성된 블록수 영역 및 복수 개의 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 영역, 데이터 타입 영역, 예약 영역 및 블록수 영역에는 형태보존 암호화가 수행되고, 상기 데이터 값 영역에는 스트리밍 암호화가 수행된다.
또한, 제3 PLC 프로토콜 중 제3 응답 프로토콜의 데이터 영역은 2 바이트로 형성된 명령어 영역, 2 바이트로 형성된 데이터 타입 영역, 2 바이트로 형성된 예약 영역, 2 바이트로 형성된 에러상태 영역, 2 바이트로 형성된 블록수 영역 및 복수 개의 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 영역, 데이터 타입 영역, 예약 영역, 에러상태 영역 및 블록수 영역에는 형태보존 암호화가 수행되고, 상기 데이터 값 영역에는 스트리밍 암호화가 수행된다.
앞에서는 다양한 형식의 PLC 프로토콜의 암호화 방법의 실시예들에 대하여 설명하였으며, 특히, PLC에 상술한 형태보존암호화 기법을 적용하기 위하여 고려해야 할 사항은 다음과 같다.
첫번째로는 읽기/쓰기 명령어와 명령부 데이터 구조가 완성되어야 하며, 두번째로는 암호화 여부의 표시를 위하여 명령부 데이터를 포함한 헤더부를 구성하여야 한다.
세번째로는 명령부 데이터를 암호화하여야 하며, 마지막으로 암호화된 명령부를 포함하여 체크섬을 적용하여야 한다.
본 발명의 일 실시예에 따른 PLC 프로토콜의 암호화 방법을 통하여 종래의 PLC 통신 보안 취약점을 극복할 수 있다.
나아가 기존 프로토콜 길이를 그대로 유지하면서 데이터를 전송할 수 있으므로 새로운 프로토콜을 개발하지 않더라도 기존의 프로토콜에 쉽게 적용이 가능하므로 적은 비용으로 PLC 프로토콜에 대한 보안을 강화할 수 있는 효과를 기대할 수 있다.
본 명세서에서 설명되는 실시예와 첨부된 도면은 본 발명에 포함되는 기술적 사상의 일부를 예시적으로 설명하는 것에 불과하다. 따라서 본 명세서에 개시된 실시예들은 본 발명의 기술적 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이므로, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것이 아님은 자명하다. 본 발명의 명세서 및 도면에 포함된 기술적 사상의 범위 내에서 당해 기술분야에 있어서의 통상의 지식을 가진 자가 용이하게 유추할 수 있는 변형 예와 구체적인 실시예는 모두 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
10: 헤더 영역
20: 데이터 영역

Claims (10)

  1. 타장치와의 통신 설정을 위한 헤더 영역과, 명령어 데이터 및 명령에 대응하는 응답데이터 중 적어도 하나를 포함하는 데이터 영역으로 구성되는 PLC(Programmable Logic Controller) 프로토콜 암호화 방법에 있어서,
    명령어, 데이터주소, 데이터타입 및 블록 수에 해당하는 영역은 미리 설정된 키 및 트윅에 기초하여 형태보존 암호화를 수행하고,
    상기 형태보존암호화가 수행되지 않은 데이터 영역은 상기 트윅을 키로 하는 스트리밍 암호화가 수행되고,
    상기 PLC 프로토콜은 헤더 영역이 2 바이트의 Transaction ID 영역, 2 바이트의 Protocol ID 영역, 2 바이트의 추종 바이트 수 영역 및 1 바이트의 스테이션 번호 영역이 순차적으로 형성된 제1 PLC 프로토콜이고,
    상기 제1 PLC 프로토콜은 제1 읽기-질의(Read Request) 프로토콜, 제1 읽기-응답(Read Response) 프로토콜, 제1 쓰기-질의(Write Request) 프로토콜 및 제1 쓰기-응답(Write Response) 프로토콜로 구분되고,
    상기 제1 읽기-질의 프로토콜의 데이터 영역은 1 바이트로 형성된 명령어 코드 영역, 2 바이트로 형성된 블록시작주소 영역 및 2바이트로 형성된 블록 수 영역을 포함하되, 상기 명령어 코드 영역, 블록시작주소 영역 및 블록 수 영역에는 형태보존 암호화가 수행되고,
    상기 제1 읽기-응답 프로토콜의 데이터 영역은 1 바이트로 형성된 명령어 코드 영역, 2 바이트로 형성된 실제 쓰여질 바이트 수 영역 및 2개를 초과하는 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 코드 영역, 실제 쓰여질 바이트 수 영역 및 데이터 값 영역 중 최초 2개의 바이트에는 형태보존 암호화가 수행되고, 데이터 값 영역 중 형태보존 암호화가 수행되지 않은 나머지 영역에는 스트리밍 암호화가 수행되는 PLC 프로토콜 암호화 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 제1 쓰기-질의 프로토콜의 데이터 영역은 1 바이트로 형성된 명령어 코드 영역, 2 바이트로 형성된 블록시작주소 영역, 2바이트로 형성된 블록 수 영역, 2 바이트로 형성된 바이트 카운트 영역 및 2개를 초과하는 아웃풋 밸류 영역을 포함하되, 상기 명령어 코드 영역, 블록시작주소 영역 및 블록 수 영역에는 형태보존 암호화가 수행되고, 상기 바이트 카운트 영역 및 아웃풋 밸류 영역에는 스트리밍 암호화가 수행되고,
    상기 제1 쓰기-응답 프로토콜의 데이터 영역은 1 바이트로 형성된 명령어 코드 영역, 2 바이트로 형성된 블록시작주소 영역 및 2 바이트로 형성된 아웃풋 밸류수 영역을 포함하되, 상기 명령어 코드 영역, 블록시작주소 영역 및 아웃풋 밸류수 영역에는 형태보존 암호화가 수행되는 PLC 프로토콜 암호화 방법.
  5. 타장치와의 통신 설정을 위한 헤더 영역과, 명령어 데이터 및 명령에 대응하는 응답데이터 중 적어도 하나를 포함하는 데이터 영역으로 구성되는 PLC(Programmable Logic Controller) 프로토콜 암호화 방법에 있어서,
    명령어, 데이터주소, 데이터타입 및 블록 수에 해당하는 영역은 미리 설정된 키 및 트윅에 기초하여 형태보존 암호화를 수행하고,
    상기 형태보존암호화가 수행되지 않은 데이터 영역은 상기 트윅을 키로 하는 스트리밍 암호화가 수행되고,
    상기 PLC 프로토콜은 헤더 영역이 9 바이트의 고유아이디 영역, 1 바이트의 프레임 번호 영역, 1 바이트의 명령어 영역, 1 바이트의 예약 영역, 2 바이트의 데이터 길이 영역을 포함하는 제2 PLC 프로토콜이고,
    상기 제2 PLC 프로토콜은 제2 읽기-질의(Read Request) 프로토콜, 제2 읽기-응답(Read Response) 프로토콜, 제2 쓰기-질의(Write Request) 프로토콜 및 제2 쓰기-응답(Write Response) 프로토콜로 구분되고,
    상기 제2 읽기-질의 프로토콜의 데이터 영역은 8 바이트로 형성된 디바이스 어드레스 영역 및 2 바이트로 형성된 블록크기 영역을 포함하되, 상기 명령어 영역, 예약 영역, 데이터 필드의 길이 영역, 디바이스 어드레스 영역 및 블록크기 영역에는 형태보존 암호화가 수행되고,
    상기 제2 읽기-응답 프로토콜의 데이터 영역은 복수 개의 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 영역, 예약 영역 및 데이터 필드의 길이 영역에는 형태보존 암호화가 수행되고, 상기 데이터 값 영역에는 스트리밍 암호화가 수행되는 PLC 프로토콜 암호화 방법.
  6. 삭제
  7. 제5항에 있어서,
    상기 제2 쓰기-질의 프로토콜의 데이터 영역은 8 바이트로 형성된 디바이스 어드레스 영역, 2 바이트로 형성된 블록크기 영역, 복수 개의 바이트로 형성된 밸류 영역을 포함하되, 상기 명령어 영역, 예약 영역, 데이터 필드의 길이 영역, 디바이스 어드레스 영역 및 블록크기 영역에는 형태보존 암호화가 수행되고, 상기 밸류 영역에는 스트리밍 암호화가 수행되고,
    상기 제2 쓰기-응답 프로토콜의 데이터 영역은 복수 개의 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 영역, 예약 영역 및 데이터 필드의 길이 영역에는 형태보존 암호화가 수행되고, 상기 데이터 값 영역에는 스트리밍 암호화가 수행되는 PLC 프로토콜 암호화 방법.
  8. 타장치와의 통신 설정을 위한 헤더 영역과, 명령어 데이터 및 명령에 대응하는 응답데이터 중 적어도 하나를 포함하는 데이터 영역으로 구성되는 PLC(Programmable Logic Controller) 프로토콜 암호화 방법에 있어서,
    명령어, 데이터주소, 데이터타입 및 블록 수에 해당하는 영역은 미리 설정된 키 및 트윅에 기초하여 형태보존 암호화를 수행하고,
    상기 형태보존암호화가 수행되지 않은 데이터 영역은 상기 트윅을 키로 하는 스트리밍 암호화가 수행되고,
    상기 PLC 프로토콜은 헤더 영역이 20 바이트로 형성되는 제3 PLC 프로토콜이고,
    상기 제3 PLC 프로토콜은 제3 질의(Request) 프로토콜 및 제3 응답(Response) 프로토콜로 구분되고,
    상기 제3 질의 프로토콜의 데이터 영역은 2 바이트로 형성된 명령어 영역, 2 바이트로 형성된 데이터 타입 영역, 2 바이트로 형성된 예약 영역, 2 바이트로 형성된 블록수 영역 및 복수 개의 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 영역, 데이터 타입 영역, 예약 영역 및 블록수 영역에는 형태보존 암호화가 수행되고, 상기 데이터 값 영역에는 스트리밍 암호화가 수행되는 PLC 프로토콜 암호화 방법.
  9. 삭제
  10. 제8항에 있어서,
    상기 제3 응답 프로토콜의 데이터 영역은 2 바이트로 형성된 명령어 영역, 2 바이트로 형성된 데이터 타입 영역, 2 바이트로 형성된 예약 영역, 2 바이트로 형성된 에러상태 영역, 2 바이트로 형성된 블록수 영역 및 복수 개의 바이트로 형성된 데이터 값 영역을 포함하되, 상기 명령어 영역, 데이터 타입 영역, 예약 영역, 에러상태 영역 및 블록수 영역에는 형태보존 암호화가 수행되고, 상기 데이터 값 영역에는 스트리밍 암호화가 수행되는 PLC 프로토콜 암호화 방법.
KR1020180008062A 2018-01-23 2018-01-23 Plc 프로토콜 암호화 방법 KR102038989B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180008062A KR102038989B1 (ko) 2018-01-23 2018-01-23 Plc 프로토콜 암호화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180008062A KR102038989B1 (ko) 2018-01-23 2018-01-23 Plc 프로토콜 암호화 방법

Publications (2)

Publication Number Publication Date
KR20190089493A KR20190089493A (ko) 2019-07-31
KR102038989B1 true KR102038989B1 (ko) 2019-10-31

Family

ID=67473873

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180008062A KR102038989B1 (ko) 2018-01-23 2018-01-23 Plc 프로토콜 암호화 방법

Country Status (1)

Country Link
KR (1) KR102038989B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101594765B1 (ko) * 2015-06-30 2016-02-18 덕산공조기계 주식회사 자동차 도장 공장 기반 plc 제어 시스템 및 이의 운용 방법
KR101632835B1 (ko) * 2015-04-14 2016-06-23 엘에스산전 주식회사 Plc 시스템의 프로토콜 자동 설정 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130001767A (ko) * 2011-06-28 2013-01-07 엘에스산전 주식회사 통신 보안을 위한 데이터 통신 시스템
KR101590351B1 (ko) 2015-06-16 2016-02-01 동국대학교 산학협력단 분산 네트워크 프로토콜 기반의 데이터 전송 장치 및 그의 데이터 암호화 방법
KR20170081506A (ko) * 2016-01-04 2017-07-12 한국전자통신연구원 부분 데이터 암호를 이용한 데이터 저장 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101632835B1 (ko) * 2015-04-14 2016-06-23 엘에스산전 주식회사 Plc 시스템의 프로토콜 자동 설정 방법
KR101594765B1 (ko) * 2015-06-30 2016-02-18 덕산공조기계 주식회사 자동차 도장 공장 기반 plc 제어 시스템 및 이의 운용 방법

Also Published As

Publication number Publication date
KR20190089493A (ko) 2019-07-31

Similar Documents

Publication Publication Date Title
US6076168A (en) Simplified method of configuring internet protocol security tunnels
US8484486B2 (en) Integrated cryptographic security module for a network node
US20080005558A1 (en) Methods and apparatuses for authentication and validation of computer-processable communications
JP7106561B2 (ja) 低電力広域ネットワークのための通信インターフェース、そのような通信インターフェースを使用するワイヤレスデバイスおよびサーバ
US11057194B2 (en) Processing system, related integrated circuit, device and method
CN111373702B (zh) 用于现场总线网络与云之间的数据交换的接口装置
CN108322484A (zh) 一种工控数据摆渡系统
US20200128042A1 (en) Communication method and apparatus for an industrial control system
WO2018164107A1 (ja) 管理装置、中継装置、フィールド無線システム、設定方法、プログラム及び記録媒体
Niemann IT security extensions for PROFINET
CN110557244A (zh) 一种水利工业控制系统中应用数据单元加密方法
KR102038989B1 (ko) Plc 프로토콜 암호화 방법
CN111885430B (zh) 一种基于以太帧的带内遥测方法及带内遥测系统
JP2008287705A (ja) 暗号化されたデータをサブアドレスにより記憶するためのシステム
CN110679129B (zh) 保护第一与第二通信装置之间的通信的方法和通信装置
KR101692670B1 (ko) 단방향 데이터 전송 시스템 및 그 방법
EP3425551B1 (en) A processing system, related integrated circuit, device and method for a hardware secure module
Cagalaban et al. Scada network insecurity: Securing critical infrastructures through scada security exploitation
AU2016374990B2 (en) Apparatus and method for forwarding data packets
Åkerberg et al. Introducing security modules in profinet io
US12009946B2 (en) Gateway and bridge devices for secure internet of things
CN102148704A (zh) 一种加密型交换机通用网管接口的软件实现方法
KR102299145B1 (ko) 디지털 포렌식 증거 수집을 위한 사이버 물리 시스템
US20230336374A1 (en) Gateway and bridge devices for secure internet of things
Mander et al. Open-Access-Compatibility Security Layer for Enhanced Protection Data Transmission

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