다른 도메인이 세션 공유 를 하는 방법

다음의 기재 내용에서, 설명의 목적으로, 본 발명의 완전한 이해를 제공하기 위해 많은 구체적인 세부사항이 기술된다. 그러나 당업자에게 본 발명이 이런 구체적인 세부사항 없이도 실시될 수 있음은 자명할 것이다. 다른 경우에, 구조 및 장치는 본 발명을 불명료하게 하지 않도록 블록도로 도시된다. 아래 첨자 또는 접미사가 없는 숫자에 대한 참조는 참조된 숫자에 대응하는 아래 첨자 및 접미사의 모든 경우를 참조하도록 이해된다. 또한, 본 개시 내용에 사용된 언어는 주로 가독성 및 교육 목적을 위해 선택되었으며, 본 발명의 청구 대상을 기술하거나 제한하고 이러한 본 발명의 청구 대상을 결정하는 데 필요한 청구범위에 의존하도록 선택된 것은 아닐 수 있다. 본원에서 언급된 "일 실시예" 또는 "실시예"는 실시예와 관련하여 설명된 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 일 실시예에 포함됨을 의미하고, 다수 언급된 "일 실시예" 또는 "실시예"가 반드시 동일할 실시예 모두를 지칭하는 것으로 이해되어서는 안 된다.

적어도 하나의 실시예에서, 본 발명은 사용자의 로그인 크리덴셜에 대한 액세스 없이 장치에서 사용자 세션의 투명한 관리, 중단, 복구, 공유, 제한 및 이동을 위한 방법 및 프로세스를 제공할 수 있다. 사용자는 세션을 공유하고 인가된 사용자에게 읽기-전용 액세스를 제공할 수 있다. 그 밖의 다른 실시예에서는 액티브한 세션의 수명 연장을 포함할 수 있다.

본원에서 사용된 바와 같이, "컴퓨터 시스템"이라는 용어는 단일 컴퓨터, 또는 컴퓨터 시스템 상에서 또는 컴퓨터 시스템에 의해 수행되는 것으로 설명된 기능을 수행하도록 함께 작동하는 복수의 컴퓨터를 지칭할 수 있다.

본원에서 사용된 바와 같이, "프로그램가능 장치"라는 용어는 단일 프로그램가능 장치, 또는 프로그램가능 장치 상에서 또는 프로그램가능 장치에 의해 수행되는 것으로 설명된 기능을 수행하도록 함께 작동하는 복수의 프로그램가능 장치를 지칭할 수 있다. 마찬가지로, "머신 판독가능 매체"는 단일 물리적 매체, 또는 머신 판독가능 매체 상에 저장되는 것으로 설명된 요소를 함께 저장할 수 있는 복수의 매체를 지칭할 수 있다.

본원에서 사용된 바와 같이, “세션”이라는 용어는 사용자의 브라우저와 원격 서버에서 실행되는 특정 웹 서비스 간 공유 가능한 데이터를 지칭할 수 있고, 이는 일부 실시예에서 모든 요청에서 전달된다. 세션은, 당업자가 쉽게 이해하는 여러 방식 중에서 특히, 브라우저 또는 이용 가능한 그 밖의 다른 로컬 스토리지에서 쿠키로서 저장될 수 있다.

본원에서 사용된 바와 같이, “크리덴셜”이라는 용어는 웹 상에서 특정 서비스의 인증을 위해 사용되는, 사용자에 특정될 수 있는 데이터를 지칭할 수 있다. 이는 사용자 이름과 패스워드를 포함할 수 있으나, 그러나 이에 제한되지는 않는다.

본원에서 사용된 바와 같이, “세션 매니저”라는 용어는 사용자가 세션 데이터를 세션 서버와 동기화시키고, 세션을 중단 및 복원하기 위해 사용자 브라우저와 통신할 수 있게 하는, 사용자 장치에서 실행되는 서비스를 지칭할 수 있다.

본원에서 사용된 바와 같이, “가상 사설망(VPN)”이라는 용어는 사설망에서부터 인터넷과 같은 공중망까지를 지칭할 수 있다. 이는, 당업자가 쉽게 이해할 여러 가지 사설망 특징 중에서 특히, 사설망의 기능, 보안 및 관리 정책의 이득을 얻으면서도, 마치 사설망에 직접 접속된 것처럼, 공유된 네트워크 또는 공중망을 통해 컴퓨터가 데이터를 송수신할 수 있게 해준다. VPN은, 당업자가 쉽게 이해하는 여러 방식 중에서 특히, 예를 들어, 전용 접속, 가상 터널링 프로토콜 또는 트래픽 암호화의 사용을 통해 가상 점대점(point-to-point) 접속을 구축함으로써 생성될 수 있다.

본원에서 사용된 바와 같이, “VPN 클라이언트”라는 용어는 사용자가 VPN에 액세스하게 할 수 있는, 사용자 장치에서 실행되는 서비스를 지칭할 수 있다.

본원에서 사용된 바와 같이, “매스터 패스워드(MP)”라는 용어는 예를 들어, 세션 매니저, VPN 클라이언트 및 VPN에서 인증하는 데에 사용될 수 있는 사용자-제공 패스워드를 지칭할 수 있다. 이는 사용자 이름과 유도(derivation) 메커니즘과 결합하여 인증 정보가 된다.

본원에서 사용된 바와 같이, “인가 토큰(authorization token)”이라는 용어는 사용자의 진위를 인증하고 사용자 데이터를 복호화하는(decrypt) 데에 사용될 수 있는 매스터 패스워드의 파생 버전을 지칭할 수 있다. 인가 토큰은 사용자 장치에서 세션 서버로 전송되어, 세션 서버에 저장된 그 특정 사용자에 대한 인증 토큰(authenticity token) 버전과 비교될 수 있다.

본원에서 사용된 바와 같이, “암호화 키”라는 용어는 두 개의 별개의 키를 필요로 할 수 있는 암호화 알고리즘을 지칭할 수 있고, 그 중 하나는 비밀(또는 개인)이고 다른 하나는 공개(공개키/개인키 쌍)일 수 있다. 서로 다르지만, 이 키 쌍의 양쪽은 수학적으로 연결되어 있다.

본원에서 사용된 바와 같이, “공개키”라는 용어는 평문을 암호화하거나 디지털 서명을 확인하는 데에 사용될 수 있는 키를 지칭할 수 있다.

본원에서 사용된 바와 같이, “개인키”라는 용어는 암호문을 복호화하거나 디지털 서명을 생성하는 데에 사용될 수 있는 키를 지칭할 수 있다.

본원에서 사용된 바와 같이, “세션 서버”라는 용어는 장치들 및 사용자들 간에 세션 데이터를 동기화하기 위한 중앙 집중형 스토리지를 지칭할 수 있다. 적어도 하나의 실시예에서, 이는 사용자의 암호화된 세션 데이터에 대한 액세스를 제공할 수 있다.

본원에서 사용된 바와 같이, “세션 서버 애플리케이션 프로그래밍 인터페이스(API)”라는 용어는 세션 매니저와 VPN 클라이언트가 사용자들을 인증하고 암호화된 세션 데이터를 원격으로 동기화하기 위한 프로그래밍 인터페이스를 지칭할 수 있다. 이는, 세션 매니저와 VPN 클라이언트가 세션 데이터 공유를 위해 사용자들의 공개키를 검색하는 방법을 제공하기도 한다.

본원에서 사용된 바와 같이, “멤버 파일”이라는 용어는 특정 사용자와 연계되어 세션 서버에 저장될 수 있는 데이터를 지칭할 수 있다. 이는 사용자 이름, 인증 토큰, 암호화된 개인키 및 공개키를 포함할 수 있으며, 다만 이에 제한되지는 않는다.

본원에서 사용된 바와 같이, “인증 정보”라는 용어는, 적어도 하나의 실시예에서, 세션 매니저, VPN 클라이언트 및 VPN에서 사용자 인증을 위해 사용되는 사용자 이름 및 매스터 패스워드의 파생 버전의 조합을 지칭할 수 있다.

본원에서 사용된 바와 같이, “세션 데이터”라는 용어는 사용자 세션에 관련된 데이터 컬렉션을 지칭할 수 있다. 사용자 장치 및 VPN에 위치할 때, 데이터는 있는 그대로의, 암호화되지 않은 형태일 수 있다. 세션 서버와 동기화되었을 때, 데이터는 암호화된 형태일 수 있다.

본원에서 사용된 바와 같이, “암호화된 사용자 데이터”라는 용어는 인가 토큰으로 암호화될 수 있는 사용자의 세션 데이터를 지칭할 수 있다.

본원에서 사용된 바와 같이, “암호화된 개인키”라는 용어는 사용자와 공유한 세션들을 복호화하는 데에 사용될 수 있는 사용자의 암호화된 개인키를 지칭할 수 있다. 이는 세션 서버에 암호화된 상태로 저장될 수 있으며, 인가 토큰을 사용하여 사용자 장치에서 복호화될 수 있다.

본원에서 사용된 바와 같이, “쿠키”라는 용어는 사용자가 웹사이트를 브라우징하는 동안에 웹사이트로부터 전송되어 사용자의 웹 브라우저에 저장될 수 있는 작은 데이터 조각을 지칭할 수 있다. 쿠키는 하이퍼텍스트 전송 프로토콜(“HTTP”) 쿠키, 웹 쿠키, 또는 브라우저 쿠키로도 알려져 있다. 일부 실시예에서, 사용자가 웹사이트를 로딩할 때 사용자의 이전 활동을 웹사이트에 알리기 위해, 브라우저는 쿠키를 다시 서버로 전송한다.

