[go: up one dir, main page]

KR20130119359A - 전자책 컨텐츠 보호 - Google Patents

전자책 컨텐츠 보호 Download PDF

Info

Publication number
KR20130119359A
KR20130119359A KR1020130044106A KR20130044106A KR20130119359A KR 20130119359 A KR20130119359 A KR 20130119359A KR 1020130044106 A KR1020130044106 A KR 1020130044106A KR 20130044106 A KR20130044106 A KR 20130044106A KR 20130119359 A KR20130119359 A KR 20130119359A
Authority
KR
South Korea
Prior art keywords
content data
html
data
user
module
Prior art date
Application number
KR1020130044106A
Other languages
English (en)
Other versions
KR102042722B1 (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 KR20130119359A publication Critical patent/KR20130119359A/ko
Application granted granted Critical
Publication of KR102042722B1 publication Critical patent/KR102042722B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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]
    • 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/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
    • G06F21/6227Protecting 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 where protection concerns the structure of data, e.g. records, types, queries

Landscapes

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

Abstract

무단 액세스로부터 전자책을 보호하는 시스템 및 방법이 개시된다. 전자책의 HTML은 부분들로 분할되어 조각나고, 분할된 부분들 사이사이에 유인 데이터를 섞는데 이용되는 선택 기법이 사용된다. 클라이언트 장치는 상기 HTML을 정확히 처리하지만 웹 스크래퍼와 같은 무단 프로그램은 그 HTML을 정확히 처리할 수 없는, 유인 및 컨텐츠 데이터용 패턴을 정의하기 위하여, 동적으로 생성된 연쇄 스타일 시트들이 사용된다.

Description

