KR101798672B1 - 코드 불변식을 이용한 스테가노그래픽 메시징 시스템 - Google Patents

코드 불변식을 이용한 스테가노그래픽 메시징 시스템 Download PDF

Info

Publication number
KR101798672B1
KR101798672B1 KR1020127017500A KR20127017500A KR101798672B1 KR 101798672 B1 KR101798672 B1 KR 101798672B1 KR 1020127017500 A KR1020127017500 A KR 1020127017500A KR 20127017500 A KR20127017500 A KR 20127017500A KR 101798672 B1 KR101798672 B1 KR 101798672B1
Authority
KR
South Korea
Prior art keywords
invariant
message
symbols
sequence
symbol
Prior art date
Application number
KR1020127017500A
Other languages
English (en)
Other versions
KR20130007543A (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 KR20130007543A publication Critical patent/KR20130007543A/ko
Application granted granted Critical
Publication of KR101798672B1 publication Critical patent/KR101798672B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • 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/34Encoding or coding, e.g. Huffman coding or error correction
    • 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/60Digital content management, e.g. content distribution
    • H04L2209/608Watermarking

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

악성 코드의 실행을 방지하고 소프트웨어 침해를 경감시키는 스테가노그래픽 방법이 제공된다. 이 방법은 기계 명령어의 불변식 부분을 이용하여 비변형 코드 내에 실행가능한 워터마크를 생성한다. 이 워터마크는 실행중의 동적 검증 및 연속적인 검증을 비롯해서 소프트웨어 생활주기의 임의의 단계에서 검증될 수 있고, 워터마크의 완전성을 실행 전에 검증함으로써 이질 코드를 검출할 수 있다. 또한, 워터마크는 추가의 정보를 숨기는 스테가노그래픽 잠복 채널로서 소용될 수 있다. 코드 불변식은 다른 기계에서의 로딩 및 링킹과 같은 결합 동작에 의해 변경되지 않으며, 따라서 특정 프로그램의 비변형 인스턴스를 일관되게 및 반복적으로 식별하기 위해 사용될 수 있다. 불변식으로서 오피코드 및 레지스터 레퍼런스를 사용하면 검출을 피하는 프로그램 차의 수단으로서 하찮은 레지스터 치환을 피할 수 있다. 결과적인 사이퍼의 스플릿 키 구조는 코드(제1 키)만 또는 암호표(제2 키)만을 알고 있는 것으로는 메시지를 유도하는데 불충분하다는 것을 암시한다.

Description

코드 불변식을 이용한 스테가노그래픽 메시징 시스템{STEGANOGRAPHIC MESSAGING SYSTEM USING CODE INVARIANTS}
본 출원은 코드 불변식을 이용한 스테가노그래픽 메시징 시스템에 관한 것이다.
스테가노그래피 및 디지털 워터마킹은 오디오, 비디오 및 기타 디지털 미디어에 서명 및 기타 정보를 매립함으로써 지적 재산을 보호하는 강력한 기술이다. 이러한 서명을 인식하고 서명의 완전성을 검증함으로써 지적 재산을 식별하여 지적 재산의 오용을 방지하고 지적 재산의 변형을 검출하며 로열티를 입증한다.
스테가노그래피의 연구는 인쇄물 또는 가시성 작품에서 은닉 메시지 또는 불명료 메시지의 실시를 포함하며, 미디어를 이해하기 어렵게 하는 철저한 크립토그래피(cryptography) 및 기타의 사이퍼(cipher)를 포함한다. 그러나, 크립토그래피와는 달리, 스테가노그래피 기술은 일반적으로 하부의 미디어 아이템을 흐리게 하지 않고, 따라서 암호화(encryption)가 행하여진 방법에 대하여 주의를 끌지 않는다. 그러므로, 스테가노그래픽 구현은 쉽게 보여지는 인공물(artifact) 또는 더 불명료한 인공물을 하부 미디어 아이템에 주입할 수 있는 반면에, 이들은 일반적으로 사용자에 의한 인식가능한 수용을 금지하지 않고, 오히려 미디어 아이템의 소스 또는 원본(origin)을 단순히 계속적으로 표시한다. 종래의 워터마크는 화폐의 가시성 마킹 및/또는 이미지, 상업 도구(수표), 정부 ID(예를 들면, 운전면허증) 및 영상 방송을 포함한다. 공통적인 특성은 의도된 유사 버전(복제본 또는 변경되지 않은 원본)을 입증하기 위한 변형은 탐지가능한 정도로 워터마크를 역시 변형시키지 않고 수행하는 것이 매우 어렵고, 따라서 변형되지 않은 원본에 대하여 소정 레벨의 보안성을 제공한다.
컴퓨터 소프트웨어를 둘러싼 현대의 정보 보안성 문제는 악성 코드에 많은 주의를 기울이고 있다. 악성 코드는 사용자에게 알려지지 않고 예를 들면 개인 정보를 수집하는 것, 이메일을 연발로 발송하는 것, 또는 단순히 다른 파일을 오염시키거나 파괴하는 것과 같이 연고없는 동작을 수행시키는 코드를 침투시키는, 기설치 프로그램에 추가되는 실행파일이다. 악성 코드는 전형적으로 바이러스, 웜 또는 트로이 목마의 형태를 취하는데, 이들은 동작 및 목적에 있어서 미묘한 차이를 갖지만, 원치않는 동작을 수행하기 위해 이질적인(foreign) 실행 소프트웨어를 도입하도록 기존 코드 세그멘트를 변형시키는 공통의 동작을 갖는다.
정보 보안에 대한 종래의 접근법은 패스워드 및 암호화에 의존한다. 패스워드 체계는 접속을 허용하기 전에 단순히 비밀키 또는 어구(phrase)를 호출하지만, 암호화 방식은 정보를 재구성하여 정보를 이해할 수 없게 만든다. 크립토그래픽 기술(암호화 및 상보적 복호화)은 데이터에 수학적 함수를 적용하여 인식불능 형태를 입증하고(암호화) 반대의 함수를 적용하여 원본을 회복시킨다(복호화). 크립토그래픽 함수는 순방향(암호화) 및 역방향(복호화) 함수에 대하여 단일의 개인키(패스워드와 유사함)를 수반할 수 있고, 또는 공개키 암호화에서처럼 2개의 분리되었지만 관련이 있는 키를 수반할 수 있다.
종래의 보안 방책은 실질적인 연산 자원의 응용에 의해 역함수를 유도하도록 소위 소모적인 "브루트 포스"(brute force) 시도로부터 공격받기 쉽다는 단점이 있다. 단일 키 암호화 및 패스워드 방식은 모든 가능한 키 치환의 반복적인 발생에 의해 극복될 수 있다. 공개키 암호화 방식은 공개키 및 개인키 쌍을 연관시키는 큰 소수를 인수분해함으로써 극복될 수 있다. 일반적으로, 이러한 방식은 키를 주기적으로 변경하여 브루트 포스 공격을 회피하기 위해, 아마도 소모적 접근법이 성공하기 전에 키를 변경하는 절차적 필요조건과 결합된다.
본원에서 설명하는 구성은 암호화 키가 암호화 형태에 적용되는 충분한 연산 자원의 적용을 통해 타협될 수 있고 그에 따라 역(복호화)함수를 유도하는 상기 의견에 부분적으로 기초를 둔다. 본원에서 설명하는 구성은 원본을 변형되지 않은 형태로 유지하여 역함수를 유도하는 단서 또는 함수 결과를 제공하지 않는 안전한 사이퍼를 규정한다. 사이퍼는 각각의 알파벳의 기호(symbol)들 사이에 사이퍼 함수를 통해 맵핑된 교호 알파벳(alternate alphabet)을 규정하지만, 암호화(encryption)는 교호 알파벳과 무관한 암호화 함수에 기초하여 교호 값을 연산한다는 점에서 사이퍼는 암호화와 다르다.
본원에서 설명하는 구성은 보호하고자 하는 서브젝트 코드 세그멘트가 불변으로 유지되어 데이터의 매립된 보안 함수(보안 워터마크)에 대한 단서를 제공하지 않기 때문에 전술한 보안 메카니즘을 실질적으로 극복한다. 또한, 코드 세그멘트로부터 발생된 암호문(ciphertext)은 코드 세그멘트의 대응하는 기호들과 대응하는 암호문 사이에서 다수 대 다수(many to many) 맵핑을 유지한다. 종래의 사이퍼는 예를 들면 "a"="1", "b"="2" 등과 같이 동일한 기호가 동일한 맵핑을 공유하는 교호 알파벳을 규정한다. 뒤에서 설명하는 구성은 사이퍼 메시지를 규정하기 위한 교호 알파벳을 통해 코드 세그멘트에 캡슐화된 스테가노그래픽 워터마크를 규정하고, 코드 세그멘트로부터 기호들을 맵핑하기 위해 사용되는 암호표(cipher table)를 규정한다. 코드 세그멘트의 불변식은 교호 알파벳을 형성한다. 사이퍼 메시지로부터의 기호들은 코드 세그멘트의 불변식에 맵핑되고, 기호(코드 불변식에 대한 메시지 기호)들 사이의 관계는 암호표에 기록된다. 코드 불변식의 사용은 코드 세그멘트를 재배치하여 인스턴스(instantiation)들 간의 특정 코드 값을 수정하는 로드 및 링크 처리의 양상들을 도입하지 않고 실행 코드로부터의 입증(validation)을 가능하게 한다. 변형되지 않은 코드 세그멘트의 입증은 암호 메시지, 암호표 및 입증을 위한 코드 세그멘트를 검색하는 것과, 메시지의 각 기호(문자)를 코드로부터의 일련의 불변식 내의 대응하는 불변식에 맵핑(예를 들면, 제1 불변식에 제1 기호를 맵핑하고, 제2 불변식에 제2 기호를 맵핑하는 등의 맵핑)하는 것을 수반하여, 메시지 기호가 그 불변식과 연관된 메시지 기호의 집합에 내포되는 것을 확실히 한다. 이 방법으로, 불변식의 순서 또는 값을 분열시키는 코드 세그멘트의 임의의 개조는 맵핑이 실패되게 하여 개조를 표시(flagging)한다.
사이퍼는 각 기호를 그 교체(부호화) 기호에 맵핑함으로써 기호의 대체를 규정한다. 암호화는 메시지를 알 수 없게 하는 함수를 메시지에 적용하고, 역함수가 원본 메시지를 회복시킨다. 종래의 사이퍼에 있어서, 보호 대상의 원본 메시지 및 암호문은 동일한 알파벳을 공유한다. 본원에서의 구성은 메시지를 발생하는 기호의 교호 알파벳을 규정하고 교호 알파벳의 메시지에 대한 맵핑을 규정하는 사이퍼를 설명한다. 또한 기호의 각 맵핑이 항상 암호문의 동일한 기호에 맵핑되는(즉, 예를 들면, "A"가 "R"에 맵핑되고, "E"가 "W"에 맵핑되는 것) 종래의 사이퍼와는 달리, 맵핑은 기호의 각각의 어커런스(occurrence)마다 다른 기호들을 규정한다. 즉, "a"는 하나의 어커런스에서 "r"에 맵핑되고 다른 어커런스에서 "x"에 맵핑될 수 있다.
종래의 접근법은 이질적인 실행 소프트웨어, 즉 자기 변형 악성 코드, 멀웨어 및 해적 소프트웨어(pirated software)와 같이 특정 플랫폼에서 실행하도록 의도되지 않은 소프트웨어를 식별하지 못한다. 이것은 컴파일링, 링킹 및 로딩을 통한 임의의 변환을 회피하는 디지털 미디어의 경우보다 실행가능 애플리케이션의 경우에 더 문제로 된다. 암호화, 코드 서명, 체크섬 및 해쉬 코드가 실행파일의 보호에 공통이지만, 이들은 원래 실행파일이 아니다. 비록 이 기술들이 신뢰의 사슬의 중요한 요소로서 원본 및 소유권의 운반, 저장 및 입증을 보장하지만, 이 기술들은 실행 전에 제거되어 실제 실행중에 실행파일을 보호할 수 없다.
미국 특허 제6,782,478호에 개시된 것과 같이, 인코딩된 스테가노그래픽 메시지에 대한 종래의 기술은 일련의 불변식이 유도되는 기계 명령어의 레지스터 레퍼런스로서 규정된 정적 값들을 이용한다. 여기에서 설명하는 구성은 다른 명령어 필드가 링킹 및 로딩과 같은 결합(binding) 동작 중에 재지정을 회피한다는 의견에 부분적으로 기초를 두고, 대응하는 알파벳 또는 기호들의 집합에 대한 연관성을 이끌어내는 더 큰 불변식 집합을 규정한다.
종래의 스테가노그래픽 시스템은 미디어의 단일 절충 값, 토큰 또는 메시지가 워터마크의 재생성을 가능하게 한다는 점에서 피보호 미디어의 워터마크로서 소지되는 인증 메시지가 비대칭이라는 단점을 갖는다. 따라서, 본 발명의 구성은 제1 키로서 코드 세그멘트를 이용하고 제2 키로서 암호표를 이용하는 스플릿 키 스테가노그래픽 시스템을 규정함으로써 상기 단점을 실질적으로 극복하고, 그래서 코드 세그멘트 및 대응하는 암호표는 둘 다 메시지를 연산할 필요가 있다. 코드(제1 키, SK1)만 또는 암호표(제2 키, SK2)만 아는 것은 공개키 시스템의 시도된 암호해독에서 사용되는 것처럼 실질적인 연산 자원이 있는 경우에도 메시지를 유도하는데 불충분하다.
따라서, 본 발명의 구성은 대응하는 암호표 및 결과적인 알파벳을 이끌어내는 불변식의 집합을 확대하기 위해 오피코드 및 레지스터 레퍼런스를 포함한 코드 불변식을 사용함으로써 코드 불변식의 제한된 집합으로부터 상기 제시된 단점을 실질적으로 극복한다. 코드 불변식으로서 오피코드를 포함하면, 레지스터가 서로 치환될 수 있다는 점에서 등가물이기 때문에 더욱 강력한 스테가노그래픽 사이퍼를 야기한다. 그러한 등가성이 존재하지 않는 오피코드의 경우에, 오피코드는 동작을 변경하지 않고 교환 또는 치환될 수 없다. 레지스터는 유사한 기능을 가지면서 코드 값을 변경시키는 레지스터의 일관된 치환(즉, '레지스터 3' 레퍼런스를 '레지스터 6'으로 교체)이 멀웨어 발의자로 하여금 검출을 회피하는 다른 명령어 값을 아직 가진 기능적으로 등가인 코드를 주입할 수 있게 하는 취약성을 갖는다. 예를 들면, 콘파이서(Conficer)와 같은 다형 바이러스는 그들의 존재가 이전에 수집된 문자열, 또는 바이러스의 실례(instance)에 대한 단순한 비교에 의해 확인될 수 없도록 일관되게 진화함으로써 종래의 멀웨어 기술에 의한 검출을 회피한다.
더 구체적으로, 본원에서 설명하는 구성은 명령어 시퀀스를 규정하는 코드 세그멘트의 불변식- 이 불변식은 명령어 시퀀스의 고정 값에 대응하는 것임 -의 집합을 식별하고, 각 불변식의 엔트리- 각 엔트리는 불변식 기호를 메시지를 규정하는 메시지 기호들의 집합과 연관시키기 위한 것임 -를 기호표(symbol table)에서 규정함으로써 스테가노그래픽 메시지를 이용하여 코드 시퀀스를 인증하는 방법을 포함한다. 이 방법은 메시지 내의 각 메시지 기호를 코드 세그멘트의 연속적인 불변식 기호와 연관시키고, 각각의 연관성에 대하여, 연속적인 불변식 기호에 대응하는 메시지 기호들의 집합에 메시지 기호를 추가한다. 메시지의 파싱은 메시지에 의해 규정된 일련의 메시지 기호를 코드 세그멘트의 일련의 연속적인 불변식과 연관시키기 위해 계속되고, 저장소(repository)는 코드 세그멘트의 후속 인증을 위한 메시지를 저장하며, 그래서 코드 세그멘트는 메시지 내의 각 메시지 기호가 대응 불변식 기호와 연관된 메시지 기호의 집합과 대응하는 것을 입증함으로써 인증가능하게 되고, 대응성은 메시지 기호의 각각의 개별 시퀀스의 대응하는 위치 및 저장된 맵핑에 의해 규정된 불변식 기호로부터 결정된다.
본 발명의 다른 구성은 워크스테이션, 핸드헬드 또는 랩톱 컴퓨터, 또는 본 발명의 실시형태로서 본원에서 설명하는 방법 동작의 일부 또는 전부를 처리하는 소프트웨어 및/또는 회로(예를 들면, 위에서 언급한 프로세서)에 의해 구성되는 전용 컴퓨팅 장치 등과 같은 다중프로그래밍 또는 다중처리 컴퓨터화 장치를 포함한다. 본 발명의 또 다른 실시형태는 단독으로 또는 다중처리 컴퓨터화 장치와 서로 협력해서 동작하여 위에서 요약되고 뒤에서 더 자세히 설명되는 방법 실시형태 단계 및 동작을 수행하는 자바 가상 머신 및/또는 운영체제와 같은 소프트웨어 프로그램을 포함한다. 이러한 한가지 실시형태는 메모리 및 프로세서의 결합을 가진 다중처리 컴퓨터화 장치에서 수행될 때 데이터 액세스 요청을 실행하도록 본 발명의 실시형태로서 본원에서 설명하는 동작들을 수행하게끔 프로세서를 프로그램하는 인코드된 컴퓨터 프로그램 로직을 포함한 컴퓨터 판독가능 기억 매체를 구비한 컴퓨터 프로그램 제품을 포함한다. 본 발명의 이러한 구성은 전형적으로 하나 이상의 ROM, RAM 또는 PROM 칩, 필드 프로그래머블 게이트 어레이(FPGA) 또는 특수 용도 집적회로(ASIC) 내의 펌웨어 또는 마이크로코드와 같이, 광학 매체(예를 들면, CD-ROM), 플로피 또는 하드 디스크 또는 다른 매체와 같은 컴퓨터 판독가능 매체에 배열 또는 인코드된 소프트웨어, 코드 및/또는 기타 데이터(예를 들면, 데이터 구조물)로서 제공된다. 소프트웨어 또는 펌웨어 또는 기타의 이러한 구성은 컴퓨터화 장치에 설치되어(예를 들면, 운영체제 실행중에 또는 환경 설치중에) 컴퓨터화 장치로 하여금 본 발명의 실시형태로서 본원에서 설명하는 기술들을 수행하게 할 수 있다.
악성 코드의 실행을 방지하고 소프트웨어 침해를 경감시키는 스테가노그래픽 방법이 제공된다.
본 발명의 전술한 및 기타의 목적, 특징 및 장점들은 첨부 도면에 도시된 본 발명의 특정 실시형태에 대한 이하의 설명으로부터 명백하게 될 것이다. 첨부 도면에 있어서 동일한 참조 번호는 동일한 부분을 나타낸다. 도면은 정확한 축척으로 된 것이 아니며, 본 발명의 원리를 설명하는데 강조점을 둔 것이다.
도 1은 본 발명의 구성과 함께 사용하기에 적합한 정보 처리 환경의 배경도이다.
도 2는 도 1의 환경에서 스테가노그래픽 워터마킹 방법을 보인 흐름도이다.
도 3은 도 2에 규정된 대로의 스테가노그래픽 워터마크 발생을 보인 도이다.
도 4는 도 3에서와 같은 복합 워터마크에 대한 메시지 기호의 다 대 일 맵핑을 보인 도이다.
도 5 내지 도 7은 도 3 및 도 4에 도시된 스테가노그래픽 워터마크 발생 및 입증의 흐름도이다.
수표 및 화폐와 같은 금융 도구의 권한없는 복제를 방지하기 위해 이미 널리 사용되고 있는 워터마킹 기술은 전자 환경에서도 또한 사용되고 있다. 문서 기반 자료의 출판업자에 대하여, 워터마크는 권한없는 복제를 방지하는 메카니즘으로서 인기를 얻고 있다. 운전면허증 및 화폐와 같은 정부가 발행한 도구의 물리적인 복사만을 위해서 사용될 때, 그 개념이 전자 미디어에 적응되었다. 워터마크는 특수 복사의 원본 또는 인스턴스(instantiation)를 식별하기 위해 문서에 심어지는 임베디드 토큰이다. 비록 워터마크가 보여질 수도 있고 숨겨질 수도 있지만, 공통의 전제는 워터마크를 복제하지 않으면서 내용을 복제하기 위해서는 실질적인 노력이 필요하다는 것이다. 그러므로, 워터마크는 원래의 소스에 대한 결합을 유지하기 위해 연속적인 인스턴스들과 함께 소지된다. 가시성 워터마크는 연출된 복사본에서, 가끔 연출된 영역을 가로지르는 대각선 하프톤 문구(phrase) 또는 표장으로서 보여질 수 있다.
스테가노그래피는 다른 메시지 내에 메시지를 은밀하게 끼워넣음으로써 정보를 숨기는 방식으로서 설명될 수 있다. 스테가노그래피를 다른 정보 숨김 형태와 구별하는 것은 단순히 숨겨진 메시지의 존재를 검출하는 것에 촛점이 있다. 워터마킹과 지문인식법은 2가지의 다른 정보 숨김 문제이고, 숨겨진 메시지의 존재는 공적 지식이다. 이 영역에서의 포커스는 지각 데이터의 메시지를 전형적으로 인간인 관측자로부터 숨기는 것, 및 데이터 자체를 심각하게 왜곡시키지 않고서는 제거되지 않도록 강력하게 메시지를 끼워넣는 것에 있다. 워터마킹과 지문인식법의 차이점은 워터마킹은 원본의 표식과 함께 디지털 객체를 제공하고 모든 객체들이 동일한 방법으로 표시되는 반면에, 지문인식법은 사용자에게 분배되는 각 복사본에 독특한 마커를 끼워넣음으로써 객체의 개별 복사본을 식별하려고 한다는 점이다.
다른 기술들은 실행을 감시하기 위해 추가적인 소스, 매개자 또는 실행 코드로서 특수 기능을 통합한다. 그러나, 이 기술들은 코드 풋프린트 및 그 실행 토폴로지를 변경하기 때문에 차동 스테가날리시스(steganalysis) 기술에 의해 실행파일에서 검출될 수 있다.
위에서 설명한 것처럼, 코드 서명 및 다른 암호화 기술은 수십년 동안 널리 사용되고 있지만, 멀웨어 실행을 방지하기 위해 스테가노그래피와 함께 행하여진 적은 거의 없다. 실제로, 목적 코드에 대한 예전의 스테가노그래픽 소프트웨어 보호 방법은 명령의 재배열 또는 재배치를 사용하였다. 일반적으로, 이 재배열로부터 발생하는 성능 충격(performance impact)은 작지만 성능 감지 응용에서 및 차동 스테가날리시스를 통한 검출 및 기만(circumvention)에 자신을 다시 제공하는 경우에는 특히 심각할 수 있다.
대안적인 접근 레지스터는, 위에서 언급한 미국 특허에 개시되어 있는 것처럼, 스테고텍스트를 생성하고 성능 충격을 회피하기 위해 다시 번호가 붙여지거나 재작성될 수 있다. 그러나, 명령어를 재배열 또는 치환하는 것, 조건 코드를 사용하거나 레지스터를 다시 번호붙이는 것, 및 동일한 연산 결과를 달성하는 것에 대해서는 몇 가지 방법밖에 없다. 이러한 구속은 정보 엔트로피, 즉 단위 실행 코드당 운반될 수 있는 정보의 양을 크게 감소시키고, 그에 따라서 정보의 활용성을 제한한다.
또한, 차동 스테가날리시스는, 2개의 코드 섹션 또는 코드 섹션의 물리적 특성 또는 성능과 비교할 때, 워터마크의 개연적 존재를 결정하기 위해 사용될 수 있다. 따라서 이러한 스테고시스템은 연산적으로 또는 통계적으로 안전하다고 간주된다.
실행중에 실행 코드를 보호하기 위한 워터마킹에서의 특수한 구속은 목적 코드 명령어 자체의 포맷이다. 디지털 미디어 및 오디오 신호와는 달리, 목적 코드 명령어에는 몇 개의 미사용 비트가 있고, 따라서 명령어를 직접 실행할 필요가 있는 범위를 넘어서 적은 수의 추가적인 정보가 인코드될 수 있다. 본원에서 설명하는 방법은 보호 대상, 즉 "워터마크"된 코드 세그멘트가 변형되지 않은 채 유지되기 때문에 이러한 구속으로부터 영향을 받지 않는다. 여기에서 설명하는 인코딩 처리는 실행 코드 세그멘트의 어의론 또는 의미의 대안적인 집합을 생성한다. 이 인코딩 처리는 실행 코드 세그멘트 자체를 변형시키지 않고 실행 코드로부터 "워터마크" 또는 "지문"을 생성하기 위해 사용된다. 실행 코드 세그멘트의 독특한 소프트웨어 아이덴티티를 확립하는 기초를 형성하는 것을 넘어서, 워터마크는 크립토그래픽적으로 더욱 숨겨지는 추가의 정보, 즉 "페이로드" 또는 은닉 메시지를 얻기 위한 키로서 사용될 수 있다.
워터마킹 실행 코드에 대한 여기에서 설명하는 방법은 실행 코드 세그멘트가 이용가능일 때 임의의 생활주기(lifecycle) 단계 중에 수행될 수 있다. 이것은 코드 발생시에; 패키지하는 동안; 운송을 위한 암호화 또는 코드 서명 전에; 수신측에서의 복호 후에; 스토리지로의 이동 중에 또는 실행 전의 링킹/로딩시에 컴파일러를 통하는 것을 포함한다.
도 1은 본 발명의 구성을 이용하기에 적합한 정보 처리 환경(100)의 배경도이다. 도 1을 참조하면, 정보 처리 환경(100)은 여기에서 설명하는 것처럼 입증 및 인증을 위한 실행가능한 목적 코드의 코드 세그멘트(110-1...110-3)(총칭하여 110으로 표시한다)를 포함한다. 이 기술 분야에서 잘 알려져 있는 것처럼, 실행 코드(110) 세그멘트는 실행 머신에서의 링킹 및 로딩 중에 메모리 재배치를 통해 값을 보유하는, 뒤에서 더 자세히 설명하는 오피코드 또는 불변식의 시퀀스를 포함한다. 순서대로 파싱되었을 때 일련의 불변식(118-A)이 발생하고, 각 불변식은 오피코드와 같은 불변식 기호에 의해 규정된다. 워터마커(112)는 기호들을 맵핑하기 위한 암호표(116)를 발생하는 인코더(114)를 포함한다. 메시지(120)(M*)는 일련의 불변식과 함께 인코딩하기 위한 텍스트 문자열과 같은 일련의 기호를 규정한다.
뒤에서 자세히 설명하는 것처럼, 인코딩을 통하여, 인코더(114)는 메시지(120)의 각 기호를 불변식(118-A) 시퀀스의 각 불변식에 맵핑한다. 불변식에 대한 메시지 기호의 각 연합(115)은 암호표(116)에서 규정된 맵핑을 통하여 표현되고, 암호표(116)는 제1 크리덴셜(credential)(SK1)을 규정하는 목적 코드(110)의 인증시에 제2 크리덴셜(SK2)로서 동작한다. 불변식이 재배치, 로딩 및 실행 중에 변경되지 않기 때문에, 입증을 위한 실행가능한 목적 코드(122)는 점선(124)으로 나타낸 것처럼 암호표(116)를 발생시키는 대응하는 실행가능 목적 코드와 동일한 불변식 시퀀스를 가질 것이다. 실행 환경(130)에서, 디코더(132)는 실행중에 실행 코드(122)로부터의 각 명령어를 맵핑한다. 디코더(132)는 각 불변식을 대응하는 메시지(120) 기호로 디코드한다. 만일 실행가능한 목적 코드(122)의 불변식들이 변경되지 않으면, 각 디코더 결과(125)는 뒤에서 자세히 설명하는 것처럼 대응하는 불변식(118-B)을 정합시킬 것이다(130).
도 1에 도시되고 위에서 설명한 것처럼, 실행 코드(110)는 초기에 워터마커(112)에 제공된 커버텍스트로서 소용되고, 커버텍스트는 실행 코드(110)를 분석하여 그 구조, 실행코드가 내포하는 불변식 및 그들의 시퀀스를 결정한다. 예를 들면, 실행 코드(110)는 상업적으로 입수가능한 디스어셈블러, 디버거 또는 유틸리티 소프트웨어를 이용해서 및 가능하다면 일반적으로 헤더 파일 또는 디버깅 데이터베이스에 내포된 추가의 정보를 이용해서 그 이진수 형태로부터 분해될 수 있다. 실행 코드 세그멘트(110)(코드 세그멘트)는 인코더(114)에 제공되고, 인코더에서 모든 불변식(118-A) 또는 불변식의 부분집합이 워터마크를 포함하도록 선택될 수 있고, 또는 실행 코드 세그멘트의 일부만이 워터마크를 포함하도록 선택될 수 있다.
인코더(114)는 은닉 메시지(m*)를 수신하고 m*의 기호 시퀀스를 실행 코드 세그멘트 커버텍스트(110)에서 조우되는 불변식 시퀀스에 결합한다. 따라서, 불변식은 암호표(116)라고 알려진 기호에 대한 불변식의 비 단사 맵핑(다수 대 다수)을 포함하는 변환표에 의해 표시된 은닉 메시지(m*)를 나타내는 알파벳을 확립한다.
은닉 메시지(m*)의 요소들은 단일 기호로 제한될 필요가 없고, 오히려 임의의 정보를 임의의 형태로 표시할 수 있다. 예를 들면, "기호"는 크기가 실행 플랫폼의 저장 용량에 의해서만 제한되는 이진수일 수 있다.
워터마킹 처리는 암호표(116)를 내포하는 크리덴셜(sk2)을 생성한다. 크리덴셜은 설명된 이중 키 스테가노그래픽 암호체계의 제2 성분(sk2)을 포함한다.
크리덴셜은 암호표를 통해 불변식을 역참조(dereference)함으로써 실행중에 "인식"될 수 있기 때문에 은닉 메시지 자체를 내포할 필요가 없다. 변형되지 않은 실행 코드(110)는 이제 은닉 메시지(120)(m*)를 표시하는 워터마크를 내포한 스테고텍스트이다. 스테고텍스트(110)(sk1)만 또는 암호표(116)(sk2)만의 지식은 m*(120)을 확인하기에는 불충분한 정보를 제공한다. 그러므로, 개시되는 구성은 불변식 성분을 포함한 명령어 포맷을 가진 임의의 연산 구조에 적용할 수 있는 실행 코드 세그멘트를 보호하기 위한 스플릿 키 스테가노그래픽 암호체계를 포함한다. 임의의 실행 코드 세그멘트가 속박되지 않은 계산 능력 및 비제한 시간이 주어진 커버텍스트인지 또는 스테고텍스트인지 결정할 수 없음은 1998년 Cachin, Christian에 의해 전적으로 안전한 스테가노그래피의 실례로 발표되었다(Digital Steganography, In Proc. 2nd Workshop on Information Hiding, Lecture Notes in Computer Science, vol. 1525, Springer, (1998)).
크리덴셜(SK2)에 알파벳으로 표시된 스테고텍스트(실행 코드 세그멘트(110))에 내포된 워터마크는 실행 코드에서 불변식 시퀀스의 임의의 변형이 암호표(116)와 호환되지 않게 하고 위조 또는 이질 코드(foreign code)를 표시한다는 점에서 깨지기 쉬운 소프트웨어 아이덴티티를 포함한다. 은닉 메시지(120)(m*)는 라이센스 키와 같은 플랫폼 특정 정보 또는 실행 코드를 특정 플랫폼에 연결하는 기타 정보를 포함할 수 있다. 만일 실행 코드 세그멘트(110)가 이 정보를 제거하도록 변경되거나, 크리덴셜이 제거되거나 변경되었으면, 부적절한 사용이 의심될 수 있다. 멀웨어 실행 및 소프트웨어 침해를 검출하고 방지하는데 유용하게 하는 것은 이 깨지기 쉬움에 있다.
개시된 스테가노그래픽 암호체계를 이용하여 위조 또는 이질 코드를 검출할 때, 인식기(recognizer)는 크리덴셜(SK2)을 이용하여 은닉 메시지(120)와 인식 디코딩의 결과를 비교함으로써 워터마크의 완전성을 검증한다. 만일 실행 코드(110)(SK1)와 크리덴셜(116)(SK2)이 둘 다 본래대로이고 변형되지 않았으면, 워터마크 완전성이 검증된다.
도 2는 도 1의 환경에서 스테가노그래픽 워터마킹 방법을 보인 흐름도이다. 도 1과 도 2를 참조하면, 단계 200에서, 스테가노그래픽 메시지를 인코딩하는 방법은 코드 세그멘트로부터 불변식 시퀀스를 파싱(parsing)하는 단계를 포함하고, 이때 불변식은 명령어 시퀀스의 고정 값에 대응하고 각 불변식은 불변식 기호에 의해 규정된다. 예시적인 구성에 있어서, 불변식은 컴파일링, 링킹 및 로딩 중에 재배치되지 않는 기계 명령어 및 레지스터 레퍼런스를 포함하고, 불변식 기호는 명령어 또는 피연산자를 나타내는 어셈블러 오피코드이다. 인코딩을 위한 메시지는 단계 201에 표시된 것처럼 알파벳으로부터의 일련의 메시지 기호로부터 선택된다. 예시적인 구성에 있어서, 인코드된 메시지(120)는 그래코 로망 알파벳의 상투어이다. 인코더(114)는, 단계 202에서 나타낸 것처럼, 선택된 메시지(120)의 각 메시지 기호(즉, 문자)를 실행가능 목적 코드(110)로부터의 불변식 시퀀스의 연속적인 불변식에 맵핑함으로써 변환 알파벳(translation alphabet)을 규정하고, 따라서 맵핑(116)은 각 불변식 기호를 메시지(120)를 구성하는 메시지 기호의 부분집합에 연관시키며, 불변식 기호의 각각의 어커런스는 기호들의 부분집합에 있는 복수의 메시지 기호와 연관된다. 종래의 사이퍼에 있어서, 각 기호는 일대일(one-to-one) 또는 결정론적 순방향 및 역방향인 관계를 규정하는 변환 알파벳의 단일 문자 또는 기호와 관계가 있다.
개시된 구성에서, 위에서 설명한 것처럼, 변환 알파벳은, 단계 203에서 나타낸 것처럼, 목표 기계(target machine)(즉, 실행 환경(130))에서의 재배치 및 실행 중에 값을 유지하는 컴퓨터 머신 명령어에 기초하여 불변식의 집합에 대응하는 불변식 기호들을 포함한다. 메시지(120)의 각 메시지 기호(즉, 문자)는, 단계 204에 나타낸 것처럼, 불변식 기호가 복수의 메시지 기호에 맵핑되도록 각 시퀀스의 대응하는 위치에 의해 규정된 대응하는 불변식(어셈블러 니모닉)을 가지며, 따라서 파싱된 불변식의 집합은 동일한 불변식 기호로부터 발생하는 메시지 기호의 다중 변환을 가진 변환 알파벳을 규정한다. 따라서, 불변식의 시퀀스는 병렬 알파벳의 메시지를 규정하지만, 각각의 불변식 기호 어커런스는 메시지(120)의 다른 기호에 맵핑된다.
각각의 컴퓨터 구조물은 그 실행 코드 명령어에 대하여 특수한 포맷을 이용한다. 매우 유사한 구조물조차도 실행 코드 명령어 및 그들의 포맷에 있어서 상당한 차이를 가질 수 있다. 일반적으로, 각 명령어는 연산 코드(오피코드), 레지스터, 값 또는 어드레스 및 어드레스 옵셋과 같은 명령어의 성분을 나타내는 비트 패턴의 시퀀스이다. 이러한 패턴들의 일부는 실행 코드 세그멘트가 실행을 위해 메모리에 로드될 때 또는 실행 코드 세그멘트를 실행하는 동안에 오피코드 및 레지스터와 같이 그들이 나타내는 명령어 성분들이 변형되지 않기 때문에 불변식이다. 더욱이, 이러한 불변식에 대한 약간의 변화는 거의 항상 명령어의 연산 활동을 변화시킨다. 이러한 변화는 실행 코드 세그멘트에 멀웨어를 도입하는 1차 벡터이다.
코드 세그멘트(110)에서 인식되는 불변식의 집합으로서 규정되는 변환 알파벳으로부터, 인코더는, 단계 205에 나타낸 것처럼, 각 불변식을 메시지(120)의 기호에 맵핑하는 크리덴셜(116)을 구축하고, 이때 메시지는 메시지(120)의 각 기호를 대응하는 불변식에 맵핑함으로써 코드 세그멘트(110)의 후속 입증을 위하여 구성되며, 따라서 특정 불변식의 각각의 어커런스는 동일 불변식의 다른 어커런스들에 적용되는 맵핑에 대해 독립적이다. 예시적인 구성에 있어서, 크리덴셜은 불변식 시퀀스로부터의 각 불변식 기호를 메시지 기호 시퀀스로부터의 메시지 기호에 결합하는 암호표(116, 도 3 참조) 또는 기호표의 형태를 취하고, 결합(binding)은 메시지 기호에 대한 불변식 기호의 비 단사 맵핑으로부터의 변환 알파벳을 규정한다.
따라서, 암호표(크리덴셜)(116) 및 메시지(120)는 대응하는 코드 세그멘트(110)를 인증하기 위한 크리덴셜을 규정한다. 불변식을 분열시키는 코드 세그멘트(110)의 변형은 맵핑이 메시지(120)에 대응하는 불변식의 시퀀스를 찾아내는데 실패하게 할 것이다. 따라서, 코드 세그멘트(110) 인증 또는 입증이 필요한 나중 시간에, 디코더는 단계 207에 나타낸 것처럼 불변식의 시퀀스로부터 대응하는 불변식 기호와 연관된 기호 집합에 대하여 메시지(120)의 각 기호를 입증함으로써(암호표(116)를 통해) 입증(122)을 위해 코드 세그멘트를 인증한다.
불변식 시퀀스에 의해 규정된 스테가노그래픽 메시지에 대한 인증을 위해 그래코 로망 알파벳 메시지를 이용하는 예시적인 구성에 있어서, 코드 세그멘트의 인증은 메시지를 검색하는 것, 코드 세그멘트로부터 각 불변식을 파싱하는 것, 및 시퀀스에서의 각각의 불변식 기호 어커런스가 반드시 동일한 메시지 기호에 맵핑될 필요가 없을 때 각각의 파싱된 불변식이 대응하는 기호들의 집합을 식별하는 것을 포함한다. 디코더는, 반복적인 방식으로, 각각의 연속적인 메시지 기호를 각각의 연속적으로 파싱된 불변식에 대응하는 기호들의 집합과, 예를 들면 제1 대 제1, 제2 대 제2, 등으로 비교하고, 각각의 연속적인 기호가 뒤에서 도 3과 관련하여 자세히 설명되는 것처럼 각각의 파싱된 불변식에 대응하는 기호들의 집합 내에 있는지 확인한다.
도 3은 도 2에 규정된 대로 스테가노그래픽 워터마크 발생을 보인 도이다. 도 1 및 도 3을 참조하면, 코드 세그멘트(110)는 일련의 오피코드(140) 및 피연산자(142)를 포함한다. 정확한 포맷 및 값은 구조물에 따라 변하지만, 일반적으로 각 오피코드(140)는 다수의 피연산자(142)를 갖는 것으로 예상된다. 오피코드(140)와 피연산자(142)는 둘 다 불변식(144)(밑줄친 피연산자 및 오피코드)일 수 있고, 이것은 그들의 값이 컴파일링 및 링킹에 응답하여 변하지 않음을 의미한다. 이와 대조적으로, 일부 피연산자는 재배치가능하고, 이것은 피연산자가 메모리 페이지 또는 스택 위치와 관련있는 값을 이용하고, 따라서 각 인스턴스마다 값을 변화시킨다는 것을 의미한다.
실행 코드(110)의 각 불변식(144)은 암호표에서 불변식 기호(150)로 표시될 수 있다. 불변식 기호의 집합(152)은 스테가노그래픽 메시지를 구성하는 알파벳을 규정한다. 각각의 불변식 기호(150)에 대하여, 암호표 엔트리(154-1,...154-11)(총칭하여 154로 표시함)는 그 불변식 기호(150)와 연관된 각 메시지 기호(156)의 집합(158)을 포함한다. 더 일반적으로 알파벳들 간의 맵핑(불변식의 집합(152)과 메시지 기호(120-1))을 표시하는 기호표로서 인용되는 암호표(116)의 발생은 메시지(120-1)로부터의 각 메시지 기호(즉 문자)(156-1,...156-24)(총칭하여 156으로 표시함)를 그 위치에서 발생하는 불변식의 대응하는 엔트리(154)에 맵핑하는 것을 포함한다. 예를 들면, 메시지(120-1)의 제1 기호(156-1)로 시작해서, 메시지 기호(156-1)("A")는 라인 110-1로부터의 제1 불변식 PUSH에 연관된다. 메시지 기호 "T"(156-1)는 PUSH에 대한 메시지 기호(150)의 엔트리(154-1)에 추가된다. 제2 메시지 기호(156-2)는 역시 라인 110-1로부터의 제2 불변식 EBP와 연관되고, 따라서 엔트리(154-2)에 메시지 기호 "H"(156-2)를 저장한다. 제3 메시지 기호 "E"(156-3)는 코드 세그멘트 라인 110-2로부터의 MOVL과 연관되고 엔트리(154-3)에 "E"를 추가한다. 라인 110-2에서 파싱을 계속해서, ESP가 엔트리(154-3)에 맵핑되고 메시지 기호(156-4)(" ")를 저장한다. 메시지 기호(156-5)는 역시 라인 110-2에서 EBP와 "Q"를 연관시킨다. EBP에 대한 엔트리(154-2)가 이미 있기 때문에, 메시지 기호(156-5)는 "Q"를 엔트리(154-2)에 추가한다. 불변식 기호(150)와 연관된 엔트리의 집합(158)은 포함되는 것 중 단지 하나이고, 그 안에서 메시지 기호가 나타나는 순서가 아님에 주목해야 한다. 인코더(114)는 나머지의 메시지 기호(156)를 대응하는 위치의 불변식(144)에 연관시키고, 연관성이 대응 불변식 기호(150)에 대하여 엔트리(154)에 맵핑된다.
완료되었을 때, 스테가노그래픽 메시지(120-1)는 코드 세그멘트(110)에 인코드되고, 불변식 기호(150)를 메시지 기호(156)에 맵핑함으로써 코드 세그멘트(110)를 불변 상태로 유지하며, 그에 따라서 각각의 기호를 구성하는 기호들의 알파벳(불변식(152)과 종래의 ASCII) 사이의 변환을 규정한다. 단지 하나의 크리덴셜(기호표(116) 또는 메시지(120-1))에 대한 단순한 지식은 코드 세그멘트(110)로부터 메시지를 유도하는데 불충분하고, 둘 다가 입증 시도시에 사용되어야 한다는 점에 또한 주목해야 한다. 보호의 강도는 스테가노그래픽 메시지의 깨지기 쉬움에 있다. 변형이 순서정해진 불변식(110)(스테고텍스트)에서 이루어지고 불변식에 맵핑된 계산된 스테가노그래픽 메시지(120)를 파괴하지 않는 것은 매우 어렵고 가능성도 없다.
도 3의 실행 코드(110)는 은닉된 메시지 기호에 대한 불변식의 다수 대 다수 또는 비 단사(다수 대 다수) 맵핑으로서 은닉 메시지(m*)를 표시하도록 암호표(116)를 통하여 결합된 실행 코드(X86/AT&T 구문)의 니모닉 형식의 예를 보인 것이다. 워터마킹 처리중에, 본 발명의 방법은 워터마커(인코더)(114)와 디코더(132) 사이에서 전송될 정보를 스테가노그래픽적으로 표시하기 위한 알파벳으로서 이러한 불변식을 이용한다. 따라서, 워터마킹 처리는 실행 코드 자체 또는 그 실행 토폴로지를 변형시키지 않고 실행 코드를 평문으로부터 은닉 정보를 내포한 스테고텍스트로 변환한다.
워터마크를 인식하고 그 은닉 메시지를 디코딩하는 것은 각각의 기계 명령어에서 식별된 불변식 및 암호표(116)에의 색인을 이용한다. 이어서, 그 불변식에 의해 표시된 기호가 은닉 메시지(m*)의 그 지점에 대하여 정확한 것인지 결정되어야 한다.
개시된 스테가노그래픽 암호체계는 임의의 연산 구조에 적용될 수 있고, 실행 코드 명령어는 실제 연산 구조와 상관없이 알파벳을 생성할 수 있는 불변식을 포함한다. 이 섹션에서, 우리는 비제한적인 예로서 이질 코드의 실행을 방지하는 우리의 스테가노그래픽 암호체계의 활용을 설명한다.
실행 코드 세그멘트의 일부 또는 전부가 워터마크될 수 있다. 각 부분은 특정의 기능 또는 루틴만을 포함할 수 있다. 이것은 보안 엔지니어와 같은 사용자에 의해 또는 디버거 또는 역 엔지니어링 알고리즘과 같은 분석 프로그램에 의한 자동화 방식으로 선택될 수 있다. 각각의 워터마크된 부분은 잠재적으로 유일한 크리덴셜을 가질 것이다. 예를 들어서, 이 크리덴셜들은 각각 상이한 불변식 집합 및 상이한 은닉 메시지를 사용할 수 있다. 실행 코드 세그멘트 당 복수의 크리덴셜을 사용하는 것은 워터마크의 복잡성을 증가시키고, 각 크리덴셜이 통계적으로 서로 관계가 없기 때문에 워터마킹 처리의 안전성을 향상시킨다. 이러한 복잡한 워터마크의 사용은 위에서 인용한 Cachin에서 설명되어 있고 도 4와 관련하여 뒤에서 자세히 설명되는 "원타임패드"(one time pad) 크립토그래픽 방법의 기초를 형성한다.
이러한 복잡한 크리덴셜의 인식은 간단하다. 실행중에 특정의 동작이 실행 소프트웨어 애플리케이션에 의해 요청되는 것과 같이 특정 조건이 부합될 때 인식 프로그램이 호출된다. 이러한 트리거 이벤트의 예는 워터마크된 애플리케이션에 의한 커널 레벨 시스템 서비스 요청이다. 이들 트리거가 호출된 때, 인식 프로그램은 어떤 크리덴셜(만일 있다면)이 워터마크를 디코드하기 위해 사용되어야 하는지를 결정한다. 이것은 실행 프로그램의 가상 어드레스 공간을 관리하기 위해 일반적으로 사용되는 가상 어드레스 또는 기타의 정보를 이용하여 달성될 수 있다.
실행 코드 세그멘트의 특정 부분에 연관된 크리덴셜은 임의의 적당한 방법을 이용해서 잠재적으로 안전한 저장 공간으로부터 검색된다. 그 다음에, 크리덴셜을 이용하여 워터마크의 완전성이 검증된다. 만일 워터마크가 유효이거나 무효이거나 존재하지 않으면, 정책 관리 시스템에 저장된 "응답 규칙"에 따라 다른 동작이 취해질 수 있다.
프로그램의 실행은 가끔 호출 그래프(call graph)의 교차를 요구하고, 실행 코드의 다른 부분들은 또다른 부분 또는 아마도 다른 프로그램을 함께 "호출"하는 프로그램의 일부분에 의해 생성된 제어 전송에 응답하여 실행된다. 이 제어 전송은 가끔 "호출"(calling) 코드 세그멘트의 실행을 지연시키고, "피호출"(called) 코드 세그멘트가 그 실행 경로를 완료한 후에 제어를 복귀시킨다. 특수한 구성에 있어서, 트리거링 이벤트에 응답하여 임의 부분의 실행 코드에서의 워터마크의 인식은 지연된 "호출" 루틴의 전부 또는 부분집합에서 워터마크의 인식을 개시할 수 있다. 이 방법으로, 인식이 워터마크된 실행 코드의 임의 부분에서 트리거될 때마다 워터마크된 실행 코드의 모든 "활성" 부분이 인식될 수 있다. 이것은 소위 런타임 버퍼 오버플로우 공격을 검출 및 방지할 수 있고, 지연된 실행 코드 세그멘트의 어드레스 또는 적층 프레임인 "호출 사슬"(call chain)은 이질 코드에 의해 오염된다. 예를 들면, 운영체제 커널에서, "적층 프레임"을 포함한 적층 기반 데이터 구조, 실행중에 적당한 실행 순서를 유지하기 위해 사용되는 복귀 어드레스 및 기타 정보를 포함한 데이터 구조, 및 지연된 실행 코드 세그멘트를 이용하는 것이 통상적이다. 인식 프로그램이 트리거될 때, 실행 코드 세그멘트가 그들의 관련 크리덴셜을 검색하게 하고 워터마크를 고치게 해야 하는지를 결정하기 위해 커널 및/또는 애플리케이션 스택 둘 다에서 적층 프레임을 역참조할 수 있다. 이 기술은 공통 버퍼 오버플로우 취약성의 실행을 금지할 것이다.
도 4는 상이한 알파벳의 기호들 간의 비 결정론적(다수 대 다수) 맵핑을 보이기 위해 복합 워터마크를 이용하여 도 3의 기호 알파벳들 간의 맵핑을 보인 것이다. 호출 그래프는 코드 세그멘트에서 조건 분기를 나타내는 직접 그래프 또는 트리로서 표시될 수 있다. 그래프의 각 엣지는 그 분기의 시퀀스를 규정하는 불변식에 대응하는 부분을 나타낸다. 복합 워터마크는 코드 실행이 각 부분에 대응하는 경로를 취할 때 이용되도록, 메시지 및 대응하는 암호표를 각 부분 또는 각 부분의 조합과 연관시킨다.
도 1, 도 3 및 도 4를 참조하면, 코드 실행은 코드 세그멘트(110'-1,...110'-3)(총칭하여 110'로 표시함)들 사이에서 제어의 조건적 및 비조건적 전송을 표시하는 호출 그래프(160)로서 표시될 수 있다. 각 코드 세그멘트는 집합적으로 복합 워터마크라고 부르는 메시지(120) 및 암호표(116)로서 표시되는 크리덴셜 쌍에 대응할 수 있다. 도 5를 참조하면, 호출 그래프(160)는 코드 세그멘트(110'-1,...110'-3)를 표시한다. 각 코드 세그멘트(110')는 대응하는 메시지(120'-1,...120'-3)(총칭하여 120'로 표시함) 및 암호표(116'-1,...116'-3)(총칭하여 116'로 표시함)를 갖는다.
크리덴셜의 집합(116', 120')은 복합 워터마크를 규정하고, 여기에서 복합 워터마크는 복수의 불변식 시퀀스(110') 각각에 대응하는 복수의 워터마크 메시지(120')에 의해 규정되며, 따라서 파싱은 조건적 또는 코드 세그멘트(110')의 부분들의 호출된 실행에 기초하여 불변식의 특정 시퀀스를 선택적으로 식별하는 것, 및 파싱된 시퀀스(110')에 대응하는 암호표(116')를 식별하는 것을 포함한다. 각 세그멘트(110')에 대하여, 워터마커(112)는 불변식(150))을 식별된 암호표(116')에 맵핑하여 인증 메시지(120')를 생성하고, 인증 메시지(120')를 위에서 설명한 것처럼 각각의 불변식 시퀀스에 대응하는 워터마크와 비교한다. 워터마커(112)는 조건적 및 비조건적 코드 세그멘트(110')의 선택적 호출에 의해 규정된 호출 그래프(160)를 식별하여, 호출 그래프(160)가 다른 적층 기반 호출 프레임으로의 제어 전송을 표시하게 한다. 이러한 전송은 조건적 또는 절대적일 수 있고, 소스 코드 또는 컴파일러 동작으로부터 부여될 수 있다. 디코더(132)는 호출 그래프(160)로부터의 제어 전송에 기초하여 불변식 시퀀스의 표식을 호출하고, 그래서 코드 세그멘트(110')는 제어 전송으로부터의 적층 기반 호출 프레임과 관계된다. 위에서와 같이, 디코더는 적층 기반 호출 프레임으로부터 참조된 명령어를 포함하는 맵핑된 불변식(150)을 비교하고, 조건적 코드 세그멘트(110')에 대응하는 워터마크를 이용하여 적층 기반 호출 프레임 명령어의 변형이 워터마크 비교에 포함되게 한다.
도시된 다른 양태는 메시지 기호(156)에 대한 불변식(150)의 다수 대 다수 맵핑이다. 세그멘트(110'-1)는 메시지 기호 "O"의 어커런스들을 불변식 "ESP" 및 "EPB"에 맵핑하고, 따라서 "O"는 불변식 시퀀스에서 ESP 또는 EPB를 인용할 수 있다. 이와 반대로, 코드 세그멘트(110'-2)는 "U"와 "P"를 SUBL에 맵핑하고, "S"와 "O"를 ESP에 맵핑하여 불변식 SUBL이 U 또는 P에 대응하고 불변식 ESP가 S 또는 O에 대응할 수 있다. 병렬 아파벳의 동일한 기호를 나타내기 위한 하나의 아파벳의 기호의 일관된 치환은 없다.
도 5 내지 도 7은 도 3 및 도 4에 도시된 것과 같은 스테가노그래픽 워터마크 발생 및 입증 방법을 나타내는 흐름도이다. 도 3 내지 도 7을 참조하면, 여기에서 규정하는 불변식 인식에 의해 스테가노그래픽 메시지를 인코딩하는 방법은 코드 세그멘트(110)에서 불변식(152)의 집합을 식별하는 단계를 포함하고, 불변식은 명령어 시퀀스의 고정 값에 대응하며, 이를 위해 각 불변식(150)은 암호표(116)에 엔트리(154)를 갖는다. 불변식의 식별은 단계 301에 나타낸 것처럼 실행 환경(130)의 특정 머신에서 로딩 및 결합을 하는 동안에 서브필드가 그 값을 유지하도록 명령어의 서브필드를 식별하는 단계를 포함한다. 예시적인 구성에 있어서, 불변식을 식별하는 단계는, 단계 302에 나타낸 것처럼, 코드 세그멘트(110)의 일련의 파싱된 기호에서, 코드 세그멘트(110)가 오피코드로서 동작하고 레지스터가 전형적으로 결합 처리 동안에 값을 보유하는 연산 구조물(130)의 오피코드(140) 또는 레지스터 피연산자(142)에 파싱 기호가 대응하는 때를 식별하는 단계를 포함한다. 그러므로, 단계 303에 나타낸 것처럼, 코드 세그멘트(110)는 일련의 토큰(144)을 포함하고, 토큰(144)은 명령어 집합의 명령어 필드에 대응하며, 명령어 필드는 오피코드(140), 메모리 레퍼런스 및 레지스터 레퍼런스(피연산자(142)로 표시됨)를 포함한다. 불변식(150)의 집합을 결정하는 단계는 코드 세그멘트(110)의 연속적 인스턴스들 동안에 일정하게 유지되는 명령어 필드(152)의 집합을 식별함으로써 수행된다.
이용가능한 불변식(152)의 집합으로부터, 워터마커(112)는 단계 304에 나타낸 것처럼 코드 세그멘트(110)에서 불변식(150)의 어커런스를 식별된 코드 세그멘트(110)의 파싱으로부터 결정한다. 인코더(114)는 단계 305에 나타낸 것처럼 메시지를 규정하는 기호(120-1) 시퀀스의 기호(156)에 불변식을 맵핑한다. 단계 306에 나타낸 것처럼, 맵핑 단계는 결정된 불변식(150)의 어커런스와 메시지(120-1)가 규정되는 기호(156-N)의 알파벳 간의 관계를 규정하는 단계를 포함하고, 기호의 알파벳은 ASCII 문자열과 같은 임의의 비트 시퀀스로서 규정된 기호들을 포함한다.
각각의 관계에 대하여, 인코더(114)는 단계 307에 나타낸 것처럼 맵핑된 불변식(150)에 대응하는 기호(158)들의 집합에 기호(156-N)를 저장한다. 이 단계는, 단계 308에서, 만일 불변식(150)이 아직 파싱되지 않았으면, 불변식(150)에 대응하는 제1 기호로서 기호(156)를 포함하는 암호표(116)의 엔트리(154)를 생성하는 단계, 및 만일 불변식(150)이 암호표(116)의 대응하는 엔트리(154)(불변식 기호(152)로 표시됨)를 이미 갖고 있으면, 단계 309에 나타낸 것처럼 불변식(150)에 대응하는 기호(158)의 시퀀스의 다음 기호로서 기호(156)를 저장하는 단계를 포함한다. 그 결과, 단계 310에 나타낸 것처럼, 암호표(116)의 각 엔트리(145)는 특정 불변식(150)에 대응하는 기호(156)의 집합을 규정하고, 기호(158)들의 각 집합은 코드 세그멘트(110)에서 불변식(150)의 어커런스에 대응하는 메시지 기호(1156)를 표시한다.
단계 311에서, 모든 메시지 기호(156)가 인코드되었는지 판단하기 위한 체크가 수행되고, 워터마커(112)는 단계 312에 나타낸 것처럼 코드 세그멘트에서 연속적인 불변식(150)을 식별하기 위해 파싱을 계속한다. 이 단계는 단계 313에 나타낸 것처럼 각각의 연속 불변식(150)을 기호(120-1) 시퀀스의 다음 기호(156)에 맵핑하는 단계를 포함하고, 불변식(150)에 대한 기호(156)의 각 맵핑은 기호(156)의 이전 어커런스에 맵핑된 불변식(150)으로부터 독립적이다. 예를 들면, 도 3에 도시된 구성에서, 엔트리(154-3)는 MOVL 불변식 기호가 메시지(120-1)의 다른 위치에서 "E", "<sp>", "O" 또는 "J"에 맵핑되는 것을 나타낸다.
워터마커(112)는, 단계 314에 나타낸 것처럼, 불변식(150)에 대한 메시지(120-1)의 각 기호(156-1)의 맵핑시에 파싱을 종결하고, 완료되었을 때, 코드 세그멘트(110)는 제1 키(SK1)를 규정하고, 각 불변식(150)에 대응하는 기호(158)들의 집합은 코드 세그멘트(110)가 제1 키, 제2 키 및 메시지(120)로부터 인증될 수 있도록 제2 키(SK2)를 규정한다.
실행 환경(130) 또는 다른 적당한 저장 메카니즘은, 단계 315에 나타낸 것처럼, 그 다음에 코드 세그멘트(110)의 후속 인증을 위한 메시지(120)를 저장하고, 코드 세그멘트(110)는 메시지(120-1)의 각 메시지 기호(156)가 대응하는 불변식 기호(150)와 연관된 메시지 기호(158)의 집합에 대응하는지를 검증함으로써 인증가능 상태를 유지하며, 대응성이 메시지 기호(120-1) 및 불변식 기호(110)의 각각의 개별 시퀀스의 대응하는 위치로부터 결정된다. 단계 316에 나타낸 것처럼, 실행 환경(130)은 메시지(120)에 대한 불변식(150)의 맵핑의 유사성을 후속적으로 결정하기 위해 맵핑(158), 기호(152)들의 집합, 및 메시지(120)를 저장하고, 이때 유사성은 불변식 시퀀스가 동일한 메시지(120)에 맵핑될 때 코드 세그멘트(110)의 변형되지 않은 속성을 증명한다. 저장하는 단계는 단계 317에 나타낸 것처럼 각각의 식별된 불변식(150)에 대한 엔트리(154)를 가진 암호표(116)에 맵핑된 기호(156)를 저장하는 단계를 또한 포함하고, 암호표는 제2 키(SK2)를 규정한다. 저장하는 단계는 단계 318에 나타낸 것처럼 암호표(116)의 대응하는 엔트리(154)에 특정 불변식(150)의 연속적인 어커런스들을 저장하는 단계를 또한 포함하고, 이때 암호표는 메시지(120-1)에서 발생하는 일련의 기호(156)에 기초하는 각 불변식(150)에 대한 일련의 기호(158)들을 갖는다.
암호표(기호표)(116) 및 메시지(120)는 후속 인증이 요구될 때까지 존속된다. 단계 319에서, 디코더는 단계 319에 나타낸 것처럼 무변형된 코드 세그멘트(122)의 의도된 인스턴스를 인증하고, 인증하는 단계는 단계 320에 나타낸 것처럼 불변식(150)의 시퀀스를 식별하기 위해 코드 세그멘트(122)를 파싱하는 단계를 포함한다(입증을 위한 실행가능한 목적 코드는 점선(124)으로 도시한 것처럼 암호표(116)를 발생한 목적 코드(110)에 대응하도록 불변식의 불변 값에 의존하는 로드된 실행 코드 세그멘트를 나타낸다는 점에 주목한다). 디코더(132)는 단계 321에 나타낸 것처럼 메시지(120)를 파싱하여 코드(122)로부터 불변식 시퀀스의 각각의 개별 불변식(150)에 대응하는 메시지 기호(156)를 식별하고, 단계 322에 나타낸 것처럼, 각각의 식별된 불변식(150)을 암호표(116)에 맵핑하여 대응하는 기호(158)들의 집합을 검색한다. 디코더(132)는, 단계 323에 나타낸 것처럼, 파싱된 메시지 기호(156)를 검색된 기호(158)들의 집합과 비교하여 파싱된 메시지 기호(156)가 검색된 기호(158)들의 집합 내에 있는지를 결정하고 원래의 메시지에 대한 대응성을 표시한다. 각 불변식(150)에 대한 모든 기호(156)의 대응성은 위조되지 않은 코드(122)임을 입증하고, 부정합(mismatch)은 변경된 불변식 순서 및 그에 따른 코드의 변형을 표시한다.
이 기술에 숙련된 자라면 여기에서 규정한 것처럼 코드 불변식을 이용하여 스테가노그래픽 메시징 시스템을 구현하는 프로그램 및 방법은, 비제한적인 예를 들자면, a) ROM 소자와 같은 기록불능 기억 매체에 영속적으로 저장된 정보, b) 플로피 디스크, 자기 테이프, CD, RAM 소자, 및 기타의 자기 및 광학 매체와 같은 기록가능 기억 매체에 바꿀 수 있게 저장된 정보, 또는 c) 예컨대 인터넷 또는 전화 모뎀 선로와 같은 전자 네트워크에서처럼 통신 매체를 통해 컴퓨터에 전달되는 정보를 포함한 임의의 형태로 처리 장치에 적용될 수 있음을 쉽게 이해할 것이다. 이러한 적용은 예를 들면 내부에 인코드된 컴퓨터 프로그램 코드로 구체화되는 컴퓨터 프로그램 로직을 저장하도록 동작가능한 비일시적 컴퓨터 판독가능한 기억 매체를 가진 컴퓨터 프로그램 제품의 형태로 이루어질 수 있다. 동작 및 방법은 소프트웨어 실행가능 객체에서 또는 어드레스가능한 메모리 요소에 매립된 명령어 집합으로서 구현될 수 있다. 대안적으로, 여기에서 설명하는 동작 및 방법은 전체적으로 또는 부분적으로 특수 용도 집적회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 상태 기계, 제어기 또는 다른 하드웨어 구성요소 또는 소자, 또는 하드웨어, 소프트웨어 및 펌웨어 구성요소의 조합과 같은 하드웨어 구성요소를 이용하여 구현될 수 있다.
지금까지 코드 불변식을 이용하여 스테가노그래픽 메시징 시스템을 구현하는 시스템 및 방법을 그 실시형태와 관련하여 특별하게 도시하고 설명하였지만, 이 기술에 숙련된 자라면 첨부된 특허청구범위에 의해 한정되는 본 발명의 범위로부터 벗어나지 않고 그 형태 및 세부에 있어서의 각종 변경이 가능하다는 것을 이해할 것이다.