본원에서 사용된 바와 같이, “브라우저 스토리지”라는 용어는 웹 스토리지 및/또는 DOM(문서 객체 모델) 스토리지를 지칭할 수 있으며, 이는 웹 브라우저에 데이터를 저장하는 데에 사용되는 웹 애플리케이션 소프트웨어 방법 및 프로토콜이다. 웹 스토리지는 쿠키와 유사하게 영구적인 데이터 저장을 지원하지만, 훨씬 향상된 용량을 갖고 있으며 HTTP 요청 헤더에는 어떠한 정보도 저장되지 않는다. 로컬 스토리지 및 세션 스토리지의 두 개의 주된 웹 스토리지 유형이 있으며, 이들은 각각 영구 쿠키 및 세션 쿠키와 유사하게 동작한다.

본원에서 사용된 바와 같이, “세션 공유”라는 용어는 사용자들이 수신한 사용자의 공유키로 암호화하여 다른 사용자들과 하나 혹은 다수의 세션을 공유할 수 있다는 점이 고려된다는 사실을 지칭할 수 있다. 공유 세션은 세션 서버를 통해 동기화될 수 있다.

본원에서 사용된 바와 같이, “공유 제약”이라는 용어는 제 1 사용자가 제 2 사용자와 공유한 세션에 대해 사용자들이 제한을 가할 수 있다는 점이 고려된다는 사실을 지칭할 수 있다. 이러한 제약은 개별 세션 별로 적용되고, 수신자가 공유 세션의 상태를 수정하는 기능을 제한할 수 있다.

본원에서 사용된 바와 같이, “공유 세션 데이터”라는 용어는 다른 사용자로부터 수신될 수 있는 세션 데이터를 지칭할 수 있다. 이는 잠기거나 잠금 해제된(locked or unlocked) 두 가지 상태에 있을 수 있다(이하 참조).

본원에서 사용된 바와 같이, “잠긴 공유 세션 데이터”라는 용어는, 적어도 하나의 실시예에서, 수신자가 보거나 수정할 수 없는 공유 세션 데이터를 지칭할 수 있다. 적어도 하나의 실시예에서, 수신자는 이 데이터를 사용하기 위해 VPN을 이용할 수 있다.

본원에서 사용된 바와 같이, “잠금 해제된 공유 세션 데이터”라는 용어는, 적어도 하나의 실시예에서, 동기가 부여된 수신자가 보거나 수정할 수 있는 공유 세션 데이터를 지칭할 수 있다. 적어도 하나의 실시예에서, 수신자는 이 데이터를 사용하기 위해 세션 매니저 혹은 VPN을 이용할 수 있다.

본원에서 사용된 바와 같이, “입력 필터”라는 용어는 공유 세션에서 특정 유형의 HTTP(들) 요청을 제한하기 위해 들어오는 요청들에 대해 VPN에 의해 적용될 수 있는 필터를 지칭할 수 있다. 예를 들어, 수신자가 세션에서 로그아웃하지 못하도록 공유 세션이 제한될 수 있다. 이런 경우에, /logout에 대한 POST가 필터링되어 허용되지 않을 수 있다.

본원에서 사용된 바와 같이, “출력 필터”라는 용어는 특정 하이퍼텍스트 마크업 언어(“HTML”) 컨텐츠가 사용자에게 디스플레이되는 것을 제한하기 위해, 공유 세션에서 HTTP(들) 응답에 대해 VPN 및 세션 매니저에 의해 적용될 수 있는 필터를 지칭할 수 있다. 예를 들어, 출력 필터는 반환된 HTML 컨텐츠에서 “로그아웃” 버튼을 제거하거나, 공유 세션의 수신자가 세션 상태를 수정할 수 있는 링크를 숨길 수 있다.

본원에서 사용된 바와 같이, “제약 없는”이라는 용어는, 세션이 어떤 제약도 없이 공유될 때, 들어오는 요청 및 나가는 응답에 어떤 입력 또는 출력 필터도 적용되지 않는다는 점을 지칭할 수 있다.

본원에서 사용된 바와 같이, “보안 소켓 계층(SSL, Secure Sockets Layer)”이라는 용어는 보안 소켓 계층(“SSL”) 세션을 지칭할 수 있고, 이는 SSL 핸드셰이크(handshake)라고 하는 메시지들의 교환으로 시작될 수 있다. 핸드셰이크를 통해, 서버는 공개키 기법을 사용하여 클라이언트에게 자신을 인증하고, 클라이언트와 서버는 다음 세션 동안의 신속한 암호화, 복호화 및 간섭 탐지에서 사용되는 대칭키를 생성하도록 협력한다. 선택적으로, 클라이언트는 핸드셰이크를 통해 서버에게 자신을 인증한다.

본원에서 사용된 바와 같이, “문서 객체 모델(DOM)”이라는 용어는 HTML, 확장 가능 하이퍼텍스트 마크업 언어(“XHTML”) 및 확장 가능 마크업 언어(“XML”) 문서에서 객체를 표현하고 객체와 상호 작용하기 위한 크로스 플랫폼 및 언어 독립적인 수단을 지칭할 수 있다. DOM 트리의 객체들은 그 객체들에 대한 메쏘드를 사용하여 처리되고 제어될 수 있다.

본원에서 논의된 모든 암호화 및 복호화는 공지된 임의의 수단으로 수행될 수 있으며, 이는 당업자에게 쉽게 이해될 것이다.

본 발명의 기법은 사용자 크리덴셜에 대한 액세스 없이 장치에서 사용자 세션의 투명한 관리, 중단, 복구, 공유, 제한 및 이동을 가능하게 한다. 사용자는 자신의 각각의 또는 모든 온라인 계정에서 즉각적으로 자동 로그인 및 로그아웃을 할 수 있고, 그렇게 함으로써, 사용자는 클라이언트 장치들은 물론 그 밖의 다른 인증 및 인가된 사용자들과 패스워드를 공유하지 않고도 세션을 공유할 수 있다. 시작 사용자가 공유 세션 권리를 제한할 수 있는 것은 물론, 공유 세션 각각에 대한 액세스를 제거할 수 있는 안전한 방식으로 공유가 이루어질 수 있다. 기술적인 효과는, 연장된 시간 동안 사용자의 크리덴셜에 대한 액세스 없이 웹사이트로의 사용자 로그인을 저장하거나, 복구하거나 또는 살려둘 수 있는 시스템을 포함한다.

이제 도 1을 참조하면, 본 발명의 일 실시예가 프로세스(100)에 도시되어 있고, 여기서, 예를 들어, 도 11의 모바일 장치(1114)와 같은 사용자 장치에 애플리케이션이 저장될 수 있고, 사용자가 등록될 수 있다. 102에서, 일 실시예에 따르면, 사용자는 사용자 클라이언트 장치(1114, 도 11)에 (당업자가 쉽게 이해하는 여러 방식 중에서 특히) 독립형 애플리케이션으로서 또는 적어도 하나의 다른 제삼자 애플리케이션과 함께 번들로서 세션 매니저를 설치할 수 있다. 또는, 다른 실시예에서, 사용자는 클라이언트 장치(1114, 도 11)에 가상 사설망(“VPN”) 클라이언트(또는 세션 매니저 VPN 클라이언트)를 설치할 수 있다.

104에서, 클라이언트 장치(1114, 도 11)의 사용자는, 당업자가 쉽게 이해하는 여러 가지 로그인 정보 중에서 특히, 예를 들어, 사용자 이름 및 매스터 패스워드(“MP”)를 제공하도록 유도될 수 있다.

106에서, 사용자로부터 수신된 이런 로그인 정보에 기반하여 인가 토큰이 생성될 수 있다.

108에서, 일 실시예에서 공개 및 개인 암호화 키가 생성될 수 있다.

110에서, 생성된 개인키가 암호화될 수 있다.

112에서, 예를 들어, 네트워크(1102, 도 11)와 같은 네트워크를 거쳐 원격 세션 서버(예를 들어, 서버(1104, 도 11))로 인가 토큰 및 공개키를 전송함으로써, 세션 서버의 애플리케이션 프로그래밍 인터페이스(API)를 통해 클라이언트 장치(1114, 도 11)의 사용자가 세션 서버에 등록될 수 있다. 세션 서버가 로그인 정보를 수신하면, 사용자가 등록될 수 있다.

114에서, 일 실시예에서, 세션 서버는 예를 들어, 스크립트와 같은 패스워드-기반 키 유도 함수를 사용하여 알고리즘으로 인가 토큰을 보호할 수 있다. 또한, 일 실시예에서, 세션 서버는 클라이언트 장치(1114, 도 11)로부터 수신한 보호되지 않는 인가 토큰의 복사본을 삭제할 수 있다.

116에서, 당업자가 쉽게 이해하는 여러 가지 다른 사용자 정보 중에서 특히, 사용자 이름, 알고리즘으로 보호되는 인가 토큰, 공개키 및 암호화된 개인키 등의, 그러나 이에 제한되지는 않는, 사용자 정보로 구성된 멤버 파일이 생성될 수 있다.

