자바 카드
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
자바 카드는 다양한 스마트 카드에서 동일한 자바 카드 애플릿을 실행할 수 있도록 하는 표준 스마트 카드 컴퓨팅 환경을 정의하는 기술이다. 자바와 유사하게 자바 카드 가상 머신과 런타임 라이브러리를 사용하여 스마트 카드 간의 차이점을 추상화하지만, 메모리, 성능, 런타임 지원 문제로 인해 이식성은 제한적이다. 자바 카드는 데이터 캡슐화, 애플릿 방화벽, 암호화 등의 보안 기능을 제공하여 스마트 카드에 저장된 민감한 정보를 보호한다. 자바 카드 프로그램은 자바의 하위 집합을 사용하며, 자바 환경에서 개발 및 디버깅이 가능하다. 오라클은 여러 자바 카드 플랫폼 사양을 출시했으며, 최신 버전은 3.2이다.
더 읽어볼만한 페이지
자바 카드 | |
---|---|
기본 정보 | |
![]() | |
개요 | |
종류 | 스마트 카드 |
관련 기술 | 자바 플랫폼 |
2. 이식성
자바 카드는 서로 다른 스마트 카드에서 동일한 자바 카드 애플릿이 실행될 수 있도록 표준 스마트 카드 컴퓨팅 환경을 정의한다.[9] 이는 자바 애플릿이 서로 다른 컴퓨터에서 실행되는 방식과 유사하다. 자바 카드 기술을 사용하면 전력과 메모리가 극히 제한된 스마트 카드와 같은 장치에서 자바 기술을 이용한 작은 애플리케이션(애플릿)을 실행할 수 있다.[9]
자바 카드 API는 공식적인 국제 표준 및 업계 고유의 표준과 호환된다. 자바 카드 API 사양에 따른 자바 카드 애플릿은 자바 카드 애플리케이션 환경을 사용하여 개발된 타사 카드에서도 동작한다. 한 장의 카드에서 하나 이상의 애플릿이 동작할 수 있으며, 카드가 고객에게 발급된 후에도 새로운 애플릿을 카드에 설치할 수 있다.
2. 1. 자바 가상 머신 (JVM)
자바 카드는 서로 다른 스마트 카드에서 동일한 자바 카드 애플릿이 실행될 수 있도록 하는 표준 스마트 카드 컴퓨팅 환경을 정의하는 것을 목표로 한다. 이는 자바 애플릿이 서로 다른 컴퓨터에서 실행되는 방식과 유사하다. 자바와 마찬가지로, 이는 가상 머신(자바 카드 가상 머신)과 잘 정의된 런타임 라이브러리의 조합을 사용하여 수행되며, 이는 애플릿을 스마트 카드 간의 차이로부터 크게 추상화한다.[9] 메모리 크기, 성능 및 런타임 지원(예: 통신 프로토콜 또는 암호화 알고리즘) 문제로 인해 이식성은 여전히 제한된다.[9]2. 2. 이식성의 한계
자바 카드는 서로 다른 스마트 카드에서 동일한 자바 카드 애플릿이 실행될 수 있도록 하는 표준 스마트 카드 컴퓨팅 환경을 정의하는 것을 목표로 한다. 이는 자바 애플릿이 서로 다른 컴퓨터에서 실행되는 방식과 유사하다. 자바와 마찬가지로, 이는 가상 머신(자바 카드 가상 머신)과 잘 정의된 런타임 라이브러리의 조합을 사용하여 수행되며, 이는 애플릿을 스마트 카드 간의 차이로부터 크게 추상화한다. 메모리 크기, 성능 및 런타임 지원(예: 통신 프로토콜 또는 암호화 알고리즘) 문제로 인해 이식성은 여전히 제한된다.[9]3. 보안
자바 카드 기술은 원래 스마트 카드에 저장된 민감한 정보를 보호하기 위해 개발되었다. 보안은 이 기술의 다양한 측면에 의해 결정된다.
데이터 캡슐화, 애플릿 방화벽, 암호화, 애플릿 등의 방법을 통해 보안을 유지한다.
자바 카드 기술을 사용하면 전력과 메모리가 극히 제한된 스마트 카드와 같은 장치에서 자바 기술을 이용한 작은 애플리케이션(애플릿)을 실행할 수 있다.[9]
자바 카드 애플리케이션 환경은 스마트 카드 제조업체에 라이선스된다. 자바 카드 API는 공식적인 국제 표준 및 업계 고유의 표준과 호환된다. 자바 카드 API 사양에 따른 자바 카드 애플릿이라면, 자바 카드 애플리케이션 환경을 사용하여 개발된 타사 카드에서도 동작한다. 한 장의 카드에서 하나 이상의 애플릿이 동작할 수 있다. 카드가 고객에게 발급된 후에도 새로운 애플릿을 카드에 설치할 수 있다.
21세기에 다양한 IC 카드가 유통되면서, 일상생활에 깊이 침투해 있는 기술이다.
3. 1. 데이터 캡슐화
데이터는 애플리케이션 내에 저장되며, 자바 카드 애플리케이션은 기본 운영 체제 및 하드웨어와 분리된 격리된 환경(자바 카드 VM)에서 실행된다.[9]3. 2. 애플릿 방화벽
다른 자바 VM과 달리, 자바 카드 VM은 일반적으로 여러 애플리케이션을 관리하며, 각 애플리케이션은 민감한 데이터를 제어한다. 따라서 서로 다른 애플리케이션은 한 애플릿의 데이터 요소에 대한 다른 애플릿의 접근을 제한하고 확인하는 애플릿 방화벽에 의해 서로 분리된다.[9]3. 3. 암호화
DES, 트리플 DES, AES와 같은 일반적인 대칭 키 알고리즘과 RSA, 타원 곡선 암호화와 같은 비대칭 키 알고리즘을 지원하며, 서명, 키 생성 및 키 교환과 같은 암호화 서비스도 지원한다.[1]3. 4. 애플릿
애플릿은 들어오는 명령 요청만 처리하고 데이터를 보내거나 인터페이스 장치로 응답 상태 단어를 다시 전송하여 응답하는 상태 머신이다.[9]4. 설계
자바 카드는 언어 수준에서 자바의 정확한 부분 집합이다. 자바 카드의 모든 언어 구조는 자바에 존재하며 동일하게 작동한다. 표준 빌드 사이클의 일부로, 자바 카드 프로그램은 자바 컴파일러에 의해 자바 클래스 파일로 컴파일된다. 이 클래스 파일은 자바 카드 플랫폼에 특정한 도구에 의해 후처리된다.[9] 그러나 많은 자바 언어 기능이 자바 카드에서 지원되지 않으며, 자바의 몇 가지 일반적인 기능은 많은 실제 스마트 카드에서 런타임 시 제공되지 않는다.[9]
자바 카드 기술을 사용하면 전력과 메모리가 극히 제한된 스마트 카드와 같은 장치에서 자바 기술을 이용한 작은 애플리케이션(애플릿이라고 함)을 실행할 수 있다.[9] 자바 카드 API는 공식적인 국제 표준 및 업계 고유의 표준과 호환된다. 자바 카드 API 사양에 따른 자바 카드 애플릿은 자바 카드 애플리케이션 환경을 사용하여 개발된 타사 카드에서도 동작하며, 한 장의 카드에서 하나 이상의 애플릿이 동작할 수 있다. 카드가 고객에게 발급된 후에도 새로운 애플릿을 카드에 설치할 수 있다.
4. 1. 지원되지 않는 자바 언어 기능
문자형(char), 배정도형(double), 단정도형(float), 8바이트 정수형(long), `transient` 한정자, enums, 2차원 이상의 배열, 종료(finalization), 객체 복제, 스레드는 자바 카드에서 지원되지 않는다.[9] 많은 실제 스마트 카드에서 `int` 유형과 객체의 가비지 수집은 런타임 시 제공되지 않는다.[9]4. 2. 바이트코드
자바 카드 가상 머신(Java Card Virtual Machine)에서 실행되는 자바 카드 바이트코드는 표준 자바 가상 머신에서 실행되는 자바 2 바이트코드의 기능적 하위 집합이지만 크기를 최적화하기 위해 다른 인코딩을 사용한다.[9] 따라서 자바 카드 애플릿은 일반적으로 동일한 자바 소스 코드를 컴파일하여 얻은 가상의 자바 애플릿보다 적은 바이트코드를 사용한다. 이는 스마트 카드와 같이 리소스가 제한된 장치에서 필수적인 메모리를 절약해준다.[9] 설계상의 트레이드 오프로, 일부 자바 언어 기능(위에 언급됨)과 크기 제한에 대한 지원이 없다.[9] 애플리케이션 코드를 64 KiB 제한 미만의 패키지로 나누는 것과 같은 크기 제한을 극복하기 위한 기술이 존재한다.[9]4. 3. 라이브러리 및 런타임
자바 카드 표준 클래스 라이브러리와 런타임 지원은 자바와 상당히 다르며, 공통 부분은 최소화되어 있다. 예를 들어, 자바 보안 관리자(Security Manager) 클래스는 자바 카드에서 지원되지 않으며, 보안 정책은 자바 카드 가상 머신(Java Card Virtual Machine)에 의해 구현된다. 또한, 임시 변수(클래스 멤버가 될 수 있는 비영구적이고 빠른 RAM 변수)는 자바 카드 클래스 라이브러리를 통해 지원되는 반면, 자바에서는 네이티브 언어 지원을 받는다.[9]4. 4. 자바 카드 특화 기능
자바 카드 런타임 및 가상 머신은 자바 카드 플랫폼에 특정한 기능을 지원한다.; 지속성: 자바 카드를 사용하면 객체는 기본적으로 영구 메모리에 저장된다. 스마트 카드에는 RAM이 매우 부족하며 임시 또는 보안에 민감한 객체에만 사용된다. 따라서 런타임 환경과 바이트코드는 영구 객체를 관리하도록 조정되었다.[9]
; 원자성: 스마트 카드는 외부 전원을 사용하고 영구 메모리에 의존하므로 영구적인 업데이트는 원자적이어야 한다. 따라서 개별 바이트코드 명령어 및 API 메서드에 의해 수행되는 개별 쓰기 작업은 원자성이 보장되며, 자바 카드 런타임에는 제한된 트랜잭션 메커니즘이 포함되어 있다.[9]
; 애플릿 격리: 자바 카드 방화벽은 카드에 존재하는 서로 다른 애플릿을 격리하는 메커니즘이다. 또한 애플릿이 다른 애플릿에서 객체를 명시적으로 사용할 수 있도록 하는 공유 메커니즘도 포함되어 있다.[9]
5. 개발
실제 자바 카드 프로그램에서 사용되는 코딩 기술은 자바 프로그램에서 사용되는 기술과 상당히 다르다. 그럼에도 불구하고, 자바 카드는 자바 언어의 정확한 하위 집합을 사용하므로 학습 곡선을 가속화하고, 자바 환경을 사용하여 자바 카드 프로그램을 개발하고 디버깅할 수 있다. 단, 디버깅이 자바 바이트 코드로 수행되더라도, 클래스 파일이 자바 카드 바이트 코드로 변환하여 자바 카드 언어의 제한 사항에 맞는지 확인하고, 성능을 파악하기 위해 실제 자바 카드 스마트 카드에서 조기에 테스트해야 한다.[9] 또한, 스마트 카드에 내장될 애플리케이션을 위한 자바 카드 코드와 스마트 카드를 사용하는 호스트에 있을 자바 애플리케이션을 모두 동일한 환경에서 함께 실행하고 디버깅할 수 있다.[9]
자바 카드 기술을 사용하면 전력과 메모리가 극히 제한된 스마트 카드와 같은 장치에서 자바 기술을 이용한 작은 애플리케이션(애플릿이라고 함)을 실행할 수 있다.[9]
자바 카드 애플리케이션 환경은 스마트 카드 제조업체에 라이선스된다. 자바 카드 API는 공식적인 국제 표준 및 업계 고유의 표준과 호환된다.
자바 카드 API 사양에 따른 자바 카드 애플릿이라면, 자바 카드 애플리케이션 환경을 사용하여 개발된 타사 카드에서도 동작한다. 한 장의 카드에서 하나 이상의 애플릿이 동작할 수 있다. 카드가 고객에게 발급된 후에도 새로운 애플릿을 카드에 설치할 수 있다.
6. 버전
오라클은 여러 자바 카드 플랫폼 사양을 출시했으며, 애플리케이션 개발을 위한 SDK 도구를 제공하고 있다. 일반적으로 스마트 카드 공급업체는 자바 카드 플랫폼 대상에 지정된 알고리즘의 하위 집합만 구현하며, 어떤 사양의 하위 집합이 구현되었는지 확인하는 유일한 방법은 카드를 테스트하는 것이다.[4]
자바 카드 API는 공식적인 국제 표준 및 업계 고유의 표준과 호환된다. 자바 카드 API 사양에 따른 자바 카드 애플릿이라면, 자바 카드 애플리케이션 환경을 사용하여 개발된 타사 카드에서도 동작한다. 한 장의 카드에서 하나 이상의 애플릿이 동작할 수 있으며, 카드가 고객에게 발급된 후에도 새로운 애플릿을 카드에 설치할 수 있다.
6. 1. 주요 버전
6. 2. Java Card 3.0
자바 카드 사양 버전 3.0 (2008년 3월 초안 공개)은 ''클래식 에디션''과 ''커넥티드 에디션'' 두 가지로 구분된다.[7]- ''클래식 에디션''(2015년 6월 출시된 버전 3.0.5)은 자바 카드 플랫폼 버전 2(2006년 3월 출시된 마지막 버전 2.2.2)의 발전된 버전으로, 스마트 카드와 같이 자원이 제한된 기기에서 기존의 카드 애플릿을 지원한다. 이전 애플릿은 일반적으로 최신 클래식 에디션 기기와 호환되며, 새로운 라이브러리 기능을 참조하지 않는 경우 최신 기기용 애플릿은 이전 기기와 호환될 수 있다. 자바 카드 클래식 에디션을 구현하는 스마트 카드는 여러 벤더로부터 보안 인증을 받았으며 상업적으로 사용 가능하다.
- ''커넥티드 에디션''(2009년 12월 출시된 버전 3.0.2)은 네트워크 지향 기능을 갖춘 새로운 가상 머신과 향상된 실행 환경을 제공하는 것을 목표로 한다. 애플리케이션은 APDU 명령으로 요청되는 기존 카드 애플릿 또는 카드를 사용한 웹 기반 통신 방식(HTML, REST, SOAP 등)을 지원하기 위해 HTTP를 사용하는 서블릿으로 개발할 수 있다. 런타임은 부동 소수점을 제외한 Java (1.)6 바이트코드의 하위 집합을 사용하며, 휘발성 객체(가비지 컬렉션), 멀티스레딩, 애플리케이션 간 통신 기능, 영속성, 트랜잭션, 카드 관리 기능을 지원한다. 2021년 현재 상업적으로 사용 가능한 스마트 카드에서 채택이 거의 이루어지지 않아, 현재 위키백과 페이지를 포함한 자바 카드에 대한 언급은 종종 암묵적으로 ''커넥티드 에디션''을 제외한다.
6. 3. Java Card 3.1
자바 카드 3.1은 2019년 1월에 출시되었다.6. 3. 1. 새로운 기능
- 애플릿 기능은 여러 자바 패키지로 분할될 수 있다.
- CAP 파일 크기는 64KB를 초과할 수 있다.
- ISO/IEC 7816에 정의된 스마트 카드 프로토콜 외에도 다양한 물리 계층과 애플리케이션 프로토콜을 지원한다.
- 보안 요소 애플리케이션을 통해 장치 주변 장치에 대한 논리적 접근이 용이해진다.
- 배열 뷰(Array Views)(배열의 하위 집합에 대한 뷰), CAP 파일 내에 포함된 정적 리소스 및 향상된 API 확장성을 지원한다.
- 인증서 API, 키 파생 API, 단조 카운터 API, 시스템 시간 API를 제공한다.
- 구성 가능한 키 쌍 생성, 에드워드 곡선과 같은 명명된 타원 곡선, 추가적인 AES 모드(CFB & XTS), 중국 알고리즘(SM2 - SM3 - SM4)을 지원한다.
참조
[1]
서적
Java Card Technology for Smart Cards: Architecture and Programmer's Guide
https://archive.org/[...]
Addison-Wesley
2019-04-09
[2]
간행물
Developing Java Card Applications
https://www.youtube.[...]
2013-01-30
[3]
논문
Design and Implementation of a Zero-Knowledge Authentication Framework for Java Card
http://www.igi-globa[...]
IGI
[4]
웹사이트
JCAlgTest - database of supported JavaCard algorithms
http://www.fi.muni.c[...]
2016-01-27
[5]
웹사이트
Announcing Java Card 3.2 Release
https://blogs.oracle[...]
2023-01-30
[6]
웹사이트
Unveiling Java Card 3.1: New Cryptographic Extensions
https://blogs.oracle[...]
2019-04-18
[7]
서적
Introduction to Programming: Learn to program in Java with data structures, algorithms, and logic
https://books.google[...]
Packt Publishing
2019-04-09
[8]
문서
【IT用語】ICカード~FelicaとJava Card~
http://mikilab.doshi[...]
[9]
웹사이트
Java Cardテクノロジーについて | Oracle
https://www.oracle.c[...]
[10]
서적
Java Card Technology for Smart Cards: Architecture and Programmer's Guide
https://archive.org/[...]
Addison-Wesley
2019-04-09
[11]
간행물
Developing Java Card Applications
https://www.youtube.[...]
2013-01-30
[12]
논문
Design and Implementation of a Zero-Knowledge Authentication Framework for Java Card
http://www.igi-globa[...]
IGI
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com