KR20230102835A - 권리보호 기능을 적용하여 소스코드를 제공하는 시스템 및 방법 - Google Patents

권리보호 기능을 적용하여 소스코드를 제공하는 시스템 및 방법 Download PDF

Info

Publication number
KR20230102835A
KR20230102835A KR1020210193266A KR20210193266A KR20230102835A KR 20230102835 A KR20230102835 A KR 20230102835A KR 1020210193266 A KR1020210193266 A KR 1020210193266A KR 20210193266 A KR20210193266 A KR 20210193266A KR 20230102835 A KR20230102835 A KR 20230102835A
Authority
KR
South Korea
Prior art keywords
source code
terminal
hash value
obfuscated
developer
Prior art date
Application number
KR1020210193266A
Other languages
English (en)
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 KR1020210193266A priority Critical patent/KR20230102835A/ko
Publication of KR20230102835A publication Critical patent/KR20230102835A/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/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2125Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation

Abstract

본 발명은 권리보호 기능을 적용하여 소스코드를 제공하는 시스템에 관한 것으로서, 구매자 단말 또는 개발자 단말로 발주 확인 요청하는 송수신부; 개발자 단말로부터 입력받는 원본 소스코드에 난독화를 적용하여 난독화된 소스코드를 출력하는 난독화부; 상기 난독화된 소스코드를 저장하는 저장부; 구매자 단말로부터 개발자에게 지급하는 대금을 예치받는 대금예치부; 구매자 단말로부터 상기 난독화된 소스코드의 검수완료를 등록받으면 대금을 개발자 단말로 지급하는 제어부;를 포함하는 것을 특징으로 한다.

Description