118에서, 당업자가 쉽게 이해하는 여러 다른 유사한 장소 중에서 특히, 세션 서버에, 보안 또는 비보안 방식으로, 멤버 파일이 저장될 수 있다. 120에서, 멤버 파일의 생성에 응답하여, 이제 클라이언트 장치(1114, 도 11)에 연계된 사용자가 등록될 수 있다. 도 1이 도 11의 장치(1114)를 참고하여 기술되어 있지만, 프로세스(100)에서 사용되도록 장치들(1106, 1110 또는 1112, 도 11에 도시됨)을 포함하는 그 밖의 다른 임의의 장치들도 고려된다.

이제 도 2a를 참조하면, 사용자의 인증이 VPN이 없이 행해지는 본 발명의 일 실시예가 도시되어 있다. 204에서, 사용자는 당업자가 쉽게 이해하는 여러 유형의 인증 정보 중에서 특히, 사용자 이름 및 매스터 패스워드(MP) 등의, 그러나 이에 제한되지는 않는, 사용자의 인증 정보를 클라이언트 장치(1114, 도 11)에 설치된 세션 매니저(202)를 통해 제출할 수 있다. 206에서, 이렇게 입력된 인증 정보는 당업자에게 자명한 기타 적절한 정보들과 함께 인가 토큰을 생성하는 데에 사용될 수 있다. 208에서, 인가 토큰은 세션 서버(210)에서 세션을 인증하는 데에 사용될 수 있다. 일 실시예에서, 이 인가 토큰과 함께 사용자 이름이 세션 서버 API를 통해 세션 서버(210)에서 사용자를 인증하는 데에 사용될 수 있다.

212에서, 세션 서버(210)는 비교를 위해 세션 매니저(202)로부터 인가 토큰을 수신한다. 214에서, 세션 서버(210)는 세션 매니저(202)로부터 수신된 인가 토큰이 멤버 파일(도 1의 단계(118)에서 논의됨)에 저장되어 있는, 알고리즘으로 보호된 인가 토큰과 매치하는지 여부를 결정한다. 세션 서버(210)에서, 수신된 인가 토큰과 알고리즘으로 보호된 인가 토큰이 매치하는 경우(즉, 단계(214) = “예”), 220에서, 사용자가 인증되고, 암호화된 개인키가 복호화를 위해 수신될 수 있으며, 이는 아래에서 논의된다. 또는, 수신된 인가 토큰이 멤버 파일에 저장된, 알고리즘으로 보호된 인가 토큰과 매치하지 않는 경우(즉, 단계(214) = “아니오”), 218에서, 사용자가 인증되지 않았거나 크리덴셜이 잘못되었음을 나타내는 메시지가 세션 매니저(202) 또는 클라이언트 장치(1114, 도 11)의 다른 사용자 인터페이스를 통해 사용자에게 반환될 수 있다. 유사한 방식으로, 이러한 인증 결정 단계에서는 인증 세션에서 수신된 어떤 정보든 멤버 파일에 저장된 정보와 비교될 수 있다.

220에서, 사용자가 인증되면, 공개키 및 암호화된 개인키 등의, 그러나 이에 제한되지는 않는, 사용자 정보가 해당 멤버 파일에서 검색될 수 있다. 클라이언트 장치(1114, 도 11)에서의 암호화된 개인키가 복호화될 수 있다.

222에서, 세션 서버(210)로부터 세션 데이터가 검색될 수 있다. 일례로, 세션 매니저(202)가 세션 서버 API를 통해 세션 서버(210)로 사용자 이름에 연계된 요청을 함으로써, 세션 서버(210)로부터 세션 데이터 요청을 할 수 있다. 이러한 요청에 대한 응답으로, 세션 서버(210)는 예를 들어, 암호화된 사용자 데이터 및 암호화된, 잠금 해제된 공유 세션을 반환할 수 있고, 이는 아래에 설명된 도 5와 관련하여 추후에 논의될 것이다.

226에서, 암호화된 사용자 데이터가 수신되어 인가 토큰에 의해 복호화될 수 있다. 유사한 방식으로, 228에서, 암호화된 공유 세션이 사용자의 개인키에 의해 복호화될 수 있다. 230에서, 세션 매니저(202)는 사용자 자신의 세션 데이터 및 사용자와 공유된 세션 데이터를 이용할 수 있다.

이제 도 2b를 참조하면, VPN을 통해 인증이 이루어지는 본 발명의 일 실시예가 도시되어 있다. 236에서, 사용자는 당업자가 쉽게 이해하는 여러 유형의 인증 정보 중에서 특히, 사용자 이름 및 매스터 패스워드(MP) 등의, 그러나 이에 제한되지는 않는, 인증 정보를 VPN 클라이언트(232)를 통해 제출할 수 있다. 238에서, 이렇게 입력된 인증 정보는, 개인 정보와 같은, 그러나 이에 제한되지는 않는 당업자에게 자명한 기타 적절한 정보들과 함께 인가 토큰을 생성하는 데에 사용될 수 있다. 240에서, 생성된 인가 토큰은 세션 서버(210)에서 세션을 인증하는 데에 사용될 수 있다. 일 실시예에서, 사용자 이름과 인가 토큰은 세션 서버 API를 통해 세션 서버(210)에서 사용자를 인증하는 데에 사용될 수 있다.

246에서, 인가 토큰이 수신되어 세션 서버(210)에 저장될 수 있다. 248에서, 세션 서버(210)는, 일 실시예에서, 수신된 인가 토큰이 멤버 파일(도 1의 단계(118)에서 도시되고 설명됨)에 저장되어 있는, 알고리즘으로 보호된 인가 토큰과 매치하는지 여부를 결정할 수 있다. 토큰들이 매치하는 경우(즉, 단계(248) = “예”), 252에서, 클라이언트 장치의 개인키가 세션 서버(210)로부터 검색된 정보로부터 복호화될 수 있다. 실시예에서, 공개키 및 세션 서버(210)로부터 암호화된 개인키 등의, 그러나 이에 제한되지는 않는, 정보가 해당 멤버 파일에서 안전하게 검색될 수 있다. 또한, 검색되어진 암호화된 개인키는 인가 토큰으로 복호화될 수 있다.

그러나 수신된 인가 토큰이 멤버 파일에 저장된, 알고리즘으로 보호된 인가 토큰과 매치하지 않는 경우(즉, 단계(248) = “아니오”), 250에서, 크리덴셜이 잘못되어 사용자가 인증되지 않았음을 나타내는 메시지가 사용자에게 반환될 수 있다. 일 실시예에서, 이러한 인증 결정 단계(248)에서는 인증 세션에서 수신된 어떠한 정보든 멤버 파일에 저장된 정보와 비교될 수 있다.

다음으로, 254에서, 잠금 해제된 공유 세션 및 잠긴 공유 세션이 VPN 클라이언트(232)를 통해 세션 서버(210)에서 검색될 수 있으며, 이는 도 5와 관련하여 아래에서 더욱 상세하게 논의될 것이다. 일 실시예에서, 세션 서버 API를 통해 세션 서버(210)로 공유 세션 데이터 요청을 제출하면 검색이 시작된다. 요청된 데이터가 검색되어 VPN 클라이언트(232)로 전송될 수 있고, 이는 비제한적인 예시에서, 암호화된, 잠긴 공유 세션 데이터 및 암호화된, 잠금 해제된 공유 세션 데이터를 포함할 수 있다. 258에서, 이런 암호화된 공유 세션 데이터가 복호화된 개인키에 의해 복호화되어, 복호화된, 잠긴 세션 데이터 및 복호화된, 잠금 해제된 세션 데이터를 생성할 수 있다. 복호화된, 잠긴 세션 데이터는 여전히 세션 매니저(202, 도 2a)의 공개키에 의해 암호화될 수 있음을 이해해야 할 것이며, 이는 도 5에서 더욱 상세하게 논의될 것이다.

260에서, VPN 클라이언트(232) 인증이 VPN(234)에서 행해지며, 이는 당업자에게 자명한 인증 데이터 중에서 특히, 인가 토큰, 사용자 이름 및 복호화된, 잠금 해제된 세션 데이터에 관련된 정보, 그러나 이에 제한되지는 않는 인증 정보를 VPN API로 전송하는 것을 포함할 수 있다. 264에서, 인가 토큰을 사용하여 사용자 데이터가 복호화될 수 있다. 나아가, 266에서, 복호화된, 잠긴 공유 세션 데이터가 세션 매니저 공개키를 사용하여 복호화될 수 있다. 268에서, 이제 VPN(234)이 사용할 수 있도록 세션 데이터가 이용가능해지고, VPN(234)은 요청을 수락할 준비가 된다.

이제 도 3a를 참조하면, VPN 없이 세션 로그아웃이 실행될 수 있는 발명의 일 실시예가 도시되어 있다. 사용자가 VPN을 사용하지 않는 경우, 세션 매니저(202)가 로그아웃(304)을 시작할 수 있다. 일 실시예에서, 세션 매니저(202)는, 사용자 브라우저(302)에서 세션 데이터(306)를 읽고, 이렇게 검색된 세션 데이터를 암호화하여 암호화된 세션 데이터(310)를 형성할 것을 요청할 수 있다. 일 실시예에서, 이 세션 데이터(306)는 인가 토큰으로 암호화되어 암호화된 사용자 데이터(310, 또는 암호화된 세션 데이터(310))를 생성할 수 있다. 일 실시예에서, 이 암호화된 사용자 데이터(310)는 저장을 위해 세션 서버(210)로 전송될 수 있다. 당업자가 쉽게 고려하는 여러 가지 방식 중에서 특히, 원격 저장, 로컬 저장, 보안 저장, 비보안 저장 및 휘발성 저장을 포함하는, 당업자가 쉽게 이해하는 임의의 적절한 데이터 저장 방식으로 저장될 수 있다.

