KR20130100032A - 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법 - Google Patents

코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법 Download PDF

Info

Publication number
KR20130100032A
KR20130100032A KR1020120019911A KR20120019911A KR20130100032A KR 20130100032 A KR20130100032 A KR 20130100032A KR 1020120019911 A KR1020120019911 A KR 1020120019911A KR 20120019911 A KR20120019911 A KR 20120019911A KR 20130100032 A KR20130100032 A KR 20130100032A
Authority
KR
South Korea
Prior art keywords
app
market
code
developer
certificate
Prior art date
Application number
KR1020120019911A
Other languages
English (en)
Inventor
전인경
정현철
Original Assignee
한국인터넷진흥원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국인터넷진흥원 filed Critical 한국인터넷진흥원
Priority to KR1020120019911A priority Critical patent/KR20130100032A/ko
Publication of KR20130100032A publication Critical patent/KR20130100032A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • General Health & Medical Sciences (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본발명에 따른 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포방법은,
개발자의 요청에 따라 해당 앱 개발자를 마켓에 등록하는 과정과, 정상적인 앱 개발자인 경우 마켓이 앱 코드 서명용 인증서를 발급하는 과정과, 앱 개발이 완료되면 해당 앱을 마켓에 전송하는 과정과, 마켓이 상기 전송된 앱의 안전성 및 신뢰성 검증하는 과정과, 마켓이 상기 앱 소스코드의 해쉬값을 생성하여 해쉬 서버에 저장하고 해당 개발자에게 검증 완료를 통보하는 과정과, 개발자가 상기 발급된 앱 코드 서명용 인증서를 이용하여 앱의 코드 서명을 생성하고 마켓에 전송하는 과정과, 상기 마켓에 전송된 코드 서명값을 상기 해쉬 서버에 저장해 둔 해쉬값과 비교하는 과정과, 상기 비교결과, 코드 서명이 동일한 것으로 검증되면 해당 앱을 마켓 서버에 등록하는 과정과, 이후, 사용자의 다운로드 요청이 마켓에 수신되면, 상기 앱을 해당 스마트폰으로 다운로드하는 과정과, 상기 스마트폰에서, 상기 발급된 코드 서명 인증서를 이용하여 앱의 코드 서명을 검증하는 과정과, 상기 코드 서명의 무결성이 검증되면 해당 앱을 스마트폰에 설치하는 과정을 포함하여 구성된다.
본 발명은 기존 앱 검증체계의 안전성과 신뢰성 향상을 위해 코드서명 기술을 활용한 앱 검증 체계를 구현하였다. 본 발명에 따른 앱 배포방식은 앱스토어의 안전성을 증대시키는데 활용될 수 있을 것으로 기대한다.

Description

코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법{METHOD FOR DISTRIBUTTING SMARTPHONE APPLICATION BY USING CODE-SIGNING SCHEME}
본 발명은 스마트폰 어플리케이션에 관한 것으로, 더욱 상세하게는 스마트폰 어플리케이션의 배포 방법에 관한 것이다.
최근 전세계적으로 스마트폰(smartphone)에 대한 관심이 가히 폭발적이다. 스마트폰은 휴대폰에 인터넷 통신과 정보검색 등 컴퓨터 지원 기능을 추가한 지능형 단말기로, 사용자가 원하는 어플리케이션(application, 이하 '앱(app)' 또는 '어플(appl)'이라 한다)을 설치할 수 있다는 것이 특징이다.
스마트폰 앱(app)은 제품에 따라 수만에서 수십만 개가 제공되고 있으며, 하루에도 수백개의 앱이 쏟아지고 있다. 해당 앱만 설치하면 간편하게 인터넷 뱅킹도 이용하고 버스나 지하철 노선도 확인 가능하며, 영화나 연극도 그 자리에서 예약할 수 있다. 이러한 앱을 스마트폰으로 직접 다운로드하여 설치할 수 있는 서비스를 제공하는 곳이 앱 마켓(app market) 또는 앱 스토어(app store)이다. 도1은 스마트폰 환경의 애플리케이션 호스팅 서비스 시스템을 나타낸 도면이다.
스마트폰 앱(app)은 스마트폰 운영체제에 따라 앱의 종류와 개수, 그리고 이용 방법 등이 각각 다르다. 아이폰의 앱 스토어는 애플이 운영하며, 앱이 제공하는 서비스, 배포 등 모든 부분이 애플의 통제하에 이루어지도록 구성된 폐쇄형 마켓이다. 반면, 구글의 안드로이드 마켓은 개방성을 모토로 최소한의 통제 정책만을 유지하고, 악성 프로그램의 판단과 설치 후 책임을 개발자, 사용자 몫으로 남겨 놓았다.
구글의 안드로이드(스마트폰 운영체제(OS))는 애플과는 달리 개방형 앱스토어를 표방하고 있으며, 스토어 대신 마켓(Market)이라는 단어를 사용한다. 즉, 마켓은 공급자가 수요자를 만나 형성하는 시장의 의미를 지니고 있는데, 그 의미대로 구글은 애플과는 달리 누구에게나 소프트웨어 개발 키트(Software Development Kit(이하, 'SDK'라 한다))를 공개하고 있다.
앱스토어가 어플(app) 등록을 위해 사전 검사 등 몇몇의 단계를 거치는데 반해 안드로이드 마켓은 어플(app) 등록을 위해 사용자 등록만 하면 된다.
① 사용자 등록과정
사용자 등록은 안드로이드 홈페이지(http://www.android.com)에서 가능하다. 이때 입력해야 할 정보는 개발자 이름, 이메일 주소, 웹사이트 주소, 전화번호가 전부다.
② 개발환경 구축하기
안드로이드 기반 어플(appl)을 개발하기 위해서는 자바 SDK가 필요하다. 자바 SDK는 공개되어 있기 때문에 개발자 등록을 하지 않아도 사용이 가능하다. 자바 SDK를 설치하고 나면 이제 개발도구를 설치해야 하는데 이때 주로 사용하는 툴(tool)은 이클립스이다. 이클립스는 안드로이드 개발을 위한 여러 가지 플러그인을 제공하고 있기 때문에, 안드로이드 개발에 유용하다. 마지막으로 안드로이드 SDK도 다운을 받아야 한다. 애플의 아이폰과는 달리 안드로이드는 SDK 다운로드에 개발자 등록과정을 필요로 하지 않는다.
앱스토어와 안드로이드 마켓을 비교하면 아래 [표1]과 같이 요약할 수 있다.
구분 애플 앱스토어 안드로이드 마켓
장점 - 어플 사전 검수로 악성코드, 어플의
오작동 여부를 사전에 차단할 수 있음.
- 하나의 어플로 아이폰, 아이팟, 아이
패드에서 활용이 가능함.
- 애플 앱스토어에 비해 개발자 등록과정이 간단하고 비용이 저렴함.
- 검수과정이 없기 때문에 개발자가 플랫폼 회사의 정책과 상관없이 어플을 자유로이 개발하여 배포가 가능함.
단점 - 정책적으로 어플 배포가 차단될 수
있음.
- 악성코드의 유포 가능성이 있음.
그러나, 구글의 안드로이드 마켓과 같이 개방성을 모토로 최소한의 통제 정책만을 유지하는 개방형 앱 호스팅 서비스 시스템은, 악성 프로그램의 판단과 설치 후 책임이 개발자나 사용자에게 있으므로, 개인정보가 가지는 높은 경제적 가치로 인해, 개인정보 해킹 사고가 끊이지 않는 현실에서, 악성 프로그램 여부에 대한 판단이 사용자에게 전가되면 스마트폰에 저장된 개인정보 탈취를 위한 악성코드는 계속 증가할 것으로 예상된다.
미국 모바일 보안업체, 룩아웃(Lookout)은 최근, 모바일 맬웨어(malware) 및 보안 동향에 대한 보고서를 통해 맬웨어(malware)에 감염된 안드로이드 앱이 지난 1월 80개 수준에서 6월 400개 이상으로 증가했다고 발표한 바 있다. 또한 맬웨어를 배포하는 기술 또한 진화되고 있다고 밝히고 있다. 맬웨어 제작자들은 안드로이드 마켓에 깨끗한 앱을 올리고, 이 앱이 긍정적인 리뷰를 받아 인기가 높아질 때까지 기다린 다음, 업데이트에 악성코드를 심는 업그레이드 공격 방법을 이용하고 있는 것이다. 최근 한국에서는 유명한 Social Network service인 네이트온과 싸이월드 회원 가입자 3500만명의 아이디, 비밀번호, 주민등록번호 등의 개인정보가 유출되는 초유의 해킹사고가 발생한 바 있다. 해킹에 사용된 좀비PC의 감염 경로를 살펴본 결과, 개인용 백신 프로그램 업데이트 과정에서 악성코드가 설치된 것으로 확인되었다. 물론 이 사고는 PC 어플리케이션 업데이트 과정에서 발생한 사고이지만, 앱을 개발하고 이를 다운받아 설치하는 과정에서, 사용자가 앱에 악성코드가 포함되어 있는지, 앱 배포자가 신뢰할 수 있는 사람인지에 대한 검증이 부족하기 때문에 발생하였으며 이는 스마트폰에서도 똑같이 발생할 수 있다.
스마트폰 앱이 빠른 속도로 증가하고 있는 상황에서, 앱의 안전성, 신뢰성을 보장할 만한 방법이 마련되지 않는다면 악성코드로 인한 스마트폰 개인정보 유출 사고 또한 같은 속도로 증가할 것으로 예상된다.
안드로이드 마켓과 같은 종래 개방형 앱 호스팅 서비스 시스템은 그 개방성으로 인해 자유로운 어플(appl) 배포가 가능하지만, 악성코드 유포 가능성이 높다는 문제가 있다.
또한, 최근 개인정보 탈취, 서비스 중지 등을 목적으로 하는 악성코드가 급격히 증가하고 있으며, 이러한 악성코드를 전파하는 방법으로 스마트폰에 어플리케이션을 설치하는 방법이 주류를 이루고 있다. 이를 막기 위해 백신 프로그램 등을 활용할 수 있지만, 이는 속도나 효율성 측면에서 한계가 있었다.
본 발명의 목적은, 스마트폰 앱 배포 및 검증 절차의 안전성 강화를 위해, 소프트웨어의 무결성 및 개발자 인증 기능이 포함된 코드서명 기술을 활용하여 신뢰성과 안전성이 향상된 스마트폰 어플리케이션 배포 방법을 제공하는데 있다.
본 발명의 부가적인 특성 및 이점들은 아래의 설명에 기재될 것이며, 부분적으로는 상기 설명에 의해 명백해지거나 본 발명의 실행을 통해 숙지될 것이다. 본 발명의 목표 및 다른 이점들은 특히 아래 기재된 설명 및 부가된 도면뿐만 아니라 청구항에서 지적한 구조에 의해 구현될 것이다.
본 발명은 기존 앱 검증체계의 안전성과 신뢰성 향상을 위해 코드서명 기술을 활용한 앱 검증 체계를 구현하였다. X.509 인증서를 사용한 본 발명의 전자서명 기술은 서명문의 무결성은 물론, 서명자 인증 기능을 함께 제공한다. 스마트폰의 보안 위협이 앱스토어에 집중되고 있는 최근의 문제점을 해결할 수 있는 가장 좋은 해결책은 앱 자체의 신뢰도를 향상시키는 것이다. 앱이 의도하지 않은 악성 코드를 포함하지 않고, 악의적인 해커에 의해 개발된 앱이 아님을 확인할 수 있는 것만으로 앱스토어의 취약점은 해결될 수 있다. 따라서, 본 발명에 따른 앱 배포방식은 앱스토어의 안전성을 증대시키는데 활용될 수 있을 것으로 기대한다.
도1은 스마트폰 환경의 애플리케이션 호스팅 서비스 시스템을 나타낸 도면.
도2는 본 발명에 따른 스마트폰 어플리케이션 배포 방법에 관한 흐름도.
도3은 본 발명에 따른 코드 서명 S/W의 구조에 관한 예시도.
상기와 같은 목적을 달성하기 위하여 본 발명에 따른 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법은,
개발자의 요청에 따라 해당 앱 개발자를 마켓에 등록하는 과정과, 정상적인 앱 개발자인 경우 마켓이 앱 코드 서명용 인증서를 발급하는 과정과, 앱 개발이 완료되면 해당 앱을 마켓에 전송하는 과정과, 마켓이 상기 전송된 앱의 안전성 및 신뢰성 검증하는 과정과, 마켓이 상기 앱 소스코드의 해쉬값을 생성하여 해쉬 서버에 저장하고 해당 개발자에게 검증 완료를 통보하는 과정과, 개발자가 상기 발급된 앱 코드 서명용 인증서를 이용하여 앱의 코드 서명을 생성하고 마켓에 전송하는 과정과, 상기 마켓에 전송된 코드 서명값을 상기 해쉬 서버에 저장해 둔 해쉬값과 비교하는 과정과, 상기 비교결과, 코드 서명이 동일한 것으로 검증되면 해당 앱을 마켓 서버에 등록하는 과정과, 이후, 사용자의 다운로드 요청이 마켓에 수신되면, 상기 앱을 해당 스마트폰으로 다운로드하는 과정과, 상기 스마트폰에서, 상기 발급된 코드 서명 인증서를 이용하여 앱의 코드 서명을 검증하는 과정과, 상기 코드 서명의 무결성이 검증되면 해당 앱을 스마트폰에 설치하는 과정을 포함하여 구성된다.
본 발명은 안드로이드 마켓과 같은 개방형 앱 호스팅 서비스 시스템의 앱 유포 방식을 고려하여 구현된 것으로, PKI((Public Key Infrastructure))와 연동된 코드서명 기술을 활용하여 개방형 앱 마켓에서 신뢰할 수 있는 앱 유포 방식을 제안함으로써, 기존 앱 마켓의 개방성에 신뢰성을 더하고자 하는데 그 발명의 착안점이 있다.
본 발명은 기존 개방형 앱 배포 방식과 비교되는, 3가지 보안 요구사항(예: 앱의 무결성, 앱 개발자 인증, 서비스 호환성)을 정의하여야 한다.
① 앱의 무결성
: 앱 마켓으로부터 사용자 스마트폰으로 전송되어 설치되는 앱은, 악의적인 해커에 의해 위조되거나 변경되어서는 안된다. 즉, 마켓에 저장되는 과정 또는 스마트폰으로 전송되는 과정에서 변경되어서는 안된다. 정상적으로 개발된 앱이라 할지라도, 해커는 악의적인 목적으로 해당 앱에 악성코드 등을 개발자 몰래 추가하여 배포할 수 있다. 따라서, 사용자 또는 앱 개발자는 앱의 무결성을 검증할 수 있어야 한다.
② 앱 개발자 인증
: 개방형 앱 마켓(예: 안드로이드 마켓)의 가장 큰 특징은 누구나 앱을 개발하여 배포할 수 있다는 점이다. 즉, 해커도 앱 개발자가 될 수 있는 것이다. 따라서 앱 개발자가 누구인지, 정당한 개발자 인지를 사용자가 검증할 수 있는 방법이 마련되어야 한다.
③ 서비스 호환성
: 본 발명에 따른 앱 배포 방식은 기존 서비스와의 호환이 가능해야 하며, 구현이 용이하여야 한다. 또한 다양한 앱 마켓에서 사용가능하도록 확장성을 가져야 한다.
이러한 요구들을 만족시키기 위하여, 본 발명에서 가정되어야 할 사항은 다음과 같다.
첫째, 본 발명에 따른 앱 마켓은 개발자를 위한 코드서명용 인증서 발급기능을 갖는다. 즉, Certificate Authority 기능이 구현되어 있다. 이때 앱 마켓의 인증서는 국가 최상위인증기관 또는 공인인증기관으로부터 발급된다.
둘째, 본 발명에 따른 스마트폰은 앱 코드서명 검증 기능을 갖는다. 즉, 코드 서명값 검증, 인증서 검증 등 X.509 인증서를 이용한 전자서명 서비스 처리를 수행하는 기능이 사전에 설치되어 있어야 한다.
셋째, 본 발명에 따른 앱 마켓은 앱 소스 코드의 해쉬 값을 저장하는 해쉬 서버를 구비한다. 상기 해쉬 값은, 상기 소스 코드를 검증한 후, 앱 마켓에 생성된다. 이들 해쉬 값은 앱 마켓이 인증한 후, 상기 소스 코드가 수정되었는지 아닌지 여부를 확인하는데 사용된다.
이하, 본 발명의 바람직한 실시예를 도면을 참조하여 설명하면 다음과 같다.
도2는 본 발명에 따른 스마트폰 어플리케이션 배포 방법에 관한 흐름도이다.
도2에 도시된 바와 같이, 본 발명에 따른 스마트폰 어플리케이션 배포 방법은, 개발자의 요청에 따라 해당 앱 개발자(100)를 마켓에 등록하는 과정(S10)과, 정상적인 앱 개발자인 경우 마켓(200)이 앱 코드 서명용 인증서를 발급하는 과정(S20)과, 앱 개발이 완료되면 해당 앱을 마켓(200)에 전송하는 과정(S30)과, 마켓(200)이 상기 전송된 앱의 안전성 및 신뢰성 검증하는 과정(S40)과, 마켓이 상기 앱 소스코드의 해쉬값을 생성하여 해쉬 서버(210)에 저장(S50)하고 해당 개발자(100)에게 검증 완료를 통보하는 과정(S60)과, 개발자(100)가 상기 발급된 앱 코드 서명용 인증서를 이용하여 앱의 코드 서명을 생성하고 마켓(200)에 전송하는 과정(S70)과, 상기 마켓(200)에 전송된 코드 서명값을 상기 해쉬 서버(210)에 저장해 둔 해쉬값과 비교하는 과정(S80)과, 상기 비교결과, 코드 서명이 동일한 것으로 검증되면 해당 앱을 마켓 서버에 등록(배포)하는 과정(S90)과, 이후, 사용자의 다운로드 요청이 마켓에 수신되면, 상기 앱을 해당 스마트폰(300)으로 다운로드하는 과정(S100)과, 상기 스마트폰(300)에서, 상기 발급된 코드 서명 인증서를 이용하여 앱의 코드 서명을 검증하는 과정(S110)과, 상기 코드 서명의 무결성이 검증되면 해당 앱을 스마트폰(300)에 설치하는 과정(S120)을 포함하여 구성된다.
도면을 참조하여 본 발명에 따른 스마트폰 어플리케이션 배포 방법을 보다 상세히 설명하면 다음과 같다.
도2에 도시된 바와 같이, 개발자(100)는 자신의 앱을 등록하고자 하는 마켓(200)에 개발자 등록을 신청한다.(S10) 개발자 등록을 위해 개발자(100)는 자신의 이름, 연락처 등 개발자 신원확인에 필요한 정보를 마켓(200)에 제공하고, 마켓(200)은 상기 개발자 신원정보의 검증절차를 통해 해당 정보의 진정성을 검증한 후, 정상적인 개발자인 경우 앱 코드 서명용 인증서를 발급해준다.(S20)
이때, 마켓(200)은 개발자에게 신원증명을 위해, 소셜 시큐리티 넘버, e-메일 주소 등과 같은 개인 정보를 요구할 수 있으며, 신뢰할 수 있는 방법을 이용하여 개발자의 신원을 확인해야 한다.
그리고, 개발자의 신원이 확인되면, 마켓(200)은 개발자를 위한 코드 서명 인증서를 발행할 수 있다. 이때, 인증서 형태는 X.509 인증서 프로파일을 준용하며, 다음과 같이 정의된다.
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
extensions [3] EXPLICIT Extensions OPTIONAL
}
코드 서명용 인증서는, 익스텐션(Extension) 중 ExtendedKeyUsage 필드가 코드 서명(code signing)으로 설정되어야 한다.
앱의 개발과 배포 과정(S30~S90)은 코드 서명기술을 이용하여 개발된 소프트웨어의 인증을 위한 절차이다.
우선, 소프트웨어 개발이 완료되면, 개발자(100)는 개발된 앱을 마켓(200)에 올리고(S30), 마켓(200)을 통해 앱 소스코드의 취약점 등을 사전에 검증받아야 한다.
마켓(200)은 개발자(100)가 앱을 올리면, 앱 코드 서명의 인증절차를 수행한 후 앱 소스코드의 취약점, 악성코드 포함여부 등을 철저히 확인한다. (S40)
상기 앱 코드 서명의 인증이 완료된 후, 마켓(200)은 앱 소스의 해쉬 값을 생성하고 마켓 시스템의 해쉬 서버(210)에 저장한다.(S50) 상기 해쉬 값은 인증이 이루어진 후에 앱의 소스코드가 수정되었는지 여부를 체크한다. 그리고 마켓(200)은 앱의 인증 결과를 개발자(100)에게 전달한다. (S60)
상기 앱 인증 결과가 '통과(pass)'를 의미하는 것이면, 개발자(100)는 앱의 코드 서명을 생성한다. 이때 상기 앱의 코드 서명은 Length필드와 SignatureBlock 필드를 포함한다.
도3은 본 발명에 따른 코드 서명 S/W의 구조에 관한 예시도이다.
도3에 도시된 바와 같이, 상기 Length필드는 32비트로 표현되면 코드 서명의 길이를 나타내고, 배포하고자 하는 software 바로 다음에 붙어서 length 및 flag를 포함한 서명값의 길이를 알려준다. 상기 Flag는 Length필드와 signature block필드를 구분하는 식별자로 고정된 값을 설정하여 사용할 수 있다.
PKCS#7 SignedData 형태를 준용한 Signature block은 다음과 같이 구성된다.
[PKCS#7]
SignedData ::= SEQUENCE {
version Version,
digestAlgorithm DigestAlgorithm Identifiers,
contentInfo ContentInfo,
certificates [0] IMPLICIT
ExtendedCertificatesAndCertificates OPTIONAL,
crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
signerInfos SignerInfos}
상기 digestAlgorithm은 SHA-256처럼 앱 소스 코드의 해쉬에 관한 해쉬 알고리즘이다. 상기 contentInfo는 서명된 내용(content)이며 개발자의 개인키를 이용하여 생성될 수 있다. 이는 개발자가 소스코드의 해쉬 값을 자신의 개인키로 암호화하다는 의미이며 아래와 같이 정의될 수 있다.
contentInfo = EPR developer ( Hash ( App ))
여기서, 상기 'E'의 의미는 공개키 암호화를 의미하고, 상기 PRdeveloper는 개발자의 개인키를 의미한다. 그리고 상기 Hash(App)는 digestAlgorithm을 이용하는 앱의 해쉬값이다.
그리고 상기 certificate는 인증서들에 관한 설정이다. 최상위 신뢰기관 인증서에서부터 signerInfos필드의 서명인까지의 체인(Chain)을 담기에 충분하다. 상기 crls는 인증서 폐지 리스트에 관한 설정이다. 상기 signerInfo는 per-signer정보의 수집을 포함할 수 있다.
상기 공개키는 PKI(Public Key Infrastructure)를 의미하며, PKI는 공개키 알고리즘을 통한 암호화 및 전자서명을 제공하기 위한 복합적인 보안 시스템 환경을 말한다. 즉, 암호화와 복호화키로 구성된 공개키를 이용해 송수신 데이터를 암호화하고 디지털 인증서를 통해 사용자를 인증하는 시스템을 말한다.
공개키 방식은 데이터를 암호화하고 이를 다시 풀 수 있는 열쇠가 다르기 때문에 거의 완벽한 데이터 보안이 가능하고 정보 유출의 가능성은 그만큼 적어진다. 공개키 암호의 상용화를 위해서는 무엇보다 키의 생성과 인증이 필요하며 이런 것들의 분배와 안전한 관리를 위한 체계가 필요한데, 이런 시스템을 PKI라 하는 것이다.
이후, 개발자(100)로부터 상기 서명 데이터가 수신되면(S70), 앱 마켓(200)은 앱의 무결성을 검증해야 한다.
앱 마켓(200)은 무결성 검증을 위해, 아래와 같이 해당 앱(Appi)의 해쉬값을 가지고 있는 해쉬 서버(210)를 이용할 수 있다. (S80)
HashAppi ?= DPUdeveloper (contentInfo)
상기 'D'는 개발자의 공개키(PUdeveloper)를 이용하는 복호화 알고리즘을 의미하고, 상기 contentInfo는 개발자로부터 보내진 SignedData에 포함된다.
앱 마켓(200)은 개발자(100)로부터 전송된 코드 서명에서 개발자 공개키를 추출하고 복호화하여 앱의 해쉬값을 검출한다. 그리고, 검출된 앱의 해쉬값을 상기 해쉬 서버(210)에 저장된 해쉬 값과 비교하고, 두 해쉬 값이 서로 동일하면, 해당 앱(Appi)을 마켓(200, 서버)상에 배포한다. (S90)
일단, 개발자(100)의 앱이 마켓(200)에 배포되면 일정 기간 홍보를 거치며 사용자들에게 알려지며, 해당 앱 사용을 원하는 사용자는 앱 마켓(200)으로부터 코드 서명된 앱을 자신의 스마트폰(300)으로 다운로드한다.(S100)
앱의 다운로드가 완료되면, 스마트폰(300)은 앱 배포자 인증서로부터 공개키를 추출한 후 이를 키값으로 하여 코드 서명값을 복호화한다. 그리고 코드 서명값이 복호화되면, 앱을 해쉬화하여 생성된 앱 해쉬값과 상기 복호화값이 일치하는지 확인하는 절차를 통해 앱의 무결성을 확인할 수 있다. (S110) 또한, 이와 같은 앱 배포자 인증서의 검증 절차를 통해, 사용자는 해당 앱 배포자 인증서의 발급기관이 앱 마켓임을 확인할 수 있고, 이를 통해 앱 배포자가 마켓(200)으로부터 확인된 올바른 개발자인지 여부를 알 수 있다.
앱 배포자가 마켓(200)으로부터 확인된 올바른 개발자인 것으로 확인되면, 사용자는 스마트폰(300)에 해당 앱을 인스톨한다. (S120)
위의 3단계(S100 ~ S120)를 거쳐 확인된 앱은 스마트폰(300)에 설치되어 사용된다. 이미 설치된 앱의 업그레이드 과정인 경우에는 일부 단계들(S110 ~ S120)만으로 업그레이드 앱을 배포하고 설치할 수 있다.
하기 [표2]는 본 발명에 따른 개방형 앱 배포방식과 기존 개방형 앱 마켓(예: 안드로이드)의 배포방식과의 주요 차이점을 나타낸 것이다.
구분 안드로이드 제안방식
소스코드검증 검증절차 미비 마켓자체 검증 강화
개발자 검증 불가능 개발자 인증서 검증을 통해 가능
코드 서명 자체서명 마켓에서 개발자에게 발급된 인증서를 통한 서명
앱 변조 가능성 높음 불가능
상기 [표2]에 나타난 바와 같이, 본 발명에 따른 앱 배포방식은 코드 서명 기술을 활용하여 앱의 위조나 수정 여부를 확인할 수 있다. 또한, 앱 코드 서명에 사용된 개발자 인증서 검증을 통해 개발자의 신원을 확인할 수 있다.
본 발명은 개방형 앱 배포 방식에서 요구되는 보안사항(예: 앱의 무결성, 앱 개발자 인증, 서비스 호환성)을 모두 만족시킨다.
앱의 무결성의 경우, 앱이 중간에 악의적인 목적으로 변조되는 것을 막고자 하는 것인데, 본 발명에 따른 코드서명 기술은 중간에 코드가 변경되는 경우 서명 검증이 불가능해지므로, 코드의 무결성을 확인할 수 있다.
앱 개발자 인증의 경우, 본 발명은 앱 마켓에서 개발자에게 발급되는 인증서 검증을 통해 가능하도록 하였다. 개발자가 인증서를 발급받기 위해서는 적절한 신원확인정보를 마켓에 제공하여야 하며, 본 발명에 따른 마켓은 이를 확인한 후 개발자에게 인증서를 발급한다. 그리고 본 발명에 따른 사용자는 개발자 인증서를 검증하기 위해 개발자인증서<->마켓인증서<->최상위 신뢰기관(또는 공인인증기관) 인증서 체인을 확인함으로 개발자의 신원을 확인할 수 있다.
서비스 호환성의 경우, 본 발명에 따른 코드서명 방식은 이미 전 세계적으로 널리 사용되고 있는 X.509 전자서명 인증체계를 채용하였고, 이는 인터넷 익스플로러의 ActiveX등에서도 사용되고 있는 기술이다. 또한, 최근 스마트폰의 성능이 비약적으로 향상됨에 따라 스마트폰 자체적으로 전자서명을 생성하고 검증하는 기능이 다양한 어플리케이션에서 사용되고 있어, 높은 호환성을 유지할 수 있다.
본 발명은 도면에 도시된 실시 예(들)를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형이 이루어질 수 있으며, 상기 설명된 실시예(들)의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
이상에서 설명한 바와 같이, 본 발명은 기존 앱 검증체계의 안전성과 신뢰성 향상을 위해 코드서명 기술을 활용한 앱 검증 체계를 구현하였다. X.509 인증서를 사용한 본 발명의 전자서명 기술은 서명문의 무결성은 물론, 서명자 인증 기능을 함께 제공한다. 스마트폰의 보안 위협이 앱스토어에 집중되고 있는 최근의 문제점을 해결할 수 있는 가장 좋은 해결책은 앱 자체의 신뢰도를 향상시키는 것이다. 앱이 의도하지 않은 악성 코드를 포함하지 않고, 악의적인 해커에 의해 개발된 앱이 아님을 확인할 수 있는 것만으로 앱스토어의 취약점은 해결될 수 있다. 따라서, 본 발명에 따른 앱 배포방식은 앱스토어의 안전성을 증대시키는데 활용될 수 있을 것으로 기대한다.
100: 개발자
200: 앱 마켓
210: 해쉬 서버
300: 스마트폰

Claims (6)

  1. 개발자의 요청에 따라 해당 앱 개발자를 마켓에 등록하는 과정과;
    정상적인 앱 개발자인 경우 마켓이 앱 코드 서명용 인증서를 발급하는 과정과;
    앱 개발이 완료되면 해당 앱을 마켓에 전송하는 과정과;
    마켓이 상기 전송된 앱의 안전성 및 신뢰성 검증하는 과정과;
    마켓이 상기 앱 소스코드의 해쉬값을 생성하여 해쉬 서버에 저장하고 해당 개발자에게 검증 완료를 통보하는 과정과;
    개발자가 상기 발급된 앱 코드 서명용 인증서를 이용하여 앱의 코드 서명을 생성하고 마켓에 전송하는 과정과;
    상기 마켓에 전송된 코드 서명값을 상기 해쉬 서버에 저장해 둔 해쉬값과 비교하는 과정과;
    상기 비교결과, 코드 서명이 동일한 것으로 검증되면 해당 앱을 마켓 서버에 등록하는 과정과;
    이후, 사용자의 다운로드 요청이 마켓에 수신되면, 상기 앱을 해당 스마트폰으로 다운로드하는 과정과;
    상기 스마트폰에서, 상기 발급된 코드 서명 인증서를 이용하여 앱의 코드 서명을 검증하는 과정과;
    상기 코드 서명의 무결성이 검증되면 해당 앱을 스마트폰에 설치하는 과정을 포함하여 구성되는 것을 특징으로 하는 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법.
  2. 제1항에 있어서, 상기 등록과정은
    개발자가 자신의 이름, 연락처 등 개발자 신원확인에 필요한 정보를 마켓에 전송하여 앱 개발자 등록을 신청하는 과정과;
    상기 신청에 따라 마켓이 상기 개발자 신원정보의 검증절차를 수행하는 과정으로 이루어지는 것을 특징으로 하는 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법.
  3. 제1항에 있어서, 상기 앱 코드 서명용 인증서는
    X.509인증서 프로파일을 준용하여 발급되는 것을 특징으로 하는 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법.
  4. 제1항에 있어서, 상기 앱의 코드 서명을 생성하고 마켓에 전송하는 과정은
    앱의 허쉬 값에 있는 개발자의 개인키를 이용하여 공개키 암호화값을 생성하는 과정과;
    상기 생성된 공개키 암호화 값을 코드 서명의 소정 필드에 저장하고 코드 서명을 마켓에 전송하는 과정을 포함하여 이루어지는 것을 특징으로 하는 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법.
  5. 제1항에 있어서, 상기 해쉬값들을 비교하는 과정은
    상기 전송된 코드 서명에서 개발자 공개키를 추출하여 복호화하여 앱의 해쉬값을 검출하는 과정과;
    상기 검출된 앱의 해쉬값을 상기 해쉬 서버에 저장해 둔 해쉬값과 비교하는 과정으로 이루어지는 것을 특징으로 하는 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법.
  6. 제1항에 있어서, 상기 스마트폰에서, 앱의 코드 서명을 검증하는 과정은
    앱의 다운로드가 완료되면, 앱 배포자 인증서로부터 공개키를 추출한 후 이를 키값으로 하여 코드 서명값을 복호화하는 과정과;
    상기 복호화된 코드 서명값과 앱 해쉬값을 비교하는 것으로 앱의 무결성을 확인하는 과정으로 이루어지는 것을 특징으로 하는 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법.
KR1020120019911A 2012-02-27 2012-02-27 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법 KR20130100032A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120019911A KR20130100032A (ko) 2012-02-27 2012-02-27 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120019911A KR20130100032A (ko) 2012-02-27 2012-02-27 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법

Publications (1)

Publication Number Publication Date
KR20130100032A true KR20130100032A (ko) 2013-09-09

Family

ID=49451055

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120019911A KR20130100032A (ko) 2012-02-27 2012-02-27 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법

Country Status (1)

Country Link
KR (1) KR20130100032A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190035053A (ko) * 2017-09-26 2019-04-03 주식회사 에이텍에이피 금융 자동화 기기
CN109977662A (zh) * 2019-03-01 2019-07-05 晋商博创(北京)科技有限公司 应用程序的处理方法、装置、终端及存储介质
CN112163224A (zh) * 2020-10-22 2021-01-01 南方电网科学研究院有限责任公司 一种安卓软件完整性校验方法和装置
CN113177200A (zh) * 2021-03-18 2021-07-27 深圳市电子商务安全证书管理有限公司 应用程序包的管理方法、装置、计算机设备和存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190035053A (ko) * 2017-09-26 2019-04-03 주식회사 에이텍에이피 금융 자동화 기기
CN109977662A (zh) * 2019-03-01 2019-07-05 晋商博创(北京)科技有限公司 应用程序的处理方法、装置、终端及存储介质
CN112163224A (zh) * 2020-10-22 2021-01-01 南方电网科学研究院有限责任公司 一种安卓软件完整性校验方法和装置
CN113177200A (zh) * 2021-03-18 2021-07-27 深圳市电子商务安全证书管理有限公司 应用程序包的管理方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
US20240007308A1 (en) Confidential authentication and provisioning
US9838205B2 (en) Network authentication method for secure electronic transactions
US8112787B2 (en) System and method for securing a credential via user and server verification
CN101145906B (zh) 对单向网络中的接收终端进行合法性认证的方法及系统
EP2999189B1 (en) Network authentication method for secure electronic transactions
US9281949B2 (en) Device using secure processing zone to establish trust for digital rights management
US20190028281A1 (en) Remote attestation of a security module&#39;s assurance level
CN101828357B (zh) 用于证书提供的方法和装置
CN109639427B (zh) 一种数据发送的方法及设备
CN110401615B (zh) 一种身份认证方法、装置、设备、系统及可读存储介质
CN106452764B (zh) 一种标识私钥自动更新的方法及密码系统
KR101744747B1 (ko) 휴대 단말기, 단말기 및 보안쿠키를 이용한 인증 방법
CN107733636B (zh) 认证方法以及认证系统
TWI526871B (zh) Server, user device, and user device and server interaction method
US20100211772A1 (en) Collaborative Reconciliation of Application Trustworthiness
CN111435390A (zh) 一种配电终端运维工具安全防护方法
Alzomai et al. The mobile phone as a multi OTP device using trusted computing
KR20130100032A (ko) 코드 서명 기법을 이용한 스마트폰 어플리케이션 배포 방법
KR102053993B1 (ko) 인증서를 이용한 사용자 인증 방법
KR101271464B1 (ko) 이중 인증 시스템의 비밀키 암호화 방법
CN104580161A (zh) 一种基于安全标识文件的软件实名认证方法和装置
TWI746504B (zh) 實現會話標識同步的方法及裝置
EP2958265B1 (en) Revocation of a root certificate stored in a device
KR20120093594A (ko) 공인인증서와 키수열발생기로 생성되는 opt를 이용한 트렌젝션보호 시스템 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application