KR20100046034A - 플래쉬 저장 장치를 사용한 소프트웨어 불법 사용 방지 - Google Patents

플래쉬 저장 장치를 사용한 소프트웨어 불법 사용 방지 Download PDF

Info

Publication number
KR20100046034A
KR20100046034A KR1020107004113A KR20107004113A KR20100046034A KR 20100046034 A KR20100046034 A KR 20100046034A KR 1020107004113 A KR1020107004113 A KR 1020107004113A KR 20107004113 A KR20107004113 A KR 20107004113A KR 20100046034 A KR20100046034 A KR 20100046034A
Authority
KR
South Korea
Prior art keywords
sectors
flash storage
identifier
storage device
software application
Prior art date
Application number
KR1020107004113A
Other languages
English (en)
Other versions
KR101514100B1 (ko
Inventor
보리스 아시포브
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20100046034A publication Critical patent/KR20100046034A/ko
Application granted granted Critical
Publication of KR101514100B1 publication Critical patent/KR101514100B1/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
    • 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]
    • 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/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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
    • 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/107License processing; Key processing
    • G06F21/1077Recurrent authorisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

플래쉬 저장 장치 및 이 플래쉬 저장 장치를 사용하여 소프트웨어 애플리케이션의 불법 사용을 방지하는 방법이 제공된다. 식별자가 플래쉬 저장 장치의 특정 섹터들 내에 인코딩되어 있을 수 있다. 식별자의 1 비트들이 특정 섹터들 중 사용가능하지 않은 섹터로서 인코딩될 수 있고, 식별자의 0 비트들이 특정 섹터들 중 사용가능한 섹터로서 인코딩될 수 있다. 다른 대안으로서, 식별자의 0 비트들이 특정 섹터들 중 사용가능하지 않은 섹터로서 인코딩될 수 있고, 식별자의 1 비트들이 특정 섹터들 중 사용가능한 섹터로서 인코딩될 수 있다. 식별자가 플래쉬 저장 장치 내에 인코딩되어 있을 때에만 소프트웨어 애플리케이션이 플래쉬 저장 장치에 연결된 처리 장치 상에서 실행되도록 허용될 수 있다.

Description

