• 검색 결과가 없습니다.

신뢰성 보장 정보버스 기술

문서에서 R&D연구결과보고서 (페이지 124-132)

신뢰성 보장 정보 버스(RIB)는 하부의 물리적인 네트워크에 자유롭게 메시지 전달을 하기 위한 네트워킹 모듈이며, 논리적인 디바이스 아이디와 실제 물리적인 주소를 매핑하여, 상위의 노드가 논리적인 디바이스 아이디만을 가지고 정보를 전달될 수 있는 기능을 제공한다.

아래 그림에서 보는 바와 같이 신뢰성 보장 정보 버스는 각각의 스마트 디바이스에 탑재된 협 업 에이전트들 간 또는 N-스크린 앱들 간에 메시지를 주고 받고자 할 때 상대방의 물리적인 주 소를 알 필요없이 논리적인 주소를 사용하여 메시지를 전달할 때 사용된다.

그림 141 신뢰성 보장 정보 버스 사용 개념도

N-스크린 디바이스 협업 통신 및 이를 기반으로 하는 N-스크린 앱(App)간 통신에 있어서 많

은 경우 신뢰성과 순서가 보장되어야 하는데, 이를 위해서는 신뢰성 있고 순서를 보장하는 메시징 시스템이 필요하다.

본 과제에서 개발한 신뢰성 보장 정보버스는 전송매체나 네트워크 모형 (클라이언트/서버 또는 피어-투-피어)에 독립적으로 구현, 적용될 수 있으며, 다음과 같이 두 가지 기능을 제공한다.

Ÿ N-스크린 디바이스들에서 실행되는 N-스크린 앱들간의 논리적 통신 기능 제공 Ÿ 신뢰성 보장 메시징 프로토콜 제공

1) 논리적 통신 (Logical Communications)

N-스크린 서비스 플랫폼을 통해 실행되는 N-스크린 앱간의 협업을 위해 논리적 통신 기능을 제공한다. 논리적 통신의 정의는 두 개 이상의 N-스크린 앱들간의 협업을 통해 서비스를 제공하 고자 할 때, N-스크린 앱이 실행되는 물리적인 스마트 디바이스들의 변경에도, 서비스를 지속적 이고 일관되게 제공하기 위한 통신 기능을 의미한다. 논리적 통신에 대한 내용 기술에 필요한 중 요한 3 가지 용어 (객체, 노드, 신뢰성보장 정보 버스)에 대한 정의는 다음과 같다.

Ÿ 객체 (Object): 신뢰성보장 정보버스 (RIB)와 연결된 노드를 이용하는 통신 주체의 기본 단위로 N-스크린 앱을 의미한다. 객체와 노드와는 n 대 1의 의존성 관계를 가지고 있 다. 즉, 하나의 노드에는 n 개의 객체와 연관되어 논리적 통신 기능을 제공한다.

Ÿ 노드 (Node): 신뢰성보장 정보버스 (RIB)와 통신을 위한 위한 인터페이스로 연결되어 직접 메시지를 전달하는 통신 주체로 노드와 RIB는 1 대 1의 의존성 관계를 가지고 있 다.

Ÿ 신뢰성보장 정보버스 (Reliable Information Bus; RIB): 물리적인 메시징 시스템과 독립 적으로 스마트 디바이스에 대한 알림 (advertisement), 탐색 (discovery), 메시지 전송 (messaging), 이벤트 발생 (eventing) 기능을 제공하는 통신 인터페이스를 의미한다.

Clouded Object 스케쥴러를 이용한 N-스크린 앱들간의 협업에서 논리적 통신이 필요한 이유 는 홈네트워크 환경에서 N-스크린 앱의 물리적인 주소 변경에 독립적인 통신 구조를 제공함으로 써 최종 사용자에게 스마트 디바이스를 자유롭게 선택하여도 일관된 N-스크린 서비스를 제공할 수 있기 때문이다. 또한, 하부 물리적인 네트워크 인프라의 변경에도 N-스크린 협업 서비스가 영 향을 받지 않는 구조를 제공함으로써 물리적인 메시징 시스템의 독립성을 제공할 수 있다는 장점 이 있다.

Clouded Object 스케쥴러와 연계한 논리적 통신 기능을 제공하기 위해 다음과 같이 주요한 구 성 컴포넌트들이 필요하다.

Ÿ 네트워크 주소 변환 관리를 위한 매핑 테이블 Ÿ 협업 에이전트의 논리적 통신 관리자

Ÿ N-스크린 앱 라이프사이클 관리자

네트워크 주소 변환 관리를 위해 통신 관리자 facade에서 관리되는 두가지 매핑 테이블로는 객 체와 노드간 주소 매핑 (Object-Node Address Mapping)을 위한 데이터와 노드와 물리주소간 주소 매핑 (Node-Physical Address Mapping)을 위한 데이터를 구축하여 사용하였다. 아래 그림 은 각각의 주소 변환을 위한 매핑 데이터구조에 대한 ER (Entity-Relation) 모델을 보여주고 있 다.