전자책 컨텐츠 보호{Electronic Book Content Protection}
본 발명은 일반적으로 전자책 분야에 관한 것이며, 특히 무단(unauthorized) 복사로부터 전자책 컨텐츠를 보호하는 것에 관한 것이다.
PC(personal computers), 태블릿 컴퓨터(tablet computers) 및 스마트폰(smartphones) 상의 소프트웨어나 특화된 장치로로 구현된 전자책 판독기들(electronic book readers)이 매우 널리 사용되어 왔다. 책들이 전자화된 형태로 많이 팔리면 팔릴수록, 이러한 책들을 무단 복사로부터 보호하는 최선의 방법에 관한 관심도 높아져 왔다.
전자책을 제공위한 알려진 종래기술 중의 하나는 HTML(hypertext markup language)을 이용한 웹 브라우저를 이용하는 것이다. 이러한 시스템의 장점은, 대부분의 현대의 컴퓨터들에 웹 브라우저(예컨대, Google 사가 제공하는 Chrome™ 브라우저) 등 HTML 컨텐츠를 처리하는 하드웨어 및 소프트웨어가 장착되어 있다는 것이다. HTML은 유연하고 사용이 쉬운 언어이어서, 기존의 HTML 도구들을 통해 많은 전자책 특징들을 구현할 수 있다.
그러나, HTML 사용의 단점 중 하나는, 저작권 침해(piracy)로부터 전자책을 보호하는 기술적 수단들을 쉽게 회피할 수 있는 기술들 역시 많다는 것이다.
예컨대, 비록 전자책 판독기 어플리케이션이 책들의 라이브러리에 액세스하기 위한 패스워드를 요구한다고 해도, 일단 허가되고 나면 무단 추가 사용 또는 재판매를 위해 사용자가 그 책의 일부를 복사할 수 있다. 특히, “스크린 스크래퍼(scrapers) “, “컨텐츠 스크래퍼 “, “데이터 스크래퍼“ 또는 “웹 스크래퍼“ (이러한 구성들은 본 명세서에서 “스크래퍼“로 총칭함)로 다양하게 알려진 많은 어플리케이션 프로그램들은 HTML 페이지들을 자동으로 캡처하고, 전자책의 무단 복사물을 빠르게 만들어 내기 위해 전차 책으로부터 페이지들을 복사하여 붙이는데 쉽게 적용될 수 있다. 따라서, 이러한 무단 사용으로부터 HTML-기반 전자책 컨텐츠를 보호하기 위한 메커니즘을 제공하는 것이 바람직하다.
컴퓨터 사용자에 의해 컨텐츠 데이터가 처리되는 무단 액세스로부터 컨텐츠 데이터를 보호하는, 시스템, 방법 및 컴퓨터 판독가능 기록매체가 개시된다. 일 측면에서, 하나의 방식이 상기 컨텐츠 데이터를 복수의 섹션들로 분할하기 위해 선택되며, 상기 방식은 사용자가 자명하게 알수있는 방식으로 저장되지 않는다. 컨텐츠 데이터는 복수의 섹션들로 조각나며(shredded), 상기 복수의 섹션들 사이에 복수의 유인 데이터(decoy data, 종종 “가비지(garbage) “ 데이터로도 지칭됨) 부분들을 섞음으로써 난독화된다(obfuscated).
다른 측면에서, 상기 섞는 과정은 선택된 패턴에 응답하여 수행된다. 또 다른 측면에서, HTML 태그들이 상기 복수의 섹션들을 정의하기 위하여 사용된다. 또 다른 측면에서, 상기 선택된 패턴은 동적으로 생성된 연쇄 스타일 시트들(cascading style sheets)을 이용해 구현된다. 연관된 측면에서, 상기 동적으로 생성된 연쇄 스타일 시트들은 자바스크립트 프로세싱에 의해 구현된다.
일부 측면들에서, 상기 선택된 패턴은 복수의 비트들(bits)이다. 일부 측면들에서, 상기 선택 과정은 사용자가 자명하게 알 수 있지 않은 방식으로 비트 서브셋(subset of the bits)을 플리핑(flipping)하는 과정을 포함한다.
본 명세서에서 설명하는 특징들 및 장점들이 본 발명의 전체를 포괄하는 것은 아니며, 특히, 도면, 상세한 설명 및 청구범위를 고려하였을 때 많은 추가적인 특징들 및 장점들이 유추될 수 있음이 당업자에게 명백할 것이다. 또한, 본 명세서에서 사용되는 언어는 원칙적으로 판독의 용이함과 설명의 목적으로 선택된 것이므로, 개시된 발명의 대상을 한정하거나 제한하지 않는다.
상세한 설명, 첨부된 청구항들, 및 첨부된 도면들을 통해 개시된 실시예들의 다른 이점 및 특징들을 쉽게 알 수 있을 것이다. 아래에서 각 도면에 대하여 간략히 설명한다.
도 1은 기계로 판독가능한 매체를 통해 명령들을 판독하고 프로세서 내에서 상기 명령들을 실행할 수 있는 예시적인 기계의 컴포넌트들에 대한 일 실시예를 나타낸다.
도 2는 일 실시예에 따른 공급자 장치 및 사용자 장치를 나타내는 고차적인 다이어그램이다.
도 3은 일 실시예에서 HTML 난독화를 위한 예시적인 프로세스를 나타낸 순서도이다.
도 4는 도 3의 조각화 단계를 보다 세부적으로 나타낸 순서도이다.
도 5는 도 3의 선택기 처리 단계를 보다 세부적으로 나타낸 순서도이다.
도 6은 도 3의 난독화 단계를 보다 세부적으로 나타낸 순서도이다.
도면과 다음의 설명은 설명을 통해서만 서술된 바람직한 실시예들에 관한 것이다. 다음의 논의로부터, 본 명세서에 개시된 구조들 및 방법들의 대체 실시예들은 청구된 개념에서 벗어나지 않는 실행 가능한 대안들로 쉽게 인지될 수 있는 것임을 유의해야 한다 편의상 그리고 이해를 돕기 위하여, 설명된 실시예들과 청구항들은 보호되어야 할 특정 텍스트를 전자책으로 지칭한다. 전자책, 전자 잡지, 전자 신문, 및 전자 판독 장치 상에 표시되는 컨텐츠가 포함된 그밖의 다른 개체(entity)를 포함하나 여기에 국한되지 않는 모든 형태의 디지털 텍스트가 포함될 수 있음이 이해되어야 한다.
이하, 여러 실시예들, 첨부된 도면들에 나타난 예시들이 상세하게 참조될 것이다. 도면들에서 사용되는 유사 또는 동일한 참조번호들은 유사하거나 동일한 기능을 의미할 수 있다. 도면은 개시된 시스템(또는 방법)의 실시예들을 설명하기 위한 용도로만 표현된다. 당업자는 다음의 설명으로부터 여기에 설명된 개념을 벗어나지 않는 범위 내에서 여기에 설명된 구조들 및 방법들의 대체 실시예들이 채용될 수 있음을 쉽게 이해할 수 있을 것이다.
컴퓨팅 기계 설계( Computing Machine Architecture )
도 1은 기계로 판독가능한 매체를 통해 명령들을 판독하고 상기 명령을 프로세서에서 실행할 수 있는 예시적인 기계의 컴포턴트들을 나타내는 블록도이다. 특히, 도 1은 본 명세서에서 논의되는 하나 이상의 임의의 방법론들을 실행하게 하는 명령들(124)(예컨대, 소프트웨어)의 범위 내에 있는 컴퓨터 시스템(100)의 예시적 형태로 기계의 도식화된 표현을 나타낸다. 대체 실시예들에서, 이 기계는 독립형 장치로 동작하거나 다른 기계들에 연결(예컨대, 네트워크 연결)될 수 있다. 네트워크 연결된 배치에서, 상기 기계는 서버 기계 또는 클라이언트 기계로서, 또는 P2P(peer-to-peer)(또는 분산된) 네트워크 환경에서의 피어 기계로서 동작할 수 있다.
이러한 기계는 서버 컴퓨터, 클라이언트 컴퓨터, PC, 태블릿 PC(personal computer), STB(set-top box), PDA(personal digital assistant), 셀룰러 폰, 스마트폰, 웹 전자기기(web appliance), 네트워크 라우터, 스위치 또는 브리지, 또는 해당 기계에 의해 수행될 수 있는 동작들을 특정하는(순차적이거나 또는 그렇지 않은) 명령들(124)을 실행할 수 있는 임의의 기계일 수 있다. 나아가, 비록 하나의 기계만이 도시되어 있지만, “기계”라는 용어는 여기서 논의되는 임의의 하나 이상의 방법론들을 수행하기 위한 명령들(124)을 각자 또는 함께 실행하는 기계들의 임의의 집합을 포함하는 의미일 수 있다.
예시적인 컴퓨터 시스템(100)은 버스(108)를 통해 서로 통신하도록 구성된, 프로세서(102)(예컨대, CPU(central processing unit), GPU(graphics processing unit), DSP(digital signal processor), 하나 이상의 ASIC(application specific integrated circuits)들, 하나 이상의 RFIC(radio-frequency integrated circuits)들, 또는 이들의 임의 조합), 주 메모리(104), 및 정적 메모리(106)를 포함한다. 컴퓨터 시스템(100)은 그래픽 표시 유닛(110)(예컨대, PDP(plasma display panel), LCD(liquid crystal display), 프로젝터, CRT(cathode ray tube))을 더 포함할 수 있다. 또한, 컴퓨터 시스템(100)은 마찬가지로 버스(108)를 통해 통신하도록 구성된, 영숫자 입력 장치(112)(예컨대, 키보드), 커서 제어 장치(114)(예컨대, 마우스, 트랙볼, 조이스틱, 모션 센서, 또는 다른 포인팅 기구), 데이터 저장부(116), 신호 생성 장치(118)(예컨대, 스피커), 오디오 입력 장치(126)(예컨대, 마이크로폰) 및 네트워크 인터페이스 장치(120)를 포함할 수 있다.
데이터 저장부(116)는 여기서 설명하는 임의의 하나 이상의 방법론들 또는 기능들을 구현하는 명령들(124)(예컨대, 소프트웨어)이 저장되어 있는, 기계로 판독가능한 매체(122)를 포함한다. 마찬가지로 기계로 판독가능한 매체를 구성하는 명령들(124)(예컨대, 소프트웨어)은 기계로 판독가능한 매체를 포함하는 컴퓨터 시스템(100), 주 메모리(104) 및 프로세서(102)에 의해 실행되는 동안 주 메모리(104) 내 또는 프로세서(102) 내(예컨대, 프로세서의 캐시 메모리 내)에 완전히 또는 적어도 부분적으로, 존재할 수 있다. 명령들(124)(예컨대, 소프트웨어)은 네트워크 인터페이스(120)를 통해 네트워크(도시되지 않음)로 전달되거나 수신될 수 있다.
비록 일 실시예에서 기계로 판독가능한 매체(122)가 단일 매체로 나타나 있으나, “기계로 판독가능한 매체(machine-readable medium)”라는 용어는 명령들(예컨대, 명령들(124))을 저장할 수 있는 단일 매체 또는 다중 매체(예컨대, 하나의 집중되거나 분산된 데이터베이스, 또는 연관된 캐시들과 서버들)를 포함하는 의미일 수 있다. “기계로 판독가능한 매체“라는 용어는 또한 기계에 의해 실행되어 해당 기계가 여기서 개시되는 임의의 하나 이상의 방법론들을 수행할 수 있도록 하는 명령들(예컨대, 명령들(124))을 저장할 수 있는 임의의 매체를 포함하는 의미일 수 있다. “기계로 판독가능한 매체“라는 용어는 반도체 메모리(solid-state memories), 광학 매체, 및 자기 매체 형태의 데이터 저장소들을 포함하나 이에 제한되지는 않는다.
구조에 대한 개요( Configuration Overview )
도 2는 일부 실시예들에 따라 스크린 스크래핑(screen scraping)으로부터 전자책 데이터를 보호하는 공급자 장치(Provider Device, 200) 및 사용자 장치(User Device, 210)를 나타내는 고차적인 다이어그램이다. 공급자 장치(200)는 HTML 모듈(202), 조각화 모듈(Shredding Module, 203), 난독화 모듈(Obfuscation Module, 204) 및 자바스크립트 모듈(205)을 가지는 컨텐츠 난독화 서브시스템(201)을 포함한다. 이러한 컴포넌트들의 동작은 아래와 같다. 공급자 장치(200)는 사용자 장치(210)와 통신하기 위한 (예컨대, 인터넷을 이용하는)네트워크 인터페이스(120)와, 예를 들어 전자책에 상응하는 데이터가 저장되어 있는 데이터 저장부(116)를 더 포함한다.
사용자 장치(210)는 전자책 판독기(211) 및 (예컨대 인터넷을 통해 공급자 장치(200)와 통신하기 위한) 네트워크 인터페이스(120)를 포함한다. 전자책 판독기(211)는 당해 실시예에 나타나 있는 표시 모듈(212) 및 브라우저 모듈(213)을 포함한다. 이러한 컴포넌트들의 동작은 아래와 같다.
일 실시예에서, 전자책은 공급자 장치(200)에 있는 데이터 저장부(116)로 저장된다. 이러한 실시예에서, 상기 책에 상응하는 HTML은 여기서 설명되는 바와 같이 공급자 장치(200)에 마련되어 사용자 장치(210)로 제공된다. 이에 따라, 공급자 장치(200)는 서버로서 동작하고, 사용자 장치(210)는 클라이언트로서 동작한다. 그러나, 다른 실시예들에서는, 전자책 데이터가 사용자 장치(210)에 로컬로(locally) 저장될 수 있고, 마찬가지로 전자책을 표시할 수 있도록 승인하는 HTML이 본 명세서에서 설명되는 바와 같이 사용자 장치(210)에서 로컬로 생성될 수 있음이 이해되어야 한다. 전자책을 얻는 하나의 특정 방법은 사용자 장치(210)가 GOOGLE PLAY ™, GOOGLE ™ PLAY BOOKS, GOOGLE BOOKSTM 및 GOOGLE EBOOKSTORETM와 같은 온라인 책 판매자들(vendors) 및 저장소들(repositories)과 상호 작용할 수 있도록 하는 네트워크 인터페이스(120)를 이용하는 것이다. 또는, 전자책은 플래시 드라이브, CD(compact disc) 또는 DVD(digital versatile disc)와 같은 컴퓨터로 판독가능한 휴대용 컴퓨터로부터 복사될 수 있다.
일부 실시예들에서, 전자책의 표시 모듈에서 텍스트를 표시하는 것은표시 HTML을 이용해 구현된다. HTML은 간단한 구분자들(delimiters) 또는 태그들(tags)을 통해, 다양한 폰트 사이즈들, 스타일들, 색상들, 배치들 등의 적용으로 사용자가 책의 텍스트 및 그래픽 구성요소들을 만족하는 수준으로 볼 수 있게 한다. 도 2에 나타난 것처럼, 전자책 판독기(211)는 표시 모듈(212) 및 브라우저 모듈(213)을 포함한다. 많은 컴퓨터들은 소프트웨어 및 하드웨어 모두에 의해 구현된 범용 표시 기능을 가짐으로써, 다양한 소스들을 통해 데이터를 표시한다; 여기서 이러한 컴포넌트들은 표시 모듈(212)로 지칭된다. 명확함을 위해, 브라우저 모듈(213)은 이러한 컴퓨터들이 종종 하나 이상의 브라우저 프로그램들을 갖추고 있음을 강조하기 위하여 구분되어 설명되며, 상기 하나이상의 브라우저 프로그램은 예컨대 웹 페이지로부터, 데이터를 검색하고, 예컨대 표시 모듈(212)을 이용해 전자책 판독기(211) 에 표시하기 위하여, 검색된 데이터를 준비하는, 하나 이상의 브라우저 프로그램들을 갖추고 있다. 다른 실시예들에서, 표시 모듈(212) 및 브라우저 모듈(213)의 기능들은 다양한 방식으로 할당될 수 있으나, 일반적으로는 두 개의 모듈들이 단일 서브시스템으로 구현될 수 있다.
많은 실시예들에서, 전자책 판독기(211)는 액세스 권한을 구매한 사람들에게만 전자책 컨텐츠가 액세스되도록 한정하기 위하여 패스워드 제어와 같은 액세스 제어 메커니즘들을 더 제공할 수 있다. 종종, 이러한 메커니즘들은, 예컨대 확인된 패스워드 엔트리에 의해, 액세스 권한이 확정되지 않으면, 전술한 HTML 컨텐츠가 브라우저 모듈(213)에 전송되지 않도록 한다. 그러나, 일단 사용자가 액세스를 획득하고, 전자책 컨텐츠를 사용자에게 보여주기 위하여 브라우저 모듈(213) 및 표시 모듈(212)로 HTML이 제공되고 나면, 일반적으로 컨텐츠 제어가 다소 어렵다. 예컨대, 사용자 장치가 PC인 경우, ALT-PrtScn과 같은 단순한 키보드 명령들이 컴퓨터 윈도우의 이미지를 효과적으로 캡처하여 그 컨텐츠를 다른 프로그램으로 복사할 수 있다. 스크래퍼와 같은 보다 정교한 어플리케이션 프로그램들에서는, 다른 프로그램에 의한 사용 용도보다는 사용자에게 표시하기 위한 용도의 정보를 자동으로 캡처하고, 이러한 데이터를 다른 형태로 사용할 수 있도록 한다. 이러한 사용의 일례는 전자책을 복사하는 것이다.
브라우저 모듈(213)과 같은 장치로 전송되는 단순 복사된 데이터가 원치 않는 결과들을 일으킨다는 것은 오래 전부터 알려져 왔다. 예컨대, 이러한 데이터가 HTML 형태인 경우, 데이터를 단순 텍스트로 취급하면 책의 실제 컨텐츠에 상응하지 않는 구분자들 및 표시 명령들이 발생된다. 예컨대, 책의 첫 페이지는 챕터 명, 챕터 번호, 챕터의 텍스트를 시작하기 위한 장식용 드롭 캡(decorative drop cap)과 챕터의 텍스트를 계속하기 위한 바디 텍스트를 포함할 수 있다. 이러한 요소들 각각은 시작 태그들, 종료 태그들 등과 같은 HTML 요소들에 의해 묶일 수 있다. 일반적인 예로서, <p>와 </p>의 쌍은 한 단락을 나타내는데 쓰인다.
보다 정교한 레이아웃들은 문서 객체 모델(document object model), 또는 DOM으로서 알려진 구조를 사용하여 구현될 수 있으며, 상기 문서 객체 모델(document object model), 또는 DOM은 예컨대, 연쇄 스타일 시트(cascading style sheet), 또는 CSS, 속성들의 조작을 통해 전자 문서들을 표시하는데 사용될 수 있는 것이다. 따라서, 사용자가 전자책에서 확인할 수 있는 단순 텍스트 문장은 복합적인 방식의 HTML로 표현될 수 있다.
그렇긴 하지만, 현대의 스크래퍼들은 일반적인 HTML 컨텐츠를 처리하여 서식 설정 요소들을 필요에 따라 쉽게 제거하거나 이동시켜, 예를 들어 워드 프로세싱 어플리케이션의 복사된 웹 페이지 일부를 깨끗하게 제공할 수 있다. 일부 환경에서는, 전자책을 읽을 권한을 구매한 한 사람이 그 책을 재판매하거나 다른 무단 사용을 위해 다른 포맷으로 쉽게 복사할 수 없도록 하는 것이 필요하다. 예를 들어, 파이어버그(Firebug)로 알려진 오픈 소스 소프트웨어 툴은 HTML 컨텐츠가 원래의 브라우저로부터 다른 미디어로 쉽게 복사될 수 있도록 하는 DOM 트리 익스플로러(DOM tree explorer) 특징들을 포함한다.
전자책들에 대한 이러한 잠재적 관심을 해결하기 위하여, 브라우저 모듈(213)(예컨대, 웹 브라우저)을 통해 보여질 경우 책의 깨끗한 텍스트로 나타나지만, 스크래퍼를 통해 캡처될 경우에는 다른 미디어용의 깨끗한 텍스트로 쉽게 변환되지 않는, HTML을 제공하고자 하는 시도들이 존재해 왔다. 바람직하게는, 이러한 메커니즘은 전문적인 소프트웨어(예컨대, “플러그-인(plug-ins) “)를 요구하지 않으며, 널리 지원되는 브라우저들에서 동작한다.
일 실시예에서, 상기 실시예는 공급자 장치(200)의 컨텐츠 난독화 서브시스템(201) 상의 조각화 모듈(203)과 난독화 모듈(204)에 의해 이루어진다. 특히, 조각화 모듈(203)은 HTML(예컨대, 데이터 저장부(116)에 보관된 전자책의 HTML 모듈(202) 에 의해 생성되는 원본 HTML) 의 일부를 더 작은 성분 요소들로 쪼갠다. 그런 다음, 난독화 모듈(204)은 상기 더 작은 요소들의 각 인접한 쌍 사이사이에 비가시적(non-visible)이거나 “유인(decoy) “ HTML 요소들을 섞는다. 일부 실시예들에서, 자바스크립트 모듈(205)은 브라우저 모듈(213)의 요청에 의해, 아래 설명되는 것처럼 CSS를 동적으로 생성하기 위한 키를 추가로 제공한다. 사용자에게 표시해주기 위하여 표시 모듈(212)에 생성된 데이터가 제공되는 경우, 상기 생성된 데이터는 전자책의 깨끗한 텍스트로 나타나지만, 일반적인 스크래퍼들에 의해 캡처되는 경우 가비지 요소들이 제거되기 어려우며, 이에 따라 책 컨텐츠를 무단 복사하는데 더 많은 수고를 요하게 된다.
다른 수준의 보호를 추가하기 위하여, 컨텐츠 난독화 시스템은 조각화 모듈(203), 난독화 모듈(204), 또는 상기 모듈(203, 204) 모두의 동작에 사용되는 파라미터들을 동적으로 선택하도록 구성된다. 실제 조각화 모듈(203), 난독화 모듈(204), 자바스크립트 모듈(205)의 일부로서 구현되건 아니건, 이러한 동작들은 컨텐츠 난독화 서브시스템(201)의 "선택기(selector)" 모듈(도시되지 않음)을 제공하기 위하여 고려될 수 있다. 시간이 지나면서 이러한 속성이 변하면, 스크래퍼가 브라우저 모듈(213)로 전송된 HTML을 복호화하는 방법을 파악하기가 더 어려워진다.
여기서 기술한 바와 같은 전자책 판독기(210)의 동작을 더 설명하기 위하여, 다음의 예를 고려해 보자. “원본의(native) “ (즉, 보호되지 않은) HTML 조각 컨텐츠는 다음과 같이 나타날 수 있다:
Figure pat00001
이 예시에서, 일부 태그들이 있다면, 스크래퍼의 공급자에게는 이 극히 일반적인 HTML 요소들을 처리하는 것이 매우 단순한 프로그래밍 연습이 되어, 그 HTML 요소들은 컨텐츠의 실체(substance)를 캡처하는 과정에서 근본적으로 무시될 것이다. 전술한 것처럼, 아래 나타난 조각난 동일 컨텐츠의 일례와 같이, 조각 과정으로 웹 스크래핑 프로그램의 동작을 어렵게 할 수 있다:
Figure pat00002
HTML에서의 “스팬(span)” 태그는 이 예시에서 실제 프로세싱에서의 어떤 변화를 의미하는 것이 아니라, 단지 첨부된 요소들의 논리적 그룹화를 의미한다. 그러나, 이는 이러한 텍스트에 대한 컨텐츠를 캡쳐하는 임의의 웹 스크래핑 프로그램에게 추가적인 검색부담을 가하는데, 즉, 그러한 프로그램은 상기 프로그램이 마크(mark)하는 의미있는 컨텐츠를 추출하기 위해 수많은 태그들을 실제로 처리해야할 필요가 있기 때문에 추가적인 검색부담이 가해진다.
예컨대, 스크래퍼에게 더 부담을 주기 위하여, 난독화 모듈(204)은 그 컨텐츠에 부가적인 HTML을 추가한다:
Figure pat00003