플래쉬 저장 장치를 사용한 소프트웨어 불법 사용 방지{USING FLASH STORAGE DEVICE TO PREVENT UNAUTHORIZED USE OF SOFTWARE}
처리 장치 상에서의 소프트웨어의 불법 사용(unauthorized use)을 방지하는 종래의 한 방법에서는, 예를 들어, USB(Universal Serial Bus) 동글(dongle) 또는 메모리 키 등의 특수 장치가 처리 장치에 연결되어야만 한다. 그 특수 장치가 처리 장치에 연결되어 있을 때에만 소프트웨어가 처리 장치 상에서 실행되도록 허용될 수 있다.
통상적으로, 이러한 특수 장치는 단지 몇개의 벤더들에 의해서만 제조되고, 비교적 단가가 높으며, 소프트웨어와 함께 배포되어야만 한다. 게다가, 이러한 특수 장치를 사용하여 소프트웨어의 불법 사용을 방지하는 것은 전자적으로 배포되는 소프트웨어와 관련하여 문제점이 있다.
<발명의 개요>
이 요약은 이하에서 상세한 설명에 더 기술되는 일련의 개념들을 간략화된 형태로 소개하기 위해 제공된 것이다. 이 요약은 청구된 발명 대상의 중요한 특징들 또는 필수적인 특징들을 확인하기 위한 것이 아니며, 청구된 발명 대상의 범위를 제한하는 데 사용되기 위한 것도 아니다.
본 개시 내용의 발명 대상에 따른 실시예들에서, 소프트웨어의 불법 사용을 방지하는 플래쉬 저장 장치 및 플래쉬 저장 장치를 사용하여 소프트웨어의 불법 사용을 방지하는 방법이 제공된다. 플래쉬 저장 장치가 연결되어 있는 처리 장치 상에서 소프트웨어를 실행하려고 할 때, 처리 장치는 식별자를 포함하고 있을 수 있는 라이센스 정보에 액세스할 수 있다. 이어서, 식별자가 플래쉬 저장 장치에 인코딩되어 있는지 여부를 판정하기 위해 플래쉬 저장 장치의 특정 섹터들이 액세스될 수 있다. 식별자의 1 비트들이 특정 섹터들 중 사용가능하지 않은 섹터로서 인코딩될 수 있고, 식별자의 0 비트들이 특정 섹터들 중 사용가능한 섹터로서 인코딩될 수 있다. 다른 대안으로서, 식별자의 0 비트들이 특정 섹터들 중 사용가능하지 않은 섹터로서 인코딩될 수 있고, 식별자의 1 비트들이 특정 섹터들 중 사용가능한 섹터로서 인코딩될 수 있다. 식별자가 플래쉬 저장 장치 내에 인코딩되어 있는 것으로 판정될 때에만, 처리 장치가 전체 기능을 갖는 소프트웨어를 실행하도록 허용될 수 있다. 그렇지 않은 경우, 처리 장치가 소프트웨어를 실행하도록 허용될 수 없거나, 제한된 기능을 갖는 소프트웨어를 실행할 수 있다.
어떤 실시예들에서, 본 개시 내용의 발명 대상에 따르면, 예를 들어, 적법한 소프트웨어의 미리 정해진 사용 횟수 또는 소프트웨어의 만료 일자는 물론 기타 라이센스 조건 등의 라이센스 조건(license terms)을 넘어서지 않았는지를 판정하기 위해, 플래쉬 저장 장치 내에 카운터가 인코딩되어 있을 수 있다.
상기한 이점들 및 특징들과 기타 이점들 및 특징들이 달성될 수 있는 방식을 설명하기 위해, 보다 상세한 설명이 첨부 도면에 도시되어 있는 본 발명의 구체적인 실시예들을 참조하여 이하에서 기술될 것이다. 이들 도면이 통상적인 실시예들만을 도시하고 있고 따라서 본 발명의 범위를 제한하는 것으로 간주되어서는 안된다는 것을 염두에 두고서, 첨부 도면을 사용하여 보다 구체적이고 상세하게 구현들에 대해 기술하고 설명할 것이다.
도 1은 본 개시 내용의 발명 대상에 따른 실시예들에 대한 예시적인 운영 환경을 나타낸 도면.
도 2는 도 1에 도시된 서버 또는 처리 장치를 구현하는 데 사용될 수 있는 처리 장치의 기능 블록도.
도 3 및 도 4는 본 개시 내용의 발명 대상에 따른 플래쉬 저장 장치에 포함될 수 있는 정보를 나타낸 도면.
도 5 내지 도 14는 본 개시 내용의 발명 대상에 따른 실시예들에서 수행될 수 있는 예시적인 프로세스를 나타낸 플로우차트.
실시예들에 대해 이하에서 상세히 설명한다. 특정의 구현들에 대해 기술되어 있지만, 이것이 단지 예시를 위한 것이라는 것을 잘 알 것이다. 당업자라면 본 개시 내용의 발명 대상의 사상 및 범위를 벗어나지 않고 다른 구성요소들 및 구성들이 사용될 수 있다는 것을 잘 알 것이다.
개요
플래쉬 저장 장치는 용이하게 복제될 수 있으며 임베디드 프로세서(embedded processor) 또는 보호 메모리(protected memory)를 갖지 않는다. 그렇지만, 플래쉬 저장 장치는, 예를 들어, 16 킬로비트, 2 킬로비트, 또는 다른 크기 등의 특정 크기의 메모리 블록, 또는 섹터를 포함한다. 각각의 섹터가 사용가능하지 않게 되기 전에, 각각의 섹터는 제한된 수의 가능한 기입 사이클을 갖는다. 통상적으로, 각각의 섹터가 사용가능하지 않게 되기 전에, 각각의 섹터는 대략 1백만번까지 기입될 수 있다. 어떤 플래쉬 저장 장치는, 각각의 섹터가 사용가능하지 않게 되기 전에, 다른 제한된 수의 가능한 기입 사이클(100,000번 기입 또는 다른 값 등)을 가질 수 있다.
본 개시 내용의 발명 대상에 따른 실시예들은, 플래쉬 저장 장치의 특정의 섹터들에 기입을 하여 특정의 섹터들을 사용가능하지 않게 만드는 것에 의해, 플래쉬 저장 장치에 정보를 인코딩할 수 있다. 사용가능하지 않은 섹터들을 통해 1 비트를 표현하고 사용가능한 섹터들을 통해 0 비트를 표현하는 것에 의해 정보가 인코딩될 수 있다. 어떤 실시예들에서, 사용가능하지 않은 섹터들을 통해 0 비트를 표현하고 사용가능한 섹터들을 통해 1 비트를 표현하는 것에 의해 정보가 인코딩될 수 있다. 이와 같이 인코딩된 데이터는 플래쉬 저장 장치를 단순히 복사하는 것에 의해 복제될 수 없다.
본 개시 내용의 발명 대상에 따른 다양한 실시예들에서, 플래쉬 저장 장치에 연결된 처리 장치는 식별자를 포함하고 있을 수 있는 라이센스 정보에 액세스할 수 있다. 처리 장치는 식별자가 플래쉬 저장 장치에 인코딩되어 있는지를 판정하기 위해 플래쉬 저장 장치의 특정의 섹터에 액세스할 수 있다. 식별자가 플래쉬 저장 장치 내에 인코딩되어 있지 않은 경우, 처리 장치는 소프트웨어 애플리케이션을 실행할 수 없거나, 제한된 기능만을 갖는 소프트웨어 애플리케이션을 실행할 수 있다.
게다가, 라이센스 정보는 라이센스의 하나 이상의 조건에 대한 정보를 포함하고 있을 수 있다. 예를 들어, 이 정보는 만료 일자, 라이센스 조건(예를 들어, 1년, 6개월, 또는 기타 기간), 또는 미리 정해진 적법한 사용 횟수를 포함할 수 있으며, 이를 넘어서면 소프트웨어 애플리케이션이 실행되도록 허용될 수 없거나 제한된 기능만으로 실행될 수 있다. 이하에서 더 상세히 설명할 것인 바와 같이, 라이센스의 하나 이상의 조건을 넘어서 소프트웨어 애플리케이션을 불법 실행하는 것이 방지될 수 있도록, 경과된 기간들과 관련한 현재 상태 또는 소프트웨어 애플리케이션의 사용 횟수가 식별자와 동일한 방식으로 플래쉬 저장 장치 내에 인코딩될 수 있다.
어떤 실시예들에서, 소프트웨어 애플리케이션의 활성화를 수행하는 동안 식별자가 플래쉬 저장 장치 내에 인코딩될 수 있다.
예시적인 운영 환경
도 1은 본 개시 내용의 발명 대상에 따른 실시예들에 대한 예시적인 운영 환경(100)을 나타낸 것이다. 운영 환경(100)은 처리 장치(102), 플래쉬 저장 장치(104), 하나 이상의 서버(106), 및 네트워크(108)를 포함할 수 있다.
네트워크(108)는 하나의 네트워크 또는, 예를 들어, 인터넷 또는 기타 네트워크와 같은 네트워크들의 조합일 수 있다. 네트워크(108)는 무선 네트워크, 유선 네트워크, 패킷-교환 네트워크, 공중 교환 전기통신 네트워크(public switched telecommunications network), 광섬유 네트워크, 기타 유형의 네트워크, 또는 이들의 임의의 조합을 포함할 수 있다.
처리 장치(102)는, 예를 들어, 데스크톱 퍼스널 컴퓨터(PC), 랩톱 PC, 핸드헬드 처리 장치, 또는 기타 처리 장치와 같은 사용자의 처리 장치일 수 있다.
플래쉬 저장 장치(104)는, 예를 들어, 처리 장치(102)에 분리가능하게 연결될 수 있는 USB(universal serial bus) 플래쉬 RAM 장치, 또는 기타 플래쉬 저장 장치와 같은 재기입가능한 이동식 플래쉬 저장 장치(rewritable removable flash storage device)일 수 있다. 플래쉬 저장 장치(104)가 USB 플래쉬 RAM 장치인 실시예들에서, USB 플래쉬 RAM 장치는 처리 장치(102)의 USB 포트를 통해 처리 장치(102)에 분리가능하게 연결될 수 있다.
서버(106)는 하나의 처리 장치 또는 함께 동작하도록 구성되어 있는 일군의 처리 장치들일 수 있다. 서버(106)가 일군의 처리 장치들을 포함하고 있는 실시예들에서, 처리 장치들은 서버 팜(server farm)으로서 구성될 수 있다.
예시적인 처리 장치
도 2는 본 개시 내용의 발명 대상에 따른 처리 장치(102) 및/또는 서버(106)의 실시예들을 구현하는 데 사용될 수 있는 예시적인 처리 장치(200)를 나타낸 기능 블록도이다.
처리 장치(200)는 버스(210), 입력 장치(220), 메모리(230), 판독 전용 메모리(ROM)(240), 출력 장치(250), 프로세서(260), 플래쉬 장치 포트(270), 및 통신 인터페이스(280)를 포함하고 있을 수 있다. 버스(210)는 처리 장치(200)의 구성요소들 간의 통신을 가능하게 해줄 수 있다.
프로세서(260)는 명령어들을 해석하고 실행하는 적어도 하나의 종래의 프로세서 또는 마이크로프로세서를 포함할 수 있다. 메모리(230)는 프로세서(260)에 의해 실행하기 위한 명령어들 및 정보를 저장하는 랜덤 액세스 메모리(RAM) 또는 다른 유형의 동적 저장 장치일 수 있다. 메모리(230)는 또한 프로세서(260)에 의해 명령어들을 실행하는 동안에 사용되는 임시 변수 또는 기타 중간 정보를 저장할 수 있다. ROM(240)은 프로세서(260)에 대한 정적 정보 및 명령어들을 저장하는 종래의 ROM 장치 또는 다른 유형의 정적 저장 장치를 포함할 수 있다. 플래쉬 장치 포트(270)는 플래쉬 저장 장치(104)를 처리 장치(200)에 연결시키는 수단을 제공할 수 있다. 플래쉬 저장 장치(104)는, 예를 들어, 프로세서(260) 등의 프로세서에 대한 데이터 및/또는 명령어들을 저장할 수 있다.
입력 장치(220)는 키보드 또는 기타 입력 장치를 포함할 수 있다. 출력 장치(250)는 하나 이상의 디스플레이 화면 또는 기타 출력 장치를 비롯한, 정보를 출력하는 하나 이상의 종래의 메카니즘을 포함할 수 있다.
통신 인터페이스(280)는 네트워크(108)로 정보를 전송하고 네트워크(108)로부터 정보를 수신하는 송수신기를 포함할 수 있다. 통신 인터페이스(280)는 무선 또는 유선 연결을 통해 정보를 전송하고 수신할 수 있다.
처리 장치(200)는 프로세서(260)가 유형의(tangible) 머신-판독가능 매체[예를 들어, 메모리(230), ROM(240), 플래쉬 저장 장치(104), 또는 기타 매체 등]에 들어 있는 명령어 시퀀스들을 실행한 것에 응답하여 이러한 기능들을 수행할 수 있다. 다른 머신-판독가능 매체로부터 또는 통신 인터페이스(280)를 통해 별도의 장치로부터 메모리(230) 내로 이러한 명령어들을 읽어올 수 있다.
플래쉬 저장 장치
플래쉬 저장 장치(104)는 다수의 블록 또는 섹터를 포함하고 있을 수 있다. 각각의 섹터는 미리 정해진 수의 비트를 포함하고 있을 수 있다. 예를 들어, 각각의 섹터는 16 킬로비트, 2 킬로비트, 또는 다른 수의 비트를 포함하고 있을 수 있다. 통상적으로, 플래쉬 저장 장치(104)는 처음에 다수의 사용가능하지 않은 섹터를 포함하고 있을 수 있다. 도 3은 플래쉬 저장 장치(104)의 일 실시예에 포함되어 있을 수 있는 섹터들에 대한 정보는 물론 기타 정보를 나타낸 것이다. 플래쉬 저장 장치(104)는 불량 섹터들의 섹터 어레이(302), 라이센스 정보(304), 및 인코딩된 정보에 대한 섹터 어레이(306)를 포함하고 있을 수 있다.
불량 섹터들의 섹터 어레이(302)는 플래쉬 저장 장치(104)에 포함되어 있는 불량 섹터들의 물리 주소에 대한 정보를 포함하고 있을 수 있다.
라이센스 정보(304)는 소프트웨어 애플리케이션을 사용하기 위한 라이센스에 대한 정보를 포함하고 있을 수 있다. 라이센스 정보(304)는, 예를 들어, 소프트웨어 애플리케이션을 비롯한 제품을 식별해주는 제품 식별자 및 라이센스 조건을 포함하고 있을 수 있다. 라이센스 조건은 소프트웨어 애플리케이션의 실행이 허용되는 조건을 포함하고 있을 수 있다. 예를 들어, 라이센스 조건은 소프트웨어 애플리케이션의 미리 정해진 허용된 실행 횟수, 소프트웨어 애플리케이션의 실행이 허용되는 기한 또는 기간(예를 들어, 1년, 6개월, 또는 다른 기간), 그 이후에 소프트웨어 애플리케이션의 실행이 허용되지 않는 만료 일자, 또는 기타 조건을 포함할 수 있다. 어떤 실시예들에서, 라이센스 정보(304)는 플래쉬 저장 장치(104)에 인코딩될 식별자를 포함하고 있을 수 있다. 라이센스 정보(304)는 또한 신뢰된 소스(예를 들어, 소프트웨어 벤더, 소프트웨어 배포자, 또는 기타 신뢰된 소스 등)의 비밀키를 사용하여 라이센스 정보(304)에 대해 계산되는 디지털 서명을 포함하고 있을 수 있다.
앞서 언급한 바와 같이, 라이센스 정보(304)에 포함되어 있는 식별자 또는 다른 식별자와 같은 식별자는 물론 기타 정보가 플래쉬 저장 장치(104)의 특정 섹터들 내에 인코딩되어 있을 수 있다. 특정 섹터들 중 사용가능하지 않은 섹터들을 통해 1 비트를 표현하고 특정 섹터들 중 사용가능한 섹터들을 통해 0 비트를 표현하는 것에 의해 식별자 및 기타 정보가 인코딩되어 있을 수 있다. 어떤 실시예들에서, 섹터들 중 사용가능하지 않은 섹터들을 통해 0 비트를 표현하고 섹터들 중 사용가능한 섹터들을 통해 1 비트를 표현하는 것에 의해 식별자 및 기타 정보가 인코딩되어 있을 수 있다.
도 4는 본 개시 내용의 발명 대상에 따른 플래쉬 저장 장치(104)의 일 실시예에서 인코딩된 정보의 섹터 어레이(306)를 보다 상세히 나타낸 것이다. 플래쉬 저장 장치(104)는 식별자에 대한 섹터 어레이(402), 식별자와 관련한 디지털 서명에 대한 섹터 어레이(404), 카운터에서 사용하기 위한 섹터 어레이(406), 및 기간 카운터에 대한 섹터 어레이(408)를 포함하고 있을 수 있다.
식별자에 대한 섹터 어레이(402)는 식별자[예를 들어, 라이센스 정보(304)로부터의 식별자 또는 다른 식별자 등]가 인코딩되어 있을 수 있는 특정 섹터들에 관련한 정보를 포함하고 있을 수 있다. 식별자의 디지털 서명에 대한 섹터 어레이(404)는 식별자에 대해 계산된 디지털 서명이 인코딩되어 있을 수 있는 특정 섹터들에 대한 정보를 포함하고 있을 수 있다. 디지털 서명은 비밀키(예를 들어, 신뢰된 소스의 비밀키 등)를 사용하여 식별자에 대해 계산될 수 있다. 카운터에서 사용하기 위한 섹터 어레이(406) 및 기간 카운터에 대한 섹터 어레이(408)는, 라이센스 조건과 관련한 현재 상태가 추적될 수 있도록, 카운터를 인코딩하기 위한 특정 섹터들에 대한 정보를 포함하고 있을 수 있다. 도 5 내지 도 10의 플로우차트를 참조하여 이하에서 이들 카운터의 예시적인 용도에 대해 설명한다.
예시적인 처리
도 5 및 도 6은, 예를 들어, 플래쉬 저장 장치[예를 들어, 처리 장치(102)와 연결되어 있는 플래쉬 저장 장치(104) 등]를 갖는 처리 장치(102)와 같은 처리 장치 상에서 소프트웨어 애플리케이션을 실행하려고 시도할 때, 본 개시 내용의 발명 대상에 따른 실시예들에서 수행될 수 있는 예시적인 프로세스의 플로우차트를 나타낸 것이다.
이 프로세스는 처리 장치가 라이센스 정보에 액세스하는 것(동작 502)으로 시작할 수 있다. 라이센스 정보는, 예를 들어, 메모리, ROM, 또는 기타 컴포넌트 등의 처리 장치의 컴포넌트 상에 저장될 수 있다. 다른 대안으로서, 라이센스 정보[예를 들어, 라이센스 정보(304) 등]는 플래쉬 저장 장치에 저장될 수 있다. 라이센스 정보는 소프트웨어 애플리케이션을 비롯한 제품을 식별해주는 데이터, 식별자(예를 들어, 제품을 사용하기 위한 라이센스와 연관된 식별자), 라이센스 조건[예를 들어, 미리 정해진 소프트웨어 애플리케이션의 사용 횟수, 소프트웨어 애플리케이션이 사용될 수 있는 기간(예를 들어, 1년, 6개월, 또는 기타 기간), 또는 그 이후에 소프트웨어 애플리케이션이 사용될 수 없는 만료 일자], 또는 기타 조건을 포함하고 있을 수 있다. 어떤 실시예들에서, 라이센스 정보는 또한, 예를 들어, 신뢰된 소스(예를 들어, 소프트웨어 배포자, 소프트웨어 개발자, 또는 기타 신뢰된 소스 등)의 비밀키와 같은 비밀키에 의해 서명된 디지털 서명을 포함하고 있을 수 있다.
그 다음에, 처리 장치는 라이센스 정보의 유효성을 확인할 수 있다(동작 504). 어떤 실시예들에서, 처리 장치는 신뢰된 소스의 비밀키에 대응하는 공개키를 사용하여 라이센스 정보의 유효성을 확인할 수 있다. 이어서, 처리 장치는, 라이센스 정보의 유효성을 확인하는 동작의 결과로 나타나는 바와 같이, 라이센스 정보가 유효한지 여부를 판정할 수 있다(동작 506). 라이센스 정보가 유효하지 않은 것으로 판정되는 경우, 처리 장치는 소프트웨어 애플리케이션의 기능을 제한하거나 디스에이블시킬 수 있다(동작 508). 예를 들어, 처리 장치가 소프트웨어 애플리케이션을 실행하도록 허용될 수 없거나, 처리 장치가 제한된 기능을 갖는 소프트웨어 애플리케이션을 실행할 수 있다. 일 실시예에서, 소프트웨어 애플리케이션의 기능이 제한되어 있을 때, 처리 장치는 소프트웨어 애플리케이션의 표준 버전을 실행할 수 있고, 소프트웨어 애플리케이션의 기능이 제한되거나 디스에이블되어 있지 않을 때, 처리 장치는 소프트웨어 애플리케이션의 강화된(enhanced) 또는 프로페셔널(professional) 버전을 실행할 수 있다.
동작(506) 동안에, 처리 장치가 라이센스 정보가 유효한 것으로 판정하는 경우, 처리 장치는 라이센스 정보 또는 다른 소스로부터 식별자를 획득할 수 있다(동작 510). 어떤 실시예들에서, 식별자는 고유의 식별자일 수 있다. 이어서, 처리 장치는 식별자 및 식별자와 관련한 디지털 서명이 플래쉬 저장 장치 내에 인코딩되어 있는지 여부를 판정할 수 있다(동작 512). 처리 장치는 식별자에 대한 섹터 어레이[예를 들어, 식별자에 대한 섹터 어레이(402)(도 4) 등] 및 식별자의 디지털 서명에 대한 섹터 어레이[예를 들어, 식별자의 디지털 서명에 대한 섹터 어레이(404)(도 4) 등]를 참조함으로써 이 판정을 수행할 수 있다.
대안의 실시예에서, 식별자의 디지털 서명이 인코딩되지 않을 수 있고, 그 대신에 플래쉬 저장 장치의 저장 공간에 저장될 수 있다.
처리 장치가 식별자가 플래쉬 저장 장치 내에 인코딩되어 있지 않거나 식별자의 유효한 디지털 서명이 플래쉬 저장 장치에 인코딩되어 있거나 저장되어 있지 않은 것으로 판정하는 경우, 처리 장치는 앞서 기술한 바와 같이 소프트웨어 애플리케이션의 기능을 제한하거나 디스에이블시킬 수 있다(동작 508). 그렇지 않은 경우, 처리 장치는 소프트웨어 애플리케이션의 사용 횟수가 카운트되는지 여부를 판정할 수 있다(동작 514).
라이센스 조건이 미리 정해진 소프트웨어 애플리케이션의 사용 횟수만 허용될 수 있는 것으로 나타낼 때, 소프트웨어 애플리케이션의 사용 횟수가 카운트될 수 있다. 일 실시예에서, 사용 횟수가 카운트되어야 하는 경우, 하나의 섹터가 카운터로서 사용될 수 있고, 이 하나의 섹터에 대한 여러 번의 기입이 수행될 수 있다. 기입 횟수는 대략적으로 수학식 1과 같이 계산될 수 있다.
Figure pct00001
여기서, max_writes는 섹터를 사용가능하지 않게 만들 것으로 예상되는 기입 사이클 횟수이고, counting_number는 카운터의 최대값(예를 들어, 10까지 카운트하는 경우, 10 등)이다. 섹터가 정확한 기입 횟수 후에 사용가능하지 않게 되지 않을 수 있기 때문에, 섹터가 사용가능하지 않게 되도록 더 잘 보장하기 위해 여유(margin)가 포함될 수 있다. 따라서, 예를 들어, 섹터가 100,000번 기입(max_writes) 후에 사용가능하지 않게 될 것으로 예상되고, 카운터가 10(counting_number)까지 카운트하기 위해 사용되며, 여유가 30%인 경우, number_of_writes는
Figure pct00002
, 즉 13,000일 수 있다. 따라서, 이 일례에서, 카운터는 하나의 섹터에 13,000회 기입하는 것에 의해 증분될 수 있다. counting_number까지 카운트한 후에, 섹터가 사용가능하지 않게 되어야만 한다.
다른 실시예에서, 카운트하는 데 일군의 섹터들이 사용될 수 있다. 예를 들어, 10까지 카운트할 때, 일군의 10개 섹터가 카운터로서 사용될 수 있다. 카운트할 때 각각의 섹터가 사용가능하지 않게 될 수 있다. 일군의 10개 섹터가 사용가능하지 않게 될 때, 이것은 카운터가 10까지 카운트했음을 나타낸다.
동작(514) 동안에, 처리 장치가 소프트웨어 애플리케이션의 사용 횟수가 카운트되어야 하는 것으로 판정하는 경우, 처리 장치는 허용된 사용이 남아 있는지 여부를 판정할 수 있다(동작 602)(도 6). 소프트웨어 애플리케이션의 허용된 사용이 남아 있지 않은 경우, 동작(508)과 관련하여 앞서 기술한 바와 같이, 처리 장치는 소프트웨어 애플리케이션의 기능을 제한하거나 디스에이블시킬 수 있다(동작 604). 그렇지 않은 경우, 처리 장치는 사용 횟수를 카운트할 수 있다(동작 606). 앞서 기술한 바와 같이, 처리 장치는 각각의 섹터를 사용가능하지 않게 만들기 위해 각각의 섹터에 기입을 하는 것에 의해 또는 하나의 섹터가 미리 정해진 사용 횟수를 카운트한 후에 사용가능하지 않게 되도록 하나의 섹터에 여러 번의 기입을 수행하는 것에 의해 사용 횟수를 카운트할 수 있다.
도 7은 동작(606)을 수행하는 예시적인 프로세스(606-1)를 나타낸 플로우차트이다. 이 프로세스는 처리 장치가 사용 횟수를 카운트하기 위해 어느 섹터를 사용할지를 결정하는 것(동작 702)으로 시작할 수 있다. 일 실시예에서, 처리 장치는 사용 카운터들을 위해 예비된 섹터들 및 그 다음 사용 카운터를 위한 섹터에 대한 포인터와 관련한 정보를 포함하고 있을 수 있는 카운터에서 사용하기 위한 섹터 어레이(406)(도 4)에 액세스할 수 있다. 따라서, 예를 들어, 섹터 1 내지 섹터 20이 사용 카운터들을 위해 사용되고 섹터 1 내지 섹터 6이 카운팅을 위해 이미 사용되어 사용가능하지 않게 된 경우에, 포인터는 카운트하기 위해 사용할 섹터 7을 가리킬 수 있다.
카운팅 용도로 사용할 섹터를 결정한 후에, 처리 장치는 섹터를 사용가능하지 않게 만들기 위해 섹터에 여러 번의 기입을 수행할 수 있다(동작 704). 이어서, 처리 장치는 그 다음 사용 카운터를 위한 섹터에 대한 포인터와 관련한 정보를 업데이트할 수 있다(동작 706). 섹터 1 내지 섹터 20이 사용 카운터들을 위해 사용될 수 있는 상기 일례와 관련하여, 카운트하기 위해 섹터 7을 사용한 후에, 섹터 8이 그 다음에 카운팅이 수행될 때 사용가능하지 않게 될 수 있도록, 포인터는 섹터 8을 가리키도록 설정될 수 있다.
도 8은 동작(606)을 수행하는 제2의 예시적인 프로세스(606-2)를 나타낸 플로우차트이다. 이 예시적인 프로세스는 하나의 섹터를 카운터로서 사용하고, 앞서 기술한 수학식 1에 따라 카운팅을 수행한다. 이 프로세스는 처리 장치가 카운트하기 위해 사용할 섹터를 결정하는 것(동작 802)으로 시작할 수 있다. 일 실시예에서, 처리 장치는 사용 카운터로서 사용되기 위해 예비된 섹터와 관련한 정보를 포함하고 있을 수 있는 카운터에서 사용하기 위한 섹터 어레이(406)(도 4)에 액세스할 수 있다. 처리 장치는 또한 섹터에 대해 수행할 기입 횟수와 관련한 정보를 획득할 수 있다. 이 정보는 카운터에서 사용하기 위한 섹터 어레이(406)에 포함되어 있을 수 있거나 다른 곳에 저장되어 있을 수 있다. 이어서, 처리 장치는, 미리 정해진 사용 횟수가 카운트된 후에 섹터가 사용가능하지 않게 되도록, 섹터에 여러 번의 기입을 수행할 수 있다(동작 804).
도 6으로 돌아가서, 동작(606)을 수행한 후에, 또는 소프트웨어 애플리케이션의 사용 횟수가 카운트되지 않는 것으로 판정한 후에(동작 514), 처리 장치는 기간들이 카운트되어야 하는지를 판정할 수 있다(동작 608). 일 실시예에서, 처리 장치는 기간 카운터로서 사용될 플래쉬 저장 장치의 섹터들과 관련한 정보를 포함하고 있을 수 있는 기간 카운터에 대한 섹터 어레이(408)(도 4)에 액세스하는 것에 의해 이 판정을 수행할 수 있다. 통상적으로, 기간 카운터는 다수의 기간(예를 들어, 1일, 1주일, 1개월, 1년, 또는 기타 기간)을 카운트할 수 있다. 따라서, 예를 들어, 소프트웨어 애플리케이션이 특정의 기간(예를 들어, 18개월 등) 동안 사용될 수 있는 경우, 기간 카운터가 개월의 수를 카운트하는 데 사용될 수 있다. 처리 장치가 기간 카운터가 사용되지 않는 것으로 판정하는 경우, 처리 장치는 전체 기능을 갖는 소프트웨어 애플리케이션을 실행할 수 있다(동작 614).
동작(608) 동안에, 처리 장치가 기간 카운터가 사용되는 것으로 판정하는 경우, 처리 장치는 라이센스 정보와 관련한 최대 수의 기간(예를 들어, 18개월 라이센스 조건의 경우, 18개월 등)이 카운트되었는지 여부를 판정할 수 있다(동작 610). 남은 기간이 없는 경우(예를 들어, 18개월 라이센스 조건과 관련하여 18개월이 경과한 경우), 앞서 기술한 바와 같이, 처리 장치는 소프트웨어 애플리케이션의 기능을 제한하거나 디스에이블시킬 수 있다(동작 604). 그렇지 않은 경우, 기간이 카운트될 수 있고(동작 612), 처리 장치는 전체 기능을 갖는 소프트웨어 애플리케이션을 실행할 수 있다.
일 실시예에서, 각각의 섹터를 사용가능하지 않게 만들기 위해 각각의 섹터에 기입을 하는 것에 의해 기간들이 카운트될 수 있다. 예를 들어, 18개 기간을 카운트하기 위해, 18개 섹터가 사용가능하지 않을 때까지 18개 섹터에 기입이 행해질 수 있다. 다른 실시예들에서, 수학식 1과 관련하여 상기한 바와 같이, 미리 정해진 수의 기간(예를 들어, 18개 기간 또는 어떤 다른 수의 기간 등)이 경과한 후에 하나의 섹터가 사용가능하지 않게 될 수 있도록, 하나의 섹터에 기입이 행해질 수 있다.
도 9는 본 개시 내용의 발명 대상에 따른 일 실시예에서 동작(612)을 수행하는 예시적인 프로세스(612-1)를 나타낸 플로우차트이다. 이 프로세스는 처리 장치가 기간이 경과하였는지 여부를 판정하는 것(동작 902)으로 시작할 수 있다. 기간은 1일, 1주일, 1개월, 1년 또는 다른 기간일 수 있다. 처리 장치는 시스템 클럭을 참조하여 시스템 클럭의 현재 값을 기간의 시작에서의 시스템 클럭의 값과 비교하는 것에 의해 이 판정을 수행할 수 있다.
처리 장치가 기간이 경과한 것으로 판정하는 경우, 처리 장치는 기간을 카운트하기 위해 사용할 섹터를 결정할 수 있다(동작 904). 일 실시예에서, 처리 장치는 기간 카운터들을 위해 예비된 섹터들 및 그 다음 기간 카운터를 위한 섹터에 대한 포인터와 관련한 정보를 포함하고 있을 수 있는 기간 카운터에 대한 섹터 어레이(408)(도 4)에 액세스할 수 있다. 따라서, 예를 들어, 섹터 1 내지 섹터 24가 기간 카운터들을 위해 사용되고 섹터 1 내지 섹터 10이 카운팅을 위해 이미 사용되어 사용가능하지 않게 된 경우에, 포인터는 기간 카운팅을 위해 사용할 섹터 11을 가리킬 수 있다.
기간 카운팅을 위해 사용할 섹터를 결정한 후에, 처리 장치는 섹터를 사용가능하지 않게 만들기 위해 섹터에 여러 번의 기입을 수행할 수 있다(동작 906). 이어서, 처리 장치는 그 다음 기간 카운터를 위한 섹터에 대한 포인터와 관련한 정보를 업데이트할 수 있다(동작 908). 섹터 1 내지 섹터 24가 기간 카운터로서 사용될 수 있는 상기 일례와 관련하여, 기간 카운팅을 위해 섹터 10을 사용한 후에, 섹터 11이 그 다음에 기간 카운팅이 수행될 때 사용가능하지 않게 될 수 있도록, 포인터는 섹터 11을 가리키도록 설정될 수 있다.
도 10은 동작(612)을 수행하는 제2의 예시적인 프로세스(612-2)를 나타낸 플로우차트이다. 이 예시적인 프로세스는 하나의 섹터를 기간 카운터로서 사용하고, 앞서 기술한 수학식 1에 따라 카운팅을 수행할 수 있다. 이 프로세스는 처리 장치가 기간이 경과하였는지 여부를 판정하는 것(동작 1002)으로 시작할 수 있다. 처리 장치가 기간이 경과한 것으로 판정하는 경우, 처리 장치는 기간 카운팅을 위해 사용할 섹터를 결정할 수 있다(동작 1004). 일 실시예에서, 처리 장치는 기간 카운터로서 사용되기 위해 예비된 섹터와 관련한 정보를 포함하고 있을 수 있는 기간 카운터에 대한 섹터 어레이(408)(도 4)에 액세스할 수 있다. 처리 장치는 또한 섹터에 대해 수행할 기입 횟수와 관련한 정보를 획득할 수 있다. 이 정보는 기간 카운터에 대한 섹터 어레이(408)에 포함되어 있을 수 있거나 다른 곳에 저장되어 있을 수 있다. 이어서, 처리 장치는, 미리 정해진 수의 기간이 카운트된 후에 섹터가 사용가능하지 않게 되도록, 섹터에 여러 번의 기입을 수행할 수 있다(동작 1006).
도 6으로 돌아가서, 처리 장치는 이어서 전체 기능을 갖는 소프트웨어 애플리케이션을 실행할 수 있다(동작 614).
어떤 실시예들에서, 소프트웨어 애플리케이션을 처리 장치 상에 설치한 후에, 처리 장치는 소프트웨어 애플리케이션의 실행을 허가 또는 허용하기 위한 플래쉬 저장 장치 없이도 미리 정해진 횟수까지 소프트웨어 애플리케이션을 실행할 수 있다. 따라서, 예를 들어, 사용자는 전자적으로 소프트웨어 애플리케이션을 처리 장치로 다운로드할 수 있고, 소프트웨어 애플리케이션을 처리 장치 상에 설치할 수 있으며, 플래쉬 저장 장치 없이도 소프트웨어 애플리케이션을 미리 정해진 횟수까지 실행할 수 있다.
도 11은 이러한 실시예들에서 수행될 수 있는 예시적인 프로세스를 나타낸 것이다. 이 프로세스는 처리 장치가 소프트웨어 애플리케이션의 현재의 사용 횟수가 소프트웨어 애플리케이션의 미리 정해진 적법한 사용 횟수보다 작은지 여부를 판정하는 것(동작 1102)으로 시작할 수 있다. 미리 정해진 적법한 사용 횟수는 처리 장치 상에 저장되어 있을 수 있는 라이센스 정보에 액세스하는 것으로부터 획득될 수 있다.
소프트웨어 애플리케이션의 현재의 사용 횟수가 미리 정해진 적법한 사용 횟수보다 작지 않은 경우, 소프트웨어 애플리케이션의 기능이 디스에이블되거나 제한될 수 있다(동작 1104). 예를 들어, 처리 장치가 소프트웨어 애플리케이션을 전혀 실행할 수 없거나, 처리 장치가 제한된 기능만을 갖는 소프트웨어 애플리케이션을 실행할 수 있다.
동작(1102) 동안에, 처리 장치가 현재의 사용 횟수가 미리 정해진 적법한 사용 횟수보다 작은 것으로 판정하는 경우, 처리 장치는 현재의 사용 횟수의 카운트를 증분시킬 수 있고(동작 1106), 소프트웨어 애플리케이션이 전체 기능으로 실행될 수 있게 허용할 수 있다(동작 1108).
도 12 및 도 13은 본 개시 내용의 발명 대상에 따른 다른 실시예들에서 수행될 수 있는 예시적인 프로세스를 나타낸 플로우차트이다. 이 실시예에서, 식별자가 플래쉬 저장 장치의 섹터들 내에 부분적으로 인코딩되어 있을 수 있다. 예를 들어, 섹터에 대한 허용된 기입 사이클의 최대 횟수가 섹터를 사용가능하지 않게 만드는 경우, 허용된 기입 사이클의 최대 횟수 - W 동안 특정 섹터들에 기입을 함으로써 식별자의 "1" 비트들이 플래쉬 저장 장치의 특정 섹터들에 부분적으로 인코딩될 수 있고, 여기서 W는 허용된 기입 사이클의 최대 횟수의 퍼센트(예를 들어, 50% 등) 또는 다른 값과 대략 같은 정수(integer)이다. 따라서, 특정 섹터들 전부가 사용가능 상태에 있을 수 있고, 따라서 인코딩된 식별자가 은폐될 수 있다. 인코딩된 식별자를 읽기 위해, 특정 섹터들에 대해 다수의 기입 사이클이 수행될 수 있다. 예를 들어, 식별자의 "1" 비트들을 표현하는 특정 섹터들을 사용가능하지 않게 만들기 위해 특정 섹터들에 대해 W개의 기입 사이클이 수행될 수 있다. 대안의 실시예에서, 식별자의 "0" 비트들이 플래쉬 저장 장치의 특정 섹터들 내에 부분적으로 인코딩되어 있을 수 있다.
식별자는 다수의 부분들을 가질 수 있다. 각각의 부분은 기간에 대응할 수 있다. 처음에, 식별자의 모든 부분들이 은폐될 수 있다(즉, 식별자의 부분들을 표현하는 섹터들 모두가 사용가능하게 되어 있을 수 있다). 식별자의 한 부분이 현재 시간에 대응하는 식별자의 그 부분을 표현하는 데 사용되는 대응하는 특정 섹터들에 대해 기입 사이클들을 수행함으로써 노출(unveil)될 수 있다. 그 다음 기간에 도달될 때, 식별자의 그 다음 부분이 식별자의 그 다음 부분을 표현하는 데 사용되는 대응하는 특정 섹터들에 대해 기입 사이클들을 수행함으로써 노출될 수 있다. 장래의 기간에 대응하는 식별자의 부분이 노출되는 경우(해커에 의한 공격 가능성이 있음을 나타냄), 식별자가 유효하지 않은 것으로 간주될 수 있다.
도 12의 플로우차트와 관련하여, 이 프로세스는 처리 장치[예를 들어, 처리 장치(102) 등]가 라이센스 정보에 액세스하는 것(동작 1202)으로 시작할 수 있다. 라이센스 정보는, 예를 들어, 메모리, ROM, 또는 기타 컴포넌트 등의 처리 장치의 컴포넌트 상에 저장될 수 있다. 다른 대안으로서, 라이센스 정보[예를 들어, 라이센스 정보(304) 등]는 플래쉬 저장 장치에 저장될 수 있다. 라이센스 정보는 소프트웨어 애플리케이션을 비롯한 제품을 식별해주는 데이터, 식별자(예를 들어, 제품을 사용하기 위한 라이센스와 연관된 식별자), 및 라이센스가 유효인 기간을 포함하고 있을 수 있다. 식별자는 다수의 부분들을 포함하고 있을 수 있으며, 각각의 부분이 라이센스가 유효인 총 기간을 이루고 있는 각각의 기간에 대한 것이다. 어떤 실시예들에서, 라이센스 정보는 또한, 예를 들어, 신뢰된 소스(예를 들어, 소프트웨어 배포자, 소프트웨어 개발자, 또는 기타 신뢰된 소스 등)의 비밀키와 같은 비밀키에 의해 서명된 디지털 서명을 포함하고 있을 수 있다.
그 다음에, 처리 장치는 라이센스 정보의 유효성을 확인할 수 있다(동작 1204). 어떤 실시예들에서, 처리 장치는 신뢰된 소스의 비밀키에 대응하는 공개키를 사용하여 라이센스 정보의 유효성을 확인할 수 있다. 이어서, 처리 장치는, 라이센스 정보의 유효성을 확인하는 동작의 결과로 나타나는 바와 같이, 라이센스 정보가 유효한지 여부를 판정할 수 있다(동작 1206). 라이센스 정보가 유효하지 않은 것으로 판정되는 경우, 처리 장치는 소프트웨어 애플리케이션의 기능을 제한하거나 디스에이블시킬 수 있다(동작 1208). 예를 들어, 처리 장치가 소프트웨어 애플리케이션을 실행할 수 없거나, 처리 장치가 제한된 기능을 갖는 소프트웨어 애플리케이션을 실행할 수 있다. 일 실시예에서, 소프트웨어 애플리케이션의 기능이 제한되어 있을 때, 처리 장치는 소프트웨어 애플리케이션의 표준 버전을 실행할 수 있고, 소프트웨어 애플리케이션의 기능이 제한되거나 디스에이블되어 있지 않을 때, 처리 장치는 소프트웨어 애플리케이션의 강화된(enhanced) 또는 프로페셔널(professional) 버전을 실행할 수 있다.
동작(1206) 동안에, 처리 장치가 라이센스 정보가 유효한 것으로 판정하는 경우, 처리 장치는 라이센스 정보 또는 다른 소스로부터 식별자를 획득할 수 있다(동작 1210). 어떤 실시예들에서, 식별자는 고유의 식별자일 수 있다. 이어서, 처리 장치는 식별자가 플래쉬 저장 장치 내에 인코딩되어 있는지 여부를 판정할 수 있다(동작 1212). 처리 장치는 식별자에 대한 섹터 어레이[예를 들어, 식별자에 대한 섹터 어레이(402)(도 4) 등]를 참조함으로써 이 판정을 수행할 수 있다.
도 13은 일 실시예에서 동작(1212)과 관련한 예시적인 처리를 나타낸 것이다. 먼저, 처리 장치는 새로운 기간이 시작하는지 여부를 판정할 수 있다(동작 1302). 새로운 기간이 시작하는 경우, 처리 장치는 식별자의 부분들이 더 있는지 여부를 판정할 수 있다(동작 1304). 식별자의 부분들이 더 이상 없는 경우, 처리 장치는 식별자가 인코딩되어 있지 않다는 것을 나타낼 수 있다(동작 1316). 이것은 소프트웨어 애플리케이션의 실행이 허가되어 있는 기간을 넘어 소프트웨어 애플리케이션을 실행하려고 시도된다는 것을 나타낼 수 있다. 그렇지 않은 경우, 처리 장치는 그 다음 기간에 대응하는 식별자의 그 다음 부분에 대한 특정 섹터들을 판정할 수 있다(동작 1306). 식별자의 그 다음 부분에 대한 특정 섹터들은, 예를 들어, 어떤 실시예들에서 식별자에 대한 섹터 어레이(402)와 같은 섹터 어레이를 참조함으로써 판정될 수 있다. 이어서, 처리 장치는 식별자의 그 다음 부분(여기에서, 현재 부분)의 "1" 비트들 또는 식별자의 그 다음 부분의 "0" 비트들을 표현하는 특정 섹터들에 대해 다수의 기입 사이클을 수행할 수 있다(동작 1308). 기입 사이클의 횟수는 허용된 기입 사이클의 최대 횟수보다 작을 수 있지만, 허용된 기입 사이클의 최대 수 - W(단, W는 정수값임)보다 클 수 있다. 동작(1308)을 수행한 후에, 특정 섹터들 중 사용가능하지 않은 섹터들에 의해 식별자의 그 다음 부분이 노출될 수 있다.
동작(1302) 동안에, 처리 장치가 새로운 기간이 시작하지 않는 것으로 판정하는 경우, 또는 동작(1308) 동안에 특정 섹터들에 대한 다수의 기입 사이클이 수행된 경우, 처리 장치는 식별자의 현재 부분이 사용가능하지 않은 섹터들에 의해 인코딩되어 있는지 여부를 판정할 수 있다(동작 1310). 처리 장치가 식별자의 현재 부분이 인코딩되어 있지 않은 것으로 판정하는 경우, 처리 장치는 식별자가 인코딩되어 있지 않다는 것을 나타낼 수 있다(동작 1316). 그렇지 않은 경우, 처리 장치는 장래의 기간들에 대한 식별자의 임의의 부분들이 인코딩되어 있는지 여부를 판정할 수 있다(동작 1312). 장래의 기간들 동안에 사용하기 위한 식별자의 부분들 중 임의의 부분이 인코딩되어 있는 경우, 장래의 기간들에 대응하는 식별자의 인코딩된 부분들은 해커에 의한 공격을 나타낼 수 있다. 따라서, 장래의 기간들 중 임의의 기간에 대응하는 식별자의 부분들 중 임의의 부분이 인코딩되어 있는 경우, 처리 장치는 식별자가 인코딩되어 있지 않다는 것을 나타낼 수 있고(동작 1316), 이는 불법 사용을 나타낸다. 장래의 기간들에 대응하는 식별자의 모든 부분들이 인코딩되어 있지 않은 경우, 처리 장치는 적법한 사용을 나타내기 위해 식별자가 인코딩되어 있다는 것을 나타낼 수 있다(동작 1314).
도 12로 돌아가서, 동작(1212) 동안에, 처리 장치가 식별자의 현재 부분이 플래쉬 저장 장치 내에 인코딩되어 있는 것으로 판정하는 경우, 처리 장치는 소프트웨어 애플리케이션이 전체 기능으로 실행되도록 허용할 수 있다(동작 1214). 그렇지 않은 경우, 처리 장치는 소프트웨어 애플리케이션의 기능을 제한하거나 디스에이블시킬 수 있다(동작 1208).
도 12 및 도 13과 관련하여 기술된 실시예의 일례로서, 식별자가 36개 부분을 갖고 각각 부분이 16 비트이며, 따라서 총 길이가 576 비트인 것으로 가정한다. 식별자의 각각의 부분은 1개월의 애플리케이션 사용에 대응할 수 있다. 그 결과, 애플리케이션은 36개월 동안 사용하도록 허가되어 있을 수 있다. 게다가, 백만번의 기입 사이클이 플래쉬 저장 장치의 섹터를 사용가능하지 않게 만드는 것으로 가정한다. 애플리케이션이 처음으로 기동되어 활성화될 때, 동작(1310)과 관련하여 기술한 바와 같이, 애플리케이션은 식별자의 처음 16-비트 부분의 "1" 비트들 또는 "0" 비트들에 대응하는 특정 섹터들에 대해 다수의 기입을 수행함으로써 식별자의 처음 16-비트 부분을 노출시킬 수 있다. 애플리케이션은 식별자의 처음 16-비트 부분이 라이센스 정보에 포함되어 있는 식별자의 대응하는 16-비트 부분과 일치하는지를 검증할 수 있다. 애플리케이션이 다수의 장래의 개월들 중 하나의 개월에 대응하는 16-비트 부분이 노출된 것으로 판정하는 경우, 애플리케이션이 디스에이블될 수 있거나 제한된 기능으로 실행될 수 있다. 1개월 후에, 애플리케이션은 식별자의 그 다음 16-비트 부분을 노출시킬 수 있고, 식별자의 그 다음 16-비트 부분이 라이센스 정보에 포함되어 있는 식별자의 대응하는 16-비트 부분과 일치하는지를 검증할 수 있다.
본 개시 내용의 발명 대상에 따른 어떤 실시예들에서, 플래쉬 저장 장치는, 앞서 기술한 바와 같이, 사용자의 처리 장치[예를 들어, 처리 장치(102) 등]를 통해 소프트웨어 애플리케이션에서 사용하도록 인코딩될 수 있다. 도 14는 이러한 실시예들에서 수행될 수 있는 예시적인 프로세스를 나타낸 것이다. 이 프로세스는 소프트웨어 애플리케이션의 실행을 활성화 또는 인에이블시키는 활성화 프로세스의 일부일 수 있다.
이 프로세스는 처리 장치가 제품 정보를 제2 처리 장치[예를 들어, 서버(106) 등]로 전송하는 것(동작 1402)으로 시작할 수 있다. 제품 정보는 소프트웨어 애플리케이션을 비롯한 제품을 식별해주는 정보를 포함하고 있을 수 있다. 처리 장치는 제품 정보를 전송한 것에 응답하여 제2 처리 장치로부터, 라이센스 정보 및 식별자 정보를 수신할 수 있다(동작 1404). 어떤 실시예들에서, 라이센스 정보는 식별자 및 라이센스의 하나 이상의 조건에 대한 정보를 포함하고 있을 수 있다. 라이센스 정보는 또한 신뢰된 소스의 비밀키를 사용하여 디지털적으로 서명될 수 있다. 어떤 실시예들에서, 식별자는 신뢰된 소스의 비밀키를 사용하는 별도의 디지털 서명을 가질 수 있다.
그 다음에, 처리 장치는 라이센스 정보 및 식별자 정보의 유효성을 확인할 수 있다(동작 1406). 어떤 실시예들에서, 처리 장치는 신뢰된 소스의 비밀키에 대응하는 공개키를 사용하여 라이센스 정보 및 식별자 정보의 유효성을 확인할 수 있다. 처리 장치는, 유효성 확인의 결과에 기초하여, 라이센스 정보 및 식별자 정보가 유효한지 여부를 판정할 수 있다(동작 1408). 라이센스 정보 및 식별자 정보가 유효하지 않은 것으로 판정되는 경우, 처리 장치는 사용자에게 오류 메시지를 제공할 수 있다(동작 1410). 그렇지 않은 경우, 처리 장치는 식별자 및 대응하는 디지털 서명을 처리 장치에 연결된 플래쉬 저장 장치 내에 인코딩할 수 있다(동작 1412). 처리 장치는 특정 섹터들을 사용가능하지 않게 만들기 위해 플래쉬 저장 장치의 특정 섹터들에 기입을 함으로써 인코딩을 수행할 수 있거나, 앞서 기술한 바와 같이, 특정 섹터들이 사용가능한 채로 있을 수 있지만, 특정 섹터들을 사용가능하지 않게 만들기 위해 특정 섹터들에 다수의 기입 사이클을 수행함으로써 인코딩이 나중에 노출될 수 있다. 예를 들어, 사용가능하지 않은 섹터들을 통해 1 비트를 표현하고 사용가능한 섹터들을 통해 0 비트를 표현하는 것에 의해 식별자 및 디지털 서명이 인코딩될 수 있다. 어떤 실시예들에서, 사용가능하지 않은 섹터들을 통해 0 비트를 표현하고 사용가능한 섹터들을 통해 1 비트를 표현하는 것에 의해 정보가 인코딩될 수 있다. 라이센스 정보가 플래쉬 저장 장치 상에 또는 처리 장치 상에 저장될 수 있다(동작 1414).
그 다음에, 처리 장치는 라이센스 정보로부터 사용 카운터 및/또는 기간 카운터가 사용되어야 하는지 여부를 판정할 수 있다(동작 1416). 예를 들어, 라이센스 정보가 소프트웨어 애플리케이션이 미리 정해진 횟수 실행될 수 있다는 것을 나타내는 경우, 사용 카운터가 사용될 수 있다. 라이센스 정보가 소프트웨어 애플리케이션을 실행할 허가가 특정 기간 또는 만료 일자 후에 만료한다는 것을 나타내는 경우, 기간 카운터가 사용될 수 있다.
그 다음에, 처리 장치는 식별자 및 카운터와 관련한 하나 이상의 섹터 어레이를 생성할 수 있고, 또한 섹터에 대해 수행될 기입 횟수와 관련한 정보, 시스템 클럭 등의 클럭 또는 기타 시간 측정 도구와 관련한 기간의 길이(1일, 1주일, 1년, 기타), 또는 기타 정보를 저장할 수 있다(동작 1418).
결론
소프트웨어의 불법 사용을 방지하기 위해 범용 플래쉬 저장 장치를 사용하는 것은 USB 동글 또는 메모리 키 등의 특수 장치를 필요로 하는 방법보다 비용이 덜 든다. 게다가, 소프트웨어의 불법 사용을 방지하기 위해 사용자-제공 플래쉬 저장 장치를 사용하는 방법은 소프트웨어를 갖는 특수 장치의 배달을 필요없게 만들어주며 또 전자적으로 배포되는 소프트웨어를 불법 사용으로부터 보호하는 실용적인 방법이다.
발명 대상이 구조적 특징들 및/또는 방법적 동작들과 관련하여 기술되어 있지만, 첨부된 청구항들에서의 발명 대상이 상기한 특정의 특징들 또는 동작들로 반드시 제한되는 것은 아니라는 것을 잘 알 것이다. 오히려, 상기한 특정의 특징들 및 동작들은 청구항들을 구현하는 예시적인 형태로서 개시되어 있다.
이상의 설명이 구체적인 상세를 포함하고 있을 수 있지만, 이들이 어쨋든 청구항들을 제한하는 것으로 해석되어서는 안된다. 기술된 실시예들의 다른 구성들이 본 개시 내용의 범위의 일부이다. 게다가, 본 개시 내용의 발명 대상에 따른 구현들이 기술된 것보다 더 많은 또는 더 적은 수의 동작들을 가질 수 있거나, 도시된 것과 다른 순서로 동작들을 구현할 수 있다. 그에 부가하여, 어떤 실시예들에서, 소프트웨어 애플리케이션이 플래쉬 저장 장치 내에 저장될 수 있는 반면, 다른 실시예들에서, 소프트웨어 애플리케이션이 처리 장치의 컴포넌트(ROM, 하드 디스크, 또는 다른 컴포넌트 등)에 저장될 수 있다. 그에 따라, 임의의 주어진 특정의 일례들보다는 첨부된 청구항들 및 그의 법적 등가물만이 본 발명을 한정한다.