Claims (25)

  1. 스테가노그래픽(steganographic) 메시지들을 인코딩하는 방법에 있어서,
    코드 세그멘트로부터, 명령어 시퀀스 내의 고정 값들에 대응하고 불변식 기호(invariant symbol)에 의해 각각 규정되는 불변식(invariant)들의 시퀀스를 파싱(parse)하는 단계와;
    알파벳으로부터의 메시지 기호들의 시퀀스로부터 메시지를 선택하는 단계와;
    상기 선택된 메시지 내의 각 메시지 기호를 상기 불변식들의 시퀀스 내의 연속적인 불변식에 맵핑함으로써 변환 알파벳을 규정하는 단계
    를 포함하고, 상기 맵핑은 불변식 기호들 각각을, 상기 메시지를 구성하는 상기 메시지 기호들의 부분집합에 연관시키는 것이며, 불변식 기호의 각각의 어커런스(occurrence)는 상기 기호들의 부분집합 내의 복수의 메시지 기호들과 연관된 것인, 스테가노그래픽 메시지 인코딩 방법.
  2. 제1항에 있어서, 상기 불변식들의 시퀀스로부터의 각각의 불변식 기호를, 상기 메시지 기호들의 시퀀스로부터의 메시지 기호에 결합하는 단계를 더 포함하고, 상기 결합은 상기 메시지 기호들에 대한 불변식 기호들의 비 단사 맵핑(non injective mapping)으로부터 상기 변환 알파벳을 규정하는 것인 스테가노그래픽 메시지 인코딩 방법.
  3. 제1항에 있어서, 상기 메시지의 각각의 메시지 기호는, 상기 불변식 기호가 다중 메시지 기호들에 대한 맵(map)들을 갖도록 각각의 개별 시퀀스 내의 대응하는 위치에 의해 규정된 대응하는 불변식을 가지며, 상기 파싱된 불변식들의 집합은 동일한 불변식 기호로부터 초래된 상기 메시지 기호들 내에 다중 변환들을 갖는 변환 알파벳을 규정하는 것인 스테가노그래픽 메시지 인코딩 방법.
  4. 제3항에 있어서, 상기 불변식들의 시퀀스로부터의 대응하는 불변식 기호와 연관된 기호들의 집합에 대하여 상기 메시지 내의 각각의 기호를 입증함으로써(validating) 상기 코드 세그멘트를 인증하는(authenticating) 단계를 더 포함하는 스테가노그래픽 메시지 인코딩 방법.
  5. 제4항에 있어서, 상기 변환 알파벳은 타겟 머신 상에서의 재배치 및 실행 동안에 값을 보유하는 컴퓨터 기계 명령어들에 기초한 불변식들의 집합에 대응하는 불변식 기호들을 포함한 것인 스테가노그래픽 메시지 인코딩 방법.
  6. 제3항에 있어서, 각각의 불변식을 상기 메시지 내의 기호에 맵핑하는 단계를 더 포함하고, 상기 메시지는 상기 메시지의 각각의 기호를 대응하는 불변식에 맵핑함으로써 상기 코드 세그멘트의 후속 입증을 위해 구성되며, 특정 불변식의 각각의 어커런스는 동일한 불변식의 다른 어커런스들에 적용된 맵핑과 무관한 것인 스테가노그래픽 메시지 인코딩 방법.
  7. 제1항에 있어서,
    상기 메시지를 검색(retrieving)하고,
    상기 코드 세그멘트로부터 각각의 불변식을 파싱하고,
    각각의 파싱된 불변식이 대응하는 기호들의 집합을 식별하고,
    상기 메시지의 각각의 연속적인 기호를, 각각의 연속적으로 파싱된 불변식에 대응하는 기호들의 집합과 반복적으로 비교하고,
    각각의 연속적인 기호가 상기 각각의 파싱된 불변식에 대응하는 기호들의 집합 내에 있는지를 확인하는 것에 의해,
    상기 코드 세그멘트를 인증하는 단계를 더 포함하는 스테가노그래픽 메시지 인코딩 방법.
  8. 스테가노그래픽 메시지들을 이용하여 코드 시퀀스를 인증하는 방법에 있어서,
    명령어 시퀀스를 규정하는 코드 세그멘트에서, 상기 명령어 시퀀스 내의 고정 값들에 대응하는 불변식들의 집합을 식별하는 단계와;
    각각의 불변식에 대한 엔트리를 기호표에서 규정하는 단계로서, 상기 엔트리 각각은 메시지를 규정하기 위한 메시지 기호들의 집합과 불변식 기호를 연관시키기 위한 것인, 상기 각각의 불변식에 대한 엔트리를 규정하는 단계와;
    상기 메시지 내의 각 메시지 기호를 상기 코드 세그멘트 내의 연속적인 불변식 기호와 연관시키는 단계와;
    각각의 연관에 대하여, 상기 메시지 기호를 상기 연속적인 불변식 기호에 대응하는 상기 메시지 기호들의 집합에 추가하는 단계와;
    상기 메시지에 의해 규정된 메시지 기호들의 시퀀스를 상기 코드 세그멘트 내의 연속적인 불변식들의 시퀀스과 연관시키기 위해 상기 메시지를 계속하여 파싱하는 단계와;
    상기 코드 세그멘트의 후속 인증을 위해 상기 메시지를 유지하는 단계로서, 상기 코드 세그멘트는 상기 메시지 내의 각각의 메시지 기호가 대응하는 불변식 기호와 연관된 메시지 기호들의 집합에 대응한다는 것을 검증(verifying)함으로써 인증가능한 것인, 상기 메시지를 유지하는 단계
    를 포함하며, 상기 대응은 메시지 기호들 및 불변식 기호들의 각각의 개별 시퀀스 내의 대응하는 위치로부터 결정되는 것인 코드 시퀀스 인증 방법.
  9. 제8항에 있어서, 상기 기호표 및 상기 메시지로부터 보안 워터마크를 규정하는 단계를 더 포함하고, 상기 기호표는 상기 코드 세그멘트 내의 불변식 시퀀스에 의해 규정된 상기 메시지를 디코딩하기 위한 암호표를 규정하며, 상기 메시지는 상기 불변식 시퀀스를 포함하는 상기 코드 시퀀스의 진정성(authenticity)을 입증하기 위해 상기 디코딩된 메시지와 비교되는 것인 코드 시퀀스 인증 방법.
  10. 제9항에 있어서, 상기 보안 워터마크를 규정하는 메시지에 대한 유사성을 결정하기 위해 상기 기호들의 시퀀스 내의 다음번째 기호에 각각의 연속적인 불변식을 맵핑함으로써 상기 코드 세그멘트를 인증하는 단계를 더 포함하며, 상기 유사성은 상기 코드 세그멘트의 변형되지 않은 속성을 증명하는 것인 코드 시퀀스 인증 방법.
  11. 제8항에 있어서, 복수의 불변식 시퀀스들 각각에 대응하는 복수의 워터마크 메시지들에 의해 규정된 복합 워터마크를 더 포함하고,
    상기 파싱하는 단계는,
    상기 코드 세그멘트의 일부분들의 조건적 실행에 기초하여 불변식들의 특정 시퀀스를 선택적으로 식별하는 단계와;
    파싱된 시퀀스에 대응하는 암호표를 식별하는 단계와;
    인증 메시지를 생성하도록 상기 불변식들을 상기 식별된 암호표에 맵핑하는 단계와;
    각각의 불변식 시퀀스에 대응하는 워터마크와 상기 인증 메시지를 비교하는 단계를 더 포함한 것인 코드 시퀀스 인증 방법.
  12. 제11항에 있어서,
    조건적 코드 세그멘트들의 선택적 호출에 의해 규정되고, 상이한 스택 기반 호출 프레임에 대한 제어의 전송을 표시하는 호출 그래프를 식별하는 단계와;
    상기 제어의 전송에 기초하여 불변식들의 시퀀스의 식별을 호출하는 단계로서, 상기 코드 세그멘트는 상기 스택 기반 호출 프레임에 관계된 것인, 상기 불변식들의 시퀀스의 식별을 호출하는 단계와;
    상기 스택 기반 호출 프레임으로부터 참조된 명령어들을 포함한 맵핑된 불변식들을 비교하는 단계와;
    스택 기반 호출 프레임 명령어들에 대한 변형들이 워터마크 비교에 포함되도록 조건적 코드 세그멘트에 대응하는 워터마크를 이용하는 단계
    를 더 포함하는 코드 시퀀스 인증 방법.
  13. 프로세서에 의해 실행될 때, 컴퓨터로 하여금 불변식 인식에 의해 스테가노그래픽 메시지들을 인코딩하는 방법을 수행하게 하는 명령어들의 집합으로서 인코딩된 컴퓨터 프로그램 코드를 저장한 비전달성 컴퓨터 판독가능 기록 매체(non-transmissible computer readable recording medium)에 있어서, 상기 방법은,
    코드 세그멘트 내의 불변식들의 집합을 프로세서에 의해 식별하는 단계로서, 상기 불변식들은 명령어 시퀀스 내의 고정 값들에 대응하고, 각각의 불변식은 암호표 내의 엔트리를 갖는 것인, 상기 불변식들의 집합을 식별하는 단계와;
    상기 코드 세그멘트 내의 불변식의 어커런스를 식별된 코드 세그멘트의 파싱으로부터 결정하는 단계와;
    메시지를 규정하는 기호들의 시퀀스 내의 기호에 상기 불변식을 맵핑하는 단계와;
    상기 맵핑된 불변식에 대응하는 기호들의 집합 내에 상기 기호를 저장하는 단계와;
    상기 코드 세그멘트 내의 연속적인 불변식들을 식별하기 위해 계속하여 파싱하는 단계와;
    상기 기호들의 시퀀스 내의 다음번째 기호에 각각의 연속적인 불변식을 맵핑하는 단계로서, 불변식에 대한 기호의 각각의 맵핑은 상기 기호의 이전 어커런스에 맵핑된 불변식과 무관한 것인, 상기 다음번째 기호에 각각의 연속적인 불변식을 맵핑하는 단계와;
    상기 메시지에 대한 불변식들의 맵핑의 유사성을 후속하여 결정하기 위해 상기 맵핑, 상기 기호들의 집합, 및 상기 메시지를 저장하는 단계
    를 포함하며, 상기 유사성은 상기 코드 세그멘트의 변형되지 않은 속성을 증명하는 것인 비전달성 컴퓨터 판독가능 기록 매체.
  14. 제13항에 있어서, 상기 불변식들을 식별하는 단계는 명령어 내의 서브필드를 식별하는 단계를 더 포함하고, 상기 서브필드는 특정 기계 상에서의 로딩 및 결합 동안에 그 값을 유지하는 것인 비전달성 컴퓨터 판독가능 기록 매체.
  15. 제14항에 있어서, 상기 불변식들을 식별하는 단계는, 상기 코드 세그멘트가 동작가능인 연산 구조물(computing architecture)의 오피코드 또는 레지스터에 파싱된 기호가 대응하는 때를 상기 코드 세그멘트 내의 파싱된 기호들의 시퀀스 내에서 식별하는 단계를 더 포함하는 것인 비전달성 컴퓨터 판독가능 기록 매체.
  16. 제15항에 있어서, 상기 맵핑하는 단계는 불변식의 결정된 어커런스와 상기 메시지를 규정하는 기호들의 알파벳 사이의 관계(association)를 규정하는 단계를 더 포함하고, 상기 기호들의 알파벳은 임의의 비트 시퀀스로서 규정된 기호들을 포함한 것인 비전달성 컴퓨터 판독가능 기록 매체.
  17. 제14항에 있어서, 상기 코드 세그멘트는 토큰들의 시퀀스를 포함하고, 상기 토큰들은 명령어 집합의 명령어 필드들에 대응하고, 상기 명령어 필드들은 오피코드들, 메모리 레퍼런스들 및 레지스터 레퍼런스들을 포함하고, 상기 불변식들의 집합을 식별하는 단계는 상기 코드 세그멘트의 연속적인 인스턴스(instantiation)들 동안에 일정하게 유지되는 명령어 필드들을 식별하는 단계를 더 포함한 것인 비전달성 컴퓨터 판독가능 기록 매체.
  18. 제13항에 있어서, 상기 메시지 내의 기호들 각각을 불변식에 맵핑할 때 파싱을 종결하는 단계를 더 포함하고, 상기 코드 세그멘트는 제1 키를 규정하고, 상기 기호들의 집합은 제2 키를 규정하는 각각의 불변식에 대응하며, 상기 코드 세그멘트는 상기 제1 키 및 상기 제2 키와 상기 메시지로부터 인증가능한 것인 비전달성 컴퓨터 판독가능 기록 매체.
  19. 제18항에 있어서, 상기 저장하는 단계는 상기 맵핑된 기호를, 각각의 식별된 불변식에 대한 엔트리들을 가지며 상기 제2 키를 규정하는 암호표 내에 저장하는 단계를 더 포함한 것인 비전달성 컴퓨터 판독가능 기록 매체.
  20. 제19항에 있어서, 상기 저장하는 단계는 상기 암호표 내의 대응하는 엔트리 내에서의 특정 불변식의 연속적인 어커런스들을 저장하는 단계를 더 포함하고, 상기 암호표는 상기 메시지 내에서 발생하는 기호들의 시퀀스에 기초한 각각의 불변식에 대한 기호들의 시퀀스를 갖는 것인 비전달성 컴퓨터 판독가능 기록 매체.
  21. 제13항에 있어서, 상기 저장하는 단계는,
    상기 불변식이 아직 파싱되지 않은 경우, 상기 불변식에 대응하는 제1 기호로서 상기 기호를 포함하는 엔트리를 암호표 내에서 생성하는 단계와;
    상기 불변식이 상기 암호표 내에서 대응하는 엔트리를 이미 갖고 있는 경우, 상기 불변식에 대응하는 기호들의 시퀀스 내에 상기 기호를 다음번째 기호로서 저장하는 단계를 더 포함한 것인 비전달성 컴퓨터 판독가능 기록 매체.
  22. 제21항에 있어서, 상기 암호표 내의 각각의 엔트리는 특정 불변식에 대응하는 기호들의 집합을 규정하고, 상기 기호들의 집합 각각은 상기 코드 세그멘트 내의 상기 불변식의 어커런스에 대응하는 메시지 기호를 표시한 것인 비전달성 컴퓨터 판독가능 기록 매체.
  23. 제21항에 있어서, 상기 코드 세그멘트의 의도된 인스턴스를 비변형된 것으로서 인증하는 단계를 더 포함하고,
    상기 인증하는 단계는,
    상기 코드 세그멘트를 파싱하여 상기 불변식들의 시퀀스를 식별하는 단계와;
    상기 메시지를 파싱하여 상기 불변식들의 시퀀스 내에서의 각각의 개별 불변식에 대응하는 메시지 기호를 식별하는 단계와;
    상기 식별된 불변식들 각각을 상기 암호표에 맵핑하여 대응하는 기호들의 집합을 검색하는 단계와;
    파싱된 메시지 기호를 상기 검색된 기호들의 집합과 비교하여 상기 파싱된 메시지 기호가 상기 검색된 기호들의 집합 내에 있는지를 결정하는 단계를 포함한 것인 비전달성 컴퓨터 판독가능 기록 매체.
  24. 제1항에 있어서, 상기 맵핑은 상기 명령어 시퀀스를 불변 상태로 유지하는 상기 코드 세그멘트로부터의 불변식들의 비변형된 시퀀스 내에 메시지를 규정하는 것인 스테가노그래픽 메시지 인코딩 방법.
  25. 제13항에 있어서, 상기 맵핑은 상기 명령어 시퀀스를 불변 상태로 유지하는 상기 코드 세그멘트로부터의 불변식들의 비변형된 시퀀스 내에 메시지를 규정하는 것인 비전달성 컴퓨터 판독가능 기록 매체.