권리보호 기능을 적용하여 소스코드를 제공하는 시스템 및 방법{System and Method for providing source code by applying the rights protection function}
본 발명은 권리보호 기능을 적용하여 소스코드를 제공하는 시스템 및 방법에 관한 것으로서, 소스코드의 거래 안정성을 극대화하여 소스코드의 자유로운 거래환경을 도모할 수 있는 권리보호 기능을 적용하여 소스코드를 제공하는 시스템 및 방법을 제공하기 위한 것이다.
일반적으로 프로젝트 단위의 소프트웨어 개발을 아웃소싱 하기 위하여 이를 중개하는 중개 플랫폼에서는 발주처가 상기 중개 플랫폼에 아웃소싱을 하고자 하는 프로젝트를 등록하고, 이러한 중개 플랫폼에 등록된 프로젝트의 개발을 수행하려는 개발업체는 이를 검색하여 발주처와 개발업체간 계약이 체결될 수 있다.
이러한 중개 플랫폼에서는 발주처와 개발업체간 계약, 검수, 대금 지급 등의 절차를 지원할 수 있지만, 프로젝트의 진행, 프로젝트의 결과물 납품, 검수, 대금 지급 과정에서 다양한 분쟁 요인이 발생하고 있다.
예를 들어, 개발업체는 발주처의 요구 사항에 맞추어 개발을 완료했으나, 발주처에서는 결과물을 확인했음에도 검수를 거절하는 경우가 발생하여 개발업체의 피해가 클 수 있다는 문제점이 있다.
또한, 저작권법에서 규정하고 있는 소프트웨어 임치제도는 소프트웨어 거래시 저작권자가 사용을 허락 받은 자인 사용권자를 위하여 소스코드 및 기술정보 등을 신뢰성 있는 제3의 기관인 수치기관에 임치해 두고 저작권자의 폐업 또는 자연재해로 인한 소스코드의 멸실 등으로 유지보수를 계속할 수 없게 되는 조건이 발생하는 경우 수치기관이 해당 소스코드 및 기술정보를 사용권자에게 교부함으로써 사용권자가 안정적 및 계속적으로 당해 소프트웨어를 사용할 수 있도록 하고 있으나, 수치기관이 해당 소스코드 및 기술정보를 사용권자에게 교부하여 이를 확인하기 전까지는 소스코드 및 기술정보의 내용을 확인할 수 없다는 문제점이 있다.
또한, 소스코드 검색이 가능한 포털 사이트는 광범위한 소스코드 검색이 가능하여 일정 수준 이상의 역량을 가진 개발자에게 유용하지만, 시간이 촉박하거나 검색한 소스코드를 변경할 역량이 부족한 초보 개발자가 활용하는데 한계가 있다는 문제점이 있다.
공개특허공보 제10-2004-0054976호는 소프트웨어 유통카드를 이용한 소프트웨어 거래 방법에 관한 것으로서, 자금흐름의 투명성을 통한 세수의 공정한 집행을 도모하고 소프트웨어 공급사는 IT 화를 통한 업무의 효율성을 제공하며 적법한 소프트웨어 구매자에게는 정당한 경제적 혜택이 돌아갈 수 있도록 하기 위하여 소프트웨어 구매고객은 소프트웨어 유통중개서버에 접속하여 소프트웨어 유통 카드를 발급받고, 상기 소프트웨어 유통중개서버는 상기 소프트웨어 구매고객과 소프트웨어 공급자를 중개하여 소프트웨어가 전자상거래될 수 있도록 하며, 상기 소프트웨어 유통중개서버는 상기 소프트웨어 공급자의 거래 내역을 데이터베이스로 관리하여 상기 소프트웨어 공급자를 대신하여 자동으로 국세청 서버에 전송되도록 하고 있으나, 소프트웨어 구매고객은 결과물을 확인했음에도 검수를 거절하는 경우가 발생하여 소프트웨어 공급자의 피해가 클 수 있고, 수치기관이 해당 소스코드 및 기술정보를 사용권자에게 교부하여 이를 확인하기 전까지는 소스코드 및 기술정보의 내용을 확인할 수 없다는 문제점이 있다.
등록특허공보 제10-1097105호는 SW 소스코드 난독화와 버전 관리시스템과의 연동 방법 및 시스템에 관한 것으로서, 다양한 형태의 프로그램 소스코드가 유출되는 것을 방지하고 개발자가 이용하는 버전 관리 시스템과 연동함으로써 개발자가 난독화 기능을 용이하게 사용할 수 있도록 하며 소스코드가 유출되었을 경우 소스코드의 해독을 어렵게 하고 저작권 코드정보 및 난독화 처리결과에 대한 히스토리를 마련함으로써 소스코드와 관련된 저작권 분쟁시 저작자 입증을 용이하게 하며 유사기능의 SW를 개발하는 경우 선 개발된 특정 개발 툴을 플러그인 방식으로 이용할 수 있도록 함으로써 중복연구에 투자되는 시간 및 노력을 줄이기 위하여, 클라이언트 측에서는, 난독화 애플릿에서 소스코드를 난독화하고 저작권 코드정보를 삽입하고, 난독화 클라이언트는 사용자의 컴퓨터에 설치되어 난독화 서버 및 버전 관리시스템의 연동시 명령을 처리할 수 있도록 상호 인터페이스를 제공하며, 서버 측에서는, 난독화 서버에서 저작권 코드정보 삽입 및 난독화 처리결과에 대한 사용자 정보/로그/처리 내용에 대해 히스토리를 수신하여 관리하고 있으나, 소스코드 구매자와 소스코드 공급자의 구체적인 거래 환경에 대해서 나타내지 못하고 있고, 소스코드 및 기술정보의 내용을 확인할 수 있도록 하는 구체적인 구성에 대해서 기재된 바가 없다는 문제점이 있다.
등록특허공보 제10-1619458호는 애플리케이션 코드 난독화 장치에 관한 것으로서, 랜덤 벡터 테이블을 이용하여 애플리케이션 코드를 난독화하여 역공학 저항성을 향상시키기 위하여, 제 1 랜덤 벡터 및 제 2 랜덤 벡터에 의해 중요코드의 시그니처 및 중요코드의 옵셋 간의 연결이 약해지도록 하고 있으나, 소스코드 구매자와 소스코드 공급자의 구체적인 거래 환경에 대해서 나타내지 못하고 있고, 소스코드 및 기술정보의 내용을 확인할 수 있도록 하는 구체적인 구성에 대해서 기재된 바가 없다는 문제점이 있다.
등록특허공보 제10-1328012호는 애플리케이션 코드 난독화 장치 및 그 방법에 관한 것으로서, 호출 코드가 정적으로 사용되면 공격자에 의해 정적 분석만으로 제어 흐름이 분석 가능하다는 역공학 취약성을 보완하기 위하여 위조/변조 공격으로부터 보호가 필요한 중요 코드와 상기 중요 코드 이외의 일반 코드로 분리하고 상기 중요 코드를 네이티브 코드 형태로 변환하고 암호화하며, 중용 코드와 일반 코드에서 정의된 중요 식별자를 의미 없는 문자 또는 문자열로 교체하여 스크램블하여 역공학을 어렵게 하고 있으나, 소스코드 구매자와 소스코드 공급자의 구체적인 거래 환경에 대해서 나타내지 못하고 있고, 소스코스 및 기술정보의 거래시 소스코드 및 기술정보의 내용을 확인할 수 있도록 하는 구체적인 시기 및 구성에 대해서 기재된 바가 없다는 문제점이 있다.
공개특허공보 제10-2004-0054976호 등록특허공보 제10-1097105호 등록특허공보 제10-1619458호 등록특허공보 제10-1328012호
본 발명은 소스코드의 거래 안정성을 극대화하여 소스코드의 자유로운 거래환경을 도모할 수 있도록 하는 것을 목적으로 한다.
본 발명의 다른 목적은, 소스코드를 제공하는 경우 난독화를 활용하여 소스코드의 거래 안정성을 극대화하는 것이다.
본 발명의 또 다른 목적은, 수치기관이 해당 소스코드 및 기술정보를 사용권자에게 교부하기 전에도 소스코드 및 기술정보의 내용을 확인할 수 있도록 하는 것이다.
본 발명의 또 다른 목적은, 시간이 촉박하거나 검색한 소스코드를 변경할 역량이 부족한 초보 개발자가 소스코드를 검색하고 활용할 수 있도록 하는 것이다.
본 발명의 또 다른 목적은, 소스코드 구매자와 소스코드 공급자의 투명한 거래를 위하여 소스코스의 거래시 소스코드의 내용을 확인할 수 있도록 하는 것이다.
본 발명이 해결하고자 하는 과제는 상기 목적으로만 제한하지 아니하고, 위에서 명시적으로 나타내지 아니한 다른 기술적 과제는 이하 본 발명의 구성 및 작용을 통하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 쉽게 이해할 수 있을 것이다.
본 발명에서는, 상기 과제를 해결하기 위하여 이하의 구성을 포함한다.
본 발명은 권리보호 기능을 적용하여 소스코드를 제공하는 시스템에 관한 것으로서, 구매자 단말 또는 개발자 단말로 발주 확인 요청하는 송수신부; 개발자 단말로부터 입력받는 원본 소스코드에 난독화를 적용하여 난독화된 소스코드를 출력하는 난독화부; 상기 난독화된 소스코드를 저장하는 저장부; 구매자 단말로부터 개발자에게 지급하는 대금을 예치받는 대금예치부; 구매자 단말로부터 상기 난독화된 소스코드의 검수완료를 등록받으면 대금을 개발자 단말로 지급하는 제어부;를 포함하는 것을 특징으로 한다.
본 발명은 상기 난독화부에서 원본 소스코드에 난독화를 적용하기 이전에 상기 원본 소스코드에 워터마킹을 적용하는 워터마킹부를 더 포함하고, 상기 난독화부는 워터마킹된 소스코드에 난독화를 적용하는 것을 특징으로 한다.
본 발명의 상기 난독화부에서 출력되는 난독화된 소스코드를 개발자 단말로 전송하여 동의 여부를 확인하고, 상기 개발자 단말로부터 상기 난독화된 소스코드에 대한 동의를 확인하는 경우에, 상기 난독화된 소스코드를 구매자 단말로 전송하는 것을 특징으로 한다.
본 발명은 원본 소스코드 추출부를 더 포함하고, 상기 원본 소스코드 추출부는 상기 원본 소스코드의 일부를 추출하여 상기 난독화된 소스코드를 상기 구매자 단말로 전송할 때 함께 상기 구매자 단말로 전송하는 것을 특징으로 한다.
또한 본 본 발명은 권리보호 기능을 적용하여 소스코드를 제공하는 방법에 관한 것으로서, 구매자 단말로부터 소스코드의 요구사항과 입찰 금액을 등록받는 단계; 개발자 단말로부터 상기 소스코드의 요구사항과 입찰 금액을 확인받는 단계; 구매자 단말과 개발자 단말로부터 권리보호 기능의 적용이 서로 합의된 후 구매자 단말로부터 대금을 예치받고 개발자 단말로 발주 확인 요청하는 단계; 개발자 단말로부터 제공받는 원본 소스코드에 난독화를 적용하는 단계; 상기 난독화된 소스코드를 구매자에게 전송하는 단계; 상기 난독화된 소스코드를 검수하는 단계; 상기 난독화된 소스코드가 요구사항을 만족하는지 판단하는 단계; 상기 난독화된 소스코드가 요구사항을 만족하지 아니하면 수정요청 또는 인수거부를 등록받는 단계; 상기 난독화된 소스코드가 요구사항을 만족하면 검수완료를 등록받는 단계; 상기 검수완료를 등록하는 단계 이후에는 구매자 단말로부터 예치받은 대금을 개발자에게 지급하고 개발자 단말로부터 제공받은 원본 소스코드를 구매자에게 제공하는 단계;를 포함하는 것을 특징으로 한다.
또한 본 발명은 권리보호 기능을 적용하여 소스코드를 제공하는 방법에 관한 것으로서, 구매자 단말 또는 개발자 단말로 발주 확인 요청하는 단계; 개발 완료된 원본 소스코드에 난독화를 적용하여 난독화된 소스코드를 출력하는 단계; 구매자 단말로부터 개발자에게 지급하는 대금을 예치받는 단계; 구매자 단말로부터 상기 난독화된 소스코드의 검수완료를 등록받으면 대금을 개발자 단말로 지급하는 단계;를 포함하는 것을 특징으로 한다.
본 발명은 개발자 단말로부터 상기 난독화된 소스코드를 구매자의 공개키로 암호화하여 암호화/난독화된 소스코드를 등록받는 단계; 상기 개발자 단말로부터 해시값변환기로 상기 개발 완료된 원본 소스코드를 변환한 해시값 1을 등록받는 단계; 상기 개발자 단말로부터 상기 해시값변환기로 상기 난독화된 소스코드를 변환한 해시값 2를 등록받는 단계;를 더 포함하는 것을 특징으로 한다.
본 발명은 구매자 단말에서 상기 암호화/난독화된 소스코드, 해시값 1, 해시값 2를 수신하는 단계; 상기 구매자 단말에서 상기 암호화/난독화된 소스코드를 복호화하여 난독화된 소스코드를 저장하는 단계; 상기 구매자 단말에서 상기 해시값변환기로 상기 난독화된 소스코드를 변환한 해시값 3을 출력하는 단계; 개발자 단말로부터 원본 소스코드를 수신하여 상기 원본 소스코드를 변환한 해시값 4를 출력하는 단계; 해시값 2와 해시값 3을 비교하는 단계; 해시값 1과 해시값 4를 비교하는 단계;를 더 포함하고, 해시값 2와 해시값 3을 비교하는 단계에서 해시값 2와 해시값 3이 동일하면 해시값 1과 해시값 4를 비교하는 단계를 진행하고, 해시값 1과 해시값 4가 동일하면 구매자는 인수를 거부할 수 없도록 하는 것을 특징으로 한다.
또한 본 발명은 상기 권리보호 기능을 적용하여 소스코드를 제공하는 방법을 실행시키기 위하여 저장매체에 저장된 컴퓨터프로그램일 수 있다.
본 발명의 효과는 소스코드의 거래 안정성을 극대화하여 소스코드의 자유로운 거래환경을 도모할 수 있는 것이다.
본 발명의 다른 효과는, 소스코드를 제공하는 경우 난독화를 활용하여 소스코드의 거래 안정성을 극대화할 수 있는 것이다.
본 발명의 또 다른 효과는, 수치기관이 해당 소스코드 및 기술정보를 사용권자에게 교부하기 전에도 소스코드 및 기술정보의 내용을 확인할 수 있는 것이다.
본 발명의 또 다른 효과는, 시간이 촉박하거나 검색한 소스코드를 변경할 역량이 부족한 초보 개발자가 소스코드를 검색하고 활용할 수 있는 것이다.
본 발명의 또 다른 효과는, 소스코드 구매자와 소스코드 공급자의 투명한 거래를 위하여 소스코스의 거래시 소스코드의 내용을 확인할 수 있는 것이다.
본 발명에 의한 효과는 상기 효과로만 제한하지 아니하고, 위에서 명시적으로 나타내지 아니한 다른 효과는 이하 본 발명의 구성 및 작용을 통하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 쉽게 이해할 수 있을 것이다.
도 1은 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템이 작동하는 개략적인 상황을 도시한다.
도 2는 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템의 구체적인 구성도의 일실시예를 도시한다.
도 3(a)는 원본 소스코드의 일실시예를 도시하고, 도 3(b)는 원본 소스코드에 난독화를 적용한 난독화된 소스코드를 도시한다.
도 4(a)는 원본 소스코드의 일실시예를 도시하고, 도 4(b)는 원본 소스코드에 워터마킹을 적용한 워터마킹된 소스코드를 도시한다.
도 5는 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템의 개발자 단말의 구체적인 구성도의 일실시예를 도시한다.
도 6은 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템의 구매자 단말의 구체적인 구성도의 일실시예를 도시한다.
도 7은 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템의 구체적인 구성도의 다른 일실시예를 도시한다.
도 8은 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 방법의 구체적인 흐름도를 도시한다.
도 9는 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 방법의 구매자 단말에서의 흐름도의 일실시예를 도시한다.
도 10은 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 방법의 구매자 단말에서의 흐름도의 다른 일실시예를 도시한다.
이하 본 발명의 바람직한 실시예에 따른 전체적인 구성 및 작용에 대해 설명하기로 한다. 이러한 실시예는 예시적인 것으로서 본 발명의 구성 및 작용을 제한하지는 아니하고, 실시예에서 명시적으로 나타내지 아니한 다른 구성 및 작용도 이하 본 발명의 실시예를 통하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 쉽게 이해할 수 있는 경우는 본 발명의 기술적 사상으로 볼 수 있을 것이다.
컴퓨터 프로그래밍 언어로 작성된 소스코드의 리버스 엔지니어링을 어렵게 만들기 위하여 난독화(obfuscation)를 하게 되는데, 프로그래밍에서 사용되는 내용을 숨기기 위해서 소스코드의 일부 또는 전체를 변경하여 가독성을 낮추는 것이 일반적이다.
스페이스와 탭을 삭제하고 줄 바꿈을 하지 않으며, for 문을 while 문으로 바꾸고, 순환문을 재귀 함수로 바꾸며, while 문의 조건을 if 문으로 바꾸고, 변수 이름을 무작위로 변경하는 등의 방법으로 난독화를 적용할 수 있다.
본 발명의 난독화는 컴퓨터 프로그래밍 언어의 문법에 어긋나지 않는 범위 내에서 소스코드의 가독성을 낮추고, 난독화된 소스코드는 컴파일러에서는 오류가 발생하지 않고 원본 소스코드와 동일한 기능을 수행하도록 하는 것이 바람직하며, 난독화 수준을 높이는 경우 원본 소스코드에 비하여 성능 저하가 발생할 수는 있다.
도 1은 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템이 작동하는 개략적인 상황을 도시한다.
도 1을 참조하면, 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템은 구매자 단말 1~m(100), 개발자 단말 1~n(200), 서버(300)가 유선 또는 무선 통신망을 통하여 연결되어 소스코드의 거래 및 임치를 가능하도록 한다.
상기 구매자 단말 1~m(100)은 프로젝트 단위 또는 함수 단위로 요구사항 및 입찰 금액을 상기 서버(300)에 등록하고, 상기 개발자 단말 1~n(200)은 상기 서버(300)에 등록된 프로젝트 또는 함수의 요구사항 및 입찰 금액을 확인하며, 상기 구매자 단말 1~m(100)과 상기 개발자 단말 1~n(200)이 서로 협의를 완료하면 상기 구매자 단말 1~m(100)이 대금을 예치하고, 상기 서버(300)는 상기 개발자 단말 1~n(200)에게 발주 확인을 요청하게 된다.
소정의 시간 내에 상기 개발자 단말 1~n(200)가 발주 확인을 하면 상기 프로젝트 또는 함수의 개발이 진행 상태로 전환되고, 상기 개발자 단말 1~n(200)는 개발이 완료되면 원본 소스코드를 상기 서버(300)에 예치하게 된다.
이때 발주 요청한 개발자로부터 발주 확인을 기다리는 소정의 시간 또는 개발이 진행되는 시간 동안 시스템은 프로젝트 또는 함수의 진행 상태를 발주 확인 대기 상태 또는 개발 진행 상태로 전환하여 타 개발자와 중복 협의가 진행되는 것을 차단하는 것이 바람직할 것이다.
상기 서버(300)는 상기 원본 소스코드에 워터마킹 및 난독화를 적용한 후 상기 구매자 단말 1~m(100)로 전송하고, 상기 구매자 단말 1~m(100)은 워터마킹 및 난독화가 적용된 난독화된 소스코드를 컴파일하고, 오류 없이 컴파일이 되고 요구사항에 맞게 동작하는지 확인하여 검수하게 된다.
상기 구매자 단말 1~m(100)은 난독화된 소스코드가 오류 없이 컴파일이 되고 요구사항을 만족하면 검수완료를 등록하게 되고, 상기 서버(300)는 예치된 대금 중 소정의 수수료를 차감한 후 상기 구매자 단말 1~m(100)에 지급하며, 상기 구매자 단말 1~m(100)은 예치된 상기 원본 소스코드를 인수받게 된다.
상기 구매자 단말 1~m(100)은 검수완료를 등록한 후에는 상기 원본 소스코드의 인수를 거부할 수 없도록 하여 개발자가 요구사항에 맞게 개발했으나 구매자가 결과물을 확인하고 검수완료를 등록한 후에 인수를 거절하는 상황의 발생을 방지하게 된다.
또한, 상기 구매자 단말 1~m(100)은 상기 원본 소스코드를 확인하지 않고도 상기 난독화된 소스코드를 컴파일하고 요구사항을 확인할 수 있게 된다.
한편, 본 발명인 권리보호 기능을 적용하여 소스코드를 제공하는 시스템은 상기 서버(300)를 구비하여 중앙집중형으로 구성되고 있으나, 상기 구매자 단말 1~m(100)과 상기 개발자 단말 1~n(200)이 서로 피어투피어(Peer-to-Peer)로 연결되어 분산형으로 구성될 수도 있다.
도 2는 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템의 구체적인 구성도의 일실시예를 도시한다.
도 2를 참조하면, 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템의 서버(300)는 송수신부(310), 워터마킹부(320), 난독화부(330), 저장부(340), 대금예치부(350), 제어부(360), 원본 소스코드 추출부(370)를 구비하고 있다.
상기 송수신부(310)는 유선 또는 무선 통신망을 통하여 구매자 단말 1~m(100)과 개발자 단말 1~n(200)과 연결되어 상기 구매자 단말 1~m(100)로부터 프로젝트 단위 또는 함수 단위로 소스코드의 개발 요구사항 및 입찰 금액을 등록받고, 상기 요구사항 및 입찰 금액은 상기 저장부(340)에 저장되며, 상기 개발자 단말 1~n(200)은 상기 요구사항 및 입찰 금액을 검색 및 확인할 수 있게 된다.
상기 구매자 단말 1~m(100)과 상기 개발자 단말 1~n(200)이 서로 협의를 완료하면 상기 구매자 단말 1~m(100)이 대금을 상기 대금예치부(350)에 예치하고, 상기 제어부(360)는 상기 개발자 단말 1~n(200)에게 발주 확인을 요청하도록 한다.
소정의 시간 내에 상기 개발자 단말 1~n(200)이 발주 확인을 하고, 개발이 완료되어 상기 개발자 단말 1~n(200)으로부터 원본 소스코드를 전송받으면, 상기 워터마킹부(320)는 상기 원본 소스코드에 개발자의 고유한 코드를 추가하여 향후에 원본 소스코드의 최초 작성자를 확인할 수 있도록 한다.
상기 난독화부(330)는 상기 원본 소스코드에 난독화를 적용하여 난독화된 소스코드를 출력하고, 상기 제어부(360)는 상기 난독화된 소스코드를 상기 저장부(340)에 저장하도록 한다.
상기 제어부(360)는 상기 원본 소스코드에 워터마킹 및 난독화를 적용한 후 상기 구매자 단말 1~m(100)로 전송하고, 상기 구매자 단말 1~m(100)은 워터마킹 및 난독화가 적용된 난독화된 소스코드를 컴파일하고, 오류 없이 컴파일이 되고 요구사항에 맞게 동작하는지 확인하여 검수하게 된다.
상기 원본 소스코드 추출부(370)는 상기 원본 소스코드의 일부를 추출하여 상기 난독화된 소스코드를 상기 구매자 단말(100)로 전송할 때 상기 구매자 단말(100)로 함께 전송한다.
개발자의 원본 소스코드 품질이 부실하여 구매자가 피해를 보는 것을 방지하기 위해 난독화된 소스코드를 구매자 단말로 전송할 때 원본 소스코드의 기술이 노출되지 않는 범위에서 일정 분량, 임의 위치의 원본 소스코드 샘플을 구매자에게 함께 제공함으로써 구매자가 원본 소스코드의 품질을 확인할 수 있도록 한다.
이때 구매자에게 제공되는 원본 소스코드 샘플의 위치를 구매자가 미리 알 수 없도록 함으로써 원본 소스코드의 품질관리에 노력하도록 유도하기 위해 원본 소스코드 샘플은 시스템에서 자동으로 추출한다. 또한 구매자에게 제공하는 원본 소스코드 샘플의 분량은 시스템에서 자동으로 설정하거나 개발자와 구매자의 합의에 의해 결정할 수 있다.
도 3(a)는 원본 소스코드의 일실시예를 도시하고, 도 3(b)는 원본 소스코드에 난독화를 적용한 난독화된 소스코드를 도시한다.
도 3(a)를 참조하면, 원본 소스코드는 작성된 프로그램을 보고 쉽게 이해할 수 있도록 변수 및 함수의 이름과 그 기능을 일치시키고 가독성을 높이기 위하여 적절하게 줄 바꿈을 하게 된다.
도 3 (b)를 참조하면, 원본 소스코드의 리버스 엔지니어링을 어렵게 만들기 위하여 난독화(obfuscation)를 하게 되는데, 프로그래밍에서 사용되는 내용을 숨기기 위해서 소스코드의 일부 또는 전체를 변경하여 가독성을 낮추게 된다.
스페이스, 탭, 엔터를 삭제하고 줄 바꿈을 하지 않으며 변수 이름을 무작위로 변경하여 난독화를 적용하고 있다. 이외에도 for 문을 while 문으로 바꾸고, 순환문을 재귀 함수로 바꾸며, while 문의 조건을 if 문으로 바꾸는 등의 방법으로 난독화를 적용할 수 있다.
본 발명의 난독화는 컴퓨터 프로그래밍 언어의 문법에 어긋나지 않는 범위 내에서 소스코드의 가독성을 낮추고, 난독화된 소스코드는 컴파일러에서는 오류가 발생하지 않고 원본 소스코드와 동일한 기능을 수행하도록 하는 것이 바람직하며, 난독화 수준을 높이는 경우 원본 소스코드에 비하여 성능 저하가 발생할 수는 있다.
도 4(a)는 원본 소스코드의 일실시예를 도시하고, 도 4(b)는 원본 소스코드에 워터마킹을 적용한 워터마킹된 소스코드를 도시한다.
도 4(a)와 도 4(b)를 참조하면, 도 4(a)에 도시된 원본 소스코드에 대해서 도 4(b)에서는 프로그램의 작동과는 무관한 개발자의 고유한 코드를 추가하여 향후에 원본 소스코드의 최초 작성자를 확인할 수 있도록 한다.
도 5는 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템의 개발자 단말의 구체적인 구성도의 일실시예를 도시한다.
도 5를 참조하면, 본 발명의 개발자 단말은 송수신부(110), 워터마킹부(120), 난독화부(130), 저장부(140), 암호화/복호화부(150), 제어부(160), 해시값변환부(170)를 포함하고, 개발자가 원본 소스코드의 개발을 완료하면 상기 송수신부(110)를 통하여 서버(300)로 전송하고 상기 서버(300)에서 워터마킹 및 난독화를 원본 소스코드에 적용할 수도 있으나, 개발자가 원본 소스코드의 유출을 방지하거나 지연시키고자 하는 경우에는 개발자 단말의 워터마킹부(120)와 난독화부(130)에서 워터마킹 및 난독화를 원본 소스코드에 적용한 후 난독화된 소스코드를 상기 서버(300)로 전송할 수 있다.
구매자 단말과 개발자 단말이 서로 피어투피어(Peer-to-Peer)로 연결되어 분산형으로 구성되는 경우에는 상기 난독화된 소스코드를 개발자 단말에서 구매자 단말로 직접 전송할 수도 있다.
상기 암호화/복호화부(150)는 공개키 기반의 암호화 및 복호화 기능을 수행하는 구성으로서 상기 원본 소스코드 및 상기 난독화된 소스코드를 구매자의 공개키로 암호화한 후, 암호화/원본 소스코드 및 암호화/난독화된 소스코드를 상기 서버(300) 또는 구매자 단말로 전송하여 원본 소스코드의 유출을 더욱 더 방지할 수 있다.
상기 해시값변환부(170)는 상기 개발 완료된 원본 소스코드를 해시값 1로 변환하고, 해시값 1을 상기 서버(300) 또는 구매자 단말로 전송하며, 상기 난독화된 소스코드를 해시값 2로 변환하고, 해시값 2를 상기 서버(300) 또는 구매자 단말로 전송하여 이를 활용하여 검수할 수 있다.
상기 저장부(140)는 개발 완료된 상기 원본 소스코드, 상기 난독화된 소스코드, 상기 암호화/원본 소스코드, 상기 암호화/난독화된 소스코드, 해시값 1, 해시값 2, 구매자의 공개키 등을 저장할 수 있고, 상기 제어부(160)는 각 구성요소의 전반적인 제어 기능을 구비할 수 있다.
도 6은 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템의 구매자 단말의 구체적인 구성도의 일실시예를 도시한다.
도 6을 참조하면, 본 발명의 구매자 단말은 송수신부(210), 컴파일러(220), 검수부(230), 저장부(240), 암호화/복호화부(250), 제어부(260), 해시값변환부(270)를 포함하고, 상기 송수신부(210)를 통하여 개발자 단말(200) 또는 서버(300)로부터 상기 원본 소스코드, 상기 난독화된 소스코드, 해시값 1, 해시값 2를 전송받을 수 있다. 또는 상기 암호화/원본 소스코드, 상기 암호화/난독화된 소스코드, 해시값 1, 해시값 2를 전송받을 수 있다.
상기 컴파일러(220)는 상기 난독화된 소스코드를 컴파일하고, 상기 검수부(230)는 상기 난독화된 소스코드가 요구사항을 만족하는지 검수하고 요구사항을 만족하지 않는 경우에는 수정요청 또는 인수거부를 하는 신호를 발생시키고 요구사항을 만족하는 경우에는 검수완료 신호를 발생시키게 된다.
상기 저장부(240)는 개발자 단말(200) 또는 서버(300)로부터 상기 난독화된 소스코드, 해시값 1, 해시값 2를 전송받아서 저장하고, 상기 암호화/복호화부(250)는 상기 암호화/원본 소스코드 및 상기 암호화/난독화된 소스코드를 복호화한다.
상기 전송받은 해시값 1 및 해시값 2를 활용하여 검수하는 절차를 구체적으로 살펴보면, 먼저, 해시값변환부(270)에서 전송받은 상기 난독화된 소스코드를 해시값 3으로 변환한 뒤 상기 해시값 2와 비교하여 1차 검수를 할 수 있다.
다음에, 구매자 단말은 전송받은 상기 원본 소스코드의 해시값 4를 구한 뒤 상기 해시값 1과 비교하여 2차 검수를 할 수 있다.
1차 검수와 2차 검수에서 문제가 없으면 구매자 단말은 상기 원본 소스코드의 인수를 거부할 수 없도록 하여 개발자가 요구사항에 맞게 개발했으나 구매자가 결과물을 확인하고도 결과물의 인수를 거절하는 상황의 발생을 방지하게 된다.
도 7은 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템의 구체적인 구성도의 다른 일실시예를 도시한다.
도 7을 참조하면, 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템은 구매자 단말(100), 개발자 단말(200), 집중형/분산형 시스템(300)을 포함하고 있다.
상기 개발자 단말(200)은 원본 소스코드, 난독화된 소스코드, 암호화/원본 소스코드, 암호화/난독화된 소스코드를 구매자 단말(100) 또는 집중형/분산형 시스템(300)으로 전송한다.
해시값변환부(170)는 상기 원본 소스코드와 상기 난독화된 소스코드를 각각 해시값 1과 해시값 2로 변환하고, 이를 구매자 단말(100) 또는 집중형/분산형 시스템(300)으로 전송하고, 상기 집중형/분산형 시스템(300)은 집중형 서버 또는 분산형 피어투피어 시스템일 수 있다.
상기 구매자 단말(100)은 상기 개발자 단말(200)로부터 직접 또는 집중형/분산형 시스템(300)을 경유하여 상기 원본 소스코드, 상기 암호화/난독화된 소스코드, 해시값 1, 해시값 2를 전송받고, 상기 원본 소스코드와 상기 암호화/난독화된 소스코드로부터 해시값변화부(270)를 통하여 해시값 4, 해시값 3을 구할 수 있다. 상기 원본 소스코드와 상기 난독화된 소스코드는 상기 개발자 단말(200)로부터 구매자의 공개키로 암호화되어 전송받을 수 있다.
검수부(230)는 해시값2와 해시값 3을 비교하여 1차 검수를 진행하고, 해시값 1과 해시값 4를 비교하여 2차 검수를 진행한다.
먼저 1차 검수에서, 해시값2와 해시값 3을 비교하여 서로 동일하면 개발자의 난독화된 소스코드와 구매자가 취득한 난독화된 소스코드가 동일하다는 것을 증명하므로 개발자 단말(200)로부터 상기 원본 소스코드를 전송받게 된다. 상기 원본 소스코드도 구매자의 공개키로 암호화되어 전송받을 수도 있다.
다음은, 1차 검수 이후 개발자 단말(200)로부터 전송 받은 상기 원본 소스코드로부터 해시값 4를 구하고 이를 해시값 1과 비교하여 서로 동일하면 개발자의 원본 소스코드와 구매자가 취득환 원본 소스코드가 동일하다는 것을 증명하므로 구매자는 이후에 인수 거부를 할 수 없도록 한다.
도 8은 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 방법의 구체적인 흐름도를 도시한다.
도 8을 참조하면, 본 발명인 권리보호 기능을 적용하여 소스코드를 제공하는 방법은 구매자 단말로부터 소스코드의 요구사항과 입찰 금액을 등록받는 단계(S100)를 수행하고, 개발자 단말로부터 상기 소스코드의 요구사항과 입찰 금액을 확인받는 단계(S200)가 수행된다.
개발자 단말은 상기 소스코드의 요구사항과 입찰 금액을 검색할 수 있고, 개발자와 구매자는 세부 사항을 협의할 수 있으며, 구매자 단말과 개발자 단말로부터 권리보호 기능의 적용이 서로 합의된 후 구매자 단말로부터 대금을 예치받고 개발자 단말로 발주 확인 요청하는 단계(S300)가 수행된다.
이후에, 프로젝트 또는 함수 단위의 소스코드의 개발이 진행되고, 소스코드의 개발이 완료되면 개발자는 원본 소스코드를 서버로 전송하고, 개발자 단말로부터 제공받는 원본 소스코드에 난독화를 적용하는 단계(S400)가 수행된다.
분산형 시스템인 경우에는 개발자 단말에서 원본 소스코드를 난독화할 수도 있고, 상기 난독화된 소스코드를 구매자에게 전송하는 단계(S500)를 수행하고, 구매자 단말에서 상기 난독화된 소스코드를 검수하는 단계가 수행된다.
상기 난독화된 소스코드가 요구사항을 만족하는지 판단하여 상기 난독화된 소스코드가 요구사항을 만족하지 아니하면 수정요청 또는 인수거부를 등록받는 단계(S600)를 수행하고, 상기 난독화된 소스코드가 요구사항을 만족하면 검수완료를 등록받는 단계(S700)를 수행하게 된다.
상기 검수완료를 등록받는 단계 이후에는 구매자 단말로부터 예치받은 대금을 개발자에게 지급하고 개발자 단말로부터 제공받은 원본 소스코드를 구매자에게 제공하는 단계(S800)를 수행하고, 이후에는 구매자 단말이 상기 원본 소스코드의 인수를 거부할 수 없도록 하여 개발자가 요구사항에 맞게 개발했으나 구매자가 결과물을 확인하고도 결과물의 인수를 거절하는 상황의 발생을 방지하게 된다.
도 9는 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 방법의 구매자 단말에서의 흐름도의 일실시예를 도시한다.
도 9를 참조하면, 구매자 단말은 개발자 단말 또는 서버로부터 난독화된 소스코를 전송받는 단계(S510)를 수행하고, 상기 난독화된 소스코드를 검수하는 단계(S520)를 수행하여 상기 난독화된 소스코드가 요구사항을 만족하는지 판단하여 상기 난독화된 소스코드가 요구사항을 만족하지 아니하면 수정요청 또는 인수거부를 등록하는 단계(S610)를 수행하고, 상기 난독화된 소스코드가 요구사항을 만족하면 검수완료를 등록하는 단계(S710)를 수행하게 되며, 이후에는 구매자 단말이 상기 원본 소스코드의 인수를 거부할 수 없도록 하여 개발자가 요구사항에 맞게 개발했으나 구매자가 결과물을 확인하고도 결과물의 인수를 거절하는 상황의 발생을 방지하게 된다. 그리고, 상기 검수완료를 등록하는 단계(S710) 이후에는 서버는 구매자 단말로부터 예치받은 대금을 개발자에게 지급하고 서버로부터 개발자 단말로부터 제공받은 원본 소스코드를 제공받는 단계(S810)를 수행하게 된다.
도 10은 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 방법의 구매자 단말에서의 흐름도의 다른 일실시예를 도시한다.
도 10을 참조하면, 개발자 단말은 난독화된 소스코드를 구매자의 공개키로 암호화하여 암호화/난독화된 소스코드를 등록하고, 개발 완료된 원본 소스코드를 변환하여 해시값 1을 등록하며, 상기 난독화된 소스코드를 변환하여 해시값 2를 등록한다.
구매자 단말은 상기 암호화/난독화된 소스코드, 상기 원본 소스코드의 해시값 1, 상기 난독화된 소스코드의 해시값 2를 수신하는 단계(S511)를 수행하고, 상기 암호화/난독화된 소스코드를 복호화하여 저장하는 단계(S512)를 수행한다.
상기 구매자 단말에서 상기 해시값변환기로 상기 난독화된 소스코드를 변환한 해시값 3을 출력하는 단계(S513)를 수행하며, 개발자 단말로부터 원본 소스코드를 수신하여 상기 원본 소스코드를 변환한 해시값 4를 출력하는 단계(S514)를 수행한다.
상기 난독화된 소스코드, 상기 원본 소스코드의 해시값 1, 상기 난독화된 소스코드의 해시값 2를 활용하여 검수하는 단계(S521)를 구체적으로 살펴보면, 먼저, 구매자 단말은 전송받은 상기 난독화된 소스코드를 해시값 3으로 변환한 뒤 상기 해시값 2와 비교하여 1차 검수를 할 수 있다.
다음에, 구매자 단말은 전송받은 상기 원본 소스코드를 해시값 4로 변환한 뒤 상기 해시값 1과 비교하여 2차 검수를 할 수 있다.
1차 검수와 2차 검수에서 요구사항이 만족되고 해시값 2와 해시값 3이 동일하고 해시값 1과 해시값 4가 동일하면 구매자 단말은 상기 원본 소스코드의 인수를 거부할 수 없도록 하여 개발자가 요구사항에 맞게 개발했으나 구매자가 결과물을 확인하고도 결과물의 인수를 거절하는 상황의 발생을 방지하게 된다.
이와 같이, 암호화와 해시값 비교를 이용하여 원본 소스코드를 전달하게 되면, 집중화/분산화 시스템에 암호화된 상태로 소스코드가 등록되기 때문에 거래 당사자 이외에게는 소스코드의 유출이 방지된다는 장점이 있어서 개발자와 구매자가 집중화/분산화 시스템에서 제공하는 난독화 기능을 이용하지 않고 별도의 방식으로 난독화를 하기로 합의할 경우 이를 활용할 수 있다.
또한 이와 같은 권리보호 기능을 적용하여 소스코드를 제공하는 방법의 흐름도는 컴퓨터프로그램으로 구현될 수 있으며, 본 발명의 각 구성요소는 하드웨어 또는 소프트웨어로 구현될 수 있다는 점에서 하나의 하드웨어 또는 개별적인 하드웨어에서 구동되는 소프트웨어로 구현될 수도 있다. 또한 본 발명의 권리보호 기능을 적용하여 소스코드를 제공하는 시스템 및 방법은 컴퓨터프로그램으로서 저장매체에 기록되어 구현될 수도 있다.
100: 구매자 단말 1~m
200: 개발자 단말 1~n
300: 서버
110, 210, 310: 송수신부
120, 320: 워터마킹부
130, 330: 난독화부
140, 240, 340: 저장부
150, 250: 암호화/복호화부
350: 대금예치부
160, 260, 360: 제어부
220: 컴파일러
230: 검수부
170, 270: 해시값변환부
280: 비교부
370: 원본 소스코드 추출부