Claims (20)

  1. 플래쉬 저장 장치를 사용하여 소프트웨어의 불법 사용(unauthorized use)을 방지하는 머신(machine)-구현 방법으로서,
    상기 소프트웨어의 사용에 관한 라이센스 정보에 액세스하는 단계 - 상기 라이센스 정보는 식별자를 포함함 - (502, 510),
    1 비트들이 특정 섹터들 중 사용가능하지 않은 섹터들에 의해 표현되고 0 비트들이 특정 섹터들 중 사용가능한 섹터들에 의해 표현되도록 또는 0 비트들이 특정 섹터들 중 사용가능하지 않은 섹터들에 의해 표현되고 1 비트들이 특정 섹터들 중 사용가능한 섹터들에 의해 표현되도록, 상기 식별자가 상기 플래쉬 저장 장치 내에 인코딩되어 있는지를 판정하기 위해 상기 플래쉬 저장 장치의 저장 공간(storage)의 상기 특정 섹터들에 액세스하는 단계(402, 512), 및
    상기 식별자가 상기 플래쉬 저장 장치의 상기 특정 섹터들 내에 인코딩되어 있지 않을 때 상기 소프트웨어의 사용을 중단시키는 단계(508)
    를 포함하는 머신-구현 방법.
  2. 제1항에 있어서, 상기 라이센스 정보가 신뢰된 소스에 의해 디지털적으로 서명되고,
    상기 방법이,
    상기 라이센스 정보가 상기 신뢰된 소스의 유효한 디지털 서명을 포함하는지 여부를 판정하는 단계, 및
    상기 라이센스 정보가 상기 신뢰된 소스의 상기 유효한 디지털 서명을 포함하지 않을 때 상기 소프트웨어의 사용을 중단시키는 단계를 더 포함하는 머신-구현 방법.
  3. 제1항에 있어서, 상기 식별자와 관련한 유효한 디지털 서명이 상기 플래쉬 저장 장치 내에 인코딩되어 있는지 여부를 판정하기 위해 상기 플래쉬 저장 장치의 저장 공간의 상기 특정 섹터들에 액세스하는 단계, 및
    상기 식별자와 관련한 상기 유효한 디지털 서명이 상기 플래쉬 저장 장치의 상기 특정 섹터들 내에 인코딩되어 있지 않을 때 상기 소프트웨어의 사용을 중단시키는 단계를 포함하는 머신-구현 방법.
  4. 제1항에 있어서, 상기 라이센스 정보가 상기 플래쉬 저장 장치에 저장되어 있는 것인 머신-구현 방법.
  5. 제1항에 있어서, 상기 라이센스 정보가 처리 장치의 컴포넌트에 저장되어 있고, 상기 처리 장치가 상기 처리 장치와 연결된 상기 플래쉬 저장 장치를 갖는 것인 머신-구현 방법.
  6. 제1항에 있어서, 상기 라이센스 정보가 상기 소프트웨어의 미리 정해진 사용 횟수를 포함하고,
    상기 머신-구현 방법이,
    상기 플래쉬 저장 장치의 적어도 하나의 섹터에 대해 복수의 기입을 수행함으로써 상기 소프트웨어의 각각의 사용을 카운트하여 상기 소프트웨어의 상기 미리 정해진 사용 횟수를 카운트한 후에 상기 적어도 하나의 섹터를 사용가능하지 않게 만드는 단계,
    상기 적어도 하나의 섹터가 사용가능하지 않은지 여부를 판정하는 단계, 및
    상기 적어도 하나의 섹터가 사용가능하지 않은 것으로 판정될 때 상기 소프트웨어의 사용을 중단시키는 단계를 더 포함하는 것인 머신-구현 방법.
  7. 제1항에 있어서, 상기 라이센스 정보가 만료 일자를 포함하고,
    상기 머신-구현 방법이,
    상기 플래쉬 저장 장치의 복수의 섹터 중 각각의 섹터에 복수의 기입을 수행함으로써 복수의 기간 각각의 경과(passing)를 카운트하여 상기 복수의 섹터 중 각각의 섹터를 사용가능하지 않게 만드는 단계,
    사용가능하지 않은 상기 복수의 섹터 중 각각의 섹터의 수를 결정하는 단계, 및
    상기 복수의 섹터 중 상기 결정된 사용가능하지 않은 각각의 섹터의 수가 상기 만료 일자의 경과를 나타낼 때 상기 소프트웨어의 사용을 중단시키는 단계를 더 포함하는 것인 머신-구현 방법.
  8. 제1항에 있어서, 처리 장치 상에서의 상기 소프트웨어의 활성화 동안에 상기 플래쉬 저장 장치의 저장 공간의 상기 특정 섹터들 내에 상기 식별자를 인코딩하는 단계를 더 포함하는 머신-구현 방법.
  9. 플래쉬 저장 장치를 사용하여 소프트웨어 애플리케이션의 기능을 제한하거나 디스에이블시키는 머신-구현 방법으로서,
    상기 소프트웨어 애플리케이션의 사용에 관한 라이센스 정보에 액세스하는 단계 - 상기 라이센스 정보는 상기 플래쉬 저장 장치 또는 상기 플래쉬 저장 장치에 연결된 처리 장치의 컴포넌트 중 하나에 존재하고, 상기 라이센스 정보는 식별자를 포함함 - (502),
    상기 라이센스 정보의 유효성을 확인하는 단계(504),
    1 비트들이 특정 섹터들 중 사용가능하지 않은 섹터들에 의해 표현되고 0 비트들이 특정 섹터들 중 사용가능한 섹터들에 의해 표현되도록 또는 0 비트들이 특정 섹터들 중 사용가능하지 않은 섹터들에 의해 표현되고 1 비트들이 특정 섹터들 중 사용가능한 섹터들에 의해 표현되도록, 상기 식별자가 상기 플래쉬 저장 장치 내에 인코딩되어 있는지를 판정하기 위해 상기 플래쉬 저장 장치의 저장 공간의 상기 특정 섹터들에 액세스하는 단계(402, 510, 512), 및
    상기 식별자가 상기 플래쉬 저장 장치의 상기 특정 섹터들 내에 인코딩되어 있지 않을 때 상기 소프트웨어 애플리케이션의 기능을 제한하거나 디스에이블시키는 단계(508)를 포함하는 머신-구현 방법.
  10. 제9항에 있어서, 상기 소프트웨어 애플리케이션이 제1의 미리 정해진 사용 횟수 동안 전체 기능으로 실행되도록 허용하는 단계를 더 포함하는 머신-구현 방법.
  11. 제9항에 있어서, 상기 식별자가 다수의 부분을 포함하고,
    상기 머신-구현 방법이,
    특정의 기간들에서 상기 식별자의 상기 다수의 부분 각각을 노출(unveil)시키는 단계를 더 포함하는 것인 머신-구현 방법.
  12. 제9항에 있어서, 상기 소프트웨어 애플리케이션의 기능이 제한될 때, 상기 소프트웨어 애플리케이션의 표준 기능이 인에이블되고,
    상기 소프트웨어 애플리케이션의 기능이 디스에이블되지 않고 제한되지 않을 때, 상기 소프트웨어 애플리케이션의 강화된 기능이 인에이블되는 것인 머신-구현 방법.
  13. 제9항에 있어서, 상기 소프트웨어 애플리케이션이 상기 플래쉬 저장 장치에 저장되어 있는 것인 머신-구현 방법.
  14. 제9항에 있어서, 상기 소프트웨어의 활성화 동안에 상기 식별자 및 상기 식별자의 디지털 서명을 상기 플래쉬 저장 장치의 저장 공간의 상기 특정 섹터들 내에 인코딩하는 단계를 더 포함하는 머신-구현 방법.
  15. 제9항에 있어서, 상기 플래쉬 저장 장치의 적어도 하나의 섹터 중 각각의 섹터에 복수의 기입을 수행함으로써 복수의 기간 각각의 경과를 카운트하여 상기 적어도 하나의 섹터 중 각각의 섹터를 사용가능하지 않게 만드는 단계, 및
    상기 적어도 하나의 섹터 중 사용가능하지 않은 섹터들의 수가 상기 라이센스 정보에 의해 나타내어져 있는 만료 일자의 경과를 나타낼 때 상기 소프트웨어 애플리케이션의 사용을 제한하거나 디스에이블시키는 단계를 더 포함하는 머신-구현 방법.
  16. 소프트웨어 애플리케이션의 기능을 제한하거나 상기 소프트웨어 애플리케이션의 기능을 디스에이블시키거나 플래쉬 저장 장치가 연결되어 있는 처리 장치 상에서 실행되도록 구성된 상기 소프트웨어 애플리케이션의 전체 기능을 인에이블시키는 플래쉬 저장 장치(104)로서,
    상기 소프트웨어 애플리케이션과 관련하여 상기 플래쉬 저장 장치에 저장되어 있는 라이센스 정보 - 상기 라이센스 정보는 식별자를 포함함 - (304, 402, 1414), 및
    상기 플래쉬 저장 장치의 특정 섹터들 중 사용가능하지 않은 섹터들이 인코딩된 식별자의 1 비트들을 표현하고 상기 플래쉬 저장 장치의 특정 섹터들 중 사용가능한 섹터들이 인코딩된 식별자의 0 비트들을 표현하거나, 상기 플래쉬 저장 장치의 특정 섹터들 중 사용가능한 섹터들이 인코딩된 식별자의 1 비트들을 표현하고 상기 플래쉬 저장 장치의 특정 섹터들 중 사용가능하지 않은 섹터들이 인코딩된 식별자의 0 비트들을 표현하도록 상기 플래쉬 저장 장치 내에 인코딩되어 있는, 상기 라이센스 정보에 포함되어 있는 상기 식별자에 대응하는 인코딩된 식별자 - 상기 인코딩된 식별자가 상기 라이센스 정보에 포함되어 있는 상기 식별자와 일치할 때에만 상기 소프트웨어 애플리케이션의 전체 기능이 인에이블됨 - (306, 1412, 512, 614)를 포함하는 플래쉬 저장 장치.
  17. 제16항에 있어서, 상기 플래쉬 저장 장치의 상기 특정 섹터들 내에 인코딩되어 있는, 상기 식별자에 대해 계산된 신뢰된 소스의 디지털 서명 - 상기 인코딩된 디지털 서명이 상기 신뢰된 소스로부터 온 것으로 검증될 때에만 상기 소프트웨어 애플리케이션의 전체 기능이 인에이블됨 - 을 더 포함하는 플래쉬 저장 장치.
  18. 제16항에 있어서, 상기 라이센스 정보가 상기 소프트웨어 애플리케이션의 허용된 사용 횟수와 관련한 정보를 포함하고,
    상기 플래쉬 저장 장치의 적어도 하나의 섹터 중 사용가능하지 않은 섹터들이 상기 허용된 사용 횟수가 발생하였는지 여부를 나타내는 것인 플래쉬 저장 장치.
  19. 제16항에 있어서, 상기 소프트웨어 애플리케이션이 상기 플래쉬 저장 장치 내에 저장되어 있는 것인 플래쉬 저장 장치.
  20. 제16항에 있어서, 상기 라이센스 정보가 상기 소프트웨어 애플리케이션의 사용에 대한 라이센스의 만료 일자와 관련한 정보를 포함하고,
    상기 플래쉬 저장 장치의 적어도 하나의 섹터 중 사용가능하지 않은 섹터들이 상기 만료 일자가 경과했는지 여부를 나타내는 것인 플래쉬 저장 장치.