KR1020127017500A 2009-12-11 2010-12-10 코드 불변식을 이용한 스테가노그래픽 메시징 시스템 KR101798672B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US28565309P 2009-12-11 2009-12-11
US61/285,653 2009-12-11
PCT/US2010/059882 WO2011139302A2 (en) 2009-12-11 2010-12-10 Steganographic messaging system using code invariants

Publications (2)

Publication Number Publication Date
KR20130007543A KR20130007543A (ko) 2013-01-18
KR101798672B1 true KR101798672B1 (ko) 2017-11-16

Family

ID=44904267

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127017500A KR101798672B1 (ko) 2009-12-11 2010-12-10 코드 불변식을 이용한 스테가노그래픽 메시징 시스템

Country Status (5)

Country Link
US (1) US8958546B2 (ko)
EP (1) EP2510474B1 (ko)
KR (1) KR101798672B1 (ko)
CA (1) CA2783822C (ko)
WO (1) WO2011139302A2 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US9892661B2 (en) * 2009-12-11 2018-02-13 Digital Immunity Llc Steganographic embedding of hidden payload
US9122878B1 (en) * 2012-06-28 2015-09-01 Emc Corporation Software license management with drifting component
US9560012B1 (en) * 2013-06-27 2017-01-31 The Boeing Company Cross domain gateway having temporal separation
JP2016534479A (ja) 2013-09-12 2016-11-04 ヴァーセック・システムズ・インコーポレーテッドVirsec Systems,Inc. マルウェアのランタイム中の自動検出
US9727729B2 (en) 2014-06-24 2017-08-08 Virsec Systems, Inc. Automated code lockdown to reduce attack surface for software
AU2015279920B2 (en) 2014-06-24 2018-03-29 Virsec Systems, Inc. Automated root cause analysis of single or N-TIERED applications
US10354074B2 (en) 2014-06-24 2019-07-16 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
US9363263B2 (en) 2014-08-27 2016-06-07 Bank Of America Corporation Just in time polymorphic authentication
US11615199B1 (en) * 2014-12-31 2023-03-28 Idemia Identity & Security USA LLC User authentication for digital identifications
EP3295359B1 (en) 2015-05-15 2020-08-26 Virsec Systems, Inc. Detection of sql injection attacks
US10691659B2 (en) 2015-07-01 2020-06-23 Actifio, Inc. Integrating copy data tokens with source code repositories
US10613938B2 (en) * 2015-07-01 2020-04-07 Actifio, Inc. Data virtualization using copy data tokens
US9817971B2 (en) 2015-10-29 2017-11-14 International Business Machines Corporation Using call stack snapshots to detect anomalous computer behavior
JP6902037B2 (ja) 2016-01-22 2021-07-14 ヴァーセック・システムズ・インコーポレーテッドVirsec Systems,Inc. パターンマッチングベースのデータセット抽出
AU2017285429B2 (en) 2016-06-16 2022-03-31 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
KR20180082694A (ko) * 2017-01-10 2018-07-19 (주) 코콤 스테가노 그래피를 이용한 스마트 기기 해킹 방지 방안
EP3668101B1 (en) * 2017-08-10 2024-03-20 Saturn Licensing, LLC Transmission device, transmission method, reception device, and reception method
WO2020018454A1 (en) * 2018-07-16 2020-01-23 Islamov Rustam Cryptography operations for secure post-quantum communications
WO2020047041A1 (en) 2018-08-28 2020-03-05 Digital Immunity Llc Non-disruptive mitigation of malware attacks
US11553337B2 (en) 2019-12-10 2023-01-10 Winkk, Inc. Method and apparatus for encryption key exchange with enhanced security through opti-encryption channel
CN114051082B (zh) * 2021-10-19 2023-10-27 河南师范大学 基于失真度和信息增益比的隐写检测特征选取方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040034777A1 (en) * 2002-08-16 2004-02-19 Quicksilver Technology, Inc. Method and apparatus for watermarking binary computer code with modified compiler optimizations
US20050105761A1 (en) * 2003-11-14 2005-05-19 Zimmer Vincent J. Method to provide transparent information in binary drivers via steganographic techniques
US20080301452A1 (en) 1999-07-29 2008-12-04 Horne William G Systems and Methods for Watermarking Software and Other Media
US20090187963A1 (en) 2008-01-17 2009-07-23 Josep Bori Method and apparatus for a cryptographically assisted computer system designed to deter viruses and malware via enforced accountability

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7664263B2 (en) * 1998-03-24 2010-02-16 Moskowitz Scott A Method for combining transfer functions with predetermined key creation
US7236610B1 (en) * 1998-04-30 2007-06-26 Fraunhofer Gesellschaft Authenticating executable code and executions thereof
US6782478B1 (en) 1999-04-28 2004-08-24 Thomas Probert Techniques for encoding information in computer code
US7080257B1 (en) 2000-03-27 2006-07-18 Microsoft Corporation Protecting digital goods using oblivious checking
GB0308413D0 (en) * 2003-04-11 2003-05-21 Enseal Systems Ltd Verification of authenticity of check data
EP1674966B1 (en) * 2004-12-22 2009-03-11 Telefonaktiebolaget L M Ericsson (Publ) Watermarking computer program code
EP2727543A3 (en) 2007-10-17 2014-08-06 ARO Medical ApS Systems and apparatuses for torsional stabilisation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080301452A1 (en) 1999-07-29 2008-12-04 Horne William G Systems and Methods for Watermarking Software and Other Media
US20040034777A1 (en) * 2002-08-16 2004-02-19 Quicksilver Technology, Inc. Method and apparatus for watermarking binary computer code with modified compiler optimizations
US20050105761A1 (en) * 2003-11-14 2005-05-19 Zimmer Vincent J. Method to provide transparent information in binary drivers via steganographic techniques
US20090187963A1 (en) 2008-01-17 2009-07-23 Josep Bori Method and apparatus for a cryptographically assisted computer system designed to deter viruses and malware via enforced accountability