Claims (9)

  1. 권리보호 기능을 적용하여 소스코드를 제공하는 시스템에 있어서,
    구매자 단말 또는 개발자 단말로 발주 확인 요청하는 송수신부;
    개발자 단말로부터 입력받는 원본 소스코드에 난독화를 적용하여 난독화된 소스코드를 출력하는 난독화부;
    상기 난독화된 소스코드를 저장하는 저장부;
    구매자 단말로부터 개발자에게 지급하는 대금을 예치받는 대금예치부;
    구매자 단말로부터 상기 난독화된 소스코드의 검수완료를 등록받으면 대금을 개발자 단말로 지급하는 제어부;를 포함하는 것을 특징으로 하는 권리보호 기능을 적용하여 소스코드를 제공하는 시스템.
  2. 제 1 항에 있어서,
    상기 난독화부에서 원본 소스코드에 난독화를 적용하기 이전에 상기 원본 소스코드에 워터마킹을 적용하는 워터마킹부를 더 포함하고,
    상기 난독화부는 워터마킹된 소스코드에 난독화를 적용하는 것을 특징으로 하는 권리보호 기능을 적용하여 소스코드를 제공하는 시스템.
  3. 제 1 항에 있어서,
    상기 난독화부에서 출력되는 난독화된 소스코드를 개발자 단말로 전송하여 동의 여부를 확인하고, 상기 개발자 단말로부터 상기 난독화된 소스코드에 대한 동의를 확인하는 경우에, 상기 난독화된 소스코드를 구매자 단말로 전송하는 것을 특징으로 하는 권리보호 기능을 적용하여 소스코드를 제공하는 시스템.
  4. 제 1 항에 있어서,
    원본 소스코드 추출부를 더 포함하고,
    상기 원본 소스코드 추출부는 상기 원본 소스코드의 일부를 추출하여 상기 난독화된 소스코드를 상기 구매자 단말로 전송할 때 함께 상기 구매자 단말로 전송하는 것을 특징으로 하는 권리보호 기능을 적용하여 소스코드를 제공하는 시스템.
  5. 권리보호 기능을 적용하여 소스코드를 제공하는 방법에 있어서,
    구매자 단말로부터 소스코드의 요구사항과 입찰 금액을 등록받는 단계;
    개발자 단말로부터 상기 소스코드의 요구사항과 입찰 금액을 확인받는 단계;
    구매자 단말과 개발자 단말로부터 권리보호 기능의 적용이 서로 합의된 후 구매자 단말로부터 대금을 예치받고 개발자 단말로 발주 확인 요청하는 단계;
    개발자 단말로부터 제공받는 원본 소스코드에 난독화를 적용하는 단계;
    상기 난독화된 소스코드를 구매자에게 전송하는 단계;
    상기 난독화된 소스코드를 검수하는 단계;
    상기 난독화된 소스코드가 요구사항을 만족하는지 판단하는 단계;
    상기 난독화된 소스코드가 요구사항을 만족하지 아니하면 수정요청 또는 인수거부를 등록받는 단계;
    상기 난독화된 소스코드가 요구사항을 만족하면 검수완료를 등록받는 단계;
    상기 검수완료를 등록하는 단계 이후에는 구매자 단말로부터 예치받은 대금을 개발자에게 지급하고 개발자 단말로부터 제공받은 원본 소스코드를 구매자에게 제공하는 단계;를 포함하는 것을 특징으로 하는 권리보호 기능을 적용하여 소스코드를 제공하는 방법.
  6. 권리보호 기능을 적용하여 소스코드를 제공하는 방법에 있어서,
    구매자 단말 또는 개발자 단말로 발주 확인 요청하는 단계;
    개발 완료된 원본 소스코드에 난독화를 적용하여 난독화된 소스코드를 출력하는 단계;
    구매자 단말로부터 개발자에게 지급하는 대금을 예치받는 단계;
    구매자 단말로부터 상기 난독화된 소스코드의 검수완료를 등록받으면 대금을 개발자 단말로 지급하는 단계;를 포함하는 것을 특징으로 하는 권리보호 기능을 적용하여 소스코드를 제공하는 방법.
  7. 제 6 항에 있어서,
    개발자 단말로부터 상기 난독화된 소스코드를 구매자의 공개키로 암호화하여 암호화/난독화된 소스코드를 등록받는 단계;
    상기 개발자 단말로부터 해시값변환기로 상기 개발 완료된 원본 소스코드를 변환한 해시값 1을 등록받는 단계;
    상기 개발자 단말로부터 상기 해시값변환기로 상기 난독화된 소스코드를 변환한 해시값 2를 등록받는 단계;를 더 포함하는 것을 특징으로 하는 권리보호 기능을 적용하여 소스코드를 제공하는 방법.
  8. 제 7 항에 있어서,
    구매자 단말에서 상기 암호화/난독화된 소스코드, 해시값 1, 해시값 2를 수신하는 단계;
    상기 구매자 단말에서 상기 암호화/난독화된 소스코드를 복호화하여 난독화된 소스코드를 저장하는 단계;
    상기 구매자 단말에서 상기 해시값변환기로 상기 난독화된 소스코드를 변환한 해시값 3을 출력하는 단계;
    개발자 단말로부터 원본 소스코드를 수신하여 상기 원본 소스코드를 변환한 해시값 4를 출력하는 단계;
    해시값 2와 해시값 3을 비교하는 단계;
    해시값 1과 해시값 4를 비교하는 단계;를 더 포함하고,
    해시값 2와 해시값 3을 비교하는 단계에서 해시값 2와 해시값 3이 동일하면 해시값 1과 해시값 4를 비교하는 단계를 진행하고, 해시값 1과 해시값 4가 동일하면 구매자는 인수를 거부할 수 없도록 하는 것을 특징으로 하는 권리보호 기능을 적용하여 소스코드를 제공하는 방법.
  9. 제 5 항 내지 제 8 항 중 어느 한 항의 권리보호 기능을 적용하여 소스코드를 제공하는 방법을 실행시키기 위하여 저장매체에 저장된 컴퓨터프로그램.