다음으로, 일 실시예에서, 브라우저(302) 스토리지에서의 쿠키 삭제를 포함하여, 브라우저(302)의 세션 데이터가 지워질 수 있다(314). 세션 서버(316)로부터의 로그아웃은 세션 서버(316)로 로그아웃 명령어를 전송함으로써 시작될 수 있다. 블록(318)에서 사용자는 이제 브라우저(302)의 세션에서 성공적으로 로그아웃될 수 있다.

이제 도 3b를 참조하면, 세션 로그아웃이 VPN을 통해 실행될 수 있는 발명의 일 실시예가 도시되어 있다. VPN 클라이언트(232)의 사용자가 VPN(234)을 사용하는 경우, 사용자가 VPN(234)으로부터의 로그아웃(340)을 시작할 수 있다. VPN 클라이언트(232)에서 VPN API(344)로 로그아웃 요청(343)을 시작함으로써 VPN으로부터의 로그아웃(342)이 실행될 수 있다. 여기서부터, 메모리에서 모든 세션 데이터가 지워지고(346), 실시예에서, 이 메모리는 쉽게 인식하는 여러 가지 방식 중에서 특히, 휘발성 메모리이거나 영구 메모리, 보안 또는 비보안 메모리일 수 있다. 사용자의 상태가 로그아웃으로 설정될 수 있다. 사용자의 상태가 변경되고 세션 데이터가 지워지면, 사용자 로그아웃(348)은 성공한다.

이제 도 4a를 참조하면, 액티브한 VPN(234)을 통해 로그인/로그아웃 세션이 실행되는 본 발명의 일 실시예가 도시된다. 사용자 브라우저(302)를 통한 세션에 앞서, 사용자가 로그아웃되고(410) 도 2b와 관련하여 전술한 바와 같이 VPN을 통해 인증할 수 있다(402). 사용자가 VPN 클라이언트(232)를 사용하여 로그온한다(412). 브라우저(302)에 세션이 존재하지 않을 수 있다(404). 또한, 이전 세션이 VPN(234)의 메모리에 존재할 수도 있다(414). (사용자가 브라우저(302)를 사용하여 웹페이지(406)에 방문하였을 때) 세션이 시작될 수 있다. 요청(407)이 VPN의 프록시(408)로서 VPN(234)로 전송되고, VPN 클라이언트(232)는 동일 도메인 이름과 연계된 이전 세션이 존재하는지 여부를 결정하기 위해(도 6에서 추가로 상세하게 논의됨) 웹페이지 서버(417)의 세션(416)을 확인할 수 있다. 적절한 세션이 존재하는 경우, VPN의 프록시(408) 응답으로서의 프록시 응답(418)으로 응답(415)이 VPN(234)을 통해 브라우저(302)에 반환될 수 있다.

일 실시예에서, 요청(407)은 블록(408)에서 VPN(234)를 통해 VPN의 프록시에 의해 전송될 수 있고, VPN(234)은 동일한 웹페이지와 연계된 이전 세션의 존재 여부를 확인할 수 있다. 적절한 세션이 존재하는 경우, 이 세션은 요청(407)에 추가되어 요청(407) 상에서 세션이 효율적으로 이용가능하게 할 수 있다. 일 실시예에서, 요청(407)은 일반적으로 VPN 클라이언트(232)에 의해 웹페이지 서버(417)에 프록시되고, 응답(415)이 수신되어 VPN 프록시 응답(418)을 통해 직접 사용자에게 반환될 수 있으며, 이는 아래의 도 6에서 추가적으로 논의될 것이다.

특정 웹페이지에 연계된 세션이 이제 액티브해지고(420), 적절한 세션을 통해 웹페이지가 렌더링될 수 있다(422). (도 3a에 도시된 바와 같이) 사용자가 VPN(234)에서 로그아웃한 경우(424), 메모리에서 세션 데이터가 지워지고(428), 일부 실시예에서, 사용자가 웹페이지를 추후에 방문하면(406), VPN 프록시 요청(431)이 전송될 수 있다. 요청(431)은 일반적으로 VPN 클라이언트(232)를 통해 웹페이지 서버(417)에 VPN의 프록시(432)로서 프록시된다. 응답(435)이 웹페이지 서버(417)에서 검색되어, 블록(434)에서 VPN 클라이언트(232)에 의해 VPN 프록시 응답(418)을 통해 브라우저(302)로 직접 반환될 수 있다. 액티브한 연계 웹페이지 세션 없이, 특정 웹페이지가 브라우저(302)에 렌더링될 수 있다(440).

이제 도 4b를 참조하면, 액티브한 VPN 없이 로그인/로그아웃 세션이 실행될 수 있는 본 발명의 일 실시예가 도시되어 있다. 일 실시예에서, 브라우저(302)에 존재하는 세션 없이 프로세서가 시작되고(450), 사용자가 세션 매니저(202)로 로그인하여 모든 이전 세션을 검색할 수 있고(452), 이를 사용자의 브라우저(302)에 추가할 수 있으며, 이는 도 2a에서 전술되었다. 그 후에 세션은 브라우저(302)에서 활성화될 수 있다(454).

다음으로, 일 실시예에서, 블록(456)에서 사용자가 세션 매니저(202)를 로그아웃하고, 진행되는 모든 세션을 중단할 수 있으며, 이는 도 3a에서 도시되고 설명되었다. 이러한 세션들은 응답(457)을 통해 브라우저(302)에서 중단될 수 있다(458).

이제 도 5를 참조하면, 예를 들어, 세션 생성자(예를 들어, 사용자 A) 및 수신자 사용자(예를 들어, 사용자 B)와 같은 사용자들 간의 세션 공유에 관한 본 발명의 일 실시예가 도시되어 있고, 여기서 세션 공유가 시작될 수 있다. 일 실시예에서, (도 2a 및 도 2b에서 기술된 바와 같이) 사용자 A는 세션 매니저(202) 또는 VPN 클라이언트(232) 어느 한쪽을 통해 직접 인증할 수 있다(502). 사용자 A는 사용자 B와 현재 세션 공유를 시작할 수 있다(504). 또한, 사용자 A는, 일 실시예에서, 진행 중일 수 있는 공유 세션에 적용될 제약 또는 액세스를 선택할 수도 있다(506). 비제한적인 일례를 들면, 당업자가 쉽게 생각하는 여러 가지 방식 중에서 특히, 사용자 A는 특정 세션에 추가된 쿠키에 대한 사용자 B의 액세스를 제한하거나, 또는 사용자 A는 공유 세션에 연계된 코드에 대한 사용자 B의 수정을 제한할 수 있다.

본 발명의 일 실시예에서, 사용자 A는 공유 세션 또는 공유 제약에 대한 사용자 B의 읽기 또는 수정을 제한할지 여부를 지정할 수 있다(508). 사용자 A가 공유 세션을 제한하거나 세션 수정을 금지하도록 결정하는 경우(즉, 단계(508) = “예”), 공유 세션은 “잠김”으로 묘사된다. 실시예에서, 사용자 A의 세션 매니저(202) 또는 VPN 클라이언트(232)는 세션 서버(210)의 세션 서버 API로부터 세션 매니저의 공개키(510)를 요청할 수 있다. 실시예에서, 세션 매니저(202) 또는 VPN 클라이언트(232)는 응답으로서(513) 세션 매니저(202)의 공개키(510)를 검색하고, 이를 사용하여 공유 세션을 암호화할 수 있다(514). 공유 세션의 암호하에 의해 잠긴 세션이 생성된다(515). 그러나 사용자 A가 공개 세션을 제한하지 않도록 결정하는 경우(즉, 단계(508)="아니오"), 이는 “잠금 해제"로 묘사되고(516), 능력이 되는 수신자는 세션 및/또는 관련 제약을 보거나/수정할 수 있다고 가정한다.

다음으로, 세션 매니저(202) 또는 VPN 클라이언트(232)는 사용자 B의 공개키를 요청할 수 있다(518). 일 실시예에서, 사용자 B의 공개키(518)는 세션 서버(210)와 같은, 그러나 이에 제한되지는 않는, 공통으로 액세스 가능한 장소에 저장될 수 있다. 그 후 세션 서버(210)로부터 사용자 B의 공개키가 검색될 수 있다(519). 사용자 B의 공개키는 사용자 A 및 사용자 B 사이의 공유 세션을 암호화하는 데 사용될 수 있다(520). 일 실시예에서, 사용자 B의 공개키는 추후 사용을 위해, 당업자가 쉽게 고려하는 여러 가지 방식 중에서 특히, 원격 저장, 로컬 저장, 보안 또는 비보안 저장을 포함하는, 그러나 이에 제한되지는 않는 임의의 적절한 장소에 저장될 수 있다.

사용자 A 및 사용자 B 사이의 암호화된 세션이 세션 서버로 전송되어(524) 세션 서버(210)에 저장될 수 있다. 암호화된 세션은 공유 세션과 관련된 사용자 A 및 사용자 B 어느 한쪽 또는 양쪽 모두에 연계될 수 있다.

