KR102477070B1 - 데이터 변환 시스템 및 방법 - Google Patents

데이터 변환 시스템 및 방법 Download PDF

Info

Publication number
KR102477070B1
KR102477070B1 KR1020187038122A KR20187038122A KR102477070B1 KR 102477070 B1 KR102477070 B1 KR 102477070B1 KR 1020187038122 A KR1020187038122 A KR 1020187038122A KR 20187038122 A KR20187038122 A KR 20187038122A KR 102477070 B1 KR102477070 B1 KR 102477070B1
Authority
KR
South Korea
Prior art keywords
bit stream
data
bits
random
bit
Prior art date
Application number
KR1020187038122A
Other languages
English (en)
Other versions
KR20190034505A (ko
Inventor
세르지오 에이. 페르난데즈
브루스 콘웨이
드류 콘웨이
데이비드 제이. 고트릭
아이만 이베이다
드히아 알-샤마리
알샤리프 아부아드바
마크 콘웨이
Original Assignee
아길렙큐 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아길렙큐 인코포레이티드 filed Critical 아길렙큐 인코포레이티드
Publication of KR20190034505A publication Critical patent/KR20190034505A/ko
Application granted granted Critical
Publication of KR102477070B1 publication Critical patent/KR102477070B1/ko

Links

Images

Classifications

    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0075Transmission of coding parameters to receiver
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • 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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/043Masking or blinding of tables, e.g. lookup, substitution or mapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless
    • H04L2209/805Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Storage Device Security (AREA)
  • Communication Control (AREA)
  • Complex Calculations (AREA)

Abstract

다양한 실시형태에서, 프로세서에 결합된 컴퓨터 판독 가능 메모리 매체가 개시된다. 메모리 매체는, 프로세서로 하여금 시드 값을 검색하고, 디지털 비트 스트림을 수신하고, 의사 난수 발생기(pseudo random number generator, PRNG)에 대한 시드로서 시드 값을 사용하여 랜덤 비트 스트림을 생성하고, 여기서 랜덤 비트 스트림은 적어도 디지털 비트 스트림만큼의 비트를 포함하고, 랜덤 비트 스트림의 비트를 셔플링하여 랜덤 비트 버퍼를 생성하고, 디지털 비트 스트림과 랜덤 비트 버퍼에 제 1 배타적 논리합(exclusive OR; XOR)을 적용하여 난독화된 디지털 비트 스트림을 생성하고, 여기서 난독화된 디지털 비트 스트림은 디지털 비트 스트림과 동일한 수의 비트를 갖고, 및 난독화된 디지털 비트 스트림을 통신 인터페이스에 제공하도록 하는 명령어를 저장하도록 구성된다.

Description

데이터 변환 시스템 및 방법
관련 출원에 대한 교차 참조
본 출원은 2016년 6월 6일 출원된 미국 가특허 출원 제 62/346,451호, 2016년 6월 24일 출원된 미국 가특허 출원 제 62/354,615호, 2016년 8월 18일 출원된 미국 가특허 출원 제 62/376,876호, 2016년 9월 29일 출원된 미국 가특허 출원 제 62/401,609호 및 2016년 12월 22일 출원된 미국 가특허 출원 제 62/438,443호의 우선권의 이익을 주장하며, 이들 각각의 개시 내용 전체가 본원에 참조로 포함된다.
본 개시는 일반적으로 통신 시스템 분야, 특히 사이버 공격으로부터 데이터를 보호하기 위해 데이터를 난독화(obfuscate)하도록 설계된 데이터 통신 시스템에 관한 것이다.
데이터를 무단으로 볼 수 없도록 보안하는 것은 인터넷 개발의 중요한 부분이었다. 예를 들어, 네트워크를 통해 전송되는 신용 카드 번호 또는 로그인 정보와 같은 정보를 숨기면 최종 사용자에게 안전감을 제공하고, 상인에게는 명확성을 제공하며, 신용 카드 처리 회사에게는 안도감을 제공한다. 숨겨진 정보가 노출되는 위험을 완화하는 데 도움이 되는 다양한 데이터 난독화 기술이 개발되었다.
정보의 전달을 보장하기 위해 일반적인 난독화 기술을 필요로 하는 것 이외에도, "지능형 장치" 간에 정보를 전송하는 것과 관련하여 전문적인 기술이 필요하다. 정보를 국부적으로 또는 인터넷을 통해 교환할 수 있는 100억 개 이상의 마이크로컨트롤러가 매년 출하됨에 따라, 아주 다양한 종류의 소위 "지능형 장치"가 이용될 수 있다. 이들 장치는 모두 인터넷을 통해 액세스할 수 있으며, 결과적으로 네트워크는 일반적으로 사물 인터넷(Internet of Things, IoT)이라고 지칭하였다. 예를 들어, IoT 장치가 될 수 있는 대형 장치는, 인터넷에 연결되어 내부의 물품을 추적할 수 있는 냉장고일 수 있고, 따라서 집주인에게 우유가 부족할 때 냉장고가 자동으로 더 많은 우유를 집으로 주문할 수 있다. 다른 예로는, 집주인의 경보 시스템의 일부인 문이나 창문이 열렸는지를 감지할 수 있는 센서와 같은 소형 장치가 인터넷에 연결되어 주택 소유자에게 문이나 창문이 열린 것을 경고할 수 있다. 또 다른 IoT 장치는, 인터넷과 통신하여 환자의 심장이 어떻게 작동하는지 의사에게 피드백을 제공하며 의사가 원격 위치에서 심장 박동기의 설정을 제어할 수 있게 하는 심장 박동기가 될 수 있다.
모든 방식의 장치가 함께 연결될 수 있게 하는 능력은 또한 많은 문제와 위험을 제기한다. 예를 들어, 심장 박동기의 경우, 권한이 있는 자만이 심장 박동기의 설정을 수정할 수 있도록 인증 및 보안은 매우 중요하다. 또한, 소형 IoT 장치는 배터리 전원으로 작동하는 경향이 있기 때문에 그리고 이들 장치의 크기는 종종 회로 기판이 작아야 하고 따라서 많은 양의 정보를 저장할 수 없다는 것을 의미하기 때문에, IoT에서 실행되는 알고리즘의 에너지 보존 및 소형화는 중요하다. 전형적인 IoT 장치는 인터넷 연결과 함께 로컬 저전력 무선 연결을 필요로 한다. 대부분의 이러한 애플리케이션 및 솔루션의 경우, 게이트웨이는 일부 형태의 로컬 인프라를 통해 또는 셀룰러 연결을 사용하여 센서를 인터넷에 연결해야 한다.
고급 암호화 표준(advanced encryption standard, AES)과 같은 IoT 장치에 사용되는 현재의 인증 및 보안 알고리즘은 많은 처리 능력을 필요로 하고 다라서 장치의 유효 수명을 단축시킨다. 또한, AES 구현을 위해 필요한 전력 및 공간으로 인해, 많은 장치는 보안 및 인증 기능을 전혀 구현하지 않는다. 또한, 예를 들어 AES128의 사용은 알고리즘이 16 바이트 블록으로 작동할 것을 요구하지만, IoT 애플리케이션에서의 작은 페이로드 크기(payload size)로 인해 16 바이트 경계로 패딩(padding)하는 것은 낭비이다. 또한, 작은 크기의 IoT 장치는 일반적으로 AES 구현을 가속화하는 하드웨어 명령어 세트가 부족하다는 것을 의미한다. 마지막으로, AES와 같은 알고리즘을 구현하려면 많은 CPU 사이클이 필요하며, 이는 배터리 유효 수명에 직접적인 영향을 미친다. 작은 설치 공간, 낮은 전력 사용 및 강력한 인증 및 보안을 갖는 알고리즘의 일부인 IoT 장치의 인증 및 보안을 허용하는 방법이 필요하다.
본 개시는 본 기술 분야의 단점을 극복하기 위한 시스템 및 방법을 제공한다. 예를 들어, 개시된 시스템 및 방법은 더욱 강력한 난독화, 더욱 빠른 처리 시간, 더욱 낮은 전력 소비 및 맞춤화를 제공한다.
본 개시의 일 실시형태는 데이터 부분과 헤더 부분을 포함함으로써 그리고 적어도 두 개의 다른 난독화 기술을 사용함으로써 들어오는 디지털 비트 스트림을 난독화하는 컴퓨터 판독 가능 메모리 매체에 관한 것이다. 제 1 난독화 기술은 들어오는 디지털 비트 스트림을 난독화하고, 제 2 난독화 기술은, 데이터 부분이 제 1 난독화 기술을 사용하여 난독화된 방법에 관한 정보를 포함하는, 헤더 부분의 정보를 난독화하기 위해 사용된다.
본 개시의 또 다른 실시형태는 정책 서버로부터 난독화 기술에 관한 정보를 획득하는 것에 관한 것이다.
본 개시의 또 다른 실시형태는 전송을 추가로 난독화하기 위해 디지털 비트 스트림을 추가 비트로 패딩하는 것에 관한 것이다.
본 개시의 또 다른 실시형태는 저전력 IoT 제어기와 게이트웨이 장치 간에 데이터를 전송하기 위한 방법에 관한 것으로, 방법은, 저전력 IoT 제어기의 내부 메모리에서 비밀을 검색하는 단계와, 비밀을 기반으로 테이블 분산 키를 생성하는 단계와, 게이트웨이 장치로부터 제 1 인코딩된 프레임을 수신하는 단계와, 여기서 제 1 인코딩된 프레임은 제 1 데이터 테이블을 포함하고, 테이블 분산 키를 사용하여 제 1 인코딩된 데이터 프레임을 디코딩하고 제 1 데이터 테이블을 검색하는 단계와, 제 1 데이터 테이블을 사용하여 제 2 인코딩된 데이터 프레임을 인코딩하는 단계와, 제 2 인코딩된 데이터 프레임을 게이트웨이 장치로 전송하는 단계와, 제 1 데이터 테이블을 수정하여 제 2 데이터 테이블을 생성하는 단계와, 게이트웨이 장치로부터 제 3 인코딩된 데이터 프레임을 수신하는 단계와, 여기서 제 3 인코딩된 데이터 프레임은 제 2 데이터 테이블을 사용하여 인코딩되고, 제 2 데이터 테이블을 사용하여 제 3 인코딩된 데이터 프레임을 디코딩하려고 시도하는 단계를 포함한다.
본 개시의 또 다른 실시형태에 따라, 프로세서에 작동 가능하게 결합된 비일시적 컴퓨터 판독 가능 메모리 매체가 제공된다. 메모리 매체와 프로세서는 통신 인터페이스를 더 포함할 수 있는 통신 장치의 구성요소일 수 있다. 메모리 매체는 명령어를 저장하도록 구성된다. 명령어는 본원에 개시된 방법을 구현하도록 구성된다. 명령어는, 프로세서로 하여금 시드 값(seed value)을 검색하고, 디지털 비트 스트림을 수신하고, 의사 난수 발생기(pseudo random number generator, PRNG)에 대한 시드로서 시드 값을 사용하여 랜덤 비트 스트림을 생성하도록 할 수 있다. 랜덤 비트 스트림은 적어도 디지털 비트 스트림만큼의 비트를 포함할 수 있다. 명령어는 또한, 프로세서로 하여금 랜덤 비트 스트림의 비트를 셔플링(shuffling)하여 랜덤 비트 버퍼(random bit buffer)를 생성하고, 예를 들어 디지털 비트 스트림과 랜덤 비트 버퍼에 제 1 배타적 논리합(exclusive OR; XOR)을 적용하여 난독화된 디지털 비트 스트림을 생성하도록 할 수 있다. 난독화된 디지털 비트 스트림은 디지털 비트 스트림과 동일한 수의 비트를 가질 수 있다. 또한, 명령어는, 프로세서로 하여금 난독화된 디지털 비트 스트림을 예를 들어 전송을 위해 통신 인터페이스에 제공하도록 할 수 있다. 랜덤 비트 스트림은, 예를 들어, 2 바이트, 4 바이트, 8 바이트, 16 바이트, 32 바이트 등과 같이 바이트의 2의 거듭제곱으로 구성될 수 있다. 랜덤 비트 스트림의 비트의 셔플링은, 우선 랜덤 비트 버퍼를 초기화하고, 랜덤 비트 스트림 내의 비트를 트래버싱(traversing)하며, 랜덤 비트 스트림 내의 어느 비트가 설정되는지를 식별함으로써 이루어질 수 있다. 설정된 랜덤 비트 스트림의 각각의 비트에 대해, 대상 비트 위치가 계산될 수 있고, 이후 랜덤 비트 버퍼의 대응 비트가 설정된다. 랜덤 비트 버퍼의 초기화는 모든 비트를 동일한 값으로 설정하는 것을 포함할 수 있다. 일부 실시형태에 따라, 랜덤 비트 버퍼의 모든 비트는 0으로 초기화된다. 대상 비트의 계산은 테이블 룩업을 사용하여 달성될 수 있다.
또 다른 실시형태에서, 명령어는, 프로세서로 하여금 제 2 디지털 비트 스트림을 수신하고 및 제 2 디지털 비트 스트림과 랜덤 비트 버퍼로 제 2 XOR을 수행함으로써 제 2 난독화된 디지털 비트 스트림을 생성하도록 더 구성된다. 일례로서, 제 1 XOR에서 사용되지 않는 랜덤 비트 버퍼의 비트만이 제 2 XOR에서 사용된다. 제 2 난독화된 디지털 비트 스트림이 제 2 디지털 비트 스트림과 동일한 수의 비트를 갖는 경우, 명령어는 또한, 프로세서로 하여금 통신 인터페이스에 제 2 난독화된 디지털 비트 스트림을 제공하도록 할 수 있다. 제 2 XOR이 랜덤 비트 버퍼의 끝에 도달하지만 제 2 디지털 비트 스트림의 모든 비트가 XOR되지 않은 경우, 명령어는 또한 PRNG로부터 제 2 랜덤 비트 스트림을 생성하고, 제 2 랜덤 비트 스트림의 비트를 셔플링하여 랜덤 비트 버퍼를 다시 채우며, 제 2 디지털 비트 스트림과 랜덤 비트 버퍼에 제 3 XOR을 적용하여 제 2 난독화된 디지털 비트 스트림을 계속 생성할 수 있다. 제 3 XOR의 첫 번째 비트는 랜덤 비트 버퍼의 첫 번째 비트 및 제 2 XOR에서 사용된 제 2 디지털 비트 스트림의 마지막 비트 이후의 비트일 수 있다. 명령어는 또한, 프로세서로 하여금 스왑할 비트를 식별하기 위해 룩업 테이블을 사용하여 랜덤 비트 스트림의 비트를 셔플링하고, 랜덤 비트 스트림 내의 다수의 비트를 기반으로 룩업 테이블 내의 다수의 값을 스왑함으로써 셔플링된 룩업 테이블을 생성하며, 스왑할 비트를 식별하기 위해 셔플링된 룩업 테이블을 사용하여 제 2 랜덤 비트 스트림의 비트를 셔플링하도록 더 구성될 수 있다. 일부 실시형태에서, 셔플링된 룩업 테이블을 생성하는 것은 룩업 테이블에서 소수의 값, 예를 들어, 17을 스왑함으로써 유발된다. 다른 실시형태에서, 테이블 내의 값을 스왑할 때, 테이블의 마지막 스왑된 항목이 유지되고, 따라서 테이블이 이후 셔플링될 때 스왑은 테이블의 다음 항목에서 시작할 것이다.
본 개시의 또 다른 실시형태에 따라, 추가의 방법과, 비일시적 컴퓨터 판독 가능 메모리 매체 및 통신 장치가 제공된다. 통신 장치는 통신 인터페이스와, 프로세서 및 프로세서에 작동 가능하게 결합된 비일시적 컴퓨터 판독 가능 메모리 매체를 포함할 수 있다. 메모리 매체는, 프로세서로 하여금 난수를 생성하고, 디지털 비트 스트림을 수신하고, 적어도 디지털 비트 스트림을 사용하여 순환 중복 검사(cyclic redundancy check; CRC) 값을 계산하고, PRNG에 대한 시드로서 난수를 사용하여 랜덤 비트 스트림을 생성하도록 구성된 명령어를 저장할 수 있다. 랜덤 비트 스트림은 디지털 비트 스트림 내의 비트와 CRC 값의 결합된 수와 동일한 수의 비트를 포함할 수 있다. 명령어는 또한, 프로세서로 하여금 (1) 난수를 연결(concatenate)하고, 그리고 (2) 디지털 비트 스트림과 CRC 값의 연결과의 랜덤 비트 스트림의 배타적 논리합(XOR)을 수행함으로써 페이로드 프레임을 생성하고, 페이로드 프레임의 비트를 셔플링하여 난독화된 페이로드 프레임을 생성하며, 난독화된 페이로드 프레임을 통신 인터페이스에 제공하도록 할 수 있다. 난수는 또한 CRC 값의 계산에 사용될 수 있다. 난수는 순수 난수(true random number)일 수 있다. 랜덤 비트 스트림의 비트의 셔플링은, 우선 랜덤 비트 버퍼를 초기화하고, 랜덤 비트 스트림 내의 비트를 트래버싱하며, 랜덤 비트 스트림 내의 어느 비트가 설정되는지를 식별함으로써 이루어질 수 있다. 설정된 랜덤 비트 스트림의 각각의 비트에 대해, 대상 비트 위치가 계산될 수 있고, 이후 랜덤 비트 버퍼의 대응 비트가 설정된다. 랜덤 비트 버퍼의 초기화는 모든 비트를 동일한 값으로 설정하는 것을 포함할 수 있다. 일부 실시형태에 따라, 랜덤 비트 버퍼의 모든 비트는 0으로 초기화된다. 대상 비트의 계산은 테이블 룩업을 사용하여 달성될 수 있다.
도 1A는 하나 이상의 송신기로부터 하나 이상의 수신기로 데이터를 전송하기 위한 데이터 통신 시스템의 일 실시형태의 블록도를 도시한다.
도 1B는 난독화된 데이터를 저장하기 위한 데이터 저장 시스템의 일 실시형태의 블록도를 도시한다.
도 2는 데이터 통신 시스템의 하나 이상의 송신기에 대한 데이터 변환 모듈의 일 실시형태의 블록도를 도시한다.
도 3은 데이터 통신 시스템의 하나 이상의 송신기에 대한 데이터 변환 모듈의 또 다른 실시형태의 블록도를 도시한다.
도 4는 데이터 통신 시스템의 하나 이상의 수신기에 대한 데이터 변환 모듈의 일 실시형태의 블록도를 도시한다.
도 5는 데이터 통신 시스템의 하나 이상의 수신기에 대한 데이터 변환 모듈의 또 다른 실시형태의 블록도를 도시한다.
도 6A는 송신기가 전송할 데이터에 대한 헤더 정보를 난독화하는 일 실시형태의 블록도를 도시한다.
도 6B는 수신기가 수신한 데이터에 대한 헤더 정보의 역난독화(deobfuscating)의 일 실시형태의 블록도를 도시한다.
도 7은 송신기용 데이터 변환 모듈에 의해 적용될 수 있는, 헤더 데이터에 대한 비트 스와핑 알고리즘을 도시한다.
도 8은 송신기용 데이터 변환 모듈이 도 7의 알고리즘을 헤더 데이터에 적용한, 비트 스와핑의 예를 도시한다.
도 9는 수신기의 데이터 변환 모듈에 의해 적용될 수 있는, 비트 스와핑의 디스크램블링(descrambling)을 도시한다.
도 10은 헤더 데이터 관리자가 헤더 난독화 모듈에 제공할 수 있는 헤더 정보의 예시적인 구조를 도시한다.
도 11A는 헤더 정보를 인코딩하는 프로세스의 흐름도를 도시한다.
도 11B는 헤더 정보를 디코딩하는 프로세스의 흐름도를 도시한다.
도 11C는 또 다른 실시형태에 따라 헤더 정보를 인코딩하는 프로세스의 흐름도를 도시한다.
도 11D는 또 다른 실시형태에 따라 헤더 정보를 디코딩하는 프로세스의 흐름도를 도시한다.
도 12A는 송신기가 전송할 입력 데이터의 난독화의 일 실시형태의 블록도를 도시한다.
도 12B는 수신기가 수신한 데이터에 대한 입력 데이터의 역난독화의 일 실시형태의 블록도를 도시한다
도 13은 입력 데이터 난독화에 사용될 수 있는 순방향 매핑 및 역방향 매핑 함수를 도시한다.
도 14는 인덱싱된 정렬을 통해 선택된 순방향 매핑을 기반으로 하는 역방향 매핑의 생성을 도시한다.
도 15는 입력 데이터의 일부와 함께 단일 프레임에서 샘플링된 데이터를 사용하는 데이터 기반 매핑 함수에 대한 순방향 매핑 및 역방향 매핑 함수를 도시한다.
도 16A는 변수 오프셋을 사용하는, 도 15에 도시된 데이터 기반 매핑을 기반으로 하는 입력 데이터 예의 인코딩을 도시한다.
도 16B는 도 16A에 도시된 인코딩을 위한 인코딩 테이블 및 디코딩 테이블을 도시한다.
도 16C는 도 16B의 디코딩 테이블을 사용하는, 도 16A의 입력 데이터 예의 디코딩을 도시한다.
도 16D는 첫 번째 랜덤하게 생성된 값을 기반으로 하는 입력 데이터 예의 인코딩을 도시한다.
도 16E는 두 번째 랜덤하게 생성된 값을 기반으로 하는 도 16D의 입력 데이터 예의 인코딩을 도시한다.
도 17A는 비대칭 테이블을 사용하는, 도 15에 도시된 데이터 기반 매핑을 기반으로 하는 입력 데이터의 예의 인코딩을 도시한다.
도 17B는 도 17에 도시된 인코딩을 위한 인코딩 테이블 및 디코딩 테이블을 도시한다.
도 17C는 도 17A의 입력 데이터 예의 디코딩을 도시한다.
도 18은 비대칭 테이블이 순방향 매핑에서 사용되는, 선택된 순방향 매핑을 기반으로 하는 역방향 매핑의 생성을 도시한다.
도 19는 순방향 매핑 함수로 구현될 수 있는 오류 정정 함수를 도시한다.
도 20A는 도 19의 오류 정정 함수를 통한 손상된 데이터 스트림의 정정을 도시한다.
도 20B는 도 19의 오류 정정 함수를 통한 비트 오류 검출을 도시한다.
도 21A는 입력 데이터를 난독화하기 위한 화이트닝(whitening) 함수를 도시한다.
도 21B는 추가 세부 사항을 갖는 도 21A의 백색화 함수를 도시한다.
도 22A는 일 실시형태에 따라 비트 시퀀스에 비트를 삽입함으로써 입력 데이터를 난독화하기 위한 전치 함수(transposition function)를 도시한다.
도 22B는 또 다른 실시형태에 따라 비트 시퀀스에 비트를 삽입함으로써 입력 데이터를 난독화하기 위한 전치 함수를 도시한다.
도 23A는 또 다른 실시형태에 따라 비트 시퀀스에 비트를 삽입함으로써 입력 데이터를 난독화하기 위한 전치 함수를 도시한다.
도 23B는 또 다른 실시형태에 따라 비트 시퀀스에 비트를 삽입함으로써 입력 데이터를 난독화하기 위한 전치 함수를 도시한다.
도 24A는 또 다른 실시형태에 따라 비트 시퀀스에 비트를 삽입함으로써 입력 데이터를 난독화하기 위한 전치 함수를 도시한다.
도 24B는 또 다른 실시형태에 따라 비트 시퀀스에 비트를 삽입함으로써 입력 데이터를 난독화하기 위한 전치 함수를 도시한다.
도 25는 또 다른 실시형태에 따라 비트 시퀀스에 비트를 삽입함으로써 입력 데이터를 난독화하기 위한 전치 함수를 도시한다.
도 26은 입력 데이터를 추가로 난독화하기 위한 프리픽스 순방향 맵(prefix forward map) 및 프리픽스 역방향 맵(prefix reverse map)의 사용을 도시한다.
도 27A는 입력 데이터를 인코딩하는 프로세스의 흐름도를 도시한다.
도 27B는 입력 데이터를 디코딩하는 프로세스의 흐름도를 도시한다.
도 28A는 송신기에서 헤더 데이터와 입력 데이터를 연결하고 스크램블링(scrambling)하는 일 실시형태의 블록도를 도시한다.
도 28B는 수신기에서 수신된 난독화된 데이터를 디스크램블링하는 일 실시형태의 블록도를 도시한다.
도 29는 두 개의 데이터 세트를 함께 스크램블링하기 위한 스크램블링 매핑 함수를 도시한다.
도 30은 두 개의 데이터 세트를 함께 스크램블링하기 위한 컨볼빙된(convolved) 스크램블링 매핑 함수를 도시한다.
도 31은 일 실시형태에 따라 두 개의 데이터 세트를 함께 스크램블링하기 위해 사용될 수 있는 랜덤하게 생성된 값을 포함하는 스크램블링 테이블을 도시한다.
도 32는 또 다른 실시형태에 따라 두 개의 데이터 세트를 함께 스크램블링하기 위해 사용될 수 있는 랜덤하게 생성된 값을 포함하는 스크램블링 테이블을 도시한다.
도 33은 또 다른 실시형태에 따라 두 개의 데이터 세트를 함께 스크램블링하기 위해 사용될 수 있는 랜덤하게 생성된 값을 포함하는 스크램블링 테이블을 도시한다.
도 34는 일 실시형태에 따라 수신된 데이터 세트를 디스크램블링하기 하기 위해 사용될 수 있는 랜덤하게 생성된 값을 포함하는 디스크램블링 테이블을 도시한다.
도 35는 송신기와 수신기 간의 통신 및 데이터 난독화와 데이터 역난독화를 위한 하나 이상의 키 또는 다른 파라미터를 제공하도록 구성된 정책 서버를 도시한다.
도 36은 입력 데이터로 헤더 데이터를 스크램블링하기 위해 사용될 수 있는 스크램블링 함수를 도시한다.
도 37은 본원에 기술된 시스템 및 방법을 구현하기 위해 사용될 수 있는 컴퓨팅 시스템의 블록도이다.
도 38은 환경 내의 다수의 장치 간의 통신 프로토콜을 설정하기 위한 시스템의 블록도를 도시한다.
도 39는 두 개의 장치 간의 키 분배 프로토콜을 구현하는 프로세스의 흐름도를 도시한다.
도 40은 다수의 장치에 데이터 테이블을 분배하기 위해 사용되는 키 분배 테이블 생성 프로세스를 도시한다.
도 41은 다수의 제어기와 게이트웨이 간의 통신 프로토콜을 구현하기 위한 프레임에서 데이터를 난독화하기 위한 독립형 알고리즘을 도시한다.
도 42는 전송될 예시적인 프레임을 나타낸다.
도 43은 도 41의 셔플링 알고리즘의 상세한 셔플링 프로세스를 도시한다.
도 44는 다수의 제어기와 게이트웨이 간의 통신 프로토콜을 구현하기 위한 데이터 테이블에서 데이터를 역난독화하기 위한 독립형 셔플링 알고리즘을 도시한다.
도 45는 다수의 제어기와 게이트웨이 간의 통신 프로토콜을 구현하기 위한 프레임에서 데이터를 난독화하기 위한 순차적 알고리즘을 도시한다.
도 46은 도 45의 순차적 알고리즘의 상세한 테이블 변경 프로세스를 도시한다.
도 47은 고정국 및 이동 장치 간의 통신을 위해 데이터 난독화가 구현될 수 있는 환경에서의 다수의 고정국 및 이동 장치를 나타낸다.
도 48은 본원에 기술된 시스템 및 방법을 사용하여 난독화된, 고정국과 이동 장치 간에 전송될 수 있는 예시적인 패키지이다.
도 49는 고정국과 이동 장치 간의 키 프로비저닝(key provisioning)을 나타내는 블록도이다.
도 50은 네트워크 액세스 제어 시스템의 블록도이다.
도 51은 네트워크 내의 두 개의 노드 간의 세션을 설정하는 프로세스의 흐름도이다.
도 52A는 네트워크 액세스 서버를 통해 네트워크에서 통신용 위한 노드를 프로비저닝하는 프로세스를 나타내는 블록도이다.
도 52B는 네트워크 액세스 서버를 통해 네트워크에서 통신용 노드를 프로비저닝하는 프로세스의 흐름도이다.
도 53은 네트워크 내의 노드 간의 서비스로서의 인프라(Infrastructure as a Service; IaaS) 세션을 설정하는 프로세스를 나타내는 블록도이다.
도 54는 네트워크 내의 노드 간의 서비스로서의 플랫폼(Platform as a Service; PaaS) 세션을 설정하는 프로세스를 나타내는 블록도이다.
도 55는 네트워크 내의 노드 간의 서비스로서의 소프트웨어(Software as a Service; SaaS) 세션을 설정하는 프로세스를 나타내는 블록도이다.
도 56은 세션이 네트워크 내의 다수의 노드 간에 분배되는 방식을 나타내는 블록도이다.
도 57은 시스템 내의 통신을 향상시키기 위해 네트워크 액세스 제어 시스템에 삽입된 다수의 범프-인-더-와이어(bump-in-the-wire; BITW) 노드를 포함하는 네트워크 액세스 제어 시스템의 블록도이다.
도 58은 엔진 제어기와 차량 서브시스템의 ECU 간의 통신 프로세스를 나타내는 블록도이다.
도 59A는 엔진 제어기기 차량 서브시스템의 ECU에 제공할 수 있는 프로비전 메시지를 도시한다.
도 59B는 도 59A의 프로비전 메시지를 수신한 후 생성될 수 있는 ECU의 프로비전 메시지를 나타낸다.
도 59C는 도 59B의 프로비전 메시지를 수신한 후 생성될 수 있는 엔진 제어기의 메시지를 나타낸다.
도 59D는 도 59A 내지 도 59C의 프로비저닝 프로세스 이후에 생성된 엔진 제어기의 메시지를 도시한다.
도 60은 ECU와의 재동기화(resynchronization)를 위해 엔진 제어기가 생성할 수 있는 재동기화 메시지를 도시한다.
도 61은 전송할 메시지를 준비하기 위한 테이블 체이닝(table chaining) 방법을 도시한다.
도 62A는 엔진 제어기가 ECU의 인증을 위해 생성하고 전송할 수 있는 메시지를 도시한다.
도 62B는 엔진 제어기가 ECU의 인증을 위해 생성하고 전송할 수 있다는 메시지를 도시한다.
도 63A는 파일을 컴파일하고 사용자 장치로부터 엔진 제어기로 파일을 분배하는 프로세스이다.
도 63B는 도 63A의 파일을 컴파일하는 프로세스를 도시한다.
도 63C는 도 63A의 파일의 각각의 블록을 암호화하는 프로세스를 도시한다.
도 63D는 도 63의 파일의 각각의 블록의 헤더를 암호화하는 프로세스를 도시한다. 63A.
도 63E는 도 63A의 파일의 블록의 헤더와 페이로드를 스크램블링하는 단계를 도시한다.
도 64는 사용자 장치와 엔진 제어기 간의 안전한 전송 프로세스이다.
도 65는 사용자 장치기 엔진 제어기에 전송한 파일을 디코딩하고 조립하는 프로세스이다.
도면을 개괄적으로 참조하여 디지털 비트 스트림의 데이터 난독화를 위한 시스템 및 방법이 기술된다. 본원에 기술된 시스템 및 방법은 데이터 패킷을 인코딩하고 디코딩하여 데이터를 보안하기 위해 사용될 수 있다. 디지털 비트 스트림은 본 개시에서 비트 스트림, 데이터 스트림, 데이터 패킷 또는 데이터라고 지칭할 수 있음에 주목해야 하며, 본 개시의 다양한 용어의 사용은 제한적이지 않다.
도면을 더 참조하여 다수의 장치 간의 난독화된 통신을 관리하기 위한 시스템 및 방법이 기술된다. 다수의 장치 간의 통신 프로토콜은 키 프로비저닝을 통해 설정될 수 있으며, 본원에 기술된 난독화 기술은 통신을 보안하기 위해 사용될 수 있다.
도 1A를 참조하면, 데이터 통신 시스템의 일 실시형태가 도시되어 있다. 데이터 통신 시스템은 일반적으로 하나 이상의 송신기(100)와 하나 이상의 수신기(150)를 포함하며, 하나 이상의 송신기(100)는 하나 이상의 수신기(150)에 하나 이상의 데이터 전송을 제공한다. 도 1A의 실시형태에서, 단 하나의 송신기(100)와 수신기(150)가 도시되어 있으나, 본원에 기술된 시스템 및 방법은 본 개시의 범위를 벗어나지 않고 다수의 송신기 및/또는 수신기에 대해 구현될 수 있다.
상기한 바와 같이, 데이터 전송 모듈(140) 내의 데이터는 사이버 공격으로부터 데이터 전송을 보호하기 위해 난독화된다. 송신기(100)에 의한 전송을 위해 데이터를 준비하는 동안, 데이터 변환 모듈(102)은 하나 이상의 함수와 매핑을 통해 데이터를 난독화한다. 데이터 변환 모듈(102)은 전송될 데이터(본 개시에서 "입력 데이터"로 칭함) 및 전송될 데이터 패킷(즉, 전송될 데이터 패킷의 페이로드 섹션에 나타나는 데이터)에 대한 OCTS 헤더 정보 모두를 난독화한다. 본 개시에서 "헤더" 및 "헤더 데이터"라는 용어의 사용은 TCP/IP(라우팅 정보와 같은 정보가 저장될 수 있음)와 같은 통신 프로토콜에서 패킷의 헤더 대신에 OCTS 헤더 정보를 의미한다는 것에 유의해야 한다. 데이터 변환 모듈(102)은, 데이터를 난독화하는(예를 들어, 사용할 함수와 매핑 및 이들의 순서를 결정하는) 프로세스를 제어하고 수신기가 데이터를 역난독화(예를 들어, 언스크램블링(unscrambling)) 할 수 있게 하는 정보를 제공하도록 구성된 관리자(104)를 포함한다. 데이터 변환 모듈(102)은 또한 데이터를 난독화하기 위해 사용되는 세 개의 모듈을 포함하는 것으로 도시되어 있다. 데이터 변환 모듈(102)은 입력 데이터를 난독화하는 입력 데이터 난독화 모듈(108), 데이터 패킷의 헤더 데이터를 난독화하는 헤더 데이터 난독화 모듈(110) 및 모듈(108, 110)로부터 난독화된 데이터를 병합하는 데이터 병합 모듈(112)을 포함한다. 데이터 변환 모듈(102)은 난독화 동안 (예를 들어, 이하의 도면에서 설명되는 바와 같이, 키로서) 사용하기 위한 다수의 테이블(106)을 포함할 수 있다.
난독화된 데이터가 전송되고 수신기(150)가 수신하면, 수신기(150)의 데이터 변환 모듈(152)은 송신기(100)의 데이터 변환 모듈(102)에서 실행되는 난독화 프로세스는 반전시킨다. 데이터 변환 모듈(152) 데이터를 역난독화하는 프로세스를 제어하도록 구성된다. 데이터 변환 모듈(152)은 또한 데이터를 역난독화하기 위한 세 개의 모듈을 포함하는 것으로 도시되어 있다. 데이터 변환 모듈(152)은 수신된 데이터를 헤더 데이터 부분과 입력 데이터 부분으로 분할하는 데이터 분할 모듈(158), 입력 데이터 부분을 역난독화하는 입력 데이터 역난독화 모듈(160), 헤더 데이터 부분을 역난독화하는 헤더 데이터 역난독화 모듈(162)를 포함한다. 데이터 변환 모듈(152)은, 이하의 도면에서 설명되는 바와 같이, 역난독화 동안 사용하기 위한 다수의 테이블(156)을 포함할 수 있다.
두 개의 데이터 변환 모듈(102, 152)의 세 개의 모듈은 개별적으로 구동되도록 구성될 수 있다. 다시 말해서, 각각의 모듈은 자체 함수, 테이블 등에 따라 데이터를 난독화할 수 있다. 이는 권한이 없는 이가 원래의 인코딩되지 않은 데이터를 획득하는 것을 방지하는 것을 돕는데, 이는 원래의 인코딩되지 않은 데이터를 권한 없는 이가 복구하기 위해서는 세 개의 독립적인 모듈 모두가 권한이 없는 이에 의해 "파괴"되어야 하기 때문이다. 또한, 세 개의 독립적인 모듈 중 하나가 데이터를 난독화하는 방법을 결정하는 단계는 다른 두 모듈의 난독화를 결정하는 방법에 대한 단서를 제공하지 않을 것이다.
도 1A의 실시형태에서, 데이터 변환 모듈(102, 152)은 각각의 송신기(100)와 수신기(150) 내에 도시되어 있다(예를 들어, 데이터 변환 모듈(102 및 152)은 송신기 장치 또는 수신기 장치 내에 있다). 다양한 예시적인 실시형태에서, 데이터 통신 시스템의 모든 유형의 구성이 가능하다(예를 들어, 송신기(100)는 난독화될 데이터를 원격 데이터 변환 모듈에 전송할 수 있고, 수신기(150)는 원격 데이터 변환 모듈로부터 역난독화된 데이터를 수신할 수 있다). 데이터 변환 모듈의 다양한 기능은 일부 실시형태에서 다양한 컴퓨팅 장치에서 수행될 수 있다. 이러한 모든 변형은 본 개시의 범위 내에 속하는 것으로 이해되어야 한다.
본 개시는 데이터를 난독화하고 역난독화하기 위해 사용될 수 있는 순방향 매핑 및 역방향 매핑 함수를 기술한다. 순방향 매핑 함수는 입력 비트 패턴 대신에 새로운 비트 패턴을 대체하기 위해 일반적으로 적용될 수 있는 반면, 역방향 매핑 함수는 대체를 반전시킨다. 일부 실시형태에서, 송신기(100)는 순방향 맵을 저장하거나 포함할 수 있고 수신기(150)는 역방향 맵을 저장하거나 포함할 수 있다. 본 기술 분야의 숙련자는 송신기가 순방향 맵만을 포함할 필요가 있고 수신기는 순방향 맵만을 포함할 필요가 있다는 것을 알 것이다. 또한, 본 기술 분야의 숙련자는 맵 중 하나의 맵만이 주어지는 경우, 다른 맵은 쉽게 도출될 수 있고, 따라서 송신기와 수신기 모두에 대해 하나의 맵만이 필요하다는 것을 알 것이다.
도 1B를 참조하면, 데이터 저장 시스템(180)의 일 실시형태가 도시되어 있다. 도 1B의 실시형태에서, 송신기로부터 수신기로 전송될 비트 데이터 스트림(예를 들어, "전송 데이터")에 대해 데이터 난독화 프로세스를 설명한다. 그러나, 데이터 난독화 프로세스는 저장될 데이터(예를 들어, "저장 데이터")에도 적용되거나 또는 대안적으로 적용될 수 있다. 도 1B의 실시형태에서, 데이터 저장 시스템(180)은 시스템의 메모리(예를 들어, 데이터베이스(182))에 저장될 데이터 패킷을 수신할 수 있다. 데이터 저장 시스템(180)은 저장 전에 데이터를 난독화하기 위해, 도 1A에서 기술한 바와 같은 입력 데이터 난독화 모듈(108), 헤더 데이터 난독화 모듈(110) 및 데이터 병합 모듈(112)을 포함할 수 있다. 또한, 데이터 저장 시스템(180)은 데이터 분할 모듈(158), 입력 데이터 역난독화 모듈(160) 및 데이터베이스(182)에서의 검색 이후 데이터를 디코딩하기 위한 헤더 데이터 역난독화 모듈(162)을 포함할 수 있다. 데이터 저장 시스템(180)은 데이터를 인코딩하고 검색된 데이터를 디코딩하는 프로세스를 관리하기 위한 하나 이상의 관리자를 포함할 수 있다. 본 개시는 주로 전송될 데이터에 대한 데이터 난독화 프로세스를 기술하지만, 본 개시의 시스템 및 방법은 본 개시의 범위를 벗어나지 않고 국부적으로 저장되는 데이터에 적용될 수 있다는 것을 알아야 한다. 또한, 본 개시는 주로 데이터베이스를 기술하지만, 저장 장치는 데이터베이스 형식일 필요는 없다. 본 기술 분야의 숙련자는 데이터베이스 스키마가 포함되는지 여부에 관계없이 임의의 형태의 저장 장치가 사용될 수 있다는 것을 알 것이다. 예를 들어, 난독화된 데이터는 독립형 파일로, 파일 시스템의 일부로 또는 이동식 매체 등에 저장될 수 있다. 본 기술 분야의 숙련자는 시스템이 다양한 머신 또는 심지어 다른 네트워크 상에 난독화 및 역난독화 구성요소를 분산시킬 수 있으며, 이러한 다양한 머신 및 네트워크가 다양한 개체에 의해 제어될 수 있음을 또한 알 것이다.
이제 도 2 및 도 3을 참조하면, 송신기(100)의 데이터 변환 모듈(102)이 더욱 상세하게 도시되어 있다. 데이터 변환 모듈(102)은 전송될 입력 데이터를 수신하도록 구성된 데이터 입력 버퍼(114)를 포함한다. 데이터 입력 버퍼(114)는 들어오는 데이터를 받아들이고, 필요한 경우 데이터를 포맷하며(예를 들어, 데이터를 적절한 크기로 포맷함), 인코딩을 위해 입력 데이터 난독화 모듈(108)로 데이터를 전달한다. 데이터 입력 버퍼(114)는 또한 관리자(104)에 대해 데이터를 제공하고 수신할 수 있다.
관리자(104)는 전송될 데이터 패킷에 대해 이용될 난독화를 위한 구성을 설정하는 입력 데이터 제어 함수의 역할을 할 수 있다. 관리자(104)는 수신기(150)가 수신되는 데이터 패킷을 디코딩할 수 있게 하는 식별자(예를 들어, 하나 이상의 구성 또는 서브-구성)를 생성한다. 관리자(104)는 또한 데이터의 난독화에서 사용되어야 하는 하나 이상의 테이블이 변경되어야 한다는 것과 핸드쉐이크 요청이 전송되거나 수신 확인되어야 한다는 것을 나타내는 명령어, 또는 난독화 프로세스의 설정과 제어를 위해 필요한 기타 명령어와 같은 입력 데이터 제어 명령어를 처리한다. 관리자(104)는 식별자 및 입력 데이터 제어 명령어를 헤더 정보의 일부로서 헤더 난독화 모듈(110)에 제공할 수 있다. 관리자(104)는 난수 발생기(RNG)(116)를 더 포함하거나 사용할 수 있다. RNG(116)는 일부 실시형태에서 의사 난수 발생기(pseudo-RNG; PRNG)일 수 있다. RNG(116)는 입력 데이터 난독화 모듈(108)에서 입력 데이터의 난독화 중에 사용할 테이블 및/또는 함수를 결정하기 위해 식별자를 생성하기 위해 사용될 수 있다. PRNG는 또한 데이터와의 배타적 논리합(XOR)과 같은 난독화 함수에 대해 입력 데이터 난독화 모듈(108)이 사용할 수 있는 의사 난수 스트림을 생성하기 위해 사용될 수 있다.
관리자(104)는 다양한 수준의 정교함을 가질 수 있다. 일 실시형태에서, 관리자(104)는 하드 코딩된 패스 스루(hard coded pass-through)로서 구현될 수 있다. 다시 말해서, 관리자(104)는 어떠한 결정도 하지 않거나 임의의 옵션을 가질 수 있으며, 단순히 입력을 수신하고 자동으로 출력을 생성할 수 있다(즉, 데이터를 수신하고, RNG(116)에 데이터를 삽입하고, 결과적으로 랜덤화된 데이터를 출력할 수 있다). 다른 실시형태에서, 관리자(104)는 값을 랜덤하게 생성하는 방법, 난독화 프로세스를 위해 데이터 변환 모듈(102)을 구성하는 방법 등을 결정하기 위해 사용될 수 있는 다수의 함수 및 파라미터를 수신하는 등 더욱 정교해질 수 있다. 관리자(104)는 다수의 서버들 또는 다른 소스들로부터, 또는 데이터 변환 모듈(102) 내의 단일 소스로부터 함수 및 파라미터를 수신할 수 있다. 관리자(104)는 관리자에서 수신된 데이터의 양을 기반으로 난독화의 복잡성을 증가시킬 수 있다.
입력 데이터 난독화 모듈(108)은 난독화를 위한 데이터에 적용되는 다수의 함수(124)를 포함할 수 있다. 입력 데이터 난독화 모듈(108)은 임의의 수의 함수(124)를 포함할 수 있다(즉, 모듈(108)이 사용하는 함수의 수, 유형 및 순서는 고정될 수 있거나, 관리자(104)가 랜덤하게 선택한 값 또는 식별자를 기반으로 그리고 다른 설정 또는 속성을 기반으로 달라질 수 있다). 예를 들어, 입력 데이터 난독화 모듈(108)이 사용하는 함수(124)는 전송 중인 데이터에 대한 사용자 요구, 데이터의 유형, 데이터가 관련되는 애플리케이션 및/또는 데이터의 전송에 이용될 수 있는 자원을 기반으로 선택될 수 있다.
헤더 난독화 모듈(110)은 헤더 정보를 난독화하기 위한 다수의 함수를 포함한다. 예를 들어, 헤더 난독화 모듈(110)은 헤더 데이터 내의 비트를 스왑하도록 구성된 하나 이상의 스크램블링 함수(118)를 포함한다. 또한, 헤더 난독화 모듈(110)은 전송될 데이터 패킷 내의 입력 데이터 비트 대신에 새로운 비트 패턴을 대체하도록 구성된 하나 이상의 순방향 매핑 함수(120)를 포함할 수 있다. 데이터 변환 모듈(102)은 헤더 난독화 모듈(110)의 다양한 함수에 대한 입력을 제공하도록 구성된 헤더 정보 관리자(126)를 포함하는 것으로 도시되어 있다.
입력 데이터가 입력 데이터 난독화 모듈(108)에 의해 난독화되고 헤더 데이터가 헤더 난독화 모듈(110)에 의해 난독화되고 나면, 데이터 병합 모듈(112)은 두 개의 데이터 세트를 함께 병합한다. 데이터 병합 모듈(112)은 두 개의 데이터 세트로부터의 비트를 스크램블링하고 두 개의 데이터 세트를 함께 연결하기 위한 스크램블링 모듈(128) 및 연결 모듈(130)을 포함한다. 병합된 데이터는 수신기(150)로의 송신을 위해 인코딩된 데이터 출력 버퍼(132)에 제공된다.
특히 도 3을 참조하면, 데이터 변환 모듈(102)의 기능이 더욱 상세하게 도시되어 있다. 실선은 데이터가 난독화되어 수신기(150)로 전송되는 데이터 경로를 나타낸다. 데이터는 데이터 입력 버퍼(114)에서 수신되고 인코딩을 위해 입력 데이터 난독화 모듈(108)에 제공된다. 또한, 헤더 난독화 모듈(110)이 데이터 병합 모듈(112)에 제공하는 인코딩된 헤더 정보가 도시되어 있다. 파선은 데이터 제어 경로를 나타내고, 정보는 데이터를 난독화하는 방법(예를 들어, 사용할 함수, 사용할 테이블 등)을 결정하기 위해 사용된다. 쇄선은 헤더 정보 관리자(126)와 헤더 난독화 모듈(110)의 다양한 함수 간의 제어 경로를 나타낸다.
이제 도 4 및 도 5를 참조하면, 수신기(150)의 데이터 변환 모듈(152)이 더욱 상세하게 도시되어 있다. 일반적으로, 데이터 변환 모듈(152)의 다양한 구성요소는 데이터 변환 모듈(102)의 구성요소의 역이다(즉, 데이터를 난독화하기 위해 사용되었던 것과 동일한 일반 프로세스를 사용하여 데이터를 역난독화함). 데이터 변환 모듈(152)은, 인코딩된 데이터를 수신하고 데이터를 데이터 분할 모듈(158)에 제공하도록 구성된 인코딩된 데이터 입력 버퍼(164)를 포함한다. 데이터 분할 모듈(158)은 (스크램블링 함수(118)에 의해 스크램블링된 비트를 디스크램블링하는) 디스크램블링 모듈(166)을 통해 그리고 (입력 데이터에서 헤더 데이터를 분리하는) 분할 모듈(168)을 통해 데이터를 분할한다. 데이터 분할 모듈(158)은 헤더 정보 관리자(154)로부터 입력을 수신하여 (예를 들어, 데이터의 난독화 중에 사용되었던 테이블에 관한 정보를 포함하는 데이터의 부분을 식별하기 위해) 데이터 분할 프로세스에 대한 관련 정보를 결정한다.
일 실시형태에서, 수신기(150)는 수신기에 의해 인코딩되고 인식 가능한 형식으로 포맷되는 데이터 패킷을 수신할 수 있다. 예를 들어, 패킷은 OCTS로 인코딩될 수 있다. 수신된 패킷이 OCTS 패킷이 아닌 경우, 데이터 패킷의 더 이상의 처리는 수신기에 요구되지 않는다. 그러나, 데이터 패킷이 OCTS인지 여부를 결정하기 위해 데이터 분할 모듈(158)에서 패킷의 일부 처리가 필요할 수 있다. 데이터 분할 모듈(158)(또는 수신기(150)의 또 다른 모듈)은 패킷이 OCTS 패킷인지를 결정하는 검증 모듈(169)을 포함할 수 있다. 검증 모듈(169)은 예를 들어, 패킷이 OCTS 패킷인지 여부를 배제하기 위해 하나 이상의 필드(예를 들어, 아래에서 설명하는 바와 같은 퀵 룩(quick look) 필드 및 체크섬(checksum) 필드)를 검사할 수 있다. 데이터 분할 모듈(158)은, 데이터 패킷이 디스크램블링되고 디코딩될 수 있게 하기 위해, 데이터 패킷이 OCTS 패킷인 경우 데이터 패킷에 대한 추가 프로세싱을 수행할 수 있다.
분할된 데이터는 관리자(178)에게 제공된다. 헤더 데이터와 원본 메시지 모두는 이 시점에서 여전히 난독화된다. 관리자(178)는 수신된 데이터 패킷에 대해 입력 데이터 난독화 모듈(108)이 사용한 난독화에 대한 구성을 결정한다. 관리자(178)는 PRNG(182)를 더 포함할 수 있다. PRNG(182)는 일 실시형태에서 도 2의 RNG(116)와 유사한 의사 난수 발생기일 수 있다. 예를 들어, RNG(116)가 PRNG인 경우, 동일한 시드 값이 RNG(116) 및 RNG(182)에서 사용되면, RNG(116) 및 RNG(182)로부터의 출력은 동일할 것이다. 난독화된 헤더 데이터는 헤더 역난독화 모듈(162)에 전송된다. 헤더 역난독화 모듈(162)은 이하의 도면에서 기술되는 바와 같이, 헤더 데이터를 역난독화하기 위해 하나 이상의 디스크램블링 함수(170) 및 하나 이상의 역방향 매핑 함수(174)를 포함한다. 헤더 역난독화 모듈(162)은 데이터 변환 모듈(102)이 데이터를 난독화하기 위해 사용한 함수의 유형 및 수에 관한 구성 정보를 관리자(178)에게 반환한다. 난독화된 입력 데이터와 함께 정보는 입력 데이터 역난독화 모듈(160)에 전송된다. 관리자(178)가 결정한 구성 정보를 기반으로, 입력 데이터 역난독화 모듈(160)은 데이터를 역난독화하기 위해 하나 이상의 함수(176)(이는 송신기(100)에서 입력 데이터에 적용된 함수(124)와 관련될 수 있다)를 적용할 수 있다. 입력 데이터 역난독화 모듈의 결과는 저장되고 이후 데이터 출력 버퍼(180)에서 이용 가능하게 된다.
도 2 및 도 4를 개괄적으로 참조하면, RNG(116, 182)는 관리자에서 구현된 것으로 도시되어 있다. 다른 실시형태에서, RNG 함수는 데이터 변환 모듈(102, 152)의 다른 모듈 중 임의의 모듈에서 구현될 수 있다. 송신기(100)가 (PRNG 대신에) 순수 난수 발생기를 사용하는 경우, RNG의 출력은 수신기(150)에 전송되어야 하는데, 수신기가 데이터를 역난독화하기 위해 출력을 수신할 필요가 있기 때문이다. 송신기(100)가 PRNG를 사용하는 경우, 수신기(150)는 PRNG에 대한 입력을 고려하여 PRNG와 동일한 값을 생성할 수 있다.
특히 도 5를 참조하면, 데이터 변환 모듈(152)의 기능이 더욱 상세하게 도시되어 있다. 도 3와 유사하게, 실선은 데이터 변환 모듈이 역난독화하는 입력 데이터와 헤더 데이터에 대한 데이터 경로를 나타낸다. 데이터는 인코딩된 데이터 입력 버퍼(164)에서 수신되어 데이터 분할 모듈(158)에 제공되고, 이는 다시 상기한 바와 같이 두 개의 역난독화 모듈(160, 162)에 데이터를 제공한다. 파선은 데이터 제어 경로를 나타내고, 정보는 데이터를 역난독화하는 방법(예를 들어, 사용할 함수, 사용할 테이블 등)을 결정하기 위해 사용된다. 쇄선은 헤더 정보 관리자(154)와 헤더 역난독화 모듈(162)의 다양한 함수 간의 헤더 제어 경로를 나타낸다.
도 6 내지 도 11를 개괄적으로 참조하여 헤더 난독화 프로세스의 일 실시형태를 더욱 상세하게 설명한다. 특히, 송신기(100)의 헤더 난독화 모듈(110)과 데이터 변환 모듈(102)의 활동 및 수신기(150)의 헤더 역난독화 모듈(162) 및 데이터 변환 모듈(152)의 활동을 더욱 상세히 설명한다. 우선, 헤더 정보는 시스템의 동작에서 많은 목적을 제공할 수 있다는 것에 유의해야 한다. 예를 들어, 헤더 정보는 송신기(100)와 수신기(150) 간에 제어 정보를 전달하기 위한 정보 경로로서 사용될 수 있다. 헤더 정보는 또한 특정 수신기를 위한 데이터 패킷을 식별하고 따라서 다른 수신기를 위한 패킷은 거절하기 위해 사용될 수 있다. 이러한 방식으로, 헤더 정보는 특정한 할당된 보안 네트워크에 진입하기 위해 사용될 수 있다. 헤더 정보는 또한 본 발명의 양태에 따라 패킷이 인코딩된 패킷이 아닌 것으로 보장되는지 여부를 결정하기 위해 사용될 수 있다. 이러한 결정은 수신기(150)에서 유용할 수 있는데, 그 이유는 본 발명의 양태에 따라 패킷이 인코딩되지 않는다고 결정함으로써 수신기(150)가 디코딩 단계를 완전히 우회할 수 있기 때문이고, 이는 헛된 컴퓨팅 사이클을 방지한다. 또한, 헤더 정보는 인코딩된 입력 데이터의 역난독화를 가능하게 하기 위해 필요한 정보를 포함할 수 있다. 일반적으로 헤더 정보는 패킷의 크기에 비해 상대적으로 작다. 예를 들어, 일 실시형태에서, 헤더 정보는 20 바이트보다 작지만, 패킷은 1500 바이트를 포함할 수 있다.
헤더 난독화 모듈(110)은 일반적으로 헤더 정보를 난독화하여 의도된 수신자 이외의 다른 사람이 데이터를 사용하거나 볼 수 없도록 차단한다. 헤더 난독화 모듈(110)은 전체 난독화 프로세스의 복잡성을 증가시키기 위해 입력 데이터의 난독화 또는 데이터 병합에 사용된 것과는 다른 고유 함수 세트를 사용할 수 있다. 대안적으로, 난독화 모듈(110)은 데이터 변환 모듈의 다른 모듈과 동일한 난독화 함수를 사용할 수 있다. 난독화 모듈(110)은 예를 들어 하나 이상의 대체 또는 매핑 함수(예를 들어, 제 1 비트 패턴을 제 2 비트 패턴으로 대체함), 하나 이상의 화이트닝 함수 및/또는 하나 이상의 전치 함수를 사용할 수 있다. 이들 함수를 이하의 도면에서 자세히 설명한다.
이제 도 6A를 참조하면, 송신기(100)의 헤더 난독화 모듈(110)의 블록도가 도시되어 있다. 헤더 난독화 모듈(110)의 출력은, 송신기가 강제로 동일한 메시지를 재전송하거나 전송하는 경우, 출력을 반복하지 않도록 설계된다. 다시 말해서, 헤더 난독화 모듈(110)의 각각의 출력은 헤더 정보가 동일한지에 관계없이 유일해야 한다.
도 6A의 실시형태에서는, 두 가지 유형의 난독화 함수가 도시되어 있다. 헤더 난독화 모듈(110)은 헤더 정보 비트 스크램블링 함수(206) 및 헤더 정보 순방향 매퍼(212)를 포함한다. 다른 실시형태에서, 헤더 난독화 모듈(110)은 임의의 수의 고유 함수를 포함할 수 있다.
헤더 정보 비트 스크램블링 함수(206)는 일반적으로 설정된 수의 비트 내에서 비트를 스왑하도록 구성된다. 예를 들어, 함수(206)는 16 비트 내의 임의의 단일 비트를 워드 내의 임의의 다른 위치로 이동시키는 능력과 역 함수를 수행하거나(예를 들어, 수신기에서) 각각의 비트를 원래 위치로 반환하는 능력을 갖고, 16 비트 워드 내의 비트를 스왑할 수 있다. 비트 그룹을 스왑하는 함수가 사용될 수 있으며, 스왑되는 비트의 그룹 크기와 위치 모두는 스왑의 레벨과 위치에 의해 정의된다. 도 7 내지 도 9를 개괄적으로 참조하면, 16 비트 워드에 대한 하나의 이러한 예시적인 함수가 도시되어 있다. 16 비트를 갖는 예가 도 7 내지 도 9에 도시되어 있지만, 다양한 실시형태에서, 스와핑 함수는 임의의 수의 비트에 적용될 수 있다는 것을 알아야 한다.
도 7의 실시형태에서는, 워드의 각각의 요소가 [0, 15]로 인덱싱된 16 비트 워드에 대한 스왑 함수가 도시되어 있다. 함수는 레벨의 수를 3으로 정의하여, 레벨 0 스왑, 레벨 1 스왑, 레벨 2 스왑 및 레벨 3 스왑을 만든다. 레벨 3에서, 비트는 각각 8 비트의 21 = 2 그룹으로 그룹화되고, 레벨 2에서, 비트는 각각 4 비트의 22 = 4 그룹으로 그룹화된다, 등등. 길이 16 비트의 스크램블링 키(224)(도 8 및 도 9에 도시됨)는 사전에 교환되거나, 초기화 프로세스 동안 교환되거나, RNG(116)에 의해 생성될 수 있다. 스크램블링 키(224)의 16 비트는 입력 워드의 비트가 스크램블링되는 방법을 결정한다.
예를 들어, 도 7에 도시하는 바와 같이, 레벨 3 스왑은 스크램블링 워드의 비트 0에 의해 구동되는 것으로 도시되어 있다. 스크램블링 키(224)의 비트 0이 1인 경우, 두 개의 그룹의 비트 [0, 7]과 [8,15] 간의 스왑이 수행된다. 스크램블링 키(224)의 비트 0이 0인 경우, 스왑은 수행되지 않을 것이다. 레벨 2 스왑은 스크램블링 키(224)의 비트 1 및 2에 의해 구동되는 것으로 도시되어 있다. 스크램블링 키(224)의 비트 1이 1인 경우, 두 개 그룹 [0, 3] 및 [4,7] 간의 스왑이 수행되고, 스크램블링 키(224)의 비트 2가 1인 경우, 두 개 그룹 [8, 11]과 [12, 15] 간의 스왑이 수행된다. 이 프로세스는 도시된 바와 같이 각각의 레벨과 비트를 통해 반복된다. 도 8을 참조하면, 함수(206)에 의해 수신된 입력 워드(220)에 대해, 스크램블링된 워드(222)가 생성된다. 각각의 강조 표시된 영역은 1의 값을 갖는 스크램블링 키(224)의 비트를 기반으로 스왑이 발생한 곳을 나타낸다. 예를 들어, 비트 0이 1이었기 때문에, 비트 [0,7]과 [8,15] 간에 스왑이 수행되었다. 스왑 함수는 레벨 3에서 시작하여 레벨 0까지 작동한다. 도 7 내지 도 9에 도시된 바와 같이 단지 14 개의 스왑이 필요하고 따라서 스크램블링 키(224)의 비트 15는 무시된다는 것에 주목하라.
도 9를 참조하면, 비트 워드(220)의 디스크램블링이 도시되어 있다(도 6B를 참조하여 아래에서 설명하는 바와 같이 헤더 역난독화 모듈(162)에서 수행됨). 비트 워드(220)를 디스크램블링하는 프로세스는 반전될 수 있다, 즉 우선 비트 14로부터 시작하고(도 7에 도시된 바와 같이, 비트 15는 무시됨) 레벨 0 스왑을 적용할 비트 0을 통해 레벨 0 스왑을 적용한다.
다시 도 6A를 을 참조하면, 헤더 정보 순방향 매퍼(212)(및 도 6B의 역방향 매퍼(258))는 헤더 난독화 프로세스에서 사용된다. 일반적으로, '순방향 맵' 및 '역방향 맵'은 헤더 난독화 프로세스의 매핑 함수를 위한 벡터 쌍으로서 제공된다. 순방향 맵은 헤더를 인코딩하는 함수를 제공하고, 역방향 맵은 헤더를 디코딩하는 함수를 제공한다. 순방향 매핑 함수는 헤더 값의 일부 또는 전부를 새로운 값으로 대체한다. 역방향 맵은 인코딩된 값을 원래 값으로 되돌리기 위해 사용된다.
순방향 매퍼(212)와 역방향 매퍼(258)는 매칭된다. 사용되는 맵은 기본 맵(예를 들어, 단일 값을 새로운 고정 값으로 사전 매핑), 단일 변수의 함수로 구동되는 데이터 기반 맵 또는 다수의 변수의 함수로 구동되는 데이터 기반 맵일 수 있다. 맵의 복잡성 수준은 원하는 보호 수준을 기반으로 증가할 수 있다. 도 13 및 도 14를 참조하여 매핑을 더욱 상세하게 설명한다.
관리자(104)가 헤더 난독화 모듈(110)(및 따라서 도 6A에 도시된 함수(206, 212))에 전달한 정보는, 데이터를 인코딩하기 위해 현재의 데이터 경로에서 사용 중인 구성과 테이블들을 식별하는 하나 이상의 테이블 식별자 및/또는 제어 정보를 포함할 수 있다. 정보는 특정 OCTS(최적화 코드 테이블 시그널링(optimized code table signaling)) 구성에 따라 달라질 수 있다. 통신 프로세스 관리를 위한 정보가 또한 정보의 일부로서 포함될 수 있다. 관리자(104)가 헤더 난독화 모듈(110)에 전달한 정보는 RNG(106)로부터의 출력 또는 사용된 RNG 시퀀스의 출력으로부터 도출된 입력을 더 포함할 수 있다. 관리자(104)가 헤더 난독화 모듈(110)에 전달한 정보는 프레임 길이(가변적일 수 있는 프레임 길이의 크기를 식별하기 위해) 또는 헤더 데이터를 인코딩하기 위해 헤더 난독화 모듈(110)이 필요로 하는 임의의 다른 정보를 더 포함할 수 있다. 또한 도 10을 참조하면, 관리자(104)가 헤더 난독화 모듈(110)에 제공할 수 있는 일부 정보를 식별하는 테이블이 도시되어 있다. 정보는 전송을 위해 데이터를 검증하기 위해(즉, 수신된 프레임이 데이터 변환 모듈을 위한 것인지를 보장하고, 헤더 메시지를 정확하고 어드레스된 것인지 입증하기 위해) 체크섬 또는 퀵 룩 입력을 더 포함할 수 있다. 도 10에 도시된 필드는 헤더 정보에 포함될 수 있는 예시적인 필드로서 제공된다. 더욱 일반적으로 말하면, 헤더 정보는 메시지를 디코딩하기 위해 필요한 정보를 포함하며, 테이블 ID, 송신기가 사용한 매핑 테이블을 식별하는 구성 필드, 시스템 구성 정보, 하나 이상의 랜덤 드로(random draw) 값(단지 스크램블링 워드 대신에), 데이터 사이즈 필드(난독화된 데이터의 양을 나타냄) 및/또는 선택적인 프레임 길이(아래에서 설명하는 바와 같이 더미 데이터를 식별하기 위해 사용될 수 있음)와 같은 정보를 포함할 수 있다. 헤더 난독화 모듈(110)은 다른 기술을 사용하여 헤더 데이터의 각각의 필드를 난독화할 수 있다. 상기 개시는 헤더에서 전달될 수 있는 정보의 유형으로 제한되는 것을 의미하지 않으며, 본 기술 분야의 숙련자는 정보를 디코더에 제공하여 메시지가 제대로 디코딩되는 것을 보장하기 위해 필요한 다른 정보가 헤더에 포함될 수 있다는 것을 알 것이다.
특히 퀵 룩 필드를 참조하면, 전송된 데이터 패킷이 본원에 개시된 다양한 실시형태에 의해 인코딩된 유형의 것이 아닌지를 신속하게 결정하기 위해 필드를 사용할 수 있다. 예를 들어, 퀵 룩 필드는 데이터 패킷이 OCTS 구성을 갖는지 여부를 결정하기 위해 사용될 수 있다. 이는 OCTS를 사용하여 인코딩된 패킷이 OCTS로 인코딩되지 않은 패킷과 함께 네트워크 상에 공존하는 것을 가능하게 한다. 수신된 각각의 패킷에 대해, 네트워크 장치는 패킷이 OCTS 패킷이 아닌지를 결정하기 위해 퀵 룩 필드를 사용할 수 있다. 그렇지 않은 경우, OCTS 처리는 더 이상 필요 없고, 패킷은 패킷이 처리되는 종래의 방식으로 처리된다. 그러나, 패킷이 OCTS 인코딩된 패킷일 수 있다는 것을 퀵 룩 필드가 나타내는 경우, 추가 처리가 필요하다. 일 실시형태에서, 퀵 룩 필드는 XOR 함수를 사용하여 생성될 수 있다. 예를 들어, 퀵 룩 필드는 두 개의 테이블 식별자와 같이 헤더의 다른 두 부분에 대한 XOR 함수의 결과일 수 있다. 속도와 효율성을 위해, 퀵 룩 필드 자체는 난독화될 필요는 없으며 헤더의 난독화된 부분에 대한 XOR 함수의 결과일 수 있다. 이러한 방식으로, 퀵 룩 필드의 위치 및 XOR에 대한 입력이 될 필드가 수신되고 식별되면, 단일 XOR과 단일 비교를 신속하게 수행하여 패킷에 추가 처리가 필요한지 여부를 결정할 수 있다. 데이터 패킷을 수신하는 수신기는 퀵 룩 필드를 검사하여 데이터 패킷이 적절한 형식(예를 들어, OCTS 구성)인지를 결정할 수 있다. 다양한 실시형태에서, 퀵 룩 필드를 생성하기 위해 XOR 함수 이외의 다른 함수가 사용될 수 있다.
특히 체크섬 필드를 참조하면, 필드는 헤더 난독화 동안 난독화될 수 있다. 체크섬 필드는 일반적으로 본 개시의 기술을 사용하여 인코딩된 것과 같이 패킷을 전송, 저장 또는 배제하는 동안 오류를 검출하기 위해 사용될 수 있다. 체크섬 필드는 송신기 (100)에서 난독화된 모든 데이터 또는 체크섬을 생성하기 위한 임의의 공지된 방법을 사용하여 데이터의 일부 부분 집합을 기반으로 생성될 수 있다. 예를 들어, 체크섬은 퀵 룩 필드를 제외하고 전송할 모든 데이터를 사용하여 계산될 수 있다. 체크섬 함수는 데이터 집합에 대해 체크섬을 계산할 수 있어야 하며, 여기서 난독화 함수는 데이터 경로 난독화 함수와는 다르고, 입력 변수의 수는 다양하고, 사용되는 함수는 확률 변수에 의해 결정되며, 각각의 요소는 난독화 함수에 의해 구동되는 적어도 하나의 변환을 겪는다. 수신기는 수신된 데이터 패킷의 역난독화된 헤더 데이터에 대해 자체 체크섬을 계산하여 전달된 체크섬과 일치하는지 확인할 수 있다. 다양한 실시형태에서, 송신기는 전송 중에 오류가 있는지 또는 제공된 정보가 악의적인지 여부를 수신기가 결정할 수 있게 하는 헤더 내의 정보를 제공하기 위해 임의의 다른 유형의 오류 검출 방법을 사용할 수 있다. 예를 들어, 수신기는 데이터 크기가 허용 범위 이내인지 여부를 검사할 수 있는데, 이는 전송 중의 오류 또는 수신기가 수신한 것보다 더 큰 데이터 버퍼에 대해 분석을 수행하도록 하는 악의적인 시도를 나타낼 수 있다.
헤더 정보의 각각의 필드는 특정한 그리고 정의된 수의 비트를 포함할 수 있다. 비트는 수신기가 데이터 역난독화 동안 헤더 정보를 식별할 수 있도록 정의될 수 있다. 예를 들어, 데이터 ID는 7 비트, 스크램블링 워드는 4 비트, 퀵 룩 필드는 16 비트, 체크섬은 16 비트 등일 수 있다. 헤더는 임의의 방식으로 포맷될 수 있고, 헤더가 수신기에 의해 식별될 수 있는 한, 임의의 수의 필드에 대해 임의의 수의 비트를 포함할 수 있다는 것을 알아야 한다.
헤더 정보 비트 스크램블링 함수(206)와 헤더 정보 순방향 매퍼(212)는 헤더 정보 관리자(126)에서 헤더 정보와 PRNG 값을 검색한다. 헤더 데이터와 PRNG 값은 사용할 매핑 함수(사용할 순방향 매핑 함수(208))의 유형을 정의할 수 있고, 난독화된 데이터의 헤더 부분을 식별하기 위해 수신기가 사용할 수 있는 식별 정보를 더 포함할 수 있다. 도 6A에 도시된 바와 같이, 하나 이상의 순방향 매핑 함수(208)가 선택되어 데이터를 난독화하는 데 사용하기 위해 헤더 정보 비트 스크램블링 함수(206)에 제공될 수 있고, 함수의 선택은 헤더 정보 관리자(126)에서 검색된 정보를 기반으로 할 수 있다.
계속해서도 6A를 참조하면, 헤더 정보가 스크램블링 함수(206)에 의해 스크램블링된 후, 헤더 정보 순방향 매퍼(212)는 난독화된 헤더 데이터를 매핑하도록 구성된다. 순방향 매퍼(212)는 테이블 룩업만큼 단순할 수 있고, 롤링 오프셋을 사용하는 데이터 기반 매핑을 이용할 수도 있다. 순방향 매퍼(212)는 비트 스크램블링 함수(206)와는 별도인 제 2의 독립적인 난독화 함수으로서 제공된다. 데이터가 매핑에 의해 난독화된 후, 데이터는 인코딩된 헤더 정보(214)로서 데이터 변환 모듈의 다른 모듈에 전달될 수 있다(입력 데이터와 결합).
이제 도 6B를 참조하면, 수신기(150)와 특히 헤더 역난독화 모듈(162)의 활동이 더욱 상세하게 도시되어 있다. 상기한 바와 같이, 헤더 역난독화 모듈(162)은 일반적으로 송신기(100)의 헤더 난독화 모듈(110)에 의해 수행된 데이터 난독화를 반전시킬 수 있다. 인코딩된 헤더 정보(214)는 송신기(100)로부터 수신되고, 인코딩된 데이터를 인코딩된 입력 정보와 인코딩된 입력 데이터로 분할하기 위한 데이터 분할 모듈(254)에 제공된다. 헤더 정보 관리자(256)는 인코딩된 헤더 정보를 수신하고, 데이터를 난독화하기 위해 사용된 함수 또는 방법과 관련된 파라미터와 함께 하나 이상의 함수 또는 방법을 결정할 수 있다. 헤더 역난독화 모듈(162)은 헤더 데이터에 적용된 매핑 함수를 반전시키는 헤더 정보 역방향 매퍼(258)와, 헤더 데이터에 적용되는 비트 스크램블링 함수를 반전시키는 헤더 정보 비트 디스크램블링 함수(260)를 포함한다.
이제 도 11A를 참조하면, 예시적인 실시형태에 따라, 헤더 정보를 인코딩하는 프로세스(300)의 흐름도가 도시되어 있다. 프로세스(300)는 예를 들어 헤더 난독화 모듈(110)에 의해 실행될 수 있다. 프로세스(300)는 헤더 정보를 수신하는 단계(302) 및 PRNG 값을 수신하는 단계(304)를 포함한다. 수신된 헤더 정보는, 인코딩되어 수신기로 전송될 데이터 패킷에 관한 정보를 단순히 포함할 수 있다. PRNG 값은 헤더 데이터 값을 기반으로 의사 랜덤하게 생성된 값을 포함할 수 있다. 프로세스(300)는 헤더 정보에 데이터를 추가하여 수신기에 의한 데이터 정보의 디코딩을 가능하게 하는 단계(306)를 더 포함한다.
프로세스(300)는 PRNG 값을 사용하여 헤더 정보를 난독화하기 위한 하나 이상의 파라미터를 결정하는 단계(308)를 더 포함한다. 상기한 바와 같이, 헤더는 비트에 대해 사용할 룩업 테이블 또는 바이트 스와핑 함수, 매핑 함수, 사용할 매핑 또는 스크램블링의 유형, 매핑 또는 스크램블링할 헤더 요소 등을 식별할 수 있다. 헤더 정보를 난독화하는 방법을 식별한 후, 식별된 하나 이상의 함수가 헤더 정보를 난독화하기 위해 사용된다(310). 예를 들어, 도 7 내지 도 9를 참조하면, 데이터를 난독화하기 위해 사용될 수 있는 함수의 일례는 비트 스와핑 함수이다. 다양한 실시형태에서, 함수는 데이터 변환 모듈에 의해 식별될 수 있고, 또는 하나 이상의 함수는 특정 고객 또는 애플리케이션(예를 들어, 개인 또는 클라이언트가 자신의 개인화된 보호 기능을 데이터 세트에 추가할 수 있게 하는, 특정 유형의 난독화 함수를 사용하는 특정 고객)에 대한 고유 함수 세트일 수 있다. 헤더 데이터 자체는 단일 함수를 사용하여 난독화될 수 있지만, 헤더의 다른 부분이 다른 함수를 사용하여 난독화되는 다수의 함수를 사용하여 난독화될 수도 있다. 또한 헤더의 일부 부분이 난독화되지 않은 채로 남을 수 있고, 특정 애플리케이션에서 헤더를 난독화할 필요가 없을 수도 있다.
프로세스(300)는 헤더 데이터를 추가로 난독화하기 위해 순방향 매핑 함수를 이용하는 단계(312)를 더 포함한다. 순방향 매핑 함수는 예를 들어 블록(308)에서 식별된 함수일 수 있다. 난독화된 헤더 정보는 이후 입력 데이터와의 스크램블링 및 연결을 위해 또 다른 모듈에 제공된다(314). 상기한 바와 같이, 입력 데이터와 헤더 데이터는 두 개의 다른 모듈에서 별도로 난독화되고 이후 제 3 모듈에서 결합되고 스크램블링된다.
이제 도 11B을 참조하면, 예시적인 실시형태에 따라, 헤더 정보를 디코딩하는 프로세스(350)의 흐름도가 도시되어 있다. 프로세스(350)는 예를 들어 헤더 역난독화 모듈(162)에 의해 실행될 수 있다. 프로세스(350)는 송신기로부터 인코딩된 데이터 패킷을 수신하는 단계(352) 및 데이터 패킷을 헤더 부분과 입력 데이터 부분으로 분할하는 단계(354)를 포함한다. 예를 들어, 블록(354)은 일반적으로 인코딩된 데이터 패킷을 분할하고 디스크램블링함으로써 헤더 정보를 식별하는 단계를 포함한다. 프로세스(350)는 헤더 정보를 검증하는 단계(356)를 더 포함한다. 다시 도 10을 참조하면, 헤더 정보의 검증은 일반적으로 체크섬 값을 검사하는 단계, 수신기가 의도된 수신자인지를 결정하기 위해 퀵 룩 필드를 검토하는 단계 등을 포함할 수 있다.
프로세스(350)는 데이터 패킷을 인코딩하기 위해 사용되는 하나 이상의 난독화 함수를 식별하는 단계(358)를 더 포함한다. 예를 들어, 수신기(150)의 관리자(178)는 계속해서 난독화되는 헤더 정보를 검토하고 PRNG로부터 난수를 획득할 수 있다. 관리자(178)는 헤더 정보를 통해 송신기(100)의 PRNG가 사용한 시드 값을 결정할 수 있고, PRNG에 대해 동일한 시드 값을 사용할 수 있다. 이는 헤더 역난독화 모듈(170)이 데이터를 난독화하기 위해 송신기(100)에 의해 사용된 함수를 복사하는 것을 가능하게 한다. 프로세스(350)는 헤더 정보를 디스크램블링하고 역방향 매핑하는 단계(360)를 더 포함한다. 헤더 정보가 역난독화되면, 헤더 내의 정보가 사용되어 입력 데이터를 역난독화할 수 있다(이하의 도면에서 자세히 설명됨).
도 11C 내지 도 11D를 개괄적으로 참조하면, 헤더 정보를 인코딩하고 디코딩하는 프로세스가 더욱 기술적으로 상세히 도시되어 있다. 도 11C는 헤더 정보를 인코딩하기 위한 일 실시형태를 도시하고 있다. 프로세스는 헤더 정보와 PRNG 시퀀스의 XOR을 수행하는 단계(370)를 포함한다. PRNG 시퀀스는 데이터 변환 모듈의 관리자에 의해 의사 랜덤하게 생성된 데이터 시퀀스이다. 프로세스는 체크섬을 계산하는 단계(371)와 체크섬을 매핑하는 단계(372)를 더 포함한다. 블록(371-372)은 전송될 모든 헤더 데이터에 대한 체크섬을 계산하는 단계와 전송을 위해 체크섬 필드를 난독화하는 단계를 일반적으로 포함할 수 있다. 프로세스는 데이터 테이블 식별자와 데이터 크기 필드에 대해 비트 스크램블링을 수행하는 단계(373) 및 필드를 매핑하는 단계(374)를 더 포함한다. 프로세스는 각각 랜덤 드로를 매핑하는 단계(375)를 더 포함한다. 예를 들어, 블록(375)은 도 10에 도시된 바와 같이 워드1 및 워드2 필드를 매핑하는 단계를 포함한다. 프로세스는 상기한 바와 같이 퀵 룩 필드를 계산하는 단계(376)를 더 포함한다. 프로세스는 헤더 데이터를 다른 난독화된 데이터에 연결하고 두 개의 데이터 세트를 함께 스크램블링하는 단계(377)를 더 포함한다.
도 11D는 헤더 정보를 디코딩하는 일 실시형태를 도시하고 있다. 일반적으로, 디코딩 프로세스는 단순히 인코딩 프로세스의 반전일 수 있다. 프로세스는 다른 난독화된 데이터로부터 헤더 데이터를 디스크램블링하고 분리하는 단계(380)를 포함한다. 프로세스는, 헤더가 OCTS 헤더(또는 데이터의 수신기가 수신하기를 기대하고 있는 또 다른 헤더 유형)인지를 검증하기 위해 퀵 룩 필드를 검사하는 단계(381)를 더 포함한다. 헤더를 검증할 때 각각의 랜덤 드로(382) 및 다양한 데이터 필드(383)에 역방향 매핑이 적용된다. 프로세스는 데이터 테이블 식별자와 데이터 크기 필드를 디스크램블링하는 단계(384)를 더 포함한다. 그리고 나서 프로세스는 이후 체크섬을 역방향 매핑하는 단계(385)와 체크섬을 사용하여 헤더 데이터에 오류가 없음을 검증하는 단계(386)를 포함한다.
도 12 내지 도 25를 개괄적으로 참조하여 입력 데이터 난독화 프로세스의 일 실시형태를 더욱 상세하게 설명한다. 특히, 송신기(100)의 입력 데이터 난독화 모듈(108)과 데이터 변환 모듈(102)의 활동 및 수신기(150)의 입력 데이터 역난독화 모듈(160) 및 데이터 변환 모듈(152)의 활동을 더욱 상세히 설명한다. 입력 데이터는 일반적으로 송신기(100)에 의해 수신기(150)로 전송되기를 원하는 데이터이다. 입력 데이터는 송신기(100)에 의해 인코딩되도록 구성된 임의의 크기 또는 유형일 수 있다. 입력 데이터 난독화 모듈은 일반적으로 의도된 수신자 이외의 다른 사람이 데이터를 사용하거나 볼 수 없도록 차단한다. 입력 데이터 난독화 모듈은 헤더 데이터의 난독화 또는 데이터 병합에 사용된 것과는 다른 고유 함수 세트를 사용하거나 헤더 데이터 난독화 및/또는 데이터 병합에 사용된 것과 동일한 고유 함수 세트를 사용할 수 있다.
이제 도 12A를 참조하면, 송신기(100)의 입력 데이터 난독화 모듈(108)의 블록도가 도시되어 있다. 입력 데이터 난독화 모듈(108)은, 일반적으로 전송될 데이터 및 데이터 송신에 이용 가능한 자원에 대한 요구 사항을 가장 잘 매치하기 위해 입력 데이터 관리자(402)가 선택할 수 있는 함수 세트를 포함한다. 입력 데이터 관리자(402)는, 데이터를 난독화하고 데이터 난독화 프로세스를 초기화하고 업데이트하기 위해 사용할 함수를 결정하도록 구성된다. 입력 데이터 관리자(402)는 함수 및 함수에 대한 하나 이상의 파라미터들을 랜덤하게 선택하기 위해 사용될 수 있는 RNG(예를 들어, 도 2에서 설명한 바와 같은 RNG(116))를 포함할 수 있다. RNG가 사용되는 경우, 생성된 선택은 수신기로 전달되어야 하지만, 송신기와 수신기가 동일한 시드를 사용하여 동일한 의사 난수를 생성할 수 있도록 PRNG가 사용될 수 있다. 또한, PRNG는 XOR 함수 또는 비트 대체 또는 비트 전치 함수에서 사용하기 위한 일련의 비트를 생성하기 위해 사용될 수 있다.
입력 데이터 난독화 모듈(108)은 임의의 수의 함수를 구현할 수 있다. 예를 들어, 도 12A에 도시된 바와 같이, 제 1 난독화 함수(404), 제 2 난독화 함수(406) 내지 제 n 난독화 함수(408)가 입력 데이터에 직렬로 적용될 수 있다. 입력 데이터 관리자(402)는 함수의 하나 이상의 파라미터를 제어하기 위해 각각의 함수에 입력을 제공할 수 있다. 사용될 수 있는 데이터 난독화 함수 또는 전략의 일부 예는 대체 또는 매핑(예를 들어, 입력 데이터의 제 1 비트 패턴을 제 2 비트 패턴으로 대체), 화이트닝(예를 들어, 인코딩된 데이터 스트림의 통계를 균일 분포 확률 함수로 변환), 및 전치(예를 들어, 입력 데이터의 두 개 이상 요소의 교환)을 포함한다. 본 개시는 이러한 함수의 다양한 예를 제공하고, 다른 실시형태에서는 이들 함수의 모든 유형의 변형 또는 다른 난독화 함수가 본원에 기술된 시스템 및 방법과 함께 사용될 수 있음을 알아야 한다.
이제 도 12B를 참조하면, 수신기(150)와 특히 입력 데이터 역난독화 모듈(160)의 활동이 더욱 상세하게 도시되어 있다. 입력 데이터 역난독화 모듈(160)은 일반적으로 송신기(100)의 입력 데이터 난독화 모듈(108)에 의해 수행된 입력 데이터 난독화를 반전시킬 수 있다. 헤더 역난독화 모듈(162)은, 상기한 바와 같이, 수신된 인코딩된 데이터로부터 인코딩된 헤더 정보와 인코딩된 입력 데이터를 식별할 수 있다. 관리자(420)는 인코딩된 입력 데이터 부분을 수신하고, 데이터를 원래 인코딩하기 위해 사용되었던 하나 이상의 함수 및 함수에 대한 파라미터를 결정할 수 있다. 다른 실시형태에서, 관리자(420)는, 인코딩된 입력 데이터 부분을 수신할 때 단순히 함수가 호출되게 하는 더욱 수동적인 모듈일 수 있다. 입력 데이터 역난독화 모듈(160)은 이후 데이터를 인코딩하기 위해 송신기(100)가 사용한 함수에 관련된(예를 들어, 함수의 역인) 데이터를 입력 역난독화 모듈(422, 424, 426 등)을 사용하여 디코딩할 수 있다. 입력 데이터 역난독화 모듈(160)은 수신기(150)가 사용할 수 있도록 디코딩된 입력 데이터(428)를 출력한다.
도 13 내지 도 20을 개괄적으로 참조하면, 매핑 함수의 다양한 예가 더욱 상세하게 도시되어 있다. 매핑 함수는 데이터를 난독화하기 위해 입력 데이터(또는 헤더 데이터)에 적용될 수 있다. 본 개시에 제공된 예는 단지 예일 뿐이고, 다른 매핑 함수 또는 대체 방법이 데이터를 난독화하기 위해 사용될 수 있으며, 매핑 함수 또는 대체 방법의 임의의 조합이 사용될 수 있음을 알아야 한다.
도 13을 참조하면, 기본 매핑 함수가 도시되어 있다. 도 13은 입력 데이터를 인코딩하기 위한 순방향 매핑 테이블 및 입력 데이터를 디코딩하기 위한 역방향 매핑 테이블을 도시하고 있다. 순방향 매핑 테이블은 입력 데이터 난독화 모듈(108)이 (난독화 함수(402, 404 또는 406)로서) 사용할 수 있는 반면, 역방향 매핑 테이블은 입력 데이터 역난독화 모듈(160)이 사용할 수 있다. 도 13의 순방향 맵과 역방향 맵은 다음과 같이 벡터 쌍으로 표현될 수 있다:
'순방향 맵' = {010 100 011 101 001 111 000 110}
'역방향 맵' = {110 100 000 010 001 011 111 101}.
도 13의 예에서는, 순방향 매핑 벡터의 인덱스로서 입력 값을 사용하여 입력 값의 인코딩된 값이 발견된다. 예를 들어, 순방향 매핑에서 인덱스 4의 요소는 1(베이스 10에서 1, 베이스 2에서 001)인데, 이는 원래 데이터의 인덱스 4에 원래 위치한 요소가 이제 인코딩된 데이터의 인덱스 1에 있음을 의미한다. 역방향 맵을 통한 디코딩의 경우, 인덱스 1은 4로 매핑되는데, 이는 인코딩된 데이터에서 인덱스 1에 위치한 요소가 인덱스 4로 반환됨을 의미한다. 다시 말해서, 인코드(4) = 1이고 디코드 = 4이다. 순방향 맵과 역방향 맵은 상호 교환될 수 있다, 즉, 순방향 맵과 역방향 맵은 반전되어 반대쪽 맵으로 사용될 수 있다.
순방향 맵은, 예를 들어, 벡터 요소를 재정렬하도록 구성된 셔플 함수를 사용하여 생성될 수 있다. 일 실시형태에서, 셔플 함수는 상기한 바와 같이 RNG 또는 PRNG에 의해 구동된다. n-요소 벡터 내의 각각의 요소가 특정 인덱스에 매핑될 확률은 1/n이며, 여기서 각각의 요소는 다른 인덱스에 매핑된다. 도 14를 참조하면, 셔플 함수에 의해 생성될 수 있는 인덱싱된 정렬이 도시되어 있다. 순방향 맵에 도시된 바와 같이 입력 데이터(즉 콘텐츠 칼럼) 내의 요소를 셔플링한 후, 입력 데이터(즉, 콘텐츠 칼럼)에 오름차순 정렬이 적용되며, 인덱스 칼럼 요소는 콘텐츠 칼럼에 종속된다. 도시된 바와 같은 두 개의 칼럼 내의 요소를 교환함으로써, 인덱싱된 정렬로부터 역방향 맵이 생성된다. 기본 매핑 함수는 맵 검증 프로세스(즉, 모든 요소에 대해 디코드(인코드(x)) = x)를 검증하는 단계)를 포함할 수 있다. 도 13 및 도 14에 도시된 실시형태는 n 개의 비트와 2n 요소를 사용하여 베이스 2에서 도출된 예를 나타낸다. 다른 실시형태에서, 테이블은 가능한 요소의 수가 chn이 되도록 임의의 베이스(ch) 내의 인덱스 값과 입력 데이터 값에 대해 도출될 수 있다.
다양한 실시형태에서, 순방향 매핑 및 역방향 매핑은 오프라인으로 구성되어 전체 테이블로서 데이터 변환 모듈(102)에 제공되거나, 관리자(104)로부터의 입력을 기반으로 생성될 수 있다. 예를 들어, 순방향 및 역방향 매핑은 오프라인으로 생성될 수 있지만, 인코딩을 위한 추가 난독화 복잡성을 제공하면서 데이터 변환 모듈(102)에 전체 매핑을 제공하기 위해 추가 오버헤드를 필요로 할 있다.
셔플 함수는, 셔플 프로세스를 검색하고 깨뜨리는 과정을 어렵게 하기에 충분한 깊이를 가질 수 있다. 예를 들어 8 비트 맵의 경우, 8 비트 맵 내의 요소 수는 28 또는 256이다. 따라서 8 비트 맵에 대한 테이블 공간은 256!, = 1.3122E+254이다. 이 커다란 테이블 공간은 셔플의 셔플을 감안할 때 달성될 수 있다. 예를 들어, 셔플링 프로세스는 여러 데이터 센터에 분산될 수 있으며, 하나의 데이터 센터는 두 번째 데이터 센터의 셔플링된 테이블을 재구성한다.
다양한 실시형태에서, 매핑 함수에 포함된 테이블은 4, 8 또는 16 비트 워드를 포함할 수 있다. 이러한 크기는 인코딩될 16 비트 워드를 효율적으로 이용할 수 있다. 그러나, 다른 실시형태에서, 본원에 개시된 방법은 임의의 비트 크기에 적용될 수 있다. 난독화의 관점에서, 상대방이 인코딩된 데이터 전송을 단순히 관찰함으로써 테이블 크기를 결정하는 것은 어려울 것이다. 또한, 관리자(104)로부터의 입력을 기반으로, 각각의 전송은 다른 크기의 비트 워드를 사용하여 인코딩될 수 있다.
이제 도 15를 참조하여 데이터 기반 난독화 전략을 설명한다. 입력 데이터, RNG 또는 다른 소스에 의해 구동되는 인코딩 함수를 구현하면, 난독화 함수의 난독화 복잡성이 증가할 수 있다. 인코딩 함수를 구동하는 데이터는 단일 프레임으로부터 샘플링되어, 각각의 프레임이 단독으로 또는 이전 프레임으로부터 샘플링될 수 있다.
데이터 기반 매핑 함수를 갖는 한 가지 방법은 각각의 테이블 항목에 인덱스를 오프셋하는 것이다. 예를 들어, 단일 값 오프셋은 입력 데이터를 기반으로 선택되고, 매핑 함수 내의 값에 적용될 수 있다. 도 15에서, 순방향 및 역방향 매핑에서 인덱스 4에 오프셋 값 = 3이 적용된다. 매핑에 적용된 오프셋을 나타내는 방정식은 다음과 같다.
오프셋_값= 3, x = 4.
오프셋_인코드는 인코드 인덱스 + 오프셋_값의 모듈로 합(modulo sum)에 대해 수행된다.
오프셋_인코드(4) = 인코드((4+3)%8) = 인코드(7) = 6, 여기서 x%y는 모듈로 y 내의 x의 값을 나타낸다.
오프셋_인코드는 오프셋_인코드(6) = (인코드(6)+8-오프셋)%벡터_요소_수로 평가된다.
이 경우 오프셋_인코드는 오프셋_인코드(6) = (디코드(6)+8-오프셋)%8 = (7+8-3)%8 = 12%8 = 4이다.
일부 실시형태에서, 전체 프레임에 대해 고정 오프셋을 사용하는 대신에, 오프셋은 프레임에 대한 다수의 변수의 함수일 수 있다. 주어진 값 x에 대한 오프셋은 다음과 같을 수 있다:
인코드(x) = '순방향 맵'[(x + 오프셋)%(('순방향 맵')의 크기], 여기서
오프셋 = (요소 인덱스 * 랜덤 드로)%('순방향 맵')의 크기) 및
x%y는 모듈로 y 내의 x의 값을 나타낸다.
이 함수는 요소 단위 및 프레임 단위로 각각의 전체 프레임의 각각의 요소에 대한 고유한 오프셋을 제공한다. 오프셋이 결정되면, 인코딩과 디코딩 함수는 도 13 내지 도 15에 도시된 것과 유사할 수 있다. 많은 기술들이 오프셋 항을 생성하기 위해 사용될 수 있다는 것에 주목하라. 일부 실시형태에서, 오프셋 항을 생성하기 위해 비선형 오프셋 함수가 사용될 수 있다. 예를 들어, 위 예시적인 방정식에 나타낸 바와 같이 모듈로 함수가 사용될 수 있다. 비선형 오프셋 함수를 사용함으로써, 고유 역방향 매핑을 가지지 않는 순방향 매핑이 생성될 수 있고, 난독화를 증가시킨다.
다수의 변수의 함수인 오프셋을 갖는 일 예가 16A 내지 도 16E에 도시되어 있다. 도 16A에 도시된 바와 같이, 메시지("hello")를 인코딩하기 위해, ascii-인코딩된 메시지가 생성되고 이진 코딩으로 확장된다. 메시지는 3 비트 데이터 기반 매핑을 위해 3 비트 청크(chunk)에서 차단된다. 3 비트 청크는 베이스 (10)으로 변환된 것으로 도시되어 있고, 인덱스 수는 각각의 청크에 대해 설정되며, 각각에 대한 오프셋이 계산된다. 오프셋은 다음 방정식을 통해 계산된다: 오프셋 = (랜덤 드로*인덱스)%테이블_크기(여기서 %는 모듈로 함수를 나타낸다). 값 (x + 오프셋)%테이블_크기가 계산되고, [(x+오프셋)%테이블_크기]를 찾기 위해 인코딩 테이블(도 16B에 도시됨)이 사용된다.
수신기에 의한 디코딩의 경우, 각각의 디코드[메시지 요소]를 발견하기 위해 디코딩 테이블(인코딩 테이블을 사용하여 생성되고 도 16B에 도시됨)이 사용될 수 있다. 인덱스 수는 수신기에서 각각의 3 비트 청크에 대해 설정되고, 오프셋(오프셋 = (랜덤 드로*인덱스)%테이블_크기)이 다시 계산된다. 값 x = (디코드[메시지 요소]+테이블_크기-오프셋)%테이블_크기가 계산되고, 값 x가 다시 3 비트 이진 표현으로 변환되며, 이는 다시 ascii로 변환된다. 도 16C의 테이블은 데이터 구동 맵 함수를 사용하여 도 16A에서 인코딩된 데이터를 디코딩하는 예를 도시하고 있다.
도 16D 및 도 16E의 테이블은 본원에 기술된 매핑 함수의 난독화 특징을 도시하고 있다. 두 테이블 모두 인코딩을 위한 제로 비트가 모두 포함된 메시지를 보여준다. 도 16D의 테이블에서, 29의 랜덤 드로 값이 인코딩을 위해 수신되고, 도 16E의 테이블에서, 랜덤 드로 값은 19이다. 다른 랜덤 드로 값의 결과로서, 원래 메시지에 대해 다른 오프셋이 계산되고, 따라서 원래 메시지가 동일하더라도 다른 인코딩된 출력이 생성된다.
일부 구현형태에서, 순방향 매핑 및 역방향 매핑 함수로 비대칭 테이블이 구현될 수 있다. 비대칭 테이블은 n 개의 입력 비트에 대해 m 개의 출력 비트로 함수를 매핑하기 위해 사용될 수 있으며, 여기서 n > m이다(예를 들어, 일대다(one-to-many) 매핑). 다음은 2 비트 입력, 3 비트 출력 매핑의 예이다.
'순방향 맵' = {010 100 011 101 001 111 000 110}
'역방향 맵' = {11 10 00 01 00 01 11 10}.
도 17A 내지 도 17C를 참조하면, 비대칭 테이블을 사용하여 메시지를 인코딩하고 디코딩하는 종단간(end-to-end) 도면이 도시되어 있다. 도 17A에서, ascii 메시지는 이진 코딩으로 확장되어 2 비트 청크로 분리된(그리고 베이스 10로 변환됨) 것으로 도시되어 있다. 각각의 인덱스는 (2*입력 + (x%2))로 계산된다. 그리고 나서 인코드[인덱스]를 찾기 위해 인코딩 테이블이 사용되며, 인코딩된 데이터를 생성한다. 결과적으로 인코딩된 데이터는 3 비트 시퀀스로 분할된 것으로 도시되어 있고, 각각의 시퀀스는 원래 데이터의 2 비트 시퀀스와 일치한다. 도 17B는 주어진 값에 대해 생성된 인코딩 테이블과 디코딩 테이블을 도시하고 있다.
디코딩의 경우, 도 17C에 도시된 바와 같이, 각각의 디코드[메시지 요소]를 찾기 위해 디코딩 테이블이 사용된다. 각각의 인코딩된 값은 디코딩된 후 다시 2 비트 이진 표현으로 변환된 다음 다시 ASCII로 변환된다. 데이터를 인코딩하기 위해 사용된 인코딩 함수에 디코딩 함수를 매핑하기 위해 디코딩 테이블이 생성된다. 디코딩 테이블은 예를 들어 외부 서버(예를 들어, 아래에서 설명하는 바와 같은 정책 서버)에 의해 생성될 수 있다. 이 방법에서 데이터 기반 코딩을 구동하기 위해 사용되는 외부 데이터는, 도 16A 내지 도 16E의 데이터 기반 맵과 비교하여, 인코딩에만 필요하며, 이는 인코딩 및 디코딩 함수 모두에 대한 외부 구동 데이터에 대한 지식을 필요로 한다.
도 18을 참조하면, 인코딩과 디코딩 테이블 생성의 예를 도시하기 위해 두 개의 추가적인 비대칭 테이블이 도시되어 있다. 예에서, 콘텐츠 칼럼이 셔플링된 후, 콘텐츠 칼럼에 오름차순 정렬이 적용되며, 입력 및 인덱스 칼럼은 콘텐츠 칼럼에 종속된다. 그리고 나서 칼럼의 명칭을 바꿈으로써, 인덱싱된 정렬에서 역방향 맵이 생성된다. 콘텐츠 칼럼은 인덱스 칼럼이 되고 입력 칼럼은 콘텐츠 칼럼이 된다. 각각의 예에서, 결과적인 테이블(역방향 맵)은 원래의 인코딩 테이블(순방향 맵)에 대한 디코딩 테이블이다.
입력은 입력에 대해서 단지 2 비트이기 때문에, 3 비트, 8 요소 출력으로 매핑될 수 있는 네 개의 유일한 요소가 존재한다. 이는 이 실시형태에서 각각의 입력 요소가 두 개의 출력으로 매핑되는 것을 가능하게 한다. 경우 1에서, 이는 각각의 입력 요소가 발생할 때마다 반복함으로써 구현될 수 있다(예를 들어, 00, 00, 01, 01 등). 경우 2에서, 이는 입력 요소의 전체 시퀀스를 반복함으로써 구현될 수 있다(예를 들어, 00, 01, 10, 11, 그리고 다시 00으로). 다양한 실시형태에서, 모든 유형의 입력 비트 시퀀스가 유사한 방식으로 사용될 수 있다.
수학적 관점에서, 경우 1에 대해, 도 18의 입력에서 인덱스로의 데이터 구동 변환은 인덱스 = (입력*2 + (x%2))이고, 여기서 x는 데이터 기반 입력이고 일반적으로 인덱스 = 입력*2m-n + (x%2m-n)이다.
비대칭 테이블은 이들과 관련된 오버헤드를 가질 수 있는데, 그 이유는 입력 비트의 수가 항상 인코딩된 비트의 수보다 작기 때문이다. 오버헤드는 백분율로 측정된, 오버헤드 = (출력 비트 - 입력 비트)/입력 비트로 측정된다. 예를 들어, 8 입력 비트와 10 출력 비트의 경우, 오버헤드는 25%이다. 오버헤드 비율 범위는 입력 비트와 출력 비트의 수에 따라 0%에서 50%까지 다양할 수 있다.
도 17 및 도 18에서 설명한 바와 같이, 비대칭 테이블은 일대다(n-to-m) 인코딩 및 다대일(m-to-n) 디코딩을 해결하는 어려움을 기반으로 입력 데이터를 난독화하기 위해 사용되었다. 대안은 오류 제어 코딩에 m-n 비트를 제시하는 것이다. 사용될 수 있는 오류 제어 코드의 두 가지 예는 BCH 코드와 LDPC 코드이다. 본 개시는 BCH 코드의 사용을 설명하지만, 모든 유형의 오류 코딩 방식이 사용될 수 있음을 알아야 한다.
오류 제어 코딩은 OCTS(최적화 코드 테이블 시그널링) 테이블을 사용하여 구현될 수 있으며, 테이블 생성은 이진 BCH 코드를 기반으로 한다. BCH 코드는 (n, k, t) 코드로 설명되며, 여기서 n은 비트 단위의 블록 길이, k는 정보 비트 수, t는 정정될 수 있는 오류 내의 비트의 수이다. n 블록 길이는 길이가 2n인 OCTS 테이블의 크기를 설정한다(즉, n=7인 경우, OCTS 테이블에는 128 개의 항목이 있고, n=15인 경우, 32768 개의 항목이 있다).
n k t 2n 코드율
(k/n)
정정율
(t/n)
7 4 1 128 0.571 0.14286
15 11 1 32768 0.733 0.06667
15 7 2 32768 0.467 0.13333
15 5 3 32768 0.333 0.20000
도 19는 BCH 인코딩을 위한 부분 인코딩/디코딩 테이블을 도시하고 있다. 비대칭 테이블의 이전 예는 2 비트만 인코딩했지만, 전체 3 비트 출력 테이블을 생성했다. BCH 인코딩은 전체 7 비트 출력을 생성하지만, 전체 128 요소 테이블이 아닌 16 요소 테이블만 생성한다. 도 20A는 도 19의 비대칭 테이블을 사용하는 손상된 데이터 스트림의 정정을 도시하고 있다.
LDPC 코드 구현은 유사할 수 있고, 이는 테이블 룩업 대신 계산으로 수행된다. 오류 정정 능력은 오류 내의 수신된 비트의 수를 추정하기 위해 수신기에 의해 사용될 수 있다. 도 20B에 도시된 프로세스는, 오류 정정된 디코딩된 메시지를 인코딩하고, 수신된 비트에 대해 로컬 추정치를 구별함으로써 원래 메시지의 로컬 추정치를 생성하는 것이다. 오류의 수가 오류 정정의 한계 내에 있는 한 추정은 정확하다. 정정되지 않은 오류의 경우, 추정치는 높을 수는 있지만, 오류 수를 줄이기 위해 코드율을 변경할지 여부를 결정하기 위해 사용되는 경우 여전히 유용한다.
다시도 12A를 참조하면, 데이터를 난독화하기 위해 구현될 수 있는 또 다른 예시적인 함수는 화이트닝 함수일 수 있다. 화이트닝 함수는 임의의 인코딩된 데이터 스트림의 통계를 균일 분포 확률 함수로 변환하여 통계적 측정치를 화이트닝하기 사용될 수 있다. 화이트닝을 위한 한 가지 기술은 난독화될 스트림의 길이와 동일한 의사 랜덤하게 선택된 비트 시퀀스를 생성하고, 랜덤하게 선택된 비트와 화이트닝될 데이터의 비트 단위 XOR을 생성하는 것이다. 출력을 화이트닝하기 위한 또 다른 기술은 인코딩을 위해 각각의 심볼을 나타내는 데 사용되는 비트를 계속 추적함으로써 일대다 매핑을 사용하여 달성될 수 있다. 많은 매핑 중 하나를 사용하여 심볼을 인코딩하는 것이 비트 스트림이 덜 균일하게 보이게 하는 경우, 대안적인 매핑 중 하나가 대신 선택될 수 있다.
이제 도 21A 및 도 21B를 참조하면, 화이트닝 함수의 예시적인 구현형태가 도시되어 있다. 도 21A는 화이트닝 난독화 데이터의 생성 방법을 도시하고, 도 22는 데이터 입력을 난독화하기 위해 데이터 입력에 화이트닝 난독화 데이터를 적용하는 방법을 도시하고 있다. 일 실시형태에서, 이력 버퍼의 초기 로드는 헤더 정보로부터 도출된다. 초기 로드는 헤더 정보 전체 또는 헤더 정보의 부분 집합으로 구성될 수 있다. 초기 로드는 헤더 내에 나타나는 비트와 동일한 시퀀스로 로딩되거나 스크램블링될 수 있다(즉, 이력 버퍼 내의 초기 로드와 헤더 정보 간의 정확한 상관 관계는 요구되지 않는다). 또한, 초기 로드는 난독화되지 않은 헤더 정보에서 도출될 수 있으며, 이는 화이트닝 함수가 적용되기 전에 헤더 정보의 역난독화를 요구함으로써 보안을 강화할 수 있다. 도 21A 및 도 21B에 도시된 예에서, 초기 로드는 헤더 정보(DEEA DBC5 BAC1 1AA1)로부터 64-비트로 구성된다. 버퍼는 하나 이상의 헤더 데이터 속성(예를 들어, 시간)에서 도출된 다른 값을 더 포함할 수 있다.
PRNG는 관리자(104)에서 초기화되고, 디코더 관리자(154)에서 복사됨으로써, 각각의 PRNG는 동일한 값의 시퀀스(도 21A 및 도 21B에서 PRNG_드로라고 지칭함)를 생성한다. 수신기는 헤더 내에 제공된 정보를 기반으로 송신기에서 PRNG에 대해 사용된 시드 값을 결정할 수 있다. 도 21B에 도시된 바와 같이, 헤더 데이터의 일부(예를 들어, 랜덤 드로(random draw; "RD") 데이터)는 PRNG에 대한 입력으로서 사용될 수 있다. 다시 말해서, 헤더 데이터의 비트는 난수 생성 프로세스를 구동할 수 있다. 또 다른 실시형태에서, 단일 PRNG가 더욱 긴 비트 시퀀스를 생성하기 위해 다수의 랜덤 드로가 사용될 수 있다. 또 다른 실시형태에서, 각각의 PRNG에 대해 동일한 시드와 함께 다수의 PRNG가 사용될 수 있다. 또 다른 실시형태에서, 각각 다른 시드와 함께 다수의 PRNG가 사용될 수 있다.
화이트닝 함수는 이력 버퍼(DEEA)의 첫 번째 블록 및 PRNG_드로(A019)의 첫 번째 블록을 취하고 XOR 함수를 적용함으로써 시작된다. 이 예에서 결과는 7EF3이다. 다른 실시형태에서, 각각의 버퍼 내의 첫 번째 블록 이외의 블록은 함께 XOR될 수 있고, 본 실시형태는 단순함을 위해 각각의 첫 번째 블록의 사용을 도시하고 있다. 결과 값 7EF3은 이후 데이터 시퀀스와 XOR된다.
새롭게 생성된 값(7EF3)은 이력 버퍼의 끝에 추가되는 반면, 다른 값들은 위로 이동하고 첫 번째 값(DEEA)은 제거된다. 본 기술 분야의 숙련자는 이력 버퍼가 원형 버퍼로서도 구현될 수 있음을 알 것이며, 여기서 새로 생성된 값은 가장 최근에 사용된 값을 대체하고, 사용되는 다음 값을 지시하는 포인터는 버퍼 내의 다음 값을 가리키도록 간단히 업데이트된다. 또한, 사용된 PRNG_드로로부터의 값(A019)이 제거된다. 이어서 프로세서는 첫 번째 값(현재의 1AA1과 BC76)이 함께 XOR되는 과정을 반복한다. 이 프로세스는 PRNG_드로의 모든 값이 사용될 때까지 반복된다.
다양한 실시형태에서, 프로세스는 상기한 바와 같이 한 번에 16 비트가 아닌 임의의 크기의 데이터에 대해 실행될 수 있다. 프로세스는 32 비트 청크, 12 비트 청크 등에 대해 실행될 수 있다. 결국, 홀수의 비트가 남아 있는 경우(한 번에 16 비트가 사용될 때 남은 16 비트 미만) 데이터는 비트 단위로 처리될 수 있다.
디코더는 동일한 시드 값(도 21A 및 도 22B의 예에서, 헤더로부터 획득된 매핑된 RD)을 사용하여 의사-랜덤 값의 동일한 시퀀스를 생성한다. 디코더에서 생성된 의사 랜덤 값의 시퀀스는 또 다른 XOR 함수를 사용하여 수신된 데이터와 병합되어, 원래의 데이터 스트림을 드러낸다.
다시 도 12A를 참조하면, 데이터를 난독화하기 위해 구현될 수 있는 또 다른 예시적인 함수는 전치 함수(본 개시에서 팩 함수(pack function)라고도 지칭함)일 수 있다. 이러한 함수는 각각의 영숫자 문자의 첫 번째 비트가 0인 ascii-인코딩된 텍스트의 패턴을 방해하는 상황에서 사용될 수 있다. 일례로서, 도 22A 및 도 22B를 참조하면, 8 번째 비트를 패킹하기 위한 제 2 소스의 두 가지 예가 도시되어 있다. 첫 번째 예는 인코딩할 메시지의 마지막 바이트이며, 두 번째 예는 송신기와 수신기 간의 통신을 위한 프레임 수의 역할을 하기 위해 도입된 바이트이다. PRNG와 같은 다른 패킹 데이터 소스가 사용될 수 있다.
도 22A 및 도 22B의 기본 예에서, 일반적인 프로세스는 ascii 인코딩의 비트 0-6을 패킹된 메시지의 비트 0-6으로 이동시키고, ascii 인코딩의 비트 56을 패킹된 메시지의 비트 위치 7로 이동시키는 것이다. 다시 말해서, ascii 인코딩의 처음 7 비트가 취해지고, 그리고 나서 7 번째 바이트의 첫 번째 비트가 삽입된다. 이 프로세스는 ascii 인코딩(일차 소스)에서 다음 7 비트를 가져온 다음 7 번째 바이트(이차 소스)에서 다음 비트를 가져오는 과정을 반복한다.
인코딩의 기본 단위가 (a+b) 비트 길이이고, a 비트가 일차 소스로부터 도입되며 b 비트가 이차 소스로부터 도입되는 형태(a, b, c)의 표기가 도시되어 있다. 도 22 내지 도 25의 실시형태에서 a+b는 모든 예에서 8과 같고, 다른 실시형태에서는 본원에 기술된 알고리즘들과 함께 다른 비트 길이가 사용될 수 있다는 것에 주목하라. 예를 들어, a와 b의 값은 임의로 선택될 수 있다. 식별자 c는 패킹된 비트 또는 비트들에 대한 시작 비트 위치를 정의한다(이 예에서 베이스 인덱스로 0을 가짐). c 값은 (0, ..., a+b-1)의 범위 내에 있어야 한다. 도 22A 및 도 22B에서, a=7, b=1 및 c=7이다. 도시된 바와 같이, 문자 'e'가 7 번째 위치에 도시되어 있는데, 이는 문자 'e'를 나타내는 비트가 전치 함수에서 사용될 것이라는 것을 나타낸다. 'e'의 첫 번째 비트는 메시지의 첫 번째 문자의 7 번째 위치(a = 7이므로)로 이동하고, 'e'의 두 번째 비트는 메시지의 두 번째 문자의 7 번째 위치로 이동한다, 등등. 전치되지 않는 각각의 비트는 단순히 전치된 비트를 위한 공간을 만들기 위해 한 지점 아래로 이동된다.
도 23A 및 도 23B에, 8 번째 비트가 인덱스 7 이외의 위치에 패킹되는 예가 도시되어 있다. 도 23A의 실시형태에서, 패킹된 비트는 인덱스 4에만 배치된다(c = 4이므로). 다시 말해서, 전치될 문자 'e'의 비트는 각각의 바이트의 4 번째 위치로 이동된다. 도 23B에서, 패킹된 비트는 순차적 인덱스 위치(c=0, 그리고 1, 그리고 2, 등)에 저장된다. 다시 말해서, 각각의 바이트로 전치될 문자 'e'의 하나의 비트는 바이트의 다른 정의된 위치에 배치된다. 이 패턴은 순차적인 것으로 표시되며, 다른 실시형태에서, 패턴은 임의의 방식으로 랜덤화될 수 있다.
도 24A 및 도 24B에는, 상이한 수의 비트가 첫 번째 또는 일차 소스로부터 인출되는 예들이 도시되어 있다. 도 24A의 실시형태에서, 일차 소스로부터 6 개의 비트가 도입되므로, 이차 소스로부터 2 비트가 도입된다. 다시 말해서, 다른 예와 비교하여 'y' 세그먼트의 비트와 'e' 세그먼트의 비트가 사용된다. 두 개의 비트가 각각의 바이트로 변환된 것으로 나타나 있다. 도 24B에서, 8 개 비트의 각각의 시퀀스에 대해, 5 개, 6 개 또는 7 개 비트가 일차 소스에서 도입된다(즉, 도입된 비트 수는 하나의 시퀀스에서 다음 시퀀스로 변할 수 있다). 예를 들어, 첫 번째 바이트에는 두 개의 비트가 도입되고, 두 번째 바이트에는 하나의 비트, 세 번째 바이트에는 두 개의 비트가 도입된다, 등등. 이 예에서 전체 데이터 패킷에 대해 전치된 총 비트 수는 비트가 검색되는 마지막 두 개의 바이트의 비트 수와 같아야 한다는 것에 주목하라. 도 25는 팩 기능을 명시하기 위한 추가적인 자유도를 나타낸다(전치된 비트가 각각의 바이트 내에 삽입되는 곳을 정의하는 c의 값을 변경함). 도 25는 c의 값이 시간에 따라 변하는 스트리밍 함수로서의 함수를 도시하고 있다.
다음의 테이블은 (a, b, c) 형식의 사용과 스트리밍 형식의 사용을 나란히 나타내고 있다. 표의 왼쪽은 (a, b, c) 형식을 나타내고, 여기서 각각의 행은 특정 팩 함수를 식별하는 연속적인 (a, b, c) 값을 명시한다. 오른쪽의 팩 스트리밍 스케줄 영역도 나타나 있다. 이는 다음과 같이 해석된다: 첫 번째 행에서, 일차 소스로부터 0 비트를 가져와서 출력 버퍼에 저장하고, 이차 소스에서 2 비트를 가져와서 비트를 출력 버퍼에 연결한다. 이는 팩 스트리밍 스케줄이 모두 소모될 때까지 모든 행에 대해 계속된다. (a, b, c) 형식으로부터 팩 스트리밍 스케줄로 변환하는 매핑 함수는 가운데 칼럼에서 식별된다.
(a, b, c) 형식 팩 스트리밍 스케줄
일차 소스 계산기 이차 소스 일차 소스 이차 소스
1 6 2 0 c1 b1 0 2
2 7 1 1 a1-c1+c2 b2 7 1
3 6 2 3 a2-c2+c3 b3 8 2
4 5 3 3 a3-c3+c4 b4 7 3
5 6 2 4 a4-c4+c5 b5 6 2
6 6 2 5 a5-c5+c6 b6 7 2
7 5 3 5 a6-c6+c7 b7 6 3
8 7 1 7 a7-c7+c8 b8 7 1
a8-c8 0
아래의 테이블은 추가적인 복잡성을 위해 데이터 기반 함수를 추가하는 구현형태를 나타내고 있다. 이 구현형태의 경우, (a, b, c) 포맷된 팩의 전체 집합은 팩 함수 자체의 외부에 있는 변수의 함수로 수정될 수 있다.
이 예에서, 데이터 기반 팩 변경은 블록 내에 유지되어, 따라서 자원의 상위 레벨의 관리가 동적인 하위 레벨의 데이터 구동 변경에 의해 영향을 받지 않는다. 예를 들어, 아래 표에서, 4 개 (a, b, c) 값의 그룹은 블록으로 취급되고, 블록 내의 전체 a에 대한 합은 24이며 블록 내의 전체 b에 대한 합은 8이므로, 바이트 지향의 관리와 잘 어울린다.
a b c 일차 소스 계산기 이차 소스 일차 소스 이차 소스
1 6 2 0 c1 b1 0 2
2 7 1 1 a1-c1+c2 b2 7 1
3 6 2 3 a2-c2+c3 b3 8 2
4 5 3 3 a3-c3+c4 b4 7 3
24 8 (4 개 항목의 첫 번째 블록의 합)
5 6 2 4 a4-c4+c5 b5 6 2
6 6 2 5 a5-c5+c6 b6 7 2
7 5 3 5 a6-c6+c7 b7 6 3
8 7 1 7 a7-c7+c8 b8 7 1
24 8 (4 개 항목의 두 번째 블록의 합)
a8-c8 0
데이터 기반 팩을 구현하기 위한 한 가지 후보 전략은 다음을 아래에 도시된 베이스 테이블로 설정하고, 베이스에 대한 변경을 구현하는 것이다. 파생은 다음과 같을 수 있다.
- 기본 테이블로 표시된 네 개의 항목 블록에 대한 설계. 이 테이블은 데이터 기반 테이블의 (a, b) 쌍이 집합 ((7, 1), (6,2), (5,3))로부터의 것이 되도록 설계된다. 이는 모든 베이스 테이블 (a, b) 쌍을 (6, 2)로 설정하고 쌍을 (+1, -1), (0, 0) 또는 (-1, +1)로 수정함으로써 달성된다.
- 데이터 기반 팩 테이블 외부에서 생성된 3 비트 이진 워드로 구동되도록, 팩 테이블의 여덟 가지 변형에 대한 설계.
- 블록 전체에 걸친 a의 합이 24로 유지되고 블록 전체에 걸친 b 합이 8로 유지되도록 설계.
- 각각의 (a, b) 쌍의 합이 8이 되도록 설계. 이러한 특정 경우, a 또는 b 중 하나에 대해 1의 변경으로 감소되고 각각 b 또는 a에 대한 -1의 변경에 의해 달성되어야 한다.
- c 값이 (0, a+b-1) 범위에 있도록 설계.
다음 테이블은 이러한 제약을 사용하여 작성된다.
Figure 112018131796864-pct00001
독자적인 전략으로서, 팩 함수는 비트를 인코딩된 스트림으로 삽입하지만 비트의 순서는 변경하지 않는다. 따라서 위의 전략은 데이터의 순서를 뒤바꾸는 함수와 쌍을 이룰 수 있고, 이는 특히 팩 함수 내의 요소의 임의의 시퀀스와 관련하여 전치된 요소의 크기가 뛰어난 경우, 난독화 방식을 훨씬 더 강력하게 한다.
다시 도 12A를 참조하면, 입력 난독화 함수 (404)는 프리픽스 고유 순방향 및 역방향 매핑 함수일 수 있다. 프리픽스 고유 순방향 및 역방향 맵의 목적은 하드웨어 고유의 데이터 변환 모듈 플랫폼 그룹을 제공하는 능력을 설정하는 것이다. 상기한 바와 같이, 예를 들어 도 13에, 순방향 맵 및 역방향 맵 쌍이 도시되어 있다. 매핑은 프리픽스 순방향 및 역방향 맵을 포함하도록 확장될 수 있다. 예를 들어, 도 26에 도시된 바와 같이, 프리픽스 순방향 맵 및 프리픽스 역방향 맵이 유사하게 생성될 수 있다.
도 26의 위쪽의 네 개의 테이블은, 26)는 새로운 쌍의 순방향 및 역방향 맵을 생성하기 위해 컨볼빙될 수 있으며, 컨볼빙 프로세스는 인덱스를 콘텐츠로 매핑하기 위해 순방향 매핑을 사용하고, 프리픽스 순방향 맵 내의 인덱스로서 콘텐츠를 사용하기 위해 프리픽스 맵을 사용하는 것이다. 순방향 맵은 프리픽스 순방향 맵에 컨볼빙되고, 역행해서 프리픽스 역방향 맵은 역방향 맵에 컨볼빙된다.
이제 도 27A를 참조하면, 예시적인 실시형태에 따라, 입력 데이터를 인코딩하는 프로세스(500)의 흐름도가 도시되어 있다. 프로세스(500)는 예를 들어 입력 데이터 난독화 모듈(108)에 의해 실행될 수 있다. 프로세스(500)는 인코딩될 입력 데이터를 수신하는 단계(502) 및 입력 데이터 관리자로부터의 입력을 수신하는 단계(504)를 포함한다. 일 실시형태에서, 입력 데이터 관리자로부터의 입력은 RNG로부터의 하나 이상의 랜덤하게 선택된 값을 포함한다. 예를 들어, 관리자로부터의 입력은, 데이터를 난독화하기 위해 사용할 하나 이상의 함수의 선택 및 함수에 의해 사용될 하나 이상의 랜덤하게 선택된 값을 포함할 수 있다. 값은 예를 들어 입력 데이터 내에 삽입하거나, (예를 들어, XOR 함수를 통해) 입력 데이터와 결합하거나, 또는 다르게 하기 위한 비트 스트링일 수 있다.
프로세스(500)는 입력 데이터에 적용할 다수의 함수를 식별하는 단계(506) 및 입력 데이터 관리자의 입력과 함수를 사용하여 데이터를 난독화하는 단계(508)를 포함한다. 예를 들어, 블록(508)은 일반적으로 제 1 함수 및 입력 데이터 관리자로부터의 입력을 통해 입력 데이터를 난독화한 후, 추가 난독화를 위해 난독화된 데이터를 제 2 함수에 제공하는 단계를 포함할 수 있다. 이는 임의의 수의 함수에 대해 계속될 수 있다. 프로세스(500)는 헤더 데이터와의 스크램블링 및 연결을 위해 또 다른 모듈에 난독화된 입력 데이터를 제공하는 단계(510)를 더 포함한다. 상기한 바와 같이, 입력 데이터와 헤더 데이터는 두 개의 다른 모듈에서 별도로 난독화된 후 제 3 모듈에서 결합되고 스크램블링된다. 일부 실시형태에서, 헤더 데이터와 입력 데이터 중 하나 또는 둘 모두는 디코더가 수신기에서 데이터를 디코딩하기 위해 필요한 정보를 포함할 수 있다.
이제 도 27B를 참조하면, 예시적인 실시형태에 따라, 입력 데이터를 디코딩하는 프로세스(550)의 흐름도가 도시되어 있다. 프로세스(550)는 예를 들어 입력 데이터 역난독화 모듈(160)에 의해 실행될 수 있다. 프로세스(550)는 헤더 역난독화 모듈로부터 분할된 입력 데이터를 수신하는 단계(552)를 포함한다. 상기한 바와 같이, 헤더 역난독화 모듈은 송신기로부터 인코딩된 데이터 패킷을 수신할 수 있고, 인코딩된 데이터를 인코딩된 입력 데이터 부분과 인코딩된 헤더 데이터 부분으로 분할하도록 구성될 수 있다. 블록(552)은 디스크램블링 모듈 및 분할 모듈에 반환된 인코딩된 입력 데이터 부분을 수신하는 단계를 포함할 수 있다.
프로세스(550)는 입력 데이터를 난독화하기 위해 사용되는 하나 이상의 파라미터를 식별하는 단계(554), 인코딩된 입력 데이터에 적용할 다수의 함수를 식별하는 단계(556), 및 함수를 사용하여 데이터를 역난독화하는 단계(558)를 더 포함한다. 블록(554, 556, 558)은 일반적으로 데이터를 난독화하는 프로세스의 역을 나타낼 수 있다. 예를 들어, 블록(554, 556, 558)은 일반적으로 송신기가 데이터를 인코딩한 방법을 식별하고 송신기가 사용한 프로세스를 반전시키는 단계를 포함한다.
일부 실시형태에서, 패딩 함수는 데이터 난독화 동안 사용될 수 있다. 패딩 함수는 일반적으로 데이터 세트가 충분한 복잡도를 위해 충분히 크지 않을 때(즉, 적용된 난독화 함수의 수에 관계없이 데이터가 취약할 만큼 데이터 세트가 작거나, 데이터 세트가 특정 함수에 대한 불편한 길이일 때) 사용될 수 있다. 패딩 함수는 데이터에 대해 임계 값에 도달할 때까지 랜덤 값으로 버퍼를 채울 수 있다. 예를 들어, 난독화될 데이터 패킷의 데이터 길이가 200 바이트와 같은 최소값보다 작은 경우, 데이터는 의사랜덤 값으로 패딩되어 데이터 패킷을 최소 길이로 채운다. 추가된 의사랜덤 값이 직접 노출되지 않도록 보장하기 위해, 일반적으로 추가 난독화 함수보다 먼저 패딩이 이루어질 수 있다.
패딩 함수가 사용될 때, 데이터 전송의 수신기는 데이터가 패딩되었는지 여부를 결정한다. 예를 들어, 현재의 프레임 크기가 헤더 정보의 일부로서 전송된 데이터 크기 값보다 큰 경우, 비트 크기의 차이는 데이터에 추가된 패딩된 비트의 수를 나타낼 수 있다. 예를 들어, 1300 바이트 워드가 수신기에 의해 수신되고 데이터 크기 값이 1233인 경우, 수신기는 67 바이트 패딩이 데이터에 추가되었다고 결정할 수 있다. 이후, 데이터 전송의 마지막 67 바이트는 데이터 역난독화 전에 무시된다. 일 실시형태에서, 패딩된 데이터는 데이터의 끝에 추가될 수 있고, 다른 실시형태에서, 패딩된 비트는 수신기가 어느 비트가 패딩된 비트인지를 구별할 수 있는 한 임의의 위치에 추가될 수 있다.
이제 도 28A 및 도 28B를 참조하여, 송신기(100)에 의해 수신기(150)로 전송될 데이터를 난독화하기 위한 결합 및 스크램블링 프로세스를 설명한다. 위에서 개괄적으로 설명한 바와 같이, 전송될 데이터 패킷에 대한 헤더 데이터와 입력 데이터는 다양한 함수를 사용하여 별도로 난독화될 수 있다. 헤더 난독화 모듈(110)과 입력 데이터 난독화 모듈(108) 각각은 개별적으로 데이터를 난독화하고 전송을 위해 데이터를 제공할 수 있다. 그러나, 데이터가 전송되기 전에, 헤더 데이터와 입력 데이터가 함께 결합되고, 연결되고, 스크램블링되는 제 3 난독화 단계가 발생할 수 있다. 도 28A는 (예를 들어, 헤더 정보 관리자(126)와 유사한) 관리자(602)로부터 데이터와 입력을 수신하도록 구성된 데이터 병합 모듈(112)을 도시하고 있다. 관리자(602)로부터의 입력은 일반적으로 헤더 데이터의 난독화와 관련된 파라미터 및 다른 정보를 포함할 수 있으며, 이는 수신기가 데이터를 역난독화하기 위한 하나 이상의 함수 또는 파라미터를 결정하는 것을 도울 수 있다.
데이터 병합 모듈(112)은 일반적으로 연결 모듈(604) 및 스크램블링 모듈(606)을 포함할 수 있다. 연결 모듈(604)은 일반적으로 두 개의 데이터 세트를 결합하도록 구성될 수 있고, 스크램블링 모듈(606)은 일반적으로 두 개의 데이터 세트의 비트가 뒤얽히도록 두 개의 데이터 세트의 비트를 함께 스크램블링한다. 스크램블링 모듈(606)은 아래에서 설명하는 바와 같이 임의의 수 또는 유형의 스크램블링 함수를 구현할 수 있다. 두 개의 데이터 세트로부터의 조합된 비트를 난독화하기 위해 임의의 수의 다양한 함수가 사용될 수 있다는 것을 알아야 한다. 데이터 병합 모듈(112)이 데이터를 병합하기 위한 두 개의 모듈(604, 606)을 보여주고 있지만, 다양한 실시형태에서 데이터 세트를 병합하기 위해 임의의 수의 다양한 함수가 사용될 수 있다는 것을 알아야 한다.
도 28B를 참조하면, 데이터 분할 모듈(158)은 송신기(100)로부터 입력된 인코딩된 데이터를 수신하도록 구성된다. 데이터 분할 모듈(158)은 수신된 데이터를 디스크램블링한 다음 디스크램블링된 데이터를 헤더 데이터 부분과 입력 데이터 부분으로 분할하도록 구성된다. 데이터 분할 모듈(158)은 디스크램블링 모듈(652)과 분할 모듈(654)을 포함하는 것으로 도시되어 있다. 디스크램블링 모듈(652)은 하나 이상의 미리 결정된 파라미터를 기반으로 데이터를 디스크램블링할 수도 있다. 예를 들어, 파라미터는 송신기(100)가 데이터 송신 프로세스를 시작하기 전에 정책 서버로부터 수신된 미리 결정된 파라미터일 수 있다. 데이터를 디스크램블링한 후, 분할 모듈(654)은 데이터를 헤더 데이터 부분과 입력 데이터 부분으로 분할하도록 구성된다.
이제 도 29 내지 도 34를 개괄적으로 참조하여, 두 개의 데이터 세트(상기한 바와 같은 헤더 데이터 세트와 입력 데이터 세트)를 연결하고 스크램블링하기 위한 다양한 함수를 더욱 상세하게 설명한다. 헤더 데이터와 입력 데이터가 개별적으로 난독화된 후, 제 3 모듈은 헤더 데이터와 입력 데이터를 결합하고, 전송할 단일 데이터 패킷으로서 데이터를 난독화함으로써 추가의 난독화를 추가할 수 있다. 본 개시에 기술된 바와 같이, 헤더 데이터와 입력 데이터를 함께 난독화하는 한가지 방법은 두 개의 데이터 세트의 비트를 함께 단일 데이터 세트로 스크램블링하는 것이다. 일부 실시형태에서, 스크램블링의 순서는 순방향 매핑 함수 또는 데이터의 연속적인 스왑을 수행하기 위해 사용되는 랜덤하게 생성된 값(예를 들어, RNG 값)의 테이블 중 하나 또는 둘 모두에 의해 구동될 수 있다. 수신기는 이후, 데이터를 입력 데이터와 헤더 데이터로 분할하기 전에 데이터를 디코딩하기 위해, 벡터로 정의된 역방향 매핑 함수 또는 랜덤하게 생성된 값의 테이블을 사용할 수 있다.
데이터 병합 프로세스는 일반적으로, 전송될 인코딩된 데이터 스트림에 또 다른 모호함의 계층을 추가한다. 프로세스의 스크램블링 부분은 임의의 개수 또는 크기의 비트(예를 들어, 비트, 바이트, 2 바이트 등에 의한 스크램블링 데이터) 상에서 수행될 수 있다. 비트 스크램블링에 대한 비트 레이트와 관련하여 비트 전치에 대한 레이트가 뛰어난 경우, 난독화의 복잡성은 증가한다.
연결 함수는 OCTS 헤더 데이터 요소를 특정 순서로 연결하는 단계와 OCTS 헤더 데이터를 난독화된 입력 데이터에 연결하는 단계를 포함할 수 있다. OCTS 헤더 데이터는 상기한 바와 같이 헤더 데이터 난독화 모듈에서 생성되고, 헤더 데이터와 입력 데이터의 연결은 스크램블링 함수에 앞서 수행된다. 스크램블링 이전에, OCTS 헤더 데이터는 입력 데이터를 직접 이끌고 가거나 따라간다. 헤더 데이터가 입력 데이터를 이끌고 가면, 헤더 데이터의 처리가 수신되는 즉시 시작할 수 있고, 따라서 처리하기 전에 전체 정보 프레임이 도착하기를 기다릴 필요가 없으므로 대기 시간이 단축된다. TCP/IP 프로토콜에서와 같이 프레임이 완전히 도착할 때까지 프레임을 처리할 수 없는 경우, 헤더 데이터가 입력 데이터를 따라가고, 처리 중에 데이터를 복사하기 위해 memcopy 함수가 사용된다.
스크램블링 함수는 복잡성과 프레임 요소 도착 시간에 대해 조정될 수 있다. 예를 들어, 1500 바이트 프레임의 경우, 바이트 단위로 스크램블링될 수 있는 방법의 수는 1500!이며, 비트 단위로 스크램블링될 수 있는 방법의 수는 (8*1500)!이며, 2 바이트 단위로 스크램블링될 수 있는 방법의 수는 (1500/2)!이다.
인코더와 디코더가 사용할 수 있는 스크램블링 및 디스크램블링 함수는 상기한 순방향 매핑 및 역방향 매핑 함수와 유사할 수 있다. 예를 들어, 스크램블링 및 디스크램블링 함수는 벡터 쌍으로 표현될 수 있다. 도 29를 참조하면, 27 개의 요소(6 개는 헤더 요소 및 21 개는 입력 데이터 요소)를 갖는 데이터 프레임에 대한 예시적인 스크램블링 함수가 도시되어 있다. 각각의 요소에 대해, 스크램블링 매핑 및 디스크램블링 매핑(도 29에서 순방향 및 역방향 매핑으로 표시됨)이 도시되어 있다. 순방향 맵은 데이터를 스크램블링하기 위해 사용되고 역방향 맵은 병합된 데이터를 수신기에서 디스크램블링하여 데이터를 원래의 순서로 반환하기 위해 사용된다.
상기한 것과 유사하게, 순방향 및 역방향 스크램블링 매핑이 컨볼빙될 수 있다. 고유 프리픽스 순방향 및 역방향 매핑 벡터는 식별된 사용자 또는 장치에 대해 특정한 매핑을 생성하기 위해 사용될 수 있다. 도 30을 참조하면, 순방향 및 역방향 스크램블링 매핑의 일례가 도시되어 있다. 순방향 매핑 및 프리픽스 순방향 매핑은 컨볼빙된 순방향 매핑을 생성하기 위해 사용되고, 역방향 매핑 및 프리픽스 역방향 매핑은 컨볼빙된 역방향 매핑을 생성하기 위해 사용된다.
도 29 및 도 30을 개괄적으로 참조하면, 스크램블링 매핑은, 수신기가 입력 데이터에서 헤더 데이터를 분리할 수 있게 하는 특정 위치에 헤더 데이터와 관련된 데이터 요소가 유지되는 것을 보장하는 방식으로 생성될 수 있다. 예를 들어, 모든 헤더 데이터 패킷을 첫 번째 n 패킷 내에 유지하는 매핑이 생성될 수 있다. 값 n은 애플리케이션 기반일 수 있고 송신기 및/또는 수신기의 관리자에 의해 선택될 수 있다. 이는 수신기가 입력 데이터에서 헤더 데이터를 더욱 신속하게 또는 용이하게 분리하는 것을 가능하게 할 수 있다.
일부 실시형태에서, 데이터를 스크램블링하는 방법을 결정하기 위해 랜덤하게 생성된 값의 테이블이 사용될 수 있다. 스크램블링 함수는 데이터 스트림 내의 인덱싱된 값의 스왑을 식별하며, 스왑 인덱스는 테이블 내의 램덤 값을 기반으로 한다. 테이블은 송신기와 수신기 모두가 이용할 수 있다. 스크램블링 테이블 구현형태의 기본 예가 도 31에 도시되어 있다. 도 31의 예에서는, 스크램블링될 벡터는 20 요소 벡터(예시적인 목적으로도 도 31의 상단에 열거됨)이다.
테이블을 사용하여 스크램블링 함수를 수행하기 위해, 각각의 인덱스에 대한 데이터 요소 수를 법으로 하여 고정된 스크램블링 테이블을 계산함으로써 고정 드로우 벡터가 생성된다. 이후, 인덱스를 이의 고정 드로와 페어링함으로써 각각의 인덱스에 대해 스왑 쌍이 생성된다. 첫 번째 인덱스부터 시작하여 모든 인덱스를 반복하여, 스왑 쌍에 의해 식별된 스왑이 수행된다. 도 31의 예에서, 첫 번째 스왑 쌍은 데이터[0]의 콘텐츠를 데이터[0]으로 스왑하는 널 쌍(null pair)이다. 두 번째 스왑 쌍은 데이터[1]과 데이터[18]의 콘텐츠를 스왑한다. 도면에 도시된 바와 같이, n 번째 스왑 쌍은 데이터[n-1]의 콘텐츠를 데이터[고정 스크램블링 테이블[n] % 데이터 요소 수]의 콘텐츠로 스왑한다. 따라서, 20 번째 스왑의 경우, 데이터[19]의 콘텐츠는 데이터[760 % 20]의 콘텐츠로 스왑될 것이다. 그러므로, 데이터[19]의 콘텐츠는 데이터[0]의 콘텐츠로 스왑될 것이다. 임의의 스왑이 수행되기 전에 데이터[0]이 n 번째 반복에서 데이터[0]과 다른 값을 포함할 수 있도록 스왑은 꾸준히 진행된다는 것에 주목하라. 따라서, n 번째 스왑은 0에서 n-1까지의 모든 스왑이 완료된 후 데이터[n-1]에 포함된 값을 스왑하게 된다. 이 구현형태는 고정 스크램블링 테이블의 길이까지 모든 데이터 벡터 길이에 대해 사용될 수 있으며, 스왑 쌍이 데이터 벡터의 길이에 의존하기 때문에 각각의 데이터 벡터 길이에 대해 고유한 스크램블링을 제공한다. 따라서, 두 개의 데이터 벡터가 주어지면, 19 개의 데이터 요소를 포함하는 하나의 벡터 및 처음 19 개의 데이터 요소가 동일한 20 개의 데이터 요소를 포함하는 하나의 벡터는 동일한 고정 스크램블링 테이블이 주어지더라도 서로 다른 스왑을 유발한다. 도 31에 도시된 테이블을 기반으로, 31 요소 데이터 벡터에 대한 두 번째 스왑은 데이터[1]과 데이터[18] (278 % 20 = 18)을 스왑하게 되지만, 19 요소 데이터 벡터에 대한 두 번째 스왑은 데이터[1]과 데이터[12] (278 % 19 = 12)를 스왑하게 된다.
도 32를 을 참조하면, 제 2 스크램블링 테이블의 예가 도시되어 있다. 이 실시형태에서, 고정 스크램블링 테이블의 시작점을 식별하기 위해 오프셋 항이 사용된다. 예를 들어, 인덱스 0에서 첫 번째 스왑을 수행하는 대신, 스왑은 모든 인덱스에서 시작될 수 있다. 오프셋은 데이터 기반 오프셋일 수 있고, 따라서 각각의 데이터 벡터 길이뿐만 아니라 선택된 각각의 오프셋에 대해서도 데이터의 고유한 스크램블을 생성한다. 예를 들어, PRNG이 생성한 의사 랜덤 값이 오프셋으로서 사용될 수 있다. 의사 랜덤 값은, 동일한 입력이 주어지면 인코더와 디코더 모두가 PRNG로부터 동일한 랜덤 값을 생성할 수 있도록, 생성될 수 있다. 대안적으로 난수가 인코더에 의해 오프셋으로 사용되는 경우, 이는 사용하기 위해 디코더로 전달될 필요가 있다.
도 33을 참조하면, 제 3 스크램블링 테이블의 예가 도시되어 있다. 도 33의 예에서는, 오프셋 항 평가에 포함된 항의 수는 증가하고, 따라서 단일 고정 스크램블링 테이블을 사용하여 확장된 테이블 공간을 증가시킨다.
도 34를 참조하면, 예시적인 디스크램블링 테이블이 도시되어 있다. 디스크램블링 테이블은 도 31에 도시된 스크램블링 테이블을 기반으로 한다(도 34의 테이블은 도 31의 테이블에 의해 스크램블링된 데이터를 디스크램블링하기 위해 사용된다). 수신된 데이터 세트를 디스크램블링하는 프로세스는 일반적으로 데이터를 인코딩하는 동안 스왑의 동일한 세트를 역순으로 수행하는 단계를 포함할 수 있다. 도 34에 도시된 바와 같이, 스크램블링 테이블의 순서는 반전되어 데이터의 디스크램블링을 유발한다.
도 35 내지 도 37을 개괄적으로 참조하여, 본원의 시스템 및 방법이 제공할 수 있는 추가 특징을 더욱 상세하게 설명한다.
이제 도 35를 참조하면, 송신기(100)와 수신기(150) 간의 통신 및 정책 서버(702)가 도시되어 있다. 본 개시에서 기술된 바와 같이, 송신기(100)는 제 1 세트의 함수에 따라 데이터를 난독화할 수 있고, 수신기(150)는 제 1 세트의 함수에 관련된 제 2 세트의 함수에 따라 송신을 역난독화하는 경우 원래 데이터를 복원할 수만 있다. 데이터가 수신기(150)에 전송될 때, 수신기는 성공적인 전송을 이루기 위해 데이터를 역난독화하는 데 사용할 함수를 알아야 한다. 도 35를 참조하면, 송신기(100)와 수신기(150)의 정책 서버(702)와의 통신은, 사용할 난독화 함수 및 파라미터에 관한 정보를 송신기(100)와 수신기(150)에 제공할 수 있다.
도 35의 실시형태에서, 정책 서버(702)는 송신기(100)와 수신기(150) 모두와 통신하는 것으로 도시되어 있다. 송신기(100)는 특정 수신기와의 연결을 설정(즉, 수신기에 데이터를 전송)하기를 원할 수 있다. 연결을 설정하기 위해, 송신기(100)는 정책 서버(702)에 요청을 전송한다. 정책 서버(702)는 송신기(100)가 수신기(150)로 데이터를 전송하는 허가를 갖는지 여부를 결정할 수 있다. 송신기(100)가 수신기(150)에 데이터를 송신할 수 있다고 정책 서버(702)가 결정하면, 정책 서버(702)는 요청을 승인하고 이에 응답하여 송신기(100)와 수신기(150) 모두에 데이터를 제공한다. 예를 들어, 정책 서버(702)는 키, 매핑 함수에 사용하기 위한 테이블, 매핑에 사용될 수 있는 다수의 테이블로서 수신기(150)에 전송된 데이터의 헤더에서 선택된 테이블을 포함하는 테이블에서 송신기(100)가 선택할 수 있는 다수의 테이블, 또는 송신기(100)와 수신기(150)에 입력되는 임의의 다른 유형의 파라미터 또는 데이터를 전송할 수 있다. 송신기(100)와 수신기(150)에 제공된 데이터는 관련되어 있다(즉, 송신기(100)에는 순방향 맵이 제공될 수 있고 수신기(150)에는 대응하는 역방향 맵이 제공될 수 있다). 정책 서버(702)가 제공한 데이터는 송신기(100)와 수신기(150)가 데이터를 인코딩하고 디코딩할 때 동일한 함수와 파라미터를 사용할 수 있게 하며, 따라서 송신기는 수신기가 송신기로부터 특정한 인코딩 정보를 수신하지 않고 디코딩할 수 있는 인코딩된 데이터를 전송할 수 있다.
정책 서버(702)는 송신기(100)와 수신기(150)에 의한 난독화 및 역난독화 정보의 사용을 제한할 수 있다. 예를 들어, 정보는 단일 전송, 단일 세션, 최대 패킷 수 또는 특정 기간 동안에 대해서만 할당될 수 있다. 송신기(100)와 수신기(150)는 모두 정책 서버가 할당한 제한을 시행할 것으로 예상된다. 그러나 최소한 수신기(150)는 수신할 권한이 없는 데이터를 처리하는 것을 방지하기 위해 제한을 시행해야 한다. 정책 서버(702)가 설정한 제한을 시행하는 하나의 이점은, 수신기(150)가 사용한 역난독화 정보가 안전하게 유지되는 것을 더 보장하는 것이다. 정책 서버(702)가 설정한 제한에 도달하면, 송신기(100)는 수신기(150)에 추가 정보를 전송하기를 원할 경우, 송신기(100)는 송신기(100)와 수신기(150) 모두에 다시 전달되는 새로운 난독화 및 역난독화 정보(예를 들어, 새로운 테이블)을 요청할 수 있다.
수신기(150)가 적절한 형식이 아닌 임의의 데이터 통신을 무시할 수 있기 때문에, 공유된 난독화 및 역난독화 정보 세트가 없다면, 송신기(100)는 수신기(150)와 통신하는 것이 차단될 수 있다. 따라서, 송신기(100)와 수신기(150)가 임의의 통신을 시작하기 전에, 난독화 및 역난독화 데이터는 정책 서버(702)에 의해 송신기(100)와 수신기(150)에서 공유되어야 한다. 다시 말해서, 송신기에 의한 데이터 난독화 방법 및 수신기에 의한 역난독화 방법의 설정 도중, 실제로 송신기와 수신기 간에 통신이 이루어지지 않을 수 있다. 본질적으로, 정책 서버에 의한 난독화 데이터와 역난독화 데이터의 제공은 송신기와 수신기 간의 통신을 위한 일종의 인증의 역할을 한다. 이는 서로 통신할 수 있는 권한이 있는 둘 이상의 송신기와 수신기 그룹 및 서로 통신할 수 있지만 또 다른 하위 그룹의 구성원이 아닌 둘 이상의 송신기와 수신기의 서로 다른 하위 그룹을 형성할 수 있다. 각각의 송신기와 수신기는 적절한 전송을 위해 데이터를 인코딩하고 디코딩하기 위해 필요한 정보를 얻기 위해 정책 서버(702)와 통신할 수 있다. 송신기(100)와 정책 서버(702) 및 수신기(150)와 정책 서버(702) 간의 통신은 임의의 데이터 암호화 방법(예를 들어, PGP)을 통해 보안될 수 있다. 송신기(100)와 정책 서버(702) 및 수신기(150)와 정책 서버(702) 간의 통신은 또한 본원에 기술된 OCTS 기술을 통해 보안될 수 있다.
정책 서버(702)가 송신기(100)와 수신기(150)와는 별도로 도시되어 있지만, 다른 실시형태에서 정책 서버(702)는 송신기(100) 또는 수신기(150)에서 국부적으로 구현될 수 있음을 알아야 한다.
도 36은 입력 데이터로 헤더 데이터를 스크램블링하기 위해 사용될 수 있는 스크램블링 함수를 도시하고 있다. 상기한 바와 같이, 헤더 데이터와 입력 데이터가 별도로 난독화된 후, 두 개의 데이터 세트가 연결되고 스크램블링되어야 한다. 도 36은 헤더 부분과 입력 데이터 부분을 갖는 연결된 데이터 세트를 도시하고 있다. 헤더 데이터 크기는 16 바이트로 나타나있고, 물론 다른 실시형태에서, 헤더 데이터 크기는 임의의 길이일 수 있다.
다양한 애플리케이션은 입력 데이터 내에 헤더 데이터의 다른 레벨의 난독화를 요구할 수 있다. 예를 들어, 스크램블링이 큰 청크(예를 들어, 바이트 레벨)에서 이루어지고, 헤더가 전송의 시작에 비교적 가깝게 스크램블링되는 것을 보장함으로써 디코딩 속도가 최대화될 수 있다. 또 다른 예로서, 스크램블링은 하드웨어(예를 들어, IC)에서 또는 병렬 프로세서를 사용하여 이루어질 수 있다. 난독화가 더 중요한 경우, 스크램블링은 작은 조각(예를 들어, 비트 레벨)에서 이루어질 수 있으며, 헤더 데이터는 데이터 전송의 더 큰 부분에 걸쳐 분산될 수 있다.
도 36에 도시된 바와 같이, 연결된 데이터는 헤더 데이터(16 바이트)를 갖는 제 1 부분 및 입력 데이터(x 바이트)를 갖는 제 2 부분을 포함한다. 헤더 데이터를 첫 번째로 배치하고 입력 데이터를 두 번째로 배치하여 데이터가 연결된다. 그리고 나서 송신기는 연결된 데이터에 대해 스크램블링 함수를 개시할 수 있다. 스크램블링 프로세스는 헤더 데이터가 있는 시작 대신 데이터의 끝에서 시작될 수 있다. 스크램블링 프로세스는 데이터 세트의 뒤에서부터 데이터 세트의 앞으로 비트를 계속 스크램블링할 수 있다. 대안적으로, 도 29에 도시된 바와 같이, 테이블을 기반으로 하는 스왑을 보여주는 또 다른 예시적인 스크램블링 함수가 도시되어 있다.
헤더 데이터를 마지막에 스크램블링하는 것이 유리하지만, 난독화를 증가시키기 위해 헤더 데이터는 여전히 입력 데이터로 스크램블링되어야 한다. 예를 들어, 도 37에 도시된 바와 같이, 연결된 데이터의 처음 100 또는 200 바이트는 함께 스크램블링될 수 있고, 결과적으로 16 바이트의 헤더 데이터는 입력 데이터의 처음 200 바이트로 스크램블링된다. 이는 수백 바이트가 될 수 있는 전체 데이터 세트에 걸쳐 헤더 데이터를 스크램블링하는 것에 대한 대안이다.
일부 실시형태에서, 연결된 데이터는 다양한 청크로 분할될 수 있다. 예를 들어, 도 36의 마지막 예에서, 연결된 데이터는 헤더 데이터와 입력 데이터를 포함하는 100 바이트의 제 1 청크 및 입력 데이터의 세 개의 청크로 분할된다. 이는 스크램블링 함수가 일반적으로 데이터 세트를 순차적으로 처리하는 첫 번째 예의 스크램블링과 비교된다. 각각의 청크 내의 데이터는 스크램블링 함수에 의해 스크램블링될 수 있다. 헤더 데이터는 입력 데이터의 일부로 스크램블링되어 전송될 데이터 패킷의 난독화를 증가시킨다.
도 37은 예를 들어 데이터 변환 모듈(102 또는 152) 및/또는 본 개시에서 기술된 다양한 다른 예시적인 시스템을 구현하기 위해 사용될 수 있는 컴퓨터 시스템(900)을 도시하고 있다. 컴퓨팅 시스템(900)은 정보를 통신하기 위한 버스(905) 또는 다른 통신 구성요소 및 정보를 처리하기 위해 버스(905)에 결합된 프로세서(910)를 포함한다. 컴퓨팅 시스템(900)은 또한 정보를 저장하기 위해 버스(905)에 결합된 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 장치와 같은 메인 메모리(915) 및 프로세서(910)에 의해 실행될 명령어를 포함한다. 메인 메모리(915)는 또한 위치 정보, 임시 변수, 또는 프로세서(910)에 의한 명령어의 실행 동안 다른 중간 정보를 저장하기 위해 사용될 수 있다. 컴퓨팅 시스템(900)은 프로세서(910)에 대한 정적 정보 및 명령어를 저장하기 위해 버스(905)에 결합된 판독 전용 메모리(ROM)(920) 또는 다른 정적 저장 장치를 더 포함할 수 있다. 정보와 명령어를 지속적으로 저장하기 위해 입체 외로 소자, 자기 디스크 또는 광학 디스크와 같은 저장 장치(925)가 버스(905)에 연결된다.
컴퓨팅 시스템(900)은 정보를 사용자에게 디스플레이하기 위해 액정 디스플레이 또는 능동 매트릭스 디스플레이와 같은 디스플레이(935)에 버스(905)를 통해 연결될 수 있다. 정보 및 명령어 선택을 프로세서(910)에 전달하기 위해 영숫자 및 다른 키들을 포함하는 키보드와 같은 입력 장치(930)가 버스(905)에 결합될 수 있다. 또 다른 실시형태에서, 입력 장치(930)는 터치 스크린 디스플레이(935)를 갖는다. 입력 장치(930)는 방향 정보 및 명령어 선택을 프로세서(910)에 전달하고 디스플레이(935) 상의 커서 움직임을 제어하기 위해 마우스, 트랙볼 또는 커서 방향 키와 같은 커서 제어장치를 포함할 수 있다.
일부 구현형태에서, 컴퓨팅 시스템(900)은 네트워킹 어댑터와 같은 통신 어댑터(940)를 포함할 수 있다. 통신 어댑터(940)는 버스(905)에 결합될 수 있고 컴퓨팅 또는 통신 네트워크(945) 및/또는 다른 컴퓨팅 시스템과의 통신을 가능하게 하도록 구성될 수 있다. 다양한 예시적인 구현형태에서, 모든 유형의 네트워크 구성이 (예를 들어, 이더넷(Ethernet®)을 통한) 유선, (예를 들어, 와이파이(Wi-Fi®), 블루투스(Bluetooth®) 등을 통한) 무선, 미리 구성된, 애드호크(ad-hoc), LAN, WAN 등과 같은 통신 어댑터(940)을 사용하여 달성될 수 있다.
다양한 구현형태에 따라, 본원에 기술된 예시적인 구현형태를 달성하는 프로세스는 메인 메모리(915)에 포함된 명령 구성을 실행하는 프로세서(910)에 응답하여 컴퓨팅 시스템(900)에 의해 달성될 수 있다. 이러한 명령어는 저장 장치(925)와 같은 또 다른 컴퓨터 판독 가능 매체로부터 메인 메모리(915)로 입력될 수 있다. 메인 메모리(915)에 포함된 명령어 구성의 실행은 컴퓨팅 시스템(900)로 하여금 본원에 기술된 예시적인 프로세스들을 수행하도록 한다. 메인 메모리(915)에 포함된 명령어를 실행하기 위해 다중 처리 구성 내의 하나 이상의 프로세서가 또한 사용될 수 있다. 대안적인 구현형태에서, 예시적인 구현형태를 구현하기 위해 소프트웨어 명령어 대신에 또는 소프트웨어 명령어와 함께 하드웨어에 내장된 회로가 사용될 수 있다. 따라서, 구현형태는 하드웨어 회로 및 소프트웨어의 특정 조합으로 제한되지 않는다.
본원의 시스템 및 방법은 AES와 같은 기타 암호화 기술에 비해 유리하다. 예를 들어, 이러한 기술은 TCP/IP 또는 모든 데이터 패킷이 수신기에서 순서대로 수신되도록 하는 것에 프로토콜이 관심을 갖는 다른 유사한 프로토콜에 의존할 수 있다. 난독화의 강도는 부분적으로 블록 체이닝의 사용에 의존할 수 있는데, 이는 전송 순서를 중요하게 만든다. 그러나, 본원의 시스템 및 방법은 순서대로 수신되는 프레임에 의존하지 않으며, 각각의 프레임이 자체 난독화 전략으로 독립할 수 있기 때문이다. 이는 본원의 난독화 방법이 비디오 또는 오디오와 같은 데이터를 스트리밍하기 위한 UDP 또는 다른 프로토콜과 같은 프로토콜에 사용되는 것을 가능하게 한다.
본 개시에서 개괄적으로 설명한 바와 같이, 다양한 테이블이 데이터 난독화 및 역난독화 프로세스 동안 사용될 수 있다. 그러나, 다양한 유형의 테이블이 난독화 및 역난독화 프로세스의 일부로서 사용될 수 있고, 다양한 유형의 다양한 테이블이 동일한 프로세스에서 사용될 수 있음을 알아야 한다. 예를 들어, 비트 스크램블링 프로세스 동안 제 1 구조를 갖는 제 1 유형의 테이블이 사용될 수 있고, 비트 매핑 프로세스 동안 제 2 구조를 갖는 제 2 유형의 테이블이 사용될 수 있다. 본원의 시스템 및 방법은 다양한 단계에서 임의의 수의 다른 테이블 유형 및 구조의 사용을 가능하게 하도록 적응될 수 있다.
데이터 난독화 프로세스에서 사용하기 위한 테이블은 N 개 요소의 임의의 세트를 포함할 수 있고, 이는 이들 요소의 그룹화를 구현하는 물리적 또는 가상의 것을 포함하지만 이에 한정되지 않는다. 공식 또는 비공식 프로토콜은 필요하지 않다. 요소는 단일 비트, 임의의 표준 비트 그룹화(예를 들어, 바이트, 워드, 더블 워드 또는 쿼드 워드), 임의의 고정 소수점 또는 부동 소수점 이진 표현, 또는 임의의 비표준 비트 그룹화일 수 있다. 요소는 2진법, 3진법, 4진법, 5진법 등의 베이스 표현으로 표현될 수 있다.
테이블은 하드웨어 또는 소프트웨어에서 임의의 형식으로 표현되거나 구현될 수 있다. 예를 들어, 테이블은 RAM 또는 ROM에서 구현될 수 있다. 메모리 기본 위치는 주소 또는 행에 대한 액세스를 제공할 수 있으며, 오프셋은 데이터 또는 열에 대한 액세스를 제공할 수 있다. 또 다른 예로서, 테이블은 선입 선출(first-in first-out; FIFO) 메커니즘으로 구현될 수 있다. 모든 테이블 요소는 FIFO에 저장되며, 적절한 수의 요소를 푸시하거나 팝핑함으로써 액세스된다. 또 다른 예로서, 테이블은 시프트 레지스터로 표현될 수 있다. 요소 인덱스는 시프트 레지스터에서 인코딩되며, 병렬로 여러 시프트 레지스터로 나뉠 수 있다. 또 다른 예로서, 테이블은 값의 어레이 또는 벡터, 또는 결합된 다수의 벡터 또는 어레이로 표현될 수 있고, 첫 번째 인덱스는 첫 번째 요소를 포함하고 두 번째 인덱스는 두 번째 요소를 포함한다, 등등. 또 다른 예로서, 테이블은 XML 문서와 같은 이진, 텍스트 또는 포맷된 문서로서 구현될 수 있다. 다른 예로서, 테이블은 격자 구조, 상태 머신, 변조기/복조기, 디지털 신호 프로세서(DSP) 등에서 구현될 수 있다.
또 다른 예로서, 테이블은 모든 유형의 소프트웨어 구현형태에서 구현될 수 있다. 일례로서, 테이블은 도면에 개략적으로 도시된 룩업 테이블로서 구현될 수 있고, 여기서 특정 인덱스에서 테이블에 액세스하는 것은 해당 인덱스에서 요소에 대한 액세스를 제공한다. 또 다른 예로서, 테이블은 이진 탐색 트리(또는 또 다른 데이터 구조)로서 구현될 수 있다. 입력 문자열은 트리의 시작 노드에서 데이터의 경로를 결정하고, 테이블 작업의 출력은 리프 노드(leaf node)에 도달한 후에 제공된다. 다른 예로서, 테이블은 가상 메모리 맵, 비트 스트림, 스택, 어레이 또는 벡터, 매트릭스, XML 문서, 텍스트 문서, 바이너리 파일 등으로 소프트웨어에서 구현될 수 있다.
이전의 도면 및 설명을 참조하여 장치 간의 전송을 위해 데이터를 난독화하기 위해 데이터 난독화를 위한 시스템 및 방법이 기술되었다. 이제 이하의 특징을 참조하여 다수의 장치 간의 데이터 통신을 관리하기 위한 시스템 및 방법을 설명한다. 특히, 다수의 장치가 난독화된 통신을 가질 수 있도록 하는 프로토콜을 다수의 장치에 제공하기 위한 키 분배 프로세스를 설명한다. 이러한 시스템 및 방법은 다수의 장치가 도 1 내지 도 36에서 설명한 난독화 방법을 사용하여 통신할 수 있게 한다.
마이크로컨트롤러는 일반적으로 정보를 국부적으로 또는 인터넷을 통해 교환하고 인터넷을 통해 액세스 가능하게 할 수 있다. 마이크로컨트롤러 및/또는 다른 전자장치로 내장된 영역(예를 들어, 빌딩 내의 다수의 장치, 빌딩 내의 영역, 차량 등) 내의 다양한 장치의 네트워크인 IoT를 형성하기 위해 다수의 마이크로컨트롤러가 사용될 수 있다. 마이크로컨트롤러가 결부된 장치는, 예를 들어, 센서, 노드 또는 임의의 다른 유형의 장치일 수 있다. IoT는 다양한 장치가 데이터를 수신하고 전송할 수 있게 한다. IoT는 일반적으로 다양한 장치가 저전력 구성에서 데이터를 공유할 수 있게 해주는 로컬 저전력 무선 연결을 필요로 한다. IoT는 일반적으로 게이트웨이 또는 클라이언트에게 다양한 장치의 연결을 용이하게 하도록 요구할 수 있다.
이제 도 38을 참조하면, 환경(1000) 내의 다수의 장치 간의 통신 프로토콜을 설정하기 위한 시스템이 도시되어 있다. 다수의 장치(1002)가 환경(1000)에 도시되어 있다. 각각의 장치(1002)는 다른 장치와의 무선 통신을 하도록 구성된 모든 유형의 장치일 수 있다. 각각의 장치(1002)는 일반적으로 전원 장치(1010)를 포함할 수 있다. 일 실시형태에서, 장치는 배터리로 작동할 수 있고 저전력 구성으로 작동하도록 구성될 수 있다. 다른 실시형태에서, 장치는 하나 이상의 다른 전원 장치를 포함할 수 있다. 본원에 기술된 시스템 및 방법은 각각의 장치(1002)의 저전력 상태에 적합하고, 이는 장치가 다른 저전력 장치와 함께 보안 전송을 설정할 수 있게 한다. 그럼에도 불구하고, 본 기술 분야의 숙련자가 알 수 있는 바와 같이, 동일한 시스템 및 방법은 저전력 장치가 아닌 장치에서도 작동할 것이다. 각각의 장치(1002)는 다른 장치와의 송신을 용이하게 하기 위한 마이크로컨트롤러를 포함한다. 본 개시는 장치(1002)를 기술하기 위해 장치와 제어기라는 용어를 상호 교환적으로 사용한다.
환경(1000)은 다수의 장치(1002) 간의 그리고 이들 장치와 서버(1006) 간의 데이터 통신을 관리하도록 구성된 게이트웨이(1004)를 더 포함한다. 게이트웨이(1004)는 예를 들어, 라스베리 파이(Raspberry PiTM) 또는 데이터를 수신하여 다수의 마이크로컨트롤러에 전송할 수 있는 다른 유사한 장치와 같은 컴퓨팅 장치일 수 있다. 게이트웨이(1004)는 일반적으로 다양한 장치(1002)를 위한 전송 프로토콜을 설정할 수 있다. 게이트웨이(1004)는 임의의 RF 또는 유선 통신 방법을 통해 (예를 들어, 블루투스 저전력 에너지(Bluetooth Low Energy, BLE), 지그비(Zigbee), IEEE 802.15.4 또는 임의의 다른 통신을 통해) 장치(1002)와 통신할 수 있다.
환경(1000)은 게이트웨이(1004)가 통신할 수 있는 서버(1006)를 더 포함한다. 서버(1006)는 예를 들어 상기한 정책 서버(702)와 유사한 정책 서버일 수 있으며, 게이트웨이(1004)와 다양한 장치(1002) 간의 상호작용을 관리하도록 구성될 수 있다. 서버(1006)는 (예를 들어, 장치가 서로 데이터를 공유하도록 승인된 경우) 환경(1000) 내의 다양한 장치에 대한 허가를 결정할 수 있고, 환경(1000) 내에서 난독화된 전송 등을 설정하기 위해 게이트웨이(1004)가 사용하기 위한 테이블, 키 또는 다른 정보를 전송할 수 있다.
도 38은 하나의 특정 실시형태를 도시하고 있지만, 다른 구성도 가능하다는 것을 알아야 한다. 예를 들어, 서버(1006)에서 수행되는 하나 이상의 활동이 대신 게이트웨이(1004)에서 수행될 수 있다. 또 다른 예로서, 게이트웨이(1004)는 모든 유형의 클라이언트 장치일 수 있다. 게이트웨이(1004)는 클라이언트 장치 또는 서버 장치일 수 있다.
이제 도 39를 참조하면, 두 개의 장치 간의 통신 프로토콜을 구현하는 프로세스(1100)의 흐름도가 도시되어 있다. 일 실시형태에서, 게이트웨이(1004)는 자신과 장치(1002) 간에 키를 안전하게 교환함으로써 두 개의 장치 간의 통신 프로토콜을 구현한다.
프로세스(1100)는 일반적으로 비밀 교환 단계(1102), 키 분배 테이블 (key distribution table; KDT) 생성 단계(1104), 데이터 테이블(data table; DT) 생성 단계(1106), 데이터 테이블 교환 단계(1108) 및 벡터 동기화 단계(1110)를 포함한다. 서로 통신하기를 원하는 두 개의 장치 제어기 사이에 "비밀" 교환이 있을 수 있다. "비밀"은 단순히 제어기와 게이트웨이 간에 공유되는 숫자일 수 있다. 비밀은 아래에서 설명하는 바와 같이 테이블 분배 키를 생성하기 위해 사용되는 PRNG 내의 위치를 나타낼 수 있다. 즉, 비밀은 미리 계산된 PRNG 위치일 수 있다. 일 실시형태에서, 비밀은 28 바이트이고, 12 바이트는 의사 난수를 생성(예를 들어, TinyMT)을 위한 파라미터(예를 들어, 난수를 생성하기 위해 사용된 다항식의 지수)를 정의화고, 16 바이트는 PRNG 시퀀스 내의 점프 벡터(jump vector)를 식별한다. 다른 실시형태에서, 비밀은 다른 크기일 수 있고, 적정한 보호를 생성하기 위한 모든 유형의 파라미터를 정의할 수 있다. "비밀"은 양 당사자(제어기와 게이트웨이)가 TDK를 생성하기 위해 사용된다. 양 당사자가 비밀을 알기 때문에 양 당사자는 동일한 PRNG 알고리즘을 사용하여 PRNG 값을 계산할 수 있다.
초기 "비밀"은 제조시에 제어 시점에 기록될 수 있고 또는 프로비저닝 시점에 생성될 수 있다. "비밀"은 일련 번호 또는 범용 고유 식별자(Universally Unique Identifier; UUID)일 수 있다. 초기 "비밀"의 교환은 여러 가지 방법으로 이루어질 수 있다. 초기 비밀을 교환하기 위한 한 가지 기술은 수동으로, 즉 사람과 같은 오퍼레이터를 이용하여 장치 간에 "비밀"이 교환된다. 이 기술에서, 초기 "비밀"은 전자적으로 전송되지 않고, 따라서 초기 "비밀"을 전자적으로 가로챌 가능성이 줄어든다. 이 기술에서, 제어기는 "비밀"을 디스플레이할 수 있는 사용자 인터페이스(UI)를 포함할 수 있으며, 교환은 제어기 UI로부터 "비밀"을 판독하고 게이트웨이 UI를 사용하여 "비밀"을 입력하는 오퍼레이터로 구성될 수 있다. 제어기에서 이용할 수 있는 UI가 없는 경우, "비밀"은 장치에 부착된 라벨 또는 장치의 포장에 인쇄될 수 있다. 이러한 경우, 오퍼레이터는 라벨에서 "비밀"을 판독하고 이를 게이트웨이 UI에 입력할 수 있다.
오퍼레이터가 게이트웨이 장치에 "비밀"을 입력하기 위한 UI가 게이트웨이에 존재하지 않는 경우, "비밀"은 전자적으로 교환되어야 한다. 제어기가 충분한 계산 자원을 가지고 있는 경우, "비밀"은 다양한 알고리즘을 사용하여 안전하게 공유될 수 있다. 일 실시형태에서, 비밀을 공유하기 위해 디피 헬만(Diffie-Hellman) 알고리즘이 사용된다. 본 기술 분야의 숙련자라면 알 수 있듯이, 디피 헬만 알고리즘은 서로에 대해 사전 지식이 없는 두 당사자가 불안전한 채널을 통해 공유 비밀 키를 공동으로 설정할 수 있게 하는 키 교환 방법이다. 그러나, 디피 헬만 알고리즘은 계산상 비싸며, 따라서 저출력 IoT 장치에서는 드물게 사용되어야 하고 따라서 초기 비밀 키의 교환을 위해서만 사용되어야 한다.
또 다른 실시형태에서, 보안을 안전하게 공유하기 위해 사용될 수 있는 또 다른 알고리즘은 비대칭 암호화이다. 비대칭 암호화는 데이터를 암호화하고 복호화하기 위해 공개 키와 개인 키를 사용한다. 각각의 클라이언트 장치 또는 제어기는 게이트웨이의 공개 키를 갖는다. 사용할 수 있는 또 다른 알고리즘은, 게이트웨이가 각각의 제어기에 인증서를 보내고 제어기는 인증 기관을 이용하여 인증서가 게이트웨이에 속하는지 검증하는 공개 키 기반 구조이다. 이러한 실시형태에서, 모든 세션에서 새로운 비밀이 교환된다.
또 다른 실시형태에서, 집중적인 알고리즘을 처리하기에 충분한 연산 능력이 없는 IoT 장치는 근접 프로비저닝(proximity provisioning)을 사용하여 (즉, 장치가 게이트웨이에 충분히 가까운 경우에만) "비밀"을 교환할 수 있다. 근접 프로비저닝의 경우, 제어기는 매우 약한 신호(예를 들어, -20 데시벨 밀리 와트)를 전송할 수 있으며, 게이트웨이는 게이트웨이와 장치 간의 거리(이 거리는 장치가 게이트웨이에 충분히 가까운지를 결정하는데 사용된다)를 계산하기 위해 신호의 수신 신호 강도 지표(received signal strength indicator, RSSI)를 사용할 수 있다. 또 다른 예로서, 비밀은 게이트웨이에 의해 일련 번호가 게이트웨이에 알려진 장치로만 교환될 수 있다. 또 다른 예로서, 비밀은, 열린 상태에서 비밀이 교환되고 게이트웨이는 교환 이후 장치가 정확하게 작동하는지를 검증하는, 신뢰 및 검증 방법을 사용하여 교환될 수 있다.
비밀이 교환된 후, 장치와 게이트웨이는 비밀을 저장장치에 저장할 수 있고, 일 실시형태에서, 저장된 비밀은 장치의 전원이 꺼진 후 장치와의 세션을 재설정하기 위해 사용될 수 있다. 또 다른 실시형태에서, 장치가 게이트웨이와 페어링되면 그 장치는 다른 게이트웨이와 페어링되지 못하도록 비밀은 단일 용도로 프로비저닝될 수 있다. 다양한 실시형태에서, 비밀은 게이트웨이, 서버, 사용자로부터의 하나 이상의 네트워크 기본 설정에 따라, 또는 제조 시점에서 프로비저닝된 대로, 임의의 횟수로 저장되고 재사용되거나, 제한된 횟수로 사용될 수 있다. PRNG 내의 위치를 식별하는 비밀의 16 바이트는 초기 PRNG 데이터 벡터로 정의된다.
프로세스(1100)는 키 분배 테이블 생성 단계(1104)를 포함한다. 키 분배 테이블은 일반적으로, 아래에서 설명하는 바와 같이, 난독화 및 역난독화에서 사용하기 위해 장치에 데이터 테이블을 전송하기 위해 사용된다. 키 분배 테이블을 생성하기 위해, PRNG에 대한 점프 벡터로서 사용된 비밀의 부분 및 결과적인 의사 난수 시퀀스가 테이블을 생성하기 위해 사용된다. 모든 유형의 PRNG가 사용될 수 있다(예를 들어, TinyMT). 키 분배 테이블 생성은 게이트웨이와 제어기 모두에서 이루어진다. 각각의 개체는 동일한 비밀을 가졌기 때문에, 이들은 PRNG를 통해 동일한 키 분배 테이블을 생성할 것이다.
도 40을 참조하면, 키 분배 테이블 생성 단계(1104)가 더욱 상세하게 도시되어 있다. 키 분배 테이블 생성 단계(1104)는 테이블을 초기화하는 단계(블록(1120))를 포함하고, 이는 테이블 길이 및 테이블 내의 각각의 항목에 대한 값을 설정하는 단계를 포함할 수 있다. 예를 들어, 블록(1120)은 테이블의 I번째 항목의 값을 I로 설정하는 단계를 포함할 수 있다.
테이블의 첫 번째 인덱스(인덱스 = 0)로 시작하여 테이블 내의 값을 스왑하기 위해 스왑 함수가 사용된다(블록(1124)). 예를 들어, 주어진 색인 값에 대해, 현재의 색인과 테이블 길이 간의 다음 의사 난수(S)가 발견된다. S는 이후 인덱스 I(KDT [I])에서의 값으로 스왑될 값에 대한 인덱스로 사용된다. 스왑 이후, 인덱스가 테이블의 길이보다 작은 한(블록(1126)에서 검사됨), 인덱스는 증가되고(블록(1122)), 스왑 함수가 다시 적용된다(블록(1124)). KDT 생성은 동일한 PRNG와 비밀을 사용하여 이루어지기 때문에, 각각의 장치는 동일한 테이블을 생성할 것이다.
다시 도 39 및 프로세스 1100을 참조하면, 프로세스는 데이터 테이블 생성 단계(1106)를 포함한다. 초기 데이터 테이블(DT0)은 게이트웨이에서만 생성된다. 데이터 테이블을 생성하기 위한 알고리즘은 키 분배 테이블을 생성하기 위한 알고리즘(도 40에 도시됨)과 유사하지만 의사 난수 대신에 순수 난수를 사용하여 스왑할 인덱스를 결정할 수 있다. 순수 난수는 시스템의 엔트로피를 기반으로 할 수 있다. 예를 들어, 본 기술 분야의 숙련자라면 알 수 있듯이, IOX(MAC OS)에서 0 내지 255 사이의 순수 난수가 다음 코드를 사용하여 생성될 수 있다: File = *rnd_file=fopen("/ dev/random", "r"); rand = fgetc(rnd_file). 또 다른 예로서, 본 기술 분야의 숙련자라면 알 수 있듯이, 리눅스에서 커널 엔트로피 풀로부터 랜덤 값을 얻을 수 있다. 데이터 테이블 DT0은 게이트웨이에서만 생성되기 때문에, 순수 난수를 사용할 수 있다. 게이트웨이는 아래에서 더욱 상세하게 설명되는 바와 같이 제어기와 게이트웨이가 동기화에서 벗어나는 경우 사용하기 위해 RAM에 DT0를 저장할 수 있다. 게이트웨이는 각각의 제어기에 대해 별도의 데이터 테이블을 유지 관리한다.
프로세스(1100)는 데이터 테이블 교환 단계(1108)를 더 포함한다. 데이터 테이블 교환 프로세스는 일반적으로 KDT(아래에서 설명함)를 사용하여 셔플링 알고리즘으로 데이터 테이블을 인코딩하는 단계 및 인코딩된 테이블을 제어기에 전송하는 단계를 포함한다. 제어기가 DT0를 수신하면, 아래에서 더욱 상세하게 설명되는 바와 같이, 제어기와 게이트웨이가 동기화에서 벗어나는 경우 RAM 내의 DT0의 사본을 마찬가지로 유지 관리할 수 있다. 프로세스(1100)는 벡터 동기화 단계(1110)를 더 포함한다. 모든 장치는 자신의 파트너, 비밀 또는 비밀의 일부(즉, PRNG 시퀀스 내의 점프 벡터를 식별하는 단지 16 바이트 또는 다항식 지수 값 및 점프 벡터 모두를 포함하는 완전한 28 바이트)를 교환할 수 있다. 하나 이상의 PRNG 시퀀스가 알고리즘에 의해 사용되면, 하나 이상의 벡터와 다항식이 장치 간에 교환될 수 있다.
언제라도, 게이트웨이는 제어기에 새로운 비밀을 생성하여 전송할 수 있다. 이런 방식으로, 게이트웨이를 갖는 제어기의 향후 재초기화는 다른 초기 비밀과 다른 KDT의 교환을 유발할 것이다. 이전의 비밀은 게이트웨이와 제어기 모두에서 새로운 비밀로 덮어쓰게 된다. 이 프로세스는, 공격자가 장치 간의 통신에 대한 추가 정보를 확인할 수 있게 하는 제어기와 게이트웨이의 반복적인 동기화를 방지하여 함으로써 전체 시스템의 보안을 강화한다. 또 다른 실시형태에서, 게이트웨이는 특정 "비밀"이 사용될 수 있는 횟수의 임계 값을 포함할 수 있다. 또 다른 실시형태에서, 게이트웨이는 동일한 "비밀" 값의 각각의 후속 사용 사이에 시간의 양을 증가시킬 수 있으며, 이는 연속적으로 다수의 동기화를 시도하기는 것을 매우 어렵게 한다.
다시 도 38을 를 참조하면, 환경(1000)은 장치(1002)와, 게이트웨이(1004) 및 서버(1006) 중 임의의 장치와 통신할 수 있는 키 분배 센터(1008)를 선택적으로 포함할 수 있다. 대안적인 실시형태에서, 키 분배 센터(1008)는 도 39 및 도 40에서 설명한 키 프로비저닝 기능을 제공할 수 있다. 이러한 경우, 키 분배 센터(1008)는 각각의 장치(1002) 또는 제어기에 대한 식별 정보를 가질 수 있다.
제어기, 게이트웨이 또는 서버가 처음 켜지면, 이들은 키 분배 센터(1008)와의 세션을 설정하고, 세션은 제어기, 게이트웨이 또는 서버에 대한 데이터 테이블을 생성한다. 따라서 각각의 세션에 대한 키 분배 테이블이 있다(각각 제어기, 게이트웨이 및 서버에 대해 아래에서 TC, TG 및 TS로 표기됨). 일부 실시형태에서, 장치(1002)는 키 분배 센터 (1008)와 직접 통신할 수 없을 수도 있다. 이러한 경우, 장치(1002)로부터의 통신은 게이트웨이(1004)에 의해 키 분배 센터(1008)로 중계된다.
장치(1002)의 제어기가 게이트웨이(1004)와 통신하기를 원하는 경우, 제어기는 키 분배 센터(1008)에 데이터 테이블을 요청할 수 있다. 장치(1002)가 키 분배 센터(1008)와 직접 통신할 수 없는 경우와 같은 일부 실시형태에서, 게이트웨이(1004)와 장치(1002)가 아직 서로 통신하도록 프로비저닝되지 않은 경우라도, 게이트웨이(1004)는 장치(1002)로부터의 요청이 키 분배 센터(1008)로 중계되도록 허용할 수 있다. 일 실시형태에서, 키 분배 센터(1008)는 새로운 데이터 테이블(DTCG)의 두 개의 사본을 게이트웨이에 전송하는데, 하나의 테이블을 게이트웨이용이고 하나는 제어기용이다. 게이트웨이의 DTCG는 TG를 사용하여 인코딩되고, 제어기의 DTCG는 TC를 사용하여 인코딩된다. 그리고 나서 게이트웨이는 제어기의 TDK(TC)로 인코딩된 DTCG를 제어기에 중계한다. 게이트웨이와 제어기 각각은 자신의 키 분배 테이블을 가지므로 DTCG의 자체 사본을 디코딩할 수 있다. 다른 실시형태에서, 키 분배 센터(1008)는 DTCG를 제어기에 직접 전송할 수 있고, 다시 TC로 다시 인코딩된다.
유사하게, 게이트웨이가 제어기와 통신하기를 원하는 경우(또는 제어기가 게이트웨이와 통신하기를 원한다는 메시지를 제어기로부터 수신하는 경우), 게이트웨이는 키 분배 테이블(1008)에 세션을 설정하라는 요청을 전송한다. 세션 키(TC)가 제어기에 전송되면, 게이트웨이는 게이트웨이-제어기 통신에서 사용하기 위한 데이터 테이블 요청을 키 분배 테이블(1008)에 전송할 수 있다. 상기한 바와 같이, 게이트웨이는 그리고 나서 새로운 데이터 테이블의 두 개의 사본을 수신하고 인코딩된 데이터 테이블을 제어기에 중계한다.
상기한 바와 같이, 데이터 테이블이 (게이트웨이 또는 키 분배 센터에 의해) 생성되면, 그리고 데이터 테이블이 송신되기 전에, 셔플링 알고리즘이 데이터 테이블에 적용되어 테이블 내의 데이터를 난독화할 수 있다. 이제 도 41을 참조하여 데이터 테이블 내의 데이터를 인코딩하는 한 가지 방법을 설명한다. 도 41에 도시된 프로세스(1200)는, 제어기로의 첫 번째 페이로드 전송을 위해 그리고 나중에 송신기와 수신기가 동기화될 필요가 있는 경우에 사용될 수 있는 독립형 인코딩 알고리즘일 수 있다. 독립형 인코딩 알고리즘은 상태 독립적이다(즉, 의사 랜덤 시퀀스 내의 이전 위치를 알 필요가 없다). 독립형 인코딩 알고리즘은 PRNG 데이터 벡터(예를 들어, 비밀)를 초기화 또는 재-초기화할 필요가 있을 때 게이트웨이에 의해 개시된다. 본 개시에서, "비밀" 및 "PRNG 데이터 벡터"는 상호 교환적으로 사용될 수 있다.
프로세스(1200)는 순수 난수를 생성하는 단계(블록(1202)) 및 전송될 프레임을 설정하는 단계(블록(1204))를 포함한다. 또한 도 42를 참조하면, 프레임의 앞에 설정된 RND 값(블록(1202)에서 결정됨)과 프레임의 끝에 설정된 CRC 값(블록(1206)에서 결정됨)을 갖는 예시적인 프레임이 도시되어 있다. 프로세스 1200은 순환 중복 코드(cyclic redundancy code; CRC)를 계산하는 단계(블록(1206))를 더 포함한다. CRC는 페이로드와 난수 모두에서 계산되는 것이 바람직하다.
프로세스 1200은 프레임을 난수 배열로 XOR하는 단계(블록(1208))를 더 포함한다. 비밀은 RND 값으로 설정되고, PRNG는 페이로드 및 CRC와 동일한 길이의 난수 배열을 생성하기 위해 비밀로 시드된다. 생성된 배열은 프레임을 XOR하기 위해 사용된다. XOR은 원래의 페이로드와 CRC를 난독화하여 일반 평문 공격(plaintext attack)이 데이터 테이블을 디코딩하려고 하는 것을 방지한다.
프로세스(1200)는 셔플링 알고리즘(블록(1210))을 더 포함한다. 데이터 테이블은 프레임 내의 비트를 셔플링하기 위해 사용된다. 셔플링은 비트 마스크 배열, 대상 버퍼, 비트 인덱스, 바이트 오프셋 및 비트 오프셋을 사용한다. 데이터 테이블이 페이로드인 경우, TDK는 프레임 내의 비트를 셔플링하기 위해 사용된다.
이제 도 43을 참조하면, 셔플링 알고리즘이 더욱 상세하게 도시되어 있다. 알고리즘은 대상 버퍼를 초기화(예를 들어, 대상 버퍼를 모두 0으로 초기화)하는 단계(블록(1220))를 포함한다. 프레임 내의 각각의 비트 인덱스에 대해, 다음이 수행될 수 있다.
오프셋이 계산된다(블록(1222)). 예를 들어, 바이트 오프셋 = 비트 인덱스 / 8이 계산되고 비트 오프셋 = 비트 인덱스 % 8이 계산된다. 프레임 비트는, 비트 마스크[비트 오프셋] 논리곱(AND) 프레임[바이트 오프셋]이 모두 참인지를 검사함으로써 프레임 바이트 내의 비트가 설정되는지 여부를 결정하기 위해 검사된다(블록(1224)). 두 값이 모두 참이면, 데이터 테이블(즉, 대상 비트 인덱스 = DT[비트 인덱스])을 사용하여 대상 비트가 계산된다(블록(1226)). 대상 오프셋이 계산된다(블록(1228)). 예를 들어, 대상 바이트 오프셋 = 대상 비트 인덱스 / 8이고 대상 비트 오프셋 = 대상 비트 인덱스 % 8이다. 대상 비트가 설정된다(블록(1230)). 예를 들어, 대상 비트(DB)는 DB[대상 바이트 오프셋]과 동일하게 설정된다. 또 다른 예로서, DB = 마스크[대상 비트 오프셋]이다. 블록(1222-1230)은 프레임 내의 각각의 비트 인덱스에 대해 반복된다(블록(1232)). 단계(1208)의 일부로서 생성된 PRNG 데이터 벡터는 나중에 인코딩/디코딩 순차 전송에 사용하기 위해 게이트웨이의 메모리에 저장된다.
이제 도 44를 참조하면, 인코딩된 데이터 테이블을 게이트웨이로부터 수신하는 제어기에 의해 구현될 수 있는 디코딩 독립형 알고리즘(프로세스 1240)이 도시되어 있다. 프로세스(1240)는 인코딩된 프레임 내의 프레임 비트를 언-셔플링(un-shuffling)하는 셔플 함수(블록(1242))를 포함한다. 프로세스(1240)는 PRNG 데이터 벡터 또는 비밀로서 사용하기 위해, 프레임의 시작 부분에 위치한 순수 난수를 검색하는 단계(블록(1244))를 더 포함한다. PRNG는 비밀로 시드되고, PRNG로부터의 수는 프레임(예를 들어, 페이로드 및 CRC)을 XOR하기 위해 사용된다(블록(1246)). 이는 원래의 페이로드(예를 들어, 원래의 데이터 테이블)를 드러낸다. CRC는 제거되고(블록(1248)), 제어기는 페이로드와 난수에 대한 CRC를 계산하고 이를 제거된 CRC와 비교하여 제어기와 게이트웨이 간의 동기화를 보장한다. CRC 검사가 실패하는 경우, 수신기는 동기화를 손실했다는 결론을 내린다.
제어기와 게이트웨이 간에 동기화가 손실되는 경우, 제어기는 인코딩된 동기화 명령을 게이트웨이에 전송하기 위해 원래의 데이터 테이블(DT0)을 사용할 수 있다. 게이트웨이는 먼저 현재의 데이터 테이블을 사용하여 명령어를 디코딩하려고 시도할 것이다. 메시지를 디코딩하는 시도가 실패하는 경우, 게이트웨이는 원래의 데이터 테이블(DT0)을 사용하여 메시지를 디코딩하려고 시도할 수 있다. 게이트웨이가 DT0을 사용하여 메시지를 디코딩하는 데 성공하는 경우, 제어기가 동기화를 손실했다는(예를 들어, 이전의 데이터 테이블을 사용하고 있는다는) 결론을 내릴 수 있다. 제어기가 더 이상 현재의 데이터 테이블 또는 DT0을 갖지 않는 경우(예를 들어, 제어기에 전원이 끊긴 경우), 제어기는 비밀을 사용하여 상기한 바와 같이 TDK를 생성하고 TDK로 인코딩된 게이트웨이에 다시 동기화하라는 요청을 전송할 수 있다. 게이트웨이는 먼저 CRC 검사에 실패할 현재의 데이터 테이블을 사용하여 메시지를 디코딩하려고 시도할 것이다. 그리고 나서 게이트웨이는 마찬가지로 CRC 검사에 실패할 DT0을 사용하여 메시지를 디코딩하려고 시도할 것이다. 마지막으로, 게이트웨이는 TDK를 생성하기 위해 저장된 비밀 값을 사용하여 메시지를 디코딩하려고 시도할 것이다. TDK를 사용한 성공적인 디코딩은, 제어기에 전원이 끊긴 것을(그렇지 않으면 원래의 데이터 테이블을 손실했다는 것을) 게이트웨이에 보여준다. 그리고 나서 게이트웨이는 새로운 DT0을 생성하고, 도 41에서 상기한 바와 같이 TDK로 인코딩되고 독립형 메시지로서 인코딩된 제어기에 이를 전송할 수 있다.
제어기와 게이트웨이 간의 손실된 동기화의 또 다른 예로서, 게이트웨이는 제어기와의 동기화에서 벗어난 것을 알 수 있다(예를 들어, 제어기는 메시지를 보냈지만 범위를 벗어났고, 따라서 메시지는 게이트웨이에 의해 수신되지 않았지만 제어기는 이미 다음 테이블로 전환함). 게이트웨이는 인코딩 독립형 알고리즘을 사용하여 TDK로 인코딩된 제어기에 새로운 PRNG 데이터 벡터(실제 RNG를 시드로 사용하여 PRNG에서 생성됨)를 전송할 수 있다. 제어기는 (CRC 검사에 실패할) 현재의 데이터 테이블로 메시지를 디코딩하려고 시도할 것이다. 그리고 나서 제어기는 RAM에 저장된 (마찬가지로 CRC 검사에 실패할) DT0을 사용하여 메시지를 디코딩하려고 시도할 것이다. 그리고 나서 제어기는 저장했던 비밀을 사용하여 TDK를 생성할 수 있으며, (CRC 검사에 성공할) TDK를 사용하여 메시지를 디코딩하려고 시도할 수 있다. 게이트웨이는 또한 비밀로부터 TDK를 생성하고 데이터 테이블을 생성하기 위해 TDK를 사용한다.
제어기와 게이트웨이 간의 손실된 동기화의 또 다른 예로서, 제어기에 전원이 끊기고 더 이상 TDK를 갖지 않을 수 있다. 따라서 제어기는 게이트웨이가 보낸 새로운 비밀을 디코딩할 수 없다. 그리고 나서 제어기는 TDK를 생성하기 위해 저장된 비밀을 사용하고 게이트웨이에 재동기화 요청을 전송할 수 있으며, 요청은 TDK를 사용하여 인코딩된다. 게이트웨이는 현재의 데이터 테이블(실패), DT0(실패), 그리고 TDK(성공)을 사용하여 메시지를 디코딩하려고 시도한다. 게이트웨이는 인코딩 독립형 알고리즘을 사용하여 새로운 RNG(PRNG와 함께 사용되어 새로운 비밀 또는 PRNG 데이터 벡터를 찾음)를 제어기로 전송한다. 그리고 나서 게이트웨이는 TDK를 사용하여 데이터 테이블을 생성하고 이를 제어기로 전송한다.
일부 실시형태에서, 게이트웨이가 임계 시간량 동안 제어기와 통신하는 데 실패하는 경우, 모든 테이블을 폐기하고 후속 통신시 제어기와 함께 재초기화할 수 있다. 일부 실시형태에서, 새로운 데이터 테이블이 전송될 때마다, 상기한 바와 같이 새로운 비밀 또한 전송될 수 있다. 도 41 내지 도 44를 개괄적으로 참조하여, 데이터를 인코딩하고 디코딩하기 위한 인코딩 및 디코딩 독립형 알고리즘을 설명한다. 또 다른 실시형태에서, 전송될 데이터를 인코딩하고 디코딩하기 위해 인코딩 및 디코딩 순차적 알고리즘이 사용될 수 있다. 이제 도 45를 참조하면, 예시적인 인코딩 순차적 알고리즘 방법이 도시되어 있다. 순차적 알고리즘에서는 제어기와 게이트웨이가 모두 PRNG와 테이블의 상태를 유지한다. 모든 패킷에서, PRNG의 위치는 PRNG 데이터 벡터(초기에는 비밀이고 이후 PRNG가 이전 패킷에서 중단됨)에 따라 변경된다. 테이블은 페이로드 및 PRNG 시퀀스(즉, 테이블에 대한 데이터 기반 변경)에 따라 변경된다. 이를 "테이블 블록 체이닝"이라고 지칭할 수 있다.
순차적 알고리즘 동안 변경되는 테이블 부분의 크기는 설정 가능하며 "변경 크기"라고 지칭한다. 일 실시형태에서, 변경 크기는 소수일 수 있고 및/또는 데이터 테이블의 크기는 변경 크기로 균등하게 나뉘어져서는 안 된다. 순차적 알고리즘 동안 변경 벡터를 일시적으로 저장하기 위해 변경 크기와 동일한 크기의 테이블 수정 버퍼(table modification buffer; TMB)가 사용될 수 있다.
도 45의 프로세스(1300)를 참조하면, 프레임은 페이로드로 설정되고(블록(1302)), 페이로드에 대한 CRC가 계산된다(블록(1304)). CRC는 프레임의 끝에 추가된다(예를 들어, 도 42에 도시된 바와 같다). 독립형 알고리즘에서 위에서 설명한 바와 같이, (비밀을 사용하는) PRNG로부터의 값이 프레임과 XOR하기 위해 사용된다(블록(1306)).
첫 번째 변경 크기 XOR된 값들이 테이블 수정 버퍼에 복사된다(블록(1308)). 데이터 테이블은 프레임 비트를 셔플링하기 위해 사용되며(블록(1310)), 데이터 테이블은 다음 전송과 함께 사용하도록 수정된다(블록(1312)). 이제 도 46을 참조하여 테이블 수정 블록(1312)을 더욱 상세하게 설명한다. 데이터 테이블은 각각의 프레임 난독화 이후 수정될 수 있다. 테이블 수정 프로세스는 일반적으로 대체될 다음 값의 인덱스를 찾는 단계 및 값을 테이블 수정 버퍼 내의 해당 인덱스에 대한 값으로 대체하는 단계를 포함한다.
인덱스 i = 0으로 시작하여, TMB[i]에 저장된 값을 검색함으로써 스왑 인덱스 S를 찾는다(블록(1320)). 이후, 데이터 테이블에서 인덱스 i와 인덱스 S에 저장된 값을 스왑한다(블록(1322)). 이 프로세스는 테이블 수정 버퍼 내의 각각의 항목에 대해 반복된다(블록(1324)).
이후 데이터 테이블이 수정될 때, 수정은 이전의 반복에서 수정된 마지막 항목 다음의 항목으로 시작할 수 있다. 인덱스가 데이터 테이블 크기에 도달하면, 데이터 테이블의 시작 부분에서 행갈이를 하고 계속된다. PRNG 데이터 벡터는 방금 처리된 프레임의 길이만큼 증가되어 다음 번에 사용할 수 있다. 예를 들어, 변경 크기가 7로 결정되고 데이터 테이블의 크기가 12인 경우, DT0[0] 내지 DT0[6] 값을 DT0[S[0]] 내지 DT0[S[6]] 값과 스왑함으로써 DT0[S]를 기반으로 DT1이 생성되며, 여기서 S는 테이블 수정 버퍼이다. 이후, DT1[7] 내지 DT1[12] 값을 DT1[S[0]] 내지 DT1[S[6]] 값과 스왑함으로써 DT1를 기반으로 DT2가 생성되며, 여기서 S는 테이블 수정 버퍼 내에 저장된 새로운 값들을 포함한다.
또 다른 실시형태에서, 수정될 데이터 테이블의 부분은, 테이블의 중첩 부분을 각각의 후속 변경과 함께 변경하는 것과 같은 대안적인 방법으로 결정될 수 있다. 또 다른 실시형태에서, 데이터 테이블은 임계 개수의 프레임이 송수신된 후에만 변경될 수 있다. 또 다른 실시형태에서, 데이터 테이블의 모든 다른 비트만이 변경될 수 있다. 또 다른 실시형태에서, 테이블의 특정 부분은 건너뛸 수 있고 변경되지 않을 수 있다. 데이터 테이블 수정은 0 인덱스 대신 프라임 오프셋에서 시작할 수도 있다. 본 기술 분야의 숙련자는 수많은 대안적인 수정 또는 조합이 데이터 테이블을 수정하기 위해 구현될 수도 있다는 것을 알 것이다. 유사하게, 본 기술 분야의 숙련자는 PRNG 데이터 벡터를 수정하기 위한 수많은 대안 기술을 알 것이다.
단독으로, 각각의 XOR 함수 및 셔플 함수는 데이터 난독화를 위한 상대적으로 약한 방법이지만, 결합될 때 난독화의 강도는 해당 부분의 합보다 증가한다. 테이블 업데이트는 PRNG와 페이로드의 함수이다. 테이블은 XOR을 통해 수정된 페이로드 데이터를 기반으로 수정된다. 해커는 반복 공격을 통해 데이터를 판별할 수 없으므로, XOR과 셔플 함수 간에 테이블 업데이트를 수행하면 해킹 시도로부터 테이블 수정을 보호한다.
일 실시형태에서, 셔플 단계(블록(1310)) 이후, 다른 PRNG 시퀀스를 사용하여 추가 XOR이 이루어질 수 있다. 다른 PRNG 시퀀스를 사용하기 위해 다수의 PRNG 데이터 벡터가 교환되어 사용될 수 있다. 다른 실시형태에서, 도 45에 도시된 XOR 및 셔플 함수 외에, 적용된 추가 XOR 또는 추가 변환이 없을 수 있다.
일 실시형태에서, 위의 프로세스에서 설명한 바와 같이, PRNG 값은 셔플 테이블과 XOR된 후, XOR된 값은 데이터와 XOR되며, 결과적으로 XOR된 데이터는 셔플링된다. PRNG 값을 셔플 테이블과 XOR하면 PRNG를 감추고 평문 공격으로부터 PRNG를 방어한다. 도 45를 참조하면, 블록(1306)은 PRNG 값을 셔플 테이블과 XOR하는 단계를 포함할 것이고, 이 첫 번째 XOR 결과와 프레임을 XOR한다. 이는 각각의 프레임에 대해 수행된다. 또 다른 실시형태에서, 이는 제 1 프레임에 대해 이루어질 수 있지만, 후속 프레임들에 대해, PRNG 값을 사용하여 테이블과 XOR하는 대신에, 이전 프레임으로부터의 XOR된 데이터는 (셔플링 전에, 그러나 다른 모든 난독화 후에) PRNG 값 대신 셔플 테이블과 XOR된다. 이 실시형태는 처리 효율을 증가시킨다. 도 45를 참조하면, 블록(1306)은 PRNG 값 대신에 이전 프레임으로부터의 XOR된 데이터를 새로운 프레임과 XOR하는 단계를 포함할 것이다. 이러한 각각의 실시형태에서, 디코딩 프로세스는 데이터를 디코딩하는 미러 단계를 포함한다.
제어기는 게이트웨이로부터 인코딩된 전송을 수신하고, 데이터를 디코딩하기 위해 디코딩 순차적 알고리즘을 사용할 수 있다. 제어기는 데이터 테이블을 사용프레임 비트를 언-셔플링할 수 있으며 언-셔플링된 테이블은 테이블 수정 버퍼에서 사용될 수 있다. 데이터 테이블은 이후 테이블 수정 버퍼 내의 테이블을 사용하고 도 46에 도시된 동일한 수정 단계를 사용하여 다음 전송과 함께 사용하기 위해 수정된다. 이후, PRNG로부터의 수는 프레임을 XOR하기 위해 사용되어, 페이로드와 CRC를 드러낸다. 마지막으로, 제어기는 페이로드에 대한 CRC를 계산하고 이를 프레임으로부터의 CRC와 비교하여 제어기가 게이트웨이와 동기화되어 있는지 검증한다. CRC가 동일한 경우, 메시지는 제어기에 의해 받아들여지고, PRNG 데이터 벡터는 프레임의 길이만큼 증가되어 다음 전송을 위해 사용된다.
도 38 내지 도 46를 개괄적으로 참조하여, 통신이 완전하다고 보장되지 않은 다수의 장치 와 게이트웨이 간의 통신 프로토콜을 용이하게 하기 위한 프로토콜 및 알고리즘을 설명한다. 이제 이하의 단락을 참조하여, 게이트웨이와 원격 서버 간의 더 높은 대역폭 통신을 용이하게 하는 알고리즘을 설명한다. 더 높은 대역폭의 통신이 가능한 경우, 정보는 일반적으로 TCP-IP를 통해 실행되도록 구성될 수 있다. TCP-IP 프로토콜을 사용함으로써, 페이로드의 전송은 TCP-IP 프로토콜에 내장된 재전송 기술로 인해 완전한 것으로 보장된다. 이들 경우, 알고리즘은, 주어진 데이터 패킷(예를 들어, 데이터 테이블)에 대해, 테이블 크기(예를 들어, 상기한 바와 같은 데이터 테이블의 크기)로 나뉠 수 있는 프레임 크기를 받아들일 수 있다. 예를 들어, 테이블 크기가 160인 경우 알고리즘은 1600 바이트 프레임을 받아들일 수 있다. 또 다른 예로서, 테이블 크기가 256인 경우, 알고리즘은 1024 바이트 프레임을 받아들일 수 있다.
각각의 프레임은 다수의 블록으로 구성되며, 블록은 데이터 테이블 크기와 동일한 크기를 갖는다. 알고리즘은 각각의 블록을 인코딩한다. 도 38 내지 도 46의 알고리즘과 비교하여, 이들 블록을 코딩하기 위한 알고리즘은 동일한 방식으로 작동할 수 있지만 블록을 검사하기 CRC를 사용할 필요는 없다.
TCP-IP 프로토콜을 사용할 때의 인코딩 알고리즘은, 주어진 프레임에 대해, PRNG로부터의 수를 사용하여 프레임을 XOR함으로써 원래의 페이로드를 숨기고 평문 공격이 데이터 테이블을 디코딩하려고 하는 것을 방지하는 단계를 포함한다. XOR된 값은 데이터 테이블 업데이트에 사용하기 위해 TMB에 복사된다. 이후, 프레임 비트를 셔플링하기 위해 데이터 테이블이 사용되고, (상기한 바와 같이) TMB를 사용하여 데이터 테이블이 수정된다. 셔플링 이후 다른 PRNG 시퀀스를 사용하여 추가 XOR이 이루어질 수 있다. 다른 실시형태에서, 추가 XOR 단계가 없을 수 있거나, 기본 XOR 및 셔플링 단계에 추가 변환이 추가될 수 있다.
수반되는 디코딩 알고리즘에서, 들어오는 인코딩된 버퍼를 XOR하기 위해 사용된 PRNG 데이터 벡터(예를 들어, 비밀)로 PRNG가 시드된다. 이후, 데이터 프레임 내의 비트를 언-셔플링하기 위해 데이터 테이블이 사용된다. 그리고 나서, 데이터 테이블은 TMB와 같은 언-셔플링된 버퍼를 사용하여 수정된다. 이후, 프레임을 XOR하기 위해 PRNG로부터의 수가 사용되어, 원래의 페이로드를 드러낸다.
일부 실시형태에서, 통신 프로토콜은 다수의 장치 간에 생성될 수 있으며, 여기서 다수의 장치는 하나 이상의 고정국과 하나 이상의 이동 장치를 포함한다. 예를 들어, 본원에 기술된 시스템 및 방법은 다수의 사용자의 이동 장치 및 예를 들어 빌딩, 이동 경로 등의 다수의 고정국 간의 통신을 관리하기 위해 적용될 수 있다. 다양한 운송 관리를 위한 고정국의 예가 이하에서 사용되며, 다른 실시형태에서 고정국은 영역을 관리하고, 자원을 할당하는 등의 모든 유형의 고정국일 수 있다.
고정국은 일반적으로 정보를 송수신하기 위해 제한된 양의 스펙트럼을 가질 수 있다. 고속 통신을 제공하기 위해, 고정국은 고정국과 동시에 통신하는 사용자의 수를 제한할 필요가 있을 수 있다. 따라서, 고정국의 전체 네트워크가 더 많은 사용자를 수용할 수 있게 하기 위해, 다수의 고정국이 서로에 대해 비교적 가깝게 배치될 수 있고, 이동 장치는 서비스 중단 없이 세션을 유지하면서 고정국 간에 전환할 수 있다. 이동 장치와 고정국 간의 인증은, 이동 장치가 이동하고 다수의 고정국으로부터 패키지를 수신하며 고정국이 다수의 이동 장치로부터 패키지를 수신할 때 발생한다. 본원에 기술된 시스템 및 방법은 아래에 설명하는 바와 같이 패키지를 인증하고 난독화하기 위해 양 당사자(즉, 고정국 및 이동 장치)에게 알려진 키를 사용한다. 특히, 고정국과 이동 장치 간에 패키지를 인증하고 디코딩하기 위해 사용되는 키를 이동 장치에 동적으로 제공하기 위한 예측 알고리즘을 설명한다.
도 47을 참조하면, 다수의 고정국(1402)과 다수의 이동 장치(1404)를 포함하는 환경(1400)이 도시되어 있다. 상기한 바와 같이, 다수의 고정국(1402)은 서로에 대해 비교적 가깝게 배치될 수 있고, 전략적인 이유로(예를 들어, 하나의 영역에서 더 큰 무선 네트워크 범위를 제공하기 위해) 임의의 패턴 또는 순서로 배열될 수 있다. 이동 장치(1404)는, 예를 들어, 서로 다른 고정국(1402)의 범위 내외에서 환경(1400) 주위를 돌아다니는 이동 전화, 이동하는 물체 또는 차량 등에 부착된 장치일 수 있다. 도시된 바와 같이, 이동 장치(1404)는 이동함에 따라 고정국(1402)에 대해 임의의 위치에 있을 수 있으며, 다수의 고정국의 범위 내에 있을 수 있다. 본원에 기술된 시스템 및 방법을 사용하여, 이동 장치(1404)는 제 1 고정국에 연결되어 보안 전송과의 세션을 설정한 다음, 제 2 고정국에 연결되어 동일한 보안 전송과 동일한 세션을 유지할 수 있다.
일 실시형태에서, 이동 장치 또는 다른 이동 플랫폼은 다수의 사용자를 가질 수 있다. 예를 들어, 위에서 언급한 이동 경로의 예를 사용하면, 이동 플랫폼은, 일부 자동차 승객이 전화 통화를 하거나 영화를 보면서 다수의 고정국으로부터 교통 정보를 수신할 수 있는 스마트 자동차일 수 있다. 또 다른 예로서, 이동 플랫폼은, 각각의 사용자가 인터넷을 검색하는 동안 선로 상태 정보를 수신할 수 있는 열차일 수 있다. 고정국은 운송 수단의 시선 또는 경로 내에 위치할 수 있다. 고정국은 예를 들어 고속 통신 채널을 통해 네트워크에 연결된 네트워크화된 고정국일 수 있다. 또 다른 예로서, 고정국은 이동 장치에 정보(예를 들어, 선로가 폐쇄되거나 교통량이 많은 경우, 열차가 정지하거나 속도를 낮추도록 경고하는 것과 같은, 열차 선로의 상태에 관한 정보)를 제공하는 정보 고정국일 수 있다. 스마트 도시 정보 시스템에서, 이들 고정국은 차량이 이동 시간을 최소화할 수 있도록 교통량을 동적으로 균형을 잡기 위해 사용될 수 있다. 고정국은 네트워크화되어 있지 않은 경우 철로의 원격 고정국의 경우에서와 같이 통과하는 차량에 의해 업데이트될 수 있다.
이러한 통신 프로토콜로 전송된 패키지는 임의의 크기일 수 있고, 전체 패키지 또는 패키지의 단지 일부가 본원에 기술된 시스템 및 방법을 통해 난독화될 수 있다. 패키지는 예를 들어 CRC 값을 사용하여 인증될 수 있다. 또 다른 예로서, 패키지는, 패키지 내의 타임 스탬프 정보를 식별하고, 패키지 상의 타임 스탬프와 대상 장치 상의 현재 시간을 비교하여 패키지가 최근의 것인지를 확인함으로써 인증될 수 있다.
패키지는 고정국에 대한 예상 연결 횟수 및 고정국과 이동 플랫폼 간의 세션을 달성하기 위해 이용 가능한 시간량에 따라 전체적으로 또는 부분적으로 인코딩될 수 있다. 일부 패키지는 세션 ID 번호 또는 고정국에서 시기 적절하게 처리되는 또 다른 식별 방법을 포함할 수 있다. 이들 값을 인코딩하지 않으면, 전체 패키지는 고정국에 의해 더욱 신속하고 가공하고 처리될 수 있다. 명확한 식별 값은 또한 사용자의 신원을 추측할 필요 없이 고정국이 정확한 데이터 테이블로 패키지를 디코딩하는 것을 가능하게 한다.
이제 도 48을 참조하면, 고정국에 대해 패키지를 전송하기 위한 예시적인 방법(1500)이 도시되어 있다. 방법(1500)은 페이로드(1502)와 패딩된 값(1504)으로 구성된 패키지로 시작한다. 패딩된 데이터(1504)는 페이로드(1502)의 인코딩, 디코딩 및 인증을 용이하게 하기 위해 미리 존재하는 패딩된 데이터일 수 있다. 패딩된 데이터(1504)는 해시, 타임스탬프, CRC, 또는 다른 값일 수 있다. 값을 생성하는 대신에, 데이터를 인코딩하고 디코딩하기 위해 패딩된 데이터(1504)를 사용함으로써, 패키지(1500)의 전체 크기에 추가가 없다.
전송을 위해 패키지를 포맷할 때, 패딩된 데이터(1504)는 우선 패키지에서 추출되고, 의사 난수(1406)를 생성하는 PRNG의 시드로서 사용된다.
다음으로, 의사 난수(1506)를 사용하여 페이로드(1502)에 대해 XOR이 수행된다. 이는 원래의 페이로드를 숨기고 평문 공격으로부터 데이터를 방어한다. 이는 또한 상기한 바와 같이 PRNG를 셔플/스크램블링 테이블과 XOR하는 단계 및/또는 PRNG을 이전 프레임의 XOR된 데이터로 대체하는 단계를 포함할 수 있다. 추출된 패딩된 데이터(1504)는 XOR된 페이로드(1502)에 다시 첨부되고, 전체 패키지가 스크램블링된다(1508).
스크램블링된 패키지(1508)는 목적지에서 송수신된다. 목적지에서, 패키지(1508)는 언스크램블링되고, 패딩된 데이터(1504)는 이의 알려진 위치에서 추출된다. 이후 패딩된 데이터(1504)는 PRNG를 시드하기 위해 사용되어, 송신기와 동일한 의사 난수를 생성한다. 페이로드(1502)는 의사 난수와 XOR되어 원래의 페이로드를 생성한다.
추출된 데이터의 특성에 따라 페이로드의 진위를 검증하는 몇 가지 방법이 있다. 일례로서, 예상 CRC 값이 계산되고 추출된 CRC와 비교된다. 또 다른 예로서, 페이로드의 예상 해시가 계산되고 추출된 해시와 비교된다. 또 다른 예로서, 타임 스탬프가 목적지의 현재 시간과 비교된다.
일 실시형태에서, 스크램블링 알고리즘은 페이로드의 크기와 관련된 XOR 및 스크램블의 범위를 조정함으로써 명확한 식별 값을 유지하도록 수정될 수 있다. 유사하게, 식별 값은 패딩된 데이터로 취급되고 나머지 패키지를 XOR하기 위해 사용될 수 있다. 그러나 스크램블은 패딩된 데이터를 제외시키고 이를 평문으로 유지한다.
키는 패키지를 디코딩하기 위해 사용된다. 고정국 및 이동 장치 환경에서 키를 제공하는 한 가지 방법이 도 49에 도시되어 있다. 세션 서버(1602)는 이동 장치가 경로에서 이동함에 따라 이동 장치에 키를 동적으로 프로비저닝하기 위해 사용된다. 세션 서버(1602)는 셀 타워(1506)(예를 들어, 고정국)와의 통신을 유지한다. 타워(1606)에 전원이 켜지면(예를 들어, 온라인 상태가 되면), 세션 서버(1602)와 세션이 설정된다.
정책 서버(1604)는 통신 서버로 이동 장치(예를 들어, 사용자)에 권한을 부여할 수 있다. 이동 장치(1608)의 전원이 켜지면, 장치는 테이블 기반 키를 갖지 않는다. 필요한 키를 획득하기 위해, 이동 장치(1608)는 네트워크에 대해 인증하고 네트워크를 사용하기 위한 허가증을 수신할 수 있다. 이동 장치(1608)는 정책 서버(1604)와의 세션을 설정하기 위해 공개 키 기반 구조(public key infrastructure; PKI)를 사용할 수 있다. 세션은 셀룰러 네트워크를 통해 또는 네트워크화된 타워와 통신함으로써 설정될 수 있다. 네트워크 타워는 부트스트랩 요청을 정책 서버(1604)에 전송할 수 있다.
정책 서버(1604)와의 연결이 설정되면, 서명된 인증서를 이동 장치(1608)에 전송한다. 장치는 인증서의 진위를 검증하기 위해 PKI를 사용하고, 인증된 것인 경우, 정책 서버(1604)의 공개 키로 인코딩된 비밀을 생성하고 이를 전송한다. 정책 서버(1604)는 비밀을 오픈하기 위해 자신의 개인 키를 사용한다. 대화의 양측은 의사 난수 시퀀스를 생성하기 위해 비밀을 사용하고 KDT를 생성하기 위해 이들 수를 사용한다. KDT가 생성된 후, 정책 서버(1604)는 세션 데이터 테이블을 생성하고 이를 KDT를 사용하여 장치(1608)에 전송한다. 사용자 자격 증명은 데이터 테이블을 사용하여 정책 서버(1604)와 교환된다. 사용자(예를 들어, 이동 장치(1608))가 서비스를 사용할 수 있는 권한이 부여되는 경우, 정책 서버(1604)는 세션을 세션 서버(1602)에 전달한다.
세션이 정책 서버(1604)로부터 전달될 때, 세션 서버(1602)는 사용자 근처에 있는 고정국을 찾는다. 세션 서버(1602)는 장치에 전송될 고정국 세트를 식별할 수 있다. 사용자는 식별된 경로 외부 또는 식별된 경로 내에 있을 수 있다. 사용자가 식별된 경로에 있지 않을 때, 식별된 고정국 세트에는 모든 경로 중 가장 가까운 고정국이 포함된다. 사용자가 식별된 경로에 있는 경우, 사용자의 방향과 속도는 GPS를 사용하여 계산될 수 있으며 사용자에게 제공할 고정국 세트에는 이전 고정국의 일부 수(P) 및 다음 고정국의 수(N)이 포함되며, 일반적으로 P는 N보다 작다.
다음 고정국의 수(N)는 다음 네트워크화된 고정국 및 네트워크되지 않은 고정국을 포함한다. 사용자의 위치와 다음 네트워크화된 고정국 간의 모든 네트워크화되지 않은 고정국이 고정국 세트에 포함된다. 네트워크화되지 않은 고정국 외에도, 포함될 다음 네트워크화된 고정국이 경험적으로 결정된다. 예를 들어, 경로에 다가오는 분기점이 있는 경우, 분기점을 따른 고정국의 DNS가 경로를 따른 DNS와 함께 포함될 것이다.
세션 서버(1602)는 장치의 데이터 테이블을 고정국 세트 내의 네트워크화된 고정국에 전송한다. 경우에 따라서는 모든 루트 내의 모든 고정국이 장치(1608)에 전송되어 모든 고정국의 인증을 허용할 수 있다. 이는, 예를 들어, 모든 자동차가 네트워크 통신용 백본을 사용하지 않더라도 고정국을 인증하는 방법을 갖는 자동차 경고 시스템에서, 또는 이동할 수 있는 모든 선로를 따라 모든 고정국을 인증할 필요가 있는 기관차에 의해 사용될 수 있다.
이 시점에서, 장치(1608)는 타워(1606)와 인증하기 위해 이의 데이터 테이블을 사용할 수 있다. 데이터 테이블 세션 서버(1602)를 사용하면 가까운 타워 테이블을 장치에 전송할 것이다. 타워 테이블은 타워 브로드캐스트 메시지를 인증하기 위해 사용된다.
고정국과 사용자 간의 메시지는 데이터 테이블로 암호화된다.
다음 고정국의 키-테이블은 사용자 장치(1608)에 전송된다. 시스템은 불만이 있는 사용자가 고정국의 키 테이블을 획득하는 것을 방지하고, 실제 고정국인 것처럼 정보를 제공하기 위해 해당 키 테이블을 사용하는 것을 방지할 필요가 있다.
고정국 세트 내의 키는 사용자의 세션 키 데이터 테이블로 암호화되며, 시스템에 의해 장기 저장장치(예를 들어, 하드 디스크)에 절대로 저장되지 않는다.
모든 고정국 키가 사용자의 장치에 있는 경우, 이들은 사용자의 데이터 테이블로 암호화되고, 데이터 테이블 자체는 패스워드로 암호화될 것이다. 패스워드는 데이터 테이블을 메모리로 이동시키기 위해 사용되며, 키는 메모리로 이동할 때 디코딩된다. 이와 같이, 상자가 이동 플랫폼이나 이동 사용자(예를 들어, 차량이나 기차)에서 도난 당하면, 키는 복구될 수 없다.
키가 인증을 위해 사용될 때, 메시지의 일부는 사용자 또는 고정국 키 테이블로 암호화된다. 대화의 수신단은 패키지의 난독화된 부분을 디코딩하고 진위를 검증한다. 이는 타임 코드와 같은 데이터의 일부 알려진 부분을 인코딩하여 페이로드의 CRC를 인코딩함으로써 이루어질 수 있다. 패키지가 디코딩된 후, CRC 또는 데이터의 알려진 부분이 패키지를 인증하기 위해 사용된다.
고정국은 인증된 패키지만을 전달하도록 구성될 수 있다. 완전한 난독화가 필요한 경우, 페이로드는 본원에서 앞서 설명한 바와 같이 별도의 사용자 간 세션 키를 사용하여 난독화될 수 있다.
패키지는 타임 스탬프를 포함할 수 있고 고정국 키로 인코딩될 수 있다. 고정국이 인증되지 않은 받는 메시지를 거부하도록 함으로써, 서비스 거부 공격을 피할 수 있다.
이제 도 55 및 도 56을 개괄적으로 참조하여 네트워크 액세스 제어 시스템을 설명한다. 네트워크 액세스 제어 시스템은 일반적으로, 예를 들어 인증서 목록을 관리하거나, 만료된 인증서를 관리하거나, 인증서 취소 목록을 관리하거나, 권한 취소 목록을 관리하는 등의 인증서를 관리할 필요 없이, 네트워크 내의 다수의 노드를 프로비저닝하고 관리할 수 있다. 본 개시를 개괄적으로 참조하여 노드 간의 통신을 위한 난독화 기술을 제공하기 위한 다양한 시스템 및 방법이 기술되며, 다음의 설명은 노드 간에 난독화된 데이터가 전송될 수 있도록 노드 간에 인가된 통신을 설정하기 위한 시스템 및 방법을 기술한다.
도 50을 참조하면, 네트워크 액세스 제어 시스템(1700)의 하이 레벨 블록도가 도시되어 있다. 네트워크 액세스 제어 시스템(1700)은 일반적으로 액세스 요청자(1702), 네트워크 액세스 서버(1704) 및 정책 서버(1706)를 포함한다. 액세스 요청자(1702)는 네트워크에 연결되도록 구성된 임의의 장치(예를 들어, 네트워크(1710) 내의 다양한 노드에 연결하려고 하는 이동 장치, 네트워크 내의 노드 중 하나 등)일 수 있다. 장치는 본 개시에서 개괄적으로 설명한 모든 유형의 장치일 수 있다. 네트워크 액세스 서버(1704)는 액세스 요청자(1702)(예를 들어, 사용자 장치)로부터 요청을 수신하고 네트워크(1710) 내의 다수의 노드(1708)로의 연결을 제공한다. 노드(1708)는 다양한 실시형태에 따라 실제 또는 가상 머신일 수 있다. 정책 서버(1706)는 일반적으로 다양한 노드(1708) 간의 통신을 인증할 수 있으며, 상기한 정책 서버(702 및 1604)와 유사할 수 있다.
네트워크 액세스 제어 시스템에서, 액세스 요청자(1702)는 네트워크 액세스 서버(1704)와 보안 링크를 통해 통신하고, 이는 액세스 요청자(1702)가 인증되면 보안 링크를 통해 정책 서버(1706)와 통신한다. 이어서 정책 서버(1706)는 네트워크(1710) 내의 노드(1708)로의 액세스 요청자(1702)에 대한 액세스 권한을 결정한다. 종래 기술에서, 노드와 서버 간의 각각의 링크는 전송 계층 보안(Transport Layer Security; TLS) 프로토콜과 같은 프로토콜에 의해 보안될 수 있고, 인증서는 장치 간의 연결을 보안하기 위해 사용된다. 노드(1708)는 본 개시에서 개괄적으로 설명한 모든 유형의 머신 또는 장치(예를 들어, 실제 머신, 가상 머신, 플랫폼 구성요소, 소프트웨어 구성요소 등)일 수 있다.
이제, 본 개시를 개괄적으로 참조하여 네트워크 액세스 제어 시스템을 설명한다. 도 51 내지 도 56의 실시형태에서, 노드는 인증서를 관리할 필요 없이 통신을 위해 프로비저닝된다. 도 51을 참조하면, 네트워크(1710)에서 세션을 설정하는 프로세스(1800)가 도시되어 있다. 프로세스(1800)는 안전하게 비밀을 교환하는(블록(1802)) 두 개의 노드를 포함하고, 그 후 두 노드 모두 PRNG를 시드하기 위해 비밀을 사용한다. PRNG의 출력은 키 분배 테이블을 생성하기(블록(1804)) 위해 사용된다. 노드 중 하나는 데이터 테이블을 생성하고(블록(1806)), 키 분배 테이블을 사용하여 다른 노드와 교환된다(블록(1808)). 데이터 테이블은 이후 PRNG와 데이터를 기반으로 노드 간의 모든 패킷 교환에서 수정된다. 프로세스(1800)는 위의 본 개시에서 개괄적으로 설명한 바와 같이 세션을 설정하는 프로세스이며, 다음의 도면은 네트워크에서 세션을 설정할 노드를 프로비저닝하는 프로세스를 설명한다.
이제 도 52A 및 도 52B를 참조하면, 네트워크 내의 노드의 프로비저닝이 더욱 상세하게 도시되어 있다. 특히, 도 52A는 네트워크 액세스 서버(1904)에 의해 네트워크에서 노드가 사용될 수 있게 하는 네트워크 내의 노드(1908)의 구성을 도시하고 있다. 네트워크 내의 노드의 구성을 용이하게 하기 위해, 오퍼레이터는 노드(1908)에 액세스하여 구성 프로그램(1912)을 시작할 수 있다. 구성 프로그램(1912)은 일반적으로 네트워크 액세스 서버 공개 키(1914)를 사용하여 네트워크 액세스 서버(1904)와 인증하도록 구성된다. 이어서, 네트워크 액세스 서버 공개 키(1914)는 네트워크 액세스 서버(1904)와 비밀을 교환하기 위해 사용되고, 노드(1908)와 네트워크 액세스 서버(1904) 간에 세션(1916)이 설정된다. 도 52A의 실시형태는 네트워크 액세스 서버 공개 키를 도시하고 있지만, 다른 실시형태에서, 노드에서 네트워크 액세스 서버를 인증하기 위해 다른 인증 방법(예를 들어, 509 인증서)이 사용될 수 있다. 본 발명의 또 다른 실시형태에서, 보안 세션은, 디피 헬만과 같은 키 교환 알고리즘을 사용하거나, Erdem Alkim(https://eprint.iacr.org/2015/1092.pdf)에 의한 "포스트 양자 키 교환-새로운 희망(Post-Quantum Key Exchange - a New Hope"에 개시된 바와 같이, 또는 프로도(Frodo) 키 교환에 의해 설정될 수 있으며, 보안 세션이 설정된 후 또는 사용자 패스워드가 교환되기 전에 서버가 인증될 수 있다.
네트워크 액세스 서버(1904)와의 세션이 설정되면, 구성 프로그램(1912)는 오퍼레이터 자격 증명(예를 들어, 사용자의 자격 증명)을 네트워크 액세스 서버(1904)에 전송한다. 네트워크 액세스 서버(1904)는 정책 서버(1906)와 사용자를 인증할 수 있고, 사용자가 노드(1908)를 구성할 권한이 있는지를 검증한다.
구성 프로그램(1912)에 의한 구성은 노드(1908)에 대해 키 분배 테이블을 생성하는 단계 및 키 분배 테이블을 노드의 보안 저장장치(1918)에 저장하는 단계를 포함한다. 키 분배 테이블은, 키 분배 테이블(및 다른 노드 정보)을 서버 보안 데이터베이스(1920)에 저장하는 네트워크 액세스 서버(1904)에 제공된다. 또 다른 실시형태에서, 키 분배 테이블을 저장하는 대신에, 개인/공개 키가 저장을 위해 노드(1908)에 대해 생성될 수 있고, 노드의 개인 키는 노드에 저장되는 반면, 공개 키는 저장을 위해 네트워크 액세스 서버(1904)로 전송된다.
이제 도 52B를 참조하면, 노드를 프로비저닝하는 프로세스(1950)가 더욱 상세하게 도시되어 있다. 특히, 프로세스(1950)는 액세스 요청자로부터 요청을 수신하면 네트워크 액세스 서버로부터 노드를 프로비저닝하는 프로세스를 나타낸다. 네트워크 액세스 서버는 프로세스(1950)에서 가상 머신(VM)에서 노드를 시작하도록 구성된다.
프로세스(1950)에서, 노드는 도 52A에서 설명한 바와 같이 이미 프로비저닝을 위해 구성된다. 프로세스(1950)는 노드의 이미지를 찾는 단계(블록(1952))를 포함한다. 블록(1952)은 일반적으로 적절한 운영 소프트웨어 또는 다른 소프트웨어를 갖는 노드의 이미지를 찾기 위한 네트워크 액세스 서버를 포함할 수 있다. 블록(1952)은 일반적으로 임의의 원하는 설정 또는 특성을 갖는 노드의 이미지를 검색하는 단계를 더 포함할 수 있다.
프로세스(1950)는 노드 이미지의 사본을 생성하는 단계(블록(1954)) 및 노드 이미지의 사본을 마운트하는 단계(블록(1956))를 더 포함한다. 네트워크 액세스 서버는 이미 노드에 대한 보안 액세스를 갖고 있기 때문에 노드 이미지의 사본에 키 배포 테이블을 기록한다(블록(1958)). 네트워크 액세스 서버는 VM에 노드 이미지의 사본을 로드하고(블록(1960)), 키 분배 테이블은 네트워크 액세스 서버의 저장장치에 저장된다(블록(1962)).
본 개시에서 설명한 프로비저닝 시스템은 모든 유형의 운영 환경을 통해 구현될 수 있다. 예를 들어, 서비스로서의 인프라(Infrastructure as a Service; IaaS), 서비스로서의 플랫폼(Platform as a Service; PaaS) 또는 서비스로서의 소프트웨어(Software as a Service; SaaS) 모델을 통해 프로비저닝이 이루어질 수 있다. IaaS 모델에서, 프로비저닝이 가상 플랫폼을 통해 달성될 수 있고, 가상 머신과 노드 간에 연결을 설정할 수 있다. PaaS 모델에서는, 프로비저닝이 데이터베이스, 웹 페이지 등과 같은 물리적 또는 가상 서비스를 통해 달성될 수 있다(예를 들어, 데이터베이스와 노드 간의 연결을 설정한다). SaaS 모델에서는, 프로비저닝이 소프트웨어 애플리케이션을 통해 달성될 수 있다(예를 들어, 브라우저와 노드 간의 연결을 설정한다). 도 53 내지 도 55를 개괄적으로 참조하여 각각의 유형의 운영 환경(IaaS, PaaS, SaaS)에서의 프로비저닝을 더욱 자세하게 설명한다.
도 53은 네트워크 내의 노드 간의 IaaS 세션을 설정하는 프로세스를 나타내는 블록도이다. 액세스 요청자(1902)는 노드(1908)의 사용을 요청(블록 2002으로 나타냄)하기 위해 상기한 바와 같이 네트워크 액세스 서버(1904)와의 보안 세션을 설정할 수 있다. 정책 서버(1906)는 요청(링크 2004로 나타냄)을 수신하고 노드(1908)를 사용하기 위해 액세스 요청자(1902)를 인증하고 권한을 부여한다(블록 2006으로 나타냄). 노드(1908)는 실제 또는 가상 머신일 수 있다.
그리고 나서 네트워크 액세스 서버(1904)는 액세스 요청자(1902)의 터미널 클라이언트(2014)와 노드(1908)의 터미널 클라이언트(2016) 간의 통신에 사용될 데이터 테이블을 생성한다(블록 2008로 나타냄). 데이터 테이블은 네트워크 액세스 서버(1904)에 의해 노드의 키 분배 테이블로 암호화된다(블록 2010으로 나타냄). 데이터 테이블과 암호화된 키는 액세스 요청자(1902)의 단말기 클라이언트(2014)로 전송된다(링크 2012로 나타냄). 단말기 클라이언트(2014)는 노드(1908)의 터미널 클라이언트(2016)와의 연결을 오픈하기 암호화된 키를 전달한다. 이 암호화된 키는 노드의 키 분배 테이블을 사용하여 노드에 의해 디코딩되고 액세스 요청자(1902)와 노드(1908) 간의 세션을 시작하기 위해 사용된다.
도 54는 네트워크 내의 노드 간의 PaaS 세션을 설정하는 프로세스를 나타내는 블록도이다. 도 54의 예는 플랫폼으로서 데이터베이스(2020)와의 보안 연결을 설정하는 것을 도시하고 있다. 플랫폼 구성요소는 플랫폼의 미들웨어를 통해, 예를 들어, 도 52B의 프로세스(1950)를 사용하여 프로비저닝된다. 도 54의 예에는, nodeJs 애플리케이션과 데이터베이스 간의 상호작용이 도시되어 있다. 본원의 시스템 및 방법은 다른 애플리케이션 및 플랫폼에 적용될 수 있다는 것을 알아야 한다.
애플리케이션(2022)이 데이터베이스(2020)와의 보안 연결을 설정할 필요가 있을 때, 미들웨어(2024)는 호출을 차단할 수 있다(링크 2026으로 나타냄). 미들웨어(2024)는 네트워크 액세스 서버(1904)와의 보안 연결을 오픈하고(링크 2028로 나타냄), 자격 증명(2030)(예를 들어, 사용자 자격 증명, 애플리케이션 자격 증명)을 서버에 전달한다. 네트워크 액세스 서버(1904)는 애플리케이션의 인증 및 허가를 검증하고, 애플리케이션(nodeJS(2022))에 대해 새로운 데이터 테이블을 제공하며 데이터베이스(2020)에 대해 키 분배 테이블로 암호화된 데이터 테이블의 사본을 제공한다.
미들웨어(2024)는 수신된 키(데이터 테이블)를 유지하고(링크 2032로 나타냄) 암호화된 키(암호화된 데이터 테이블)를 전송하기 위해 데이터베이스(2020)에의 연결을 오픈한다(링크 2034로 나타냄). 데이터베이스(2020)는 키 분배 테이블(블록 2036으로 나타냄)을 저장하고, 이를 애플리케이션(2022)에 의해 제공될 때 데이터 테이블을 디코딩하기 위해 사용한다. 그리고 나서 애플리케이션과 데이터베이스 간에 보안 연결이 설정된다(블록 2038로 나타냄)
도 55는 네트워크 내의 노드 간의 SaaS 세션을 설정하는 프로세스를 나타내는 블록도이다. 도 55의 실시형태는 노드와의 연결을 설정하기 위해 액세스 요청자(1902)가 사용하는 소프트웨어 애플리케이션으로서 브라우저를 도시하고 있으며, 다른 실시형태에서는 모든 유형의 소프트웨어 애플리케이션이 사용될 수 있다. 액세스 요청자(1902)가 브라우저(2040)를 통해 애플리케이션을 사용할 때, 애플리케이션(2042)은 브라우저에 다운로드된다. 그리고 나서 애플리케이션(2042)은 네트워크 액세스 서버(1904)와의 보안 세션에서 실행될 수 있다(링크 2044로 나타냄). 보안 세션은 TLS 또는 임의의 다른 프로토콜을 통해 설정될 수 있다. 애플리케이션(2042)은 예를 들어 AngularJS 애플리케이션일 수 있다.
액세스 요청자(1902)가 네트워크 액세스 서버(1904)(및 정책 서버(1906))에 의해 인증되고 권한을 부여 받을 때, 서버는 새로운 데이터 테이블 및 소프트웨어 구성요소 키 분배 테이블로 암호화된 데이터 테이블을 브라우저(2040))에 제공한다(링크 2046으로 나타냄). 애플리케이션(2042)은 소프트웨어 백 엔드(2048)와의 연결을 오픈하고 암호화된 데이터 테이블을 소프트웨어 백 엔드에 제공한다. 소프트웨어 백 엔드(2048)는, 브라우저(2040) 내의 애플리케이션(2042)과 애플리케이션의 서버 구성요소 간의 연결을 설정할 수 있도록, 데이터 테이블을 복호화하기 위해 저장된 키 분배 테이블(블록 2050으로 나타냄)을 사용한다.
이제 도 56을 참조하면, 세션이 다수의 노드 간에 분배되거나 이동되는 방법을 나타내는 블록도가 도시되어 있다. 도 56의 실시형태에서, 액세스 요청자(1902)는 제 1 노드(2102)와의 세션에 있다(링크 2112로 나타냄). 액세스 요청자(1902)가 네트워크 액세스 서버(1904)에 추가 자원을 요청할 때(링크 2114로 나타냄), 서버는 요청을 수용하기 위해 세션이 제 2 노드(2104)로 이동되어야 한다는 것을 결정할 수 있다. 네트워크 액세스 서버(1904)는 액세스 요청자(1902)에 새로운 세션 키를 전송한다(링크 2116으로 나타냄). 새로운 세션 키는 제 1 노드(2102)의 키 분배 테이블로 암호화된 데이터 테이블 및 제 2 노드(2104)의 키 분배 테이블로 암호화된 데이터 테이블의 사본을 포함한다.
액세스 요청자(1902)는 데이터 테이블을 제 1 노드(2102)에 전송한다(링크 2118로 나타냄). 제 1 노드(2102)는 자신의 키 분배 테이블을 사용하여 데이터 테이블을 디코딩하고, 제 2 노드(2104)와의 세션을 오픈하라는 요청을 인식한다. 제 1 노드(2102)는 제 2 노드(2104)와의 연결을 오픈하고, 제 2 노드의 키 분배 테이블로 암호화된 데이터 테이블을 노드에 전달한다(링크 2120으로 나타냄).
링크(2120)를 통해 수신된 암호화된 데이터 테이블은 제 2 노드(2104)에서 디코딩되고 제 1 노드(2102)와의 보안 연결을 설정하기 위해 사용된다(링크 2122로 나타냄). 모든 데이터가 두 개의 노드 간에 이동될 때, 네트워크 액세스 서버(1904)는 데이터 테이블을 생성하고, 데이터 테이블 및 제 2 노드(2104)의 키 분배 테이블로 암호화된 사본을 액세스 요청자(1902)에 전송한다(링크 2124로 나타냄).
그리고 나서 액세스 요청자(1902)는 제 2 노드(2104)와의 연결을 오픈하고(링크 2126로 나타냄), 암호화된 데이터 테이블을 전달한다. 제 2 노드(2104)는 데이터 테이블을 복호화하고, 노드와 액세스 요청자(1902) 간의 세션을 설정하기 위해 이를 사용한다(링크 2128로 나타냄). 프로세스가 이동 프로세스인 경우, 제 2 노드(2104) 로의 이동이 완료될 때, 제 1 노드(2102)는 액세스 요청자(1902)로부터 해제될 수 있다.
이제 도 57을 참조하면, 네트워크 액세스 제어 시스템(2150)의 하이 레벨 블록도가 도시되어 있다. 네트워크 액세스 제어 시스템(1704)과, 정책 서버(1706) 및 클라이언트(노드)(1708) 이외에, 다수의 범프-인-더-와이어(bump-in-the-wire; BITW) 노드(2152)가 시스템에 도시되어 있다. BITW 노드는, 각각의 통신의 종점에서 노드를 변경하지 않고 통신을 향상시키기 위해(즉, 통신의 더욱 높은 신뢰성과 보안성) 기존 시스템에 삽입될 수 있는 노드이다. 다시 말해서, BITW 노드는 메시지를 수신할 노드와 시스템(2150)의 다양한 다른 구성요소 간에 메시지를 중계한다. BITW 노드는, 본 개시에서 설명한 다른 노드와 유사하게, 아래에서 설명하는 바와 같이 프로비저닝되고 시스템(2150)에서의 통신을 설정할 수 있다.
네트워크 액세스 서버(1704)는, 허가를 위해 정책 서버(1706)로부터 허가증을 수신한 후, BITW 노드(2152)에 키를 프로비저닝할 수 있으며, 이는 일반 노드를 프로비저닝하는 프로세스와 유사하다. BITW 노드(2152)는 두 개의 인터페이스, 즉 아래에서 설명하는 바와 같이, 네트워크 내의 다른 노드와의 통신을 용이하게 하기 위한 네트워크용 인터페이스 및 식별된 특정 노드에 대한 클라이언트용 인터페이스를 포함할 수 있다. 각각의 BITW 노드(2152)는 도 57의 클라이언트(1708)와 관련된 것으로 도시되어 있으며, 각각의 BITW 노드(2152)와 관련된 다수의 노드(1708)를 포함하는 BITW 노드(2152) 및 노드(1708)의 임의의 구성이 가능할 수 있다는 것을 알아야 한다.
BITW 노드(2152)는 패키지들을 청취할 수 있고, 패키지가 수신될 때 패키지로부터 클라이언트 대상 IP를 결정할 수 있다. BITW 노드(2152)는 패키지의 의도된 수신자를 결정하기 위해 클라이언트 대상 IP를 사용할 수 있다. BITW 노드(2152)가 의도된 수신자를 알지 못하는 경우, 근처의 클라이언트(노드)에 액세스 요청 프로토콜(access request protocol; ARP) 패킷이 전송될 수 있고, BITW 노드(2152)는 클라이언트의 IP 주소를 나타내는 응답을 클라이언트로부터 수신할 수 있다. BITW 노드(2152)가 패키지로부터의 클라이언트 대상 IP 어드레스와 일치하는 IP 어드레스를 수신하지 못한 경우, BITW 노드(2152)는 클라이언트 대상 IP가 네트워크 내에 존재하지 않음을 알게 된다. ARP에 응답하여 IP 어드레스가 수신되면, BITW 노드(2152)는 향후 통신을 위해 관련된 MAC 어드레스를 저장할 수 있다.
BITW 노드(2152)가 네트워크에서 새로운 IP 어드레스를 발견하면, 구성 서버(2154)에 통지할 수 있다. 그러고 나서 구성 서버(2154)는 네트워크 내의 모든 BITW 노드(2152)에 통지하여, 이러한 모든 노드가 네트워크 내의 다양한 클라이언트의 IP 어드레스를 알 수 있게 한다.
BITW 노드(2152)는, 또 다른 BITW 노드가 네트워크에 삽입되었을 때를 검출하도록 구성될 수 있으며, BITW 노드는 대상 IP 또는 클라이언트(1708)에 대한 경로에 삽입된다. 네트워크에서 새로운 BITW 노드의 추가를 검출하는 BITW 노드(2152)는 새로운 BITW 노드와의 세션을 개시할 수 있다. 원래의 BITW 노드는 세션을 허가하기 위한 토큰을 가질 수 있거나, 네트워크 액세스 서버(1704)로부터 토큰을 요청하고 수신할 수 있다.
클라이언트(1708)에 대해 전송되는 메시지의 난독화 및 역난독화는 패키지의 통신 경로 내의 BITW 노드에서 발생할 수 있다. 예를 들어, 최종 클라이언트(1708)에 전송된 패키지는, 클라이언트에 메시지를 전송하는 해당 BITW 노드(2152)에 의해 난독화될 수 있고, 패키지는 대상 BITW 노드에서 역난독화될 수 있다.
본원에 기술된 프로비저닝 시스템 및 방법은, 단일 정책 서버가 네트워크 내의 모든 서버를 통한 모든 인증 및 액세스를 제어할 수 있게 한다. 정책 서버에 문제점이 있는 경우 시스템 전반의 고장을 방지하기 위해, 정책 서버는 복제될 수 있다. 세션을 설정하는 프로세스는, 프로세스와 관련된 테이블 및 프로세서(들)와 관련된 테이블을 통해 노드에서 프로세서(들)에 연결된다. 세션이 더 많은 프로세서로 확장될 필요가 있는 경우, 확장에 테이블이 사용된다. 노드 간의 동기화가 손실되면, 원래의 설정과 동일한 방식으로 실시간으로 다시 개시될 수 있다.
본 개시를 개괄적으로 참조하여, 노드 간의 통신을 위한 난독화 기술을 제공하기 위한 다양한 시스템 및 방법을 설명한다. 본원에 기술된 시스템 및 방법이 차량 내에 있을 수 있는 한 가지 예시적인 환경을 설명한다. 현대의 차량은 많은(예를 들어, 70 개 이상) 전자 제어 장치(electronic control unit; ECU)을 포함할 수 있다. 이러한 ECU의 예는 엔진 제어 장치, 변속 시스템, 에어백 시스템, 잠금 방지 브레이크 시스템, 순항 제어 시스템, 전동 스티어링 시스템, 오디오 시스템, 파워 윈도우, 도어, 미러 조정 시스템, 하이브리드 또는 전기 자동차용 배터리 또는 충전 시스템 등을 포함할 수 있다. 본 개시를 개괄적으로 참조하면, 본원의 시스템 및 방법은 서브시스템 내의 ECU와의 또는 이들 간의 보안 무선 통신을 설정하기 위해 사용될 수 있다. 아래의 도 58 내지 도 62를 더욱 구체적으로 참조하여, 차량에서의 구현과 관련하여 본 개시의 시스템 및 방법을 설명한다.
본원의 시스템 및 방법은 다수의 ECU 및 노드를 포함하는 임의의 환경에도 적용될 수 있다는 것을 알아야 한다. 도 58 내지 도 62에 도시된 실시형태는 차량에서의 시스템 및 방법의 예시적인 구현형태로 제공되지만, 다른 유형의 네트워크화된 환경에 적용되도록 적응될 수 있다. 이러한 예시적인 네트워크는, 빌딩 영역 내에서 연결된 프린터 및 다른 컴퓨터, 모니터링 또는 경보 시스템을 위한 다수의 센서, 영역 내의 다수의 이동 또는 고정 장치 등의 네트워크를 포함할 수 있다.
현대의 자동차는 일반적으로 제한된 능력을 갖는 수백 개의 센서를 가질 수 있으며, 각각의 센서는 ECU에 연결되고 엔진 제어기(예를 들어, 차량의 주 제어기, 이하 간단히 제어기라고 칭함)와 통신할 수 있다. 일부 ECU는 하나의 센서에만 연결될 수 있으며, 일부 실시형태에서는 ECU와 센서가 동일한 장치 상에 있다. 다른 실시형태에서, ECU와 센서는 다른 장치 상에 있을 수 있거나, 다수의 센서가 단일 ECU에 연결될 수 있다. ECU와 엔진 제어기 간에 전송될 정보는 인증되고 암호화되어야 한다. 본 개시에서 개괄적으로 설명한 바와 같이, ECU와 엔진 제어기 간의 세션은 먼저 양자 간에 "키"를 공유함으로써 설정될 수 있다. 주어진 ECU에 대한 키는 일반적으로 고유 초기 데이터 테이블(이의 크기는 각각의 ECU의 데이터 필드에 맞게 조정됨)과 PRNG에 대한 고유 다항식 인덱스의 조합일 수 있다. 각각의 ECU에 대한 키 프로비저닝은 공장 설정(또는 차량 또는 센서가 제조되는 기타 설정)에서와 같이 보안 환경에서만 이루어져야 한다.
차량의 전원이 켜지면, 엔진 제어기와 ECU는 (도 39의 프로세스(1100)와 관련하여 설명한 바와 같이) 키 분배 테이블을 생성하여 데이터 테이블을 생성하기 위해 "비밀"로 시작할 필요가 없는데, 데이터 테이블이 이미 각각의 ECU에 대해 사전에 프로비저닝되어 있고 각각의 ECU에 대한 각각의 데이터 테이블의 사본이 엔진 제어기에 보관되어 있기 때문이다. 대신, 엔진 제어기는 각각의 ECU에 동일한 랜덤 32 비트 워드 시드를 전송한다(각각의 엔진 제어기는 랜덤 32 비트 워드로 미리 프로비저닝된다). ECU는 ECU의 고유 데이터 테이블을 사용하여 이 시드를 스크램블링하고, PRNG를 시드하기 위해 PRNG 다항식을 갖는 벡터로서 이 결과를 사용한다. 이러한 방식으로, 엔진 제어기와의 각각의 ECU 세션은 고유 데이터 테이블과 고유 PRNG 시퀀스로 시작된다. 각각의 ECU는 데이터 테이블을 영구 메모리에 보관하고, 미리 프로비저닝된 다항식 인덱스를 휘발성 메모리에 보관한다. 이 지점에서, ECU와 엔진 제어기 간의 페이로드의 안전한 통신이 도 41의 프로세스(1200)에서 개괄적으로 설명한 바와 같이 진행될 수 있다.
대안적인 실시형태에서, 각각의 ECU는 자체 데이터 테이블과 비밀(프로세스 1100에서 설명한 바와 같이, PRNG 다항식 지수 및 PRNG 벡터를 포함하는 28 바이트)로 미리 프로비저닝될 수 있다. 엔진 제어기는 데이터 테이블과 각각의 ECU에 대한 비밀의 사본을 영구 메모리에 보관한다. 이 실시형태는 ECU보다 훨씬 강력한 프로세서인 엔진 제어기에서 PRNG의 계산이 발생하도록 할 것이다.
도 58 내지 도 62를 개괄적으로 참조하여 각각의 차량의 ECU에 키를 프로비저닝하는 방법을 설명한다. ECU는 시간이 지남에 따라 차량에서 교체될 수 있다. 예를 들어, 타이어와 관련된 ECU는 차량의 타이어가 교체될 때 교체될 수 있다. 차량에서 ECU가 교체될 때, 새로운 ECU는 대체되는 ECU의 키와는 다른 키를 프로비저닝 받을 수 있으며, 새로운 ECU와 엔진 제어기 간에 세션이 설정될 수 있다. 그러나, 오퍼레이터(자동차 소유자, 딜러 등)가 이를 설치하는 동안 새로운 ECU를 허가할 때까지, 새로운 ECU는 엔진 제어기에 의해 신뢰 받지 못할 수 있다.
이제 도 58을 참조하면, 엔진 제어기와 차량 서브시스템의 ECU 간의 통신 프로세스를 나타내는 블록도가 도시되어 있다. 엔진 제어기(2202)는 ECU(2206)에 대해 메시지가 전송되는 제어기 영역 네트워크(controller area network; CAN) 큐(queue; 2204)를 포함한다. 이와 같이, 제어기(2202)로부터 전송될 모든 메시지는 CAN 큐(2204)에 큐잉되고, CAN 버스(2208)에 도입된다.
도 58의 시스템은 시뮬레이션 모드와 에뮬레이션 모드를 모두 지원할 수 있다. 에뮬레이션 모드에서, 제어기로부터의 메시지는 CAN 큐(2204)를 통해 CAN 버스(2208)에 제공되고, 그리고 나서 CAN 버스(2208)로부터 ECU(2206)로 제공된다. 에뮬레이션 모드를 지원하기 위해, 큐(2204)와 CAN 버스(2208)가 사용되어, 에뮬레이트되는 다양한 ECU에 대해 메시지를 송수신한다. 메시지는 큐잉되고, 전송을 위해 CAN 버스(2208)에 순차적으로 도입된다. CAN 큐(2204)는 이의 인큐(enqueue) 및 디큐(dequeue) 방법에서 동기화된다. 시뮬레이션 모드에서, 제어기로부터의 메시지(CAN 큐(2204))는 ECU(2206)에 직접 제공되고, 메시지에 대한 ECU 응답은 CAN 큐(2204)에 직접 제공된다.
엔진 제어기(2202)는 차량의 ECU를 프로비저닝하도록 구성된다. 프로비저닝을 시작하기 위해, 사용자 장치(2210)는 페어링을 위해 제어기(2202)에 연결될 수 있다. 사용자 장치(2210)는 이동 전화, 딜러 샵의 장비, 또는 차량 서브시스템에 대해 업데이트를 제공할 수 있는 권한이 있는 사용자(예를 들어, 딜러)에 속하는 임의의 다른 유형의 장치일 수 있다. 사용자 장치(2210)와 제어기(2202)는 OBD-II 포트를 통해 또는 임의의 다른 이용 가능한 방법에 의해 연결될 수 있다. 사용자 장치(2210)와 제어기(2202)는 프로비저닝 방법에 앞서 페어링될 수 있다. 사용자 장치(2210)는 일반적으로 차량의 하나 이상의 ECU에 대해 의도된 소프트웨어 업데이트(또는 다른 정보)를 포함하는 하나 이상의 메시지를 제공한다. 사용자 장치(2210)와 제어기(2202) 간의 통신 프로세스를 도 63 내지 도 65에서 더욱 상세하게 설명한다.
차량의 다양한 ECU에 전원이 켜질 때, 각각의 개별적인 ECU(2206)는 (CAN 버스(2208)를 통해) 제어기(2202)에 프로비전 요청을 전송할 수 있다. 이러한 상황은 ECU가 동시에 프로비전 요청을 제출할 수 있기 때문에 CAN 버스(2208)에서 다수의 충돌을 유발할 수 있다. 이로 인해 오류 메시지가 자주 전송될 수 있고, 또는 결국, CAN 버스(2208) 또는 제어기(2202)의 "버스 오프" 상태 또는 기타 오류 상태가 발생할 수 있다. 차량 설정에서, 이러한 오류 메시지의 생성은 일반적으로 차량에 심각한 문제가 있음을 나타낼 수 있고, 따라서 더욱 심각한 오류 메시지가 대신 인식될 수 있도록 충돌을 피하는 것이 바람직하다. 본원에 기술된 프로비저닝 방법은 ECU에 의해 생성된 다양한 요청 간의 충돌을 피하는 데 도움이 된다.
도 58 내지 도 62에서 설명한 암호화 프로세스는 CAN 버스 이외의 모든 유형의 IoT 애플리케이션에 대해 구현될 수 있다. CAN 버스는 다수의 장치가 서로 통신할 수 있도록 하는 예시적은 표준으로 제공되지만, 장치는 임의의 다른 유형의 방법이나 프로토콜을 통해 상호 연결될 수 있다.
도 59A 내지 도 59D를 참조하면, 프로비저닝 프로세스가 더욱 상세하게 도시되어 있다. 각각의 개별적인 ECU(2206)는 프로비저닝되지 않았다는 것을 정상적으로 전송함으로써 시작한다. 일반적인 변속기의 일부로서 ECU(2206)는 자신의 ID를 포함할 수 있다. 제어기(2202)가 각각의 ECU(2206)로부터 전송을 수신할 때, 제어기(2202)는 각각의 ECU(2206)가 프로비저닝될 수 있는지를 검사할 수 있다. 이렇게 하기 위해, 제어기(2202)는 도 59A에 도시된 바와 같이 CAN 프로비전 메시지(2302)를 전송한다. 메시지(2302)는, 프로비저닝 검사로서 ECU(2206)에 의해 인식 가능한 미리 정의된 메시지 ID인 CAN 프로비전 ID(2304)를 포함한다. 메시지(2302)의 페이로드는 ECU(2206)의 ID, 확장 비트 및 선택적으로 4 비트 ECU 페이로드가 뒤따르는 확장 어드레스의 18 비트를 포함하는 것으로 도시되어 있다.
ECU(2206)가 메시지(2302)를 수신할 때, ECU(2206)가 프로비저닝될 수 있고 메시지(2302) 내의 ECU ID가 자신의 ID와 일치하는 경우, ECU(2206)는 프로비저닝을 요청할 수 있다. 도 59B를 참조하면, ECU 프로비전 메시지(2312)가 도시되어 있다. 메시지(2312)는, 제어기(2202)에 의해 프로비전 요청으로서 인식 가능한 미리 정의된 메시지 ID인 요청 프로비저닝 ID(2314)를 포함한다. 메시지(2312)는 일반적으로 메시지(2302)와 관련하여 설명한 페이로드와 유사한 페이로드를 더 포함할 수 있다.
제어기(2202)가 ECU(2206)로부터 메시지(2312)를 수신하면, 제어기와 ECU가 보안 환경에 있는지를 검증해야 한다. 제어기(2202)가 보안 환경을 검증할 수 없는 경우, 제어기(2202)는 ECU(2206)를 프로비저닝하는 것을 허용할 수 있는지 사용자에게 (사용자 장치(2210)를 통해) 확인하도록 요청할 수 있고, 확인을 수신하면 프로비저닝 프로세스를 계속할 수 있다. 일 실시형태에서, 제어기(2202)는 환경이 안전하다는 것을 나타내는 사용자 입력을 기다릴 수 있고, 제어기(2202)가 환경이 안전하다는 것을 확인할 수 있으면 처리될 수 있도록 요청을 저장할 수 있다.
환경이 안전하면, 제어기(2202)는 도 59C에 도시된 바와 같은 메시지(2322)로 응답할 수 있다. 메시지(2322)는 미리 정의된 메시지 ID인 프로비전 ID(2324)를 포함한다. 메시지(2322)는 일반적으로 메시지(2302, 2312)와 관련하여 설명한 것과 유사한 페이로드를 더 포함할 수 있다. 메시지(2322)가 전송된 후, 도 59D에 도시된 메시지(2332)와 같은 추가 메시지가 제어기(2202)에 의해 전송될 수 있다. 메시지(2332)는 ECU(2206)에 전송될 키의 일부(키의 N번째 블록이 메시지에서 전송되고 있음을 나타내는 "프로비전 ID + N"으로서 도 59D에 표시됨)를 포함한다. 다수의 메시지(2332)에 대해 제어기(2202)가 전송한 키는 본 개시에서 개괄적으로 설명한 난독화 프로세스에서 사용될 테이블 및 PRNG 벡터를 포함한다.
일 실시형태에서, 제어기(2202)는 다양한 ECU로부터 수신된 메시지의 크기를 기반으로 키를 그룹화할 수 있다. 예를 들어, 동일한 크기를 갖는 프레임을 브로드캐스트하는 모든 ECU는 메시지를 인코딩하기 위해 제어기(2202)에 의해 동일한 키를 제공받을 수 있다.
ECU(2206)가 제어기(2202)와의 전송을 위해 프로비저닝되고 준비가 된 후, ECU(2206)가 초기화될 때(예를 들어, 차량이 시동을 걸 때), 제어기(2202)는 랜덤 32 비트 메시지를 차량의 모든 ECU에 브로드캐스트한다. 그리고 나서 각각의 ECU(2206)는 ECU 내의 비밀의 데이터 테이블 부분을 사용하여 32 비트 메시지를 스크램블링하고, 결과 값은 상기한 바와 같이 PRNG의 초기 벡터로서 사용된다.
이제 도 60을 참조하여 ECU와 제어기의 난독화 활동(인코딩과 디코딩)을 더욱 상세하게 설명한다. 일반적으로, 환경에서 요구되는 보안 수준에 따라, 암호화와 복호화에 사용되는 알고리즘은 아래에서 설명하는 바와 같이 높은 수순 또는 낮은 수준의 레벨 암호화/복호화 알고리즘일 수 있다.
낮은 수준의 암호화 방법에서, ECU(2206)로부터 제어기(2202)로 전송될 데이터는 본 개시에서 개괄적으로 설명한 바와 같이 PRNG와 XOR된 후 스크램블링된다. 이후, 테이블은 데이터를 XOR하기 위해 사용된 PRNG의 값을 기반으로 체이닝된다. 테이블 체이닝을 도 61에서 더욱 상세하게 설명한다. 엔진 제어기에서의 디코딩을 위해, 암호화된 메시지는 언스크램블링되고, 데이터는 PRNG와 XOR된다. 이후, 테이블은 데이터를 XOR하기 위해 사용된 PRNG의 값과 체이닝된다. 체이닝이 실패하는 경우, 다음 PRNG 값이 사용될 수 있다. 다음 PRNG 값은 데이터와 XOR되어 테이블 체이닝에 사용된다. 이 프로세스는 PRNG가 발견될 때까지 계속되어 테이블의 성공적인 체이닝을 초래한다.
전체 프로세스가 실패하는 경우(즉, 어떠한 PRNG 값도 테이블의 성공적인 체이닝을 초래하지 못하는 경우), 재동기화 메시지가 제어기(2202)에 의해 ECU(2206)에 전송될 수 있다. 재동기화 메시지는 도 60에 도시된 바와 같은 포맷을 가질 수 있다. 재동기화 메시지(2400)는 미리 정의된 메시지 ID인 재동기화 ID(2402)를 포함한다. 재동기화 메시지(2400)는, 테이블을 스크램블링하기 위해 사용되고 후속 암호화/복호화 프로세스에서 PRNG를 시드하기 위해 사용되는 난수인 시드(2404)를 더 포함한다. 시드는 임의의 크기(예를 들어, 32 내지 64 비트)일 수 있다. 재동기화 메시지(2400)는 ECU ID 및 전송을 위해 일반적으로 요구되는 다른 필드를 더 포함할 수 있다.
높은 수준의 암호화 방법에서, ECU(2206)가 제어기(2202)에 데이터를 처음 전송할 때, ECU(2206)는 PRNG로 데이터를 XOR하고, 데이터를 스크램블링하며, 상기한 바와 같이 데이터를 체이닝할 수 있다. 그러나, 후속하는 반복(즉, 추가 전송) 동안, 전송될 데이터는 PRNG로부터의 값 대신에 이전의 XOR된 데이터(미리 스크램블링된 XOR된 데이터)와 XOR된다. 이전의 XOR된 데이터로 데이터를 XOR하면 데이터의 난독화 수준이 증가한다. 이후, 제어기(2202)는 상기한 바와 같이 메시지의 디코딩을 진행할 수 있다.
도 60에서 상기한 바와 같이, ECU(2206)는 제어기(2202)에 전송될 데이터를 난독화한다. ECU(2206)는 일반적으로 차량의 단일 센서로부터 데이터를 전송하므로, ECU(2206)는 일반적으로 매우 적은 양의 데이터를 전송하도록 구성될 수 있다. 일부 실시형태에서, ECU(2206)는, 전체 패킷을 데이터로 채운 후 패킷을 전송하기를 기다리는 대신에, 센서로부터 데이터가 수신될 때 데이터를 순차적으로 암호화하고 전송할 수 있다. 다시 말해서, ECU(2206)는 한번에 모든 데이터를 인코딩하지 않고, 한번에 1 비트씩, 또는 한번에 하나의 세그먼트씩 전송할 데이터를 인코딩한다. 도 61을 개괄적으로 참조하여, 한번에 1 바이트(또는 한 세그먼트)씩 데이터를 인코딩하는 ECU(2206)의 테이블-기반 순차적 암호화 프로세스를 더욱 상세하게 설명한다.
순차적 암호화 프로세스를 위해, 일회용 패드 버퍼가 ECU(2206)에 의해 준비된다. 버퍼는 임의의 크기일 수 있다. 일부 실시형태에서, 버퍼는 160 내지 256 바이트일 수 있다. ECU(2206)가 센서로부터 첫 번째 입력 바이트를 수신하면, 바이트는 버퍼의 첫 번째 바이트와 XOR된다. 수신된 다음 바이트는 버퍼의 두 번째 바이트와 XOR된다, 등등. 일회용 패드 버퍼의 마지막 바이트가 사용될 때, ECU(2206)가 저장한 테이블은 수정되고 새로운 일회용 패드 버퍼가 추가 데이터를 위해 준비된다. 다양한 실시형태에서, 1 비트에서 임의의 개수의 바이트까지 임의의 크기의 패킷을 한번에 XOR할 수 있도록 도 61의 순차적 프로세스가 조정될 수 있으며, 자원 제약 및 효율 고려 사항을 기반으로 선택이 이루어질 수 있다.
이제 버퍼의 최종 바이트가 사용된 후 테이블을 수정하는 일례를 설명한다. 테이블 내의 디코딩된 데이터의 처음 17 바이트는 ECU(2206)가 생성한 PRNG 시퀀스의 처음 17 바이트와 XOR된다. 그리고 나서, 테이블 체인 포인터가 가리키는 다음 17 개의 항목은 XOR된 데이터의 값과 교환된다. 다시 말해서, 테이블의 처음 17 바이트 내의 XOR된 데이터는, 위치가 테이블의 다음 17 바이트에 의해 식별되는 테이블 내의 데이터와 교환된다. 다양한 실시형태에서, 테이블 수정은 테이블의 임의의 개수의 바이트를 XOR하는 단계 및 테이블 내의 임의의 개수의 바이트를 교환하는 단계를 포함할 수 있다.
도 61을 참조하면, 도 60의 일회용 패드 버퍼를 준비하는 프로세스(2500)의 흐름도가 도시되어 있다. 프로세스(2500)는 PRNG(2502)가 생성한 PRNG 시퀀스(2504)로 버퍼를 채우는 단계를 포함한다. PRNG 시퀀스(2504)는 테이블(2506) 내의 데이터와 XOR된다(블록(2508)). 결과적인 XOR된 데이터는 테이블 값과 셔플링되고(블록(2510)), 결과적인 값은 일회용 패드 버퍼(2512)에서 사용된다. 다양한 실시형태에서, PRNG 시퀀스는 모든 유형의 암호(cipher) 또는 알고리즘(예를 들어, AES256, AES128 등)으로 인코딩될 수 있다.
복호화를 위해, 동일한 테이블, 동일한 PRNG 값(예를 들어, 동일한 PRNG 다항식) 및 PRNG 내의 동일한 위치를 사용하여 일회 버퍼가 준비될 수 있으며, 이는 암호화에 사용되었던 일회용 버퍼와 동일한 값을 생성한다. 입력 바이트는 버퍼의 다음 사용되지 않는 바이트와 XOR되고, 버퍼의 마지막 바이트가 사용될 때, 테이블은 수정되고 상기한 바와 같이 새로운 버퍼를 생성하기 위해 사용된다.
도 62A 및 도 62B를 개괄적으로 참조하여, ECU가 제어기에 전송한 메시지의 인증을 더욱 상세하게 설명한다. 일 실시형태에서, 제어기(2202)에 의한 메시지의 인증은 메시지의 CRC 코드를 사용하는 인-라인 인증을 사용하여 달성될 수 있다. 이 코드는 일반적으로 메시지의 페이로드에 삽입할 자체 필드를 가질 수 있다. 그러나, 메시지의 페이로드에 CRC가 포함되지 않은 경우, 또는 페이로드가 너무 작아 충분한 엔트로피를 제공할 수 없는 경우(즉, 메시지는 이의 크기 때문에 낮은 엔트로피를 갖고, 따라서 CRC를 페이로드에 확실하게 추가할 수 없는 경우), 아래에서 설명하는 바와 같이, ECU로부터 제어기가 수신한 이전 메시지로부터의 페이로드를 인코딩함으로써 메시지 인증이 달성될 수 있다.
메시지는 이전의 수의 메시지로부터의 페이로드를 인코딩함으로써 인증될 수 있다. 예를 들어, ECU(2206)로부터의 이전 수의 메시지(N)에 대해, ECU(2206)에 의해 전송되고 수신 확인된 최종 N 개의 페이로드를 유지하기 위해 페이로드 크기 N의 순환 버퍼가 제어기(2202)에 의해 사용될 수 있다. 새로운 메시지를 인증하기 위해, 64 비트 해시가 원형 큐로부터 계산되고, 도 62A에 도시된 바와 같이 해시는 암호화되고 메시지(2600)로 전송된다. 메시지(2600)는, ECU(2206)를 인증하기 위해 사용되는 미리 정의된 ID인 ID(2602) 및 암호화된 해시(2604)를 포함한다. 제어기(2202)는 인증을 검증하기 위해 해시 번호를 검증한다.
제어기(2202)는 ECU(2206)로부터의 메시지의 인증이 얼마나 자주 요구되는지를 제어할 수 있다. 예를 들어, 제어기(2202)는 도 62B에 도시된 바와 같은 메시지(2610)를 전송할 수 있다. 메시지(2610)는, 인증을 위해 ECU(2206)에 질문하기 위해 사용되는 미리 정의된 메시지 ID인 재-인증 ID(2612)를 포함한다. 메시지(2610)는 ECU(2206)가 자체적으로 인증해야 하는 속도를 특정하는 간격 필드(2614)를 더 포함한다. 예를 들어, 간격이 100인 경우, ECU(2206)는 백 개의 메시지씩 인증해야 한다. 간격이 0인 경우, ECU(2206)는 즉시 인증해야 한다. 메시지(2610)는 (예를 들어, 인증 프로세스에서 사용할 이전 메시지의 수를 결정하기 위해) 인증에 사용되는 순환 큐의 크기를 결정하는 필드(2616)를 더 포함한다.
도 58 내지 도 62의 시스템 및 방법은, 예를 들어, 엔진 제어기(2202) 자체뿐만 아니라 차량의 다양한 ECU(2206)에 소프트웨어 업데이트를 제공하기 위해 사용될 수 있다. 또한 도 63 내지 도 65를 참조하면, 시스템 서버로부터 엔진 제어기(2202)로 정보(예를 들어, 소프트웨어 업데이트)를 제공하는 시스템 및 방법이 더욱 상세하게 도시되어 있다. 도 63 내지 도 65의 시스템 및 방법은 서버로부터 제어기(2202)로 전송된 파일의 무결성 및 기밀성을 보장할 수 있다. 파일은 모든 유형의 연결 방법(예를 들어, 와이파이, 셀룰러, FM 대역 등)을 통해 전송될 수 있으며, 다양한 연결 조건에 대해, 부분 및 조각 업데이트에 대해, 그리고 파일 내의 일부 또는 모든 블록의 재전송에 대해 적응될 수 있다. 다양한 실시형태에서, 엔진 제어기(2202)는 시스템 서버로부터 직접 파일을 수신하거나, 파일을 엔진 제어기에 중계하도록 구성된 중개 사용자 장치로부터 파일을 수신할 수 있다.
도 63A를 참조하면, 파일을 편집하고 서버로부터 엔진 제어기(2202)로 파일을 분배하는 프로세스(2700)가 도시되어 있다. 파일(2702)은 편집 블록(2704)에서 다수의 블록으로 분할된다. 각각의 블록은 개별적으로 암호화되고(블록(2706)), 엔진 제어기(2202)로 전송된다(블록(2708)). 각각의 블록을 개별적으로 전송함으로써, 전송 실패 또는 중단의 결과로 누락된 모든 블록을 재전송할 수 있다. 엔진 제어기(2202)는 각각의 블록을 디코딩하고(블록(2710)), 파일(2702)을 재조립한다(블록(2712)).
편집 프로세스(블록(2704))는 도 63B에 더욱 상세하게 도시되어 있다. 파일(2702)는 다수의 블록(2720)으로 분할된 것으로 도시되어 있다. 각각의 블록(2720)은 헤더(2722)와 페이로드(2724)를 포함할 수 있다. 각각의 헤더(2722)는 다항식 파라미터(2726)와, 의사 랜덤 시퀀스에서 이의 위치를 나타내는 벡터(2728) 및 이의 블록 번호(2730)를 포함할 수 있다. 다항식 파라미터(2726)는 본 개시에서 개괄적으로 설명한 바와 같이 PRNG를 생성하기 위해 제어기에 의해 사용된다. 블록 번호(2730)는 파일(2702) 내의 다른 블록에 대한 블록(2720)의 위치를 식별한다. 페이로드(2724)는 일반적으로 파일 데이터를 포함할 수 있고, 첫 번째 블록의 페이로드는 파일 내의 블록의 수 및 각각의 블록에 대한 블록 크기와 같이 업데이트 파일에 대한 메타 데이터를 대신 포함한다.
암호화 프로세스(블록(2706))는 도 63C에 더욱 상세하게 도시되어 있다. 먼저, 헤더 테이블과 페이로드 테이블이 생성된다(블록(2740)). 각각의 블록(블록(2742))에 대해, 헤더는 암호화되고(블록(2744)), 헤더와 페이로드는 블록 테이블을 사용하여 스크램블링된다(블록(2746)). 또한 도 63D를 참조하면, 헤더 암호화를 위한 블록(2744)이 더욱 상세하게 도시되어 있다.
헤더 암호화(2744)는 난수 생성 단계(블록(2750))를 포함한다. 일 실시형태에서, 수는 0 내지 232(32 비트 난수를 수용)일 수 있다. 난수는 이후 다항식 파라미터를 생성하기 위한 파라미터로서 사용된다(블록(2752)). 제 2 난수가 생성되고(블록(2754)), 프로세스(1100)에서 설명한 바와 같이, PRNG에 대한 점프 벡터로서 사용된다(블록(2756)). 수는 예를 들어 0 내지 2127-1(페이로드의 크기를 수용)일 수 있다. PRNG의 상태 및 블록 번호가 복사되고(블록(2758)), 헤더는 헤더 테이블로 암호화(비트-스크램블링)되어(블록(2760)), 전송을 위해 암호화된 헤더가 생성된다.
도 63E를 참조하면, 블록의 헤더와 페이로드를 스크램블링하는 단계가 도시되어 있다. 스크램블링 단계는 위의 도 63A의 블록(2706)에 대응할 수 있다. PRNG는 본 개시에서 개괄적으로 설명한 바와 같이 의사 난수 시퀀스(2770)를 생성한다. 시퀀스(2770)는 페이로드(2724)와 XOR되어 XOR된 페이로드(2772)를 생성한다. XOR된 페이로드(2772)는 이후 블록 테이블로 바이트-스크램블링되어 엔진 제어기에 전송될 인코딩된 블록(2774)을 생성한다.
이제 도 64를 참조하면, 서버(또는 사용자 장치(2210))와 엔진 제어기(2202) 간의 전송 프로세스(2800)가 더욱 상세하게 도시되어 있다. 특히, 도 64의 프로세스(2800)는 본 개시에서 개괄적으로 설명한 공개 및 비밀 키 암호화 기술을 사용하여 차량을 프로비저닝(즉, 파일 업데이트를 제공)하는 방법을 설명한다. 서버 또는 사용자 장치(2210)와 엔진 제어기(2202) 간의 통신은 일반적으로 통신에 대해 안전한 환경이 아닌 지정된 영역에서 발생할 수 있다(즉, 서버 또는 사용자 장치(2210)와 엔진 제어기(2202)가 딜러 또는 제조사와 같은 소정 영역, 또는 지정된 차고 영역 등에서만 연결을 설정할 수 있다). 엔진 제어기(2202)는, 아래에서 설명하는 바와 같이 통신 링크를 보안함으로써, 개별 센서 또는 ECU 정보가 영역 내의 임의의 장치에 의해 판독될 수 없는 안전한 환경 모드를 가능하게 할 수 있다. 프로세스(2800)는 서버 또는 사용자 장치(2210)와 엔진 제어기(2202) 간의 보안 연결을 설정하도록 특별히 구성된 딜러, 제조사 또는 차고에서 특수 장비를 사용하는 단계를 포함할 수 있다.
프로세스(2800)는 서버(또는 사용자 장치(2210))와의 연결을 설정하고 509.x 인증서를 수신하는 단계를 포함한다(블록(2802)). 일부 실시형태에서, 서버는 엔진 제어기에 업로드될 업데이트 파일(또는 다른 파일)을 생성하거나 수신할 수 있고, 다른 실시형태에서, 엔진 제어기는 사용자 장치에 직접 연결되어 사용자 장치로부터 업데이트 파일을 수신할 수 있다. 프로세스(2800)는 509.x 인증서를 검증하는 단계를 더 포함한다(블록(2804)). 509.x 인증서는 서버와의 보안 통신을 검증하기 위해 엔진 제어기가 수신할 수 있는 인증서의 예이다.
프로세스(2800)는 또한 509.x 인증서 내의 공개 키를 사용하여 비밀을 생성하고 서버에 비밀을 전송하는 단계를 포함한다(블록(2806)). 비밀은 또한 엔진 제어기의 PRNG를 시드하기 위해 사용된다(블록(2808)). 결과적인 PRNG 시퀀스는 KDT를 생성하기 위해 사용되며(블록(2810)), KDT는 헤더 테이블과 페이로드 테이블을 포함하는 업데이트 키를 인코딩하기 위해 사용된다(블록(2812)).
대안적인 실시형태에서, 서버와의 통신을 설정하고 업데이트 키를 전송하기 위해 다른 방법을 사용할 수 있다. 예를 들어, 디피 헬만(Diffie-Hellman), 새로운 희망(New-Hope) 또는 프로도(Frodo) 비밀 교환 프로토콜을 사용하여 서버와의 세션이 설정될 수 있고, 패스워드, 공개-개인 키를 통해, 또는 서명을 생성하기 위해 사용되는 다른 프로토콜에 의해서와 같이, 서버를 식별하기 위해 엔진 제어기에 의해 다른 프로토콜이 사용될 수 있다. 이제 도 65를 참조하면, 엔진 제어기에서의 업데이트 파일을 디코딩하고 조립하는 프로세스(2900)가 도시되어 있다. 프로세스(2900)는 서버 또는 사용자 장치로부터의 업데이트 파일(또는 다른 파일)의 각각의 블록의 수신을 완료한 후 엔진 제어기(2202)에 의해 실행될 수 있다. 프로세스(2900)는 엔진 제어기가 수신한 단일 블록의 디코딩 및 단일 블록으로부터의 페이로드를 업데이트 파일에 삽입하는 단계를 기술한다. 업데이트 파일은 다수의 블록으로 구성될 수 있다.
프로세스(2900)는 인코딩된 블록을 수신하는 단계(블록(2902)) 및 블록을 바이트-스크램블링하는 단계(블록(2904))를 포함한다. 블록의 헤더는 엔진 제어기가 저장한 헤더 테이블로 비트-스크램블링된다(블록(2906)). PRNG의 상태는 헤더에서 복사되고(블록(2908)), PRNG는 의사 랜덤 시퀀스를 생성하기 위해 사용된다(블록(2910)). 시퀀스는 이후 페이로드와 XOR된다(블록(2912)). 헤더로부터의 블록 번호는 블록 내의 페이로드에 대한 오프셋을 계산하기 위해(즉, 다른 페이로드와 관련하여 각각의 블록으로부터 각각의 페이로드에 대한 정확한 위치를 결정하기 위해) 사용되며, 최종 조립된 파일에 페이로드를 복사한다(블록(2914)).
모든 프로세스 또는 방법 단계의 순서 또는 시퀀스는 대안적인 실시형태에 따라 변경되거나 재-시퀀싱될 수 있다. 본 발명의 범위를 벗어나지 않고 다양한 예시적인 실시형태의 설계, 작동 조건 및 배열에서 다른 대체, 수정, 변경 및 생략이 또한 이루어질 수 있다.
예시적인 실시형태에 도시된 바와 같은 요소들의 구성과 배치는 단지 예시적인 것이다. 본 개시의 실시형태가 상세하게 설명되었지만, 본 개시를 검토하는 본 기술 분야의 숙련자는 언급한 주제의 새로운 교시와 이점을 실질적으로 벗어나지 않고 많은 변형(예를 들어, 다양한 요소의 크기, 치수, 구조 및 비율의 변화, 파라미터의 값, 물질의 사용, 방향 등)이 가능하다는 것을 쉽게 알 것이다. 예를 들어, 일체로 형성된 것으로 도시된 요소는 다수의 부품 또는 요소로 구성될 수 있다. 일부 유사한 구성요소는 다양한 도면에서 동일한 참조 번호를 사용하여 본 개시에서 설명되었다. 이는 이들 구성요소가 모든 실시형태에서 동일하다는 것을 암시하는 것으로 해석되어서는 안 되며, 다양한 실시형태에서 다양한 수정이 이루어질 수 있다.

Claims (40)

  1. 통신 인터페이스와;
    프로세서; 및
    프로세서에 작동 가능하게 결합된 작동 가능하게 결합된 비일시적 컴퓨터 판독 가능 메모리 매체를 포함하는 통신 장치로서, 메모리 매체는, 프로세서로 하여금
    시드 값을 검색하고;
    디지털 비트 스트림을 수신하고;
    의사 난수 발생기(pseudo random number generator, PRNG)에 대한 시드로서 시드 값을 사용하여 랜덤 비트 스트림을 생성하고, 여기서 랜덤 비트 스트림은 적어도 디지털 비트 스트림만큼의 비트를 포함하고;
    랜덤 비트 스트림의 비트를 셔플링하여 랜덤 비트 버퍼를 생성하고;
    디지털 비트 스트림과 랜덤 비트 버퍼에 제 1 배타적 논리합(exclusive OR; XOR)을 적용하여 난독화된 디지털 비트 스트림을 생성하고, 여기서 난독화된 디지털 비트 스트림은 디지털 비트 스트림과 동일한 수의 비트를 갖고; 및
    난독화된 디지털 비트 스트림을 통신 인터페이스에 제공하도록 구성된 명령어를 저장하도록 구성되고,
    명령어는 또한, 프로세서로 하여금
    제 2 디지털 비트 스트림을 수신하고;
    제 2 디지털 비트 스트림과 랜덤 비트 버퍼로 제 2 XOR을 수행함으로써 제 2 난독화된 디지털 비트 스트림을 생성하고, 여기서 제 1 XOR에서 사용되지 않는 랜덤 비트 버퍼의 비트만이 제 2 XOR에서 사용되고; 및
    제 2 난독화된 디지털 비트 스트림이 제 2 디지털 비트 스트림과 동일한 수의 비트를 갖는 경우, 통신 인터페이스에 제 2 난독화된 디지털 비트 스트림을 제공하도록 더 구성되는, 통신 장치.
  2. 제 1 항에 있어서,
    랜덤 비트 스트림은 바이트의 2의 거듭제곱으로 구성되는, 통신 장치.
  3. 제 1 항에 있어서,
    명령어는, 프로세서가
    랜덤 비트 버퍼를 초기화하고;
    랜덤 비트 스트림 내의 비트를 트래버싱하고, 설정된 각각의 비트에 대해 대상 비트 위치를 계산하고; 및
    대상 비트 위치에서 랜덤 비트 버퍼 내의 비트를 반전시키도록,
    프로세서로 하여금 랜덤 비트 스트림의 비트를 셔플링하도록 더 구성되는, 통신 장치.
  4. 제 3 항에 있어서,
    명령어는, 프로세서가 랜덤 비트 버퍼의 모든 비트를 동일한 값으로 설정하도록 프로세서로 하여금 랜덤 비트 버퍼를 초기화하도록 더 구성되는, 통신 장치.
  5. 제 3 항에 있어서,
    명령어는, 프로세서가 랜덤 비트 버퍼의 모든 비트를 0으로 설정하도록 프로세서로 하여금 랜덤 비트 버퍼를 초기화하도록 더 구성되는, 통신 장치.
  6. 제 3 항에 있어서,
    명령어는, 프로세서로 하여금 테이블 룩업을 사용하여 대상 비트 위치를 계산하도록 구성되는, 통신 장치.
  7. 삭제
  8. 제 1 항에 있어서,
    명령어는, 프로세서로 하여금
    제 2 XOR이 랜덤 비트 버퍼의 끝에 도달하지만 제 2 디지털 비트 스트림의 모든 비트가 XOR되지 않은 경우, PRNG로부터 제 2 랜덤 비트 스트림을 생성하고;
    제 2 랜덤 비트 스트림의 비트를 셔플링하여 랜덤 비트 버퍼를 다시 채우고;
    제 2 디지털 비트 스트림과 랜덤 비트 버퍼에 제 3 XOR을 적용하여 제 2 난독화된 디지털 비트 스트림을 계속 생성하도록 더 구성되며, 여기서 제 3 XOR의 첫 번째 비트는 랜덤 비트 버퍼의 첫 번째 비트 및 제 2 XOR에서 사용된 제 2 디지털 비트 스트림의 마지막 비트 이후의 비트인, 통신 장치.
  9. 제 8 항에 있어서,
    명령어는, 프로세서로 하여금
    스왑할 비트를 식별하기 위해 룩업 테이블을 사용하여 랜덤 비트 스트림의 비트를 셔플링하고;
    랜덤 비트 스트림 내의 다수의 비트를 기반으로 룩업 테이블 내의 다수의 값을 스왑함으로써 셔플링된 룩업 테이블을 생성하고; 및
    스왑할 비트를 식별하기 위해 셔플링된 룩업 테이블을 사용하여 제 2 랜덤 비트 스트림의 비트를 셔플링하도록 더 구성되는, 통신 장치.
  10. 제 9 항에 있어서,
    명령어는, 프로세서로 하여금 룩업 테이블에서 소수의 값을 스왑하도록 함으로써 프로세서로 하여금 셔플링된 룩업 테이블을 생성하도록 하는, 통신 장치.
  11. 데이터를 난독화하기 위한 컴퓨터 구현 방법으로서, 방법은,
    시드 값을 검색하는 단계;
    디지털 비트 스트림을 수신하는 단계;
    의사 난수 발생기(pseudo random number generator, PRNG)에 대한 시드로서 시드 값을 사용하여 랜덤 비트 스트림을 생성하는 단계, 여기서 랜덤 비트 스트림은 적어도 디지털 비트 스트림만큼의 비트를 포함하고;
    랜덤 비트 스트림의 비트를 셔플링하여 랜덤 비트 버퍼를 생성하는 단계; 및
    디지털 비트 스트림과 랜덤 비트 버퍼에 제 1 배타적 논리합(exclusive OR; XOR)을 적용하여 난독화된 디지털 비트 스트림을 생성하는 단계로서, 여기서 난독화된 디지털 비트 스트림은 디지털 비트 스트림과 동일한 수의 비트를 갖는, 단계를 포함하고,
    제 2 디지털 비트 스트림을 수신하는 단계; 및
    제 2 디지털 비트 스트림과 랜덤 비트 버퍼로 제 2 XOR을 수행함으로써 제 2 난독화된 디지털 비트 스트림을 생성하는 단계로서, 제 1 XOR에서 사용되지 않는 랜덤 비트 버퍼의 비트만이 제 2 XOR에서 사용되는 단계를 더 포함하는 컴퓨터 구현 방법.
  12. 제 11 항에 있어서,
    랜덤 비트 버퍼를 초기화하는 단계;
    랜덤 비트 스트림 내의 비트를 트래버싱하고, 설정된 각각의 비트에 대해 대상 비트 위치를 계산하는 단계; 및
    대상 비트 위치에서 랜덤 비트 버퍼 내의 비트를 반전시키는 단계를 더 포함하는 컴퓨터 구현 방법.
  13. 제 12 항에 있어서,
    랜덤 비트 버퍼를 초기화하는 단계는 랜덤 비트 버퍼의 모든 비트를 동일한 값으로 설정하는, 컴퓨터 구현 방법.
  14. 제 12 항에 있어서,
    대상 비트 위치를 계산하는 단계는 테이블 룩업을 사용하는 단계를 포함하는, 컴퓨터 구현 방법.
  15. 삭제
  16. 제 11 항에 있어서,
    제 2 XOR이 랜덤 비트 버퍼의 끝에 도달하지만 제 2 디지털 비트 스트림의 모든 비트가 XOR되지 않은 경우, PRNG로부터 제 2 랜덤 비트 스트림을 생성하는 단계;
    제 2 랜덤 비트 스트림의 비트를 셔플링하여 랜덤 비트 버퍼를 다시 채우는 단계;
    제 2 디지털 비트 스트림과 랜덤 비트 버퍼에 제 3 XOR을 적용하여 제 2 난독화된 디지털 비트 스트림을 계속 생성하는 단계로서, 여기서 제 3 XOR의 첫 번째 비트는 랜덤 비트 버퍼의 첫 번째 비트 및 제 2 XOR에서 사용된 제 2 디지털 비트 스트림의 마지막 비트 이후의 비트인, 단계를 더 포함하는 컴퓨터 구현 방법.
  17. 제 16 항에 있어서,
    스왑할 비트를 식별하기 위해 룩업 테이블을 사용하여 랜덤 비트 스트림의 비트를 셔플링하는 단계;
    랜덤 비트 스트림 내의 다수의 비트를 기반으로 룩업 테이블 내의 다수의 값을 스왑함으로써 셔플링된 룩업 테이블을 생성하는 단계; 및
    스왑할 비트를 식별하기 위해 셔플링된 룩업 테이블을 사용하여 제 2 랜덤 비트 스트림의 비트를 셔플링하는 단계를 더 포함하는 컴퓨터 구현 방법.
  18. 명령어를 저장하도록 구성된 비일시적 컴퓨터 판독 가능 메모리 매체로서, 명령어는 프로세서에 의해 로딩될 때, 프로세서로 하여금
    시드 값을 검색하고;
    디지털 비트 스트림을 수신하고;
    의사 난수 발생기(pseudo random number generator, PRNG)에 대한 시드로서 시드 값을 사용하여 랜덤 비트 스트림을 생성하고, 여기서 랜덤 비트 스트림은 적어도 디지털 비트 스트림만큼의 비트를 포함하고;
    랜덤 비트 스트림의 비트를 셔플링하여 랜덤 비트 버퍼를 생성하고;
    디지털 비트 스트림과 랜덤 비트 버퍼에 제 1 배타적 논리합(exclusive OR; XOR)을 적용하여 난독화된 디지털 비트 스트림을 생성하고, 여기서 난독화된 디지털 비트 스트림은 디지털 비트 스트림과 동일한 수의 비트를 갖고; 및
    난독화된 디지털 비트 스트림을 통신 인터페이스에 제공하도록 하고,
    저장된 명령어는 또한, 프로세서로 하여금
    제 2 디지털 비트 스트림을 수신하고;
    제 2 디지털 비트 스트림과 랜덤 비트 버퍼로 제 2 XOR을 수행함으로써 제 2 난독화된 디지털 비트 스트림을 생성하고, 여기서 제 1 XOR에서 사용되지 않는 랜덤 비트 버퍼의 비트만이 제 2 XOR에서 사용되고;
    제 2 XOR이 랜덤 비트 버퍼의 끝에 도달하지만 제 2 디지털 비트 스트림의 모든 비트가 XOR되지 않은 경우, PRNG로부터 제 2 랜덤 비트 스트림을 생성하고;
    생성되면, 제 2 랜덤 비트 스트림의 비트를 셔플링하여 랜덤 비트 버퍼를 다시 채우고;
    제 2 랜덤 비트 스트림이 생성되면, 제 2 디지털 비트 스트림과 랜덤 비트 버퍼에 제 3 XOR을 적용하여 제 2 난독화된 디지털 비트 스트림을 계속 생성하고, 여기서 제 3 XOR의 첫 번째 비트는 랜덤 비트 버퍼의 첫 번째 비트 및 제 2 XOR에서 사용된 제 2 디지털 비트 스트림의 마지막 비트 이후의 비트이고; 및
    제 2 난독화된 디지털 비트 스트림이 제 2 디지털 비트 스트림과 동일한 수의 비트를 갖는 경우, 통신 인터페이스에 제 2 난독화된 디지털 비트 스트림을 제공하도록 하는, 비일시적 컴퓨터 판독 가능 메모리 매체.
  19. 삭제
  20. 제 18 항에 있어서,
    저장된 명령어는 또한, 프로세서로 하여금
    스왑할 비트를 식별하기 위해 룩업 테이블을 사용하여 랜덤 비트 스트림의 비트를 셔플링하고;
    랜덤 비트 스트림 내의 다수의 비트를 기반으로 룩업 테이블 내의 다수의 값을 스왑함으로써 셔플링된 룩업 테이블을 생성하고; 및
    스왑할 비트를 식별하기 위해 셔플링된 룩업 테이블을 사용하여 제 2 랜덤 비트 스트림의 비트를 셔플링하도록 하는, 비일시적 컴퓨터 판독 가능 메모리 매체.
  21. 통신 인터페이스와;
    프로세서; 및
    프로세서에 작동 가능하게 결합된 작동 가능하게 결합된 비일시적 컴퓨터 판독 가능 메모리 매체를 포함하는 통신 장치로서, 메모리 매체는, 프로세서로 하여금
    시드 값을 검색하고;
    디지털 비트 스트림을 수신하고;
    의사 난수 발생기(pseudo random number generator, PRNG)에 대한 시드로서 시드 값을 사용하여 랜덤 비트 스트림을 생성하고, 여기서 랜덤 비트 스트림은 적어도 디지털 비트 스트림만큼의 비트를 포함하고;
    랜덤 비트 스트림의 적어도 두 개의 비트를 스왑하거나 적어도 하나의 비트를 반전시킴으로써 랜덤 비트 버퍼를 생성하고;
    디지털 비트 스트림과 랜덤 비트 버퍼에 제 1 배타적 논리합(exclusive OR; XOR)을 적용하여 난독화된 디지털 비트 스트림을 생성하고, 여기서 난독화된 디지털 비트 스트림은 디지털 비트 스트림과 동일한 수의 비트를 갖고; 및
    난독화된 디지털 비트 스트림을 통신 인터페이스에 제공하도록 구성된 명령어를 저장하도록 구성된, 통신 장치.
  22. 제 21 항에 있어서,
    랜덤 비트 스트림은 바이트의 2의 거듭제곱으로 구성되는, 통신 장치.
  23. 제 21 항에 있어서,
    명령어는, 프로세서가
    랜덤 비트 버퍼를 초기화하고;
    랜덤 비트 스트림 내의 비트를 트래버싱하고, 설정된 각각의 비트에 대해 대상 비트 위치를 계산하고; 및
    대상 비트 위치에서 랜덤 비트 버퍼 내의 비트를 반전시키도록,
    프로세서로 하여금 랜덤 비트 스트림의 비트를 셔플링하도록 더 구성되는, 통신 장치.
  24. 제 23 항에 있어서,
    명령어는, 프로세서가 랜덤 비트 버퍼의 모든 비트를 동일한 값으로 설정하도록 프로세서로 하여금 랜덤 비트 버퍼를 초기화하도록 더 구성되는, 통신 장치.
  25. 제 23 항에 있어서,
    명령어는, 프로세서가 랜덤 비트 버퍼의 모든 비트를 0으로 설정하도록 프로세서로 하여금 랜덤 비트 버퍼를 초기화하도록 더 구성되는, 통신 장치.
  26. 제 23 항에 있어서,
    명령어는, 프로세서로 하여금 테이블 룩업을 사용하여 대상 비트 위치를 계산하도록 구성되는, 통신 장치.
  27. 제 21 항에 있어서,
    명령어는, 프로세서로 하여금
    디지털 비트 스트림의 CRC를 계산하고; 및
    디지털 비트 스트림이 CRC를 포함하도록, 난독화된 디지털 비트 스트림을 생성하기 전에 디지털 비트 스트림을 수정하도록 더 구성되는, 통신 장치.
  28. 데이터를 난독화하기 위한 컴퓨터 구현 방법으로서, 방법은,
    시드 값을 검색하는 단계;
    디지털 비트 스트림을 수신하는 단계;
    의사 난수 발생기(pseudo random number generator, PRNG)에 대한 시드로서 시드 값을 사용하여 랜덤 비트 스트림을 생성하는 단계, 여기서 랜덤 비트 스트림은 적어도 디지털 비트 스트림만큼의 비트를 포함하고;
    랜덤 비트 스트림의 적어도 두 개의 비트를 스왑하거나 적어도 하나의 비트를 반전시킴으로써 랜덤 비트 버퍼를 생성하는 단계; 및
    디지털 비트 스트림과 랜덤 비트 버퍼에 제 1 배타적 논리합(exclusive OR; XOR)을 적용하여 난독화된 디지털 비트 스트림을 생성하는 단계로서, 여기서 난독화된 디지털 비트 스트림은 디지털 비트 스트림과 동일한 수의 비트를 갖는, 단계를 포함하는 컴퓨터 구현 방법.
  29. 제 28 항에 있어서,
    랜덤 비트 버퍼를 초기화하는 단계;
    랜덤 비트 스트림 내의 비트를 트래버싱하고, 설정된 각각의 비트에 대해 대상 비트 위치를 계산하는 단계; 및
    대상 비트 위치에서 랜덤 비트 버퍼 내의 비트를 반전시키는 단계를 더 포함하는 컴퓨터 구현 방법.
  30. 제 29 항에 있어서,
    랜덤 비트 버퍼를 초기화하는 단계는 랜덤 비트 버퍼의 모든 비트를 동일한 값으로 설정하는, 컴퓨터 구현 방법.
  31. 제 29 항에 있어서,
    대상 비트 위치를 계산하는 단계는 테이블 룩업을 사용하는 단계를 포함하는, 컴퓨터 구현 방법.
  32. 제 28 항에 있어서,
    랜덤 비트 스트림은 바이트의 2의 거듭제곱으로 구성되는, 컴퓨터 구현 방법.
  33. 제 29 항에 있어서,
    랜덤 비트 버퍼를 초기화하는 단계는 랜덤 비트 버퍼의 모든 비트를 0으로 설정하는, 컴퓨터 구현 방법.
  34. 제 28 항에 있어서,
    디지털 비트 스트림의 CRC를 계산하는 단계; 및
    디지털 비트 스트림이 CRC를 포함하도록, 난독화된 디지털 비트 스트림을 생성하기 전에 디지털 비트 스트림을 수정하는 단계를 더 포함하는 컴퓨터 구현 방법.
  35. 명령어를 저장하도록 구성된 비일시적 컴퓨터 판독 가능 메모리 매체로서, 명령어는 프로세서에 의해 로딩될 때, 프로세서로 하여금
    시드 값을 검색하고;
    디지털 비트 스트림을 수신하고;
    의사 난수 발생기(pseudo random number generator, PRNG)에 대한 시드로서 시드 값을 사용하여 랜덤 비트 스트림을 생성하고, 여기서 랜덤 비트 스트림은 적어도 디지털 비트 스트림만큼의 비트를 포함하고;
    랜덤 비트 스트림의 적어도 두 개의 비트를 스왑하거나 적어도 하나의 비트를 반전시킴으로써 랜덤 비트 버퍼를 생성하고;
    디지털 비트 스트림과 랜덤 비트 버퍼에 제 1 배타적 논리합(exclusive OR; XOR)을 적용하여 난독화된 디지털 비트 스트림을 생성하고, 여기서 난독화된 디지털 비트 스트림은 디지털 비트 스트림과 동일한 수의 비트를 갖고; 및
    난독화된 디지털 비트 스트림을 통신 인터페이스에 제공하도록 하는, 비일시적 컴퓨터 판독 가능 메모리 매체.
  36. 제 35 항에 있어서,
    저장된 명령어는 또한, 프로세서로 하여금
    랜덤 비트 스트림이 바이트의 2의 거듭제곱으로 구성되도록 랜덤 비트 스트림을 생성하도록 하는, 비일시적 컴퓨터 판독 가능 메모리 매체.
  37. 제 35 항에 있어서,
    저장된 명령어는 또한, 프로세서로 하여금
    랜덤 비트 버퍼를 초기화하고;
    랜덤 비트 스트림 내의 비트를 트래버싱하고, 설정된 각각의 비트에 대해 대상 비트 위치를 계산하고; 및
    대상 비트 위치에서 랜덤 비트 버퍼 내의 비트를 반전시키도록 하는, 비일시적 컴퓨터 판독 가능 메모리 매체.
  38. 제 37 항에 있어서,
    저장된 명령어는 또한, 프로세서로 하여금
    랜덤 비트 버퍼의 모든 비트가 동일한 값으로 설정되도록 랜덤 비트 버퍼를 초기화하도록 하는, 비일시적 컴퓨터 판독 가능 메모리 매체.
  39. 제 37 항에 있어서,
    저장된 명령어는 또한, 프로세서로 하여금
    룩업 테이블을 사용하여 대상 비트 위치를 계산하도록 하는, 비일시적 컴퓨터 판독 가능 메모리 매체.
  40. 제 35 항에 있어서,
    저장된 명령어는 또한, 프로세서로 하여금
    디지털 비트 스트림의 CRC를 계산하고; 및
    디지털 비트 스트림이 CRC를 포함하도록, 난독화된 디지털 비트 스트림을 생성하기 전에 디지털 비트 스트림을 수정하도록 하는, 비일시적 컴퓨터 판독 가능 메모리 매체.
KR1020187038122A 2016-06-06 2017-06-05 데이터 변환 시스템 및 방법 KR102477070B1 (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201662346451P 2016-06-06 2016-06-06
US62/346,451 2016-06-06
US201662354615P 2016-06-24 2016-06-24
US62/354,615 2016-06-24
US201662376876P 2016-08-18 2016-08-18
US62/376,876 2016-08-18
US201662401609P 2016-09-29 2016-09-29
US62/401,609 2016-09-29
US201662438443P 2016-12-22 2016-12-22
US62/438,443 2016-12-22
PCT/US2017/036002 WO2017214060A1 (en) 2016-06-06 2017-06-05 Data conversion systems and methods

Publications (2)

Publication Number Publication Date
KR20190034505A KR20190034505A (ko) 2019-04-02
KR102477070B1 true KR102477070B1 (ko) 2022-12-12

Family

ID=59062112

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187038122A KR102477070B1 (ko) 2016-06-06 2017-06-05 데이터 변환 시스템 및 방법

Country Status (9)

Country Link
US (2) US10587399B2 (ko)
EP (1) EP3465974A1 (ko)
JP (1) JP2019518397A (ko)
KR (1) KR102477070B1 (ko)
CN (1) CN110073634B (ko)
AU (2) AU2017278253A1 (ko)
CA (1) CA3026281A1 (ko)
IL (1) IL263420B (ko)
WO (1) WO2017214060A1 (ko)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10523490B2 (en) 2013-08-06 2019-12-31 Agilepq, Inc. Authentication of a subscribed code table user utilizing optimized code table signaling
US10056919B2 (en) 2014-07-02 2018-08-21 Agilepq, Inc. Data recovery utilizing optimized code table signaling
US9635011B1 (en) * 2014-08-27 2017-04-25 Jonetix Corporation Encryption and decryption techniques using shuffle function
CA3026281A1 (en) 2016-06-06 2017-12-14 Agilepq, Inc. Data conversion systems and methods
US11398834B2 (en) * 2016-10-14 2022-07-26 Auro Technologies Nv Encoder, recording device, decoder, playback device with robust data block header
AU2016434826A1 (en) * 2016-12-27 2019-08-22 Helder Silvestre Paiva FIGUEIRA Equivocation augmentation dynamic secrecy system
US11334353B2 (en) * 2017-05-18 2022-05-17 Nec Corporation Multiparty computation method, apparatus and program
JP6832794B2 (ja) * 2017-06-05 2021-02-24 ルネサスエレクトロニクス株式会社 無線通信システム
JP7083694B2 (ja) * 2017-07-27 2022-06-13 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 送信装置及び送信方法
US10805276B2 (en) * 2017-09-05 2020-10-13 Comodo Security Solutions, Inc. Device and methods for safe control of vehicle equipment secured by encrypted channel
WO2019074816A1 (en) * 2017-10-09 2019-04-18 Mcnutt Jason METHODS AND SYSTEMS FOR ENCRYPTING DATA USING OBJECT SCREENS
US10476664B2 (en) 2017-10-27 2019-11-12 Quantropi Inc. Methods and systems for data protection
US11323247B2 (en) 2017-10-27 2022-05-03 Quantropi Inc. Methods and systems for secure data communication
CN108055657A (zh) * 2017-12-14 2018-05-18 深圳Tcl数字技术有限公司 节点信息转发方法、网络设备及计算机可读存储介质
US10762294B2 (en) * 2017-12-29 2020-09-01 Dassault Systèmes Americas Corp. Universally unique resources with no dictionary management
US10979221B2 (en) * 2018-01-03 2021-04-13 Arizona Board Of Regents On Behalf Of Northern Arizona University Generation of keys of variable length from cryptographic tables
US11159538B2 (en) 2018-01-31 2021-10-26 Palo Alto Networks, Inc. Context for malware forensics and detection
US10764309B2 (en) 2018-01-31 2020-09-01 Palo Alto Networks, Inc. Context profiling for malware detection
CN113395154B (zh) * 2018-04-04 2022-11-18 中兴通讯股份有限公司 发现参考信号的发送和接收方法、基站和终端
WO2019196721A1 (en) * 2018-04-11 2019-10-17 Beijing Didi Infinity Technology And Development Co., Ltd. Methods and apparatuses for processing data requests and data protection
US10943416B2 (en) * 2018-05-09 2021-03-09 Strattec Security Corporation Secured communication in passive entry passive start (PEPS) systems
CN108650076A (zh) * 2018-05-16 2018-10-12 南通大学 基于量子可逆逻辑的aes加密系统硬件模块的实现方法
US10942909B2 (en) * 2018-09-25 2021-03-09 Salesforce.Com, Inc. Efficient production and consumption for data changes in a database under high concurrency
WO2020142186A1 (en) * 2019-01-04 2020-07-09 Interdigital Vc Holdings, Inc. Inverse mapping simplification
US11271724B2 (en) * 2019-02-21 2022-03-08 Quantum Lock, Inc. One-time-pad encryption system and methods
CN110049035B (zh) * 2019-04-10 2022-11-08 深圳市腾讯信息技术有限公司 一种网络攻击防护方法、装置、电子设备及介质
WO2020215146A1 (en) * 2019-04-23 2020-10-29 Quantropi Inc. Enhanced randomness for digital systems
US11206667B2 (en) * 2019-06-07 2021-12-21 Intel Corporation Data scrambler in extreme high throughput
US11646804B2 (en) * 2019-08-06 2023-05-09 John C. S. Koo Light-based data encoding and/or decoding device
US11343270B1 (en) 2019-09-10 2022-05-24 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography optimization
US11240014B1 (en) 2019-09-10 2022-02-01 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography optimization
US11626983B1 (en) 2019-09-10 2023-04-11 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography optimization
US11477016B1 (en) 2019-09-10 2022-10-18 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography optimization
CN114731270A (zh) * 2019-11-21 2022-07-08 株式会社村田制作所 通信数据文混淆加密方法
AU2020392047A1 (en) * 2019-11-25 2022-04-07 Zebware Ab Method and devices for creating redundancy and encryption using Mojette Transform
CN110913009B (zh) * 2019-12-03 2020-11-10 浙江大学 一种udp网络协议实现浏览器显示心电图的装置和方法
US11322050B1 (en) * 2020-01-30 2022-05-03 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography optimization
US11533175B1 (en) 2020-01-30 2022-12-20 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography on a smartcard
US11838410B1 (en) 2020-01-30 2023-12-05 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography optimization
US11449799B1 (en) 2020-01-30 2022-09-20 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography optimization
BR112022016601A2 (pt) * 2020-02-20 2022-11-08 A Day Early Inc Sistemas e métodos para anonimizar dados sensíveis e simular parâmetros de cronograma acelerado usando os dados anonimizados
KR102222080B1 (ko) * 2020-02-24 2021-03-04 한국전자통신연구원 양자 개체 인증 장치 및 방법
US11329797B2 (en) 2020-02-25 2022-05-10 Quantropi Inc. Method and system for secure phase-encoded digital communication over optical channels
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof
CN111737661A (zh) 2020-05-22 2020-10-02 北京百度网讯科技有限公司 异常堆栈处理方法、系统、电子设备及存储介质
KR102403462B1 (ko) * 2020-07-22 2022-05-27 경북대학교 산학협력단 랜덤 비트 변환 송신기, 수신기, 제어장치 및 제어방법
US20220198045A1 (en) * 2020-12-21 2022-06-23 Cryptography Research, Inc. Protection of neural networks by obfuscation of activation functions
US11956212B2 (en) * 2021-03-31 2024-04-09 Palo Alto Networks, Inc. IoT device application workload capture
CN113630442B (zh) * 2021-07-14 2023-09-12 远景智能国际私人投资有限公司 数据传输方法、装置及系统
US11997691B2 (en) * 2021-07-15 2024-05-28 Qualcomm Incorporated Full-duplex communications and physical layer security
CN113965316A (zh) * 2021-10-25 2022-01-21 上海航天测控通信研究所 网络数据交互方法
US11860868B2 (en) * 2021-12-14 2024-01-02 International Business Machines Corporation Secure database-as-a-service system
US20240202865A1 (en) * 2022-12-19 2024-06-20 Palantir Technologies Inc. Image obfuscation
US12015422B1 (en) * 2023-02-24 2024-06-18 GM Global Technology Operations LLC Data integrity checking between circuits

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040030734A1 (en) * 2000-03-31 2004-02-12 Wells Steven E. Secure hardware random number generator
US20040153291A1 (en) * 2002-11-12 2004-08-05 Stmicroelectronics S.R.L. Method of generating a chaos-based pseudo-random sequence and a hardware generator of chaos-based pseudo random bit sequences

Family Cites Families (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US725605A (en) 1900-07-16 1903-04-14 Nikola Tesla System of signaling.
US3305781A (en) 1963-04-02 1967-02-21 Raytheon Co Diversity combiners
US3296532A (en) 1963-04-02 1967-01-03 Raytheon Co Diversity combiners
US3350646A (en) 1964-03-24 1967-10-31 Motorola Inc Closed loop ratio squared diversity combiner
US3699450A (en) 1970-08-26 1972-10-17 Bell Telephone Labor Inc Apparatus for measuring low level power
US3917935A (en) 1974-12-23 1975-11-04 United Technologies Corp Reduction of look-up table capacity
US4030067A (en) 1975-12-29 1977-06-14 Honeywell Information Systems, Inc. Table lookup direct decoder for double-error correcting (DEC) BCH codes using a pair of syndromes
DE3121146A1 (de) 1981-05-27 1983-01-05 Siemens AG, 1000 Berlin und 8000 München Digitales funksystem
US4528650A (en) 1982-06-07 1985-07-09 Texaco Inc. Streamer cable multiplexing apparatus
US4494238A (en) 1982-06-30 1985-01-15 Motorola, Inc. Multiple channel data link system
US4933956A (en) 1983-04-14 1990-06-12 Codex Corporation Simplified decoding of lattices and codes
US4528550A (en) 1983-10-31 1985-07-09 Northern Telecom Limited Method and apparatus for code conversion of binary of multilevel signals
US4630288A (en) 1983-12-21 1986-12-16 Motorola Canada Limited Data transmission with block coding
US4623999A (en) 1984-06-04 1986-11-18 E-Systems, Inc. Look-up table encoder for linear block codes
US4731799A (en) 1984-07-09 1988-03-15 Motorola Canada Limited Means and method for block encoding detection and decoding
JPS6162234A (ja) 1984-09-04 1986-03-31 Kokusai Denshin Denwa Co Ltd <Kdd> 誤り訂正符号復号方式
US4649541A (en) 1984-11-21 1987-03-10 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Reed-Solomon decoder
US4747103A (en) 1985-03-21 1988-05-24 Canon Kabushiki Kaisha Signal processing apparatus for correcting decoding errors
US4733401A (en) 1986-06-10 1988-03-22 Motorola Canada Limited Block coding into 24 coordinates and detection of transmitted signals
US4849975A (en) 1987-11-10 1989-07-18 International Business Machines Corporation Error correction method and apparatus
US4958349A (en) 1988-11-01 1990-09-18 Ford Aerospace Corporation High data rate BCH decoder
US5150381A (en) 1989-02-16 1992-09-22 Codex Corporation Trellis shaping for modulation systems
JP2776094B2 (ja) 1991-10-31 1998-07-16 日本電気株式会社 可変変調通信方法
EP0543070A1 (en) 1991-11-21 1993-05-26 International Business Machines Corporation Coding system and method using quaternary codes
US5548819A (en) 1991-12-02 1996-08-20 Spectraplex, Inc. Method and apparatus for communication of information
NZ336413A (en) 1993-12-01 2000-01-28 Rpk Nz Ltd Method of generating random numbers by manipulating electronic pointer with coordinates at points corresponding to time instants being used for selection of points subset and computation of number function
KR0139162B1 (ko) 1994-11-30 1998-05-15 김광호 부호어재배정을 이용한 가변장부호화장치 및 복호화장치
US6307868B1 (en) 1995-08-25 2001-10-23 Terayon Communication Systems, Inc. Apparatus and method for SCDMA digital data transmission using orthogonal codes and a head end modem with no tracking loops
US5612651A (en) 1996-01-02 1997-03-18 Loral Aerospace Corp. Modulating array QAM transmitter
DE69719141T2 (de) 1996-10-15 2003-07-24 Matsushita Electric Ind Co Ltd Vorrichtung zur Zurückverfolgung des Pfades in einem Viterbi Dekodierer
JPH10197610A (ja) * 1996-12-31 1998-07-31 Sony Corp ノイズ発生装置およびそれを用いた波形生成装置
US5931966A (en) 1997-05-19 1999-08-03 Carnegie Mellon University Viterbi detector with a pipelined look-up table of squared errors
US5931956A (en) 1997-06-10 1999-08-03 Atmel Corporation Digital circuit using memory for monitoring signals for occurrences of predefined breakpoint conditions
US6035435A (en) 1997-09-30 2000-03-07 Datapath Systems, Inc. Method and apparatus for encoding a binary signal
US6084969A (en) * 1997-12-31 2000-07-04 V-One Corporation Key encryption system and method, pager unit, and pager proxy for a two-way alphanumeric pager network
US7301983B1 (en) 1998-01-05 2007-11-27 Intel Corporation Method for using codebook indexing to achieve high bit densities in a direct-sequence CDMA spread spectrum communication system
DE69930101T2 (de) * 1998-01-09 2006-09-14 Koninklijke Philips Electronics N.V. Vorrichtung zum kodieren/dekodieren von n-bit-quellwörtern in korrespondierenden m-bit-kanalwörtern und umgekehrt
US6223320B1 (en) 1998-02-10 2001-04-24 International Business Machines Corporation Efficient CRC generation utilizing parallel table lookup operations
US7809138B2 (en) 1999-03-16 2010-10-05 Intertrust Technologies Corporation Methods and apparatus for persistent control and protection of content
US6085340A (en) 1998-06-12 2000-07-04 The United States Of America As Represented By The National Security Agency Method of lattice quantization that minimizes storage requirements and computational complexity
EP0969656B1 (en) 1998-06-29 2007-01-24 Xerox Corporation Compression for image boundaries
US7376105B2 (en) 1998-08-21 2008-05-20 Massachusetts Institute Of Technology Source coding for interference reduction
WO2000011845A1 (en) 1998-08-21 2000-03-02 Massachusetts Institute Of Technology Power-efficient communication protocol
US7000106B2 (en) 1999-03-26 2006-02-14 Siemens Communications, Inc. Methods and apparatus for kernel mode encryption of computer telephony
US6715076B1 (en) 1999-10-21 2004-03-30 Koninklijke Philips Electronics N.V. Video signal authentication system
US6771824B1 (en) 1999-12-28 2004-08-03 Lucent Technologies Inc. Adaptive variable length decoding method
US6571368B1 (en) 2000-02-02 2003-05-27 Macronix International Co., Ltd. Systolic Reed-Solomon decoder
US6788696B2 (en) 2000-03-10 2004-09-07 Nortel Networks Limited Transparent QoS using VC-merge capable access modules
US6731692B1 (en) 2000-03-23 2004-05-04 Agere Systems Inc. Symbol encoding and decoding architecture for trellis-coded modulation in gigabit ethernet
WO2001080525A1 (en) 2000-04-14 2001-10-25 Sun Microsystems, Inc. Network access security
US7039392B2 (en) 2000-10-10 2006-05-02 Freescale Semiconductor System and method for providing device authentication in a wireless network
US6937646B1 (en) 2000-10-10 2005-08-30 Freescale Semiconductor, Inc. Leakage nulling receiver correlator structure and method for ultra wide bandwidth communication system
AUPR129300A0 (en) 2000-11-07 2000-11-30 Devsecure Pty Ltd Encoding of universal resource locators in a security gateway to enable manipulation by active content
JP3506330B2 (ja) 2000-12-27 2004-03-15 松下電器産業株式会社 データ送信装置
US7675994B2 (en) 2001-04-02 2010-03-09 Koninklijke Philips Electronics N.V. Packet identification mechanism at the transmitter and receiver for an enhanced ATSC 8-VSB system
US6925126B2 (en) 2001-04-18 2005-08-02 Koninklijke Philips Electronics N.V. Dynamic complexity prediction and regulation of MPEG2 decoding in a media processor
US7197142B2 (en) * 2001-08-24 2007-03-27 Alten Alexander I System and methods for a vernam stream cipher
SE521600C2 (sv) 2001-12-04 2003-11-18 Global Ip Sound Ab Lågbittaktskodek
JP3778087B2 (ja) 2002-01-18 2006-05-24 富士ゼロックス株式会社 データ符号化装置及びデータ復号装置
US6980133B2 (en) 2002-01-24 2005-12-27 Intel Corporation Use of two independent pedals for a foot-operated mouse
US7295624B2 (en) 2002-03-06 2007-11-13 Texas Instruments Incorporated Wireless system with hybrid automatic retransmission request in interference-limited communications
BR0308409A (pt) 2002-03-14 2005-02-09 Contentguard Holdings Inc Método e aparelho para o processamento de uso de expressões de direitos de uso
TWI227869B (en) 2002-11-04 2005-02-11 Mediatek Inc Data coding method and system
CA2388358A1 (en) 2002-05-31 2003-11-30 Voiceage Corporation A method and device for multi-rate lattice vector quantization
US7197094B2 (en) 2002-06-18 2007-03-27 Ralink Technology, Inc. Symbol-based decision feedback equalizer (DFE) with maximum likelihood sequence estimation for wireless receivers under multipath channels
FR2842691B1 (fr) 2002-07-18 2005-01-14 Canon Kk Procede et dispositif de transformation d'un signal numerique
US20040019564A1 (en) 2002-07-26 2004-01-29 Scott Goldthwaite System and method for payment transaction authentication
CN1714377A (zh) * 2002-10-07 2005-12-28 小林朗 用于生成伪随机数的方法及伪随机数生成器
CN100557982C (zh) 2002-10-30 2009-11-04 Nxp股份有限公司 用于接收编码块信号的接收器及其方法和处理器系统
US8149810B1 (en) 2003-02-14 2012-04-03 Marvell International Ltd. Data rate adaptation in multiple-in-multiple-out systems
US7376232B2 (en) * 2003-03-13 2008-05-20 New Mexico Technical Research Foundation Computer system security via dynamic encryption
US7369658B2 (en) 2003-04-07 2008-05-06 Optichron, Inc. Secure modulation and demodulation
US7484165B2 (en) 2003-04-30 2009-01-27 Ericsson Ab Forward error correction coding
JP2005045727A (ja) 2003-07-25 2005-02-17 Matsushita Electric Ind Co Ltd ビタビ復号器
EP1521414B1 (en) 2003-10-03 2008-10-29 Kabushiki Kaisha Toshiba Method and apparatus for sphere decoding
JP4579930B2 (ja) 2004-01-30 2010-11-10 フランス・テレコム 次元ベクトルおよび可変解像度量子化
US20050204038A1 (en) 2004-03-11 2005-09-15 Alexander Medvinsky Method and system for distributing data within a network
KR101151130B1 (ko) 2004-08-17 2012-06-04 삼성전자주식회사 완전 다이버시티 완전 데이터 레이트 시공간 블록 부호를 이용한 데이터 송수신 방법 및 장치
KR100598075B1 (ko) 2004-11-03 2006-07-10 한국전자통신연구원 Ifft/fft 프로세서에 있어서 룩업테이블을 이용한데이터변환 방법
US7327287B2 (en) 2004-12-09 2008-02-05 Massachusetts Institute Of Technology Lossy data compression exploiting distortion side information
US8280046B2 (en) 2005-09-12 2012-10-02 Interdigital Technology Corporation Method and system for deriving an encryption key using joint randomness not shared by others
US20070198837A1 (en) 2005-04-29 2007-08-23 Nokia Corporation Establishment of a secure communication
US20060248337A1 (en) 2005-04-29 2006-11-02 Nokia Corporation Establishment of a secure communication
US8132006B2 (en) 2005-05-03 2012-03-06 Ntt Docomo, Inc. Cryptographic authentication and/or establishment of shared cryptographic keys, including, but not limited to, password authenticated key exchange (PAKE)
US8340450B2 (en) 2005-09-23 2012-12-25 Telefonaktiebolaget Lm Ericsson (Publ) Successively refinable lattice vector quantization
US7844879B2 (en) 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
JP2009527174A (ja) 2006-02-17 2009-07-23 ノキア コーポレイション Mimo受信機を提供する装置、方法およびコンピュータ・プログラム
WO2007113442A1 (fr) 2006-03-31 2007-10-11 France Telecom Procede pour organiser un reseau d'objets communicants et objet communicant pour la mise en oeuvre du procede
AU2007282272B2 (en) 2006-08-09 2010-09-23 Lg Electronics Inc. Method of estimating signal-to-noise ratio, method of adjusting feedback information transmission, adaptive modulation and coding method using the same, and transceiver thereof
JP2008165008A (ja) * 2006-12-28 2008-07-17 Megachips Lsi Solutions Inc データ処理装置及びデータ処理方法
US7970215B2 (en) 2007-03-30 2011-06-28 Intel Corporation Automatic generation of compact code tables
BRPI0811117A2 (pt) 2007-05-16 2014-12-23 Thomson Licensing Aparelho e método para codificar e decodificar sinais
US7908420B2 (en) 2007-07-31 2011-03-15 Broadcom Corporation Processing system with millimeter wave host interface and method for use therewith
TWI378702B (en) 2007-08-24 2012-12-01 Ind Tech Res Inst Group authentication method
US8542727B2 (en) 2007-12-31 2013-09-24 Intel Corporation Systems and apparatuses for performing CABAC parallel encoding and decoding
US20090221252A1 (en) 2008-02-29 2009-09-03 The Hong Kong University Of Science And Technology Low complexity agc for mb-ofdm
US7492807B1 (en) * 2008-04-07 2009-02-17 International Business Machines Corporation Pseudo-random bit sequence (PRBS) synchronization for interconnects with dual-tap scrambling devices and methods
US8306146B2 (en) 2008-05-01 2012-11-06 Futurewei Technologies, Inc. Progressive feedback for high resolution limited feedback wireless communication
US8077534B2 (en) 2008-07-31 2011-12-13 International Business Machines Corporation Adaptive noise suppression using a noise look-up table
US8670560B2 (en) * 2008-10-23 2014-03-11 University Of Ulster Encryption method
WO2010082764A2 (en) 2009-01-13 2010-07-22 Samsung Electronics Co., Ltd. Method of dirty paper coding using nested lattice codes
US8307184B1 (en) 2009-06-01 2012-11-06 Nissani Nissensohn Daniel Nathan Communication and memory capacity enhancement method and apparatus
CN101610452B (zh) 2009-07-15 2011-06-01 西安西电捷通无线网络通信股份有限公司 一种传感器网络鉴别与密钥管理机制的融合方法
JP2011086103A (ja) * 2009-10-15 2011-04-28 Adc Technology Inc Rfidシステム、及びマイクロコンピュータ
US8799668B2 (en) 2009-11-23 2014-08-05 Fred Cheng Rubbing encryption algorithm and security attack safe OTP token
US8295379B2 (en) 2009-12-08 2012-10-23 Futurewei Technologies, Inc. System and method for non-uniform bit allocation in the quantization of channel state vectors
US8320473B1 (en) 2010-01-20 2012-11-27 Prairie Blue, LLC Data communication system utilizing optimized code table signaling
US8539318B2 (en) 2010-06-04 2013-09-17 École Polytechnique Fédérale De Lausanne (Epfl) Power and pin efficient chip-to-chip communications with common-mode rejection and SSO resilience
DE102010050719B4 (de) 2010-11-08 2013-08-22 Fujitsu Technology Solutions Intellectual Property Gmbh Verfahren zum Anpassen der Signalübertragung zwischen zwei elektronischen Geräten sowie Anordnung mit einem Computersystem und einem Peripheriegerät
US8831159B2 (en) 2011-02-09 2014-09-09 Intel Mobile Communications GmbH AM-PM synchronization unit
KR101753618B1 (ko) 2011-02-11 2017-07-04 삼성전자주식회사 릴레이 노드를 이용한 멀티 노드 간 양방향 통신 방법 및 장치
EP2498432B1 (en) 2011-03-11 2014-06-04 Knowledge Development for POF, S.L. Adaptative error correcting code for data communications over a plastic optical fibre
JP5207153B2 (ja) * 2011-03-19 2013-06-12 国立大学法人お茶の水女子大学 擬似乱数発生システム
KR101233254B1 (ko) 2011-04-26 2013-02-14 숭실대학교산학협력단 가변길이 인증코드를 사용하는 무선 통신 단말간 세션키 공유 방법
US8718170B2 (en) 2011-09-12 2014-05-06 Daniel Nathan Nissani (Nissensohn) Lattice coded mimo transmission method and apparatus
US9270655B1 (en) 2011-09-30 2016-02-23 Emc Corporation Configurable one-time authentication tokens with improved resilience to attacks
US8984609B1 (en) 2012-02-24 2015-03-17 Emc Corporation Methods and apparatus for embedding auxiliary information in one-time passcodes
US9225717B1 (en) 2013-03-14 2015-12-29 Emc Corporation Event-based data signing via time-based one-time authentication passcodes
US9118661B1 (en) 2012-02-24 2015-08-25 Emc Corporation Methods and apparatus for authenticating a user using multi-server one-time passcode verification
US9515989B1 (en) 2012-02-24 2016-12-06 EMC IP Holding Company LLC Methods and apparatus for silent alarm channels using one-time passcode authentication tokens
US9832649B1 (en) 2011-10-12 2017-11-28 Technology Business Management, Limted Secure ID authentication
US8752145B1 (en) 2011-12-30 2014-06-10 Emc Corporation Biometric authentication with smart mobile device
US9225171B2 (en) 2012-03-30 2015-12-29 Fujitsu Limited Intelligent electric vehicle recharging
NZ714230A (en) * 2013-04-18 2016-06-24 Risoftdev Inc System and methods for encrypting data
US10523490B2 (en) 2013-08-06 2019-12-31 Agilepq, Inc. Authentication of a subscribed code table user utilizing optimized code table signaling
US9455799B2 (en) 2013-08-06 2016-09-27 OptCTS, Inc. Dynamic control of quality of service (QOS) using derived QOS measures
US9444580B2 (en) 2013-08-06 2016-09-13 OptCTS, Inc. Optimized data transfer utilizing optimized code table signaling
US9432360B1 (en) 2013-12-31 2016-08-30 Emc Corporation Security-aware split-server passcode verification for one-time authentication tokens
US9454654B1 (en) 2013-12-31 2016-09-27 Emc Corporation Multi-server one-time passcode verification on respective high order and low order passcode portions
US9407631B1 (en) 2013-12-31 2016-08-02 Emc Corporation Multi-server passcode verification for one-time authentication tokens with auxiliary channel compatibility
US9350545B1 (en) 2014-06-30 2016-05-24 Emc Corporation Recovery mechanism for fault-tolerant split-server passcode verification of one-time authentication tokens
US10056919B2 (en) 2014-07-02 2018-08-21 Agilepq, Inc. Data recovery utilizing optimized code table signaling
CA3026281A1 (en) 2016-06-06 2017-12-14 Agilepq, Inc. Data conversion systems and methods

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040030734A1 (en) * 2000-03-31 2004-02-12 Wells Steven E. Secure hardware random number generator
US20040153291A1 (en) * 2002-11-12 2004-08-05 Stmicroelectronics S.R.L. Method of generating a chaos-based pseudo-random sequence and a hardware generator of chaos-based pseudo random bit sequences

Also Published As

Publication number Publication date
KR20190034505A (ko) 2019-04-02
EP3465974A1 (en) 2019-04-10
IL263420B (en) 2022-05-01
CA3026281A1 (en) 2017-12-14
US10587399B2 (en) 2020-03-10
IL263420A (en) 2018-12-31
AU2017278253A1 (en) 2019-01-24
US20170353302A1 (en) 2017-12-07
US20200213096A1 (en) 2020-07-02
WO2017214060A1 (en) 2017-12-14
AU2022215311A1 (en) 2022-09-08
JP2019518397A (ja) 2019-06-27
CN110073634A (zh) 2019-07-30
US11018854B2 (en) 2021-05-25
CN110073634B (zh) 2023-02-17

Similar Documents

Publication Publication Date Title
KR102477070B1 (ko) 데이터 변환 시스템 및 방법
US9379891B2 (en) Method and system for ID-based encryption and decryption
US7233664B2 (en) Dynamic security authentication for wireless communication networks
US7895436B2 (en) Authentication system and remotely-distributed storage system
AU2003203712B2 (en) Methods for remotely changing a communications password
US20160119291A1 (en) Secure communication channel with token renewal mechanism
US20110107086A1 (en) Secure authentication and privacy of data communication links via dynamic key synchronization
EP1748615A1 (en) Method and system for providing public key encryption security in insecure networks
KR20170076742A (ko) 보안 접속 및 관련 서비스를 위한 효율적인 개시
WO2017147503A1 (en) Techniques for confidential delivery of random data over a network
EP0644676A2 (en) Secure message authentication for binary additive stream cipher systems
SE538304C2 (sv) Improved installation of a terminal in a secure system
KR20200067265A (ko) 실시간 데이터 전송을 위한 블록 암호 장치 및 방법
CN110012467B (zh) 窄带物联网的分组认证方法
CN102916810A (zh) 传感器认证方法、系统和装置
Goyal et al. Cryptographic security using various encryption and decryption method
CN114765543A (zh) 一种量子密码网络扩展设备的加密通信方法及系统
KR102400260B1 (ko) 속성 기반 접근 제어를 이용하는 엣지 컴퓨팅 기반의 차량-내 통신 시스템 및 그 방법
CN111093193A (zh) 一种适用于Lora网络的MAC层通信安全机制
AU2019381522A1 (en) Encryption system and method employing permutation group-based encryption technology
Patalbansi Secure Authentication and Security System for Mobile Devices in Mobile Cloud Computing
KR20020009783A (ko) 회원제 운용 인터넷 서버의 보안 방법 및 그에 관한 서버시스템
CN114900288A (zh) 一种基于边缘服务的工业环境认证方法

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