Also Published As

Publication number Publication date
US8958546B2 (en) 2015-02-17
WO2011139302A3 (en) 2012-10-04
CA2783822C (en) 2018-05-15
EP2510474A4 (en) 2015-12-09
WO2011139302A2 (en) 2011-11-10
EP2510474B1 (en) 2017-10-18
KR20130007543A (ko) 2013-01-18
US20140108803A1 (en) 2014-04-17
EP2510474A2 (en) 2012-10-17
CA2783822A1 (en) 2011-11-10

Similar Documents

Publication Publication Date Title
KR101798672B1 (ko) 코드 불변식을 이용한 스테가노그래픽 메시징 시스템
US9602289B2 (en) Steganographic embedding of executable code
US9659157B2 (en) Systems and methods for watermarking software and other media
US9892661B2 (en) Steganographic embedding of hidden payload
El-Khalil et al. Hydan: Hiding information in program binaries
US11281769B2 (en) Software integrity verification
US7395433B2 (en) Method and system for sustainable digital watermarking
JP5734685B2 (ja) インテグリティを実行中に確かめるソフトウェアを生成するプログラム、方法及び記憶媒体
WO2015150391A1 (en) Software protection
Collberg et al. More on graph theoretic software watermarks: Implementation, analysis, and attacks
US8347109B2 (en) Secure serial number generation
Myles et al. The evaluation of two software watermarking algorithms
Dey et al. A robust software watermarking framework using shellcode
Ibrahim et al. Software manipulative techniques of protection and detection: A review
Valdez Protecting executable software

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