여기서, CSS 속성(“표시“)은 실제 표시되는 텍스트 부분과 그렇지 않은 부분을 제어하는데 사용된다. 특히, “o:nth-child(2n) { display:none }“ 라인은 <o> </o> 쌍에 의해 묶인 텍스트 그룹 2개당 하나만이 표시될 것임을 의미한다. 따라서, HTML을 프로세싱하는 브라우저 모듈(213)은 “abc“는 무시하는 반면 “Whe“과 “n y“를 표시할 것이다. “표시(display)“ 속성은 단지 이러한 방식으로 사용 가능한 제어의 일례이며, 유사한 결과를 얻기 위해 (예컨대, -9999px와 같은 브라우저 윈도우의 페이지를 종료시킬 수 있는)특정 위치 또는 (투명가능한)색상으로 텍스트를 나타낼 수 있는 절대적인 위치 선택과 같은, 다른 선택들이 가능하다. 또한, 이 예시에서 삽입되는 유인 텍스트는 항상 동일(“abc“)하지만 일부 실시예에서는 스크래퍼가 이를 유인 데이터로서 식별하기 더 어렵게 하기 위하여 유인 텍스트가 동적으로 또는 랜덤하게 생성된다. DOM, CSS 및 HTML이 동작하는 방법에 대한 더 많은 정보는 당업자에게 알려져 있는 다양한 소스들, 예컨대 W3C(World Wide Web Consortium) 웹사이트로부터 이용 가능하다. 이러한 참조 중 하나는 다양한 관련 튜토리얼(tutorials)과의 링크들도 제공하는 페이지인, http://www.w3. org / standards / webdesign / htmlcss이다.
이러한 접근방식이 원래의 컨텐츠를 캡처하는데 일반화된 스크래퍼의 출력을 근본적으로 쓸모없게 할 수 있지만, 조각화 및 난독화 기법이 HTML 자체에서 뚜렷이 드러나기 때문에, 여전히 이러한 컨텐츠를 복사하고자 하는 이들에게 큰 어려움을 가하지는 않는다. 따라서, 프로그래머는 원래의 컨텐츠를 검색하기 위하여 하나의 특징을 스크래퍼에게 쉽게 기록해줌으로써 이러한 태그들을 처리할 수 있다.
일부 실시예들에서는, 원래의 컨텐츠 검색의 자동화를 좀 더 어렵게 하기 위하여, ”o:nth-child(2n) { display:none }”와 같은 정적 CSS가 난독화 모듈(204)에 의해 일부 실시예에서 생성되는 동적 CSS로 대체되는데, 상기 일부 실시예는 원래의 컨텐츠의 순서를 파싱(parse) 또는 추측(guess)하는 것을 어렵게 하는 방식으로 이루어진다. 다른 실시예들에서는, 자바스크립트 모듈(205)이 이러한 동적 CSS 생성 방식을 추가로 관리한다. 특히, 유인 데이터를 위해 이용되는 태그 타입과 유인 데이터의 위치는 이러한 목적으로 조작될 수 있는 파라미터들이다. 일 실시예에서는, 사용된 태그가 사용가능한 태그의 그룹에서 임의로 선택되며, 상기 사용가능한 태그는 표시 모듈(212)을 통해 사용자 장치(210)의 표시에 영향을 미치지 않는 것인 경우, 전술한 실시예에서 사용된 <o> </o> 쌍에 부가하여, <a> </a>, <b> </b>, <i> </i>, <s> </s> 및 기타 등등과 같은 랜덤하게 선택된 쌍들도 (HTML 프로세싱에서 다른 목적으로 특화되지 않는 한) 데이터용 “포장(wrappers)“으로 사용될 수 있다.
스크래핑을 저지하는데 사용할 수 있는 또 다른 파라미터는 실제 데이터 및 유인 데이터의 위치선정이다. 전술한 실시예에서 나타난 n차 자함수(n-th child function)는 하나의 가능성이다; 다른 실시예들에서는, HTML 분야에서 당업자들에게 알려져 있는 다른 기술들도 사용 가능하다. 일부 실시예에서는 다중 CSS 선택기들이 사용되어서, 하나의 선택기가 이전 선택기를 무효화하고, 선택기 셋이 다양한 입력 위치들을 출력 위치들에 매핑한다. 적절히 프로세스되면(즉, 예컨대 “display: inline“와 같이 적절히 마크되면), 모든 실제 데이터가 나타나는데 반해, 모든 유인 데이터는 “display: none“으로 마크되어, 전자책 판독기(211) 상에 나타나지 않는다.
실제 데이터 및 유인 데이터의 위치선정은 난독화 모듈(204)이 실제 데이터 및 유인 데이터의 패턴을 랜덤하게 할당할지를 결정하는 것을 더 어렵게 한다. 일례로서, 일 실시예에서는 각 덩어리(chunk)가 실제 데이터(“R“) 또는 유인 데이터(“G“)인, 16 덩어리의 패턴 크기가 사용된다. 이러한 하나의 패턴은 다음과 같을 수 있다:
Figure pat00004
1이 실제 데이터를 나타내는데 사용되고 0이 유인 데이터를 나타내는데 사용된다면, 상응하는 16 비트 길이 비트맵은 0xA952 또는 b1010100101010010이다.
일 실시예에서 전술한 패턴의 가시성은 다음의 선택기들에 의해 구현된다:
o:nth-child(16n+1) { display:inline; }
o:nth-child(16n+2) { display:hidden; }
o:nth-child(16n+3) { display:inline; }
o:nth-child(16n+4) { display:hidden; }
o:nth-child(16n+5) { display:inline; }
o:nth-child(16n+6) { display:hidden; }
o:nth-child(16n+7) { display:hidden; }
o:nth-child(16n+8) { display:inline; }
o:nth-child(16n+9) { display:hidden; }
o:nth-child(16n+10) { display:inline; }
o:nth-child(16n+11) { display:hidden; }
o:nth-child(16n+12) { display:inline; }
o:nth-child(16n+13) { display:hidden; }
o:nth-child(16n+14) { display:hidden; }
o:nth-child(16n+15) { display:inline; }
o:nth-child(16n) { display:hidden; }
이러한 한단계씩의 접근법은 클라이언트측 브라우저에서 파싱하는 것을 매우 느리게 하지만, 스크래퍼에게는 일부 규칙적인 표현을 기록함으로써 (즉, 전체 CSS 프로세싱 엔진을 요구하지 않고도) 파싱하는 것을 더욱 쉽게 한다. 그러나, 다시 말해, 해당 기법이 알려져 있는 경우, 대응하는 단순한 프로그래밍이 이러한 기법에 따라 원래의 컨텐츠를 검색하도록 사용되므로, 스크래퍼가 특정 선택기 구조가 사용되고 있는지 구별하지 못하는 것이 보다 바람직하다. 위치 선택기들을 난독화하기 위하여, 일 실시예에서 난독화 모듈(204)은 하나의 규칙이 이전 규칙을 무효화하는 그런, 점차 증가하는 CSS 규칙들을 적용하며, 이러한 복호화를 위한 전체 CSS 프로세싱 엔진이 제공되므로 브라우저 모듈(213)에서 적절히 복호화될 수 있는 방식으로 난독화를 수행한다. 현실적인 문제로서, 그 결과 만들어진 HTML은 스크래퍼들에 일반적으로 존재하는 단순 프로세싱 모듈들을 이용해 복호화될 수 없어야 한다. 이 예시에서, 진짜 CSS 프로세싱 모듈과 더욱 단순한 접근방식들의 차이는 진짜 CSS 프로세싱 엔진이 규칙을 선택하는 경우 현재 요소들의 CSS 속성을 필수 상태(imperative state)로 유지하여, 증가하는 규칙들을 처리할 수 있게 하는 것이다.
하나의 특정 실시예에서, 실제 데이터 및 유인 데이터를 다음과 같이 바꾸는 비트 플립(bit flip) 접근방식을 사용한다. 먼저, 초기에 시작 비트맵에서 각 비트가 실제 컨텐츠, 즉, 1111111111111111을 나타내는 식으로, 단순하다고 가정한다. 이 설명적인 실시예를 위하여, 4개의 난독화 라운드들(rounds)이 다음과 같이 적용된다: 2n+i ( 0<=i<2), 4n+j (0<=j<4), 8n+k (0<=k<8), 16n+l (0<=l<16), 여기서 i=1, j=3, k=7, l=9를 랜덤하게 고른다. 이후, 프로세싱은 다음과 같다:
제1 라운드에서 모든 2n+1 비트들이 숨겨지도록(hidden) 설정된다:
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
제2 라운드에서 모든 4n+3 비트들이 보여지도록(shown) 설정된다:
0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 1
제3 라운드에서 모든 8n+7 비트들이 숨겨지도록(hidden) 설정된다:
0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 1
마지막으로, 제4 라운드에서 모든 16n+9 비트들이 보여지도록(shown) 설정된다:
0 1 1 0 0 1 0 1 1 1 1 1 0 1 0 1
이러한 마지막 비트맵은, 서버 측에서, 실제 컨텐츠는 모든 비트들에 1이 배치되고, 유인 데이터는 모든 비트들에 0이 배치된다는 것을 의미한다. 이때, 서버로부터 브라우저로 제공되는 예시적인 출력은 다음과 같다:
<html>
<head>
<style type="text/css">
o:nth-child(2n+1) { display : none; }
o:nth-child(4n+3) { display : inline; }
o:nth-child(8n+7) { display : none; }
o:nth-child(16n+9) { display : inline; }
</style>
</head>
<body>
<o class="content">g1</o>
<o class="content">c2</o>
<o class="content">c3</o>
<o class="content">g4</o>
<o class="content">g5</o>
<o class="content">c6</o>
<o class="content">g7</o>
<o class="content">c8</o>
<o class="content">c9</o>
<o class="content">c10</o>
<o class="content">c11</o>
<o class="content">c12</o>
<o class="content">g13</o>
<o class="content">c14</o>
<o class="content">g15</o>
<o class="content">c16</o>
</body>
</html>
여기서 “c”는 실제 컨텐츠를 의미하며 "g"는 유인(또는 "가비지") 데이터를 의미한다. 이러한 HTML이 통상적인 브라우저(예컨대, Google사의 Chrome™ 브라우저)에 삽입되어 있는 경우, 브라우저가 HTML의 상위에서 스타일 시트당 CSS 규칙들을 정확히 실행하므로, 유인 태그들을 제외한 컨텐츠 태그들만이 보여질 것이다. 그러나, 일반적인 웹 스크래퍼는 이러한 CSS 규칙들을 정확히 실행할 수 없다.
추가 보호 레이어로서, 일부 실시예들에서는, 초기에 서버 컴퓨터로부터 클라이언트 컴퓨터로 전송된 CSS가 추가로 처리되며, 이는 클라이언트의 브라우저가 상기 CSS를 난독화된 컨텐츠에 적용하기 전에 처리된다. 특히, 페이지가 로드되는 경우, 자바스크립트 코드가 공급자 장치(200)(서버)에 있는 자바스크립트 모듈(205)로부터 랜덤 키(예컨대, 전술한 랜덤하게 생성된 비트맵들 중의 하나)를 획득할 것을 사용자 장치(210)(클라이언트)에 요청한다. 다른 실시예에서, 이 키는 서버에서 암호화되고, 당업자에게 알려져 있는 표준 자바스크립트 기술들을 이용해 클라이언트에서 복호화된다. 이후, 자바스크립트는 CSS를 동적으로 구성하기 위하여 비트맵을 이용한다. 이러한 방식으로, 추가적인 보호 수준들이 추가되며, 상기 추가된 보호는 CSS 복합화 및 자바스크립트 프로세싱을 할 수 있는 건전한 브라우저가 아닌 스크래핑 프로세서가 실제 컨텐츠와 유인 컨텐츠를 구분하기 어렵게 하는 것이다.
도 2에 나타난 실시예에서, 전자책 판독기(211)는 사용자 장치(210)가 원격 데이터 저장부(116)에 하나 이상의 데이터 파일들로 저장되어 있는 전자책들을 네트워크 인터페이스들(120)을 통해 표시하고 조작할 수 있도록 환경 설정하는, 사용자 장치(210) 상에서 실행되는 소프트웨어이다. 다른 실시예들에서, 이러한 책은 사용자 장치(210) 상에서 저장부(미도시)로부터 로컬 액세스된다. 브라우저 모듈(213)은 특정 전자책의 사용자 선택에 응답하여 전자책 데이터 파일들을 처리하고, 여기서 설명된 컨텐츠를 사용자 장치(210)의 표시 모듈(212)을 통해 사용자에게 보여준다.
제공 가능한 전술한 기능에 의한 시스템들 및 방법들은 구체적인 실시예들을 참조로 아래에서 보다 상세히 설명된다.
난독화 프로세싱( Obfuscation Processing )
도 3은 예시적인 실시예들에서 사용되는, 전자책의 HTML을 난독화하는 방법(300)의 고차적인 단계들을 나타내는 흐름도이다. 이 방법은 프로세싱을 위해 예컨대 데이터 저장부(116)로부터, HTML의 일부를 획득하는 단계로 시작된다(310 단계). 다음으로, 320 단계에서는, 전술한 것처럼 그 HTML 블록이 조각나게 되는데, 병렬로 배치된 유인 데이터 사이사이에 더 작은 데이터 세그먼트들을 끼워넣도록 쪼갠다. 다른 실시예들에서는 스크래퍼가 유인 데이터 및 실제 데이터를 구분하기 어렵게 하기 위하여 둘다 동적으로 크기가 부여되는데 반해, 일부 실시예들에서는, 실제 데이터와 유인 데이터 세그먼트들이 고정된 크기를 갖는다.
다음으로, 330 단계에서는, 동적 선택기 프로세싱이 전술한 것과 같이 수행된다. 다양한 실시예들에서, 전술한 것처럼 비트 플리핑(bit-flipping)을 통하는 등, 범용 웹 스크리퍼가 정확히 해석하는 것을 어렵게 하는 방식으로 다른 타입의 CSS 선택기들이 생성되고, 유지된다.
다음으로, 340 단계에서는, HTML 컨텐츠가 선택기들에 따라 난독화되어, 선택기 기법에 따라 실제 데이터 및 유인 데이터가 섞인 HTML 블록을 도출하되, 상기 선택기 기법은 HTML을 해석하는 스크래퍼가 아닌 인증된 표시 장치(예컨대, 표시 모듈(212) 및 브라우저 모듈(213))에 의해 처리될 수 있다. 마지막으로, 350 단계에서, HTML은 컨텐츠 표시를 위해 표시 장치로 전송된다.
조각화 단계가 단순히 원래 데이터가 어디서 조각나는지를 정의하고, 난독화 단계가 원래 데이터의 세그먼트들 사이에 무엇이 삽입되는지를 결정하는 일부 실시예들에서, 선택기들을 통한 조각화 및 난독화 단계는 주로 독립적인 프로세스일 것이다. 다른 구현예들에서는, 하나의 프로세스가 다른 프로세스 전에 수행되고, 조각화 및 난독화 기능들이 보다 밀접하게 결합 및 통합될 수 있음을 이해될 수 있을 것이다. 특정 구현예가 사용 환경에 적합하게 선택된다면(예컨대, 덜 정교한 사용자 장치들과 저작권 침해의 우려가 적은 경우에 대해서는 더욱 단순한 기법이 적용됨), 예상되는 브라우저 프로세스(즉, ”타겟” 브라우저)는 해석하기 쉽지만 예상되는 스크래퍼 프로세서(즉, ”타겟” 스크래퍼)는 해석하기 어려운 정도의 방식이 실제 및 유인 데이터를 해석하는 임의의 방식으로서 유용한 결과를 낼 수 있다.
도 4는 일 실시예에서 조각화 단계(예컨대, 도 3의 320 단계)를 위한 예시적인 과정(400)을 나타낸다. 421 단계에서 이 과정(400)이 호출되고 난 후, HTML의 일부가 상응하는 규칙들, 예컨대, 전술한 규칙들에 따라, 422 단계에서 데이터 스트링에 추가될 수 있다. 다음으로, 423 단계에서 전술한 상응하는 규칙마다 유인 데이터의 일부가 다시 추가된다. 처리할 HTML이 더 있는 경우, 424 단계에서의 처리가 422 단계로 되돌아온다; 그렇지 않으면, 처리가 425 단계에서 종료된다.
[00058]. 도 5는 일 실시예에서 동적 선택기 처리(예컨대, 도 3의 330 단계)를 위한 예시적인 과정(500)을 나타낸다. 과정(500)이 531 단계에서 호출되고 난 후, 예컨대 전술한 것처럼 선택기 O:nth-child(2n+1) { display:none; }를 선택하기 위하여, 선택기 레벨이 532 단계에서 점차 증가한다. 533 단계에서, 선택기가 HTML 데이터의 현재 부분을 처리하기 위한 능동 선택기로서 적용된다. 전술한 예시에서 O:nth-child(4n+3) { display:inline; }와 같이, 처리하기 위한 선택기 레벨들이 더 있는 경우라면, 이후, 534 단계에서 처리가 532 단계로 되돌아온다; 그렇지 않으면, 처리가 535 단계에서 종료된다.
도 6은 일 실시예에서 난독화 처리(예컨대, 도 3의 340 단계)을 위한 예시적인 과정(600)를 나타낸다. 과정(600)이 641 단계에서 호출되고 난 후, 난독화 처리의 대상이 되는 데이터의 다음 부분이 642 단계에서 그랩(grab)되고, 전술한 것처럼 현재 적용 가능한 규칙들에 대하여, 컨텐츠 데이터가 642 단계에서 난독화된다. 처리할 데이터가 더 많은 경우라면, 644 단계에서 처리가 642 단계로 되돌아온다; 그렇지 않으면 처리가 645 단계에서 종료된다.
추가적인 구성 고려( Additional Configuration Considerations )
본 명세서를 통해, 복수의 사례들이 하나의 사례로 설명된 컴포넌트들, 동작들, 또는 구조들을 통해 구현될 수 있다. 비록 하나 이상의 방법들의 개별적인 동작들이 분리된 동작들로서 예시되고 설명되었지만, 하나 이상의 개별적인 동작들이 동시에 실행될 수 있으며, 동작들이 예시된 순서로 실행되지 않아도 된다. 구성들 예시에서, 분리된 컴포넌트들로 나타난 구조들 및 기능은 조합된 구조 또는 컴포넌트로 구현될 수 있다. 마찬가지로, 단일 컴포넌트로 나타난 구조들 및 기능은 분리된 컴포넌트들로 구현될 수 있다. 이들 및 다른 응용, 수정, 추가, 및 개선이 본 발명의 대상(subject matter) 범위 내에 속한다.
임의의 실시예들은 여기서 로직 또는 많은 컴포넌트들, 모듈들, 또는 메커니즘들을 포함하는 것으로서 설명되어 있다. 모듈들은 소프트웨어 모듈들(예컨대, 기계로 판독가능한 매체 또는 전송 신호에 구현된 코드) 또는 하드웨어 모듈들을 구성할 수 있다. 하드웨어 모듈은 임의의 동작들을 실행하는 유형의 유닛이고, 임의의 방식으로 구성되거나 마련될 수 있다. 예시적인 실시예들에서, 여기에 설명된 것처럼 임의의 동작들을 실행하기 위해 동작하는 하드웨어 모듈과 같이, 하나 이상의 컴퓨터 시스템들(예컨대, 독립형, 클라이언트 또는 서버 컴퓨터 시스템) 또는 컴퓨터 시스템의 하나 이상의 하드웨어 모듈들(예컨대, 프로세서 또는 프로세서 그룹)이 소프트웨어(예컨대, 어플리케이션 또는 어플리케이션 일부)로 구성될 수 있다.
다양한 실시예들에서, 하드웨어 모듈은 기계적으로 또는 전기적으로 구현될 수 있다. 예컨대, 하드웨어 모듈은 임의의 동작들을 실행하기 위하여, (예컨대, FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit) 등 특화된 프로세서처럼) 영구적으로 구성된 전용의 전기회로 또는 로직을 포함할 수 있다. 하드웨어 모듈은 또한 임의의 동작들을 실행하기 위하여 소프트웨어로 임시 구성된 프로그래머블 로직 또는 전기회로를 (예컨대, 범용 프로세서 또는 다른 프로그래머블 프로세서 내에 포함된 것처럼)포함할 수 있다. 전용으로 그리고 영구적으로 구성된 전기회로에서, 또는 임시로 구성된 전기회로(예컨대, 소프트웨어에 의해 구성된 전기회로)에서, 하드웨어 모듈을 기계적으로 구현하는 결정은 비용 및 시간을 고려하여 이루어질 수 있을 것이다.
여기서 설명하는 예시적인 방법들의 다양한 동작들은, 적어도 부분적으로, 관련 동작들을 실행하기 위해 임시로 구성된(예컨대, 소프트웨어에 의해) 또는 영구적으로 구성된, 하나 이상의 프로세서들에 의해 실행될 수 있다. 임시적으로 구성되던 영구적으로 구성되던 간에, 이러한 프로세서들은 하나 이상의 동작들 또는 기능들을 실행하기 위하여 동작하는 프로세서로-구현된 모듈들을 포함할 수 있다. 일부 예시적인 실시예들에서, 여기에 언급된 모듈들은 프로세서로-구현된 모듈들을 포함한다.
또한, 하나 이상의 프로세서들은 "클라우드 컴퓨팅” 환경에서 관련 동작들의 성능을 지원하기 위해 또는 "SaaS(software as a service)”로서 동작할 수 있다. 예컨대, 그 동작들의 적어도 일부는 컴퓨터 그룹((프로세서들을 포함하는 기계들의 예시로서)에 의해 실행될 수 있으며, 이러한 동작들은 네트워크(예컨대, 인터넷) 및 하나 이상의 적절한 인터페이스들(예컨대, APIs(application program interfaces))을 통해 액세스 가능하다.
이 동작들 일부의 성능은, 단일 장치 내에 속해있는 것뿐 아니라 여러 장치들에 걸쳐 상주해 있는, 하나 이상의 프로세서들에 분산될 수 있다. 일부 예시적인 실시예들에서, 하나 이상의 프로세서들 또는 프로세서로-구현된 모듈들은 하나의 지리적 위치(예컨대, 집 환경, 사무실 환경, 또는 서버 팜(farm) 내)에 위치할 수 있다. 다른 예시적인 실시예들에서, 하나 이상의 프로세서들 또는 프로세서로-구현된 모듈들은 여러 지리적 위치들에 분산될 수 있다.
본 명세서의 일부분들은 동작들의 알고리즘들 또는 상징적인 표현들 측면에서 기계 메모리(예컨대, 컴퓨터 메모리) 내에 비트들 또는 이진 디지털 신호들로 저장된 데이터로 제공된다. 이러한 알고리즘들 또는 상징적인 표현들은 다른 분야의 기술자들에게 자신들의 작업의 본질을 전달하기 위하여, 데이터 프로세싱 분야의 당업자들에 의해 사용되는 기술들의 예시이다. 여기서 사용된 것처럼, ”알고리즘(algorithm)” 은 원하는 결과를 유도하는 동작이나 유사한 처리에 관한 일관성 있는 동작 시퀀스이다. 이러한 맥락에서, 알고리즘들 및 동작들은 물리적 수량의 물리적 조작(physical manipulation of physical quantities)을 포함한다. 일반적으로, 반드시는 아니지만, 이러한 수량은 저장되고, 액세스되고, 이동되고, 조합되고, 비교되거나, 그렇지 않으면 기계에 의해 조작될 수 있는, 전기적, 자기적, 또는 광학적 신호 형태를 취할 수 있다. 때때로, 원칙적으로는 공통의 사용을 이유로, 이러한 신호들을 “데이터(data)“, “컨텐츠(content)", “비트(bits)", “값(values)", “요소(elements)", “심볼(symbols)", “캐릭터(characters)", “용어(terms)", “번호(numbers)", “숫자(numerals)" 등과 같은 단어들로 지칭하는 것이 편리하다. 그러나, 이러한 단어들은 단지 편리한 라벨들이며, 적절한 물리적 수량과 연관된다.
특별히 달리 명시하지 않는 한, 여기서 “프로세싱(processing)", “컴퓨팅(computing)", “연산(calculating)", “결정(determining)", “제시(presenting)", “표시(displaying)" 등과 같은 단어들을 사용한 논의들은, 하나 이상의 메모리들(휘발성 메모리, 비휘발성 메모리, 또는 이들의 조합), 레지스터들이나 정보를 수신, 저장, 전송, 또는 표시하는 다른 기계 컴포넌트들 내에서 물리적(예컨대, 전기적, 자기적, 또는 광학적) 수량으로 표현되는 데이터를 조작하거나 전송하는, 기계(예컨대, 컴퓨터)의 행동들 또는 프로세스들을 지칭할 것이다.
여기서 “일 실시예" 또는 “하나의 실시예"라 함은 그 실시예와 관련되어 설명된 개별 요소, 특징, 구조, 또는 특성이 적어도 일 실시예에 포함됨을 의미한다. 본 명세서에서 “일 실시예에서"라는 용어를 여러 군데에서 사용한 것은 모두가 동일한 실시예를 지칭하는 것이 아니라는 의미이다.
일부 실시예들은 그 파생물들과 “결합된(coupled)" 및 “연결된(connected)"이라는 표현을 이용해 설명될 수 있다. 예컨대, 둘 이상의 요소들이 직접 물리적 또는 전기적으로 접촉되어 있음을 나타내기 위하여, 일부 실시예들은 “결합된“이라는 용어로 설명될 수 있다. 그러나, “결합된“이라는 용어는 또한 둘 이상의 요소들이 직접 서로 접촉되어 있지 않지만 여전히 서로 협력하거나 상호작용함을 의미할 수 있다. 실시예들은 이러한 문맥에 한정되지 않는다.
여기서, “포함한다(comprises)", “포함하는(comprising)“, “포함하다(includes)", “포함하는(including)", “가진다(has)", “가지는(having)" 이라는 용어들 또는 그들의 임의의 다른 변형은, 배타적이지 않은 포함을 망라하는 것을 의도한다. 예컨대, 요소 목록을 포함하는 프로세스, 방법, 항목, 또는 장치는 이러한 요소들만으로 제한되는 것이 아니라 명백히 기재되어 있거나 이러한 프로세스, 방법, 항목, 또는 장치에 내재되어 있는 다른 요소들을 포함할 수 있다. 나아가, 명백히 반대로 명시하지 않는 한, “또는"은 배타적 선택의 의미가 아니라 포괄적인 선택을 가리키는 것을 의미한다. 예컨대, 조건 A 또는 B는 다음 중의 하나를 만족한다: A는 참이고(또는 나타난다) B는 거짓이다(또는 나타나지 않는다), A는 거짓이고(또는 나타나지 않는다) B는 참이다(또는 나타난다), 및 A와 B 모두 참이다(또는 나타난다).
또한, “하나의(a)" 또는 "하나의(an)"의 사용은 여기서 실시예들의 요소들 및 컴포넌트들을 설명하기 위하여 채택된다. 이는 단지 편의를 위해서, 그리고 발명을 일반적으로 이해시키기 위해서이다. 이 설명은 하나 또는 적어도 하나를 포함한다고 읽어야 하며, 해당 단수(singular)는 또한 그렇지 않음을 의미하는 것이 명백하지 않는 한 복수를 포함한다.
이 개시를 읽으면, 당업자들은 여기에 개시된 원칙들을 통해 무단 액세스로부터 전자책을 보호하는 시스템 및 프로세스용으로, 여전히 추가적인 대안이 되는 구조적이고 기능적인 디자인들을 인식할 수 있을 것이다. 따라서, 개별적인 실시예들 및 어플리케이션들이 기술 및 설명되어 있으나, 개시된 실시예들이 여기에 개시된 정확한 구조 및 컴포넌트들에 한정되지 않음을 이해할 수 있을 것이다. 첨부된 첨구범위로 정의되는 기술사상 및 범위로부터 벗어나지 않고서, 당업자들에게 자명할 수 있는, 여기에 개시된 배열, 동작과 세부 방법 그리고 장치에서 다양한 수정들, 변경들 및 변형들이 만들어질 수 있다.

Claims (20)

  1. 컨텐츠 데이터가 처리되는 컴퓨터의 사용자에 의한 무단 액세스로부터 전자책 컨텐츠 데이터를 보호하는 방법에 있어서,
    상기 컨텐츠 데이터를 복수의 섹션들로 분할함으로써, 상기 컨텐츠 데이터를 조각(shredding)내는 단계; 및
    프로세서에 의해, 사용자에게 자명하지 않은 방식으로 유인 데이터의 복수의 부분들을 상기 복수의 섹션들 사이사이에 섞음으로써, 상기 컨텐츠 데이터를 난독화(obfuscating)하는 단계를 포함하는, 전자책 컨텐츠 데이터를 보호하는 방법.
  2. 제1항에 있어서,
    상기 섞는 과정은 선택된 패턴에 응답하여 수행되는, 전자책 컨텐츠 데이터를 보호하는 방법.
  3. 제1항에 있어서,
    상기 컨텐츠 데이터는 HTML 포맷으로 저장되고, 상기 조각내는 단계는 상기 복수의 섹션들을 정의하기 위한 HTML 태그들을 추가하는 단계를 포함하는, 전자책 컨텐츠 데이터를 보호하는 방법.
  4. 제1항에 있어서,
    상기 방식은 동적으로 생성된 연쇄 스타일 시트들(cascading style sheets)을 이용해 구현된 선택기들을 적용하는 단계를 포함하는, 전자책 컨텐츠 데이터를 보호하는 방법.
  5. 제1항에 있어서,
    상기 방식은 임의 추출된 연쇄 스타일 시트들을 생성하기 위해 자바스크립트 프로세싱에 의해 구현된 선택기들을 적용하는 단계를 포함하는, 전자책 컨텐츠 데이터를 보호하는 방법.
  6. 제2항에 있어서,
    상기 패턴은 복수의 비트들을 포함하고, 상기 선택 과정은 사용자에게 자명하지 않은 방식으로 비트 서브셋을 플리핑(flipping)하는 단계를 포함하는, 전자책 컨텐츠 데이터를 보호하는 방법.
  7. 제1항에 있어서,
    상기 난독화하는 단계의 결과는 HTML 코드이며, 상기 HTML 코드는 타겟 브라우저에 의해서 정확히 처리될 수 있으나, 타겟 스크래퍼에 의해서 정확히 처리될 수 없는, 전자책 컨텐츠 데이터를 보호하는 방법.
  8. 컨텐츠 데이터가 처리되는 컴퓨터의 사용자에 의한 무단 액세스로부터 전자책 컨텐츠 데이터를 보호하는 시스템에 있어서,
    상기 컨텐츠 데이터를 복수의 섹션들로 분할하는 조각화 모듈(shredding module); 및사용자에게 자명하지 않지만 사용자에 의한 허가된 액세스에 사용되는 프로세싱에 따른 방식으로, 유인 데이터의 복수의 부분들을 상기 복수의 섹션들 사이사이에 섞는 난독화 모듈(obfuscation module)을 포함하는, 전자책 컨텐츠를 보호하는 시스템.
  9. 제8항에 있어서,
    상기 난독화 모듈은 선택된 패턴에 응답하여 섞도는, 전자책 컨텐츠 데이터를 보호하는 시스템.
  10. 제8항에 있어서,
    상기 컨텐츠 데이터는 HTML 포맷으로 저장되고, 상기 조각화 모듈은 상기 복수의 섹션들을 정의하기 위한 HTML 태그들을 추가하는, 전자책 컨텐츠 데이터를 보호하는 시스템.
  11. 제8항에 있어서,
    상기 난독화 모듈은 동적으로 생성된 연쇄 스타일 시트들을 통해 상기 방식을 구현하는, 전자책 컨텐츠 데이터를 보호하는 시스템.
  12. 제8항에 있어서,
    상기 난독화 모듈과 통신하는 자바스크립트 모듈을 더 포함하되, 상기 자바스크립트 모듈은 자바스크립트를 이용한 임의 추출된 연쇄 스타일 시트들 생성을 통해 상기 방식을 구현하는, 전자책 컨텐츠 데이터를 보호하는 시스템.
  13. 제9항에 있어서,
    상기 패턴은 복수의 비트들을 포함하고, 상기 방식은 사용자에게 자명하지 않은 방식으로 비트 서브셋을 플리핑하는 단계를 포함하는, 전자책 컨텐츠 데이터를 보호하는 시스템.
  14. 제8항에 있어서,
    상기 난독화 모듈은 출력으로서 HTML 코드를 추가로 제공하며, 상기 HTML 코드는 상기 컴퓨터 상에서 동작하는 타겟 브라우저 프로세서에 의해서 정확히 처리될 수 있으나, 상기 컴퓨터 상에서 동작하는 타겟 스크래퍼에 의해서는 정확히 처리될 수 없는, 전자책 컨텐츠 데이터를 보호하는 시스템.
  15. 컨텐츠 데이터가 처리되는 컴퓨터의 사용자에 의한 무단 액세스로부터, 전자책 컨텐츠 데이터를 보호하기 위한 명령들을 저장하도록 구성된, 비일시적인 컴퓨터 판독가능 매체(non-transitory computer readable medium)에 있어서,상기 명령들이 프로세서에 의해 실행되는 경우, 상기 프로세서가,
    상기 컨텐츠 데이터를 복수의 섹션들로 분할함으로써, 상기 컨텐츠 데이터를 조각내고(shred);
    사용자에게 자명하지 않은 방식으로 유인 데이터의 복수의 부분들을 상기 복수의 섹션들 사이사이에 섞음으로써, 상기 컨텐츠 데이터를 난독화하게(obfuscate) 하는, 비일시적인 컴퓨터 판독가능 매체.
  16. 제15항에 있어서,
    상기 섞는 과정은 선택된 패턴에 응답하여 수행되는, 비일시적인 컴퓨터 판독가능 매체.
  17. 제15항에 있어서,
    상기 컨텐츠 데이터는 HTML 포맷으로 저장되고, 상기 조각내기 위한 명령들은 상기 복수의 섹션들을 정의하는 HTML 태그들을 추가하기 위한 명령들을 포함하는, 비일시적인 컴퓨터 판독가능 매체.
  18. 제15항에 있어서,
    상기 방식은 동적으로 생성된 연쇄 스타일 시트들을 이용해 구현된 선택기들을 적용하는 과정을 포함하는, 비일시적인 컴퓨터 판독가능 매체.
  19. 제15항에 있어서,
    상기 방식은 임의 추출된 연쇄 스타일 시트들을 생성하기 위하여 자바스크립트 프로세싱에 의해 구현된 선택기들을 적용하는 과정을 포함하는, 비일시적인 컴퓨터 판독가능 매체.
  20. 제16항에 있어서,
    상기 패턴은 복수의 비트들을 포함하고, 상기 선택을 위한 명령은 사용자에게 자명하지 않은 방식으로 비트 서브셋을 플리핑하는 명령들을 포함하는, 비일시적인 컴퓨터 판독가능 매체.
KR1020130044106A 2012-04-23 2013-04-22 전자책 컨텐츠 보호 Expired - Fee Related KR102042722B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/453,146 2012-04-23
US13/453,146 US9015851B2 (en) 2012-04-23 2012-04-23 Electronic book content protection

Publications (2)

Publication Number Publication Date
KR20130119359A true KR20130119359A (ko) 2013-10-31
KR102042722B1 KR102042722B1 (ko) 2019-11-08

Family

ID=48044660

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130044106A Expired - Fee Related KR102042722B1 (ko) 2012-04-23 2013-04-22 전자책 컨텐츠 보호

Country Status (4)

Country Link
US (1) US9015851B2 (ko)
EP (1) EP2657873B1 (ko)
KR (1) KR102042722B1 (ko)
CN (1) CN103377325B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10846417B2 (en) * 2017-03-17 2020-11-24 Oracle International Corporation Identifying permitted illegal access operations in a module system
KR102355235B1 (ko) * 2020-10-15 2022-02-07 주식회사 디알엠인사이드 웹 브라우저 기반 컨텐츠의 보안을 위한 서비스 제공 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9444797B2 (en) * 2014-07-10 2016-09-13 Empire Technology Development Llc Protection of private data
US9824075B1 (en) * 2016-03-31 2017-11-21 Google Inc. System and method for interaction coverage
KR102613685B1 (ko) * 2022-11-11 2023-12-14 주식회사 리로소프트 콘텐츠 무단 복사 무력화 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110185434A1 (en) * 2008-06-19 2011-07-28 Starta Eget Boxen 10516 Ab Web information scraping protection
US20110219455A1 (en) * 2010-03-04 2011-09-08 International Business Machines Corporation Random injection-based deactivation of web-scrapers
US20110283363A1 (en) * 2009-01-19 2011-11-17 Koninklijke Philips Electronics N.V. Browser with dual scripting engine for privacy protection
US20120057707A1 (en) * 2010-09-03 2012-03-08 Fang Ko Cheng Method of abolishing unauthorized copying of digital data stored on an optical disc

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0929040A3 (en) * 1997-12-25 2007-06-27 Nippon Telegraph and Telephone Corporation Microprocessor with data randomizing
JP2000099501A (ja) * 1998-09-17 2000-04-07 Internatl Business Mach Corp <Ibm> 文書データへの情報の埋め込み方法およびシステム
US6832215B2 (en) * 2000-07-21 2004-12-14 Microsoft Corporation Method for redirecting the source of a data object displayed in an HTML document
JP2002132586A (ja) * 2000-10-25 2002-05-10 Pumpkin House:Kk コンテンツへの情報埋込み方法および装置,コンテンツ復元方法および装置,ならびに情報取出し方法および装置
JP2004302818A (ja) * 2003-03-31 2004-10-28 Clarion Co Ltd ハードディスク装置、情報処理方法及びプログラム
US8130746B2 (en) * 2004-07-28 2012-03-06 Audible Magic Corporation System for distributing decoy content in a peer to peer network
CN101059800A (zh) * 2006-04-21 2007-10-24 上海晨兴电子科技有限公司 在手机上显示电子书的方法和设备
GB0620855D0 (en) * 2006-10-19 2006-11-29 Dovetail Software Corp Ltd Data processing apparatus and method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110185434A1 (en) * 2008-06-19 2011-07-28 Starta Eget Boxen 10516 Ab Web information scraping protection
US20110283363A1 (en) * 2009-01-19 2011-11-17 Koninklijke Philips Electronics N.V. Browser with dual scripting engine for privacy protection
US20110219455A1 (en) * 2010-03-04 2011-09-08 International Business Machines Corporation Random injection-based deactivation of web-scrapers
US20120057707A1 (en) * 2010-09-03 2012-03-08 Fang Ko Cheng Method of abolishing unauthorized copying of digital data stored on an optical disc

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10846417B2 (en) * 2017-03-17 2020-11-24 Oracle International Corporation Identifying permitted illegal access operations in a module system
KR102355235B1 (ko) * 2020-10-15 2022-02-07 주식회사 디알엠인사이드 웹 브라우저 기반 컨텐츠의 보안을 위한 서비스 제공 방법

Also Published As

Publication number Publication date
CN103377325B (zh) 2016-08-10
CN103377325A (zh) 2013-10-30
US9015851B2 (en) 2015-04-21
EP2657873A3 (en) 2015-03-25
KR102042722B1 (ko) 2019-11-08
EP2657873A2 (en) 2013-10-30
US20130283384A1 (en) 2013-10-24
EP2657873B1 (en) 2017-06-07

Similar Documents

Publication Publication Date Title
US8700991B1 (en) Protecting content presented in a web browser
TWI461937B (zh) 用於選擇性保護網頁瀏覽器之廣告顯示的方法及系統
JP5793722B2 (ja) 未承認フォントのリンクの防止
US9229995B2 (en) Extracting data from business intelligence files
CN103870583B (zh) 一种基于关系型数据库的在线可控浏览pdf文档的方法
JP5735539B2 (ja) ネットワークを介して送信されるデータの暗号化および復号化システム、装置、および方法
US9536096B2 (en) Presenting visualizations of business intelligence data
KR102042722B1 (ko) 전자책 컨텐츠 보호
US20170337168A1 (en) System and method for generating and monitoring feedback of a published webpage as implemented on a remote client
US9582475B2 (en) Packaging business intelligence documents with embedded data
CN102473171A (zh) 将有关本地机器的信息传达给浏览器应用
WO2015107935A1 (ja) フォント配信システム、及びフォント配信方法
US8887290B1 (en) Method and system for content protection for a browser based content viewer
US11436520B2 (en) Redaction of artificial intelligence training documents
JP2015135638A5 (ko)
ES2717462T3 (es) Edición colaborativa
Heiderich et al. Crouching tiger-hidden payload: security risks of scalable vectors graphics
WO2012177479A2 (en) Collecting user feedback about web pages
CN104715004A (zh) 混淆页面描述语言输出以阻碍转换为可编辑格式
JP5922640B2 (ja) 閲覧制御装置、閲覧制御方法および閲覧制御プログラム
US10587731B2 (en) Method and system for providing electronic document, mother book server and child book client
JP2008217652A (ja) データ管理システム、データ管理サーバ、およびデータ管理プログラム
JP2007281673A (ja) 情報処理装置および情報処理プログラム
CN115834254B (zh) 网络内容安全防护方法、装置、存储介质及电子设备
US20100169637A1 (en) Palette for real-time display of previously accessed documents

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20130422

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20180124

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20130422

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20190410

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20190910

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20191104

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20191105

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20221020

Start annual number: 4

End annual number: 4

PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20240815