Abstract
Java crypto library such as SUN JCA/JCE or BC JCE is generally used to implement secure applications for smart devices using Android platform. Programming functions written by Java language are launched and executed inside Java Virtual Machine (JVM), thereby difficult to use system hardware specific functionalities and degrading performance as well. In case of crypto primitive, few secure applications can use crypto primitive executing in JVM because both amount of computing and complexity of such primitives are very high. From the aspect of performance, in particular, time sensitive real time applications such as streaming services or secure application frequently applying public key based crypto algorithm cannot use Java crypto library. To solve the problem, we design and implement crypto library which employ JNI and NDK methods to directly access functions that implemented by native language such as C or C++. The proposed Java Crypto provider supports faster execution. Also developer can use our provider in the same way by writing traditional Java crypto library.
안드로이드 기반 스마트기기에서 보안 응용 서비스를 개발하기 위해 SUN JCA/JCE나 BC JCE와 같은 자바 기반 보안 라이브러리를 사용한다. 자바를 사용하여 제작된 응용은 자바 가상 머신(JVM: Java Virtual Machine)에서 기능이 수행되므로 시스템 하드웨어에 의존하는 기능을 사용하기 어렵고 실행 속도가 저하되는 문제가 있다. 보안 프리미티브(primitive)의 경우 계산양이 많고 연산 복잡도가 높아 JVM에서 수행되는 보안 프리미티브를 적용할 수 있는 응용은 제한적이다. 특히, 실시간 특성을 요하는 스트리밍 서비스나 계산양이 많은 공개키 기반 알고리즘을 빈번히 적용하는 보안 응용 서비스의 경우 성능의 문제로 자바 라이브러리 사용이 어렵다. 이를 해결하기 위해 본 논문에서는 JNI와 NDK 도구를 사용하여 C나 C++ 언어로 구현된 네이티브 기능을 사용하여 보안 기능을 수행할 수 있는 프로바이더를 설계하고 구현한다. 제안하는 자바 보안 프로바이더(DSCrypt)는 기존 자바 기반 보안 라이브러리와 동일한 방식으로 사용할 수 있지만 빠르게 보안 기능이 수행되는 장점을 제공한다.