도 6은 일 실시예에 따른 VPN 기능에 관한 기법을 설명하는 프로세스(600)를 도시한다. 일 실시예에서, VPN, 예를 들어, VPN(234)은 602에서, 제 2 사용자(즉, 세션 수신자)로부터 세션 요청을 수신할 수 있다. 604에서, 제 2 사용자가 세션 매니저, 예를 들어, 세션 매니저(202)로 로그인하였는지 여부가 결정될 수 있다. 제 2 사용자가 세션 매니저로 로그인한 경우(단계(604) = “예”), 606에서, 보안 프로토콜을 통해 접속되었는지 여부가 결정될 수 있다. 보안 프로토콜을 통한 접속인 경우(단계(606) = “예”), 608에서, SSL 핸드셰이크가 제 2 사용자와 협상될 수 있다. 610에서, 602의 사용자 세션 요청에 대한 이전 세션의 존재 여부가 결정될 수 있다.

그러나 보안 프로토콜을 통하지 않은 접속인 경우(즉, 단계(606) = “아니오”), 프로세스(600)는 단계(610)로 진행하여 요청에 대한 이전 세션 존재 여부가 결정될 수 있다. 특정 세션 요청에 대한 이전 세션이 존재하지 않는 경우(즉, 단계(610) = “아니오”), 612에서, 프록시 요청이 생성될 수 있다. 마찬가지로, 단계 604에서, 제 2 사용자가 세션 매니저로 로그인하지 않는 경우, 612에서, 프록시 요청이 생성될 수 있다.

특정 요청에 해당하는 이전 세션이 존재하는 경우(즉, 단계(610) = “예”), 616에서, 이전 세션이 공유되었는지 여부가 결정된다. 세션이 공유되지 않았으면(즉, 단계(616) = “아니오”), 618에서, 이전에 존재했던 세션 쿠키가 생성된 프록시 요청에 추가될 수 있다. 그러나 이전 세션이 공유되었던 경우(즉, 단계(616) = “예”), 620에서, 공유 세션의 파라미터에 의해 HTTP 또는 HTTPS 요청이 인가되는지 여부가 결정된다. HTTP 또는 HTTPS 요청이 인가되면(즉, 단계(620) = “예”), 618에서, 세션 쿠키가 프록시 요청에 추가될 수 있다. 그러나 HTTP 또는 HTTPS 요청이 공유 세션 허가에 의해 인가되지 않으면(즉, 단계(620) = “아니오”), 622에서, 제 2 사용자가 제 1 사용자(즉, 세션 생성자)와의 공유 세션에 참가하는 것이 인가되지 않음을 나타내는 “요청 인가되지 않음"이라는 메시지가 제 2 사용자에게 반환될 수 있다. 실시예에서, 특정 공유 세션에 복수 개의 입력 필터가 연계될 수 있고, 일 실시예에서, 세션을 활발히 공유하고 있는 제 1 사용자가 이 입력 필터들을 설정할 수 있다.

계속해서 단계(612)에서, 프록시 요청이 생성되면, 614에서, 프록시 요청이 웹서버(예컨대, HTTP 또는 HTTPS)로 전송되고, 624에서, HTTP 또는 HTTPS 서버로부터 세션 매니저로 응답이 전송될 수 있다. 626에서, 제 2 사용자가 세션 매니저로 로그인하였는지 여부가 결정될 수 있다. 제 2 사용자가 세션 매니저로 로그인한 경우(즉, 단계(626) = “예”), 630에서, 세션이 제 2 사용자와 공유되었는지 여부가 결정될 수 있다. 제 2 사용자와 세션이 공유되지 않았으면(즉, 단계(630) = “아니오”), 628에서, 제 2 사용자와 세션이 공유되지 않음을 제 2 사용자에게 알려주는 응답이 제 2 사용자에게 반환될 수 있다. 마찬가지로, 제 2 사용자가 세션 매니저로 로그인하지 않은 경우(즉, 단계(626) = “아니오”), 628에서, 제 2 사용자에게 상기의 응답이 전송될 수 있다.

한편, 제 2 사용자와 세션을 공유하는 경우(즉, 단계(630) = “예”), 632에서, 특정 공유 세션과 연계된 파라미터 및 출력 필터가 이 응답에 적용될 수 있다. 628에서, 서버에서 응답이 검색되고, 수정 또는 필터링된 응답이 제 2 사용자에게 전송될 수 있다. 일 실시예에서, 제 2 사용자가 로그아웃과 같은 페이지의 특정 동작을 실행하지 못하거나, 또는 공유된 제 2 사용자가 이용하지 못하도록 응답에서 세션 쿠키를 제거하는 것과 같이(그러나 이에 제한되지는 않음), 응답에 연계된 HTML에 직접적인 수정이 가해질 수 있다. 일 실시예에서, 세션을 공유하는 제 1 사용자가 출력 필터를 설정하는 것도 고려될 수 있다. 도 6은 제 2 사용자와 관련하여 논의되었지만, 도 6의 논의에서 추가 공유 사용자들이 얼마든지 많이 고려된다는 점을 이해해야 한다.

이제 도 7a를 참조하면, 액티브한 VPN(234)을 통해 공유 세션이 수신될 수 있는 본 발명의 일 실시예가 도시되어 있다. 일 실시예에서, 제 1 사용자 A는 공유된 제 2 사용자 B와 특정 웹페이지 또는 도메인 이름에 관련된 세션을 공유할 수 있다(도 5에서 전술함, 710). 또한, 사용자 B는 이전에 등록되었을 수 있고(708), 공유를 위해 공개키 및 개인키를 생성했을 수 있다(도 1에서 전술함). 공유 세션을 수신하기 위해, 블록(712)에서 사용자 B는 VPN 클라이언트(704)를 사용하여 VPN(234)에 로그인하고, 특정 웹사이트에 연계된 공유 세션을 검색 및 복호화할 수 있다(도 2b에서 전술함).

브라우저(706)에서 공유 세션이 이전에 존재하지 않았으면(즉, 세션이 존재하지 않음(714)), 사용자 B는 사용자 B의 브라우저(706)를 통해 공유 세션에 연계된 웹페이지 또는 도메인 이름에 대한 요청을 전송할 수 있다(716). 이러한 요청은 VPN(234)을 통해 프록시에 의해 전송될 수 있고, 필요한 입력 필터들이 VPN(234)에 의해 요청(716)에 적용될 수 있다(도 6에서 전술함). 웹페이지 또는 도메인 이름 서버(720)로 프록시 요청이 전송될 수 있고, 그 요청에 기반하여 응답이 검색되어 블록(724)에서 VPN(234)을 통해 프록시에 의해 브라우저(706)로 전송된다. 일 실시예에서, VPN(234)은 브라우저(706)로 전송된 요청에 출력 필터를 적용할 수 있다(도 6에서 전술함). VPN(234)은 적절한 출력 필터에 기반하여 응답을 렌더링하고(726), 적절한 제약과 필터가 적용된 공유 세션이 브라우저(706)에서 활성화될 수 있다. 그후에 이 세션은 브라우저(706)에서 활성화될 수 있다(728).

이제 도 7b를 참조하면, 액티브한 VPN 없이 공유 세션이 수신될 수 있는 본 발명의 일 실시예가 도시되어 있다. 일 실시예에서, 제 1 사용자 A는 공유된 또는 제 2 사용자 B와 특정 웹페이지 또는 도메인 이름에 관련된 세션을 공유할 수 있다(도 5에서 전술함, 711). 또한, 사용자 B는 이전에 등록되었을 수 있고(709), 공유를 위해 공개키 및 개인키를 생성했을 수 있다(도 1에서 전술함). 공유 세션을 수신하기 위해, 사용자 B는 세션 매니저로 로그인하고(730), 특정 웹사이트에 연계된 공유 세션을 검색 및 복호화할 수 있다(도 2a에서 전술함, 732). 일 실시예에서, 브라우저(706)에서 공유 세션이 이전에 존재하지 않았으면(세션이 존재하지 않음(732)), 사용자 B는 복호화된 공유 세션(732)을 브라우저(706)에 추가하고(733), 이는 브라우저(706)에서 제약 없이 활성화될 수 있다(734).

일 실시예에서, 브라우저(706)를 사용하여, 사용자 B는 HTTP 서버(720)에 연계된 웹페이지에 요청을 전송할 수 있다(736). 해당 응답이 서버로부터 검색되어 브라우저(706)에서 수신할 수 있다(738). 응답이 수신되면(738), 브라우저(706)는 통지를 통해 세션 매니저(702)에게 알려줄 수 있다(739). 세션 매니저(702)는 동시에 브라우저(706)로부터의 응답에 귀를 기울일 수 있다(740). 브라우저(706)는 웹 서버(720)로부터의 응답을 렌더링하고(742), 세션 매니저(702)는 응답(742)에 필요한 제약을 가할 수 있다(744). 일 실시예에서, 세션 매니저(702)는 렌더링된 웹페이지의 문서 객체 모델(“DOM”) 요소를 수정함으로써 제약을 가할 수 있지만(745), 당업자에게 자명한 다른 방식들도 고려된다. 블록(746)에서, 웹페이지가 브라우저(706)에 렌더링되고, 이 렌더링된 웹페이지에 공유 세션 제약이 가해졌을 수 있다.

도 8은 일 실시예에 따른 액티브한 세션 관리를 도시하고 있다. 일 실시예에서, 제 1 사용자, 예를 들어, 사용자 A가 세션 매니저(202)로 인증될 수 있다(도 2에서 전술함, 802). 그 후에 사용자는 브라우저(302)에서 특정 도메인 이름에 연계된 웹페이지 상에 새로운 세션을 생성할 수 있다(804). 브라우저(302)에서 그 세션이 만료되면, 세션 매니저(202)가 이러한 만료를 탐지하여(808) 그 세션의 수명을 연장할 수 있다. 일 실시예에서, 당업자가 쉽게 고려하는 여러 가지 다른 방식 중에서 특히, 예를 들어, 브라우저(302)에서 특정 도메인 이름에 연계된 차후 모든 세션들이 연장된 수명을 갖거나, 또는 세션의 수명이 개별적으로 연장되도록 수명 연장이 수정될 수 있다.