그림 142 네트워크 주소 변환 관리를 위한 매핑 테이블

객체와 노드간 주소 매핑 테이블에서는 N-스크린 앱의 논리적 식별자 (Logical ID)와 현재 앱 이 실행되고 있는 협업 에이전트 디바이스에 대한 식별자 (CA Device ID)로 구성된다. 여기서, 협업 에이전트 디바이스 식별자는 노드와 물리 주소 매핑 테이블을 연결하기 위한 외래키 (foreign key)로 정의한다.

노드와 물리주소 매핑 테이블에서는 협업 에이전트 디바이스의 식별자 (CA Device ID)를 기본 키 (primary key)로 갖고 협업 에이전트가 실행되고 있는 실제 스마트 디바이스의 물리 주소 (예: IP 주소)를 가지고 있다. 따라서, 임의의 N-스크린 앱, 즉, 객체에 대한 물리 주소를 획득하 기 위해서는 다음과 같은 절차를 수행한다.

Ÿ N-스크린 앱이 실행되고 난 후, 할당받은 논리적 앱 식별자 (Logical ID)를 이용하여 객체와 노드간 주소 매핑 (Object-Node Address Mapping) 테이블에서 협업 에이전트 디바이스 식별자 (CA Device ID)를 얻는다.

Ÿ A 단계에서 획득한 CA Device ID를 이용하여 노드와 물리주소 매핑 (Node-Physical Address Mapping)테이블 에서 실제 스마트 디바이스의 물리 주소 (Physical Address) 를 얻는다.

2) 신뢰성 보장 메시징 프로토콜

본 절에서는 스마트 앱간의 신뢰성 있는 논리적인 통신을 제공하기 위한 메시징 시스템 구조에 대하여 기술한다. 또한, 스마트 앱간 또는 논리적 디바이스 사이의 논리적 통신을 위한 메시지 유 형과 메시지를 전달을 위한 RIB 메시징 프로토콜에 관해 기술한다.

스마트 앱간의 신뢰성 있는 논리적인 통신을 제공하기 위하여 협업 미들웨어는 아래 그림과 같 은 신뢰성 보장 메시징 시스템을 갖는다. 신뢰성 보장 메시징 시스템의 최상위에 있는 객체 (Object)란 다른 객체와 메시지를 주고 받고자 하는 기본 단위로서, 하나의 N-스크린 앱이 이에 해당한다. 객체가 다른 객체에게 메시지를 보내거나, 다른 객체로부터 메시지를 받을 때 객체의 논리적인 아이디를 사용하여 통신함으로써, 그 객체가 속한 디바이스의 물리적인 주소의 변경에 상관없이 끊김없이 통신할 수 있어야 한다. 신뢰성 보장 메시징 시스템의 그 다음 레벨인 노드 (Node)란 물리적인 디바이스와 1 대 1 관계에 있는 논리적인 디바이스이다. 하나의 노드에는 1 개 이상의 객체가 관계를 맺을 수 있다. 객체 간의 논리적 통신은 실제로는 하위의 노드를 통하여 수행된다. 노드는 네트워크에 연결된 다른 노드들과 논리적인 노드 아이디를 사용한 통신을 수행 한다. 이때 노드 간의 논리적 통신은 실제로는 신뢰성 보장 메시징 시스템의 그 다음 레벨인 신뢰 성 보장 정보 버스(RIB)를 통하여 수행된다. 신뢰성 보장 정보 버스는 상위 노드에게 디바이스의 물리적인 주소 변경을 감추어 주고, 노드들 간에 논리적인 통신을 수행할 수 있도록 보장한다.

메시지 이름 설명 void notifyAppLogicalStateChanged(String

appLogicalID, LogicalAppState prevState, LogicalAppState curState)

같은 협업 세션에 속한 다른 N-스크린 앱들에게 자신의 논리적 상태가 바뀌었음을 알린다.

void notifyAppJoinSession(String appLogicalID, String sessionId)

같은 협업 세션에 속한 다른 N-스크린 앱들에게 N-스크린 앱이 세션에 참여했음을 알린다.

void notifyAppLeaveSession(String appLogicalID, String sessionId)

void sendMessageToApp(String srcAppID, String dstAppID, CollaborationMessage msg)

같은 협업 세션에 속한 다른 N-스크린 앱에게 메 시지를 보낸다.

void sendMessageToAppsWithAppPkgID(String srcAppID, String appPackageID, CollaborationMessage msg)

같은 협업 세션에 속한 특정한 N-스크린 앱 패키 지 아이디를 가지는 모든 앱에게 메시지를 보낸다.

