KR20130020861A - 자가암호화를 이용한 소프트웨어 변조방지 방법 - Google Patents

자가암호화를 이용한 소프트웨어 변조방지 방법 Download PDF

Info

Publication number
KR20130020861A
KR20130020861A KR1020110082785A KR20110082785A KR20130020861A KR 20130020861 A KR20130020861 A KR 20130020861A KR 1020110082785 A KR1020110082785 A KR 1020110082785A KR 20110082785 A KR20110082785 A KR 20110082785A KR 20130020861 A KR20130020861 A KR 20130020861A
Authority
KR
South Korea
Prior art keywords
software
key
code area
dynamic link
importance
Prior art date
Application number
KR1020110082785A
Other languages
English (en)
Other versions
KR101269089B1 (ko
Inventor
이동훈
김성훈
최원석
Original Assignee
고려대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 고려대학교 산학협력단 filed Critical 고려대학교 산학협력단
Priority to KR1020110082785A priority Critical patent/KR101269089B1/ko
Publication of KR20130020861A publication Critical patent/KR20130020861A/ko
Application granted granted Critical
Publication of KR101269089B1 publication Critical patent/KR101269089B1/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/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Abstract

본 발명은 자가암호화를 이용한 소프트웨어 변조방지 방법에 관한 것으로, 보다 구체적으로는 개발자에 의해 작성된 소프트웨어의 변조를 방지하는 자가암호화를 이용한 소프트웨어 변조방지 방법은 적어도 하나의 숫자집합으로 이루어진 배열과, 동적링크 키 생성함수에 기초하여 동적링크 키를 생성하는 동적링크키생성단계; 상기 소프트웨어의 적어도 하나의 코드영역을 중요도에 따라 구별하여 설정하는 중요도설정단계; 상기 소프트웨어의 해당 코드영역을 암호화하도록 암호화키를 생성하는 암호화키생성단계; 상기 해당 코드영역을 상기 암호화키를 이용하여 암호화하는 암호화단계; 암호화된 상기 해당 코드영역을 복호화하도록 복호화키를 생성하는 복호화키생성단계; 및 암호화된 상기 해당 코드영역을 상기 복호화키를 이용하여 복호화하는 복호화단계;를 포함하는 것을 특징으로 한다.
이러한 구성에 의해, 본 발명의 자가암호화를 이용한 소프트웨어 변조방지 방법은 소프트웨어의 코드영역 중 중요도가 중간에 해당하는 코드영역으로부터 동적링크 키를 생성하고, 생성된 동적링크 키를 이용하여 중요도가 가장 높은 코드영역을 암호화 및 복호화함으로써, 상기 소프트웨어의 중요도가 가장 높은 코드영역에 대한 변조를 방지할 수 있는 효과가 있다.

Description

자가암호화를 이용한 소프트웨어 변조방지 방법{Software modulation prevention method using own encryption}
본 발명은 자가암호화를 이용한 소프트웨어 변조방지 방법에 관한 것으로, 특히 소프트웨어의 코드영역 중 중요도가 가장 높다고 기설정한 코드영역을 용이하게 암호화 및 복호화할 수 있는 자가암호화를 이용한 소프트웨어 변조방지 방법에 관한 것이다.
IT분야의 급속한 기술의 발전에 따라, 다양한 IT제품을 구동시키기 위한 소프트웨어의 개발이 이루어지고 있다. 이러한 소프트웨어는 미리 컴파일이 된 이진코드형태로 해당 IT제품에 삽입되어 배포되는데, 이러한 이진코드형태는 역컴파일과정이나 역공학 기법과 같은 방법으로 분석됨에 따라, 개발자가 아닌 타인이 이진코드의 분석과정을 통해 상기 소프트웨어의 내부 정보를 추출할 수 있다. 뿐만 아니라, 악의적인 목적을 갖는 공격자가 상술한 역공학 기법등을 이용한 분석을 통해 과금 부분의 데이터 또는 코드의 흐름 부분 등과 같이, 해당 소프트웨어의 중요한 부분을 변조하여, 해당 소프트웨어가 개발자의 의도와는 다르게 수행하는 등과 같은 공격을 할 수 있다.
이처럼, 악의적인 목적을 갖는 공격자 또는 타인으로부터 해당 소프트웨어를 보호하기 위해, IT제품의 소프트웨어에 대한 다양한 보호방법이 연구되고 있는 것이 현실이다.
이러한 소프트웨어 보호방법으로는 보호하고자 하는 해당 소프트웨어에 워터마크를 삽입한 후, 이를 검출하는 방식을 이용한 소프트웨어 워터마킹 방법과, 해당 소프트웨어의 데이터 흐름을 모호화시키거나, 제어 흐름을 모호화시키는 형태인 코드모호화 방법 및 소프트웨어의 변조를 방지하기 위한 탬퍼 레지스턴트 소프트웨어(Tamper Resistant Software) 방법이 있다.
상기 탬퍼 레지스턴트 소프트웨어 방법 중 하드웨어적인 방법은 전용 하드웨어를 이용하여 이에 비밀정보를 저장하고, 보호하고자 하는 대상의 보호 루틴을 하드웨어에 삽입하는 방법을 말한다. 이러한 하드웨어적인 방법은 개발이 간단하다는 장점은 있으나, 별도의 하드웨어를 구비하고 있어야 하므로, 유지비용이 고가라는 점과, 안전도면에 있어서 해당 하드웨어에 의존해야 한다는 문제점이 발생했다.
상술한 바와 같이, 자가암호화를 이용한 소프트웨어 변조에 대한 선행기술을 살펴보면 다음과 같다.
선행기술 1은 한국등록특허공보 제0734600호(2007.06.26)로서, 변조방지 하드웨어에 기반한 자가 무결성 검증 기법을 이용한 시스템 인증 및 보안성 강화 방법에 관한 것이다. 이러한 선행기술 1은 TPSK 모듈의 저장장치로부터 해쉬함수의 요약값(H1)을 추출하고, 보안강화모듈의 코드 부분으로부터 요약값(H2)을 계산하며, 상기 추출된 요약값(H1)과 상기 계산된 요약값(H2)을 상호 비교하여 상기 보안강화모듈의 변조 여부를 판단한 결과, 변조되지 않은 경우 상기 보안강화모듈로부터 해당 프로세스 및 프로그램 파일의 해쉬함수에 의한 요약값(H3)을 추출하고, 상기 해당 프로세스 및 프로그램 파일로부터 해쉬함수에 의한 요약값(H4)을 계산하며, 상기 추출된 요약값(H3)과 상기 계산된 요약값(H4)을 상호 비교하여 상기 해당 프로세스 및 프로그램의 변조 여부를 판단함으로써, 소프트웨어 파일의 변조를 방지한다.
또한, 선행기술 2는 한국공개특허공보 제2003-0075018호(2003.09.22)로서, 변조 방지용 소프트웨어 파일 생성 장치와 그 소프트웨어파일의 자가 무결성 검증 방법 및 클라이언트-서버 환경에서의 소프트웨어 파일의 자가 무결성 검증 방법에 관한 것이다. 이러한 선행기술 2는 메인 실행 파일로부터 비밀키 값을 추출하고, 비밀키 값을 이용하여 저장된 암호문을 복호화한 후, 해당 실행 파일의 요약값(H1)을 추출하며, 해당 실행 파일의 요약값(H2)을 계산한 후, 추출된 요약값(H1)과 계산된 요약값(H2)을 상호 비교하여 상기 요약값들(H1,H2)의 동일여부에 따라 상기 해당 실행 파일의 변조여부를 판단함으로써, 소프트웨어 파일의 변조를 방지한다.
상기와 같은 종래 기술의 문제점을 해결하기 위해, 본 발명은 보호하고자 하는 소프트웨어의 각각의 코드영역을 중요도별로 구분하여 설정한 후, 중요도가 높은 영역에 대해서만 자가 암호화를 수행함으로써, 외부 공격자에 의한 상기 소프트웨어의 변조를 방지할 수 있는 자가암호화를 이용한 소프트웨어 변조방지 방법을 제공하고자 한다.
위와 같은 과제를 해결하기 위한 본 발명의 한 실시 예에 따른 개발자에 의해 작성된 소프트웨어의 변조를 방지하는 자가암호화를 이용한 소프트웨어 변조방지 방법은 적어도 하나의 숫자집합으로 이루어진 배열과, 동적링크 키 생성함수에 기초하여 동적링크 키를 생성하는 동적링크키생성단계; 상기 소프트웨어의 적어도 하나의 코드영역을 중요도에 따라 구별하여 설정하는 중요도설정단계; 상기 소프트웨어의 해당 코드영역을 암호화하도록 암호화키를 생성하는 암호화키생성단계; 상기 해당 코드영역을 상기 암호화키를 이용하여 암호화하는 암호화단계; 암호화된 상기 해당 코드영역을 복호화하도록 복호화키를 생성하는 복호화키생성단계; 및 암호화된 상기 해당 코드영역을 상기 복호화키를 이용하여 복호화하는 복호화단계;를 포함하는 것을 특징으로 한다.
보다 바람직하게는 상기 소프트웨어의 적어도 하나의 코드영역을 중요도에 따라 상, 중, 하의 세 단계로 나누어 각각 설정하는 것을 특징으로 하는 중요도설정단계를 포함할 수 있다.
특히, 중요도에 따라 나누어진 상기 소프트웨어의 해당 코드영역 중 중요도가 상에 해당하는 코드영역과 중에 해당하는 코드영역이 서로 쌍을 이루어 나누어지는 것을 특징으로 하는 중요도설정단계를 포함할 수 있다.
보다 바람직하게는 상기 소프트웨어의 영역 중 중요도가 중에 해당하는 코드영역에 대하여 상기 동적링크 키 및 MAC함수 또는 해시함수에 기초하여 암호화키 및 복호화키를 생성하는 것을 특징으로 하는 암호화키생성단계 및 복호화키생성단계를 포함할 수 있다.
보다 바람직하게는 상기 동적링크 키의 생성을 위한 적어도 하나의 숫자집합으로 이루어진 배열 및 랜덤값을 생성하는 배열생성과정; 상기 배열 내 숫자 중 0보다 같거나 크고, 상기 랜덤값보다 작은 값을 갖는 동적링크 키를 선택하는 초기동적링크키선택과정; 하기의 수학식을 만족하는 적어도 하나의 동적링크 키를 생성하는 동적링크키생성과정;
[수학식]
ki= a(f(ki -1)modn)
이때, 상기 ki는 동적링크 키, a는 배열, f는 동적링크 키 생성함수인 것을 특징으로 하는 동적링크기생성단계를 포함할 수 있다.
보다 바람직하게는 상기 소프트웨어의 코드영역 중 중요도가 상에 해당하는 코드영역에 대해서만 상기 암호화키 및 복호화키를 이용하여 암호화 및 복호화를 수행하는 것을 특징으로 하는 암호화단계 및 복호화단계를 포함할 수 있다.
특히, 상기 소프트웨어의 코드영역 중 중요도가 하에 해당하는 코드영역은 암호화 및 복호화를 수행하지 않는 것을 특징으로 하는 암호화단계 및 복호화단계를 포함할 수 있다.
본 발명의 자가암호화를 이용한 소프트웨어 변조방지 방법은 소프트웨어의 코드영역 중 중요도가 중간에 해당하는 코드영역으로부터 동적링크 키를 생성하고, 생성된 동적링크 키를 이용하여 중요도가 가장 높은 코드영역을 암호화 및 복호화함으로써, 상기 소프트웨어의 중요도가 가장 높은 코드영역에 대한 변조를 방지할 수 있는 효과가 있다. 이에 따라, 외부 공격자가 상기 소프트웨어 중 암호화된 코드영역을 확인하더라도 개발자에 의해 기설정된 중요도가 중간에 해당하는 코드영역으로부터 발생되는 암호화키 또는 복호화키를 획득하기 어려워, 중요도가 상에 해당하는 코드영역을 변조하는 방지할 수 있는 효과가 있다.
또한, 본 발명의 자가암호화를 이용한 소프트웨어 변조방지 방법은 소프트웨어의 코드영역 중 중요도가 가장 높은 코드영역만을 암호화함으로써, 중요도가 가장 높은 코드영역이 개발자가 아닌 타인 또는 악의적인 목적을 가진 공격자에게 노출되는 것을 방지할 수 있는 효과가 있다.
더불어, 본 발명의 자가암호화를 이용한 소프트웨어 변조방지 방법은 별도의 하드웨어장치를 사용하지 않고도 자가 암호화를 통해 소프트웨어의 변조를 방지할 수 있어, 소프트웨어의 보호에 따른 유지비용을 감소시킬 수 있는 효과가 있다.
이와 더불어, 본 발명의 자가암호화를 이용한 소프트웨어 변조방지 방법은 소프트웨어의 영역 중 중요도가 높은 코드영역만을 암호화하고, 외부에 노출되더라도 심각한 문제를 발생시키지 않는 중요도가 가장 낮은 코드영역은 암호화하지 않도록 함으로써, 상기 소프트웨어의 처리 속도 및 효율을 향상시킬 수 있는 효과가 있다.
도 1은 본 발명의 일 실시 예에 따른 자가암호화를 이용한 소프트웨어 변조방지 방법의 순서도이다.
도 2는 본 발명의 일 실시 예에 따른 자가암호화를 이용한 소프트웨어 변조방지 방법 중 생성되는 동적링크 키를 나타낸 도면이다.
도 3은 본 발명의 일 실시 예에 따른 자기암호화를 이용한 소프트웨어 변조방지 방법 중 중요도별 코드영역간 관계를 나타낸 도면이다.
이하, 본 발명을 바람직한 실시 예와 첨부한 도면을 참고로 하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 여기에서 설명하는 실시 예에 한정되는 것은 아니다.
이하, 도 1을 참고하여, 본 발명의 일 실시 예에 따른 자가암호화를 이용한 소프트웨어 변조방지 방법에 대하여 자세히 살펴보도록 한다.
도 1은 본 발명의 일 실시 예에 따른 자가암호화를 이용한 소프트웨어 변조방지 방법의 순서도이다.
도 1에 도시된 바와 같이, 본 발명의 일 실시 예에 따른 자가암호화를 이용한 소프트웨어 변조방지 방법은 먼저, 적어도 하나의 숫자집합으로 이루어진 배열 a과, 동적링크 키 생성함수 f에 기초하여 동적링크 키 ki를 생성한다(S110). 이러한 동적링크 키 생성과정은 상기 소프트웨어의 코드영역 중 중요도가 가장 높은 코드영역을 암호화(또는 복호화) 시 사용되는 암호화키(또는 복호화키)를 생성할 시 사용되는 키를 생성하는 것으로서, 적어도 하나의 숫자집합으로 이루어지며, 크기 n을 갖는 배열 a를 설정한다. 이어서, n바이트의 크기를 갖는 제1랜덤값을 생성한 후, 0보다는 같거나 크고, 상기 제1랜덤값으로부터 1을 뺀 값보다 같거나 작은 범위를 만족하는 임의의 숫자 k0를 선택한다. 이에 따라, 하기의 수학식 1로부터 동적링크 키를 생성한다.
[수학식 1]
ki= a(f(ki -1)modn)
이때, 상기 ki는 동적링크 키, a는 배열, f는 동적링크 키 생성함수를 나타내는 것으로서, i=1부터 i<klen (이때, 상기 klen는 앞서, 선택한 상기 임의의 숫자 k0 의 바이트 길이를 나타낸다.)까지 상기 i값을 1씩 증가시키면서, 상기 배열 중 동적링크키 생성함수에 따른 동적링크 키 ki 를 생성한다.
이와 같이 생성되는 동적링크 키 Ki에 대하여, 보다 자세히 살펴보도록 한다.
도 2는 본 발명의 일 실시 예에 따른 자가암호화를 이용한 소프트웨어 변조방지 방법 중 생성되는 동적링크 키를 나타낸 도면을 나타낸다.
도 2에 도시된 바와 같이, 상술한 S110과정을 통해 생성되는 동적링크 키 ki는 타인에 의해 예측할 수 있는 정적인 상태로 생성되는 것이 아니라, 생성되는 동적링크 키 k0부터 kn 가 모두 타인에 의해 예측하기 어려운 동적인 상태를 갖는 것을 알 수 있다. 따라서, 악의적인 목적을 가지고 공격을 시도하고자 하는 공격자가 해당 소프트웨어의 특정 코드영역을 변조시키기 위해 필요한 동적링크 키를 예측할 수 없게 하므로, 상기 공격자에 의해 보호하고자 하는 소프트웨어의 특정 코드영역이 노출되는 것을 방지하는 효과를 기대할 수 있다.
다시 도 1로 돌아가서, 이와 같이 생성된 상기 동적링크 키를 사용하여 암호화하고자 하는 소프트웨어의 코드영역에 대한 각각의 코드영역별 중요도를 설정한다(S120). 이러한 중요도 설정과정은 해당 소프트웨어의 코드영역 중 코드 흐름에 가장 핵심적인 부분 또는 외부로 노출되는 경우에 사용자에게 금전 상 피해가 발생할 수 있는 부분 등과 같이, 보호가 필요한 코드영역을 중요도 상으로 설정한다. 또한, 상기 중요도가 상에 해당하는 코드영역을 암호화 또는 복호화 시 사용되는 암호화키 또는 복호화키를 생성하기 위해, 상기 소프트웨어의 적어도 하나의 코드영역 중 상기 중요도가 상에 해당하는 코드영역과 쌍을 이루도록 해당 코드영역을 중요도 중으로 설정한다.
도 3은 본 발명의 일 실시 예에 따른 자가암호화를 이용한 소프트웨어 변조방지 방법 중 중요도별 코드영역간 관계를 나타낸 도면이다.
도 3에 도시된 바와 같이, 소프트웨어의 코드영역 중 앞서 중요도가 상으로 설정된 해당 코드영역 blockhigh(1) (이하, 첫 번째 중요도 상 코드영역'이라고 한다.)과 쌍을 이루도록 상호 매핑시켜 설정되는 첫 번째 중요도 중 코드영역 blockmid(1)이 존재한다.
이와 같이, 상기 소프트웨어의 적어도 하나의 코드영역 중 중요도를 상으로 설정해 놓은 코드영역에 대하여, 중요도 상 코드영역 blockhigh(1), blockhigh(2), blockhigh(3), blockhigh(4)에 각각 매핑되는 중요도가 중에 해당하는 코드영역 blockmid(1), blockmid(2), blockmid(3), blockmid(4)가 설정되는 것이 바람직하다.
특히, 소프트웨어의 코드영역 중 중요도가 상에 해당하는 코드영역 및 중요도가 중에 해당하는 코드영역을 설정한 후, 상기 소프트웨어의 나머지 코드영역 즉, 상기 소프트웨어의 기본적인 구동에 해당하는 코드영역 또는 공격자에 의해 해당 코드영역이 노출되더라도 상기 소프트웨어의 보안과는 상관없는 코드영역에 대하여 중요도를 하로 설정한다.
이와 같이, 설정된 상기 소프트웨어의 코드영역 중 중요도가 가장 높은 중요도 상 코드영역을 암호화하기 위해, 상기 중요도 상 코드영역에 대응하는 즉, 상기 중요도 상 코드영역과 상호 매핑되는 중요도 중 코드영역과 앞서 과정 S110에서 생성한 동적링크 키를 이용하여 암호화키를 생성한다(S130). 이때, 상기 암호화키를 사용하기 위해, MAC함수 또는 해시함수가 사용될 수 있는 있는데, 먼저, MAC함수를 이용하는 수학식 2를 통해 암호화키를 생성하는 방법에 대하여 살펴보도록 한다.
[수학식 2]
Bkeyl = MACk{blockmid(l')}
이때, 상기 Bkeyl 는 암호화하고자 하는 중요도 상에 해당하는 코드영역인blockhigh(l)을 암호화하기 위한 암호화키이고, 상기 blockmid(l')는 상기 중요도 상에 해당하는 코드영역 blockhigh(l)과 대응하도록 매핑되는 중요도 중에 해당하는 코드영역을 나타낸다. 이에 따라, 암호화하고자 하는 중요도 상에 해당하는 코드영역 blockhigh(l)과 대응하도록 매핑되는 중요도 중에 해당하는 코드영역 blockmid(l')을 상기 동적링크 키 k를 이용하여 MAC함수에 대입하여 암호화키 Bkeyl를 생성한다.
또는 이와 달리, 해시함수를 이용하는 수학식 3을 통해 중요도 상에 해당하는 코드영역인 blockhigh(l)을 암호화하기 위한 암호화키를 생성하는 방법에 대하여 살펴보도록 한다.
[수학식 3]
Bkeyl = hash{k∥blockmid(l')}
이처럼 해시함수를 이용하여 암호화키를 생성하는 경우, 앞서 S110과정에서 생성한 동적링크키 k와, 암호화하고자 하는 중요도 상에 해당하는 코드영역 blockhigh(l)과 대응하도록 매핑되는 중요도 중에 해당하는 코드영역 blockmid(l')을 해시함으로써, 암호화키를 생성한다.
이후, 생성된 상기 암호화키를 이용하여 중요도 상에 해당하는 코드영역 blockhigh(l)을 암호화한다(S140). 이때, 상기 소프트웨어 중 중요도 하에 설정된 코드영역은 해당 코드영역이 변조되더라도 소프트웨어의 전체 구동 또는 사용자에게 피해를 주지 않기 때문에, 이후 코드영역의 암호화과정에서 암호화를 수행하지 않는다. 이에 따라, 상기 소프트웨어의 처리 속도 및 효율을 향상시킬 수 있다.
이처럼, 암호화된 중요도 상에 해당하는 코드영역의 실행을 위해, 상기 중요도 상에 해당하는 코드영역을 실행하기 전, 암호화된 중요도 상에 해당하는 코드영역을 복호화하기 위한 복호화키를 생성한다(S150). 이러한 복호화키는 앞서 S130과정을 통해 수행한 암호화키의 생성과정과 마찬가지로, MAC함수 또는 해시함수를 통해 생성된다. 따라서, 상기 MAC함수 또는 해시함수를 이용한 복호화키 생성과정에 대한 구체적인 설명은 생략하기로 한다.
이와 같이, 생성된 상기 복호화키를 이용하여 암호화된 중요도 상에 해당하는 코드영역을 복호화(S160)하여 중요도 상에 해당하는 코드영역을 획득함으로써, 이를 실행한다.
이러한 본 발명의 자가암호화를 이용한 소프트웨어 변조방지 방법은 컴퓨터로 실행하기 위한 프로그램이 기록된 컴퓨터 판독가능 기록매체에 저장될 수 있다. 이때, 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 장치의 예로는 ROM, RAM, CD-ROM, DVD±ROM, DVD-RAM, 자기 테이프, 플로피 디스크, 하드 디스크(hard disk), 광데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 장치에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
본 발명의 자가암호화를 이용한 소프트웨어 변조방지 방법은 소프트웨어의 코드영역 중 중요도가 중간에 해당하는 코드영역으로부터 동적링크 키를 생성하고, 생성된 동적링크 키를 이용하여 중요도가 가장 높은 코드영역을 암호화 및 복호화함으로써, 상기 소프트웨어의 중요도가 가장 높은 코드영역에 대한 변조를 방지할 수 있는 효과가 있다. 이에 따라, 외부 공격자가 상기 소프트웨어 중 암호화된 코드영역을 확인하더라도 개발자에 의해 기설정된 중요도가 중간에 해당하는 코드영역으로부터 발생되는 암호화키 또는 복호화키를 획득하기 어려워, 중요도가 상에 해당하는 코드영역을 변조하는 방지할 수 있는 효과가 있다.
또한, 본 발명의 자가암호화를 이용한 소프트웨어 변조방지 방법은 소프트웨어의 코드영역 중 중요도가 가장 높은 코드영역만을 암호화함으로써, 중요도가 가장 높은 코드영역이 개발자가 아닌 타인 또는 악의적인 목적을 가진 공격자에게 노출되는 것을 방지할 수 있는 효과가 있다.
더불어, 본 발명의 자가암호화를 이용한 소프트웨어 변조방지 방법은 별도의 하드웨어장치를 사용하지 않고도 자가 암호화를 통해 소프트웨어의 변조를 방지할 수 있어, 소프트웨어의 보호에 따른 유지비용을 감소시킬 수 있는 효과가 있다.
이와 더불어, 본 발명의 자가암호화를 이용한 소프트웨어 변조방지 방법은 소프트웨어의 영역 중 중요도가 높은 코드영역만을 암호화하고, 외부에 노출되더라도 심각한 문제를 발생시키지 않는 중요도가 가장 낮은 코드영역은 암호화하지 않도록 함으로써, 상기 소프트웨어의 처리 속도 및 효율을 향상시킬 수 있는 효과가 있다.
상기에서는 본 발명의 바람직한 실시 예에 대하여 설명하였지만, 본 발명은 이에 한정되는 것이 아니고 본 발명의 기술 사상 범위 내에서 여러 가지로 변형하여 실시하는 것이 가능하고 이 또한 첨부된 특허청구범위에 속하는 것은 당연하다.
S110: 동적링크 키를 생성함
S120: 소프트웨어의 코드영역을 중요도에 따라 구별하여 설정함
S130: 암호화키를 생성함
S140: 소프트웨어의 코드영역을 생성된 암호화키를 이용하여 암호화함
S150: 복호화키를 생성함
S160: 암호화된 해당 코드영역을 복호화한 후, 해당 코드영역을 수행함

Claims (8)

  1. 개발자에 의해 작성된 소프트웨어의 변조를 방지하는 자가암호화를 이용한 소프트웨어 변조방지 방법에 있어서,
    적어도 하나의 숫자집합으로 이루어진 배열과, 동적링크 키 생성함수에 기초하여 동적링크 키를 생성하는 동적링크키생성단계;
    상기 소프트웨어의 적어도 하나의 코드영역을 중요도에 따라 구별하여 설정하는 중요도설정단계;
    상기 소프트웨어의 해당 코드영역을 암호화하도록 암호화키를 생성하는 암호화키생성단계;
    상기 해당 코드영역을 상기 암호화키를 이용하여 암호화하는 암호화단계;
    암호화된 상기 해당 코드영역을 복호화하도록 복호화키를 생성하는 복호화키생성단계; 및
    암호화된 상기 해당 코드영역을 상기 복호화키를 이용하여 복호화하는 복호화단계;
    를 포함하는 것을 특징으로 하는 자가암호화를 이용한 소프트웨어 변조방지 방법.
  2. 제1항에 있어서,
    상기 중요도설정단계는
    상기 소프트웨어의 적어도 하나의 코드영역을 중요도에 따라 상, 중, 하의 세 단계로 나누어 각각 설정하는 것을 특징으로 하는 자가암호화를 이용한 소프트웨어 변조방지 방법.
  3. 제2항에 있어서,
    상기 중요도설정단계는
    중요도에 따라 나누어진 상기 소프트웨어의 해당 코드영역 중 중요도가 상에 해당하는 코드영역과 중에 해당하는 코드영역을 서로 쌍을 이루어 매핑하는 것을 특징으로 하는 자가암호화를 이용한 소프트웨어 변조방지 방법.
  4. 제2항에 있어서,
    상기 암호화키생성단계 및 복호화키생성단계는
    상기 소프트웨어의 코드영역 중 중요도가 중에 해당하는 코드영역에 대하여 상기 동적링크 키 및 MAC함수 또는 해시함수에 기초하여 암호화키 및 복호화키를 생성하는 것을 특징으로 하는 자가암호화를 이용한 소프트웨어 변조방지 방법.
  5. 제1항에 있어서,
    상기 동적링크기생성단계는
    상기 동적링크 키의 생성을 위한 적어도 하나의 숫자집합으로 이루어진 배열 및 랜덤값을 생성하는 배열생성과정;
    상기 배열 내 숫자 중 0보다 같거나 크고, 상기 랜덤값보다 작은 값을 갖는 동적링크 키를 선택하는 초기동적링크키선택과정;
    하기의 수학식을 만족하는 적어도 하나의 동적링크 키를 생성하는 동적링크키생성과정;
    [수학식]
    ki= a(f(ki -1)modn)
    이때, 상기 ki는 동적링크 키,
    a는 배열
    f는 동적링크 키 생성함수인 것을 특징으로 하는 자가암호화를 이용한 소프트웨어 변조방지 방법.
  6. 제2항에 있어서,
    상기 암호화단계 및 복호화단계는
    상기 소프트웨어의 코드영역 중 중요도가 상에 해당하는 코드영역에 대해서만 상기 암호화키 및 복호화키를 이용하여 암호화 및 복호화를 수행하는 것을 특징으로 하는 자가암호화를 이용한 소프트웨어 변조방지 방법.
  7. 제2항에 있어서,
    상기 암호화단계 및 복호화단계는
    상기 소프트웨어의 코드영역 중 중요도가 하에 해당하는 코드영역은 암호화 및 복호화를 수행하지 않는 것을 특징으로 하는 자가암호화를 이용한 소프트웨어 변조방지 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 따른 방법을 컴퓨터로 실행하기 위한 프로그램이 기록된 컴퓨터 판독가능 기록매체.






KR1020110082785A 2011-08-19 2011-08-19 자가암호화를 이용한 소프트웨어 변조방지 방법 KR101269089B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110082785A KR101269089B1 (ko) 2011-08-19 2011-08-19 자가암호화를 이용한 소프트웨어 변조방지 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110082785A KR101269089B1 (ko) 2011-08-19 2011-08-19 자가암호화를 이용한 소프트웨어 변조방지 방법

Publications (2)

Publication Number Publication Date
KR20130020861A true KR20130020861A (ko) 2013-03-04
KR101269089B1 KR101269089B1 (ko) 2013-05-29

Family

ID=48173995

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110082785A KR101269089B1 (ko) 2011-08-19 2011-08-19 자가암호화를 이용한 소프트웨어 변조방지 방법

Country Status (1)

Country Link
KR (1) KR101269089B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101509585B1 (ko) * 2013-08-23 2015-04-07 주식회사 마크애니 모바일 애플리케이션의 위변조 방지 장치, 사용자 디바이스, 방법 및 시스템
WO2015072688A1 (ko) * 2013-11-14 2015-05-21 (주)잉카엔트웍스 프로그램 보호 장치
KR20160139914A (ko) 2015-05-29 2016-12-07 삼성에스디에스 주식회사 소프트웨어의 변조 여부 탐지 시스템 및 방법
CN107944314A (zh) * 2017-12-14 2018-04-20 苏州国芯科技有限公司 一种磁条解码方法及系统

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101490047B1 (ko) * 2013-09-27 2015-02-04 숭실대학교산학협력단 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
KR102133251B1 (ko) 2013-10-23 2020-07-21 삼성전자주식회사 애플리케이션 프로그램 보호 방법 및 장치
KR101628923B1 (ko) * 2014-12-24 2016-06-22 고려대학교 산학협력단 코드 변환 방법 및 코드 변환 장치
WO2022097799A1 (ko) * 2020-11-09 2022-05-12 동국대학교 산학협력단 함수 요약 정보를 생성하는 보안 취약점 분석 방법 및 이를 포함하는 전자 장치{security vulnerability analysis method for generating function abstract information and electronic device including the same}

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2447451C (en) 2000-05-12 2013-02-12 Xtreamlok Pty. Ltd. Information security method and system

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101509585B1 (ko) * 2013-08-23 2015-04-07 주식회사 마크애니 모바일 애플리케이션의 위변조 방지 장치, 사용자 디바이스, 방법 및 시스템
WO2015072688A1 (ko) * 2013-11-14 2015-05-21 (주)잉카엔트웍스 프로그램 보호 장치
US9965621B2 (en) 2013-11-14 2018-05-08 Inka Entworks, Inc. Program protection device
KR20160139914A (ko) 2015-05-29 2016-12-07 삼성에스디에스 주식회사 소프트웨어의 변조 여부 탐지 시스템 및 방법
CN107944314A (zh) * 2017-12-14 2018-04-20 苏州国芯科技有限公司 一种磁条解码方法及系统
CN107944314B (zh) * 2017-12-14 2021-04-13 苏州国芯科技股份有限公司 一种磁条解码方法及系统

Also Published As

Publication number Publication date
KR101269089B1 (ko) 2013-05-29

Similar Documents

Publication Publication Date Title
KR101269089B1 (ko) 자가암호화를 이용한 소프트웨어 변조방지 방법
US9208334B2 (en) Content management using multiple abstraction layers
US20140223580A1 (en) Method of and apparatus for processing software using hash function to secure software, and computer-readable medium storing executable instructions for performing the method
US8719583B2 (en) Apparatus for verifying and for generating an encrypted token and methods for same
CN110008745B (zh) 一种加密方法、计算机设备和计算机存储介质
CN109728914B (zh) 数字签名验证方法、系统、装置及计算机可读存储介质
CN107908574B (zh) 固态盘数据存储的安全保护方法
EP3198498B1 (en) A challenge-response method and associated computing device
KR20080093635A (ko) 메시지의 무결성 유지를 위한 메시지 암호화 방법 및 장치,메시지의 무결성 유지를 위한 메시지 복호화 방법 및 장치
JP2006244496A5 (ko)
US20180204004A1 (en) Authentication method and apparatus for reinforced software
CN1925392A (zh) 一种设备合法性认证的方法
US8392723B2 (en) Information processing apparatus and computer readable medium for preventing unauthorized operation of a program
US20150256343A1 (en) Securely Generating and Storing Passwords in a Computer System
KR100434836B1 (ko) 데이타 암호화 장치 및 불법 변경 방지 시스템
KR101458479B1 (ko) 세션상태정보의 암호화 및 복호화 방법
CN108270574B (zh) 一种白名单库文件的安全加载方法及装置
CN101681408B (zh) 数据安全性
US8347109B2 (en) Secure serial number generation
JP2009252142A (ja) データ処理装置
KR100734600B1 (ko) 변조방지 하드웨어에 기반한 자가 무결성 검증 기법을이용한 시스템 인증 및 보안성 강화 방법
JP4604523B2 (ja) データの移管方法およびデータの保管装置
KR101188659B1 (ko) 플레이어 및 카트리지 간의 디지털 콘텐츠 보호 방법
CN108848051B (zh) 应用数据的获取方法和装置
CN109564615B (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
FPAY Annual fee payment

Payment date: 20160225

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170328

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180406

Year of fee payment: 6