KR20240010048A - 소프트웨어 이용 시스템 및 소프트웨어 이용 방법 - Google Patents
소프트웨어 이용 시스템 및 소프트웨어 이용 방법 Download PDFInfo
- Publication number
- KR20240010048A KR20240010048A KR1020237044227A KR20237044227A KR20240010048A KR 20240010048 A KR20240010048 A KR 20240010048A KR 1020237044227 A KR1020237044227 A KR 1020237044227A KR 20237044227 A KR20237044227 A KR 20237044227A KR 20240010048 A KR20240010048 A KR 20240010048A
- Authority
- KR
- South Korea
- Prior art keywords
- library
- software development
- development device
- software
- package
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 18
- 238000007726 management method Methods 0.000 description 129
- 238000010586 diagram Methods 0.000 description 24
- 238000012545 processing Methods 0.000 description 23
- 238000012795 verification Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 230000004913 activation Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/12—Payment architectures specially adapted for electronic shopping systems
- G06Q20/123—Shopping for digital content
- G06Q20/1235—Shopping for digital content with control of digital rights management [DRM]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Accounting & Taxation (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
소프트웨어 이용 시스템은 1 또는 복수의 라이브러리를 격납하는 격납부와, 소프트웨어 개발 장치로부터의 리퀘스트에 응답하고, 리퀘스트된 라이브러리에 이용 관리 정보를 부가한 패키지를 생성함과 동시에 생성한 패키지를 소프트웨어 개발 장치의 공개 키로 암호화한 후에 소프트웨어 개발 장치로 제공하는 패키지 제공 수단을 포함한다. 이용 관리 정보는 소프트웨어 개발 장치를 특정하기 위한 식별 정보를 포함한다. 소프트웨어 개발 장치는 암호화된 패키지를 비밀 키로 복호화한 후에 당해 패키지를 이용하여 애플리케이션을 개발하기 위한 환경을 제공한다.
Description
본 개시는 소프트웨어 이용 시스템 및 소프트웨어 이용 방법에 관한 것이다.
최근의 정보통신기술(Information and Communication Technology: ICT)의 진보에 수반하여 다양한 것(things)이 인터넷 등의 네트워크에 접속되게 되어 있다. 그 때문에 소프트웨어의 개발이 점점 더 중요하게 되고 있다.
기존의 소프트웨어 자원을 재이용함으로써 소프트웨어의 개발 속도를 높이는 것이 일반적이다. 예를 들면 일본 공개특허공보 2004-206586호(특허문헌 1)는 프로젝트를 개발할 때에 이용되는 소프트웨어 부품의 유통을 효과적으로 촉구하는 소프트웨어 부품 유통 지원 방법을 개시한다.
일본 공개특허공보 2004-206586호(특허문헌 1)는 단일 시스템 내에 있어서 소프트웨어 부품이 이용되는 것을 전제로 하고 있지만 현실적으로는 소프트웨어 부품의 제공자를 관리할 수 없는 범위에서 소프트웨어 부품이 이용되게 된다.
본 개시의 전형적인 목적은 소프트웨어의 이용에 따른 관리를 보다 용이하게 실현할 수 있는 솔루션을 제공하는 것이다.
본 개시의 어느 형태에 따른 소프트웨어 이용 시스템은 1 또는 복수의 라이브러리를 격납하는 격납부와, 소프트웨어 개발 장치로부터의 리퀘스트에 응답하고, 리퀘스트된 라이브러리에 이용 관리 정보를 부가한 패키지를 생성함과 동시에 생성한 패키지를 소프트웨어 개발 장치의 공개 키로 암호화한 후에 소프트웨어 개발 장치로 제공하는 패키지 제공 수단을 포함한다. 이용 관리 정보는 소프트웨어 개발 장치를 특정하기 위한 식별 정보를 포함한다. 소프트웨어 개발 장치는 암호화된 패키지를 비밀 키로 복호화한 후에 당해 패키지를 이용하여 애플리케이션을 개발하기 위한 환경을 제공한다.
이용 관리 정보는 라이브러리의 이용 조건 및 유효 기한의 정보를 포함하고 있어도 좋다.
소프트웨어 개발 장치는 패키지에 포함되는 라이브러리를 이용한 실행 코드에 당해 패키지에 포함되는 이용 관리 정보의 적어도 일부를 포함시키도록 해도 좋다.
소프트웨어 개발 장치는 당해 소프트웨어 개발 장치를 특정하기 위한 식별 정보를 포함하는 리퀘스트를 송신하도록 해도 좋다.
소프트웨어 이용 시스템은 라이브러리의 소유자에 대하여 당해 라이브러리의 이용에 따른 요금의 지불을 관리하는 관리 수단을 추가로 포함하고 있어도 좋다.
본 개시의 다른 형태에 따른 소프트웨어 이용 방법은 1 또는 복수의 라이브러리를 격납하는 스텝과, 소프트웨어 개발 장치로부터의 리퀘스트에 응답하고, 리퀘스트된 라이브러리에 이용 관리 정보를 부가한 패키지를 생성함과 동시에 생성한 패키지를 소프트웨어 개발 장치의 공개 키로 암호화한 후에 소프트웨어 개발 장치로 제공하는 스텝을 포함한다. 이용 관리 정보는 소프트웨어 개발 장치를 특정하기 위한 식별 정보를 포함한다. 소프트웨어 이용 방법은 소프트웨어 개발 장치에 있어서, 암호화된 패키지를 비밀 키로 복호화한 후에 당해 패키지를 이용하여 애플리케이션을 개발하기 위한 환경을 제공하는 스텝을 포함한다.
본 개시에 의하면 소프트웨어의 이용에 따른 관리를 보다 용이하게 실현할 수 있다.
도 1은 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서의 처리 수순을 개략하는 모식도이다.
도 2는 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서의 처리 수순의 일례를 나타내는 시퀀스 도면이다.
도 3은 본 실시 형태에 따른 소프트웨어 이용 시스템을 구성하는 관리 서버의 하드웨어 구성예를 나타내는 모식도이다.
도 4는 본 실시 형태에 따른 소프트웨어 이용 시스템을 구성하는 소프트웨어 개발 장치의 하드웨어 구성예를 나타내는 모식도이다.
도 5는 본 실시 형태에 따른 소프트웨어 이용 시스템의 관리 서버가 갖고 있는 라이브러리 이용 관리 정보의 일례를 나타내는 모식도이다.
도 6은 본 실시 형태에 따른 소프트웨어 이용 시스템의 관리 서버가 생성하는 패키지에 포함되는 이용 관리 정보의 일례를 나타내는 모식도이다.
도 7은 본 실시 형태에 따른 소프트웨어 이용 시스템의 소프트웨어 개발 장치의 기능 구성예를 나타내는 모식도이다.
도 8은 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서 생성되는 실행 코드의 일례를 나타내는 모식도이다.
도 9는 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서 생성되는 실행 코드의 다른 일례를 나타내는 모식도이다.
도 10은 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서 생성되는 실행 코드의 추가로 다른 일례를 나타내는 모식도이다.
도 11은 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서 생성되는 실행 코드의 추가로 다른 일례를 나타내는 모식도이다.
도 12는 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서 생성되는 실행 코드의 추가로 다른 일례를 나타내는 모식도이다.
도 2는 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서의 처리 수순의 일례를 나타내는 시퀀스 도면이다.
도 3은 본 실시 형태에 따른 소프트웨어 이용 시스템을 구성하는 관리 서버의 하드웨어 구성예를 나타내는 모식도이다.
도 4는 본 실시 형태에 따른 소프트웨어 이용 시스템을 구성하는 소프트웨어 개발 장치의 하드웨어 구성예를 나타내는 모식도이다.
도 5는 본 실시 형태에 따른 소프트웨어 이용 시스템의 관리 서버가 갖고 있는 라이브러리 이용 관리 정보의 일례를 나타내는 모식도이다.
도 6은 본 실시 형태에 따른 소프트웨어 이용 시스템의 관리 서버가 생성하는 패키지에 포함되는 이용 관리 정보의 일례를 나타내는 모식도이다.
도 7은 본 실시 형태에 따른 소프트웨어 이용 시스템의 소프트웨어 개발 장치의 기능 구성예를 나타내는 모식도이다.
도 8은 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서 생성되는 실행 코드의 일례를 나타내는 모식도이다.
도 9는 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서 생성되는 실행 코드의 다른 일례를 나타내는 모식도이다.
도 10은 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서 생성되는 실행 코드의 추가로 다른 일례를 나타내는 모식도이다.
도 11은 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서 생성되는 실행 코드의 추가로 다른 일례를 나타내는 모식도이다.
도 12는 본 실시 형태에 따른 소프트웨어 이용 시스템에 있어서 생성되는 실행 코드의 추가로 다른 일례를 나타내는 모식도이다.
본 개시에 따른 실시 형태에 대해서, 도면을 참조하면서 상세하게 설명한다. 또한, 도면 중의 동일 또는 상당 부분에 대해서는 동일한 부호를 붙이고 그 설명은 반복하지 않는다.
<A. 개요>
우선, 본 실시 형태에 따른 소프트웨어 이용 시스템(1)에 있어서의 소프트웨어의 작성, 유통 및 이용에 따른 처리 수순의 일례를 설명한다.
도 1은 본 실시 형태에 따른 소프트웨어 이용 시스템(1)에 있어서의 처리 수순을 개략하는 모식도이다. 도 1을 참조하여 소프트웨어 이용 시스템(1)은 주된 구성 요소로서 관리 서버(100)와, 소프트웨어 개발 장치(200)를 포함한다. 또한, 소프트웨어 이용 시스템(1)에는 라이브러리를 개발하는 개인 또는 법인(이하, 「라이브러리 개발자(10)」라고도 부름.)과, 라이브러리를 사용하여 애플리케이션을 개발하는 개인 또는 법인(이하, 「애플리케이션 개발자(20)」라고도 부름.)이 관여할 수 있다.
본 명세서에 있어서, 「라이브러리」는 애플리케이션의 개발에 이용할 수 있는 소프트웨어 자산을 포함한다. 예를 들면 라이브러리는 클래스, 펑션, 펑션 블록, 프로시저, 패키지 등의 임의의 형태로 유통할 수 있다. 또한, 라이브러리의 유통 형태로서는 소스 코드, 중간 표현, 오브젝트 형식, 실행 형식 등 어떤 형식이라도 좋다.
본 명세서에 있어서, 「애플리케이션」은 임의의 프로그램을 포함한다. 즉, 애플리케이션은 특정의 처리를 실행하기 위한 프로그램에 한정하지 않고, OS(Operating System)의 적어도 일부를 구성하는 프로그램을 포함할 수 있다. 또한, 애플리케이션의 형식은 소스 코드, 중간 표현, 오브젝트 형식, 실행 형식 등의 어느 것이라도 좋다.
도 2는 본 실시 형태에 따른 소프트웨어 이용 시스템(1)에 있어서의 처리 수순의 일례를 나타내는 시퀀스 도면이다. 도 2에 나타내는 각 스텝은 도 1에 대응지어 기재하고 있다.
도 1 및 도 2를 참조하여 우선, 라이브러리 개발자(10)가 임의의 라이브러리(50S)를 개발한다(스텝 S1). 라이브러리 개발자(10)는 개발한 라이브러리(50S)의 등록을 관리 서버(100)에 리퀘스트한다(스텝 S2). 등록 리퀘스트에 있어서는 라이브러리(50S)는 소스 코드의 형식으로 관리 서버(100)로 송신됨과 동시에 소유자 ID(52)가 부여된다. 소유자 ID(52)는 라이브러리를 개발한 라이브러리 개발자(10)를 특정하기 위한 식별 정보이며, 개발한 라이브러리가 이용된 경우의 이용료 등의 지불처를 특정하기 위해서 등으로도 사용된다.
관리 서버(100)는 라이브러리 개발자(10)로부터의 라이브러리(50S)를 검증함과 동시에 검증 결과에 문제가 없으면 라이브러리(50)를 소유자 ID(52)와 대응지어 등록한다(스텝 S3). 이와 같이 관리 서버(100)는 소유자 ID(52)가 대응지어진 라이브러리(50)를 데이터베이스(56)에 순차적으로 격납한다. 즉, 관리 서버(100)는 1 또는 복수의 라이브러리(50)를 격납하는 격납부로서 데이터베이스(56)를 갖고 있다. 또한, 라이브러리(50)는 소스 코드의 형식의 라이브러리(50S)를 그대로 등록되어도 좋고, 라이브러리(50S)로부터 생성되는 중간 표현이나 오브젝트 형식으로 등록되어도 좋다.
관리 서버(100)는 라이브러리 이용 관리 정보(80)를 갖고 있다. 데이터베이스(56)로의 라이브러리(50)의 등록에 따라, 관리 서버(100)는 라이브러리 이용 관리 정보(80)에 대응하는 엔트리를 추가한다. 라이브러리 이용 관리 정보(80)는 데이터베이스(56)에 등록된 라이브러리(50)의 이용을 관리하기 위한 정보를 포함한다.
라이브러리 개발자(10)가 라이브러리(50)를 개발 및 등록할 때마다, 이상과 같은 처리가 실행된다. 다음으로 1 또는 복수의 라이브러리(50)를 이용하여 애플리케이션을 개발하는 경우에 대해서 설명한다.
애플리케이션 개발자(20)는 애플리케이션의 개발에 필요한 1 또는 복수의 라이브러리를 선택하고, 필요한 라이브러리(50)를 관리 서버(100)로 리퀘스트한다(스텝 S4). 소프트웨어 개발 장치(200)로부터 관리 서버(100)로 송신되는 라이브러리 리퀘스트(60)는 머신 ID(62)를 포함한다. 머신 ID(62)는 라이브러리 리퀘스트(60)의 송신원의 소프트웨어 개발 장치(200)를 특정하기 위한 식별 정보이다. 이와 같이 소프트웨어 개발 장치(200)는 소프트웨어 개발 장치(200)를 특정하기 위한 식별 정보(머신 ID(62))를 포함하는 리퀘스트(라이브러리 리퀘스트(60))를 송신한다.
관리 서버(100)는 라이브러리 리퀘스트(60)에 응답하고, 리퀘스트된 라이브러리(50)의 패키지(70)를 생성한다. 보다 구체적으로는 관리 서버(100)는 대상의 라이브러리(50)에 대하여 이용 관리 정보(54)를 부가한다(스텝 S5). 이용 관리 정보(54)로서는 DRM(Digital Rights Management)에 따른 데이터 구조 및 관리 기술을 채용해도 좋다. 이용 관리 정보(54)는 머신 ID(62)를 포함한다. 예를 들면 이용 관리 정보(54)에 있어서, 대응하는 라이브러리의 이용 범위가 머신 ID(62)를 사용하여 규정된다.
계속해서, 관리 서버(100)는 이용 관리 정보(54)가 부가된 라이브러리(50)로 이루어지는 패키지(70)를 암호화한다(스텝 S6). 소프트웨어 개발 장치(200)는 비밀 키(250)와 공개 키(252)의 키 페어를 갖고 있다. 패키지(70)의 암호화에는 라이브러리 리퀘스트(60)를 송신한 소프트웨어 개발 장치(200)의 공개 키(252)가 이용된다.
이와 같이 관리 서버(100)는 소프트웨어 개발 장치(200)로부터의 리퀘스트(라이브러리 리퀘스트(60))에 응답하고, 리퀘스트된 라이브러리(50)에 이용 관리 정보(54)를 부가한 패키지(70)를 생성함과 동시에 생성한 패키지(70)를 소프트웨어 개발 장치(200)의 공개 키(252)로 암호화한 후에 소프트웨어 개발 장치(200)로 제공한다. 이때, 이용 관리 정보(54)는 소프트웨어 개발 장치(200)를 특정하기 위한 식별 정보(머신 ID(62))를 포함한다.
또한, 관리 서버(100)는 라이브러리(50)의 이용에 따른 과금 처리를 실행한다(스텝 S7). 보다 구체적으로는 관리 서버(100)는 라이브러리 이용 관리 정보(80)가 대응하는 엔트리에 과금 처리에 필요한 정보를 추가 혹은 갱신한다.
최종적으로 관리 서버(100)로부터 소프트웨어 개발 장치(200)에 대하여 암호화된 패키지(70)가 다운로드된다(스텝 S8).
소프트웨어 개발 장치(200)는 비밀 키(250)를 사용하여 암호화된 패키지(70)를 복호화한다(스텝 S9). 이에 따라, 소프트웨어 개발 장치(200)에 있어서 패키지(70)(라이브러리(50))가 이용 가능하게 된다.
애플리케이션 개발자(20)는 패키지(70)(라이브러리(50))를 이용하여 애플리케이션을 개발한다(스텝 S10). 소프트웨어 개발 장치(200)는 개발된 애플리케이션으로부터 실행 코드(90)를 생성한다(스텝 S11). 생성된 실행 코드(90)는 임의의 디바이스(300)로 제공된다.
이상과 같은 처리 수순에 의해, 임의의 디바이스(300)에서 실행되는 애플리케이션이 개발된다. 즉, 소프트웨어 개발 장치(200)는 암호화된 패키지(70)를 비밀 키(250)로 복호화한 후에 패키지(70)를 이용하여 애플리케이션을 개발하기 위한 환경을 제공한다.
또한, 관리 서버(100)는 라이브러리(50)의 이용에 따른 이용료를 라이브러리 개발자(10)에게 지불한다(스텝 S12). 이용료의 지불에 대해서는 임의의 방법을 채용할 수 있다. 이와 같이 관리 서버(100)는 라이브러리(50)의 소유자(라이브러리 개발자(10))에 대하여 라이브러리(50)의 이용에 따른 요금의 지불을 관리한다.
소프트웨어 이용 시스템(1)에 있어서, 다운로드된 라이브러리(50)에는 다운로드처의 소프트웨어 개발 장치(200)의 머신 ID(62)를 포함하는 이용 관리 정보(54)가 부가되기 때문에 다운로드처의 소프트웨어 개발 장치(200) 이외에 있어서 라이브러리(50)가 부정하게 이용될 가능성을 저감할 수 있다.
또한, 패키지(70)는 다운로드처의 소프트웨어 개발 장치(200)의 공개 키(252)를 사용하여 암호화되기 때문에 다운로드처의 소프트웨어 개발 장치(200) 이외에 있어서 라이브러리(50)가 부정하게 이용될 가능성을 저감할 수 있다.
<B. 하드웨어 구성예>
다음으로 본 실시 형태에 따른 소프트웨어 이용 시스템(1)을 구성하는 장치의 하드웨어 구성예에 대해서 설명한다.
(b1: 관리 서버(100))
관리 서버(100)는 전형적으로는 범용 컴퓨터에서 실현된다.
도 3은 본 실시 형태에 따른 소프트웨어 이용 시스템(1)을 구성하는 관리 서버(100)의 하드웨어 구성예를 나타내는 모식도이다. 도 3을 참조하여 관리 서버(100)는 주된 컴포넌트로서 1 또는 복수의 프로세서(102)와, 메인 메모리(104)와, 입력부(106)와, 디스플레이(108)와, 스토리지(110)와, 통신 인터페이스(120)를 포함한다. 이들의 컴포넌트는 내부 버스(122)를 통하여 접속되어 있다.
프로세서(102)는 예를 들면 CPU(Central Processing Unit)나 GPU(Graphics Processing Unit) 등으로 구성된다. 복수의 프로세서(102)가 배치되어도 좋고, 복수의 코어를 갖는 프로세서(102)를 채용해도 좋다.
메인 메모리(104)는 예를 들면 DRAM(Dynamic Random Access Memory)이나 SRAM(Static Random Access Memory) 등의 휘발성 기억 장치로 구성된다.
스토리지(110)는 예를 들면 하드디스크나 SSD(Solid State Drive) 등의 비휘발성 기억 장치로 구성된다.
스토리지(110)에 격납된 프로그램 중, 지정된 코드가 메인 메모리(104) 상에 전개되고, 프로세서(102)는 메인 메모리(104) 상에 전개된 프로그램 코드에 포함되는 컴퓨터 가독 명령(computer-readable instructions)을 순차적으로 실행함으로써 후술하는 바와 같은 각종 기능을 실현한다.
입력부(106)는 임의의 입력 조작을 받아들인다. 디스플레이(108)는 프로세서(102)에서의 처리 결과 등을 표시한다. 통신 인터페이스(120)는 임의의 외부 장치와의 사이에서 데이터를 주고 받는다.
스토리지(110)는 등록이 리퀘스트된 라이브러리(50)의 검증 및 등록의 처리를 실현하기 위한 검증 등록 엔진(112)과, 소프트웨어 개발 장치(200)에서의 라이브러리(50)의 이용에 따른 처리를 실현하기 위한 이용 관리 엔진(114)을 격납한다. 또한, 스토리지(110)는 라이브러리(50)가 등록된 데이터베이스(56)를 실현한다.
(b2: 소프트웨어 개발 장치(200))
소프트웨어 개발 장치(200)에 대해서도, 전형적으로는 범용 컴퓨터에서 실현된다.
도 4는 본 실시 형태에 따른 소프트웨어 이용 시스템(1)을 구성하는 소프트웨어 개발 장치(200)의 하드웨어 구성예를 나타내는 모식도이다. 도 4를 참조하여 소프트웨어 개발 장치(200)는 주된 컴포넌트로서 프로세서(202)와, 메인 메모리(204)와, 입력부(206)와, 디스플레이(208)와, 스토리지(210)와, 통신 인터페이스(220)를 포함한다. 이들의 컴포넌트는 내부 버스(222)를 통하여 접속되어 있다.
프로세서(202)는 예를 들면 CPU나 GPU 등으로 구성된다. 메인 메모리(204)는 DRAM이나 SRAM 등의 휘발성 기억 장치로 구성된다. 스토리지(210)는 예를 들면 하드디스크나 SSD 등의 비휘발성 기억 장치로 구성되고, 프로세서(202)에서 실행되는 각종 프로그램이나 각종 데이터를 유지한다.
스토리지(210)에 격납된 프로그램 중, 지정된 코드가 메인 메모리(204) 상에 전개되고, 프로세서(202)는 메인 메모리(204) 상에 전개된 프로그램 코드에 포함되는 컴퓨터 가독 명령을 순차적으로 실행함으로써 후술하는 바와 같은 각종 기능을 실현한다.
입력부(206)는 임의의 입력 조작을 받아들인다. 디스플레이(208)는 프로세서(202)에서의 처리 결과 등을 표시한다. 통신 인터페이스(220)는 임의의 외부 장치와의 사이에서 데이터를 주고 받는다.
스토리지(210)에는 통합 개발 환경을 실현하기 위한 소프트웨어 개발 프로그램(212)과, 유저가 임의로 작성하는 애플리케이션(214)이 격납된다. 또한, 스토리지(210)에는 관리 서버(100)로부터 다운로드한 패키지(70)와, 애플리케이션(214)으로부터 생성된 실행 코드(90)가 격납되어도 좋다.
소프트웨어 개발 장치(200)는 컴퓨터 가독 명령을 포함하는 소프트웨어 개발 프로그램(212)을 격납하는 비일과성(non-transitory)의 미디어로부터, 당해 격납하고 있는 프로그램 등을 읽어내기 위한 컴포넌트를 추가로 갖고 있어도 좋다. 미디어는 예를 들면 DVD(Digital Versatile Disc) 등의 광학 미디어, USB 메모리 등의 반도체 미디어 등이라도 좋다. 또한, 소프트웨어 개발 프로그램(212)은 미디어를 통하여 소프트웨어 개발 장치(200)에 인스톨될 뿐만 아니라 네트워크상의 배신 서버로부터 제공되도록 해도 좋다.
(b3: 그 외)
관리 서버(100) 및 소프트웨어 개발 장치(200)의 전부 또는 일부는 컴퓨터 가독 명령에 상당하는 회로가 탑재된 ASIC(Application Specific Integrated Circuit) 등의 하드 와이어드 회로를 사용하여 실현해도 좋다. 추가로 혹은 FPGA(Field-Programmable Gate Array)상에 컴퓨터 가독 명령에 상당하는 회로를 사용하여 실현해도 좋다. 또한, 프로세서 및 메인 메모리, ASIC, FPGA 등을 적절히 조합하여 실현해도 좋다.
또한, 라이브러리 개발자(10)가 사용하는 소프트웨어 개발 장치에 대해서도 범용 컴퓨터에서 실현할 수 있다.
<C. 관리 서버(100)의 기능 구성 및 처리>
다음으로 관리 서버(100)의 기능 구성 및 처리에 대해서 설명한다.
(c1: 라이브러리 이용 관리 정보)
도 5는 본 실시 형태에 따른 소프트웨어 이용 시스템(1)의 관리 서버(100)가 갖고 있는 라이브러리 이용 관리 정보(80)의 일례를 나타내는 모식도이다. 도 5를 참조하여 라이브러리 이용 관리 정보(80)는 등록 관리 정보(82)와, 이용 관리 정보(84)를 포함한다. 도 5에는 일례로서 키 밸류 스토어 형식으로 데이터를 관리하는 예를 나타내지만 어떤 데이터 관리 방법을 채용해도 좋다.
등록 관리 정보(82)는 데이터베이스(56)에 등록되는 라이브러리(50)를 관리하기 위한 정보를 포함한다. 이용 관리 정보(84)는 라이브러리(50)의 이용을 관리하기 위한 정보를 포함한다.
보다 구체적으로는 등록 관리 정보(82)는 엔트리마다, 라이브러리 ID(821)와, 라이브러리명(822)과, 소유자 ID(823)와, 검증 일시(824)와, 유효 기한(825)과, 부가 정보(826)를 포함한다.
라이브러리 ID(821)에는 대상의 라이브러리(50)를 특정하기 위한 식별 정보가 격납된다. 라이브러리명(822)에는 대상의 라이브러리(50)의 명칭이 격납된다. 소유자 ID(823)에는 대상의 라이브러리(50)의 소유자를 특정하기 위한 식별 정보가 격납된다. 검증 일시(824)에는 대상의 라이브러리(50)를 검증한 일시가 격납된다. 유효 기한(825)에는 대상의 라이브러리(50)의 이용 가능한 기한이 격납된다. 부가 정보(826)에는 대상의 라이브러리(50)에 관련된 임의의 정보가 격납된다.
관리 서버(100)는 새로운 라이브러리(50)의 등록이 리퀘스트되고, 검증 결과에 문제가 없으면 라이브러리(50)를 데이터베이스(56)에 격납함과 동시에 등록 관리 정보(82)에 새로운 엔트리를 추가한다.
이용 관리 정보(84)는 엔트리마다, 라이브러리 ID(841)와, 머신 ID(842)와, 라이센스(843)와, 유효 기한(844)을 포함한다.
라이브러리 ID(841)에는 대상의 라이브러리(50)를 특정하기 위한 식별 정보가 격납된다. 머신 ID(842)에는 대상의 라이브러리(50)를 이용하는 소프트웨어 개발 장치(200)를 특정하기 위한 식별 정보가 격납된다. 혹은 머신 ID(842)에는 대상의 라이브러리(50)를 이용하는 소프트웨어 개발 프로그램(212)을 특정하기 위한 식별 정보가 격납되어도 좋다. 라이센스(843)에는 대상의 라이브러리(50)의 이용 조건으로서 라이센스의 종별이 격납된다. 라이센스의 종별로서는 예를 들면 소프트웨어 개발 장치(200)에 있어서의 애플리케이션(214)의 개발 및 애플리케이션(214)으로부터 생성된 실행 코드(90)의 실행을 제한없이 행할 수 있는 라이센스, 소프트웨어 개발 장치(200)에 있어서의 애플리케이션(214)의 개발만 제한없이 행할 수 있는 라이센스, 애플리케이션(214)으로부터 생성된 실행 코드(90)를 행하기 위한 라이센스 등이 상정된다. 유효 기한(844)에는 대응하는 라이센스의 유효 기한이 격납된다.
관리 서버(100)는 라이브러리(50)의 이용이 리퀘스트되면 소정의 처리를 거쳐, 이용 관리 정보(84)에 새로운 엔트리를 추가한다.
관리 서버(100)는 애플리케이션 개발자(20) 등과의 계약에 의해 정해지는 라이센스의 종류 및 유효 기한을 관리하도록 해도 좋다. 혹은 관리 서버(100)와는 다른 주체가, 라이센스의 관리 기능을 갖고 있어도 좋다.
(c2: 라이브러리(50)의 검증)
관리 서버(100)에 의한 라이브러리(50)의 검증은 라이브러리(50)에 포함되는 취약성의 확인이나 라이브러리(50)에 포함되는 코드의 장황성의 확인 등을 포함한다. 라이브러리(50)의 검증에 대해서는 임의의 처리를 채용할 수 있다.
(c3: 이용 관리 정보(54))
도 6은 본 실시 형태에 따른 소프트웨어 이용 시스템(1)의 관리 서버(100)가 생성하는 패키지(70)에 포함되는 이용 관리 정보(54)의 일례를 나타내는 모식도이다. 도 6을 참조하여 이용 관리 정보(54)는 정보로서 라이브러리 ID(541)와, 라이브러리 해시값(542)과, 머신 ID(543)와, 공개 키(544)와, 라이센스(545)와, 유효 기한(546)과, 관리 서버 어드레스(547)를 포함한다.
라이브러리 ID(541)에는 대상의 라이브러리(50)를 특정하기 위한 식별 정보가 격납된다. 라이브러리 해시값(542)에는 대상의 라이브러리(50)의 데이터로부터 산출된 해시값이 격납된다. 머신 ID(543)에는 라이센스 대상의 소프트웨어 개발 장치(200)를 특정하기 위한 식별 정보가 격납된다. 공개 키(544)에는 라이센스 대상의 소프트웨어 개발 장치(200)의 공개 키(252)의 값이 격납된다. 라이센스(545)에는 대상의 라이브러리(50)의 이용에 따른 라이센스의 내용 혹은 종별이 격납된다. 유효 기한(546)에는 대상의 라이센스의 유효 기한이 격납된다. 관리 서버 어드레스(547)에는 관리 서버(100)의 IP 어드레스 등이 격납된다.
또한, 이용 관리 정보(54)에 포함되는 정보는 도 6에 나타나는 것에 한정되지 않고, 필요에 따라 임의의 정보를 포함시킬 수 있다.
도 6에 나타내는 바와 같은 이용 관리 정보(54)에 따라, 대상의 라이브러리(50) 및 라이브러리(50)를 포함하는 패키지(70)의 이용이 관리된다.
<D. 소프트웨어 개발 장치(200)의 기능 구성 및 처리>
다음으로 소프트웨어 개발 장치(200)의 기능 구성 및 처리에 대해서 설명한다.
도 7은 본 실시 형태에 따른 소프트웨어 이용 시스템(1)의 소프트웨어 개발 장치(200)의 기능 구성예를 나타내는 모식도이다.
도 7에 나타내는 각 모듈은 소프트웨어 개발 장치(200)의 프로세서(202)가 소프트웨어 개발 프로그램(212)을 실행함으로써 실현되어도 좋다.
소프트웨어 개발 장치(200)는 기능 구성으로서 패키지 격납부(230)와, 복호 모듈(232)과, 라이센스 관리 모듈(234)과, 에디터(236)와, 실행 코드 생성 모듈(238)을 포함한다.
패키지 격납부(230)는 소프트웨어 개발 장치(200)가 다운로드한 1 또는 복수의 패키지(70)를 격납한다. 복호 모듈(232)은 비밀 키(250)를 사용하여 암호화된 패키지(70)를 복호화한다. 라이센스 관리 모듈(234)은 라이브러리 이용 관리 정보(80)를 참조하여 관리 서버(100)와의 사이에서 라이센스의 유무 및 내용 등을 확인한다. 에디터(236)는 애플리케이션을 개발하기 위한 환경을 제공한다. 유저는 에디터(236)를 조작하여 애플리케이션의 소스 코드(240)를 작성한다.
실행 코드 생성 모듈(238)은 소스 코드(240)로부터 애플리케이션에 상당하는 실행 코드(90)를 생성한다. 실행 코드 생성 모듈(238)은 파서, 컴파일러, 링커 등을 포함한다. 실행 코드 생성 모듈(238)은 패키지(70)에 포함되는 라이브러리(50) 등을 참조하여 소스 코드(240)로부터 적절한 실행 코드(90)를 생성한다. 실행 코드 생성 모듈(238)은 실행 코드(90)를 생성함에 있어서, 라이센스 관리 모듈(234)로부터 라이센스의 정보를 취득하고, 취득한 라이센스의 정보에 따른 실행 코드(90)를 생성한다.
<E. 실행 코드>
다음으로 소프트웨어 개발 장치(200)가 생성하는 실행 코드(90)의 예에 대해서 설명한다.
도 8은 본 실시 형태에 따른 소프트웨어 이용 시스템(1)에 있어서 생성되는 실행 코드(90)의 일례를 나타내는 모식도이다.
도 8(A)에는 애플리케이션의 소스 코드(240)의 일부에 라이브러리(50)가 소스 코드의 형태로 탑재된 경우를 나타낸다. 라이브러리(50)를 포함하는 소스 코드(240)가 컴파일 등 됨으로써 실행 코드(90)가 생성된다.
도 8(B)에는 애플리케이션의 소스 코드(240)가 오브젝트 형식의 라이브러리(50)를 참조하는 경우를 나타낸다. 이 경우에는 애플리케이션의 소스 코드(240)로부터 실행 코드(90)를 생성할 때에 오브젝트 형식의 라이브러리(50)가 탑재된다. 또한, 실행 코드(90)에 오브젝트 형식의 라이브러리(50)를 직접 탑재하는 형태를 대신하여 실행 코드(90)에 오브젝트 형식의 라이브러리(50)를 간접적으로 참조하도록 해도 좋다.
이와 같이 라이브러리(50)의 배포 형식에 따른 방법으로 실행 코드(90)를 생성할 수 있다.
도 8에 나타내는 예에서는 소프트웨어 개발 장치(200)가 라이브러리(50)를 이용하여 생성한 애플리케이션(실행 코드(90))의 실행을 제한없이 행할 수 있는 라이센스를 상정한 것이다. 단, 애플리케이션(실행 코드(90))의 인스톨이나 실행시에 라이브러리(50)의 라이센스를 확인하도록 해도 좋다.
도 9는 본 실시 형태에 따른 소프트웨어 이용 시스템(1)에 있어서 생성되는 실행 코드(90)의 다른 일례를 나타내는 모식도이다. 도 9에는 디바이스(300)에서 실행 코드(90)가 실행될 때에 라이센스를 확인하는 예를 나타낸다.
도 9를 참조하여 실행 코드(90)는 오브젝트 형식의 라이브러리(50)와, 이용 관리 정보(54A)와, 라이센스 관리 모듈(92)을 포함한다. 소프트웨어 개발 장치(200)는 패키지(70)에 포함되는 이용 관리 정보(54)의 전부 또는 일부를 포함하는 이용 관리 정보(54A)를 생성하고, 실행 코드(90)에 탑재한다. 또한, 소프트웨어 개발 장치(200)는 라이센스를 확인하는 처리를 실현하기 위한 라이센스 관리 모듈(92)을 실행 코드(90)에 탑재한다.
이와 같이 소프트웨어 개발 장치(200)는 패키지(70)에 포함되는 라이브러리(50)를 이용한 실행 코드(90)에 패키지(70)에 포함되는 이용 관리 정보(54)의 적어도 일부를 포함시키도록 해도 좋다.
디바이스(300)에 있어서 실행 코드(90)가 실행되면 라이센스 관리 모듈(92)은 이용 관리 정보(54A)를 참조하여 필요한 라이센스를 확인한다. 예를 들면 라이센스 관리 모듈(92)은 이용 관리 정보(54A)에 포함되는 라이브러리 ID 및 머신 ID를 관리 서버(100)로 송신함으로써 라이브러리(50)의 이용에 필요한 라이센스가 존재하고 있는 것을 확인한다. 필요한 라이센스가 존재하고 있는 경우에 한하여 실행 코드(90)를 액티베이트하도록 해도 좋다. 혹은 라이센스 관리 모듈(92)은 라이센스를 나타내는 코드가 입력된 경우에 한하여 실행 코드(90)를 액티베이트하도록 해도 좋다.
이와 같이 도 9에 나타내는 예에서는 소프트웨어 개발 장치(200)가 라이센스 관리 모듈(92) 및 이용 관리 정보(54A)를 포함하는 실행 코드(90)를 생성함으로써 실행 코드(90)가 실행되는 빈도나 시간에 따라, 실행 코드(90)에 포함되는 라이브러리(50)의 이용을 보다 확실하게 파악할 수 있다.
도 10은 본 실시 형태에 따른 소프트웨어 이용 시스템(1)에 있어서 생성되는 실행 코드(90)의 추가로 다른 일례를 나타내는 모식도이다. 도 10에는 실행 코드(90)를 디바이스(300)에 인스톨할 때에 라이센스를 확인하는 예를 나타낸다.
도 10을 참조하여 생성 직후의 실행 코드(90)는 오브젝트 형식의 라이브러리(50)와, 이용 관리 정보(54A)를 포함한다. 소프트웨어 개발 장치(200)로부터 디바이스(300)로 실행 코드(90)를 인스톨함에 있어서, 소프트웨어 개발 장치(200)의 라이센스 관리 모듈(234)은 이용 관리 정보(54A)를 참조하여 필요한 라이센스를 확인한다.
예를 들면 라이센스 관리 모듈(234)은 이용 관리 정보(54A)에 포함되는 라이브러리 ID 및 머신 ID를 관리 서버(100)로 송신함으로써 라이브러리(50)의 이용에 필요한 라이센스가 존재하고 있는 것을 확인한다. 필요한 라이센스가 존재하고 있는 경우에 한하여 라이센스 관리 모듈(234)은 액티베이트 정보(94)를 실행 코드(90)에 탑재하도록 해도 좋다. 혹은 라이센스 관리 모듈(234)은 라이센스를 나타내는 코드가 입력된 경우에 한하여 액티베이트 정보(94)를 실행 코드(90)에 탑재하도록 해도 좋다.
실행 코드(90)는 유효한 액티베이트 정보(94)가 탑재되어 있는 경우에 한하여 디바이스(300) 등에 있어서 실행할 수 있다.
이와 같이 도 10에 나타내는 예에서는 소프트웨어 개발 장치(200)가 디바이스(300)에 실행 코드(90)를 인스톨할 때에 라이센스를 확인하기 때문에 실행 코드(90)에 포함되는 라이브러리(50)의 이용을 보다 확실하게 파악할 수 있다.
도 11은 본 실시 형태에 따른 소프트웨어 이용 시스템(1)에 있어서 생성되는 실행 코드(90)의 추가로 다른 일례를 나타내는 모식도이다. 도 11에는 실행 코드(90)가 실행될 때에 실행 환경을 확인하는 예를 나타낸다.
도 11을 참조하여 실행 코드(90)는 디바이스 등의 실행 환경(96)상에서 실행된다. 실행 환경(96)은 실행 코드(90)가 실행되는 디바이스의 하드웨어 리소스 및 소프트웨어 리소스를 포함한다. 실행 코드(90)의 실행이 지시되면 실행 코드(90)에 포함되는 라이센스 관리 모듈(92)은 실행 코드(90)를 실행하는 실행 환경(96)이 미리 정해진 요건에 적합하고 있는지 아닌지를 판단한다. 실행 환경(96)이 요건에 적합하지 않으면 라이센스 관리 모듈(92)은 실행 코드(90)의 실행을 중단한다.
미리 정해진 요건은 예를 들면 프로세서 능력, 메모리 가용 용량, 네트워크 인터페이스의 유무, 시큐리티 칩의 유무 등을 들 수 있다. 또한, 인증된 IP 어드레스를 사용하는 실행 환경(96)에 있어서는 미리 정해진 IP 어드레스인지 아닌지에 대해서도 판단하도록 해도 좋다. 이러한 요건은 이용 관리 정보(54A)에 포함되어 있어도 좋고, 라이센스 관리 모듈(92)의 내부에 코딩되어 있어도 좋다.
또한, 라이센스 관리 모듈(92)은 전술한 바와 같은 라이센스를 확인하는 처리도 실행하도록 해도 좋다.
전술한 바와 같이 실행 환경(96)이 미리 정해진 요건을 충족하고 있는지 아닌지를 라이센스 관리 모듈(92)이 판단함으로써 실행 코드(90)가 적절하게 실행되는 것을 보증할 수 있다.
도 12는 본 실시 형태에 따른 소프트웨어 이용 시스템(1)에 있어서 생성되는 실행 코드(90)의 추가로 다른 일례를 나타내는 모식도이다. 도 12에는 라이센스 관리 모듈(92)이 실행 환경(96)에 준비되어 있는 예를 나타낸다. 실행 환경(96)은 예를 들면 실행 코드(90)가 실행되는 디바이스의 펌웨어 등에 의해 제공되어도 좋다.
실행 환경(96)으로부터 실행 코드(90)의 실행을 지시하면 실행 환경(96)의 라이센스 관리 모듈(92)은 실행 코드(90)에 포함되는 이용 관리 정보(54A)를 참조하여 필요한 라이센스를 확인한다. 또한, 라이센스 관리 모듈(92)은 전술한 임의의 처리를 추가로 실행하도록 해도 좋다.
이와 같이 라이센스 관리 모듈(92)을 실행 환경(96)에 준비함으로써 실행 코드(90) 자체의 사이즈를 저감할 수 있어, 디바이스로의 탑재나 배포 등을 보다 용이화할 수 있다.
<F. 그 외의 실장 형태>
소프트웨어 개발 장치(200)는 비밀 키(250)와 공개 키(252)의 키 페어를 갖고 있지만 공개 키(252)를 인증된 IP 어드레스로서 사용하도록 해도 좋다. 소프트웨어 개발 장치(200)의 공개 키(252)를 IP 어드레스로서도 사용함으로써 패키지(70)의 라이센스를 부여한 소프트웨어 개발 장치(200)에 대하여 패키지(70)를 송신할 수 있다. 이에 따라, 패키지(70)의 송신처가 위장될 가능성을 저감할 수 있다.
<G. 이점>
본 실시 형태에 따른 소프트웨어 이용 시스템에 의하면 애플리케이션 개발자(20)는 라이브러리 개발자(10)가 개발한 임의의 라이브러리(50)를 이용하여 애플리케이션을 개발할 수 있다. 라이브러리(50)의 이용할 때에 있어서, 라이브러리(50)에는 이용처의 소프트웨어 개발 장치(200)에 따른 라이브러리 이용 관리 정보(80)가 포함되기 때문에 라이브러리(50)의 이용 실적이나 이용에 따른 이용료를 보다 확실하게 관리할 수 있다. 이러한 구조를 채용함으로써 라이브러리 개발자(10) 및 애플리케이션 개발자(20)의 양쪽에 메리트가 있어 라이브러리의 충실화 및 애플리케이션 개발의 효율화를 실현할 수 있다.
이번 개시된 실시 형태는 모든 점에서 예시이며 제한적인 것은 아니라고 생각되어야 한다. 본 발명의 범위는 상기한 설명이 아니라 청구 범위에 의해 나타나고, 청구 범위와 균등한 의미 및 범위 내에서의 모든 변경이 포함되는 것이 의도된다.
1 소프트웨어 이용 시스템 10 라이브러리 개발자
20 애플리케이션 개발자 50, 50S 라이브러리
52, 823 소유자 ID 54, 54A, 84 이용 관리 정보
56 데이터베이스 60 라이브러리 리퀘스트
62, 543, 842 머신 ID 70 패키지
80 라이브러리 이용 관리 정보 82 등록 관리 정보
90 실행 코드 92, 234 라이센스 관리 모듈
94 액티베이트 정보 100 관리 서버
102, 202 프로세서 104, 204 메인 메모리
106, 206 입력부 108, 208 디스플레이
110, 210 스토리지 112 검증 등록 엔진
114 이용 관리 엔진 120, 220 통신 인터페이스
122, 222 내부 버스 200 소프트웨어 개발 장치
212 소프트웨어 개발 프로그램 214 애플리케이션
230 패키지 격납부 232 복호 모듈
236 에디터 238 실행 코드 생성 모듈
240 소스 코드 250 비밀 키
252, 544 공개 키 300 디바이스
541, 821, 841 라이브러리 ID 542 라이브러리 해시값
545, 843 라이센스 546, 825, 844 유효 기한
547 관리 서버 어드레스 822 라이브러리명
824 검증 일시 826 부가 정보
20 애플리케이션 개발자 50, 50S 라이브러리
52, 823 소유자 ID 54, 54A, 84 이용 관리 정보
56 데이터베이스 60 라이브러리 리퀘스트
62, 543, 842 머신 ID 70 패키지
80 라이브러리 이용 관리 정보 82 등록 관리 정보
90 실행 코드 92, 234 라이센스 관리 모듈
94 액티베이트 정보 100 관리 서버
102, 202 프로세서 104, 204 메인 메모리
106, 206 입력부 108, 208 디스플레이
110, 210 스토리지 112 검증 등록 엔진
114 이용 관리 엔진 120, 220 통신 인터페이스
122, 222 내부 버스 200 소프트웨어 개발 장치
212 소프트웨어 개발 프로그램 214 애플리케이션
230 패키지 격납부 232 복호 모듈
236 에디터 238 실행 코드 생성 모듈
240 소스 코드 250 비밀 키
252, 544 공개 키 300 디바이스
541, 821, 841 라이브러리 ID 542 라이브러리 해시값
545, 843 라이센스 546, 825, 844 유효 기한
547 관리 서버 어드레스 822 라이브러리명
824 검증 일시 826 부가 정보
Claims (6)
1 또는 복수의 라이브러리를 격납하는 격납부와,
소프트웨어 개발 장치로부터의 리퀘스트에 응답하고, 리퀘스트된 라이브러리에 이용 관리 정보를 부가한 패키지를 생성함과 동시에 생성한 패키지를 상기 소프트웨어 개발 장치의 공개 키로 암호화한 후에 상기 소프트웨어 개발 장치로 제공하는 패키지 제공 수단을 구비하고,
상기 이용 관리 정보는 상기 소프트웨어 개발 장치를 특정하기 위한 식별 정보를 포함하고,
상기 소프트웨어 개발 장치는 상기 암호화된 패키지를 비밀 키로 복호화한 후에 당해 패키지를 이용하여 애플리케이션을 개발하기 위한 환경을 제공하는 것을 특징으로 하는 소프트웨어 이용 시스템.
소프트웨어 개발 장치로부터의 리퀘스트에 응답하고, 리퀘스트된 라이브러리에 이용 관리 정보를 부가한 패키지를 생성함과 동시에 생성한 패키지를 상기 소프트웨어 개발 장치의 공개 키로 암호화한 후에 상기 소프트웨어 개발 장치로 제공하는 패키지 제공 수단을 구비하고,
상기 이용 관리 정보는 상기 소프트웨어 개발 장치를 특정하기 위한 식별 정보를 포함하고,
상기 소프트웨어 개발 장치는 상기 암호화된 패키지를 비밀 키로 복호화한 후에 당해 패키지를 이용하여 애플리케이션을 개발하기 위한 환경을 제공하는 것을 특징으로 하는 소프트웨어 이용 시스템.
제1항에 있어서,
상기 이용 관리 정보는 라이브러리의 이용 조건 및 유효 기한의 정보를 포함하는 것을 특징으로 하는 소프트웨어 이용 시스템.
상기 이용 관리 정보는 라이브러리의 이용 조건 및 유효 기한의 정보를 포함하는 것을 특징으로 하는 소프트웨어 이용 시스템.
제1항 또는 제2항에 있어서,
상기 소프트웨어 개발 장치는 상기 패키지에 포함되는 라이브러리를 이용한 실행 코드에 당해 패키지에 포함되는 이용 관리 정보의 적어도 일부를 포함시키는 것을 특징으로 하는 소프트웨어 이용 시스템.
상기 소프트웨어 개발 장치는 상기 패키지에 포함되는 라이브러리를 이용한 실행 코드에 당해 패키지에 포함되는 이용 관리 정보의 적어도 일부를 포함시키는 것을 특징으로 하는 소프트웨어 이용 시스템.
제1항 내지 제3항 중 어느 한 항에 있어서,
상기 소프트웨어 개발 장치는 당해 소프트웨어 개발 장치를 특정하기 위한 식별 정보를 포함하는 리퀘스트를 송신하는 것을 특징으로 하는 소프트웨어 이용 시스템.
상기 소프트웨어 개발 장치는 당해 소프트웨어 개발 장치를 특정하기 위한 식별 정보를 포함하는 리퀘스트를 송신하는 것을 특징으로 하는 소프트웨어 이용 시스템.
제1항 내지 제4항 중 어느 한 항에 있어서,
상기 라이브러리의 소유자에 대하여 당해 라이브러리의 이용에 따른 요금의 지불을 관리하는 관리 수단을 추가로 구비하는 것을 특징으로 하는 소프트웨어 이용 시스템.
상기 라이브러리의 소유자에 대하여 당해 라이브러리의 이용에 따른 요금의 지불을 관리하는 관리 수단을 추가로 구비하는 것을 특징으로 하는 소프트웨어 이용 시스템.
1 또는 복수의 라이브러리를 격납하는 스텝과,
소프트웨어 개발 장치로부터의 리퀘스트에 응답하고, 리퀘스트된 라이브러리에 이용 관리 정보를 부가한 패키지를 생성함과 동시에 생성한 패키지를 상기 소프트웨어 개발 장치의 공개 키로 암호화한 후에 상기 소프트웨어 개발 장치로 제공하는 스텝을 구비하고,
상기 이용 관리 정보는 상기 소프트웨어 개발 장치를 특정하기 위한 식별 정보를 포함하고,
상기 소프트웨어 개발 장치에 있어서, 상기 암호화된 패키지를 비밀 키로 복호화한 후에 당해 패키지를 이용하여 애플리케이션을 개발하기 위한 환경을 제공하는 스텝을 구비하는 것을 특징으로 하는 소프트웨어 이용 방법.
소프트웨어 개발 장치로부터의 리퀘스트에 응답하고, 리퀘스트된 라이브러리에 이용 관리 정보를 부가한 패키지를 생성함과 동시에 생성한 패키지를 상기 소프트웨어 개발 장치의 공개 키로 암호화한 후에 상기 소프트웨어 개발 장치로 제공하는 스텝을 구비하고,
상기 이용 관리 정보는 상기 소프트웨어 개발 장치를 특정하기 위한 식별 정보를 포함하고,
상기 소프트웨어 개발 장치에 있어서, 상기 암호화된 패키지를 비밀 키로 복호화한 후에 당해 패키지를 이용하여 애플리케이션을 개발하기 위한 환경을 제공하는 스텝을 구비하는 것을 특징으로 하는 소프트웨어 이용 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP-P-2021-105471 | 2021-06-25 | ||
JP2021105471A JP2023004017A (ja) | 2021-06-25 | 2021-06-25 | ソフトウェア利用システムおよびソフトウェア利用方法 |
PCT/JP2022/025352 WO2022270626A1 (ja) | 2021-06-25 | 2022-06-24 | ソフトウェア利用システムおよびソフトウェア利用方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20240010048A true KR20240010048A (ko) | 2024-01-23 |
Family
ID=84545492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020237044227A KR20240010048A (ko) | 2021-06-25 | 2022-06-24 | 소프트웨어 이용 시스템 및 소프트웨어 이용 방법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20240311102A1 (ko) |
EP (1) | EP4361795A1 (ko) |
JP (1) | JP2023004017A (ko) |
KR (1) | KR20240010048A (ko) |
TW (1) | TW202305583A (ko) |
WO (1) | WO2022270626A1 (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004206586A (ja) | 2002-12-26 | 2004-07-22 | Toshiba Corp | ソフトウェア部品流通支援方法、その方法を実現するためのソフトウェア部品流通支援システムおよびプログラム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5343527A (en) * | 1993-10-27 | 1994-08-30 | International Business Machines Corporation | Hybrid encryption method and system for protecting reusable software components |
JP2008146479A (ja) * | 2006-12-12 | 2008-06-26 | Toshiba Corp | ソフトウェア部品、ソフトウェア部品管理方法、及びソフトウェア部品管理システム |
-
2021
- 2021-06-25 JP JP2021105471A patent/JP2023004017A/ja active Pending
-
2022
- 2022-06-24 EP EP22828542.5A patent/EP4361795A1/en active Pending
- 2022-06-24 KR KR1020237044227A patent/KR20240010048A/ko unknown
- 2022-06-24 WO PCT/JP2022/025352 patent/WO2022270626A1/ja active Application Filing
- 2022-06-24 US US18/573,424 patent/US20240311102A1/en active Pending
- 2022-06-24 TW TW111123731A patent/TW202305583A/zh unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004206586A (ja) | 2002-12-26 | 2004-07-22 | Toshiba Corp | ソフトウェア部品流通支援方法、その方法を実現するためのソフトウェア部品流通支援システムおよびプログラム |
Also Published As
Publication number | Publication date |
---|---|
TW202305583A (zh) | 2023-02-01 |
EP4361795A1 (en) | 2024-05-01 |
US20240311102A1 (en) | 2024-09-19 |
WO2022270626A1 (ja) | 2022-12-29 |
JP2023004017A (ja) | 2023-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6815385B2 (ja) | アプリケーションのコード難読化のためのシステムおよび方法 | |
CN102760219B (zh) | 一种Android平台软件保护系统、方法及设备 | |
US7890428B2 (en) | Flexible licensing architecture for licensing digital application | |
JP4981136B2 (ja) | アドオンデータファイルへのアクセスを管理する方法及びシステム | |
CN111143869B (zh) | 应用程序包处理方法、装置、电子设备及存储介质 | |
US20170116410A1 (en) | Software protection | |
US20160364707A1 (en) | Potentate: A Cryptography-Obfuscating, Self-Policing, Pervasive Distribution System For Digital Content | |
CN111832013A (zh) | 固件升级方法及装置 | |
US20190114401A1 (en) | On device structure layout randomization for binary code to enhance security through increased entropy | |
CN106295255B (zh) | 应用程序的加固方法和装置 | |
CN104854561A (zh) | 用于应用程序管理框架的应用程序封装 | |
CN102034058B (zh) | 应用软件安全控制方法及终端 | |
CN111656345B (zh) | 启用容器文件中加密的软件模块 | |
JP6935617B2 (ja) | 中間言語ファイルのロード速度改善のための方法およびシステム | |
KR101740133B1 (ko) | 어플리케이션의 코드를 보호하기 위한 시스템 및 방법 | |
Cilardo et al. | Secure distribution infrastructure for hardware digital contents | |
CN116249980A (zh) | 通过异构加密的软件访问 | |
CN111611551A (zh) | 一种基于国密算法的动态链接库保护方法及其系统 | |
CN113220314B (zh) | App资源加载及apk生成方法、装置、设备及介质 | |
US20240311102A1 (en) | Software use system and software use method | |
CN106648770B (zh) | 一种应用程序安装包的生成方法、加载方法及装置 | |
CN115238249A (zh) | 应用程序代码混淆方法、装置、设备和介质 | |
KR101085365B1 (ko) | 디지털적으로 서명된 콘텐츠에서 보조 정보를 임베딩 및 인증하기 위한 컴퓨터-구현된 방법 및 시스템 | |
US11977760B1 (en) | Secure data and instruction loading | |
US20240211609A1 (en) | Method and system of protecting model, device, and storage medium |