KR101823016B1 - 외부 코드 인증을 통한 웹 브라우징 오버헤드들의 감소 - Google Patents
외부 코드 인증을 통한 웹 브라우징 오버헤드들의 감소 Download PDFInfo
- Publication number
- KR101823016B1 KR101823016B1 KR1020147023616A KR20147023616A KR101823016B1 KR 101823016 B1 KR101823016 B1 KR 101823016B1 KR 1020147023616 A KR1020147023616 A KR 1020147023616A KR 20147023616 A KR20147023616 A KR 20147023616A KR 101823016 B1 KR101823016 B1 KR 101823016B1
- Authority
- KR
- South Korea
- Prior art keywords
- operations
- processor
- actions
- tool
- browser
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
-
- 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
사전-프로세싱된 코드의 사용 또는 재사용이 웹 페이지 컨텐츠 내의 일부 스크립트들을 실행하거나 일부 동작들을 수행하기 위한 필요성을 명백하게 하기 위해 사전-프로세싱된 코드에 내장된 서명들/인증들을 사용하기 위한 방법들, 서버들 및 시스템들. 하나 이상의 동작들은 대응하는 동작은 브라우저에 의해 스킵될 수 있음을 검증하기 위해 사용될 수 있는 방식으로 웹 페이지 컨텐츠 내의 실행가능한 스크립트 내에서 수행되어 동작의 결과를 서명할 수 있다. 서명된 사전-프로세싱된 코드를 수신하는 브라우저는 브라우저가 웹 페이지 컨텐츠 내의 대응하는 스크립트들의 실행을 우회할 수 있는지 또는 대안적인 동작을 수행할 수 있는지의 여부를 결정하기 위해 서명 검증 프로세스를 사용할 수 있다. 동작들은 미리-수행될 수 있고, 결과들이 오프-라인 툴들에 의해 서명되어 웹 페이지 컨텐츠에 포함된다. 동작들의 결과들은 동작의 결과들이 차후 재사용될 수 있도록 서명과 함께 메모리에 저장될 수 있다.
Description
이 출원은 2012년 1월 26일에 "Reducing Web Browsing Overheads with External Code Certification"라는 명칭으로 출원되었으며, 그 전체 내용이 인용에 의해 본원에 포함된, 미국 가출원 제61/591141호를 우선권으로 주장한다.
브라우저 기술에 있어서 많은 최근의 진보들에도 불구하고, 웹 브라우저들은 일반적으로 복잡한-계산 집약적 작업들을 수행하기 위한 그 능력에 있어서 여전히 부족하다. 이러한 그리고 다른 제한들을 다루기 위해, 일부 웹 브라우저들은 원격 서버에 웹 브라우저들의 작업들/프로세싱 중 일부 또는 모두를 분담(offload)시킬 수 있다. 예를 들어, 일부 웹 브라우저들(예를 들어, Opera™ Mini)은 웹 페이지들을 브라우저에 송신하기 이전에 웹 페이지들을 이미지 파일들로 프로세싱하고 압축하는 서버들로부터 웹 페이지들을 요청하도록 구성될 수 있다. 이러한 시스템들에서, 브라우저는, 서버가 페이지의 디스플레이와 연관된 거의 모든 프로세싱/작업들을 수행하는 것에 의존하여, 단순히 이미지를 수신하고 렌더링한다.
다른 웹 브라우저들(예를 들어, Amazon silk)은 작업들/프로세싱 중 오직 일부가 서버에 분담되는 분할 아키텍쳐를 사용할 수 있다. 그러나 이러한 분할 아키텍쳐는 일반적으로 미리 정의된 서버들 및 사유 브라우저들의 사용을 요구한다. 또한, 웹 브라우저들(사유이든 아니든 간에)은 이미 수행된 작업들에 대해, 또는 사전-프로세싱된 결과들이 현재(예를 들어, 컨텐츠 등에 대한 최근 업데이트들/변경들의 관점에서) 존재하는지의 여부를 항상 완전히 통지받지는 않는다. 사전-프로세싱된 코드의 유효성을 보증하기 위한 메커니즘 없이는, 브라우저는 코드가 효율적으로 인코딩되었는지를 결정할 수 없고 그리고/또는 연관된 페이지를 렌더링하도록 요구된 바와 같이 수행하기 위해 다른 방식으로 신뢰받을 수 있다. 예를 들어, 통상적인 웹 브라우저들은 잠재적으로 해로운 프로세서들에 대한 의심스러운 크리덴셜(credential)들로 웹사이트로 계속 진행하기 전에 잠재적인 문제들 및 위험들을 확인응답하기 위하여 사용자에게 프롬프트할 수 있다. Challenger 등에 의한 국제 공개 특허 출원 WO 02/089001는 HTML 도큐먼트의 텍스트를 링크들 같은 이미지 영역 내에 엘리먼트들의 포함을 위해 맵핑될 수 있는 이미지 파일로 변환함으로써 스크립트들 및 캐스케이딩 스타일 시트들에 대한 필요를 감소시키는 것을 개시한다. Evehart에 의한 미국 특허 번호 7,747,866은 고객이 판매 가격 같은 임의의 판매 데이터를 부적당하게 변형하지 못하게 하는 것을 보장하기 위하여 동일한 포맷으로 고객으로부터 판매자로 리턴되어야 하는 트랜잭션 이전에 데이터 스트링을 생성함으로써 고객 부정으로부터 판매자를 보호하는 것을 개시한다. Brette에 의한 유럽 공개 특허 출원 번호 EP 1 091 276은 아카이브 파일(archive file)로부터 요청된 리소스를 리트리빙하기 전에 사용자 요청 리소스를 포함하는 아카이브 파일의 유효성을 검증하기 위하여 클라이언트 단말에 대한 서명 인증을 사용하는 것을 개시한다.
다양한 양상들은 각각이 서명과 연관된 하나 이상의 사전-수행된 동작들을 포함하는 컨텐츠를 브라우저에서 수신하는 것, 사전-수행된 동작들 중 적어도 하나와 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하는 것, 서명 검증 프로세스가 사전-수행된 동작과 연관된 서명을 확인할 때 제1 동작을 수행하는 것, 및 서명 검증 프로세스가 사전-수행된 동작과 연관된 서명을 확인하지 못할 때 제2 동작을 수행하는 것을 포함하는, 브라우저에서 컨텐츠를 프로세싱하는 방법들을 포함한다.
양상에서, 제1 동작을 수행하는 것은 사전-수행된 동작을 포함시키는 것을 포함한다. 추가적인 양상에서, 제1 동작을 수행하는 것은 사전-수행된 동작과 연관된 브라우저 동작을 스킵하는 것을 포함한다. 추가적인 양상에서, 제1 동작을 수행하는 것은 사전-수행된 동작과 연관된 브라우저 동작을 변경하는 것을 포함한다. 추가적인 양상에서, 제2 동작을 수행하는 것은 사전-수행된 동작과 연관된 브라우저 동작을 수행하는 것을 포함한다. 추가적인 양상에서, 사전-수행된 동작과 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하는 것은 사전-수행된 동작과 연관된 브라우저 동작이 더 양호한 결과들을 달성하기 위해 스킵될 수 있는지 또는 상이하게 수행될 수 있는지를 결정하는 것을 포함한다. 추가적인 양상에서, 방법은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠의 실행 가능 스크립트에 대응하는 코드에 대해 툴 동작들을 수행하는 것, 및 사전-수행된 동작들을 서명하는 것을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것은 브라우저 내에서 툴 동작들을 수행하는 것을 포함한다. 추가적인 양상에서, 각각이 서명과 연관된 하나 이상의 사전-수행된 동작들을 포함하는 컨텐츠를 수신하는 것은 브라우저가 실행 중인 컴퓨팅 디바이스의 메모리로부터 서명된 사전-프로세싱된 코드를 리트리브하는 것을 포함한다. 추가적인 양상에서, 방법은 컴퓨팅 디바이스의 메모리에서 제1 또는 제2 동작의 결과를 저장하는 것을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것은 오프라인 툴에서 툴 동작들을 수행하는 것을 포함하고, 방법은 브라우저에 서명된 사전-수행된 동작들을 송신하는 것을 더 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것은 서버에서 툴 동작들을 수행하는 것을 포함하고, 방법은 브라우저가 실행 중인 컴퓨팅 디바이스에 서명된 사전-수행된 동작들을 송신하는 것을 더 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것은 JavaScript를 생성하는 것을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것은 캐스케이딩 스타일 시트를 생성하는 것을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것은 소스 대 소스 변환을 수행하는 것을 포함한다. 추가적인 양상에서, 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것은 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하는 것을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에서 실행가능한 스크립트에 대응하는 코드에 대해 툴 동작들을 수행하는 것을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠의 실행가능한 스크립트에 대응하는 코드에 대해 툴 동작들을 수행하는 것은 웹 페이지 컨텐츠의 일부분을 사전-프로세싱하는 것을 포함한다. 추가적인 양상에서, 방법은 웹 페이지 컨텐츠 내에 코드의 서명된 사전-프로세싱된 부분을 포함시키는 것, 및 브라우저가 동작 중인 컴퓨팅 디바이스에 컨텐츠를 송신하는 것을 더 포함한다. 추가적인 양상에서, 사전-프로세싱된 코드를 서명하는 것은 유효성 검사기(validator)에 의해 달성된다. 추가적인 양상에서, 사전-프로세싱된 코드를 서명하는 것은 특정 규정들이 사전-프로세싱하는 동작에서 준수되었음을 인증하는 서명을 제공하는 것을 포함한다.
추가적인 양상들은 각각이 서명과 연관된 하나 이상의 사전-수행된 동작들을 포함하는 컨텐츠를 수신하기 위한 수단, 사전-수행된 동작들 중 적어도 하나와 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하기 위한 수단, 서명 검증 프로세스가 사전-수행된 동작과 연관된 서명을 확인할 때 제1 동작을 수행하기 위한 수단, 및 서명 검증 프로세스가 사전-수행된 동작과 연관된 서명을 확인하지 못할 때 제2 동작을 수행하기 위한 수단을 포함하는, 컴퓨팅 디바이스를 포함한다. 양상에서, 제1 동작을 수행하기 위한 수단은 사전-수행된 동작을 포함시키기 위한 수단을 포함한다. 추가적인 양상에서, 제1 동작을 수행하기 위한 수단은 사전-수행된 동작과 연관된 브라우저 동작을 스킵하기 위한 수단을 포함한다. 추가적인 양상에서, 제1 동작을 수행하기 위한 수단은 사전-수행된 동작과 연관된 브라우저 동작을 변경하기 위한 수단을 포함한다. 추가적인 양상에서, 제2 동작을 수행하기 위한 수단은 사전-수행된 동작과 연관된 브라우저 동작을 수행하기 위한 수단을 포함한다. 추가적인 양상에서, 사전-수행된 동작과 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하기 위한 수단은 사전-수행된 동작과 연관된 브라우저 동작이 더 양호한 결과들을 달성하기 위해 스킵될 수 있는지 또는 상이하게 수행될 수 있는지를 결정하기 위한 수단을 포함한다. 추가적인 양상에서, 디바이스는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단, 및 사전-수행된 동작들을 서명하기 위한 수단을 더 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단은 컴퓨팅 디바이스 상에서 실행중인 브라우저 애플리케이션 내에서 툴 동작들을 수행하기 위한 수단을 포함한다. 추가적인 양상에서, 각각이 서명과 연관된 하나 이상의 사전-수행된 동작들을 포함하는 컨텐츠를 수신하기 위한 수단은 메모리로부터 서명된 사전-프로세싱된 코드를 리트리브하기 위한 수단을 포함한다. 추가적인 양상에서, 컴퓨팅 디바이스는 메모리에서 제1 또는 제2 동작의 결과를 저장하기 위한 수단을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단은 JavaScript를 생성하기 위한 수단을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단은 캐스케이딩 스타일 시트를 생성하기 위한 수단을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단은 소스 대 소스 변환을 수행하기 위한 수단을 포함한다. 추가적인 양상에서, 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단은 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하기 위한 수단을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에서 실행가능한 스크립트에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠의 실행가능한 스크립트에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단은 웹 페이지 컨텐츠의 일부분을 사전-프로세싱하기 위한 수단을 포함한다. 추가적인 양상에서, 사전-프로세싱된 코드를 서명하기 위한 수단은 컴퓨팅 디바이스 상에서 실행 중인 유효성 검사기 애플리케이션에서 사전-프로세싱된 코드를 서명하기 위한 수단을 포함한다. 추가적인 양상에서, 사전-프로세싱된 코드를 서명하기 위한 수단은 특정 규정들이 사전-프로세싱하는 동작에서 준수되었음을 인증하는 서명을 생성하기 위한 수단을 포함한다.
추가적인 양상들은 웹 페이지 컨텐츠를 수신하기 위한 수단, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠의 일부분들에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단, 생성된 사전-수행된 동작들을 서명하기 위한 수단, 웹 페이지 컨텐츠 내에 서명된 사전-프로세싱된 동작들을 포함시키기 위한 수단, 및 컴퓨팅 디바이스에 웹 페이지 컨텐츠를 송신하기 위한 수단을 포함하는 서버를 포함한다. 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단은 JavaScript를 생성하기 위한 수단을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단은 캐스케이딩 스타일 시트를 생성하기 위한 수단을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단은 소스 대 소스 변환을 수행하기 위한 수단을 포함한다. 추가적인 양상에서, 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단은 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하기 위한 수단을 포함한다. 추가적인 양상에서, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에서 실행가능한 스크립트에 대응하는 코드에 대해 툴 동작들을 수행하기 위한 수단을 포함한다. 추가적인 양상에서, 사전-프로세싱된 코드를 서명하기 위한 수단은 특정 규정들이 사전-프로세싱하는 동작에서 준수되었음을 인증하는 서명을 제공하기 위한 수단을 포함한다.
추가적인 양상들은 메모리, 및 메모리에 커플링된 프로세서를 포함하는 컴퓨팅 디바이스를 포함하고, 프로세서는, 각각이 서명과 연관된 하나 이상의 사전-수행된 동작들을 포함하는 컨텐츠를 수신하는 것, 사전-수행된 동작들 중 적어도 하나와 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하는 것, 서명 검증 프로세스가 사전-수행된 동작과 연관된 서명을 확인할 때 제1 동작을 수행하는 것, 및 서명 검증 프로세스가 사전-수행된 동작과 연관된 서명을 확인하지 못할 때 제2 동작을 수행하는 것을 포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 양상에서, 프로세서는 제1 동작을 수행하는 것이 사전-수행된 동작을 포함시키는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 제1 동작을 수행하는 것이 사전-수행된 동작과 연관된 브라우저 동작을 스킵하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 제1 동작을 수행하는 것이 사전-수행된 동작과 연관된 브라우저 동작을 변경하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 제2 동작을 수행하는 것이 사전-수행된 동작과 연관된 브라우저 동작을 수행하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 사전-수행된 동작과 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하는 것이 사전-수행된 동작과 연관된 브라우저 동작이 더 양호한 결과들을 달성하기 위해 스킵될 수 있는지 또는 상이하게 수행될 수 있는지를 결정하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것, 및 사전-수행된 동작들을 서명하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 컴퓨팅 디바이스 상에서 실행중인 브라우저 내에서 툴 동작들을 수행하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 각각이 서명과 연관된 하나 이상의 사전-수행된 동작들을 포함하는 컨텐츠를 수신하는 것이 메모리로부터 서명된 사전-프로세싱된 코드를 리트리브하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 메모리에서 제1 또는 제2 동작의 결과를 저장하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 JavaScript를 생성하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 캐스케이딩 스타일 시트를 생성하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 소스 대 소스 변환을 수행하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에서 실행가능한 스크립트에 대응하는 코드에 대해 툴 동작들을 수행하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 웹 페이지 컨텐츠의 일부분을 사전-프로세싱하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 사전-프로세싱된 코드를 서명하는 것이 컴퓨팅 디바이스 상에서 실행 중인 유효성 검사기에서 사전-프로세싱된 코드를 서명하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 사전-프로세싱된 코드를 서명하는 것이 특정 규정들이 사전-프로세싱하는 동작에서 준수되었음을 인증하는 서명을 제공하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다.
추가적인 양상들은 메모리, 및 메모리에 커플링된 프로세서를 포함하는 서버를 포함하고, 프로세서는, 웹 페이지 컨텐츠를 수신하는 것, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠의 일부분들에 대응하는 코드에 대해 툴 동작들을 수행하는 것, 생성된 사전-수행된 동작들을 서명하는 것, 웹 페이지 컨텐츠 내에 서명된 사전-프로세싱된 동작들을 포함시키는 것, 및 컴퓨팅 디바이스에 서명된 사전-프로세싱된 동작들을 포함하는 웹 페이지 컨텐츠를 송신하는 것을 포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 양상에서, 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 JavaScript를 생성하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 캐스케이딩 스타일 시트를 생성하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 소스 대 소스 변환을 수행하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에서 실행가능한 스크립트에 대응하는 코드에 대해 툴 동작들을 수행하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 프로세서는 사전-프로세싱된 코드를 서명하는 것이 특정 규정들이 사전-프로세싱하는 동작에서 준수되었음을 인증하는 서명을 생성하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다.
추가적인 양상들은 프로세서가 브라우저 내의 컨텐츠를 프로세싱하기 위한 동작들을 수행하게 하도록 구성되는 프로세서-실행가능한 소프트웨어 명령들이 저장되어 있는 비-일시적 컴퓨터 판독가능한 저장 매체를 포함하고, 동작들은, 각각이 서명과 연관된 하나 이상의 사전-수행된 동작들을 포함하는 컨텐츠를 수신하는 것, 사전-수행된 동작들 중 적어도 하나와 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하는 것, 서명 검증 프로세스가 사전-수행된 동작과 연관된 서명을 확인할 때 제1 동작을 수행하는 것, 및 서명 검증 프로세스가 사전-수행된 동작과 연관된 서명을 확인하지 못할 때 제2 동작을 수행하는 것을 포함한다. 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 제1 동작을 수행하는 것이 사전-수행된 동작을 포함시키는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 제1 동작을 수행하는 것이 사전-수행된 동작과 연관된 브라우저 동작을 스킵하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 제1 동작을 수행하는 것이 사전-수행된 동작과 연관된 브라우저 동작을 변경하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 제2 동작을 수행하는 것이 사전-수행된 동작과 연관된 브라우저 동작을 수행하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 사전-수행된 동작과 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하는 것이 사전-수행된 동작과 연관된 브라우저 동작이 더 양호한 결과들을 달성하기 위해 스킵될 수 있는지 또는 상이하게 수행될 수 있는지를 결정하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것, 및 사전-수행된 동작들을 서명하는 것을 더 포함하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 브라우저 내에서 툴 동작들을 수행하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 각각이 서명과 연관된 하나 이상의 사전-수행된 동작들을 포함하는 컨텐츠를 수신하는 것이 브라우저가 실행 중인 컴퓨팅 디바이스의 메모리로부터 서명된 사전-프로세싱된 코드를 리트리브하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 컴퓨팅 디바이스의 메모리에서 제1 또는 제2 동작의 결과를 저장하는 것을 더 포함하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 JavaScript를 생성하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 캐스케이딩 스타일 시트를 생성하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 소스 대 소스 변환을 수행하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에서 실행가능한 스크립트에 대응하는 코드에 대해 툴 동작들을 수행하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠 내의 실행가능한 스크립트에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 웹 페이지 컨텐츠의 일부분을 사전-프로세싱하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 사전-프로세싱된 코드를 서명하는 것이 유효성 검사기가 실행 중인 컴퓨팅 디바이스에서 사전-프로세싱된 코드를 서명하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은 사전-프로세싱된 코드를 서명하는 것이 특정 규정들이 사전-프로세싱하는 동작에서 준수되었음을 인증하는 서명을 제공하는 것을 포함하도록 하는 동작들을 프로세서가 수행하게 하도록 구성된다.
추가적인 양상들은, 웹 페이지 컨텐츠를 수신하는 것, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠의 일부분들에 대응하는 코드에 대해 툴 동작들을 수행하는 것, 생성된 사전-수행된 동작들을 서명하는 것, 웹 페이지 컨텐츠 내에 서명된 사전-프로세싱된 동작들을 포함시키는 것, 및 컴퓨팅 디바이스에 서명된 사전-프로세싱된 동작들을 포함하는 웹 페이지 컨텐츠를 송신하는 것을 포함하는 동작들을 서버가 수행하게 하도록 구성되는 저장된 서버-실행가능한 소프트웨어 명령들이 저장되어 있는 비-일시적 컴퓨터 판독가능한 저장 매체를 포함하고, 서버 프로세서는, 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것, 및 사전-수행된 동작들을 서명하는 것을 포함하는 동작들을 수행하기 위한 서버-실행가능한 명령들로 구성된다.
양상에서, 저장된 서버-실행가능한 소프트웨어 명령들은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 JavaScript를 생성하는 것을 포함하도록 하는 동작들을 서버가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 서버-실행가능한 소프트웨어 명령들은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 캐스케이딩 스타일 시트를 생성하는 것을 포함하도록 하는 동작들을 서버가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 서버-실행가능한 소프트웨어 명령들은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 소스 대 소스 변환을 수행하는 것을 포함하도록 하는 동작들을 서버가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 서버-실행가능한 소프트웨어 명령들은 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하는 것을 포함하도록 하는 동작들을 서버가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 서버-실행가능한 소프트웨어 명령들은 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에서 실행가능한 스크립트에 대응하는 코드에 대해 툴 동작들을 수행하는 것을 포함하도록 하는 동작들을 서버가 수행하게 하도록 구성된다. 추가적인 양상에서, 저장된 서버-실행가능한 소프트웨어 명령들은 사전-프로세싱된 코드를 서명하는 것이 특정 규정들이 사전-프로세싱하는 동작에서 준수되었음을 인증하는 서명을 제공하는 것을 포함하도록 하는 동작들을 서버가 수행하게 하도록 구성된다.
추가적인 양상들은 클라이언트 메모리와 클라이언트 메모리에 커플링된 클라이언트 프로세서를 포함하는 클라이언트 디바이스, 및 서버 메모리와 서버 메모리에 커플링된 서버 프로세스를 포함하는 서버를 포함하는 시스템을 포함하며, 클라이언트 프로세서는, 각각이 서명과 연관된 하나 이상의 사전-수행된 동작들을 포함하는 컨텐츠를 수신하는 것, 사전-수행된 동작들 중 적어도 하나와 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하는 것, 서명 검증 프로세스가 사전-수행된 동작과 연관된 서명을 확인할 때 제1 동작을 수행하는 것, 및 서명 검증 프로세스가 사전-수행된 동작과 연관된 서명을 확인하지 못할 때 제2 동작을 수행하는 것을 포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 양상에서, 클라이언트 프로세서는 제1 동작을 수행하는 것이 사전-수행된 동작을 포함시키는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 클라이언트 프로세서는 제1 동작을 수행하는 것이 사전-수행된 동작과 연관된 브라우저 동작을 스킵하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 클라이언트 프로세서는 제1 동작을 수행하는 것이 사전-수행된 동작과 연관된 브라우저 동작을 변경하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 클라이언트 프로세서는 제2 동작을 수행하는 것이 사전-수행된 동작과 연관된 브라우저 동작을 수행하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 클라이언트 프로세서는 사전-수행된 동작과 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하는 것이 사전-수행된 동작과 연관된 브라우저 동작이 더 양호한 결과들을 달성하기 위해 스킵될 수 있는지 또는 상이하게 수행될 수 있는지를 결정하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다. 추가적인 양상에서, 서버 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 JavaScript를 생성하는 것을 포함하도록 하는 서버-실행가능한 명령들로 구성된다. 추가적인 양상에서, 서버 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 캐스케이딩 스타일 시트를 생성하는 것을 포함하도록 하는 서버-실행가능한 명령들로 구성된다. 추가적인 양상에서, 서버 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 소스 대 소스 변환을 수행하는 것을 포함하도록 하는 서버-실행가능한 명령들로 구성된다. 추가적인 양상에서, 서버 프로세서는 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하는 것을 포함하도록 하는 서버-실행가능한 명령들로 구성된다. 추가적인 양상에서, 서버 프로세서는 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에 대응하는 코드에 대해 툴 동작들을 수행하는 것이 적어도 하나의 사전-수행된 동작을 생성하기 위해 웹 페이지 컨텐츠에서 실행가능한 스크립트에 대응하는 코드에 대해 툴 동작들을 수행하는 것을 포함하도록 하는 서버-실행가능한 명령들로 구성된다. 추가적인 양상에서, 서버 프로세서는 사전-프로세싱된 코드를 서명하는 것이 특정 규정들이 사전-프로세싱하는 동작에서 준수되었음을 인증하는 서명을 생성하는 것을 포함하도록 하는 서버-실행가능한 명령들로 구성된다. 추가적인 양상에서, 서버 프로세서는 웹 페이지 컨텐츠 내에서 서명된 사전-프로세싱된 동작들을 포함하는 것, 및 서명된 사전-프로세싱된 동작들을 포함하는 웹 페이지 컨텐츠를 클라이언트 디바이스에 송신하는 것을 더 포함하는 동작들을 수행하기 위한 서버-실행가능한 명령들로 구성된다. 추가적인 양상에서, 클라이언트 프로세서는 하나 이상의 사전-수행된 동작들을 포함하는 컨텐츠를 수신하는 것이 서명된 사전-프로세싱된 동작들을 포함하는 웹 페이지 컨텐츠를 서버로부터 수신하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된다.
본원에 포함되고 이 명세서의 일부를 구성하는 첨부 도면들은, 발명의 예시적인 양상들을 예시하며, 위에 주어진 일반적 설명과 하기에 주어지는 상세한 설명과 함께, 발명의 특징들을 설명하는 역할을 한다.
도 1은 다양한 양상들을 구현하기에 적합한 예시적인 네트워크에서의 논리적 컴포넌트들과 흐름들을 예시하는 컴포넌트 블록도이다.
도 2a-b는 외부 코드 인증을 이용하여 웹 브라우징 오버헤드들을 감소시키기 위한 양상의 방법들의 프로세스 흐름도들이다.
도 3은 외부 코드 인증을 이용하여 웹 브라우징 오버헤드들을 감소시키기 위한 또 다른 양상의 방법의 프로세스 흐름도이다.
도 4는 다양한 양상들과 함께 사용하기에 적합한 예시적인 모바일 디바이스의 예시이다.
도 5는 다양한 양상들과 함께 사용하기에 적합한 예시적인 개인용 컴퓨터의 예시이다.
도 1은 다양한 양상들을 구현하기에 적합한 예시적인 네트워크에서의 논리적 컴포넌트들과 흐름들을 예시하는 컴포넌트 블록도이다.
도 2a-b는 외부 코드 인증을 이용하여 웹 브라우징 오버헤드들을 감소시키기 위한 양상의 방법들의 프로세스 흐름도들이다.
도 3은 외부 코드 인증을 이용하여 웹 브라우징 오버헤드들을 감소시키기 위한 또 다른 양상의 방법의 프로세스 흐름도이다.
도 4는 다양한 양상들과 함께 사용하기에 적합한 예시적인 모바일 디바이스의 예시이다.
도 5는 다양한 양상들과 함께 사용하기에 적합한 예시적인 개인용 컴퓨터의 예시이다.
다양한 양상들이 첨부 도면들을 참조하여 상세하게 설명될 것이다. 가능한 경우마다, 동일한 참조 부호들은 동일하거나 유사한 부분들을 지칭하기 위해 도면들 전반에 걸쳐 사용될 것이다. 특정 예들과 구현예들에 대해 이루어진 인용들은 예시의 목적들을 위한 것이며, 발명의 범위 또는 청구항들을 제한하도록 의도되지 않는다.
용어 "컴퓨팅 디바이스"는 일반적으로 서버들, 개인용 컴퓨터들, 모바일 디바이스들, 셀룰러 전화들, PDA(personal data assistant)들, 팜-톱 컴퓨터들, 무선 전자 메일 수신기들(예를 들어, Blackberry® 및 Treo® 디바이스들), 멀티미디어 인터넷 인에이블 셀룰러 전화들(예를 들어, Blackberry Storm®), GPS(Global Positioning System) 수신기들, 무선 게임 제어기들, 개인용 컴퓨터들, 및 웹 브라우저 타입 애플리케이션으로 구성된 프로그래밍가능한 프로세서를 포함하는 유사한 개인용 전자 디바이스들 중 임의의 하나 또는 모두를 지칭하기 위해 본원에서 사용된다. 다양한 양상들이 특히 제한된 프로세싱 전력을 가지는 셀룰러 전화들과 같은 모바일 디바이스들에서 유용하지만, 양상들은 일반적으로 동적 및/또는 스크립트 언어들로 기록된 스크립트들과 애플리케이션들을 실행하는 임의의 컴퓨팅 디바이스에서 유용하다.
용어 "서명하는"과 "인증하는"이 포괄적으로 본원에서 사용되며, 클라이언트(예를 들어, 웹 브라우저)가 코드/스크립트들/데이터/컨텐츠가 오프라인 툴 또는 유효성 검사기에 의해 사전-프로세싱되었음을 결정할 수 있고 그리고/또는 다른 방식으로 클라이언트의 요건들에 따르도록, 코드, 스크립트들, 데이터 또는 컨텐츠를 인코딩하거나 라벨링하는 임의의 방법을 지칭할 수 있다.
용어 "스크립트 언어"는 포괄적으로 이 출원에서 사용되며, 임의의 동적 언어, 스크립트 언어, 마크업 언어, 스타일 시트, 또는 런타임에서 해석되고 그리고/또는 컴파일링되는 프로그램들(본원에서는 "코드" 또는 "스크립트들")을 기록하기 위해 사용되는 임의의 해석된 언어를 지칭할 수 있다. 따라서, 이 출원의 목적들을 위해, 용어 "스크립트 언어"는 소스 코드 또는 바이트코드로부터 해석된 언어들, 또는 네이티브(native) 머신 코드로 통상적으로 컴파일링되는 프로그램들과 함께 실행하는 언어들로 제한되지 않아야 한다. 이 출원의 범위 내의 스크립트 언어들의 예들은, 예를 들어, JavaScript, Cascading Style Sheets, HTML, Python, 및 Ruby, 뿐만 아니라, Java 및 향후 개발될 수 있는 다른 언어들을 포함한다.
다양한 양상들은 다양한 실시예들에 의해 사용되거나 다루어질 수 있는 스크립트 언어의 편리한 예들로서 JavaScript 및 관련 용어를 사용하여 본원에서 설명된다. 그러나, 본원에서 JavaScript에 관련된 예들 및 JavaScript 언어에 대한 다른 인용들이 오직 예시의 목적들을 위한 것이며, 설명들 또는 실시예들을 그 특정 타입의 동적 스크립트 언어로 제한하도록 의도되지 않는다는 점이 이해되어야 한다. 따라서, 청구항들의 범위는, 구체적으로 인용되지 않는 한, JavaScript를 요구하는 것으로 해석되지 않아야 한다.
용어들 "코드" 및 "스크립트들"이 본원에서 포괄적이고 상호교환가능하게 사용되며, 애플리케이션에 의해 사용되거나 렌더링될 수 있는 데이터와 컨텐츠를 포함한다는 점이 이해되어야 한다. 또한, 본원에 개시된 다양한 양상들이 코드와 컨텐츠 모두를 포함하는, 애플리케이션(예를 들어, 브라우저)의 임의의 부분에 적용가능할 수 있다는 점이 이해되어야 한다.
다양한 양상들에서, 브라우저 동작들은, 특정 브라우저 동작들이 시간과 공간 모두에서 다른 브라우저 동작들과는 별개 이도록(즉, 상이한 머신에 의해, 시간상 앞서 수행됨) 2개의 부분들(오프라인 툴 부분 및 브라우저 부분)으로 분리될 수 있다. 서명들/인증들은 이들 2개의 부분들의 결과들이 런타임에서 안전하게 결합될 수 있음을 보장하기 위해 사용될 수 있다.
위에서 언급된 바와 같이, 브라우저 기술에 있어서 많은 최근의 진보에도 불구하고, 웹 브라우저들은 일반적으로 복잡한-계산 집약적 작업들을 수행하기 위한 능력이 여전히 부족하다. 다양한 양상들은, 웹 브라우저들 자체와는 별개인 외부의 또는 "오프라인" 툴들을 사용하여, 일부 작업들이 시간상 먼저 수행되도록 함으로써, 이들 및 다른 제한들을 극복한다. 예를 들어, 브라우저는 특정 변환들, 최적화들, 계산들 및/또는 분석이 오프라인/외부 툴들에 의해 시간상 앞서 수행되는 것을 허용하도록 구성될 수 있고, 그 결과들은 브라우저에 의해 수신되고 브라우저의 성능을 향상시키기 위해 런타임에서 사용될 수 있다. 오프라인/외부 툴은, 예를 들어, 브라우저가 사용되지 않는 부분들을 쉽게 식별할 수 있도록 페이로드 동안 사용되지 않는 캐스케이딩 스타일 시트(CSS)의 일부분들을 마킹함으로써 데이터를 미리 프로세싱할 수 있다. 오프라인/외부 툴은 또한 소스-대-소스 변환들을 수행할 수 있고(예를 들어, JavaScript에서 취하여 최적화된 JavaScript를 생성함), 생성된/변환된 코드(예를 들어, JavaScript)는 브라우저가 프로세싱하고, 실행하고, 그리고/또는 디스플레이할 컨텐츠와 함께 내장될 수 있다.
오리지널 코드와 후속하는 생성된 코드 둘 모두가 동일한 포맷으로 있을 수 있으므로(예를 들어, 둘 모두 JavaScript일 수 있음), 웹 브라우저는 외부/오프라인 툴들에 의해 이미 수행된 작업들, 사전-프로세싱된 작업들이 아직도 존재하는지(예를 들어, 컨텐츠 등에 대한 최근 업데이트들/변경들의 관점에서)의 여부, 또는 사전-수행된 작업들이 예를 들어, 양립 불가능한 가정들로 인해, 결점들 또는 위배들(예를 들어, 부정확한 실행, 제한되지 않은 결점들 등)을 야기하지 않게 하기 위해 이러한 방식으로 수행되었는지의 여부에 대해 완전히 통지받지 않을 수 있다.
이들 및 다른 이유들로, 브라우저는 실행 이전에 생성된 코드의 유효성을 검증하기 위해 다수의 동작들을 수행하도록 요구될 수 있다. 이런 검증 프로세스는 브라우저와 오프라인 툴 사이에서 상당량의 보충 정보(예를 들어, 작업 및 버전 정보, 지원되는 브라우저들, 사전-프로세싱 방법들 등)를 전달하는 것 및/또는 (예를 들어, Java 클래스들을 로딩할 때 지시되는 바와 같이) 수신된 코드의 전체 바디에 대해 바이트-코드 검증을 수행하는 것을 요구할 수 있다. 많은 양의 보충 정보를 전달하는 것은 브라우저에 오버헤드를 더한다. 검증 오버헤드는 단지 모든 페이즈들을 수행하고 사전-프로세싱된 데이터를 무시하는 것보다 더 많을 수 있다. 가외의 오버헤드는 오프라인 툴을 실행하는 것의 이점들을 무효화할 수 있다.
다양한 양상들은, 웹 브라우저가 스크립트를 검증하고, 확인하고 그리고/또는 신뢰할 수 있고 이전에 생성되어 브라우저에 의해 메모리에 저장되거나 오프라인/외부 툴에 의해 제공되는 코드에 의존함으로써 연관된 스크립트를 추가로 프로세싱하는 것을 스킵하도록, 하나 이상의 사전-프로세싱된 스크립트들/코드/데이터/컨텐츠(본원에서 총체적으로 "스크립트" 또는 "코드")와 연관된 서명 또는 인증을 활용하는 프레임워크를 제공한다.
다양한 양상들은 브라우저가 사전-프로세싱된 작업들(예를 들어, 변환들, 최적화들, 컴파일(compilation)들, 계산들, 분석 등)을 결정하게 하고, 따라서, 추가적인 프로세싱을 수행하지 않고, 브라우저가 사전-프로세싱된 코드가 신뢰할만하다는 점을(즉, 사전-프로세싱된 코드가 정확하게 실행할 것임을) 신뢰할 수 있는 방식으로, 사전-프로세싱된 코드를 검증하고, 인코딩하여, 브라우저에 전달한다.
다양한 양상들에서, 오프라인/외부 툴에 의해 생성되고, 웹 페이지 컨텐츠의 나머지와 함께 포함된 코드/데이터는 "검증된 스탬프" 또는 "서명"과 함께 포함될 수 있다. 이 서명은 달성된 작업들을 (예를 들어, 검증 식별자를 통해) 식별할 수 있다. 이러한 서명은 또한 브라우저가 코드가 효과적으로 인코딩되었음을 확인하게 할 수 있고, 추가적인 프로세싱 또는 브라우저 검증 없이 실행될 수 있다. 따라서, 양상에서, 다량의 보충 정보를 브라우저에 전달하는 것 대신, 생성된 코드는 클라이언트 애플리케이션들(예를 들어, 브라우저들)이 어느 작업들이 달성되었는지를 쉽게 식별하고 코드가 실행하기에 안전함을 신뢰할 수 있도록, 코드에(예를 들어, 코멘트들, 주석들 등에) 내장된 서명을 이용하여 서명될 수 있다. 양상에서, 서명은 잘 정의되고, 구성되고, 효과적으로 인코딩된 보충 정보일 수 있다.
"검증된 스탬프" 또는 "서명"을 코드 내에 내장함으로써, 다양한 양상들은 브라우저가 사전-프로세싱된 코드를 검증하기 위한 임의의 추가적인 동작들을 수행할 필요성을 제거하여, 웹 브라우징 오버헤드를 감소시키고 성능을 향상시킨다.
양상에서, 이전에 프로세싱된 코드를 확인하고 검증하기 위한 서명들의 사용은 또한 메모리에 웹 페이지를 프로세싱한 결과들을 저장할 때 웹 브라우저에 의해 사용될 수 있다. 이 양상에서, 브라우저가 웹 페이지를 렌더링하는 동안 웹 페이지 스크립트들을 프로세싱할 때, 프로세싱된 스크립트는 다음에 페이지가 렌더링될 때 재사용하기 위해 메모리에 저장될 수 있다. 웹 페이지들이 자주 변경되기 때문에, 프로세서는 페이지가 이전에 렌더링된 것과 같은지의 여부를 결정하기 위해 통상적으로 페이지 스크립트들을 중요하게 프로세싱해야 할 것이다. 양상들은 웹 브라우저가, 메모리에 저장된 코드가 프로세싱된 이후 메모리에 저장된 코드를 서명하게 한다. 브라우저는 이후 저장된 코드가 페이지를 적절하게 렌더링하도록 신뢰될 수 있는지의 여부를 결정하기 위해 서명을 사용할 수 있다. 예를 들어, 웹 페이지 컨텐츠가 웹 브라우저에 의해 렌더링된 마지막 시간 이후 변경된 경우, 서명을 검증하는 프로세스는 컨텐츠에서의 변경을 브라우저에 통지할 수 있고, 이 경우, 브라우저는 메모리로부터 리트리브된 이전 코드를 재사용하는 것 대신 스크립트를 실행하도록 선택할 수 있다.
사전-프로세싱된 코드에의 스탬프들/서명들/인증들의 내장은 외부/오프라인 툴과 브라우저 사이에 효율적인 통신 프로토콜을 제공하여, 브라우저가 수신된 코드의 안전성 또는 신뢰할만한 속성을 확인하게 할 수 있다(즉, 부적절한 메모리 액세스들이 없고, 코드를 생성한 이후 어떤 중요한 것도 변경되지 않았으며, 코드는 고장들을 야기하지 않을 것이다 등).
위에서 언급된 바와 같이, 브라우저 동작들은 특정 브라우저 동작들이 시간과 공간 모두에서 다른 동작들과는 별개이도록(예를 들어, 시간상 먼저, 그리고 상이한 머신에 의해 수행되도록) 2개 부분들(오프라인 툴 부분과 브라우저 부분)으로 분리될 수 있다. 양상에서, 오프라인 툴(예를 들어, 정적 및/또는 동적 분석을 수행하는 툴)이 사전-프로세싱된 코드를 생성하고, 코드가 특정 규정들을 준수했음을 인증하기 위해 코드를 서명하고, 서명된 코드를 브라우저 내에 내장할 수 있다. 양상에서, 사전-프로세싱된 코드는, 오프라인 툴의 결과들(즉, 사전-프로세싱된 코드)을 서명할 수 있는 외부 유효성 검사기에 의해 유효화될 수 있다. 결과들은 개인 키를 이용하여 또는 태그들, 속성들, 포맷된 코멘트들 등의 형태로 공지된 키워드를 포함시킴으로써 서명될 수 있다. 브라우저는 코드가 공지된 외부/오프라인 툴에 의해 프로세싱되었는지의 여부, 코드가 현재 존재하는지의 여부, 및/또는 코드가 안전하거나 신뢰할만한지의 여부를 결정하기 위해 암호화 크리덴셜(credential)들을 사용할 수 있다. 예를 들어, 브라우저는 코드가 실제로 신뢰받은 유효성 검사기에 의해 프로세싱되었는지 또는 코드의 예상된 버전이었는지를 결정하기 위해 내장된 서명을 유효화시키기 위한 유효성 검사기 공개 키를 사용할 수 있다. 브라우저가 코드 내의 서명을 유효화하는 경우, 브라우저는 코드가, 임의의 추가적인 오버헤드를 소모하거나, 추가 정보를 요청하거나, 또는 통상적으로 코드 검증들을 위해 요구되는 추가적인 프로세싱/분석 중 임의의 것을 수행하지 않고도 수행하기에 안전하다는 점을 신뢰할 수 있다. 이 프로세스는 브라우저가 사전-프로세싱된 코드에 의존하고 사전-프로세싱된 코드를 사용하게 하여, 이에 의해, 클라이언트 디바이스에서의 프로세싱 오버헤드들을 감소시키고 성능을 개선하게 한다.
웹 브라우저가 프로세싱된 코드를 저장하고 저장된 코드가 신뢰할만하다는 점을 검증하기 위해 내장된 서명을 사용하는 양상들에서, 프로세스는 브라우저 자체가 유효성 검사기로서의 역할을 한다는 점을 제외하고는 유사한 방식으로 진행한다.
도 1은 다양한 양상들에 따라 외부 코드 인증을 이용하여 웹 브라우징 오버헤드들을 감소시키기 위해 사용될 수 있는 예시적인 네트워크(100)를 예시한다. 네트워크(100)는 인터넷(104)을 통해 클라이언트 머신(106)에 컨텐츠를 전달하는 웹/컨텐츠 서버(102)를 포함할 수 있다. 클라이언트 머신(106)은 네트워크 인터페이스 모듈(108), 디스플레이 모듈(116), 메모리(118), 및 웹 브라우저(110)를 포함할 수 있다. 브라우저(110)는 JavaScript를 해석하고 실행하기 위한 JavaScript 엔진(112)을 포함할 수 있다.
네트워크(100)는 또한 브라우저 동작들을 수행하도록 구성된 오프라인/외부 툴들(114)을 포함할 수 있다. 외부/오프라인 툴(114)은 웹 서버(102), 별도의 서버, 프록시 상에서 또는 클라이언트 머신(106) 상에서와 같이, 네트워크(100) 내의 어느 곳에서나 구현될 수 있다. 외부/오프라인 툴(114)은 독립적인 프로세스로서, 또는 브라우저(110)의 일부분으로서 구현될 수 있다. 외부/오프라인 툴(114)은, 코드를 생성하도록(예를 들어, 사전프로세서일 수 있음), 또는 정적 사전-프로세싱된 코드(예를 들어, 개발자에 의해 제공된 코드, 브라우저의 이전 실행 세션의 결과들 등)를 브라우저(110)에 송신하도록 구성될 수 있다.
브라우저(110)는 분담된 동작들이 시간 및/또는 공간상으로 다른 동작들과는 별개 이도록(즉, 상이한 머신에 의해, 시간상 먼저 수행되도록), 오프라인/외부 툴들(114)에 특정 브라우저 동작들(예를 들어, 변환들, 최적화들 등)을 분담하도록 구성될 수 있다. 외부/오프라인 툴(114)은 Javascript를 컴파일링하고, 하나 이상의 플랫폼들(예를 들어, 안드로이드 등)에 대한 코드를 생성하고, 생성된 코드를 서명을 이용하여 서명할 수 있다. 오프라인/외부 툴들(114)에 의해 생성된 코드는 브라우저에 의해 사용된 동일한 타입의 코드일 수 있다(즉, 소스 대 소스 변환을 수행한다). 예를 들어, 오프라인 툴은 JavaScript 코드를 입력으로서 취하고, 최적화된(그리고 서명된) JavaScript 코드를 자신의 출력으로서 생성할 수 있다. 생성된 코드는 컴파일링된 실행가능한 코드일 수 있다(예를 들어, 일련의 완전히 컴파일링된 함수들). 서명의 존재는 브라우저(110)가, 생성된 코드를 직접 호출하고, 그 실행이 JavaScript 코드가 (예를 들어, JavaScript 엔진(112)을 통해) 브라우저(110) 자체에 의해 생성된 경우와 정확히 동일한 동작을 초래할 것임을 신뢰하게 한다. 이것은 브라우저/사용자 관점에서 JavaScript 컴파일의 거의 모든 비용을 효과적으로 제거한다.
양상에서, 외부/오프라인 툴(114)은 브라우저(110)의 일부분일 수 있고, 클라이언트 머신(106)이 자신이 전원에 접속되어 있으며 그리고/또는 유휴상태임을 검출할 때, 스크립트들을 사전-프로세싱하는 사전프로세서를 포함할 수 있다.
양상에서, 외부/오프라인 툴(114)은 사전프로세싱된 코드를 서명하여 추후 사용을 위해 메모리에 저장할 수 있다.
양상에서, 서명들이 서명들을 지원하지 않는 브라우저들에 영향을 주지 않도록, 서명들은 생성된 코드에 내장될 수 있다. 양상에서, 오프라인/외부 툴은, 내장된 코드가 수정되지 않은 JavaScript 엔진에 의해 무시되고, 내장된 코드를 이해하도록 수정된 JavaScript 엔진들에 의해 프로세싱될 수 있도록 하는, 코드를 내장하도록 구성될 수 있다. 양상에서, 오프라인/외부 툴은 코드를 코멘트들 또는 주석들에 내장하도록 구성될 수 있다.
도 2a는 외부 코드 인증을 사용함으로써 웹 브라우징 오버헤드들을 감소시키는 양상의 방법(200)을 예시한다. 블록(202)에서, 브라우저 동작들은 오프라인 툴 부분과 브라우저 부분으로 분리될 수 있다. 블록(204)에서, 오프라인 툴은 코드의 브라우저의 실행에 앞서 오프라인 툴 부분들을 수행하고, 사전-프로세싱된 코드를 생성할 수 있다. 블록(206)에서, 오프라인 툴은 서명을 코드 내에 내장함으로써 사전-프로세싱된 코드를 서명할 수 있다. 양상에서, 블록(206)의 일부분으로서, 사전-프로세싱된 코드는, 해시-타입 서명 동작에서 사용되는 개인 키 또는 다른 검증가능한 키를 이용하여 오프라인 툴의 결과들(즉, 사전-프로세싱된 코드)을 서명할 수 있는 유효성 검사기에 의해 유효화될 수 있다. 다양한 공지된 서명 프로세스들 중 임의의 것은 프로세싱된 코드의 컨텐츠에 기초하여 서명을 생성할 시에 사용될 수 있다. 프로세싱된 코드를 서명함으로써, 수신기 디바이스는 코드가 수신될 때 그 코드에 대해 동일한 또는 병렬 프로세스를 수행함으로써 서명을 검증할 수 있다. 대안적으로, 서명은 사전-프로세싱된 코드에 기초할 수 있다. 블록(208)에서, 서명된 사전-프로세싱된 코드는 웹 컨텐츠의 나머지와 함께 브라우저에 송신될 수 있다.
블록(210)에서, 브라우저는 웹 페이지 컨텐츠의 나머지와 함께 서명된 코드를 수신할 수 있다. 블록(212)에서, 브라우저는 수신된 코드 내의 서명들을 평가할 수 있다. 예를 들어, 블록(212)의 일부분으로서, 브라우저는 코드가 신뢰받은 유효성 검사기에 의해 실제로 프로세싱된 경우 유효화하기 위해 유효화 검사기 공개 키를 사용할 수 있다. 또한, 또는 대안적으로, 브라우저는 그 코드의 해시 값 특성을 획득하기 위해 사전-프로세싱된 웹 페이지 내의 스크립트에 대해 해시 함수를 수행할 수 있다. 이 검증 프로세스는 사전-프로세싱된 코드가 웹 페이지에서 비-프로세싱된 스크립트에 대응한다는 점과 사전-프로세싱이 신뢰할만한 오프라인 툴에 의해 수행되었다는 점 둘 모두를 확인할 수 있다.
결정 블록(214)에서, 브라우저는 서명들이 매치하는지의 여부를 결정할 수 있다. 브라우저가, 생성된 그리고 내장된 서명들이 매치한다고 결정하는 경우(즉, 결정 블록(214) = "예"), 블록(216)에서, 브라우저는 런타임에서 클라이언트 부분들과 오프라인 툴 부분들을 결합시켜서 코드의 보안성에 있어서 신뢰하는 서명된 코드를 실행할 수 있다. 브라우저가 서명들이 매치하지 않는다고 결정하는 경우(즉, 결정 블록(214) = "아니오"), 블록(218)에서, 브라우저는, 사전-프로세싱된 코드가 제공되지 않았던 것처럼 스크립트들을 실행함으로써 페이지를 렌더링할 수 있다. 따라서, 서명들의 내장은, 코드가 안전함(예를 들어, 올바른 동작, 비인증된 메모리 액세스 없음, 등)을 브라우저가 신뢰하게 함으로써 2개 부분들의 결과들이 런타임에서 안전하게 결합될 수 있음을 보장함으로써, 특정 브라우저 동작들이 시간과 공간 둘 모두에서 다른 동작들과는 별개 이도록 한다(즉, 상이한 머신에 의해, 시간상 앞서 수행됨).
도 2b는 외부 코드 인증을 사용함으로써 웹 브라우징 오버헤드들을 감소시키는 또 다른 양상의 방법(250)을 예시한다. 블록(252)에서, 브라우저는 오프라인 툴 부분으로부터 입력을 수신할 수 있다. 블록(254)에서, 브라우저는 서명된 사전-프로세싱된 코드/컨텐츠를 수신할 수 있다. 결정 블록(256)에서, 브라우저는 (예를 들어, 생성되고 내장된 서명들이 매치한다고 결정하는 것을 통해) 수신된 서명된 사전-프로세싱된 코드/컨텐츠에서 임의의 유효한 서명들이 존재한다고 결정할 수 있다. 유효한 서명들이 존재하지 않는다고 결정되는 경우(즉, 결정 블록(256) = "아니오"), 블록(258)에서, 브라우저는, 사전-프로세싱된 코드가 제공되지 않았던 것처럼 (예를 들어, 각각의 페이즈들에 대해) 모든 수신된 코드에 대해 전체 동작들을 수행함으로써 페이지를 렌더링할 수 있다. 유효한 서명들이 존재한다고 결정되는 경우(즉, 결정 블록(256) = "예"), 블록(260)에서, 브라우저는 사전-프로세싱된 코드를 실행하고, 단지 코드/컨텐츠의 서명되지 않은 부분들의 전체 검증만을 수행함으로써 페이지를 렌더링할 수 있다. 선택적인 블록(262)에서, 브라우저는 선택적으로, 다음 실행들의 세트에 대한 서명들 및 결과들을 생성하여, 이들을 추후 리트리브를 위해 로컬로 또는 원격으로 저장할 수 있다. 다양한 공지된 서명 프로세스들 중 임의의 것은, 프로세싱된 코드의 컨텐츠에 기초할 수 있는 서명을 생성할 시에 사용될 수 있다. 프로세싱된 코드를 서명함으로써, 수신기 디바이스는 코드가 메모리로부터 액세스되거나 액세스된 웹 페이지의 일부분으로서 수신될 때, 그 코드에 대해 동일한 또는 병렬 프로세스를 수행함으로써 서명을 검증할 수 있다.
도 3은 동일한 페이지를 렌더링할 때 코드가 재사용될 수 있는지의 여부를 브라우저가 추후 시간에 결정하게 하는 방식으로 프로세싱된 코드를 저장하기 위해 코드 서명 방법들을 사용함으로써 웹 브라우징 오버헤드들을 감소시키는 또 다른 양상의 방법(300)을 예시한다. 블록(302)에서, 브라우저는 특정 웹사이트를 방문하라는 요청을 수신할 수 있다. 결정 블록(304)에서, 브라우저는 이것이 사이트가 주어진 시간 윈도우에서 방문된 최초인지의 여부를 결정할 수 있다. 브라우저가 그것이 최초 방문이라고 결정하는 경우(즉, 결정 블록(304) = "예"), 블록(306)에서, 브라우저는 종래의 방법들을 사용하여 웹 페이지 컨텐츠를 프로세싱할 수 있다. 블록(308)에서, 브라우저는 프로세싱된 코드를 서명하고, 생성된 서명을 포함하거나 내장할 수 있다. 블록(310)에서, 서명된 프로세싱된 코드는 웹 브라우저가 동작하는 디바이스의 메모리에 저장될 수 있다.
브라우저가 그것이 웹 페이지에 대한 최초 방문이 아니라고 결정하는 경우(즉, 결정 블록(304) = "아니오"), 블록(312)에서, 서명된 코드가 메모리로부터 리트리브될 수 있다. 블록(314)에서, 브라우저는 코드와 함께 포함되거나 코드에 내장된 서명을 검증할 수 있다. 이 프로세스는 또 다른 서명을 생성하기 위해 웹 페이지 컨텐츠 내의 대응하는 스크립트에 대해 서명 프로세스(예를 들어, 해시 함수)를 수행하는 것을 수반한다. 결정 블록(316)에서, 브라우저는 서명들이 매치하는지의 여부를 결정할 수 있다. 서명들이 사전-프로세싱된 웹 페이지 내의 스크립트들에 기초하여 생성되는 경우, 서명들의 비교는 저장된 이전에 프로세싱된 코드가 현재 다운로드된 웹 페이지에서와 동일한 스크립트들을 실행함으로써 생성되었는지를 브라우저가 신속하게 확인하게 할 것이다. 브라우저가 서명들이 매치한다고 결정하는 경우(즉, 결정 블록(316) = "예"), 블록(320)에서, 브라우저는 저장된 이전에 프로세싱된 코드가 현재 웹 페이지 컨텐츠에서와 동일한 스크립트들을 프로세싱함으로써 생성되었음을 검증한 서명된 코드를 실행할 수 있다. 따라서, 서명 매치는 브라우저가 이전에 저장된 코드의 실행이 현재 웹 페이지를 적절하게 렌더링할 것임을 브라우저가 신뢰하게 한다. 브라우저가 서명들이 매치하지 않는다고 결정하는 경우(즉, 결정 블록(316) = "아니오"), 블록(318)에서, 브라우저는 마치 이전에 프로세싱된 코드가 메모리에 저장되지 않은 것처럼 블록(306)에서 웹 페이지를 렌더링하기 위해 스크립트들을 실행하는 동작들을 수행할 수 있다.
추가적인 양상에서, 방법(300)의 동작들은, 웹 브라우저가 오프라인 툴들에 의해 웹 페이지 컨텐츠가 제공된 사전-프로세싱된 코드를 유효화하고 사용하고, 웹 페이지 스크립트들의 프로세싱 결과들을 서명과 함께 저장하고, 그리고 코드의 연관된 서명이 유효화될 때 이전에 저장된 코드를 재사용하도록, 방법(200)의 동작들과 결합될 수 있다.
다양한 양상들은 코드 내의 서명의 부재가, 웹 페이지 내의 스크립트들이 아직 프로세싱되지 않았고 따라서 브라우저에 의해 프로세싱되어야 함을 JavaScript 엔진에 표시하도록 구성될 수 있다. 양상에서, 서명들은, 최적화로 수정가능한 이용가능한 언어 특징들의 제한된 서브세트만이 코드를 생성하기 위해 사용되었고, 코드의 실행이 사용중인 특정 특징들을 초래하지 않을 것임을 브라우저에 표시할 수 있다. 양상에서, 서명들은 이용가능한 언어 특징들(예를 들어, 타입 체크)의 증강된 세트가 코드를 생성하기 위해 활용되었으며, 브라우저가 유사한 동작들의 수행을 포기할 수 있음을 브라우저에 표시할 수 있다.
양상에서, 오프라인/외부 툴은 코드를 사전-컴파일링하는 컴파일러일 수 있다.
다양한 양상들이 보안성과 관련되지 않지만, 이전 동작들의 유효성 또는 최적화를 보장한다는 점이 이해되어야 한다. 다양한 양상의 방법들은 실행가능한 코드와 JavaScript® 코드에만 초점을 두지 않으며, 브라우저의 임의의 부분, 코드와 컨텐츠 둘 모두에 적용될 수 있다.
다양한 양상들은 툴(예를 들어, JavaScript 컴파일러, 파서, CSS 프로세서, 레이아웃 엔진 등)을 오프라인 부분과 온라인 부분으로 파티셔닝할 수 있다. 오프라인 부분은 코드에 대한 동작들의 세트를 수행할 수 있고, 수행된 동작들을 캡쳐하는 하나 또는 다수의 서명들을 생성한다. 온라인 부분은 서명(들)을 체크하여, 특정 동작이 스킵될 수 있는지, 간략화된 또는 대략적 형태로 수행될 수 있는지, 더 양호한 결과들을 달성하기 위해 상이하게 수행될 수 있는지 그리고/또는 클라이언트가 사전-유효화된 코드를 다른 방식으로 사용할 수 있는지의 여부를 결정할 수 있다. 결정할 수 없는 경우, 온라인 부분은 입력(코드 또는 컨텐츠)에 대해 동일한 동작들(잠재적으로 덜 최적화됨)을 다시 수행할 수 있다.
다양한 양상에 의해 제공되는 이점들 중 하나는 특정 동작들이 온라인 부분에서 스킵되거나 간략화될 수 있는지의 여부를 결정하는 저렴한 방식으로서의 서명들의 사용이다. 오프라인 부분은 서버상에서 또는 클라이언트 상에서 구현될 수 있다. 양상에서, 오프라인 부분은 클라이언트 상에서 구현되고, 컴퓨팅 디바이스가 유휴상태일 때 실행될 수 있다.
다양한 양상들은 다양한 컴퓨팅 디바이스들 중 임의의 것 상에서 구현될 수 있다. 모바일 컴퓨팅 디바이스의 예가 도 4에 예시되어 있고, 노트북 컴퓨터의 예가 도 5에 예시되어 있다. 통상적인 모바일 컴퓨팅 디바이스들(400)은 도 4에 예시된 컴포넌트들을 공통적으로 가질 것이다. 예를 들어, 모바일 컴퓨팅 디바이스들(400)은 내부 메모리(402)에 커플링된 프로세서(401)와 터치 표면 입력 디바이스/디스플레이(403)를 포함할 수 있다. 저항성 감지 터치 스크린, 용량성 감지 터치 스크린, 적외선 감지 터치스크린, 음향/압전 감지 터치 스크린 등과 같은 터치 스크린 디스플레이(403). 다양한 양상들은 임의의 특정 타입의 터치스크린 디스플레이(403) 또는 터치패드 기술로 제한되지 않는다. 추가로, 컴퓨팅 디바이스(400)는 무선 데이터 링크에 접속된 전자기 복사를 송신하고 수신하기 위한 안테나(404) 및/또는 프로세서(401)에 커플링된 셀룰러 전화 트랜시버(405)를 가질 수 있다. 컴퓨팅 디바이스들(400)은 또한 사용자 입력들을 수신하기 위한 물리적 버튼들(408)을 포함할 수 있다.
다양한 양상들이 모바일 컴퓨팅 디바이스들에 상당한 성능 향상들을 제공할 수 있지만, 개인용 컴퓨터들과 랩톱 컴퓨터들을 포함한 다른 형태들의 컴퓨팅 디바이스들이 또한 동적 언어 스크립트들의 사전-파싱으로부터 이익을 취할 수 있다. 이러한 컴퓨팅 디바이스들은 통상적으로, 예시적인 개인용 랩톱 컴퓨터(500)를 예시하는 도 5에 예시된 컴포넌트들을 포함한다. 이러한 개인용 컴퓨터(500)는 일반적으로 휘발성 메모리(502) 및 디스크 드라이브(503)와 같은 대용량 비휘발성 메모리에 커플링된 프로세서(501)를 포함한다. 컴퓨터(500)는 또한 프로세서(501)에 커플링된 컴팩트 디스크(CD) 및/또는 DVD 드라이브(504)를 포함할 수 있다. 컴퓨터 디바이스(500)는 또한 데이터 접속들을 설정하거나 또는 네트워크에 프로세서(401)를 커플링시키기 위한 네트워크 접속 회로(505)와 같은 외부 메모리 디바이스들을 수신하기 위해 프로세서(401)에 커플링된 다수의 커넥터 포트들을 포함할 수 있다. 컴퓨터(500)는 추가로, 컴퓨터 기술 분야에 잘 공지되어 있는 바와 같이, 키보드(508), 마우스(510)와 같은 포인팅 디바이스, 및 디스플레이(509)에 커플링될 수 있다.
다양한 양상들은 또한 도 6에 예시되어 있는 서버(600)와 같은 다양한 상업적으로 이용가능한 서버 디바이스들 중 임의의 것에 대해 구현될 수 있다. 이러한 서버(600)는 통상적으로 프로세서(601)를 포함하고, 이 중 하나 이상이 멀티-코어 프로세서들일 수 있거나 멀티-코어 프로세서들을 포함할 수 있는 다수의 프로세서 시스템들(611, 621, 631)을 포함할 수 있다. 프로세서(601)는 휘발성 메모리(602), 및 디스크 드라이브(603)와 같은 대용량 비휘발성 메모리에 커플링될 수 있다. 서버(600)는 또한 프로세서(601)에 커플링된 플로피 디스크 드라이브, 컴팩트 디스크(CD) 또는 DVD 디스크 드라이브(606)를 포함할 수 있다. 서버(600)는 또한 다른 브로드캐스트 시스템 컴퓨터들과 서버들에 커플링된 로컬 영역 네트워크와 같은 네트워크(605)와의 데이터 접속들을 설정하기 위해 프로세서(601)에 커플링된 네트워크 액세스 포트들(604)을 포함할 수 있다.
프로세서(401, 501, 601)는 본원에 설명된 다양한 양상들의 기능들을 포함한, 다양한 기능들을 수행하도록 소프트웨어 명령들(애플리케이션들)에 의해 구성될 수 있는 임의의 프로그래밍가능한 마이크로프로세서, 마이크로컴퓨터 또는 다수의 프로세서 칩 또는 칩들일 수 있다. 일부 모바일 디바이스들에서, 다수의 프로세서들(401, 501, 601)이 제공될 수 있는데 예를 들어, 하나의 프로세서는 무선 통신 기능들에 전용되고, 하나의 프로세서는 다른 애플리케이션들을 실행하는데 전용된다. 통상적으로, 소프트웨어 애플리케이션들은 소프트웨어 애플리케이션들이 액세스되어 프로세서(401, 501, 601)에 로딩되기 전에, 내부 메모리(402, 502, 602)에 저장될 수 있다. 일부 모바일 디바이스들에서, 프로세서(401, 501, 601)는 응용 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수 있다. 일부 모바일 디바이스들에서, 보안 메모리는 프로세서(401, 501, 601)에 커플링된 별도의 메모리 칩 내에 있을 수 있다. 내부 메모리(402, 502, 602)는 휘발성 또는 비휘발성 메모리, 예를 들어, 플래시 메모리, 또는 둘 모두의 혼합일 수 있다. 이 설명의 목적들을 위해, 메모리에 대한 일반적 인용은, 내부 메모리(402, 502, 602), 모바일 디바이스에 플러그인된 제거가능 메모리, 및 프로세서(401, 501, 601) 그 자체 내의 메모리를 포함한, 프로세서(401, 501, 601)에 의해 액세스가능한 모든 메모리를 지칭한다.
전술된 방법 설명들 및 프로세스 흐름도들은 단지 예시적인 예들로서 제공되며, 다양한 양상들의 블록들이 제시된 순서로 수행되어야 하는 것을 요구하거나 내포하도록 의도되지 않는다. 당업자에 의해 인식될 바와 같이, 이전 양상들에서 단계들의 순서는 임의의 순서로 수행될 수 있다. "이하", "이후", "다음" 등과 같은 용어들은 블록들의 순서를 제한하도록 의도되지 않으며, 이들 단어들은 방법들의 설명을 통해 단지 독자를 안내하기 위해 사용된다. 또한, 예를 들어, 단수 형태들("a," "an" 또는 "the")을 사용하는 단수의 청구항 엘리먼트들에 대한 어떠한 인용도 그 엘리먼트를 단수로 제한하는 것으로서 해석되지 않는다.
본원에 개시된 양상들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들 둘의 결합들로서 구현될 수 있다. 하드웨어와 소프트웨어의 이러한 상호교환가능성을 명백하게 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들은 이들의 기능성의 견지에서 상기에 일반적으로 전술되었다. 이러한 기능성이 하드웨어로서 또는 소프트웨어로서 구현되는지의 여부는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약들에 의존한다. 당업자들은 각각의 특정 애플리케이션에 대해 가변적인 방식들로 설명된 기능성을 구현할 수 있지만, 이러한 구현 결정들은 본 발명의 범위로부터의 이탈을 야기하는 것으로서 해석되지 않아야 한다.
본원에 개시된 양상들과 관련하여 설명된 다양한 예시적인 로직들, 논리 블록들, 모듈들 및 회로들을 구현하기 위해 사용되는 하드웨어는 범용 프로세서, DSP(digital signal processor), ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 다른 프로그래밍가능 논리 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에 설명된 기능들을 수행하도록 설계된 이들의 임의의 결합을 이용하여 구현되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로컨트롤러, 또는 상태 머신일 수 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 결합, 예를 들어, DSP와 마이크로프로세서의 결합, 복수의 마이크로프로세서들, DSP 코어와 공조하는 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다. 대안적으로, 일부 단계들 또는 방법들은 주어진 기능에 대해 특정적인 회로에 의해 수행될 수 있다.
하나 이상의 예시적인 양상들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 결합에서 구현될 수 있다. 소프트웨어에서 구현되는 경우, 기능들은 비-일시적 컴퓨터-판독가능한 또는 프로세서-판독가능한 저장 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 하나 이상의 명령들 또는 코드를 통해 전송될 수 있다. 본원에 개시된 방법 또는 알고리즘의 단계들은 비-일시적 프로세서-판독가능한 또는 컴퓨터-판독가능한 저장 매체에 상주할 수 있는, 프로세서-실행가능한 소프트웨어 모듈에서 구현될 수 있다. 비-일시적 프로세서-판독가능한 그리고 컴퓨터-판독가능한 매체는 컴퓨터 또는 컴퓨팅 디바이스의 프로세서에 의해 액세스될 수 있는 임의의 가용 저장 매체일 수 있다. 제한이 아닌 예시에 의해, 이러한 비-일시적 프로세서-판독가능한 그리고 컴퓨터-판독가능한 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장, 자기 디스크 저장 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 반송하거나 저장하기 위해 사용될 수 있으며 컴퓨터 또는 컴퓨팅 디바이스의 프로세서에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. disk 및 disc는, 본원에서 사용된 바와 같이, 컴팩트 disc(CD), 레이저 disc, 광 disc, 디지털 다목적 disc(DVD), 플로피 disk, 및 블루-레이 disc를 포함하며, 여기서 disk들은 일반적으로 자기적으로 데이터를 재생하는 반면, disc들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 위 항목들의 결합들이 또한 비-일시적 컴퓨터-판독가능한 매체들의 범위 내에 포함되어야 한다. 추가로, 방법 또는 알고리즘의 동작들은, 컴퓨터 프로그램 물건 내에 포함될 수 있는, 비-일시적 프로세서-판독가능한 매체 및/또는 비-일시적 컴퓨터-판독가능한 매체 상에 코드들 및/또는 명령들의 하나 또는 임의의 결합 또는 세트로서 상주할 수 있다.
개시된 양상들의 이전 설명은 당업자가 본 발명을 제작하거나 사용하게 하도록 제공된다. 이들 양상들에 대한 다양한 수정들은 당업자들에게 쉽게 명백할 것이며, 본원에 정의된 포괄적 원리들은 발명의 사상 또는 범위로부터의 이탈 없이 다른 양상들에 적용될 수 있다. 따라서, 본 발명은 본원에 보여진 양상들에 제한되도록 의도되는 것이 아니라, 후속하는 청구항들 및 본원에 개시된 원리들과 신규한 특징들에 부합하는 가장 넓은 범위에 따라야 한다.
Claims (109)
- 브라우저(browser)에서 컨텐츠를 프로세싱하기 위한 방법으로서,
상기 브라우저에서, 웹 페이지와 연관된 웹 페이지 컨텐츠를 수신하는 단계 ― 상기 웹 페이지 컨텐츠는 상기 웹 페이지를 렌더링(render)하기 위해 사용되는 복수의 동작들을 포함함 ―;
상기 복수의 동작들을 오프라인 툴(tool) 동작들 및 브라우저 동작들로 분리하는 단계;
상기 브라우저에서, 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 수신하는 단계;
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하는 단계;
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인(confirm)하는 것에 응답하여, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하지 않는 브라우저 동작들 및 오프라인 툴 동작들을 수행함으로써 그리고 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 오프라인 툴 동작들의 수행을 스킵함으로써, 상기 웹 페이지를 렌더링(render)하는 단계; 및
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하지 않는 것에 응답하여, 상기 복수의 동작들의 상기 분리된 오프라인 툴 동작들 및 상기 브라우저 동작들을 수행함으로써, 상기 웹 페이지를 렌더링하는 단계를 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 1 항에 있어서,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하지 않는 브라우저 동작들 및 오프라인 툴 동작들을 수행함으로써 상기 웹 페이지를 렌더링하는 동안, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나를 포함(incorporating)시키는 단계를 더 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 1 항에 있어서,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 기초하여 상기 복수의 동작들 중 적어도 하나의 브라우저 동작을 변경하는 단계를 더 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 1 항에 있어서,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 적어도 하나의 브라우저 동작을 수행하는 단계를 더 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 1 항에 있어서,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 검증하기 위해 상기 서명 검증 프로세스를 사용하는 단계는, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 적어도 하나의 브라우저 동작이 더 양호한 결과들을 달성하기 위해 상이하게 수행될 수 있는지를 결정하는 단계를 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 1 항에 있어서,
상기 브라우저에서 수신되는 상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계; 및
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하는 단계를 더 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 6 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계는, 오프라인 툴에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계를 포함하고,
상기 방법은, 상기 서명된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 상기 브라우저에 전송하는 단계를 더 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 6 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계는, 오프라인 툴에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계를 포함하고,
상기 방법은, 상기 서명된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 상기 브라우저가 실행 중인 컴퓨팅 디바이스에 전송하는 단계를 더 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 6 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계는, 자바스크립트(JavaScript)를 생성하는 단계를 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 6 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계는, 캐스케이딩 스타일 시트(cascading style sheet)를 생성하는 단계를 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 6 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계는, 소스 대 소스 변환(source to source transformation)을 수행하는 단계를 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 6 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계는, 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹(marking)하는 단계를 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 6 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계는, 상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 웹 페이지 컨텐츠 내의 실행가능 스크립트 상에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계를 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 6 항에 있어서,
상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하는 것은, 유효성 검사기(validator)에 의해 달성되는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 6 항에 있어서,
상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하는 것은, 특정 규정들이 상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들에서 준수되었음을 인증하는 서명을 제공하는 것을 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 6 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계는, 상기 브라우저 내에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계를 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 16 항에 있어서,
상기 웹 페이지와 연관된 상기 웹 페이지 컨텐츠를 수신하는 단계는, 서명된 사전-프로세싱된 코드를 상기 브라우저가 실행 중인 컴퓨팅 디바이스의 메모리로부터 리트리브(retrieve)하는 단계를 더 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 17 항에 있어서,
상기 컴퓨팅 디바이스의 상기 메모리에 상기 웹 페이지의 렌더링의 결과를 저장하는 단계를 더 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 16 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계는, 상기 웹 페이지 컨텐츠의 일부분을 사전-프로세싱하는 단계를 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 제 1 항에 있어서,
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하지 않는 것에 응답하여, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나를 사용하는 것 없이 그리고 상기 복수의 동작들의 상기 브라우저 동작들과 상기 오프라인 툴 동작들 모두를 수행함으로써, 상기 웹 페이지를 렌더링하는 단계를 더 포함하는,
브라우저에서 컨텐츠를 프로세싱하기 위한 방법. - 브라우저에서 컨텐츠를 프로세싱하기 위한 컴퓨팅 디바이스로서,
웹 페이지와 연관된 웹 페이지 컨텐츠를 수신하기 위한 수단 ― 상기 웹 페이지 컨텐츠는 상기 웹 페이지를 렌더링하기 위해 사용되는 복수의 동작들을 포함함 ―;
상기 복수의 동작들을 오프라인 툴 동작들 및 브라우저 동작들로 분리하기 위한 수단;
하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 수신하기 위한 수단;
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하기 위한 수단;
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하는 것에 응답하여 상기 웹 페이지를 렌더링하기 위한 수단 ― 상기 서명을 확인하는 것에 응답하여 상기 웹 페이지를 렌더링하기 위한 수단은, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하지 않는 브라우저 동작들 및 오프라인 툴 동작들을 수행하기 위한 수단 및 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 오프라인 툴 동작들의 수행을 스킵하기 위한 수단을 포함함 ―;
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하지 않는 것에 응답하여 상기 웹 페이지를 렌더링하기 위한 수단 ― 상기 서명을 확인하지 않는 것에 응답하여 상기 웹 페이지를 렌더링하기 위한 수단은, 상기 복수의 동작들의 상기 분리된 오프라인 툴 동작들 및 상기 브라우저 동작들을 수행하기 위한 수단을 포함함 ― 을 포함하는,
컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하지 않는 것에 응답하여 상기 웹 페이지를 렌더링하기 위한 수단은, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나를 사용하지 않고 그리고 상기 복수의 동작들의 상기 브라우저 동작들과 상기 오프라인 툴 동작들 모두를 수행하기 위한 수단을 포함하는,
컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하지 않는 브라우저 동작들 및 오프라인 툴 동작들을 수행함으로써 상기 웹 페이지를 렌더링하는 동안, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나를 포함시키기 위한 수단을 더 포함하는,
컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 기초하여 상기 복수의 동작들 중 적어도 하나의 브라우저 동작을 변경하기 위한 수단을 더 포함하는,
컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 적어도 하나의 브라우저 동작을 수행하기 위한 수단을 더 포함하는,
컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 검증하기 위해 상기 서명 검증 프로세스를 사용하기 위한 수단은, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 적어도 하나의 브라우저 동작이 더 양호한 결과들을 달성하기 위해 상이하게 수행될 수 있는지를 결정하기 위한 수단을 포함하는,
컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단; 및
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하기 위한 수단을 더 포함하는,
컴퓨팅 디바이스. - 제 27 항에 있어서,
상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단은, 자바스크립트를 생성하기 위한 수단을 포함하는,
컴퓨팅 디바이스. - 제 27 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단은, 캐스케이딩 스타일 시트를 생성하기 위한 수단을 포함하는,
컴퓨팅 디바이스. - 제 27 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단은, 소스 대 소스 변환을 수행하기 위한 수단을 포함하는,
컴퓨팅 디바이스. - 제 27 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단은, 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하기 위한 수단을 포함하는,
컴퓨팅 디바이스. - 제 27 항에 있어서,
상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하기 위한 수단은, 상기 컴퓨팅 디바이스 상에서 실행되는 유효성 검사기 애플리케이션에서 상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하기 위한 수단을 포함하는,
컴퓨팅 디바이스. - 제 27 항에 있어서,
상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하기 위한 수단은, 특정 규정들이 상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들에서 준수되었음을 인증하는 서명을 생성하기 위한 수단을 포함하는,
컴퓨팅 디바이스. - 제 27 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단은, 상기 컴퓨팅 디바이스 상에서 실행 중인 브라우저 애플리케이션 내에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단을 포함하는,
컴퓨팅 디바이스. - 제 34 항에 있어서,
상기 웹 페이지와 연관된 상기 웹 페이지 컨텐츠를 수신하기 위한 수단은, 서명된 사전-프로세싱된 코드를 메모리로부터 리트리브하기 위한 수단을 더 포함하는,
컴퓨팅 디바이스. - 제 35 항에 있어서,
상기 웹 페이지의 렌더링의 결과를 저장하기 위한 수단을 더 포함하는,
컴퓨팅 디바이스. - 제 27 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단은, 상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 웹 페이지 컨텐츠 내의 실행가능 스크립트 상에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단을 포함하는,
컴퓨팅 디바이스. - 제 37 항에 있어서,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 웹 페이지 컨텐츠 내의 상기 실행가능 스크립트 상에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단은, 상기 웹 페이지 컨텐츠의 일부분을 사전-프로세싱하기 위한 수단을 포함하는,
컴퓨팅 디바이스. - 서버로서,
적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단 ― 상기 하나 또는 그 초과의 오프라인 툴 동작들은 브라우저 동작들로부터 분리된 오프라인 툴 동작들이고 그리고 상기 오프라인 툴 동작들 및 상기 브라우저 동작들은 웹 페이지와 연관된 웹 페이지 컨텐츠에 포함된 복수의 동작들이고, 상기 복수의 동작들은 상기 웹 페이지를 렌더링하기 위해 사용됨 ―;
상기 적어도 하나의 사전-수행된 오프라인 툴 동작과 연관된 서명을 검증하기 위한 서명 검증 프로세스를 브라우저가 수행할 수 있게 하기 위해, 생성되는 적어도 하나의 사전-수행된 오프라인 툴 동작을 서명하기 위한 수단;
상기 웹 페이지 컨텐츠 내에 상기 서명된 적어도 하나의 사전-수행된 오프라인 툴 동작을 포함시키기 위한 수단; 및
상기 브라우저에 상기 웹 페이지 컨텐츠를 전송하기 위한 수단을 포함하고,
상기 브라우저는, 상기 서명이 검증될 때, 상기 서버에 의해 생성되는 상기 적어도 하나의 사전-수행된 오프라인 툴 동작에 대응하는 상기 복수의 동작들 중의 오프라인 툴 동작들의 수행을 스킵하고 그리고 상기 서버에 의해 생성되는 상기 적어도 하나의 사전-수행된 오프라인 툴 동작에 대응하지 않는 상기 복수의 동작들 중의 브라우저 동작들 및 오프라인 툴 동작들을 수행함으로써 상기 웹 페이지를 렌더링하도록, 그리고 상기 서명이 검증되지 않을 때, 상기 복수의 동작들의 상기 브라우저 동작들 및 상기 오프라인 툴 동작들을 수행함으로써 상기 웹 페이지를 렌더링하도록, 컴퓨팅 디바이스 상에서 구성되는,
서버. - 제 39 항에 있어서,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단은, 자바스크립트를 생성하기 위한 수단을 포함하는,
서버. - 제 39 항에 있어서,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단은, 캐스케이딩 스타일 시트를 생성하기 위한 수단을 포함하는,
서버. - 제 39 항에 있어서,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단은, 소스 대 소스 변환을 수행하기 위한 수단을 포함하는,
서버. - 제 39 항에 있어서,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단은, 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하기 위한 수단을 포함하는,
서버. - 제 39 항에 있어서,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단은, 상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 웹 페이지 컨텐츠 내의 실행가능 스크립트 상에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하기 위한 수단을 포함하는,
서버. - 제 39 항에 있어서,
상기 생성되는 적어도 하나의 사전-수행된 오프라인 툴 동작을 서명하기 위한 수단은, 특정 규정들이 상기 적어도 하나의 사전-수행된 오프라인 툴 동작에서 준수되었음을 인증하는 서명을 제공하기 위한 수단을 포함하는,
서버. - 브라우저에서 컨텐츠를 프로세싱하기 위한 컴퓨팅 디바이스로서,
메모리; 및
상기 메모리에 커플링된 프로세서를 포함하고, 상기 프로세서는 단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되고, 상기 단계들은:
웹 페이지와 연관된 웹 페이지 컨텐츠를 수신하는 단계 ― 상기 웹 페이지 컨텐츠는 상기 웹 페이지를 렌더링하기 위해 사용되는 복수의 동작들을 포함함 ―;
상기 복수의 동작들을 오프라인 툴 동작들 및 브라우저 동작들로 분리하는 단계;
상기 브라우저에서, 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 수신하는 단계;
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하는 단계;
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하는 것에 응답하여, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하지 않는 브라우저 동작들 및 오프라인 툴 동작들을 수행함으로써 그리고 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 오프라인 툴 동작들의 수행을 스킵함으로써, 상기 웹 페이지를 렌더링하는 단계; 및
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하지 않는 것에 응답하여, 상기 복수의 동작들의 상기 분리된 오프라인 툴 동작들 및 상기 브라우저 동작들을 수행함으로써, 상기 웹 페이지를 렌더링하는 단계를 포함하는,
컴퓨팅 디바이스. - 제 46 항에 있어서,
상기 프로세서는 추가로,
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하지 않는 것에 응답하여, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나를 사용하는 것 없이 그리고 상기 복수의 동작들의 상기 브라우저 동작들과 상기 오프라인 툴 동작들 모두를 수행함으로써, 상기 웹 페이지를 렌더링하는 것
을 포함하는 단계를 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 46 항에 있어서,
상기 프로세서는,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하지 않는 브라우저 동작들 및 오프라인 툴 동작들을 수행함으로써 상기 웹 페이지를 렌더링하는 동안, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나를 포함시키는 단계
를 더 포함하는 단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 46 항에 있어서,
상기 프로세서는,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 기초하여 상기 복수의 동작들 중 적어도 하나의 브라우저 동작을 변경하는 단계
를 더 포함하는 단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 46 항에 있어서,
상기 프로세서는,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 적어도 하나의 브라우저 동작을 수행하는 단계
를 더 포함하는 단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 46 항에 있어서,
상기 프로세서는,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 검증하기 위해 상기 서명 검증 프로세스를 사용하는 단계가, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 적어도 하나의 동작이 더 양호한 결과들을 달성하기 위해 상이하게 수행될 수 있는지를 결정하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 46 항에 있어서,
상기 프로세서는,
상기 브라우저에서 수신되는 상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계; 및
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하는 단계
를 더 포함하는 단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 52 항에 있어서,
상기 프로세서는,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 자바스크립트를 생성하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 52 항에 있어서,
상기 프로세서는,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 캐스케이딩 스타일 시트를 생성하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 52 항에 있어서,
상기 프로세서는,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 소스 대 소스 변환을 수행하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 52 항에 있어서,
상기 프로세서는,
상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 52 항에 있어서,
상기 프로세서는,
상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하는 것이, 상기 컴퓨팅 디바이스 상에서 실행되는 유효성 검사기에서 상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하는 것을 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 52 항에 있어서,
상기 프로세서는,
상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하는 것이, 특정 규정들이 상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들에서 준수되었음을 인증하는 서명을 제공하는 것을 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 52 항에 있어서,
상기 프로세서는,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 상기 컴퓨팅 디바이스 상에서 실행되는 상기 브라우저 내에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 59 항에 있어서,
상기 프로세서는,
상기 웹 페이지와 연관된 상기 웹 페이지 컨텐츠를 수신하는 단계가, 서명된 사전-프로세싱된 코드를 상기 메모리로부터 리트리브하는 단계를 더 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 60 항에 있어서,
상기 프로세서는,
상기 웹 페이지의 렌더링의 결과를 저장하는 단계
를 더 포함하는 단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 52 항에 있어서,
상기 프로세서는,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 웹 페이지 컨텐츠 내의 실행가능 스크립트 상에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 제 62 항에 있어서,
상기 프로세서는,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 상기 웹 페이지 컨텐츠의 일부분을 사전-프로세싱하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
컴퓨팅 디바이스. - 서버로서,
메모리; 및
상기 메모리에 커플링된 프로세서를 포함하고, 상기 프로세서는 단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되고, 상기 단계들은:
적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계 ― 상기 하나 또는 그 초과의 오프라인 툴 동작들은 브라우저 동작들로부터 분리된 오프라인 툴 동작들이고 그리고 상기 오프라인 툴 동작들 및 상기 브라우저 동작들은 웹 페이지와 연관된 웹 페이지 컨텐츠에 포함된 복수의 동작들임 ―;
상기 적어도 하나의 사전-수행된 오프라인 툴 동작과 연관된 서명을 검증하기 위한 서명 검증 프로세스를 브라우저가 수행할 수 있게 하기 위해, 생성되는 적어도 하나의 사전-수행된 오프라인 툴 동작을 서명하는 단계;
상기 웹 페이지 컨텐츠 내에 상기 서명된 적어도 하나의 사전-수행된 오프라인 툴 동작을 포함시키는 단계; 및
상기 브라우저에 상기 웹 페이지 컨텐츠를 전송하는 단계를 포함하고,
상기 브라우저는, 상기 서명이 검증될 때, 상기 서버에 의해 생성되는 상기 적어도 하나의 사전-수행된 오프라인 툴 동작에 대응하는 상기 복수의 동작들 중의 오프라인 툴 동작들의 수행을 스킵하고 그리고 상기 서버에 의해 생성되는 상기 적어도 하나의 사전-수행된 오프라인 툴 동작에 대응하지 않는 상기 복수의 동작들 중의 브라우저 동작들 및 오프라인 툴 동작들을 수행함으로써 상기 웹 페이지를 렌더링하도록, 그리고 상기 서명이 검증되지 않을 때, 상기 복수의 동작들의 상기 브라우저 동작들 및 상기 오프라인 툴 동작들을 수행함으로써 상기 웹 페이지를 렌더링하도록, 컴퓨팅 디바이스 상에서 구성되는,
서버. - 제 64 항에 있어서,
상기 프로세서는,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 자바스크립트를 생성하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
서버. - 제 64 항에 있어서,
상기 프로세서는,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 캐스케이딩 스타일 시트를 생성하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
서버. - 제 64 항에 있어서,
상기 프로세서는,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 소스 대 소스 변환을 수행하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
서버. - 제 64 항에 있어서,
상기 프로세서는,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
서버. - 제 64 항에 있어서,
상기 프로세서는,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 웹 페이지 컨텐츠 내의 실행가능 스크립트 상에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
서버. - 제 64 항에 있어서,
상기 프로세서는,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 서명하는 단계가, 특정 규정들이 상기 적어도 하나의 사전-수행된 오프라인 툴 동작에서 준수되었음을 인증하는 서명을 생성하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
서버. - 저장된 프로세서-실행가능 소프트웨어 명령들을 가지는 비-일시적 컴퓨터 판독가능 저장 매체로서, 상기 저장된 프로세서-실행가능 소프트웨어 명령들은 브라우저에서 컨텐츠를 프로세싱하기 위한 프로세서로 하여금 단계들을 수행하게 하도록 구성되고, 상기 단계들은:
웹 페이지와 연관된 웹 페이지 컨텐츠를 수신하는 단계 ― 상기 웹 페이지 컨텐츠는 상기 웹 페이지를 렌더링하기 위해 사용되는 복수의 동작들을 포함함 ―;
상기 복수의 동작들을 오프라인 툴 동작들 및 브라우저 동작들로 분리하는 단계;
상기 브라우저에서, 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 수신하는 단계;
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하는 단계;
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하는 것에 응답하여, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하지 않는 브라우저 동작들 및 오프라인 툴 동작들을 수행함으로써 그리고 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 오프라인 툴 동작들의 수행을 스킵함으로써, 상기 웹 페이지를 렌더링하는 단계; 및
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하지 않는 것에 응답하여, 상기 복수의 동작들의 상기 분리된 오프라인 툴 동작들 및 상기 브라우저 동작들을 수행함으로써, 상기 웹 페이지를 렌더링하는 단계를 포함하는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 71 항에 있어서,
상기 프로세서는 추가로,
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하지 않는 것에 응답하여, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나를 사용하는 것 없이 그리고 상기 복수의 동작들의 상기 브라우저 동작들과 상기 오프라인 툴 동작들 모두를 수행함으로써, 상기 웹 페이지를 렌더링하는 것
을 포함하는 단계를 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 71 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하지 않는 브라우저 동작들 및 오프라인 툴 동작들을 수행함으로써 상기 웹 페이지를 렌더링하는 동안, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나를 포함시키는 단계
를 더 포함하는 단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 71 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 기초하여 상기 복수의 동작들 중 적어도 하나의 브라우저 동작을 변경하는 단계
를 더 포함하는 단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 71 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 적어도 하나의 브라우저 동작을 수행하는 단계
를 더 포함하는 단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 71 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 검증하기 위해 상기 서명 검증 프로세스를 사용하는 단계가, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 적어도 하나의 브라우저 동작이 더 양호한 결과들을 달성하기 위해 상이하게 수행될 수 있는지를 결정하는 단계를 포함하도록 하는
단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 71 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 브라우저에서 수신되는 상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계; 및
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하는 단계
를 더 포함하는 단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 77 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 자바스크립트를 생성하는 단계를 포함하도록 하는
단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 77 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 캐스케이딩 스타일 시트를 생성하는 단계를 포함하도록 하는
단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 77 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 소스 대 소스 변환을 수행하는 단계를 포함하도록 하는
단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 77 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하는 단계를 포함하도록 하는
단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 77 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하는 것이, 유효성 검사기가 실행 중인 컴퓨팅 디바이스에서 상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하는 것을 포함하도록 하는
단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 77 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하는 것이, 특정 규정들이 상기 수신된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들에서 준수되었음을 인증하는 서명을 제공하는 것을 포함하도록 하는
단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 77 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 상기 브라우저 내에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계를 포함하도록 하는
단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 84 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 웹 페이지와 연관된 상기 웹 페이지 컨텐츠를 수신하는 단계가, 서명된 사전-프로세싱된 코드를 상기 브라우저가 실행 중인 컴퓨팅 디바이스의 메모리로부터 리트리브하는 단계를 더 포함하도록 하는
단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 85 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 컴퓨팅 디바이스의 상기 메모리에 상기 웹 페이지의 렌더링의 결과를 저장하는 단계
를 더 포함하는 단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 77 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 웹 페이지 컨텐츠 내의 실행가능 스크립트 상에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계를 포함하도록 하는
단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 87 항에 있어서,
상기 저장된 프로세서-실행가능 소프트웨어 명령들은,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 상기 웹 페이지 컨텐츠 내의 상기 실행가능 스크립트 상에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 상기 웹 페이지 컨텐츠의 일부분을 사전-프로세싱하는 단계를 포함하도록 하는
단계들을 상기 프로세서로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 저장된 서버-실행가능 소프트웨어 명령들을 가지는 비-일시적 컴퓨터 판독가능 저장 매체로서, 상기 저장된 서버-실행가능 소프트웨어 명령들은 서버로 하여금 단계들을 수행하게 하도록 구성되고, 상기 단계들은:
적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계 ― 상기 하나 또는 그 초과의 오프라인 툴 동작들은 브라우저 동작들로부터 분리된 오프라인 툴 동작들이고 그리고 상기 오프라인 툴 동작들 및 상기 브라우저 동작들은 웹 페이지와 연관된 웹 페이지 컨텐츠에 포함된 복수의 동작들임 ―;
상기 적어도 하나의 사전-수행된 오프라인 툴 동작과 연관된 서명을 검증하기 위한 서명 검증 프로세스를 브라우저가 수행할 수 있게 하기 위해, 생성되는 적어도 하나의 사전-수행된 오프라인 툴 동작을 서명하는 단계;
상기 웹 페이지 컨텐츠 내에 상기 서명된 적어도 하나의 사전-수행된 오프라인 툴 동작을 포함시키는 단계; 및
상기 브라우저에 상기 웹 페이지 컨텐츠를 전송하는 단계를 포함하고,
상기 브라우저는, 상기 서명이 검증될 때, 상기 서버에 의해 생성되는 상기 적어도 하나의 사전-수행된 오프라인 툴 동작에 대응하는 상기 복수의 동작들 중의 오프라인 툴 동작들의 수행을 스킵하고 그리고 상기 서버에 의해 생성되는 상기 적어도 하나의 사전-수행된 오프라인 툴 동작에 대응하지 않는 상기 복수의 동작들 중의 브라우저 동작들 및 오프라인 툴 동작들을 수행함으로써 상기 웹 페이지를 렌더링하도록, 그리고 상기 서명이 검증되지 않을 때, 상기 복수의 동작들의 상기 브라우저 동작들 및 상기 오프라인 툴 동작들을 수행함으로써 상기 웹 페이지를 렌더링하도록, 컴퓨팅 디바이스 상에서 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 89 항에 있어서,
상기 저장된 서버-실행가능 소프트웨어 명령들은,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 자바스크립트를 생성하는 단계를 포함하도록 하는
단계들을 상기 서버로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 89 항에 있어서,
상기 저장된 서버-실행가능 소프트웨어 명령들은,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 캐스케이딩 스타일 시트를 생성하는 단계를 포함하도록 하는
단계들을 상기 서버로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 89 항에 있어서,
상기 저장된 서버-실행가능 소프트웨어 명령들은,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 소스 대 소스 변환을 수행하는 단계를 포함하도록 하는
단계들을 상기 서버로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 89 항에 있어서,
상기 저장된 서버-실행가능 소프트웨어 명령들은,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하는 단계를 포함하도록 하는
단계들을 상기 서버로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 89 항에 있어서,
상기 저장된 서버-실행가능 소프트웨어 명령들은,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계가, 상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 웹 페이지 컨텐츠 내의 실행가능 스크립트 상에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계를 포함하도록 하는
단계들을 상기 서버로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 제 89 항에 있어서,
상기 저장된 서버-실행가능 소프트웨어 명령들은,
상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 서명하는 단계가, 특정 규정들이 상기 적어도 하나의 사전-수행된 오프라인 툴 동작에서 준수되었음을 인증하는 서명을 제공하는 단계를 포함하도록 하는
단계들을 상기 서버로 하여금 수행하게 하도록 구성되는,
비-일시적 컴퓨터 판독가능 저장 매체. - 시스템으로서,
브라우저에서 컨텐츠를 프로세싱하기 위한 클라이언트 디바이스 ― 상기 클라이언트 디바이스는 클라이언트 메모리 및 상기 클라이언트 메모리에 커플링된 클라이언트 프로세서를 포함함 ―; 및
서버 메모리 및 상기 서버 메모리에 커플링된 서버 프로세서를 포함하는 서버를 포함하고,
상기 클라이언트 프로세서는 단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되고, 상기 단계들은:
웹 페이지와 연관된 웹 페이지 컨텐츠를 수신하는 단계 ― 상기 웹 페이지 컨텐츠는 상기 웹 페이지를 렌더링하기 위해 사용되는 복수의 동작들을 포함함 ―;
상기 복수의 동작들을 오프라인 툴 동작들 및 브라우저 동작들로 분리하는 단계;
상기 브라우저에서, 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 수신하는 단계;
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 서명을 검증하기 위해 서명 검증 프로세스를 사용하는 단계;
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하는 것에 응답하여, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하지 않는 브라우저 동작들 및 오프라인 툴 동작들을 수행함으로써 그리고 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 오프라인 툴 동작들의 수행을 스킵함으로써, 상기 웹 페이지를 렌더링하는 단계; 및
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하지 않는 것에 응답하여, 상기 복수의 동작들의 상기 분리된 오프라인 툴 동작들 및 상기 브라우저 동작들을 수행함으로써, 상기 웹 페이지를 렌더링하는 단계를 포함하고, 그리고
상기 서버 프로세서는 단계들을 수행하기 위한 서버-실행가능 명령들로 구성되고, 상기 단계들은:
상기 브라우저에서 수신되는 상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 생성하기 위해 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 단계;
상기 서명 검증 프로세스를 상기 브라우저가 수행할 수 있게 하기 위해, 상기 브라우저에서 수신되는 상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 서명하는 단계; 및
상기 웹 페이지 컨텐츠 및 상기 서명된 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작들을 상기 브라우저에 전송하는 단계를 포함하는,
시스템. - 제 96 항에 있어서,
상기 클라이언트 프로세서는 추가로,
상기 서명 검증 프로세스가 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 확인하지 않는 것에 응답하여, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나를 사용하는 것 없이 그리고 상기 복수의 동작들의 상기 브라우저 동작들과 상기 오프라인 툴 동작들 모두를 수행함으로써, 상기 웹 페이지를 렌더링하는 것
을 포함하는 단계를 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
시스템. - 제 97 항에 있어서,
상기 클라이언트 프로세서는,
상기 웹 페이지 컨텐츠를 수신하는 단계가, 상기 서버로부터 상기 웹 페이지 컨텐츠를 수신하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
시스템. - 제 97 항에 있어서,
상기 클라이언트 프로세서는,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하지 않는 브라우저 동작들 및 오프라인 툴 동작들을 수행함으로써 상기 웹 페이지를 렌더링하는 동안, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나를 포함시키는 단계
를 더 포함하는 단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
시스템. - 제 96 항에 있어서,
상기 클라이언트 프로세서는,
상기 브라우저에서 수신되는 상기 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 기초하여 상기 복수의 동작들 중의 브라우저 동작을 변경하는 단계
를 더 포함하는 단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
시스템. - 제 96 항에 있어서,
상기 클라이언트 프로세서는,
상기 브라우저에서 수신되는 상기 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 브라우저 동작을 수행하는 단계
를 더 포함하는 단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
시스템. - 제 96 항에 있어서,
상기 클라이언트 프로세서는,
상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나와 연관된 상기 서명을 검증하기 위해 상기 서명 검증 프로세스를 사용하는 단계가, 상기 수신된 사전-수행된 오프라인 툴 동작들 중 적어도 하나에 대응하는 상기 복수의 동작들 중의 적어도 하나의 브라우저 동작이 더 양호한 결과들을 달성하기 위해 상이하게 수행될 수 있는지를 결정하는 단계를 포함하도록 하는
단계들을 수행하기 위한 프로세서-실행가능 명령들로 구성되는,
시스템. - 제 96 항에 있어서,
상기 서버 프로세서는,
적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 것이, 자바스크립트를 생성하는 것을 포함하도록 하는
서버-실행가능 명령들로 구성되는,
시스템. - 제 96 항에 있어서,
상기 서버 프로세서는,
적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 것이, 캐스케이딩 스타일 시트를 생성하는 것을 포함하도록 하는
서버-실행가능 명령들로 구성되는,
시스템. - 제 96 항에 있어서,
상기 서버 프로세서는,
적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 것이, 소스 대 소스 변환을 수행하는 것을 포함하도록 하는
서버-실행가능 명령들로 구성되는,
시스템. - 제 96 항에 있어서,
상기 서버 프로세서는,
적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 것이, 사용되지 않은 캐스케이딩 스타일 시트의 일부분들을 마킹하는 것을 포함하도록 하는
서버-실행가능 명령들로 구성되는,
시스템. - 제 96 항에 있어서,
상기 서버 프로세서는,
적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 것이, 상기 적어도 하나의 사전-수행된 오프라인 툴 동작을 생성하기 위해 상기 웹 페이지 컨텐츠 내의 실행가능 스크립트 상에서 상기 하나 또는 그 초과의 오프라인 툴 동작들을 수행하는 것을 포함하도록 하는
서버-실행가능 명령들로 구성되는,
시스템. - 제 96 항에 있어서,
상기 서버 프로세서는,
상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작을 서명하는 것이, 특정 규정들이 상기 하나 또는 그 초과의 사전-수행된 오프라인 툴 동작에서 준수되었음을 인증하는 서명을 생성하는 것을 포함하도록 하는
서버-실행가능 명령들로 구성되는,
시스템.
- 삭제
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261591141P | 2012-01-26 | 2012-01-26 | |
US61/591,141 | 2012-01-26 | ||
US13/399,126 | 2012-02-17 | ||
US13/399,126 US9819687B2 (en) | 2012-01-26 | 2012-02-17 | Reducing web browsing overheads with external code certification |
PCT/US2013/020613 WO2013112278A1 (en) | 2012-01-26 | 2013-01-08 | Reducing web browsing overheads with external code certification |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140114446A KR20140114446A (ko) | 2014-09-26 |
KR101823016B1 true KR101823016B1 (ko) | 2018-01-29 |
Family
ID=48871424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147023616A KR101823016B1 (ko) | 2012-01-26 | 2013-01-08 | 외부 코드 인증을 통한 웹 브라우징 오버헤드들의 감소 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9819687B2 (ko) |
EP (1) | EP2807586A1 (ko) |
JP (1) | JP6121447B2 (ko) |
KR (1) | KR101823016B1 (ko) |
CN (1) | CN104094257A (ko) |
IN (1) | IN2014CN04737A (ko) |
WO (1) | WO2013112278A1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8984598B2 (en) * | 2012-06-27 | 2015-03-17 | International Business Machines Corporation | Web-based security proxy for computing system environment scanning |
CN103942137B (zh) * | 2013-01-23 | 2017-08-25 | 腾讯科技(深圳)有限公司 | 浏览器兼容性测试方法及装置 |
EP2767905A1 (en) * | 2013-02-15 | 2014-08-20 | Samsung Electronics Co., Ltd | Terminal apparatus, server, browser of terminal apparatus operating system and method of operating browser |
US9178904B1 (en) * | 2013-09-11 | 2015-11-03 | Symantec Corporation | Systems and methods for detecting malicious browser-based scripts |
US9614900B1 (en) * | 2014-06-19 | 2017-04-04 | Amazon Technologies, Inc. | Multi-process architecture for a split browser |
CN104572837B (zh) | 2014-12-10 | 2019-07-26 | 百度在线网络技术(北京)有限公司 | 在网页上提供认证信息的方法及装置 |
US9436449B1 (en) | 2015-06-02 | 2016-09-06 | Microsoft Technology Licensing, Llc | Scenario-based code trimming and code reduction |
CN105681290B (zh) * | 2016-01-08 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 一种自动过滤网络运营商嵌入http响应内容的方法和装置 |
US10305874B2 (en) | 2017-06-16 | 2019-05-28 | Microsoft Technology Licensing, Llc | Multi-factor execution gateway |
CN108306937B (zh) * | 2017-12-29 | 2022-02-25 | 五八有限公司 | 短信验证码的发送方法、获取方法、服务器及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002089001A2 (en) | 2001-04-30 | 2002-11-07 | International Business Machines Corporation | A method for generation and assembly of web page content |
US20100037062A1 (en) | 2008-08-11 | 2010-02-11 | Mark Carney | Signed digital documents |
US7747866B1 (en) | 2000-08-24 | 2010-06-29 | Jpmorgan Chase Bank, N.A. | System and method providing improved error detection related to transmission of data over a communication link |
US20100275026A1 (en) | 2009-04-27 | 2010-10-28 | Mclean Ivan H | Method and apparatus for improving code and data signing |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1091276A1 (en) | 1999-10-06 | 2001-04-11 | Alcatel | Authentication of hypertext kind of resources through signature handling protocol |
JP3730498B2 (ja) * | 2000-09-19 | 2006-01-05 | 株式会社東芝 | 署名用記憶媒体 |
US6910128B1 (en) | 2000-11-21 | 2005-06-21 | International Business Machines Corporation | Method and computer program product for processing signed applets |
US7873706B2 (en) | 2003-03-19 | 2011-01-18 | Cgi Communications, Inc. | System and method for seamlessly providing video content to client systems over a network |
JP2005267593A (ja) | 2004-02-16 | 2005-09-29 | Shuji Sonoda | ブラウザ装置及びそのプログラム及びブラウジングシステム |
US7398433B2 (en) | 2004-03-31 | 2008-07-08 | Microsoft Corporation | System and method of preventing a web browser plug-in module from generating a failure |
US7971194B1 (en) | 2005-06-16 | 2011-06-28 | Sap Portals Israel Ltd. | Programming language techniques for client-side development and execution |
JP2008098795A (ja) | 2006-10-10 | 2008-04-24 | Seiko Epson Corp | 議事録生成システム |
US8549472B1 (en) * | 2007-06-12 | 2013-10-01 | Fair Isaac Corporation | System and method for web design |
CN101102187A (zh) | 2007-08-09 | 2008-01-09 | 上海格尔软件股份有限公司 | 一种实现自动签名/验证签名功能的方法 |
JP4997070B2 (ja) | 2007-10-31 | 2012-08-08 | 京セラドキュメントソリューションズ株式会社 | 電気機器、画像表示制御方法、及び、画像表示制御プログラム |
US8812853B1 (en) * | 2008-03-18 | 2014-08-19 | Avaya Inc. | Traceability for threaded communications |
US20100037317A1 (en) | 2008-08-06 | 2010-02-11 | Jeong Wook Oh | Mehtod and system for security monitoring of the interface between a browser and an external browser module |
US8291230B2 (en) | 2009-01-20 | 2012-10-16 | International Business Machines Corporation | Method and system for signing JavaScript object notation (JSON) messages |
US8875285B2 (en) | 2010-03-24 | 2014-10-28 | Microsoft Corporation | Executable code validation in a web browser |
US9424236B2 (en) * | 2011-04-26 | 2016-08-23 | Oracle International Corporation | Filtered Stylesheets |
-
2012
- 2012-02-17 US US13/399,126 patent/US9819687B2/en active Active
-
2013
- 2013-01-08 JP JP2014554724A patent/JP6121447B2/ja active Active
- 2013-01-08 EP EP13700813.2A patent/EP2807586A1/en not_active Withdrawn
- 2013-01-08 WO PCT/US2013/020613 patent/WO2013112278A1/en active Application Filing
- 2013-01-08 KR KR1020147023616A patent/KR101823016B1/ko active IP Right Grant
- 2013-01-08 CN CN201380006540.4A patent/CN104094257A/zh active Pending
- 2013-01-08 IN IN4737CHN2014 patent/IN2014CN04737A/en unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7747866B1 (en) | 2000-08-24 | 2010-06-29 | Jpmorgan Chase Bank, N.A. | System and method providing improved error detection related to transmission of data over a communication link |
WO2002089001A2 (en) | 2001-04-30 | 2002-11-07 | International Business Machines Corporation | A method for generation and assembly of web page content |
US20100037062A1 (en) | 2008-08-11 | 2010-02-11 | Mark Carney | Signed digital documents |
US20100275026A1 (en) | 2009-04-27 | 2010-10-28 | Mclean Ivan H | Method and apparatus for improving code and data signing |
Also Published As
Publication number | Publication date |
---|---|
WO2013112278A1 (en) | 2013-08-01 |
US9819687B2 (en) | 2017-11-14 |
US20130198612A1 (en) | 2013-08-01 |
KR20140114446A (ko) | 2014-09-26 |
CN104094257A (zh) | 2014-10-08 |
JP6121447B2 (ja) | 2017-04-26 |
JP2015515657A (ja) | 2015-05-28 |
EP2807586A1 (en) | 2014-12-03 |
IN2014CN04737A (ko) | 2015-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101823016B1 (ko) | 외부 코드 인증을 통한 웹 브라우징 오버헤드들의 감소 | |
US10467622B1 (en) | Using on-demand applications to generate virtual numbers for a contactless card to securely autofill forms | |
JP6061364B2 (ja) | アプリケーションのセキュリティ検証のためのクラウド支援された方法及びサービス | |
US8701104B2 (en) | System and method for user agent code patch management | |
CN101226569A (zh) | 在虚拟机中验证代码模块的方法及装置 | |
KR102693699B1 (ko) | 전자 장치에서 어플리케이션 업데이트 시 런타임 성능 개선 방법 및 장치 | |
CN102664874B (zh) | 一种安全登陆的方法和系统 | |
JP2019003629A (ja) | チートアプリケーション識別方法およびシステム | |
US11716319B2 (en) | Software deployment certification | |
KR101383050B1 (ko) | 어플리케이션 번역 방법 및 장치 | |
KR101249449B1 (ko) | 웹 플랫폼 검증 도구 생성 장치 및 그 제어방법 | |
JP7553076B2 (ja) | ソフトウェア検証方法およびソフトウェア開発システム | |
JP2010113566A (ja) | 情報処理装置、アクセス制御方法、及びプログラム | |
CN113486269A (zh) | 基于web的电子表格数据处理方法、计算设备和存储介质 | |
TWI567563B (zh) | A user input screen generation system and a method thereof | |
CN116091056A (zh) | 基于u盾的交易方法、装置、计算机存储介质及电子设备 | |
KR101018632B1 (ko) | 데이터 베이스 관리기능을 갖는 스마트 카드 및 스마트카드 관리시스템 | |
CN114594961A (zh) | 一种函数表达式实现方法、装置、电子设备及存储介质 | |
CN117873563A (zh) | 软件分发方法及其装置、电子设备及存储介质 | |
KR101080614B1 (ko) | 멀티 브라우저용 웹 페이지 표시 장치 및 그 장치에 의해 수행되는 웹 페이지 표시 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |