기본 콘텐츠로 건너뛰기

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 이란?

스마트폰 사용자가 HotSpot 2.0을 지원하는 Wi-Fi 망을 사용하는 경우라면 기존 Wi-Fi 망과 달리 이동통신 망에서 Wi-Fi 망으로의 네트워크 연결 전환이 자연스럽게 이루어진다. 예를 들면, 3G 네트워크를 이용하여 영화를 보고 있다가 HotSpot 2.0 네트워크에 연결이 가능하게 되면 영화 시청 중단 없이 Wi-Fi 망으로 자연스럽게 네트워크 연결이 이동하여 3G 망의 부하도 줄이고 사용자의 네트워크 비용도 절약할 수 있다. 시스코에서 제공한 White Paper 를 참고.

2025년 노벨 화학상 - '맞춤형 나노 스펀지' MOF 시대를 열다!

올해의 주인공들은 지구를 구하고 미래 산업을 바꿀 수 있는 혁신적인 신소재를 세상에 내놓았습니다. 바로 금속-유기 골격체(MOF, Metal-Organic Frameworks) 의 기초를 닦은 세 분의 과학자입니다! 🏆 2025년 노벨 화학상 수상자 올해 노벨 화학상의 영예는 세 명의 선구자에게 돌아갔습니다. 이들은 금속 이온과 유기 분자를 화학적으로 연결해 새로운 물질을 '설계하고 건축'하는 길을 열었습니다. 오마르 M. 야기 (Omar M. Yaghi): UC 버클리 대학 (미국), MOF의 안정적이고 대량 합성법 개발 및 '망상 화학' 분야 창시 기타가와 스스무 (Susumu Kitagawa): 교토 대학교 (일본), MOF 구조의 유연성과 기체 흡착 능력 입증 리처드 롭슨 (Richard Robson): 멜버른 대학교 (호주), MOF의 초기 구조적 개념과 설계 제시 🔑 MOF란 무엇인가요? (헤르미온느의 핸드백) MOF는 Metal-Organic Framework 의 약자로, 말 그대로 금속과 유기물로 만든 뼈대(골격체)라는 뜻입니다. 구성 원리: 무기물인 금속 이온(노드)을 유기 분자인 링커로 연결하면, 레고 블록처럼 규칙적으로 반복되는 거대한 다공성(구멍이 많은) 결정 구조가 만들어집니다. 놀라운 특징: MOF의 가장 큰 매력은 이 구조 내부에 있는 나노미터 크기의 미세한 구멍들입니다. 이 구멍들 덕분에 MOF는 1그램당 아파트 한 채 면적에 달하는 엄청나게 넓은 표면적을 가질 수 있습니다. 노벨위원회는 이 물질을 '헤르미온느의 핸드백' 처럼 작은 물질 속에 엄청난 공간을 담고 있다고 비유했습니다! 💡 이 연구가 인류에게 주는 영향 MOF 기술은 단순히 학문적인 발견을 넘어, 당면한 지구적 문제를 해결할 수 있는 실용적인 첨단 소재로 주목받습니다. 1. 기후 위기 극복의 열쇠 이산화탄소 포집: MOF의 미세 구멍을 활용하여 발전소나 산업 현장에서 배출되는 CO₂를 선택적으로 흡착하고 분리해 대기 중 ...

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

 돈을 벌 목적은 아니고 이더리움 기술에 대한 호기심에 직접 채굴(마이닝)에 나서 보기로 했다. 머신은 Apple M1 Mac Mini. 스팩을 살펴보니 8 Core GPU에 16GB 메모리를 공유하고 있어 가능은 해보인다. 큰 흐름은 다음과 같다. 채굴한 이더리움을 저장할 지갑을 만든다 만든 지갑의 정보를 잘 보관해둔다 (Secret Recovery Phrase, 지갑의 주소 값) Apple M1용 채굴 프로그램 설치 내 지갑 정보를 이용해서 채굴 프로그램 실행 일단, 채굴한 이더리움을 저장할 지갑(wallet)을 만들어야 한다.  크롬 브라우저 익스텐션 설치로 비교적 간단하게 지갑을 만들 수 있는  https://metamask.io/ 를 이용하기로 했다. 크롬 익스텐션을 설치 후 기존에 만든 지갑이 없으므로 "Create a Wallet"을 선택한다. 패스워드 입력하고 등등의 절차를 거치면 아래와 같은 Secret Recovery Phrase가 나온다. 이 값을 잘 보관해두기 바란다. 나중에 지갑을 복구할 때 필요한 값이다. 이 값이 유출되면 지갑에 모아둔 이더리움을 다 털릴 수 있으므로 안전한 곳에 보관한다. Confirm Your Secret Phrase에서 확인 과정을 거친다. 직접 입력하는 것이 아니라 단어 별 버튼을 일일이 클릭해서 확인해주어야 한다. (좀 번거롭지만 그만큼 Secret Recovery Phrase가 중요함을 인지시키기 위한 과정이다.) 이제 지갑은 준비 완료. 생성된 Account 화면에서 지갑의 주소갑을 얻을 수 있다.  Apple M1용 채굴 프로그램을 설치해보자. Ethminer M1 Github 프로젝트 에서 미리 컴파일된 바이너리를 다운로드 받는다. (Assets를 펼치고 ethminer-m1을 클릭해서 다운 받으면 된다) 원하는 폴더에 파일을 옮겨 놓고 Terminal에서 chmod +x로 실행가능하게 만든다. % mv ~/Downloads/ethminer-m1 .   ...