안드로이드 상에서의 프로그램 개발은 JAVA SDK를 통해 이루어진다. 하지만 JAVA의 사용은 virtual machine 상에서의 동작으로 인해 기존의 C언어에 비해 성능이 떨어지는 단점을 가진다. 최근에는 이러한 문제점을 해결하기 위해 NDK를 이용한 최적화 프로그램 개발이 사용되고 있다. 해당 기법은 안드로이드 프로그램을 C언어로 작성하여 연산을 효율적으로 수행한다. 본 논문에서는 안드로이드 상에서의 공개키 기반 암호화를 비교 분석하기 위해 NDK와 SDK를 사용하여 곱셈을 구현한다. SDK의 구현에는 BigInteger 패키지를 사용하였으며 NDK의 구현에는 Comb method를 사용하였다. 또한 안드로이드 상에서의 사칙연산, 조건문 그리고 호출문의 연산 수행 결과를 비교하여 NDK를 통한 성능향상에 대해 알아본다.
안드로이드 상에서의 프로그램 개발은 JAVA SDK를 통해 이루어진다. 하지만 JAVA의 사용은 virtual machine 상에서의 동작으로 인해 기존의 C언어에 비해 성능이 떨어지는 단점을 가진다. 최근에는 이러한 문제점을 해결하기 위해 NDK를 이용한 최적화 프로그램 개발이 사용되고 있다. 해당 기법은 안드로이드 프로그램을 C언어로 작성하여 연산을 효율적으로 수행한다. 본 논문에서는 안드로이드 상에서의 공개키 기반 암호화를 비교 분석하기 위해 NDK와 SDK를 사용하여 곱셈을 구현한다. SDK의 구현에는 BigInteger 패키지를 사용하였으며 NDK의 구현에는 Comb method를 사용하였다. 또한 안드로이드 상에서의 사칙연산, 조건문 그리고 호출문의 연산 수행 결과를 비교하여 NDK를 통한 성능향상에 대해 알아본다.
On Android environment, program development is conducted with JAVA SDK. However, using JAVA, it is operated over virtual machine which shows lower performance in terms of speed than traditional C language programming. The method writes program in C language, which conducts operation efficiently. In ...
On Android environment, program development is conducted with JAVA SDK. However, using JAVA, it is operated over virtual machine which shows lower performance in terms of speed than traditional C language programming. The method writes program in C language, which conducts operation efficiently. In the paper, we implement multiplication using NDK and SDK to analyze the public key cryptography over Android environment. In case of SDK, we used BigInteger package and in case of NDK, we used Comb method. Moreover, execution time of arithmetic, branch and call operations over Android environment is compared to understand performance enhancement using NDK package.
On Android environment, program development is conducted with JAVA SDK. However, using JAVA, it is operated over virtual machine which shows lower performance in terms of speed than traditional C language programming. The method writes program in C language, which conducts operation efficiently. In the paper, we implement multiplication using NDK and SDK to analyze the public key cryptography over Android environment. In case of SDK, we used BigInteger package and in case of NDK, we used Comb method. Moreover, execution time of arithmetic, branch and call operations over Android environment is compared to understand performance enhancement using NDK package.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 NDK를 통한 공개키 기반 암호화를 위한 곱셈기를 NDK를 통해 구현한다. 이를 통해 ECC와 RSA와 같은 공개키 암호화를 안드로이드 상에서 구현하기 위한 방안을 제시한다.
본 장에서는 공개키 기반 암호화의 기본 연산인 Big Integer연산을 보다 효율적으로 구현하기 위한 기법을 확인한다. 해당 연산은 공개키 기반 암호화를 위해 요구되는 체연산에 필수적이지만 임베디드 시스템의 bit의 크기가 정의된 체에 비해 작기 때문에 구현이 어렵다.
따라서 이를 구현하기 위한 방법론도 생각되어야 한다. 본 논문에서는 NDK를 통한 곱셈 모듈 설계를 안드로이드 상에 적합하게 수정하여 제시한다. 본 논문에서는 160-bit의 multi-precision 곱셈을 Comb method를 통해 구현한다.
본 논문에서는 안드로이드 폰 상에서의 공개키 기반 암호화를 위한 최적화 곱셈 구현기법에 대해 알아보았다. 해당 기법은 NDK를 통한 C언어 프로그래밍을 통해 연산 수행 속도를 향상시켰다.
제안 방법
본 논문에서는 NDK를 통한 공개키 기반 암호화를 위한 곱셈기를 NDK를 통해 구현한다. 이를 통해 ECC와 RSA와 같은 공개키 암호화를 안드로이드 상에서 구현하기 위한 방안을 제시한다.
[그림 2]는 자바를 통해 작성된 프로그램을 나타낸다. 여기서는 z=((z+1)*x)-y연산을 1000000번 수행하며 자바 상에서의 명령어 수행속도를 측정해 보았다. 사칙 연산을 복잡하게 구성한 이후는 C언어와 자바에서 가지는 코드 최적화로 인해 생기는 차이를 최소화하기 위해서이다.
6을 이용하여 평가하였다. sorting알고리즘에 대한 성능을 JNI와 native code와의 조합을 통해 나타내었다. 안드로이드 환경 상에서는 JNI와 Native code를 사용하는 것이 Dalvik virtual machine만을 사용하는 것보다 성능이 좋게 나왔다.
해당 논문에서는 JNI를 사용할 때 발생하는 지연, 정수 계산, 실수 계산, 메모리 접근 알고리즘 그리고 heap memory allocation 알고리즘에 대한 실험을 수행하였다. 실험 결과 JNI를 사용할 때 발생하는 지연은 다른 연산들의 계산 시 발생하는 이득으로 인해 상쇄되며 나머지 실험에서도 모두 NDK를 사용하여 구현한 결과가 성능이 높게 평가되었다.
해당 논문에서는 JAVA를 통해 구현한 암호화 기법과 NDK를 사용했을 때의 성능을 비교 평가하고 있다. 또한 NDK를 보다 효율적으로 사용하기 위한 Framework을 제안하여 보다 효율적으로 NDK를 활용할 수 있도록 하고 있다.
따라서 마지막 64번째 bit는사용하지 않는 범위 내에서 곱셈을 수행하기 위해 64-bit long 형식 안에서 29-bit만을 사용하여 곱셈을 구현하였다. 따라서 160-bit 곱셈을 수행하기 위해 인자를 29-bit씩 여섯 개씩 나누어 계산하였으며 자세한 구현은 [그림 8]과 같다.
본 장에서는 기존의 논문들에서 다루지 않은 NDK를 사용함으로써 성능이 향상되는 연산들을 비교한다. 특히 NDK를 통한 암호화 모듈관점에서 자주 사용되는 연산들인 함수호출, 비트연산과 조건문을 분석함으로써 성능향상의 조건을 알아 볼 수 있도록 한다.
본 장에서는 기존의 논문들에서 다루지 않은 NDK를 사용함으로써 성능이 향상되는 연산들을 비교한다. 특히 NDK를 통한 암호화 모듈관점에서 자주 사용되는 연산들인 함수호출, 비트연산과 조건문을 분석함으로써 성능향상의 조건을 알아 볼 수 있도록 한다.
해당 연산에 대한 수행 횟수를 늘려가며 수행해 본 결과 10,000,000번의 연산 시에는 12737(msec)가 걸리며 상당히 많은 연산이 수행된다는 것을 알았다. 따라서 연산 속도 측정 시 NDK 안에서 연산이 지속적으로 수행되는 경우와 JAVA단에서 지속적으로 NDK에 접근하는 방식, 그리고 JAVA상에서 구현된 결과를 비교해 보았다.
데이터처리
해당 논문에서는 안드로이드 환경과 자바 환경과의 성능의 차이점을 JRE 1.6을 이용하여 평가하였다. sorting알고리즘에 대한 성능을 JNI와 native code와의 조합을 통해 나타내었다.
이론/모형
본 논문에서는 NDK를 통한 곱셈 모듈 설계를 안드로이드 상에 적합하게 수정하여 제시한다. 본 논문에서는 160-bit의 multi-precision 곱셈을 Comb method를 통해 구현한다. 이는 추후에 확대될 보다 다양한 체상에서의 공개키 기반의 암호화와 타원곡선암호화까지 다양한 고급 암호화 구현에 효율적으로 활용이 가능하다.
따라서 중간값을 저장하기 위한 메모리에 대한 접근이 줄어드는 장점을 가진다. 해당 곱셈기법을 계산하기 위해 본 논문에서는 64-bit long type을 선언해서 연산에 사용하였다. 하지만 java에서는 기존에 사용되었던 unsigned type이 가지는 문제점을 최소화하기 위해 해당 정의를 사용하지 못하도록 하고 있다.
즉 자바코드로 작성된 부분인 [그림 7]의 add함수가 수행되게 되면 JNI를 통해 이와 연관된 C언어 구현부분인 [그림 8]의 곱셈을 수행하게 된다. 곱셈의 구현은 Comba 기법에 따라 동일한 열에 위치한 값을 축적시키며 연산을 하도록 구현되었다. 값의 축적이 끝나고 옆의 열로 이동하는 경우에는 shift연산을 통해서 상위 단의 값을 32-bit 오른쪽으로 이동시켜 지속적인 축적이 가능하도록 하였다.
성능/효과
해당 논문에서는 JNI를 사용할 때 발생하는 지연, 정수 계산, 실수 계산, 메모리 접근 알고리즘 그리고 heap memory allocation 알고리즘에 대한 실험을 수행하였다. 실험 결과 JNI를 사용할 때 발생하는 지연은 다른 연산들의 계산 시 발생하는 이득으로 인해 상쇄되며 나머지 실험에서도 모두 NDK를 사용하여 구현한 결과가 성능이 높게 평가되었다. 특히 메모리와 heap에 대한 성능에서는 매우 큰 성능의 차이를 보였다.
실험 결과 JNI를 사용할 때 발생하는 지연은 다른 연산들의 계산 시 발생하는 이득으로 인해 상쇄되며 나머지 실험에서도 모두 NDK를 사용하여 구현한 결과가 성능이 높게 평가되었다. 특히 메모리와 heap에 대한 성능에서는 매우 큰 성능의 차이를 보였다.
반면에 자바로 작성된 코드는 고급언어로 축약된 형태로 명령이 수행되기 때문에 작은 용량을 나타낸다. 결론적으로 [그림 9]과 [그림 10]를 토대로 생각해 볼 때 속도와 메모리 크기의 적당한 Trade-off를 통해 상황에 맞는 적합한 구현(속도, 메모리)을 찾아나가는 것이 중요하다.
NDK를 사용하기 위해서는 JAVA언어에서 NDK를 Call하기 위한 과정을 거쳐야 한다. 해당 연산에 대한 수행 횟수를 늘려가며 수행해 본 결과 10,000,000번의 연산 시에는 12737(msec)가 걸리며 상당히 많은 연산이 수행된다는 것을 알았다. 따라서 연산 속도 측정 시 NDK 안에서 연산이 지속적으로 수행되는 경우와 JAVA단에서 지속적으로 NDK에 접근하는 방식, 그리고 JAVA상에서 구현된 결과를 비교해 보았다.
AND연산은 암호화 과정에서 자주 사용되는 연산 중 하나이다. NDK에서 Function call을 사용한 경우 성능이 급격히 떨어졌지만 NDK안에서 연산을 반복하여 수행할 때는 JAVA에서 수행하는 경우에 비해 성능이 좋게 측정되었다.
해당 기법은 NDK를 통한 C언어 프로그래밍을 통해 연산 수행 속도를 향상시켰다. C언어를 통해 기존의 library 기법보다 NDK 구현이 효율적임을 제시하였다. 이는 암호화와 그래픽 프로세싱과 같은 높은 성능이 요구되는 프로그램에 적용이 가능하다.
이는 암호화와 그래픽 프로세싱과 같은 높은 성능이 요구되는 프로그램에 적용이 가능하다. 또한 function call에 소모되는 계산 량이 많음을 제시함으로써 NDK 사용 시 function call을 최소화해야 함을 보였다. 앞으로의 연구 방향은 본 논문에서 제시한 구현기법을 통해 공개키 알고리즘을 효율적으로 구현하여 안드로이드 운영 체제에서 동작하는 암호화 통합 패키지를 제작하는 데 있다.
후속연구
본 논문에서는 160-bit의 multi-precision 곱셈을 Comb method를 통해 구현한다. 이는 추후에 확대될 보다 다양한 체상에서의 공개키 기반의 암호화와 타원곡선암호화까지 다양한 고급 암호화 구현에 효율적으로 활용이 가능하다.
또한 function call에 소모되는 계산 량이 많음을 제시함으로써 NDK 사용 시 function call을 최소화해야 함을 보였다. 앞으로의 연구 방향은 본 논문에서 제시한 구현기법을 통해 공개키 알고리즘을 효율적으로 구현하여 안드로이드 운영 체제에서 동작하는 암호화 통합 패키지를 제작하는 데 있다.
질의응답
핵심어
질문
논문에서 추출한 답변
JAVA의 사용으로 나타나는 문제점을 해결하기 위한 방법은?
하지만 JAVA의 사용은 virtual machine 상에서의 동작으로 인해 기존의 C언어에 비해 성능이 떨어지는 단점을 가진다. 최근에는 이러한 문제점을 해결하기 위해 NDK를 이용한 최적화 프로그램 개발이 사용되고 있다. 해당 기법은 안드로이드 프로그램을 C언어로 작성하여 연산을 효율적으로 수행한다.
JAVA의 사용의 단점은?
안드로이드 상에서의 프로그램 개발은 JAVA SDK를 통해 이루어진다. 하지만 JAVA의 사용은 virtual machine 상에서의 동작으로 인해 기존의 C언어에 비해 성능이 떨어지는 단점을 가진다. 최근에는 이러한 문제점을 해결하기 위해 NDK를 이용한 최적화 프로그램 개발이 사용되고 있다.
안드로이드 플랫폼은 어디에서 개발되었는가?
구글에서 개발한 안드로이드 플랫폼은 높은 완성도와 공개성으로 인해 가장 널리 사용되는 플랫폼이다[4, 14]. 현재 안드로이드 운영체제를 사용하는 스마트폰을 통한 다양한 서비스의 제공이 본격화되고 있다.
참고문헌 (15)
http://developer.android.com/index.html, 안드로이드 개발관련 사이트
Rob Gordon, "Essential JNI: Java Native Interface," ISBN 978-0136798958, 1998.
Mark Allen Weiss, "C++ for Java Programmers," ISBN 978-0139194245, October 2003.
Leonid Batyuk, Aubrey-Derrick Schmidt, Hans- Gunther Schmidt, Ahmet Camtepe and Sahin Albayrak, "Developing and Benchmarking Native Linux Applications on Android,"Proceedings of the 2nd International Conference on Mobile Wireless Middleware, Operating Systems, and Applications (Mobilware 2009), pp. 381-390, Beriln, Germany, April 28-29, 2009.
Sangchul Lee and Jae Wook Jeon, "Evaluating Performance of Android Platform Using Native C for Embedded Systems," International Conference on Control, Automation and Systems, Gyeonggi-do, Korea, Oct. 27-30, 2010.
Jung Ha Paik, Seog Chung SEO, Yungyu Kim, HwanJin Lee, HyunChul Jung, DongHoon Lee, "An Efficient Implementation of Block Cipher in Android Platform," 2011 Fifth FTRA International Conference on Multimedia and Ubiquitous Engineering. 2011.
"What is android." [Online]. Available: http://developer.android.com/guide/basics/what-is-android.html
"What is ndk." [Online]. Available: http://developer.android. com/sdk/ndk/overview.html
이 논문을 인용한 문헌
저자의 다른 논문 :
연구과제 타임라인
LOADING...
LOADING...
LOADING...
LOADING...
LOADING...
활용도 분석정보
상세보기
다운로드
내보내기
활용도 Top5 논문
해당 논문의 주제분야에서 활용도가 높은 상위 5개 콘텐츠를 보여줍니다. 더보기 버튼을 클릭하시면 더 많은 관련자료를 살펴볼 수 있습니다.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.