KR1020107004113A 2007-08-31 2008-08-04 플래쉬 저장 장치를 사용한 소프트웨어 불법 사용 방지 KR101514100B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/848,381 2007-08-31
US11/848,381 US8452967B2 (en) 2007-08-31 2007-08-31 Using flash storage device to prevent unauthorized use of software
PCT/US2008/072118 WO2009032462A1 (en) 2007-08-31 2008-08-04 Using flash storage device to prevent unauthorized use of software

Publications (2)

Publication Number Publication Date
KR20100046034A true KR20100046034A (ko) 2010-05-04
KR101514100B1 KR101514100B1 (ko) 2015-04-22

Family

ID=40409286

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107004113A KR101514100B1 (ko) 2007-08-31 2008-08-04 플래쉬 저장 장치를 사용한 소프트웨어 불법 사용 방지

Country Status (8)

Country Link
US (3) US8452967B2 (ko)
EP (1) EP2183672A4 (ko)
JP (1) JP2010538364A (ko)
KR (1) KR101514100B1 (ko)
CN (1) CN101790723B (ko)
BR (1) BRPI0814853A2 (ko)
RU (1) RU2473116C2 (ko)
WO (1) WO2009032462A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060064386A1 (en) * 2004-09-20 2006-03-23 Aaron Marking Media on demand via peering
US11734393B2 (en) 2004-09-20 2023-08-22 Warner Bros. Entertainment Inc. Content distribution with renewable content protection
US10476883B2 (en) 2012-03-02 2019-11-12 Inside Secure Signaling conditional access system switching and key derivation
US10691860B2 (en) 2009-02-24 2020-06-23 Rambus Inc. Secure logic locking and configuration with camouflaged programmable micro netlists
US8689279B2 (en) 2011-08-30 2014-04-01 Microsoft Corporation Encrypted chunk-based rapid data encryption policy compliance
US8874935B2 (en) * 2011-08-30 2014-10-28 Microsoft Corporation Sector map-based rapid data encryption policy compliance
US9800405B2 (en) * 2012-03-02 2017-10-24 Syphermedia International, Inc. Blackbox security provider programming system permitting multiple customer use and in field conditional access switching
US20140115672A1 (en) * 2012-10-18 2014-04-24 Roger Wood Storing and Accessing Licensing Information in Operating System-Independent Storage
CN103064678B (zh) * 2012-12-24 2016-04-20 广州广电运通金融电子股份有限公司 一种硬件指令调用控制方法和装置
US20140344570A1 (en) 2013-05-20 2014-11-20 Microsoft Corporation Data Protection For Organizations On Computing Devices
US10615967B2 (en) 2014-03-20 2020-04-07 Microsoft Technology Licensing, Llc Rapid data protection for storage devices
US9875344B1 (en) * 2014-09-05 2018-01-23 Silver Peak Systems, Inc. Dynamic monitoring and authorization of an optimization device
US9825945B2 (en) 2014-09-09 2017-11-21 Microsoft Technology Licensing, Llc Preserving data protection with policy
US9853812B2 (en) 2014-09-17 2017-12-26 Microsoft Technology Licensing, Llc Secure key management for roaming protected content
US20160140530A1 (en) * 2014-10-27 2016-05-19 Leonard L. Drey Method of Governing Content Presentation and the Altering of Multi-Page Electronic Documents
US9900295B2 (en) 2014-11-05 2018-02-20 Microsoft Technology Licensing, Llc Roaming content wipe actions across devices
US9853820B2 (en) 2015-06-30 2017-12-26 Microsoft Technology Licensing, Llc Intelligent deletion of revoked data
US20170068822A1 (en) * 2015-09-03 2017-03-09 Bit Sphere Inc. Method for binding a software application's functionality to specific storage media
US9900325B2 (en) 2015-10-09 2018-02-20 Microsoft Technology Licensing, Llc Passive encryption of organization data
CN112307436B (zh) * 2019-07-26 2023-12-01 杭州海康威视数字技术股份有限公司 智能设备的许可证管理方法和装置以及智能设备
US11157624B2 (en) * 2019-08-14 2021-10-26 Silicon Motion, Inc. Scheme of using electronic device to activate mass production software tool to initialize memory device including flash memory controller and flash memory
CN110825639B (zh) * 2019-11-08 2023-01-31 西安雷风电子科技有限公司 一种防篡改时间的软件License验证方法
US11829452B2 (en) 2020-08-24 2023-11-28 Leonard L. Drey System and method of governing content presentation of multi-page electronic documents

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5473692A (en) * 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US6367013B1 (en) * 1995-01-17 2002-04-02 Eoriginal Inc. System and method for electronic transmission, storage, and retrieval of authenticated electronic original documents
US6226747B1 (en) * 1998-04-10 2001-05-01 Microsoft Corporation Method for preventing software piracy during installation from a read only storage medium
IL124571A0 (en) * 1998-05-21 1998-12-06 Miki Mullor Method of restricting software operation within a licensed limitation
TW460846B (en) * 1998-12-10 2001-10-21 Toshiba Corp Data recording media having certification information
US7178036B1 (en) * 1999-03-15 2007-02-13 Antonius Adriaan Maria Staring Method and system for providing copy-protection on a storage medium and storage medium for use in such a system
JP4621314B2 (ja) * 1999-06-16 2011-01-26 株式会社東芝 記憶媒体
US7318117B2 (en) * 2004-02-26 2008-01-08 Super Talent Electronics, Inc. Managing flash memory including recycling obsolete sectors
US6996720B1 (en) * 1999-12-17 2006-02-07 Microsoft Corporation System and method for accessing protected content in a rights-management architecture
JP2001175468A (ja) * 1999-12-20 2001-06-29 Sony Corp ソフトウエア使用制御方法とその装置
US7861312B2 (en) * 2000-01-06 2010-12-28 Super Talent Electronics, Inc. MP3 player with digital rights management
US7107608B2 (en) * 2001-10-01 2006-09-12 Microsoft Corporation Remote task scheduling for a set top box
US20040015709A1 (en) * 2002-07-18 2004-01-22 Bei-Chuan Chen Software delivery device and method for providing software copy protection
US7734549B2 (en) * 2002-12-31 2010-06-08 Motorola, Inc. Methods and apparatus for managing secured software for a wireless device
EP1565867A1 (en) 2003-02-21 2005-08-24 Matsushita Electric Industrial Co., Ltd. Software-management system, recording medium, and information-processing device
US7248895B2 (en) * 2003-06-12 2007-07-24 Nokia Corporation Controlling settings for mobile telecommunications apparatus
KR101169021B1 (ko) 2004-05-31 2012-07-26 삼성전자주식회사 디바이스와 휴대형 저장장치간의 권리객체 정보 전달 방법및 장치
KR100608604B1 (ko) 2004-09-15 2006-08-03 삼성전자주식회사 객체 식별자를 이용하여 이동형 저장 장치에서 권리객체를 검색하는 방법 및 장치
US20060080260A1 (en) * 2004-10-13 2006-04-13 Tien-Fu Chen System and method for digital content rights management on portable storage devices
US20070118766A1 (en) * 2005-02-11 2007-05-24 Molino Networks, Inc. Electronic content security scheme
US20060200414A1 (en) * 2005-02-14 2006-09-07 Roberts Henry A Jr Methods of copy protecting software stored on portable memory
WO2007020545A1 (en) * 2005-08-17 2007-02-22 Koninklijke Philips Electronics N.V. Managing digital right licenses
US20070074050A1 (en) * 2005-09-14 2007-03-29 Noam Camiel System and method for software and data copy protection
US20070061597A1 (en) * 2005-09-14 2007-03-15 Micky Holtzman Secure yet flexible system architecture for secure devices with flash mass storage memory
CN101331548A (zh) * 2005-12-15 2008-12-24 皇家飞利浦电子股份有限公司 记录具有区别特征的数据的方法