사용자가 세션 매니저(202)를 로그아웃하는 경우, 모든 액티브한 세션들이 세션 매니저(202)에 의해 중단될 수 있다(도 3a에서 도시되고 설명됨, 810).

추후 얼마 후에, 사용자가 이전 로그인이나 세션 매니저(202)의 인증 없이, 브라우저(302)에서 동일한 특정 도메인 이름에 연계된 웹페이지 상에 새로운 세션을 생성할 수 있다(812). 세션 매니저(202)로 로그인하려는 추후 시도가 있는 경우(도 2a에서 도시되고 설명됨), 세션 매니저(202)는 그 도메인 이름에 연계된 새로운 세션과 이전에 중단된 세션 간의 충돌을 탐지할 수 있다(814). 일 실시예에서, 사용자는 중단된 세션으로 새롭게 생성된 세션을 오버라이드할지(override) 또는 새롭게 생성된 세션을 유지할지 여부를 결정할 수 있다(816). 또는, 사용자는 도 2a-2b에서 설명한 대로 이전에 생성된 세션을 검색할 수도 있다.

일 실시예에서, 온라인 뱅킹 애플리케이션의 경우, 사용자는 브라우저(302)를 통해 뱅킹 웹사이트에 새로운 세션을 생성할 수 있고(818), 세션 매니저(202)는 뱅킹 웹사이트 상에 그 세션을 살아 있는 상태로 유지하기 위해 비-세션(non-session) 수정 요청을 전송함으로써 뱅킹 서버를 주기적으로 “간지럽힐(tickle)” 수 있다(820). 따라서, 세션이 통상 짧은 기간의 휴지(inactivity) 후에 중단되는 상황에서도 액티브한 세션이 유지될 수 있다.

일 실시예에서, 사용자는 여러 가지 자명한 방식 중에서 특히, Google®과 같은, 그러나 이에 제한되지는 않는, 다중-계정 웹사이트에서 제 1 세션 A를 생성할 수 있다(822, 구글은 구글 주식회사의 등록된 상표임). 그 후에 사용자는 그 동일한 다중-계정 웹사이트 상에 제 2 세션 B를 생성할 수 있다(824). 실시예에서, 세션 매니저(202)는, 사용자가 다수의 다른 세션에서 로그인 또는 로그아웃할 필요 없이 사용자가 공유 세션에 액세스함으로써, 별개의 다중-계정 세션 사이에서 매끄럽게 전환할 수 있게 하는 사용자 인터페이스를 제공할 수 있다(826).

이제 도 9를 참조하면, 블록도는 일 실시예에 따라 도 1-8에서 기술된 프로세스에서 사용될 수 있는 프로그램 가능 장치(900)를 도시한다. 도 9에 도시된 프로그램가능 장치는 제 1 처리 요소 (processing element, 970) 및 제 2 처리 요소(980)를 포함하는 멀티프로세서 프로그램 가능 장치(900)이다. 두 처리 요소(970 및 980)가 도시되지만, 프로그램가능 장치(900)의 일 실시예는 이러한 처리 요소를 하나만 포함할 수도 있다.

프로그램가능 장치(900)는 제 1 처리 요소(970) 및 제 2 처리 요소(980)가 점대점 상호 접속부(950)를 통하여 연결되는 점대점 상호 접속 시스템으로서 도시된다. 도 9에 도시된 상호 접속 중 일부 또는 전부는 점대점 상호 접속보다는 멀티 드롭 버스(multi-drop bus)로서 구현될 수 있다.

도 9에 도시된 바와 같이, 처리 요소(970 및 980) 각각은 제 1 및 제 2 프로세서 코어들(즉, 프로세서 코 어(974a 및 974b) 및 프로세서 코어(984a 및 984b))을 포함하는 멀티코어 프로세서일 수 있다. 이러한 코어(974a, 974b, 984a, 984b)는 도 1 내지 도 8과 관련하여 앞서 논의된 것과 유사한 방식으로 명령어 코드를 실행하도록 구성될 수 있다. 그러나 다른 실시예는 원한다면 단일 코어 프로세서인 처리 요소를 사용할 수 있다. 다수의 처리 요소(970, 980)가 있는 실시예에서, 각각의 처리 요소는 원하는 대로 상이한 개수의 코어로써 구현될 수 있다.

각각의 처리 요소(970, 980)는 적어도 하나의 공유 캐시(shared cache, 946)를 포함할 수 있다. 공유 캐시(946a, 946b)는 각각, 코어(974a, 974b 및 984a, 984b)와 같이, 처리 요소의 하나 이상의 컴포넌트에 의해 이용되는 데이터(예를 들어, 명령어)를 저장할 수 있다. 예컨대, 공유 캐시는 처리 요소(970, 980)의 컴포넌트에 의한 더 빠른 액세스를 위해 메모리(932, 934) 내에 저장된 데이터를 국부적으로 캐싱할 수 있다. 하나 이상의 실시예에서, 공유 캐시(946a, 946b)는 하나 이상의 중간 레벨 캐시, 예를 들어, 레벨 2(L2), 레벨 3(L3), 레벨 4(L4), 또는 다른 레벨의 캐시, 최종 레벨 캐시(last level cache: LLC), 또는 이들의 조합을 포함할 수 있다.

도 9가 도면의 명료성을 위해 두 처리 요소(970, 980)가 있는 프로그램가능 장치를 도시하나, 본 발명의 범위는 그렇게 한정되지 않으며 임의의 개수의 처리 요소가 존재할 수 있다. 이와 달리, 하나 이상의 처리 요소(970, 980)는 프로세서가 아닌 요소, 예를 들어 그래픽 처리 유닛(GPU), 디지털 신호 처리(DSP) 유닛, 필드 프로그램가능 게이트 어레이, 또는 임의의 다른 프로그램가능 처리 요소일 수 있다. 처리 요소 (980)는 처리 요소(970)와 이종이거나 비대칭일 수 있다. 구조, 미세 구조(microarchitectural), 열, 전력 소모 특성들 및 유사한 것을 포함하는 장점의 측정 범위에 관하여 처리 요소(970, 980) 간에 여러 가지 차이가 있을 수 있다. 이 차이는 처리 요소(970, 980) 사이에서 그들 간의 비대칭성 및 이종성 (heterogeneity)으로서 효율적으로 나타낼 보일 수 있다. 일부 실시예에서, 다양한 처리 요소(970, 980)는 동일한 다이 패키지(die package) 내에 존재할 수 있다.

제 1 처리 요소(970)는 메모리 제어기 로직(MC, 972) 및 점대점(P-P) 상호 접속부(976 및 978)를 더 포함할 수 있다. 마찬가지로, 제 2 처리 요소(980)는 MC(982) 및 P-P 상호 접속부(986 및 988)를 포함할 수 있다. 도 9에 도시된 바와 같이, MC(972 및 982)는 처리 요소 (970, 980)를 각각의 메모리, 즉 메모리(932) 및 메모리(934)에 접속하는 데, 이것들은 각자의 프로세서에 국부적으로 부착되는 메인 메모리의 일부일 수 있다. MC 로직(972 및 982)은 처리 요소(970, 980) 내에 통합된 것으로 도시되지만, 일부 실시예에서 메모리 제어기 로직은 내부에 통합된 것이 아니라 처리 요소(970, 980) 외부의 이산 로직(discrete logic)일 수 있다.

처리 요소(970) 및 처리 요소(980)는 링크(952 및 954)를 통하여 각각의 P-P 상호 접속(976 및 986)을 거쳐 I/O 서브시스템(990)에 접속될 수 있다. 도 9에 도시된 바와 같이, I/O 서브시스템(990)은 P-P 상호 접속부(994 및 998)를 포함한다. 나아가, I/O 서브시스템(990)은 I/O 서브시스템(990)을 고성능 그래픽 엔진(938)과 접속하기 위한 인터페이스(992)를 포함한다. 일 실시예에서, 그래픽 엔진(938)을 I/O 서브시스템(990)에 접속하는 데에 버스(도시되지 않음)가 사용될 수 있다. 또는, 점대점 상호 접속부(939)가 이 컴포넌트들을 접속시킬 수 있다.

다음으로, I/O 서브시스템(990)은 인터페이스(996)를 통하여 제 1 링크(916)에 접속될 수 있다. 일 실시예에서, 제 1 링크(916)는 주변 컴포넌트 상호 접속(PCI) 버스, 또는 PCI 익스프레스 버스 또는 다른 I/O 상호 접속 버스와 같은 버스일 수 있으며, 다만 본 발명의 범위는 이것으로 제한되지 않는다.

도 9에 도시된 바와 같이, 제 1 링크(916)를 제 2 링크(910)에 접속할 수 있는 브릿지(918)와 더불어, 제 1 링크(916)에 다양한 I/O 장치(914, 924)가 접속될 수 있다. 일 실시예에서, 제 2 링크(920)는 로우 핀 카운트(low pin count: LPC) 버스일 수 있다. 예컨대, 일 실시예에서, 키보드/마우스(912), 통신 장치(들, 926, 이는 차례로 컴퓨터 네트워크(903)와 통신을 할 수 있음), 그리고 코드(930)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 저장 장치와 같은 데이터 저장 유닛(928)을 포함하여, 다양한 장치가 제 2 링크(920)에 접속될 수 있다. 코드(930)는 전술된 기법 중 하나 이상의 기법의 실시예를 수행하는 명령어를 포함할 수 있다. 또한, 오디오 I/O(924)가 제 2 버스(920)에 접속될 수 있다.

