Java ME MIDP의 Trusted MIDlet 인증 과정에 대한 설명

Java ME MIDP 개발과 관련하여 가장 이해하기 난해한 부분인 Trusted MIDlet을 인증하는 과정에 대해 알아보도록 하자. 백문이 불여일견 우선, 필자가 손수 그린 멋진(?) 수작업 이미지를 살펴보도록 하자. (크게 보려면 이미지를 클릭!)

MIDlet을 사용자에게 배포 시 인증된 (trusted) 형태로 제공하여야 Java ME가 제공하는 주요 기능들을 활용할 수 있다. 예를 들어, 네트워크 접속을 하는 경우에 비 인증된 MIDlet의 경우 보안 경고창이 나타나게 되며 사용자의 선택에 따라 네트워크 접속이 허용되지 않을 수도 있다. 이외에도 여러 기능들이 제한되거나 하는 문제점이 있으므로 상용 프로그램의 경우 인증은 필수적이라 할 수 있다.

MIDlet을 인증하는 과정을 이해하기 위해서는 4개의 주요 기술 요소를 이해하여야 한다.
  1. X.509
  2. Path Validation
  3. Self Signed Root Certification
  4. Protection Domain
인증된 MIDlet을 배포하기 위해사용하는 JAD 파일에는 반드시 아래와 같은 2가지 속성 값이 제공되어야 한다.
  1. MIDlet-Certificate-n-m
  2. MIDlet-Jar-RSA-SHA
MIDlet-Certificate-n-m은 BASE64 형태로 인코딩된 X.509 인증서를 값으로 가지는 속성이다. X.509는 인증서(certificate)의 형식을 정의한 표준으로 위 그림에서 보이는 바와 같이 인증서의 대상이 되는 Subject, 인증서를 발행한 기관을 나타내는 Issuer, Subject를 위한 Public Key 값, 인증서의 진위여부를 확인하기 위한 signature등의 값을 가지고 있다.

위 그림에서 보이듯이 JAD는 복수개의 인증서를 가질 수 있는데 m 값을 순차적으로 증가하여 지정할 수 있다.
  • MIDlet-Certificate-1-1: ....
  • MIDlet-Certificate-1-2: ...
  • MIDlet-Certificate-1-3: ...
위와 같은 경우 3개의 인증서를 JAD에 포함하고 있으며 각 인증서는 서로 연관되어 있다. 인증서 1번을 발행한 기관에 대한 인증서는 2번이고, 2번 인증서를 발행한 기관의 인증서는 3번이 되는 식이다.
이처럼 서로 연관된 인증서의 유효함을 확인하는 과정을 Path Validation이라고 하며 위 그림에서와 같이 최종적으로는 휴대폰에 미리 저장되어 있는 Root Certification까지의 연결이 문제가 없는지 확인하게 된다.

Root Certification은 가장 상위 기관에서 발행한 기관 자체를 나타내는 인증서이며 인증서 자체가 별도의 Issuer가 없이 해당 기관이 자체 발행한 것이므로 Issuer와 Subject의 값이 동일하다. 또한, 이 인증서의 Signature는 인증서 자체의 public key로 확인이 가능하다. 그러므로, self signed 인증서라고 부르기도 한다.

Path Validation 과정을 통해 Root Certificate까지 문제 없이 인증서의 연결이 확인되면 최종적으로 Root Certificate가 가진 public key를 이용하여 MIDlet-Jar-RSA-SHA 속성 값에 지정된 MIDlet JAR 파일의 signature를 확인하다. 이 signature가 문제가 없으면 MIDlet JAR 파일이 다운로드 중에 변경되지 않았음을 의미하고 또한, Root Certificate를 제공한 기관이 인증할 수 있는 개발 업체에서 해당 MIDlet을 제공하고 있음이 확인된다.

위 과정이 완료되면 MIDlet 인증이 완료되며 해당 MIDlet의 protection domain이 어디에 속하는지 결정할 수 있다. Root Certificate는 특정 Protection Domain과 연관되어 있으므로 인증된 MIDlet은 Root Certificate와 연관된 protection domain에 속하게 된다.

Protection Domain
이란 이 도메인에 속한 MIDlet이 어떤한 Java ME의 기능을 사용할 수 있는지에 대해 미리 정의해둔 정보로, 예를 들어 "Identified 3rd party domain"이라는 protection domain이 네트워크, 메시징, 위치 정보 서비스 등을 사용 가능하게 설정해둔 상태라면 이 도메인에 속하는 MIDlet은 위 기능들을 보안 문제 없이 사용 가능하게 된다.

좀 더 정확한 내용은 MIDP v2.1 스팩을 참고하기 바란다.

댓글

이 블로그의 인기 게시물

Wireless: HotSpot 2.0 이란?

Apple M1 Mac Mini에서 이더리움 (Ethereum) 채굴하기

Java: Java for Game? Java가 Game 개발에 어울릴까?