Also Published As

Publication number Publication date
EP2183672A4 (en) 2013-06-05
CN101790723A (zh) 2010-07-28
US20160063225A1 (en) 2016-03-03
RU2010107195A (ru) 2011-09-10
WO2009032462A1 (en) 2009-03-12
US20090063756A1 (en) 2009-03-05
EP2183672A1 (en) 2010-05-12
KR101514100B1 (ko) 2015-04-22
RU2473116C2 (ru) 2013-01-20
US9213846B2 (en) 2015-12-15
US20130247229A1 (en) 2013-09-19
BRPI0814853A2 (pt) 2015-01-27
CN101790723B (zh) 2012-08-08
US8452967B2 (en) 2013-05-28
JP2010538364A (ja) 2010-12-09

Similar Documents

Publication Publication Date Title
KR101514100B1 (ko) 플래쉬 저장 장치를 사용한 소프트웨어 불법 사용 방지
CA2525376C (en) System and method for authenticating software using hidden intermediate keys
US8660964B2 (en) Secure device licensing
CN101441692B (zh) 实现计算机硬件和软件绑定的方法
ES2664413T3 (es) Aparato y métodos para realizar informes de mediciones de integridad informática de confianza
US8844049B2 (en) Method for generating a cryptographic key for a protected digital data object on the basis of current components of a computer
US20050021968A1 (en) Method for performing a trusted firmware/bios update
JP4796050B2 (ja) セキュア処理装置、及びセキュア処理システム
EA012921B1 (ru) Способ и устройство защиты программного обеспечения от несанкционированного использования
US20100333207A1 (en) Systems and Methods for Auditing Software Usage Using a Covert Key
CN101432752A (zh) 可信平台现场升级系统和方法
CN101458946A (zh) 信息处理装置、盘、信息处理方法和程序
US20170180139A1 (en) Key revocation
JP2021179982A (ja) シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法
CN105893837A (zh) 应用程序安装方法、安全加密芯片及终端
US8423473B2 (en) Systems and methods for game activation
US8667604B2 (en) Protection of software on portable medium
US11113399B2 (en) Electronic apparatus and control method of electronic apparatus
CN108595981A (zh) 加密安卓系统的方法
CN110489209B (zh) 一种信息处理方法及设备
JP2023085210A (ja) 情報処理装置及び判定方法
CN116127500A (zh) Linux下移动存储介质的文件管控方法、系统及介质
JP2009187475A (ja) セキュリティ管理システム、セキュリティ装置、セキュリティ管理方法
JP2002312049A (ja) プログラムの動作制御方式
JP2013073472A (ja) マイクロコンピュータ

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right