首页 / 专利库 / 电脑安全 / 密码体制 / 변조 방지용 소프트웨어 파일 생성 장치와 그 소프트웨어파일의 자가 무결성 검증 방법 및 클라이언트-서버환경에서의 소프트웨어 파일의 자가 무결성 검증 방법

변조 방지용 소프트웨어 파일 생성 장치와 그 소프트웨어파일의 자가 무결성 검증 방법 및 클라이언트-서버환경에서의 소프트웨어 파일의 자가 무결성 검증 방법

阅读:704发布:2020-11-13

专利汇可以提供변조 방지용 소프트웨어 파일 생성 장치와 그 소프트웨어파일의 자가 무결성 검증 방법 및 클라이언트-서버환경에서의 소프트웨어 파일의 자가 무결성 검증 방법专利检索,专利查询,专利分析的服务。并且PURPOSE: A device for creating a software file for preventing an alteration and a method for verifying a self-integrity of the software file are provided to prevent an alteration of a software file and verify the alteration of the software file by executing a self-verification of the software file. CONSTITUTION: A code creation unit for a self-verification(111) verifies an interactively circular alteration. A public key cryptogram system key pair creation unit(121) creates a secret key for a decoding and a private key for an encoding of a public key cryptogram system. A secret key converter(131) converts the secret key into a key of a source code form. A compiler(141) compiles a software source code, a self-integrity verification code, and the source code secret key, and converts into an execution program binary code. A cipher text creation unit(151) inputs the execution program binary code and the private key for an encoding, inserts a cipher text of summary information in the execution program binary code, and creates a software file for preventing the alteration.,下面是변조 방지용 소프트웨어 파일 생성 장치와 그 소프트웨어파일의 자가 무결성 검증 방법 및 클라이언트-서버환경에서의 소프트웨어 파일의 자가 무결성 검증 방법专利的具体信息内容。

  • 상호 순환적 변조 여부 검증을 위한 자가 무결성 검증 코드 생성기;
    공개키 암호 시스템의 복호화용 비밀키와 암호화용 개인키를 생성하는 키쌍 생성기;
    상기 비밀키를 원시코드 형태로 변환하는 비밀키 변환기;
    소프트웨어 원시 코드와 자가 무결성 검증 코드 및 상기 비밀키 변환기로부터 출력되는 원시코드 비밀키를 컴파일링하여 실행 프로그램 이진 코드로 변환하는 컴파일러; 및
    상기 실행 프로그램 이진 코드와 암호화용 개인키를 입력하고, 상기 실행 프로그램 이진 코드 내에 그 요약정보의 암호문을 삽입하여 변조 방지를 위한 소프트웨어 파일을 생성하는 암호문 생성기를 구비하는 것을 특징으로 하는 소프트웨어 파일 생성 장치.
  • 제1 항에 있어서, 상기 소프트웨어 파일은
    메인 프로그램 실행 코드와 응용프로그램 자가 검증 코드 및 상기 비밀키를 저장하는 메인 실행 파일을 구비하며, 상기 비밀키는 상기 메인 실행 파일 내부에 별도로 할당된 저장 정보 영역에 저장되는 것을 특징으로 하는 소프트웨어 파일 생성 장치.
  • 제2 항에 있어서, 상기 소프트웨어 파일 생성 장치는
    상기 메인 실행 파일 내부에 비연속적으로 분산된 메모리 공간을 확보하고 상기 확보된 메모리 공간을 상기 암호화 정보 영역으로 할당하는 분산 메모리 생성기를 더 구비하는 것을 특징으로 하는 소프트웨어 파일 생성 장치.
  • 제1 항에 있어서, 상기 소프트웨어 파일은
    상기 메인 실행 파일들을 확장하는 적어도 하나의 확장 실행 파일을 더 구비하고, 상기 적어도 하나의 확장 실행 파일은 확장 프로그램 실행 코드와 응용 프로그램 자가 검증 코드로 구성되는 것을 특징으로 하는 소프트웨어 파일 생성 장치.
  • 제4 항에 있어서, 상기 메인 실행 파일 및 적어도 하나의 확장 실행 파일내의 응용 프로그램 자가 검증 코드는 메인 및 확장 실행 파일의 변조 여부를 상호 순환적이고 임의로 검증하는 것을 특징으로 하는 소프트웨어 파일 생성 장치.
  • 제4 항에 있어서, 상기 메인 실행 파일의 요약값과 상기 적어도 하나의 확장 실행 파일의 요약값은 해쉬 알고리즘 통해 계산되거나 전자서명되는 것을 특징으로 하는 소프트웨어 파일 생성 장치.
  • 제2항에 있어서, 상기 정보 영역에는
    상기 메인 실행 파일의 요약값 및 적어도 하나의 확장 실행 파일의 요약값들의 암호문이 저장되는 것을 특징으로 하는 소프트웨어 파일 생성 장치.
  • 제1 항에 있어서, 상기 비밀키 변환기는 매크로를 이용하여 상기 비밀키를 상기 원시코드 형태로 변환하는 것을 특징으로 하는 소프트웨어 파일 생성 장치.
  • 변조 방지용 소프트웨어 파일 생성 장치에 의해 생성되며, 적절한 시기에 응용 프로그램 자가 검증 코드를 수행하여 해당 실행 파일의 변조 여부를 자가 무결성 검증하는 방법에 있어서,
    (a) 상기 메인 실행 파일로부터 비밀키 값을 추출하는 단계;
    (b) 상기 비밀키 값을 이용하여 상기 정보 영역으로부터 저장된 암호문을 복호화하여 해당 실행 파일의 요약값(H1)을 추출하는 단계;
    (c) 상기 해당 실행 파일의 요약값(H2)을 계산하는 단계; 및
    (d) 상기 추출된 요약값(H1)과 상기 계산된 요약값(H2)을 상호 비교하여 상기 요약값들(H1,H2)이 동일하면 상기 해당 실행 파일은 변조되지 않았으며, 상기요약값들(H1,H2)이 동일하면 상기 해당 실행 파일은 변조된 것으로 판단하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 파일의 자가 무결성 검증 방법.
  • 제9 항에 있어서, 상기 응용 프로그램 자가 검증 코드내의 검증 대상 파일은 프로그램 수행 시마다 변경되며 메인 실행 파일 및 적어도 하나의 확장 실행 파일은 상호 순환적으로 변조 여부가 검증되는 것을 특징으로 하는 소프트웨어 파일의 자가 무결성 검증 방법.
  • 클라이언트-서버 환경의 서버에서 클라이언트 소프트웨어 파일의 변조를 자가 무결성 검증하는 방법에 있어서,
    (a) 상기 서버에서 다수개의 난수들(Ri)을 생성하여 이들과 클라이언트 소프트웨어 파일을 입력으로 하는 키사용 해쉬값들(Hpub)을 미리 계산하여 저장하는 단계;
    (b) 상기 서버가 상기 클라이언트와 통신하는 중에 주기적으로 상기 난수들을 전송하는 단계;
    (c) 상기 서버로부터 받은 난수들과 클라이언트에서 동작하는 소프트웨어 파일(P')을 입력하여 키사용 해쉬값을 계산하여 상기 서버로 전송하는 단계; 및
    (d) 상기 서버가 미리 생성해 놓은 키사용 해쉬값(Hpub(Ri+P))과 상기 클라이언트로부터 전송받은 키사용 해쉬값(Hpub(Ri+P))을 비교하여 변조 여부를 판단하는 단계를 포함하는 것을 특징으로 하는 클라이언트-서버 환경에서의 소프트웨어파일의 자가 무결성 검증 방법.
  • 说明书全文

    변조 방지용 소프트웨어 파일 생성 장치와 그 소프트웨어 파일의 자가 무결성 검증 방법 및 클라이언트-서버 환경에서의 소프트웨어 파일의 자가 무결성 검증 방법{Device for generating tamper-resistant software and methods for self-integrity checking the software file and server-aided integrity checking in client-server environment}

    본 발명은 소프트웨어 파일 생성 장치와 그 소프트웨어 파일의 자가 무결성 검증 방법 및 클라이언트-서버 환경에서의 자가 무결성 검증 방법에 관한 것으로서, 특히 암호론에 기반한 공개키 암호화 기법을 응용하여 소프트웨어 스스로가 외부의 도움 없이 자신의 변조 여부를 확인할 수 있도록 메인 실행 파일 및 확장 실행 파일 등의 요약값의 암호문과 그 암호문을 복호화하는데 사용되는 비밀키를 파일 내부에 숨겨 넣는 소프트웨어 파일 생성 장치 및 소프트웨어 파일의 변조 여부를 자가 진단하는 소프트웨어 파일의 자가 무결성 검증 방법에 관한 것이다. 또한 온라인 네트워크를 이용하는 클라이언트-서버 환경에서는 신뢰할 수 있는 서버의 도움을 받아 비신뢰적인 컴퓨팅 환경에서 동작하는 클라이언트 소프트웨어 파일의 자가 무결성 검증 방법에 관한 것이다.

    종래의 소프트웨어 보호 방법으로는 크게 나누어 소프트웨어 파일에 대한 전자서명을 첨부된 인증서를 통하여 검증하는 방법과 소프트웨어 파일의 암호화를 통한 정보 유출을 막는 방법이 있다. 전자서명 방법은 소프트웨어의 온라인 배포 시 소프트웨어 파일에 대한 전자서명과 인증서를 함께 배포하여 사용자가 이를 다운로드받고, 이를 설치하기 이전에 파일에 대한 전자서명을 인증서를 이용하여 검증하여 검증이 성공한 경우에만 설치하는 방식이다. 파일의 암호화 방법은 실행 파일 전체를 암호화하여 저장하고 이를 실행하기 이전에 임시로 복호화하여 복호화된 소프트웨어 실행 코드를 임시로 저장하거나 바로 컴퓨터 메모리에 적재하여 실행하는 방식이다.

    그러나 인증서를 이용한 전자서명 검증 방법은 소프트웨어의 설치 시에만 소프트웨어의 변조 여부를 검증하고 설치 후 실행 과정에서는 검증하지 않으므로 악의적인 해커에 의해 프로그램이 변조되는 것을 막을 수 없다. 또한 파일의 암호화 방법은 암호화된 파일이 실행되기 위해서는 반드시 복호화 된 후에 컴퓨터의 메모리에 적재되어 실행되기 때문에 임시 복호 파일이 유출될 위험이 있다.

    본 발명의 목적은 상기 문제점을 해결하기 위하여 안출된 것으로, 소프트웨어 파일의 변조를 방지하기 위한 소프트웨어 파일 생성 장치를 제공하는데 있다.

    본 발명의 다른 목적은 상기 소프트웨어 파일 생성 장치에 의해 생성된 소프트웨어 파일을 자가 검증하여 소프트웨어 파일의 변조 여부를 검증하는 소프트웨어 파일의 자가 무결성 검증 방법을 제공하는데 있다.

    본 발명의 또 다른 목적은 온라인 네트워크로 연결된 클라이언트-서버 환경에서 신뢰할 수 있는 서버의 도움을 받아 클라이언트 소프트웨어 파일의 변조 여부를 검증하는 클라이언트-서버 환경에서의 소프트웨어 파일의 자가 무결성 검증 방법을 제공하는데 있다.

    본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.

    도 1 은 본 발명의 바람직한 실시예에 따른 소프트웨어 파일(Software File) 생성 장치의 블록도이다.

    도 2는 도 1에 도시된 소프트웨어 파일 생성 장치에 의해 생성된 소프트웨어 파일의 구성도이다.

    도 3은 도 2에 도시된 요약 정보 영역에 저장되는 정보의 생성 방법을 도시한 도면이다.

    도 4는 본 발명의 바람직한 실시예에 따른 소프트웨어 파일의 자가 무결성 검증 방법을 도시한 흐름도이다.

    도 5는 본 발명의 바람직한 실시예에 따른 클라이언트-서버 환경에서의 소프트웨어 파일의 자가 무결성 검증 방법을 도시한 도면이다.

    상기 목적을 달성하기 위하여 본 발명은,

    상호 순환적 변조 여부 검증을 위한 자가 무결성 검증 코드 생성기; 공개키암호 시스템의 암호화용 개인키와 복호화용 비밀키를 생성하는 키쌍 생성기; 상기 비밀키를 원시코드 형태로 변환하는 비밀키 변환기; 소프트웨어 원시 코드와 자가 무결성 검증 코드 및 상기 비밀키 변환기로부터 출력되는 원시코드 비밀키를 컴파일링하여 실행 프로그램 이진 코드로 변환하는 컴파일러; 및 상기 실행 프로그램 이진 코드와 암호화용 개인키를 입력하고, 상기 실행 프로그램 이진 코드 내에 그 요약정보의 암호문을 삽입하여 변조 방지를 위한 소프트웨어 파일을 생성하는 암호문 생성기를 구비하는 소프트웨어 파일 생성 장치를 제공한다.

    바람직하기는, 상기 소프트웨어 파일은 메인 프로그램 실행 코드와 응용프로그램 자가 검증 코드 및 상기 비밀키를 저장하는 메인 실행 파일을 구비하며, 상기 비밀키는 상기 메인 실행 파일 내부에 별도로 할당된 저장 정보 영역에 저장된다.

    바람직하기는 또한, 소프트웨어 생성 장치는 상기 메인 실행 파일 내부에 비연속적으로 분산된 메모리 공간을 확보하고 상기 확보된 메모리 공간을 상기 암호화 정보 영역으로 할당하는 분산 메모리 생성기를 더 구비한다.

    바람직하기는 또한, 상기 소프트웨어 파일은 상기 메인 실행 파일들을 확장하는 적어도 하나의 확장 실행 파일을 더 구비하고, 상기 적어도 하나의 확장 실행 파일은 확장 프로그램 실행 코드와 응용 프로그램 자가 검증 코드로 구성된다.

    바람직하기는 또한, 상기 메인 실행 파일 및 적어도 하나의 확장 실행 파일내의 응용 프로그램 자가 검증 코드는 변조 여부를 상호 순환적으로 검증하는 파일의 정보를 포함한다.

    바람직하기는 또한, 상기 암호화 정보 영역에 상기 메인 실행 파일의 요약값및 적어도 하나의 확장 실행 파일의 요약값들의 암호문이 저장된다.

    바람직하기는 또한, 상기 메인 실행 파일의 요약값과 상기 적어도 하나의 확장 실행 파일의 요약값은 해쉬 알고리즘 통해 계산되며 안정성을 강화하기 위해 전자서명을 이용할 수 있다.

    바람직하기는 또한, 상기 비밀키 변환기는 매크로를 이용하여 상기 비밀키를 상기 원시코드 형태로 변환한다.

    상기 다른 목적을 달성하기 위하여 본 발명은,

    변조 방지용 소프트웨어 파일 생성 장치에 의해 생성되며, 적절한 시기에 응용 프로그램 자가 검증 코드를 수행하여 해당 실행 파일의 변조 여부를 검증하는 방법에 있어서, (a) 상기 메인 실행 파일로부터 비밀키 값을 추출하는 단계; (b) 상기 비밀키 값을 이용하여 상기 정보 영역으로부터 저장된 암호문을 복호화하여 해당 실행 파일의 요약값(H1)을 추출하는 단계; (c) 상기 해당 실행 파일의 요약값(H2)을 계산하는 단계; 및 (d) 상기 추출된 요약값(H1)과 상기 계산된 요약값(H2)을 상호 비교하여 상기 요약값들(H1,H2)이 동일하면 상기 해당 실행 파일은 변조되지 않았으며, 상기 요약값들(H1,H2)이 동일하면 상기 해당 실행 파일은 변조된 것으로 판단하는 단계를 포함하는 소프트웨어 파일의 변조 검증 방법을 제공한다.

    바람직하기는, 상기 응용 프로그램 자가 검증 코드내의 검증 대상 파일은 프로그램 수행 시마다 변경될 수 있으며 메인 실행 파일 및 적어도 하나의 확장 실행 파일은 상호 순환적으로 변조 여부가 검증된다.

    상기 또 다른 목적을 달성하기 위하여 본 발명은

    클라이언트-서버 환경의 서버에서 클라이언트 소프트웨어 파일의 변조를 자가 무결성 검증하는 방법에 있어서, (a) 상기 서버에서 다수개의 난수들(Ri)을 생성하여 이들과 클라이언트 소프트웨어 파일을 입력으로 하는 키사용 해쉬값들(Hpub)을 미리 계산하여 저장하는 단계; (b) 상기 서버가 상기 클라이언트와 통신하는 중에 주기적으로 상기 난수들을 전송하는 단계; (c) 상기 서버로부터 받은 난수들과 클라이언트에서 동작하는 소프트웨어 파일(P')을 입력하여 키사용 해쉬값을 계산하여 상기 서버로 전송하는 단계; 및 (d) 상기 서버가 미리 생성해 놓은 키사용 해쉬값(Hpub(Ri+P))과 상기 클라이언트로부터 전송받은 키사용 해쉬값(Hpub(Ri+P))을 비교하여 변조 여부를 판단하는 단계를 포함하는 클라이언트-서버 환경에서의 소프트웨어 파일의 자가 무결성 검증 방법을 제공한다.

    상기 본 발명에 의하여 소프트웨어 파일의 변조가 방지되며, 변조 여부를 자가적으로 검증함으로써 변조 여부의 검증이 용이하다.

    본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.

    이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.

    도 1 은 본 발명에 따른 소프트웨어 파일 생성 장치의 블록도이다. 도 1을 참조하면, 소프트웨어 파일 생성 장치(101)는 자가 검증용 코드 생성기(111), 공개키 암호시스템 키쌍 생성기(121), 비밀키 변환기(131), 컴파일러(Compiler)(141) 및 암호문 생성기(151)를 구비한다.

    자가 검증용 코드 생성기(111)는 메인 및 적어도 하나의 확장 실행 파일들을 상호 순환적으로 변조 여부를 검증하기 위한 자가 검증 코드(code2)를 생성한다.

    공개키 암호시스템 키쌍 생성기(131)는 복호화용 비밀키(key1)와 암호화용 개인키(key2)를 생성한다.

    비밀키 변환기(141)는 비밀키(key1)를 입력하고 이를 원시코드 형태로 변환한다. 이 때, 비밀키 변환기(141)는 매크로(Macro)를 이용하여 입력되는 비밀키(key1)를 원시코드 형태의 비밀키(key3)로 변환한다. 이렇게 함으로써 소프트웨어 파일의 실행 과정에서 분기가 발생하지 않게 되며, 그로 인해 역분석이 어렵게 된다.

    컴파일러(141)는 소프트웨어 원시 코드(code1)와 자가 무결성 검증 코드(code2) 및 비밀키 변환기(131)로부터 출력되는 원시코드 비밀키(key3)를 컴파일하여 실행 프로그램 이진 코드(PGM)로 변환한다. 소프트웨어 원시 코드(code1)는 소프트웨어 개발자에 의해 원래 목적에 맞게 작성된다.

    암호문 생성기(151)는 실행 프로그램 이진 코드(PGM)와 개인키(key2)를 입력하고, 실행 프로그램 이진 코드(PGM) 내에 그 요약값의 암호문을 삽입하여 변조 방지를 위한 소프트웨어 파일(SOFL)을 생성한다.

    변조 방지용 소프트웨어 파일(SOFL)을 제작하는 과정을 설명하면 다음과 같다.

    소프트웨어 개발자는 우선 원래 목적에 맞는 소프트웨어 원시 코드(code1)를 작성한다. 이어서, 소프트웨어 원시코드(code1)는 메인 및 적어도 하나의 확장 실행 코드들로 구성되며 각 실행 코드들이 상호 순환적으로 변조 여부를 검증하는 자가 검증 코드(code2)를 생성한다. 또한 무결성 검증에 사용될 공개키 암호시스템의 키쌍 생성기(121)를 통해 복호화용 비밀키(key1)와 암호화용 개인키(key2)를 생성한다. 복호화용 비밀키(key1)는 비밀키 변환기(131)를 통하여 원시코드 형태로 변환된다. 이를 소프트웨어 원시코드(code1)에 자가 무결성 검증 코드(code2)와 함께 컴파일러(141)를 이용하여 실행 프로그램 이진 코드로 컴파일한다. 여기에 실행 프로그램 이진 코드의 요약값 정보를 삽입하기 위하여 암호문 생성기(151)에 암호화용 개인키(key2)를 입력하여 실행 프로그램 이진 코드의 요약 정보를 암호화하여 그 암호문을 실행 프로그램 이진 코드에 삽입하여 변조 방지용 소프트웨어 파일(SOFL)을 최종적으로 생성한다.

    이와 같이, 본 발명은 클라이언트-서버 구조에서 악의적인 클라이언트 사용자가 클라이언트 소프트웨어 변조를 통하여 악의적인 코드를 실행하여 상기 클라이언트-서버를 공격하는 것을 막고, 소프트웨어 파일(SOFL) 자체에 대한 저작권을 보호하며, 소프트웨어 개발자가 개발한 기능만을 수행하도록 보장하며, 소프트웨어 개발의 마지막 단계에서 개발 책임자만이 알고있는 암호화용 개인키(key2)로 소프트웨어 파일(SOFL)의 요약정보를 암호화하여 이를 소프트웨어 파일(SOFL) 내부에숨겨 넣어 그 암호문을 찾아내어 삭제 및 수정하기 어렵게 하고, 파일의 변조 여부를 검증할 때 암호문을 복호화하기 위해 사용하는 비밀키(key1) 또한 숨겨 넣어 소프트웨어 파일(SOFL)의 변조 후 요약정보를 갱신할 수 없도록 한다.

    도 2는 도 1에 도시된 소프트웨어 파일 생성 장치(101)에 의해 생성된 소프트웨어 파일(SOFL)의 구성도이다. 도 2를 참조하면, 소프트웨어 파일(SOFL)은 메인 실행 파일과 복수개의 확장 실행 파일들(EXFL1∼EXFLn)로 이루어진다. 메인 실행 파일(211)과 확장 실행 파일들(EXFL1∼EXFLn)에 변조 방지 기능을 제공하기 위해 변조 여부 검증에 필요한 정보들을 메인 실행 파일(211)에 저장하게 된다.

    메인 실행 파일(211)에 저장되는 변조 검증 정보는 크게 두 부분으로 분류된다. 하나는 암호화 정보 영역(221)으로써 메인 실행 파일(211)에 대한 복호화에 필요한 복호화용 비밀키(key1) 정보와 메인 및 확장 실행 파일들(211,EXFL1∼EXFLn)의 변조 여부 검증에 필요한 요약 정보들의 암호문이 저장되는 곳이며 다른 하나는 메인 실행 파일이 수행하는 응용 프로그램 자가 검증 코드(241)이다. 또한 확장 실행 파일들(EXFL1∼EXFLn)은 원래의 기능을 수행하기 위한 프로그램 실행 코드들(P1∼Pn)과 응용프로그램 자가 검증 코드들(X1∼Xn)로 구성된다. 메인 및 적어도 하나의 확장 실행 파일내의 자가 검증 코드는 메인 및 확장 실행 코드가 실행되면서 적절한 시기에 상호 순환적으로 실행된다. 또한, 메인 및 적어도 하나의 확장 실행 파일내의 자가 검증 코드(241, X1∼Xn)에는 검증할 실행 파일의 정보를 포함하며 암호화 정보 영역(221)에 저장된 정보로부터 해당 실행 파일의 정보를 추출하여 해당 실행 파일들의 해쉬 함수를 이용한 요약 정보를 통하여 변조 여부를 상호 순환적으로 검증한다.

    변조 여부 검증을 수행할 메인 및 확장 실행 파일들(211, EXFL1∼EXFLn)에 대한 원시 요약 정보는 모두 암호화되어 메인 실행 파일(211) 내부에 저장된다.

    소프트웨어 파일 생성 장치(도 1의101)는 분산 메모리 생성기(미도시)를 더 구비하여 메인 실행 파일(211)의 내부에 비연속적으로 분산된 메모리 공간을 확보하고 상기 확보된 메모리 공간을 암호화 정보 영역(221)으로 할당한다.

    도 3은 도 2에 도시된 암호화 정보 영역에 저장되는 정보의 생성 방법을 도시한 도면이다. 메인 실행 파일(도 2의 211) 및 확장 실행 파일들(EXFL1∼EXFLn)에 대한 요약값들(H1,HH1∼HHn)은 해쉬 알고리즘(311)을 통해 계산되고 관리자의 암호화용 개인키(key2)를 이용하여 생성한 암호문을 암호화 정보 영역(도 2의 221)에 저장한다.

    도 4는 본 발명의 바람직한 실시예에 따른 소프트웨어 파일(SOFL)의 자가 무결성 검증 방법을 도시한 흐름도이다. 소프트웨어 파일의 실행 코드를 수행하면서 적절한 시기에 메인 및 확장 실행파일(241, EXFL1∼EXFLn)은 검증 코드에 의해 결정된 해당 파일(예, 241 또는 EXFL1∼EXFLn 중 하나)의 변조 여부를 검증하며, 도 4를 참조하면, 해당 파일의 변조 검증 방법은 제1 내지 제4 단계(411∼441)를 포함한다. 도 1 내지 도 3을 참조하여 도 4에 도시된 실행 파일(메인 및 확장 실행 파일 중 하나)의 변조 검증 방법을 설명하기로 한다.

    제1 단계(411)로써 메인 실행 파일(도 2의 211)로부터 비밀키 값을 추출한다.

    제2 단계(421)로써 제1 단계(411)에서 추출된 비밀키 값을 이용하여 메인 실행 파일(도 2의 211)로부터 암호문을 복호화하여 해당 파일의 요약값(H1)을 추출한다.

    제3 단계(431)로써 검증할 대상 실행 파일(241, 또는 EXFL1∼EXFLn 중 하나)의 요약값(H2)을 계산한다.

    제4 단계(441)로써 제2 단계(421)에서 추출된 요약값(H1)과 제3 단계(431)에서 계산된 요약값(H2)을 상호 비교한다. 그 결과 상기 요약값들(H1,H2)이 서로 동일하면 해당 실행 파일은 변조되지 않았으며, 상기 요약값들(H1,H2)이 서로 다르면 해당 실행 파일은 변조된 것으로 판단한다. 해당 실행 파일이 변조된 것으로 판단되면 소프트웨어 파일(도 1의 SOFL)을 더 이상 실행하지 않고 적절한 조치를 취한 다음 정상적으로 소프트웨어 파일(도 1의 SOFL)을 실행한다. 또한, 모든 실행 파일의 변조 여부는 상호 순환적으로 검증된다.

    도 5는 클라이언트-서버 환경에서 본 발명의 바람직한 실시예에 따른 소프트웨어 파일(SOFL)의 자가 무결성 검증 방법을 도시한 흐름도이다. 도 5를 참조하면, 클라이언트-서버 환경에서의 자가 무결성 검증 방법은 제1 내지 제4 단계(511∼541)를 포함한다.

    제1 단계(511)로써 상기 서버에 클라이언트 소프트웨어의 원본 파일(P)과 원본 파일의 전자서명 검증용 공개키(pub)(또는 암호화 정보의 복호화용 비밀키)를 저장하고, 다수개의 난수들(Ri)을 생성하여 이들과 클라이언트 소프트웨어 파일을 입력하는 키사용 해쉬값들(Hpub)을 미리 계산하여 저장한다.

    제2 단계(521)로써 상기 서버가 상기 클라이언트와 통신하는 중에 주기적으로 난수들(Ri)을 전송한다.

    제3 단계(531)로써 상기 클라이언트는 상기 서버로부터 받은 난수들과 클라이언트에서 동작하는 소프트웨어 파일(P')을 입력하여 키사용 해쉬값을 계산하여 상기 서버로 전송한다.

    제4 단계(541)로써 상기 서버가 자신이 미리 생성해 놓은 키사용 해쉬값(Hpub(Ri+P))과 상기 클라이언트로부터 전송받은 값(Hpub(Ri+P))을 비교(551)하여 변조 여부를 판정하고, 변조시 상기 서버는 상기 클라이언트와 통신을 종료하여 상기 클라이언트로 하여금 더 이상의 작업 수행을 진행하지 못하도록 한다.

    도면과 명세서에서 최적 실시예들이 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

    상술한 바와 같이 본 발명에 따르면, 악의적인 해커에 의해 소프트웨어 파일(도 1의 SOFL)이 위조 및 변조되어 원래의 목적에 어긋나는 수행 결과를 가져오는 것을 방지하고, 컴퓨터 바이러스 등에 의해 소프트웨어 파일(도 1의 SOFL)이변조되는 것을 막음으로써 소프트웨어 사용자의 정신적 및 경제적 손해를 막고 변조된 소프트웨어 파일(도 1의 SOFL)로 인하여 그와 함께 운영되는 시스템 및 타 사용자의 소프트웨어에 끼치는 악영향을 방지할 수가 있다.

    또한, 본 발명은 쉐어웨어 소프트웨어에 설치된 사용 제한 기능의 불법 해제를 통한 불법 사용을 막아 쉐어웨어 소프트웨어 개발자의 이익을 가져다 주는 효과를 얻을 수 있다.

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