다른 실시예가 고려될 수 있음에 유의해야 한다. 예컨대, 도 9의 점대점 구조 대신, 시스템은 멀티 드롭 버스 또는 다른 그러한 통신 토폴로지를 구현할 수 있다. 링크(916 및 920)가 도 9에서 버스로서 도시되지만, 임의의 원하는 유형의 링크가 사용될 수 있다. 또한, 도 9의 요소들은 대안적으로 도 9에 도시된 것보다 더 많거나 적은 집적 칩을 사용하여 분할될 수 있다.

이제 도 10을 참조하면, 블록도는 다른 실시예에 따른 프로그램가능 장치(1000)를 도시한다. 도 10의 다른 양상을 불명료하게 하지 않도록 도 9의 특정 양상은 도 10에서 생략되었다.

도 10은 처리 요소(1070, 1080)가 각각, 통합 메모리 및 I/O 제어 로직("CL", 1072 및 1082)을 포함할 수 있음을 도시한다. 일부 실시예에서, CL(1072, 1082)은 도 9와 관련하여 전술된 것과 같은 메모리 제어 로직(MC)을 포함할 수 있다. 또한, CL(1072, 1082)은 또한 I/O 제어 로직을 포함할 수 있다. 도 10은 메모리(1032, 1034)가 CL(1072, 1082)에 접속될 수 있을뿐만 아니라, I/O 장치(1044)가 또한 제어 로직(1072, 1082)에 접속될 수 있음을 도시한다. 레거시(legacy) I/O 장치 (1015)가 인터페이스(1096)에 의해 I/O 서브시스템(1090)에 접속될 수 있다. 각각의 처리 요소(1070, 1080)는 프로세서 코어(1074A, 1074B, 1084A 및 1084B)로서 도 10에 도시된 다수의 프로세서 코어를 포함할 수 있다. 도 10에 도시된 바와 같이, I/O 서브시스템(1090)은 링크(1052 및 1054)와 함께 처리 요소(1070 및 1080)의 P-P 상호 접속부(1076 및 1086)에 접속하는 P-P 상호 접속부(1094 및 1098)를 포함한다. 처리 요소(1070 및 1080)는 또한 링크(1050) 및 상호 접속부(1078 및 1088) 각각에 의해 상호 접속될 수 있다.

도 9 및 도 10에 도시된 프로그램가능 장치는 본원에서 논의된 다양한 실시예를 구현하는 데에 이용될 수 있는 프로그램가능 장치의 실시예의 개략적인 예시이다. 도 9 및 도 10에 도시된 프로그램가능 장치의 다양한 컴포넌트가 시스템 온 칩(SoC) 구조로 조합될 수 있다.

이제 도 11을 참조하면, 전술된 기법이 구현될 수 있는 예시적 인프라 구조(1100)가 개략적으로 도시된다. 인프라 구조(1100)는 컴퓨터 네트워크(1102)를 포함한다. 컴퓨터 네트워크(1102)는 오늘날 이용가능한 많은 상이한 유형의 컴퓨터 네트워크, 예를 들어, 인터넷, 기업망, 또는 로컬 영역 네트워크(LAN)를 포함할 수 있다. 이들 네트워크 각각은 유선 또는 무선 프로그램가능 장치를 포함하고 임의의 개수의 네트워크 프로토콜(예를 들어, TCP/IP)을 사용하여 동작할 수 있다. 네트워크(1102)는 게이트웨이 및 라우터(1108로 표시됨), 최종 사용자 컴퓨터(1106) 및 컴퓨터 서버(1104)에 접속될 수 있다. 인프라 구조(1100)는 모바일 통신 장치와의 사용을 위한 셀룰러 네트워크(1103)를 또한 포함한다. 모바일 셀룰러 네트워크는 모바일 전화 및 많은 다른 유형의 모바일 장치를 지원한다. 인프라 구조(1100) 내의 모바일 장치는 모바일 전화(1110), 랩톱(112) 및 태블릿(1114)으로서 도시된다. 모바일 폰(1110)과 같은 모바일 장치는 모바일 장치가 이동함에 따라 하나 이상의 모바일 제공자 네트워크와 상호 작용할 수 있으며, 전형적으로 셀룰러 네트워크(1103)에 접속하기 위해 복수의 모바일 네트워크 타워(1120, 1130, 및 1140)와 상호 작용한다. 도 11에서 셀룰러 네트워크로서 지칭되지만, 모바일 장치는 2 개 이상의 제공자 네트워크의 타워는 물론, 무선 액세스 포인트 및 라우터(1108)와 같은 다수의 비-셀룰러 장치와 상호 작용할 수 있다. 또한, 모바일 장치(1110, 1112 및 1114)는 원하는 서비스를 위해 컴퓨터(1104 및 1106)와 같은 비-모바일 장치와 상호 작용할 수 있고, 이는 전술한 사용자 크리덴셜의 제공 없이 다수의 클라이언트 장치들 사이에서 또한 인가된 다른 사용자들과 함께 세션을 공유하는 것을 포함할 수 있다. 클라이언트 장치들의 기능은 도 11에 도시된 임의의 장치 혹은 장치들의 조합으로 구현될 수 있으며, 다만, 게이트웨이 또는 라우터의 방화벽 또는 침입 방지 시스템에서 가장 많이 구현된다.

다음의 예는 추가 실시예들에 관한 것이다.

예 1은 명령어가 저장된 머신 판독가능 매체로서, 명령어는, 실행 시에, 머신으로 하여금 웹 도메인에 연계된 웹 페이지의 웹 브라우저 상에서 세션의 생성에 관련된 사용자 정보를 전송하고 - 사용자 정보는 사용자 크리덴셜을 포함함 -, 세션의 종료에 관련된 로그아웃 정보를 전송하여, 종료된 세션을 생성하고, 종료된 세션의 검색 요청을 전송하고, 웹 브라우저에서 종료된 세션의 추가에 관련된 세션 정보를 수신하여, 액티브한 세션을 생성하게 하는 명령어를 포함한다.

예 2에서, 예 1의 대상은 로그아웃 정보를 전송하는 명령어가, 실행 시에, 머신으로 하여금 로그아웃 정보 전송에 대한 응답으로 세션에 관련된 세션 데이터를 저장하고, 웹 브라우저로부터 세션에 관련된 쿠키를 삭제하게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 3에서, 예 1 또는 예 2의 대상은 명령어가, 실행 시에, 머신으로 하여금 모바일 장치에 연계된 웹 브라우저 상에 세션을 생성하게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 4에서, 예 1 내지 예 3의 대상은 명령어가, 실행 시에, 머신으로 하여금 제 2 사용자와의 세션 공유에 관련된 정보를 전송하여, 공유 세션을 생성하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 5에서, 예 4의 대상은 세션을 공유하게 하는 명령어가, 실행 시에, 머신으로 하여금 제 2 사용자에 관련된 공유 세션에 대한 제약을 전송하게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 6에서, 예 1 내지 예 5의 대상은 명령어가, 실행 시에, 머신으로 하여금 종료된 세션의 검색 요청의 전송에 대한 응답으로 사용자 이름 및 패스워드 중 하나 이상의 전송을 막게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 7에서, 예 1 내지 예 6의 대상은 명령어가, 실행 시에, 머신으로 하여금 세션이 살아있는 상태를 유지하게 하도록 요청을 웹 도메인에 전송하거나 세션 정보를 수정하게 하는 명령어를 더 포함하고, 요청은 비-세션 수정 요청인 것을 선택적으로 포함할 수 있다.

예 8에서, 예 1 내지 예 7의 대상은 종료된 세션의 검색에 관련된 세션 정보를 수신하기 위한 명령어가, 실행 시에, 머신으로 하여금 웹 도메인에 연계된 웹 페이지에 대한 이전 세션의 존재 여부를 결정하게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 9에서, 예 1 내지 예 6의 대상은 명령어가, 실행 시에, 머신으로 하여금 제 1 장치에서 세션을 종료하고 제 2 장치에서 종료된 세션을 검색하게 하는 명령어를 더 포함하고, 제 1 및 제 2 장치는 사용자에 연계되어 있는 것을 선택적으로 포함할 수 있다.

예 10은 세션 복구 및 공유 방법으로서, 웹 도메인에 연계된 웹 페이지의 웹 브라우저 상에서 세션의 생성에 관련된 사용자 정보를 전송하는 단계 - 사용자 정보는 사용자 크리덴셜을 포함함 -, 세션 매니저로부터의 세션의 종료에 관련된 로그아웃 정보를 전송하여, 종료된 세션을 생성하는 단계, 세션 매니저로 종료된 세션을 검색하기 위한 요청을 전송하는 단계, 및 세션 매니저로 웹 브라우저에서 종료된 세션의 추가에 관련된 세션 정보를 수신하여, 액티브한 세션을 생성하는 단계를 포함한다.

예 11에서, 예 10의 대상은 로그아웃 정보 전송에 대한 응답으로 세션에 관련된 세션 데이터를 저장하는 단계, 및 웹 브라우저로부터 세션에 관련된 쿠키를 삭제하는 단계를 선택적으로 포함할 수 있다.