KR1020210193266A 2021-12-30 2021-12-30 권리보호 기능을 적용하여 소스코드를 제공하는 시스템 및 방법 KR20230102835A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210193266A KR20230102835A (ko) 2021-12-30 2021-12-30 권리보호 기능을 적용하여 소스코드를 제공하는 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210193266A KR20230102835A (ko) 2021-12-30 2021-12-30 권리보호 기능을 적용하여 소스코드를 제공하는 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR20230102835A true KR20230102835A (ko) 2023-07-07

Family

ID=87153678

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210193266A KR20230102835A (ko) 2021-12-30 2021-12-30 권리보호 기능을 적용하여 소스코드를 제공하는 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR20230102835A (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040054976A (ko) 2002-12-20 2004-06-26 삼성에스디에스 주식회사 소프트웨어 유통카드를 이용한 소프트웨어 거래 방법
KR101097105B1 (ko) 2010-12-23 2011-12-22 한국저작권위원회 Sw 소스코드 난독화와 버전 관리시스템과의 연동 방법 및 시스템
KR101328012B1 (ko) 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
KR101619458B1 (ko) 2016-03-02 2016-05-10 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040054976A (ko) 2002-12-20 2004-06-26 삼성에스디에스 주식회사 소프트웨어 유통카드를 이용한 소프트웨어 거래 방법
KR101097105B1 (ko) 2010-12-23 2011-12-22 한국저작권위원회 Sw 소스코드 난독화와 버전 관리시스템과의 연동 방법 및 시스템
KR101328012B1 (ko) 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
KR101619458B1 (ko) 2016-03-02 2016-05-10 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법

Similar Documents

Publication Publication Date Title
Cohney et al. Transactional scripts in contract stacks
CN108573381B (zh) 数据处理方法以及装置
US11748830B2 (en) Distributed ledger based system and method for the settlement and transfer of title to real estate
JP6966474B2 (ja) デジタル資産のモデリング
EP3869444A1 (en) Handling management device
CN107993047B (zh) 一种基于区块链的保单销售佣金权益管理方法
CN109544160A (zh) 一种基于区块链和智能合约的交易真实性验证方法及系统
KR20180074655A (ko) 블록체인 기술을 이용하는 증권 거래들을 거래, 승인 및 결제하기 위한 시스템들 및 방법들
US10643208B2 (en) Digital payment system
CN111177275A (zh) 基于区块链的管理方法、终端、装置及存储介质
US20030126033A1 (en) System, method and article of manufacture for software source authentication for return purposes
US10909533B2 (en) System and methods of securely matching a buyer to a seller
Sanz Bayón Key legal issues surrounding smart contract applications
Dubey et al. Secure land registration management via ethereum blockchain
US20220284508A1 (en) A distributed computing architecture with settlement mechanism to enable traceability of credit tokenization, disbursement and repayment
CN111105224B (zh) 支付反馈信息的处理方法、装置、电子设备和存储介质
KR20230102835A (ko) 권리보호 기능을 적용하여 소스코드를 제공하는 시스템 및 방법
CN111833193A (zh) 提供具有集中式和分布式数据结构的专利所有权保险的系统和方法
EP1174786A2 (en) Method, system, and program for reusing software licenses with new computer hardware
CN111709838B (zh) 基于知识产权标准化数字资产的交易方法及相关设备
Butera et al. Blockchain and nfts-based trades of second-hand vehicles
CN114329567A (zh) 投标文件生成方法、校验方法、电子设备及介质
JP7316921B2 (ja) 電子資産管理方法、及び電子資産管理装置
Ranjbar Alvar et al. NFT-Based Data Marketplace with Digital Watermarking
WO2021087475A1 (en) Systems and methods for cross-ecosystem aggregation of assets using distributed ledgers

Legal Events

Date Code Title Description
E902 Notification of reason for refusal