void sendMessageToAppsInSession(String srcAppID, String sessionID, CollaborationMessage msg)

SmartDevice getSmartDeviceInfo(String deviceID) 디바이스 ID에 해당하는 스마트 디바이스의 정보를 가져온다.

가져온다.

NScreenAppPackage getAppPkgInfo(String deviceID, String appPkgId)

디바이스 ID에 해당하는 스마트 디바이스에 설치된 앱 패키지의 상세 정보를 가져온다.

Vector<String> getSessionIDs(String deviceID) 디바이스 ID에 해당하는 리모트 협업 에이전트가 관리하는 세션들의 리스트를 가져온다.

NScreenLogicalApp getNScreenLogicalApp(String

deviceID, String logicalAppID) 디바이스 ID에 해당하는 리모트 협업 에이전트가 관리하는 N-스크린 앱 객체 정보를 가져온다.

NScreenSession getSessionInfo(String deviceID,

String sessionID) 디바이스 ID에 해당하는 리모트 협업 에이전트가 appLogicalID, LogicalAppState prevState, LogicalAppState curState)

리모트 협업 에이전트들에게 N-스크린 앱의 논리적 상태가 바뀌었음을 알린다.

void notifyAppJoinSession(String appLogicalID,

String sessionId) 리모트 협업 에이전트들에게 N-스크린 앱이 세션에 참여했음을 알린다.

void notifyAppLeaveSession(String appLogicalID,

String sessionId) 리모트 협업 에이전트들에게 N-스크린 앱이 세션에 서 나갔음을 알린다.

boolean migrateAppWithContext(String dstDeviceID, String appPkgID, String sessionID, String logicalAppID, NScreenAppContext appContext)

void sendMessageToApp(String deviceID, String srcAppID, String dstAppID, CollaborationMessage msg)

특정한 N-스크린 앱 패키지 아이디를 가지는 모든 앱에게 메시지를 보낸다.

void sendMessageToAppsWithAppPkgID(String deviceID, String srcAppID, String appPackageID, CollaborationMessage msg)

특정한 N-스크린 앱 패키지 아이디를 가지는 모든 앱에게 메시지를 보낸다.

void sendMessageToAppsInSession(String deviceID, String srcAppID, String sessionID, CollaborationMessage msg)

기화 메시지를 암호화 하였다. 아래 그림의 AES256Cipher 클래스는 앱간 동기화 정보를 암호화 처리를 수행하는 자원인지 협업 미들웨어내에 존재하는 클래스이다.

class ...

AES256Cipher

+ ivBytes: byte ([]) = { 0x00, 0x00, 0...

+ AES_Decode(byte[], String) : byte[]

+ AES_Encode(byte[], String) : byte[]

그림 144 AES256 암호화를 위한 클래스

고급 암호화 표준(AES, Advanced Encryption Standard)은 2001년 미국 표준 기술 연구소 (NIST)에 의해 제정된 암호화 방식이다. AES는 두 명의 벨기에 암호학자인 존 대먼과 빈센트 라 이먼에 의해 개발된 Rijndael(레인달) 암호에 기반하며 AES 공모전에서 선정되었다. AES는 미국 정부가 채택한 이후 전 세계적으로 널리 사용되고 있다. 1977년 공표된 DES를 대체한 AES는, 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭 키 알고리즘이다.

미국 표준 기술 연구소(NIST)는 2001년 11월 26일 AES를 미국 연방 정보 처리 표준 (FIPS-197)으로 공포하였다. NIST는 5년의 표준화 과정을 거쳤으며 이 과정에서 15개의 알고리 즘이 경쟁, Rijndael 암호가 가장 적합한 알고리즘으로 선정되었다. 이 표준은 2002년 5월 26일 부터 효력을 발휘하기 시작했다. AES는 ISO/IEC 18033-3 표준에 포함되어 있으며 여러 암호화 패키지에서 사용되고 있다. AES는 또한 미 국가안보국에 의해 1급비밀(Top Secret)에 사용할 수

미국 표준 기술 연구소(NIST)는 2001년 11월 26일 AES를 미국 연방 정보 처리 표준 (FIPS-197)으로 공포하였다. NIST는 5년의 표준화 과정을 거쳤으며 이 과정에서 15개의 알고리 즘이 경쟁, Rijndael 암호가 가장 적합한 알고리즘으로 선정되었다. 이 표준은 2002년 5월 26일 부터 효력을 발휘하기 시작했다. AES는 ISO/IEC 18033-3 표준에 포함되어 있으며 여러 암호화 패키지에서 사용되고 있다. AES는 또한 미 국가안보국에 의해 1급비밀(Top Secret)에 사용할 수

문서에서 R&D연구결과보고서 (페이지 124-132)