예 12에서, 예 10 내지 예 11의 대상은 모바일 장치에 연계된 웹 브라우저 상에 세션을 생성하는 단계를 선택적으로 포함할 수 있다.

예 13에서, 예 10 내지 예 12의 대상은 제 2 사용자와의 세션 공유에 관련된 정보를 전송하여, 공유 세션을 생성하는 단계를 선택적으로 포함할 수 있다.

예 14에서, 예 10 내지 예 13의 대상은 종료된 세션의 검색 요청의 전송에 대한 응답으로 사용자 크리덴셜의 전송을 막는 단계를 더 포함하고, 사용자 크리덴셜은 사용자의 사용자 이름 및 패스워드 중 적어도 하나인 것을 선택적으로 포함할 수 있다.

예 15에서, 예 10 내지 예 14의 대상은 세션이 살아있는 상태를 유지하게 하는 요청을 웹 도메인에 전송하는 단계를 선택적으로 포함할 수 있다.

예 16은 세션 복구 및 공유 방법으로서, 웹 도메인에 연계된 웹 페이지의 웹 브라우저 상에서 세션의 생성에 관련된 사용자 정보를 전송하는 단계 - 사용자 정보는 사용자 크리덴셜을 포함함 -, 세션 매니저로부터의 세션의 종료에 관련된 로그아웃 정보를 전송하여, 종료된 세션을 생성하는 단계, 세션 매니저로 종료된 세션을 검색하기 위한 요청을 전송하는 단계, 및 세션 매니저로 웹 브라우저에서 종료된 세션의 추가에 관련된 세션 정보를 수신하여, 액티브한 세션을 생성하는 단계를 포함한다.

예 17에서, 예 16의 대상은 로그아웃 정보 전송에 대한 응답으로 세션에 관련된 세션 데이터를 저장하는 단계, 및 웹 브라우저로부터 세션에 관련된 쿠키를 삭제하는 단계를 선택적으로 포함할 수 있다.

예 18에서, 예 16 내지 예 17의 대상은 모바일 장치에 연계된 웹 브라우저 상에 세션을 생성하는 단계를 선택적으로 포함할 수 있다.

예 19에서, 예 16 내지 예 17의 대상은 제 2 사용자와의 세션 공유에 관련된 정보를 전송하여, 공유 세션을 생성하는 단계를 선택적으로 포함할 수 있다.

예 20에서, 예 19의 대상은 제 2 사용자에 관련된 공유 세션에 대한 제약을 전송하는 단계를 선택적으로 포함할 수 있다.

예 21에서, 예 16 내지 예 17의 대상은 종료된 세션의 검색 요청의 전송에 대한 응답으로 사용자 크리덴셜의 전송을 막는 단계를 더 포함하고, 사용자 크리덴셜은 사용자의 사용자 이름 및 패스워드 중 적어도 하나인 것을 선택적으로 포함할 수 있다.

예 22에서, 예 16 내지 예 17의 대상은 세션이 살아있는 상태를 유지하게 하는 요청을 웹 도메인에 전송하는 단계를 더 포함하고, 요청은 비-세션 수정 요청인 것을 선택적으로 포함할 수 있다.

예 23에서, 예 16 내지 예 17의 대상은 웹 도메인에 연계된 웹 페이지에 대한 이전 세션의 존재 여부를 결정하는 단계를 선택적으로 포함할 수 있다.

예 24에서, 예 16 내지 예 17의 대상은 제 1 장치에서 세션을 종료하고 제 2 장치에서 종료된 세션을 검색하는 단계를 더 포함하고, 제 1 및 제 2 장치는 사용자에 연계되어 있는 것을 선택적으로 포함할 수 있다.

예 25는 세션을 복구 및 공유하는 컴퓨터 시스템으로서, 하나 이상의 프로세서, 및 명령어가 저장된, 하나 이상의 프로세서에 접속된 메모리를 포함하되, 명령어는, 실행 시에, 하나 이상의 프로세서로 하여금,

웹 도메인에 연계된 웹 페이지의 웹 브라우저 상에서 세션의 생성에 관련된 사용자 정보를 전송하고 - 사용자 정보는 사용자 크리덴셜을 포함함 -, 세션 매니저로부터의 세션의 종료에 관련된 로그아웃 정보를 전송하여, 종료된 세션을 생성하고, 세션 매니저로 종료된 세션을 검색하기 위한 요청을 전송하고, 세션 매니저로 웹 브라우저에서 종료된 세션의 추가에 관련된 세션 정보를 수신하여, 액티브한 세션을 생성하게 하는 명령어를 포함한다.

예 26에서, 예 25의 대상은 로그아웃 정보를 전송하는 명령어가, 실행 시에, 하나 이상의 프로세서로 하여금 로그아웃 정보 전송에 대한 응답으로 세션에 관련된 세션 데이터를 저장하고, 웹 브라우저로부터 세션에 관련된 쿠키를 삭제하게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 27에서, 예 25 내지 예 26의 대상은 명령어가, 실행 시에, 하나 이상의 프로세서로 하여금 모바일 장치에 연계된 웹 브라우저 상에 세션을 생성하게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 28에서, 예 25 내지 예 26의 대상은 명령어가, 실행 시에, 하나 이상의 프로세서로 하여금 제 2 사용자와의 공유 세션에 관련된 정보를 전송하여, 공유 세션을 생성하게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 29에서, 예 28의 대상은 세션 공유 명령어가, 실행 시에, 하나 이상의 프로세서로 하여금 제 2 사용자에 관련된 공유 세션에 대한 제약을 전송하게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 30에서, 예 25 내지 예 26의 대상은 명령어가, 실행 시에, 하나 이상의 프로세서로 하여금 종료된 세션의 검색 요청의 전송에 대한 응답으로 사용자 크리덴셜의 전송을 막게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 31에서, 예 25 내지 예 26의 대상은 명령어가, 실행 시에, 하나 이상의 프로세서로 하여금 세션이 살아있는 상태를 유지하게 하는 요청을 웹 도메인에 전송하게 하는 명령어를 더 포함하고, 요청은 비-세션 수정 요청인 것을 선택적으로 포함할 수 있다.

예 32에는 세션 공유 방법으로서, 서버에서 사용자 인증에 관련된 인증 정보를 전송하는 단계, 제 2 사용자와의 공유 세션을 생성하는 요청을 전송하는 단계, 공유 세션을 암호화하는 암호화 키를 수신하는 단계 - 암호화 키는 제 2 사용자에 연계됨 -, 암호화 키의 수신에 대한 응답으로 공유 세션을 암호화하여 암호화된 세션을 생성하는 단계, 및 암호화된 세션 생성에 대한 응답으로 암호화된 세션을 서버에 전송하는 단계를 포함한다.

예 33에서, 예 32의 대상은 제 2 사용자에 관련된 공유 세션에 대한 제약을 전송하는 단계를 선택적으로 포함할 수 있다.

예 34에서, 예 33의 대상은 공유 세션에 대한 제약의 전송에 대한 응답으로 서버 공개키를 수신하는 단계를 선택적으로 포함할 수 있다.

예 35에서, 예 32 내지 33의 대상은 공유 세션에 대한 제약의 전송에 대한 응답으로 제 2 사용자가 쿠키에 액세스하거나 공유 세션에서 코드를 수정하는 것을 금지하는 단계를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 36은 세션을 복구 및 공유하는 컴퓨터 시스템으로서, 하나 이상의 프로세서, 및 명령어가 저장된, 하나 이상의 프로세서에 접속된 메모리를 포함하되, 명령어는, 실행 시에, 하나 이상의 프로세서로 하여금, 서버에서 사용자 인증에 관련된 인증 정보를 전송하고, 제 2 사용자와의 공유 세션을 생성하는 요청을 전송하고, 공유 세션을 암호화하는 암호화 키를 수신하고 - 암호화 키는 제 2 사용자에 연계됨 -, 암호화 키의 수신에 대한 응답으로 공유 세션을 암호화하여 암호화된 세션을 생성하고, 암호화된 세션 생성에 대한 응답으로 암호화된 세션을 서버에 전송하게 하는 명령어를 포함한다.

예 37에서, 예 36의 대상은 명령어가, 실행 시에, 하나 이상의 프로세서로 하여금 제 2 사용자에 관련된 공유 세션에 대한 제약을 전송하게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 38에서, 예 37의 대상은 명령어가, 실행 시에, 하나 이상의 프로세서로 하여금 공유 세션에 대한 제약의 전송에 대한 응답으로 서버 공개키를 수신하게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 39에서, 예 36 내지 예 37의 대상은 명령어가, 실행 시에, 하나 이상의 프로세서로 하여금 공유 세션에 대한 제약의 전송에 대한 응답으로 제 2 사용자의 쿠키에 대한 액세스 또는 공유 세션에서의 코드 수정을 금지하게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

예 40에서, 예 36 내지 예 37의 대상은 명령어가, 실행 시에, 하나 이상의 프로세서로 하여금 사용자에 연계된 모바일 장치로부터 요청을 전송하게 하는 명령어를 더 포함하는 것을 선택적으로 포함할 수 있다.

이상의 설명은 예시적이고 비제한적이도록 의도됨을 이해해야 한다. 예컨대, 전술한 실시예는 서로 조합하여 사용될 수 있다. 이상의 설명을 검토할 때 다수의 다른 실시예가 당업자에게 자명할 것이다. 그러므로 본 발명의 범위는 첨부된 청구범위를 참조하여 이러한 청구범위가 권리를 갖는 전범위와 함께 결정되어야 한다.