KR20160124598A - 프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법 - Google Patents

프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법 Download PDF

Info

Publication number
KR20160124598A
KR20160124598A KR1020150055481A KR20150055481A KR20160124598A KR 20160124598 A KR20160124598 A KR 20160124598A KR 1020150055481 A KR1020150055481 A KR 1020150055481A KR 20150055481 A KR20150055481 A KR 20150055481A KR 20160124598 A KR20160124598 A KR 20160124598A
Authority
KR
South Korea
Prior art keywords
electronic device
source code
server
result
sub
Prior art date
Application number
KR1020150055481A
Other languages
English (en)
Other versions
KR102317471B1 (ko
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 KR1020150055481A priority Critical patent/KR102317471B1/ko
Publication of KR20160124598A publication Critical patent/KR20160124598A/ko
Application granted granted Critical
Publication of KR102317471B1 publication Critical patent/KR102317471B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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/002Countermeasures against attacks on cryptographic mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

서버의 제어 방법이 개시된다. 본 발명에 의한 서버의 제어 방법은, 전자 장치로부터 소스 코드를 암호화한 암호문을 수신하는 동작, 상기 암호문에 대하여 동형 연산을 수행하는 동작, 상기 동형 연산 결과에 대하여, 악성 코드를 포함하는지 여부를 판별하기 위한 판별 알고리즘을 적용하는 동작 및 상기 판별 알고리즘의 적용 결과를 복호화하여, 상기 전자 장치로부터 수신된 소스 코드가 악성 코드인지 여부를 판단하는 동작을 포함할 수 있다.

Description

프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법 {ELECTRONIC APPARATUS FOR DETERMINING WHETHER PROGRAM COMPRISES MALICIOUS CODE AND METHOD FOR CONTROLLING THEREOF}
본 발명은 프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법에 관한 것으로, 더욱 상세하게는 어플리케이션 마켓 등에 등록 요청을 받은 프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법에 관한 것이다.
근자에 들어서, 악성 코드를 판단하는 다양한 프로그램의 개발이 활발하게 진행되고 있다. 악성 코드는 전자 장치가, 웹페이지를 검색할 때, P2P(peer to peer) 서비스를 이용할 때, 셰어웨어를 사용할 때, 불법복제 프로그램을 사용할 때, 내부자(해커)가 직접 설치할 때 또는 전자우편의 첨부파일 또는 메신저 파일을 열 때 전자 장치에 침투할 수 있다. 악성 코드는, 전자 장치로 하여금, 네트워크 트래픽 발생, 시스템 성능 저하, 파일 삭제, 이메일 자동발송, 개인 정보 유출, 원격 제어 등의 기능을 수행하도록 한다. 이에 따라, 전자 장치의 성능 저하 및 개인 정보 유출 등의 보안 관련 문제가 발생할 수 있다.
종래의 전자 장치는, 프로그램을 정적 분석하고, 정적 분석 결과를 이용하여 프로그램이 악성 코드를 포함하는지 여부를 판단하였다. 프로그램 정적 분석은 테스팅의 제한된 커버리지를 보완하며 프로그램 오류 탐지 및 최적화 등에 사용될 수 있다. 예를 들어, 프로그램 정적 분석은 프로그램으로부터 실행성질에 관련된 일련의 제약식을 도출하고 그 제약식을 만족하는 해를 찾는 방식으로 수행될 수 있다.
프로그램 정적 분석은, 분석기 또는 대상 프로그램 중 하나가 노출되어야 하는 문제점을 가진다. 예를 들어, 어플리케이션 마켓 측에서 프로그램 정적 분석을 수행하는 경우에는, 업로드할 프로그램이 어플리케이션 마켓 측에 노출됨에 따라서 프로그램 개발자의 지적재산권이 침해될 소지가 있다. 또는, 프로그램 개발자 측에서 프로그램 정적 분석을 수행하는 경우에는, 정적 분석을 위한 분석기가 노출됨에 따라서 보안 문제가 발생하며, 아울러 프로그램 개발자 측에서 제출한 정적 분석 수행 결과를 신뢰할 수 없다는 문제점이 발생한다. 특히, 분석 메커니즘이 유출되는 경우에, 악성 코드 탐지가 회피 가능하는 문제점이 발생할 수 있다.
본 발명은 상술한 문제점 또는 다른 문제점을 해결하기 위하여 안출된 것으로, 어플리케이션 마켓 측에서 암호화된 코드를 이용하여 정적 분석을 수행함으로써 대상 프로그램이 프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법을 제공할 수 있다.
본 발명의 다양한 실시예에서, 서버의 제어 방법은, 전자 장치로부터 소스 코드를 암호화한 암호문을 수신하는 동작; 상기 암호문에 대하여 동형 연산을 수행하는 동작; 상기 동형 연산 결과에 대하여, 악성 코드를 포함하는지 여부를 판별하기 위한 판별 알고리즘을 적용하는 동작; 및 상기 판별 알고리즘의 적용 결과를 복호화하여, 상기 전자 장치로부터 수신된 소스 코드가 악성 코드인지 여부를 판단하는 동작을 포함할 수 있다.
본 발명의 다양한 실시예에서, 전자 장치와 통신을 수행하는 서버는, 전자 장치로부터 소스 코드를 암호화한 암호문을 수신하는 통신 모듈; 및 상기 암호문에 대하여 동형 연산을 수행하고, 상기 동형 연산 결과에 대하여, 악성 코드를 포함하는지 여부를 판별하기 위한 판별 알고리즘을 적용하고, 상기 판별 알고리즘의 적용 결과를 복호화하여, 상기 전자 장치로부터 수신된 소스 코드가 악성 코드인지 여부를 판단하는 프로세서를 포함할 수 있다.
본 발명의 다양한 실시예에 의하여, 암호화된 코드를 이용하여 정적 분석을 수행함으로써 대상 프로그램이 프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법이 제공될 수 있다. 이에 따라, 어플리케이션 마켓 측에서 프로그램 정적 분석을 수행하는 경우에도, 업로드할 프로그램이 어플리케이션 마켓 측에 노출되지 않아 프로그램 개발자의 지적재산권이 보호될 수 있다.
도 1은 본 발명의 다양한 실시예에 의한 블록도를 도시한다.
도 2는 본 발명의 다양한 실시예에 의한 전자 장치 및 서버의 동작의 흐름도를 도시한다.
도 3a 내지 3c는 본 발명의 다양한 실시예에 의한 악성 코드 판단을 위한 소스 코드 추출 방법의 흐름도를 도시한다.
도 4는 본 발명의 다양한 실시예에 따른 서버의 동작의 흐름도를 도시한다.
도 5는 본 발명의 다양한 실시예에 따른 서버의 동작의 흐름도를 도시한다.
도 6은 본 발명의 다양한 실시예에 의한 평문에서의 정적 분석 방법의 흐름도를 도시한다.
도 7은 본 발명의 다양한 실시예에 의한 평문에서의 정적 분석 방법의 개념도를 도시한다.
도 8은 평문을 암호화한 암호문에서의 정적 분석 과정을 설명하는 흐름도를 도시한다.
도 9a 및 9b는 본 발명의 다양한 실시예에 의한 복호화 과정을 설명하기 위한 흐름도를 도시한다.
이하, 본 문서의 다양한 실시예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 문서의 실시예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 문서에서 사용된 "제 1," "제 2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 예를 들면, 제 1 사용자 기기와 제 2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 문서에 기재된 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 바꾸어 명명될 수 있다.
어떤 구성요소(예: 제 1 구성요소)가 다른 구성요소(예: 제 2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제 3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제 1 구성요소)가 다른 구성요소(예: 제 2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)," "~하는 능력을 가지는(having the capacity to)," "~하도록 설계된(designed to)," "~하도록 변경된(adapted to)," "~하도록 만들어진(made to)," 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 다른 실시예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 문서에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 문서에 사용된 용어들 중 일반적인 사전에 정의된 용어들은, 관련 기술의 문맥상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 문서의 실시예들을 배제하도록 해석될 수 없다.
본 문서의 다양한 실시예들에 따른 전자 장치는, 예를 들면, 스마트폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 영상 전화기, 전자책 리더기(e-book reader), 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), 워크스테이션(workstation), 서버, PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera), 또는 웨어러블 장치(wearable device) 중 적어도 하나를 포함할 수 있다. 다양한 실시예에 따르면, 웨어러블 장치는 액세서리형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈, 또는 머리 착용형 장치(head-mounted-device(HMD)), 직물 또는 의류 일체형(예: 전자 의복), 신체 부착형(예: 스킨 패드(skin pad) 또는 문신), 또는 생체 이식형(예: implantable circuit) 중 적어도 하나를 포함할 수 있다.
어떤 실시예들에서, 전자 장치는 가전 제품(home appliance)일 수 있다. 가전 제품은, 예를 들면, 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), 홈 오토매이션 컨트롤 패널(home automation control panel), 보안 컨트롤 패널(security control panel), TV 박스(예: 삼성 HomeSyncTM, 애플TVTM, 또는 구글 TVTM), 게임 콘솔(예: XboxTM, PlayStationTM), 전자 사전, 전자 키, 캠코더(camcorder), 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시예에서, 전자 장치는, 각종 의료기기(예: 각종 휴대용 의료측정기기(혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 또는 초음파기 등), 네비게이션(navigation) 장치, 위성 항법 시스템(GNSS(global navigation satellite system)), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치, 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛(head unit), 산업용 또는 가정용 로봇, 금융 기관의 ATM(automatic teller's machine), 상점의 POS(point of sales), 또는 사물 인터넷 장치(internet of things)(예: 전구, 각종 센서, 전기 또는 가스 미터기, 스프링클러 장치, 화재경보기, 온도조절기(thermostat), 가로등, 토스터(toaster), 운동기구, 온수탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다.
어떤 실시예에 따르면, 전자 장치는 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 수신 장치(electronic signature receiving device), 프로젝터(projector), 또는 각종 계측 기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시예에서, 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 어떤 실시예에 따른 전자 장치는 플렉서블 전자 장치일 수 있다. 또한, 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않으며, 기술 발전에 따른 새로운 전자 장치를 포함할 수 있다.
이하, 첨부 도면을 참조하여, 다양한 실시예에 따른 전자 장치가 설명된다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다.
도 1은 본 발명의 다양한 실시예에 의한 블록도를 도시한다.
전자 장치(100)는 프로세서(110), 메모리(120) 및 통신 모듈(130)을 포함할 수 있다. 서버(210)는 통신 모듈(210) 및 프로세서(210)를 포함할 수 있다.
프로세서(110) 및 프로세서(220)는, 중앙처리장치(central processing unit(CPU)), 어플리케이션 프로세서(application processor(AP)), 또는 커뮤니케이션 프로세서(communication processor(CP)) 중 하나 또는 그 이상을 포함할 수 있다. 상기 프로세서(110) 및 프로세서(220)은, 예를 들면, 상기 전자 장치(100)의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다. 상기 프로세서(110) 및 프로세서(220)는 제어부(controller)라고 칭하거나, 상기 제어부를 그 일부로서 포함할 수도 있다.
메모리(120)는, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 상기 메모리(120)는, 예를 들면, 상기 전자 장치(100)의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 한 실시예에 따르면, 상기 메모리(120)는 소프트웨어 및/또는 프로그램을 저장할 수 있다. 상기 프로그램은, 예를 들면, 커널, 미들웨어, 어플리케이션 프로그래밍 인터페이스(application programming interface(API)), 및/또는 어플리케이션 프로그램(또는 “어플리케이션”) 등을 포함할 수 있다. 상기 커널, 미들웨어, 또는 API의 적어도 일부는, 운영 시스템(operating system(OS))라 불릴 수 있다.
통신 모듈(130) 및 통신 모듈(210)은, 예를 들면, 상기 전자 장치(100)와 외부 장치 간의 통신을 설정할 수 있다. 예를 들면, 상기 통신 모듈(130) 및 통신 모듈(210)은 무선 통신 또는 유선 통신을 통해서 네트워크에 연결되어 상기 외부 장치와 통신할 수 있다.
상기 무선 통신은, 예를 들면, 셀룰러 통신 프로토콜로서, 예를 들면, LTE, LTE-A, CDMA, WCDMA, UMTS, WiBro, 또는 GSM 등 중 적어도 하나를 사용할 수 있다. 상기 유선 통신은, 예를 들면, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard 232), 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 상기 네트워크는 통신 네트워크(telecommunications network), 예를 들면, 컴퓨터 네트워크(computer network)(예: LAN 또는 WAN), 인터넷, 또는 전화 망(telephone network) 중 적어도 하나를 포함할 수 있다.
본 발명의 다양한 실시예에서, 메모리(120)는 제작된 프로그램이 저장될 수 있다. 프로세서(110)는 저장된 프로그램을 암호화하여 암호문을 생성할 수 있다. 통신 모듈(130)은 생성된 암호문을 서버(200) 측의 통신 모듈(210)로 송신할 수 있다.
본 발명의 다양한 실시예에서, 통신 모듈(210)은 전자 장치로부터 소스 코드를 암호화한 암호문을 수신할 수 있다. 프로세서(220)는 상기 암호문에 대하여 동형 연산을 수행하고, 상기 동형 연산 결과에 대하여, 악성 코드를 포함하는지 여부를 판별하기 위한 판별 알고리즘을 적용하고, 상기 판별 알고리즘의 적용 결과를 복호화하여, 상기 전자 장치로부터 수신된 소스 코드가 악성 코드인지 여부를 판단할 수 있다.
본 발명의 다양한 실시예에서, 상기 소스 코드는 포인터 조작이 가능한 소스 코드 및 집합 제약식에 대응하는 소스 코드 중 적어도 하나를 포함할 수 있다.
본 발명의 다양한 실시예에서, 상기 암호문은, 상기 소스 코드의 변수 및 변수의 주소 집합 사이의 관계를 나타내는 복수 개의 서브 암호문을 포함할 수 있다.
본 발명의 다양한 실시예에서, 상기 프로세서(220)는, 상기 복수 개의 서브 암호문 사이의 합집합 연산 및 곱연산을 수행할 수 있다.
본 발명의 다양한 실시예에서, 상기 프로세서(220)는, 상기 합집합 연산 및 상기 곱연산을 기설정된 임계 횟수를 초과하여 수행하였는지를 판단할 수 있다.
본 발명의 다양한 실시예에서, 상기 프로세서(220)는, 상기 합집합 연산 및 상기 곱연산의 수행 횟수가 기설정된 임계 횟수 이하인 경우에는, 상기 복수 개의 서브 암호문을 변경하여 변경된 복수 개의 서브 암호문에 대하여 합집합 연산 및 곱연산을 수행할 수 있다.
본 발명의 다양한 실시예에서, 상기 프로세서(220)는, 상기 합집합 연산 및 상기 곱연산의 수행 횟수가 기설정된 임계 횟수 초과인 경우에는, 상기 판별 알고리즘을 적용할 수 있다.
본 발명의 다양한 실시예에서, 상기 판별 알고리즘은, 상기 복수 개의 서브 암호문 중 변수 및 포인터에 의한 주소 집합 사이의 포함 관계에 대응하는 서브 암호문의 값에 따라서 상기 소스 코드가 악성 코드인지 여부를 판별할 수 있다.
본 발명의 다양한 실시예에서, 상기 프로세서(220)는, 상기 전자 장치와 협력하여 상기 적용 결과를 복호화할 수 있다.
본 발명의 다양한 실시예에서, 상기 통신 모듈(210)은, 상기 전자 장치로부터 상기 적용 결과에 대한 제 1 부분 복호화 결과를 수신하고, 상기 프로세서는, 상기 적용 결과에 대한 제 2 부분 복호화를 수행하고, 상기 수신된 제 1 부분 복호화 결과 및 상기 제 2 부분 복호화 결과에 기초하여, 상기 수신된 소스 코드가 악성 코드인지 여부를 판단할 수 있다.
도 2는 본 발명의 다양한 실시예에 의한 전자 장치 및 서버의 동작의 흐름도를 도시한다.
여기에서, 전자 장치(100)는 프로그램을 작성한 개발자가 이용하는 전자 장치일 수 있다. 서버(200)는 개발자가 작성한 프로그램이 악성 코드를 포함하는지 여부를 판단하는 어플리케이션 마켓 측의 전자 장치일 수 있다. 예를 들어, 서버(200)는 악성 코드를 포함하지 않은 프로그램을 업로드할 수 있으며, 다른 전자 장치로부터 다운로드 요청이 수신되면 해당 프로그램을 송신하는 어플리케이션 마켓으로 구현될 수도 있다.
230 동작에서, 전자 장치(100)는 프로그램의 소스 코드 중 기설정된 조건을 만족하는 제 1 소스 코드 추출할 수 있다. 예를 들어, 전자 장치(100)는 개발자에 의하여 작성된 프로그램을 저장할 수 있다. 전자 장치(100)는 저장된 프로그램의 소스 코드 중 악성 코드와 관련된 제 1 소스 코드를 추출할 수 있다. 하나의 실시예에서, 전자 장치(100)는 프로그램의 소스 코드 중 포인터 조작과 관련되는 제 1 소스 코드를 추출할 수 있다. 또 다른 실시예에서, 전자 장치(101)는 집합제약식에 대응하는 제 1 소스 코드를 추출할 수 있다. 전자 장치(100)는 제 1 소스 코드에 대응하는 형태를 기설정된 조건으로서 미리 저장할 수 있으며, 프로그램의 소스 코드를 기설정된 조건과 비교하여, 기설정된 조건을 만족하는 제 1 소스 코드를 추출할 수 있다. 한편, 제 1 소스 코드가 포인터 조작과 관련되는 소스 코드이거나 또는 집합 제약식에 대응하는 소스 코드인 것은 단순히 예시적인 것으로, 본 발명의 다양한 실시예에 의한 전자 장치(100)는 악성 코드와 관련된 코드라면 제한없이 추출할 수 있다.
240 동작에서, 전자 장치(100)는 추출된 제 1 소스 코드를 암호화할 수 있다. 하나의 실시예에서, 전자 장치(100)는 추출된 제 1 소스 코드에 동형암호 알고리즘을 적용함으로써 암호문을 생성할 수 있다. 본 발명의 다양한 실시예에서, 전자 장치(100)는 완전동형암호(Fully Homomorphic Encryption) 알고리즘 또는 준동형암호(Somewhat Homomorphic Encryption) 알고리즘을 추출된 제 1 소스 코드에 적용함으로써 암호문을 생성할 수 있다. 하나의 실시예에서, 암호문은 암호화된 복수 개의 집합을 포함할 수 있으며, 이에 대하여서는 더욱 상세하게 후술하도록 한다.
250 동작에서, 전자 장치(100)는 암호문을 서버(200)로 송신할 수 있다. 본 발명의 다양한 실시예에서, 전자 장치(100)는 암호문을 서버(200)로 유선 또는 무선으로 송신할 수 있다. 또는, 전자 장치(100)는 암호문을 보호 경로를 통하여 서버(200)로 송신할 수도 있다.
260 동작에서, 서버(200)는 수신된 암호문에 대한 정적 분석을 수행할 수 있다. 하나의 실시예에서, 서버(200)는 암호문에 포함된 복수 개의 집합 중 적어도 두 개의 집합에 대한 합집합 연산 및 곱연산을 수행함으로써 정적 분석을 수행할 수 있으며, 이에 대하여서는 더욱 상세하게 후술하도록 한다.
270 동작에서, 서버(200)는 정적 분석 수행 결과에 판별 알고리즘을 적용할 수 있다. 판별 알고리즘은, 정적 분석 수행 결과가 악성 코드에 해당하는지를 판별하기 위한 알고리즘으로, 결과값은 암호화된 판단 결과일 수 있다.
280 동작에서, 서버(200)는 판별 알고리즘 적용 결과를 복호화하여, 악성 코드 여부를 판단할 수 있다. 하나의 실시예에서, 서버(200)는 전자 장치(100)와 협력하여 판별 알고리즘 적용 결과를 복호화할 수 있다. 예를 들어, 서버(200)는 전자 장치(100)와 복호화를 위한 비밀 키(key)를 공유할 수 있으며, 공유한 비밀 키를 이용하여 복호화를 수행할 수 있다. 서버(200)는 판별 알고리즘 적용 결과, 즉 암호화된 결과에 대하여 일부 복호화를 수행할 수도 있으며, 전자 장치(100)에 의하여 일부 복호화된 결과물과 서버(200)에 의하여 일부 복호화된 결과물을 함께 처리함으로써, 악성 코드가 포함되는지 여부를 판단할 수 있다.
도 3a 내지 3c는 본 발명의 다양한 실시예에 의한 악성 코드 판단을 위한 소스 코드 추출 방법의 흐름도를 도시한다.
도 3a를 참조하면, 310 동작에서, 전자 장치(100)는 프로그램의 소스 코드 중 기설정된 조건을 만족하는 제 1 소스 코드를 추출할 수 있다. 전자 장치(100)는 제작자에 의하여 작성된 프로그램의 소스 코드를 저장할 수 있다. 전자 장치(100)는 프로그램의 소스 코드를 라인별(line by line)로 기설정된 조건에 만족하는지 판단할 수 있다. 예를 들어, 전자 장치(100)는 악성 코드와 관련되는 적어도 하나의 조건을 미리 저장할 수 있다. 전자 장치(100)는 프로그램의 소스 코드 라인이 악성 코드와 관련되는 적어도 하나의 조건에 부합되는지를 판단함으로써, 제 1 소스 코드를 추출할 수 있다.
320 동작에서, 전자 장치(100)는 추출된 제 1 소스 코드를 암호화할 수 있다. 다양한 실시예에서, 전자 장치(100)는 제 1 소스 코드에 동형암호 알고리즘을 적용하여 암호문을 생성할 수 있다. 330 동작에서, 전자 장치(100)는 제 1 소스 코드에 대한 암호문을 서버(200)로 송신할 수 있다.
도 3b의 실시예에서는, 311 동작에서 전자 장치(100)는 프로그램의 소스 코드 중 포인터 조작이 가능한 제 1 소스 코드를 추출할 수 있다. 예를 들어, 악성 코드는 포인터 조작을 통하여, 최초에 설정된 포인터 목적지가 아닌 다른 목적지를 설정함으로써 허용되지 않은 논리 주소로의 억세스를 가능하게 할 수 있다. 이에 따라, 포인터 조작이 가능한 소스 코드는 악성 코드가 될 수 있는 가능성을 가지며, 본 발명의 다양한 실시예에에 의한 전자 장치(101)는 포인터 조작이 가능한 소스 코드를 제 1 소스 코드로서 추출할 수 있다. 특히, 포인터 분석은 어떤 포인터 참조가 실행 중 어느 변수 또는 저장소를 가리킬 수 있는지 분석하는 것이므로, 여러 분석의 기본이되는 분석으로 컴파일러 최적화 혹은 널 참조(null dereference) 오류를 탐지하는데도 사용될 수 있다.
한편, 320 동작 및 330 동작에 대하여서는 도 3a를 참조하여 설명하였기 때문에, 여기에서의 설명은 생략하도록 한다.
도 3c의 실시예에서는, 312 동작에서 전자 장치(101)는 프로그램의 소스 코드 중 집합 제약식에 대응하는 제 1 소스 코드 추출할 수 있다. 예를 들어, 전자 장치(101)는 표 1과 같은 집합 제약식에 대응하는 제 1 소스 코드를 추출할 수 있다.
Figure pat00001
표 1에서, pt는 각 포인터 변수가 가리킬 수 있는 주소 집합을 나타내는 함수일 수 있으며, 포인터 분석에서의 분석 대상일 수 있다. 예를 들어, 제약식
Figure pat00002
은, 변수 xj는 변수 xi가 가리킬 수 있는 주소 집합에 포함될 수 있음을 나타낼 수 있다. 아울러, 제약식
Figure pat00003
에 대응하는 명령어는 xi :=&xj로 설정될 수 있다. 전자 장치(100)는 제약식
Figure pat00004
에 대응하는 제 1 소스 코드를 프로그램 전체의 소스 코드 중에서 추출할 수 있다. 한편, 제약식
Figure pat00005
에 대응하는 명령어를 "new" 명령어로 명명할 수도 있다.
한편, 표 1에서와 같이, 본 발명의 다양한 실시예에 의한 전자 장치(100)는
Figure pat00006
,
Figure pat00007
,
Figure pat00008
에 대응하는 소스 코드를 제 1 소스 코드로 추출할 수 있다. 표 1의 i, j, k는 다른 변수를 나타내기 위한 인덱스로 이용될 수 있다.
Figure pat00009
,
Figure pat00010
,
Figure pat00011
각각에 대응하는 명령어는, 표 1에서와 같이 xi:=xj, xi:=*xj, *xi:=xj일 수 있으며, 각각 "assign", "load", "store"로 명명될 수 있다.
상술한 바와 같이, 집합 제약식은 변수 별 가리키는 주소 집합을 의미할 수 있다. 이에 따라, 집합 제약식의 분석을 통하여 각 변수가 실행 중 어느 변수 또는 저장소를 가리킬 수 있는지를 분석할 수 있다. 전자 장치(101)는 집합 제약식의 분석을 통하여 악성 코드인지 여부를 판단할 수 있으며, 이에 따라 집합 제약식에 대응하는 소스 코드를 제 1 소스 코드로서 추출할 수 있다. 한편, 320 동작 및 330 동작에 대하여서는 도 3a를 참조하여 설명하였기 때문에, 여기에서의 설명은 생략하도록 한다.
이상에서는, 다양한 실시예에 따른 제 1 소스 코드를 추출하는 방법 및 암호화에 대하여 상술하였다. 이하에서는 서버(200) 측에서 암호화된 소스 코드를 처리하여 악성 코드 여부를 판단하는 구성에 대하여 설명하도록 한다.
도 4는 본 발명의 다양한 실시예에 따른 서버의 동작의 흐름도를 도시한다.
410 동작에서, 서버(200)는 전자 장치(100)로부터 제 1 소스 코드에 대한 암호문을 수신할 수 있다. 본 발명의 다양한 실시예에서, 제 1 소스 코드에 대한 암호문은 동형암호 알고리즘 적용 결과일 수 있으며, 제 1 소스 코드의 적어도 하나의 변수 각각에 대한 암호화된 집합을 포함할 수 있다.
420 동작에서, 서버(200)는 수신된 암호문에 대하여 동형 연산을 적용할 수 있다. 동형 연산은, 합집합 연산 및 곱연산 중 적어도 하나를 포함할 수 있으며, 평문에서의 변수 및 포인터에 의한 주소 집합 사이의 관계 해석에 대응하는 연산일 수 있다. 평문에서의 변수 관계 해석에 대응하는 동형 연산에 대하여서는 더욱 상세하게 후술하도록 한다.
430 동작에서, 서버(200)는 동형 연산 결과에 대하여 판별 알고리즘을 적용할 수 있다. 판별 알고리즘은, 정적 분석 수행 결과가 악성 코드에 해당하는지를 판별하기 위한 알고리즘으로, 결과값은 암호화된 판단 결과일 수 있다. 이에 따라, 서버(200)는 판단 결과가 암호화된 값을 획득할 수 있다.
440 동작에서, 서버(200)는 판별 알고리즘 적용 결과를 복호화하여, 악성 코드 여부를 판단할 수 있다. 본 발명의 다양한 실시예에서, 서버(200)는 제작자의 전자 장치(100)와 협력하여 복호화를 수행할 수도 있다. 또 다른 실시예에서는, 서버(200)는 단독으로 복호화를 수행할 수도 있다.
도 5는 본 발명의 다양한 실시예에 따른 서버의 동작의 흐름도를 도시한다.
510 동작에서, 서버(200)는 제 1 소스 코드에 대한 암호문을 수신할 수 있다. 본 발명의 다양한 실시예에서, 서버(200)는 각각이 변수 및 변수가 지정되는 주소 집합 중 적어도 하나에 대응하는 집합을 포함하는 암호문을 수신할 수 있다. 더욱 상세하게, 암호문의 집합 각각은 코딩된 값 또는 0의 값을 가질 수 있다.
520 동작에서, 서버(200)는 암호화된 적어도 두 집합에 대한 합집합 연산 및 곱연산을 수행할 수 있다. 본 발명의 다양한 실시예에서, 서버(200)는 임의의 적어도 두 집합을 선택할 수 있으며, 선택된 적어도 두 집합에 대하여 합집합 연산 및 곱연산을 수행할 수 있다.
530 동작에서, 서버(200)는 연산 수행 횟수가 기설정된 임계 횟수를 초과하는지 여부를 판단할 수 있다.
연산 수행 횟수가 기설정된 임계 횟수를 초과하는 것으로 판단되면, 540 동작에서 서버(200)는 수행 결과에 대한 판별 알고리즘을 적용할 수 있다. 550 동작에서, 서버(200) 판별 알고리즘 적용 결과를 복호화하여, 악성 코드 여부를 판단할 수 있다. 한편, 연산 수행 횟수가 기설정된 임계 횟수 이하인 것으로 판단되면, 서버(200)는 임의의 적어도 두 집합을 다시 선택할 수 있으며, 선택된 적어도 두 집합에 대하여 합집합 연산 및 곱연산을 수행할 수 있다. 서버(200)는 동형 연산을 반복함에 따라서, 평문에서의 변수 사이의 포함 관계가 더욱 명확해 질 수 있다. 서버(200)는 평문에서의 변수 사이의 포함 관계가 더 이상 진화하지 않는 경우에 대응하는 기설정된 횟수만큼 암호문에 대한 동형 연산을 반복할 수 있다. 이에 따라, 변수 사이의 포함 관계가 더 이상 진화하지 않을 만큼, 암호문에서의 변수 사이의 포함 관계는 명확해질 수 있다.
도 6은 본 발명의 다양한 실시예에 의한 평문에서의 정적 분석 방법의 흐름도를 도시한다. 도 6의 실시예는 도 7을 참조하여 더욱 상세하게 설명하도록 한다. 도 7은 본 발명의 다양한 실시예에 의한 평문에서의 정적 분석 방법의 개념도를 도시한다.
610 동작에서, 서버(200)는 초기 정보에 기초하여 노드 및 간선을 구성할 수 있다. 본 발명의 다양한 실시예에서, 서버(200)는 도 7과 같은 평문(701 내지 708)에 대한 노드(711,712,713,714) 및 간선(717)을 구성할 수 있다. 예를 들어, 도 7의 1)초기화 단계에서와 같이, 서버(200)는 변수 q에 대응하는 노드(711)와 변수 p에 대응하는 노드(712) 사이에 간선(717)을 형성할 수 있다. 아울러, 서버(200)는 변수 q의 주소 집합(715)을 형성할 수 있다. 예를 들어, 서버(200)는 명령어 p=q(705)를 해석함에 따라서 간선(717)을 추가할 수 있다. 여기에서, 간선(717)은 q의 변수가 p의 변수에 포함될 수 있음을 의미할 수 있다. 서버(200)는 명령어 q=&x(704)를 해석함에 따라서 주소 집합(715)를 형성할 수 있다. 여기에서, 명령어 q=&x(704)는 q는 x가 지시하는 주소 집합에 포함될 수 있음을 의미하며, 서버(200)는 이에 따라 q에 대응하는 노드(711)에 주소 집합(715)을 형성할 수 있다. 아울러, 서버(200)는 명령어 w=&p(706) 및 명령어 w=&r(707)을 해석함에 따라서 주소 집합(716)을 형성할 수 있다. 명령어 w=&p(706)는 w는 p가 지시하는 주소 집합에 포함될 수 있음을 의미하며, 명령어 w=&r(707)는 w는 r이 지시하는 주소 집합에 포함될 수 있음을 의미할 수 있다. 이에 따라, 서버(200)는 w에 대응하는 노드(714)에 주소 집합(716)을 형성시킬 수 있다.
620 동작에서, 서버(200)는 각 변수가 가리키는 주소 집합을 분석할 수 있다. 아울러, 630 동작에서, 서버(200)는 로드(load) 및 스토어(store) 명령어를 분석할 수 있다. 640 동작에서, 서버(200)는 분석 결과에 기초한 간선 추가를 수행할 수 있다. 예를 들어, 도 7의 2)간선 추가의 단계에서와 같이, 서버(200)는 새로운 간선(718)을 추가할 수 있다. 서버(200)는 명령어 *w=q(708)을 해석함에 따라서 간선(718)을 추가할 수 있다. 명령어 *w=q(708)은 w가 가리키는 주소 집합이 q에 포함될 수 있음을 의미할 수 있으며, 서버(200)는 이를 해석할 수 있다. 서버(200)는 w가 가리키는 주소 집합이 {p,r}(714)인 것을 파악하고 있으므로, w가 가리키는 주소 집합이 p 및 r이 가리키는 주소 집합에 포함될 수 있다는 것을 판단할 수 있다. 이에 따라, 서버(200)는 q에 대응하는 노드(711)로부터 r에 대응하는 노드(713)로의 간선(718)을 형성할 수 있다.
650 동작에서, 서버(200)는 분석 결과에 기초하여 주소 집합을 전파할 수 있다. 예를 들어, 도 7의 3) 전파 단계에서와 같이, 서버(200)는 간선(718)에 대응하여 q에 대응하는 노드(711)의 주소 집합(715)을 r에 대응하는 노드(713)에 전파(719)할 수 있다.
서버(200)는 변수를 변경하면서 명령어 해석 및 주소 집합 전파를 반복하여 수행할 수 있다. 660 동작에서, 서버(200)는 주소 집합 전파 결과가 이전과 동일한지 여부를 판단할 수 있다. 주소 집합 전파 결과가 이전과 동일한 경우, 즉 노드 및 간선의 구조가 더 이상 진화되지 않는 경우에, 670 동작에서 서버(200)는 정적 분석을 완료할 수 있다. 서버(200)는 완료된 정적 분석 결과, 즉 진화가 완료된 노프 및 간선의 구조에 따라 pt, 즉 각 포인터 변수가 가리킬 수 있는 주소 집합을 나타내는 함수를 구할 수 있다. 각 포인터 변수가 가리킬 수 있는 주소 집합의 함수를 구함으로써, 서버(200)는 주소 집합 중 보안이 요구되는 영역이 포함되어 있는지를 판단할 수 있다. 주소 집합 중 보안이 요구되는 영역이 포함되는 경우에는, 서버(200)는 해당 프로그램이 악성 코드를 포함하는 것으로 판단할 수 있다.
상술한 바에서는, 평문에서의 정적 분석 과정에 대하여 설명하였다. 이하에서는, 도 8을 참조하여, 평문을 암호화한 암호문에서의 정적 분석 과정을 설명하도록 한다.
810 동작에서, 전자 장치(100)는 소스 코드로부터 집합 제약식에 대응하는 제 1 소스 코드 추출할 수 있다. 820 동작에서, 전자 장치(100)는 추출된 제 1 소스 코드의 변수 쌍을 인코딩할 수 있다. 830 동작에서, 전자 장치(100)는 변수 쌍을 암호화하여 복수 개의 서브 암호문을 포함하는 암호문을 생성할 수 있다.
본 발명의 다양한 실시예에서, 전자 장치(100)는 수학식 1과 같은 서브 암호문을 생성할 수 있다.
Figure pat00012
본 실시예에서는, 전자 장치(100)가 표 1과 같은 집합제약식을 제 1 소스 코드로서 추출한 경우를 상정하도록 한다. 전자 장치(100)는 예를 들어, 추출한
Figure pat00013
에 대응하여 δij의 암호문을 생성할 수 있다. 여기에서, ε는 암호화 함수를 나타낼 수 있다. δij는 xi가 xj의 포인터에 의한 주소 집합에 속하면 0이 아닌 값을 가지며, xi가 xj의 포인터에 의한 주소 집합에 속하지 않으면 0의 값을 가지도록 하는 암호문일 수 있다. 여기에서, δij는 평문에서의 노드에 대응되는 주소 집합에 대응될 수 있다. 전자 장치(100)는 예를 들어, 추출한
Figure pat00014
에 대응하여 ηij의 암호문을 생성할 수 있다. ηij는 xi의 포인터에 의한 주소 집합이 xj의 포인터에 의한 주소 집합에 속하면 0이 아닌 값을 가지며, xi의 포인터에 의한 주소 집합이 xj의 포인터에 의한 주소 집합에 속하지 않으면 0의 값을 가지도록 하는 암호문일 수 있다. 여기에서, ηij는 평문에서의 간선에 대응될 수 있다. 상술한 바와 유사한 방식으로, 전자 장치(100)는 추출한
Figure pat00015
에 대응하여 uij의 암호문을 생성할 수 있다. 여기에서, k는 매개 변수일 수 있으며, uij는 모든 xk의 변수가 xj의 포인터에 의한 주소 집합에 속하며, xk의 포인터에 의한 주소 집합이 xi의 포인터에 의한 주소 집합에 속하는 경우에는 0이 아닌 값을 가지며, 반대의 경우에는 0의 값을 가지도록 하는 암호문일 수 있다. 전자 장치(100)는 추출한
Figure pat00016
에 대응하여 vij의 암호문을 생성할 수 있다. 여기에서, k는 매개 변수일 수 있으며, vij는 모든 xk의 변수가 xi의 포인터에 의한 주소 집합에 속하며, xi의 포인터에 의한 주소 집합이 xk의 포인터에 의한 주소 집합에 속하는 경우에는 0이 아닌 값을 가지며, 반대의 경우에는 0의 값을 가지도록 하는 암호문일 수 있다.
840 동작에서, 전자 장치(100)는 서버(200)로 암호문을 송신할 수 있다. 다양한 실시예에서, 암호문은 평문에 대응하는 복수 개의 암호문, δij, ηij, uij, vij 등을 포함할 수 있다.
850 동작에서, 서버(200)는 수신된 암호문에 포함된 복수 개의 암호문끼리의 합 연산 및 곱 연산 수행의 동형 연산을 수행할 수 있다. 예를 들어, 서버(200)는 수학식 2와 같은 동형 연산을 수행할 수 있다.
Figure pat00017
수학식 2에서
Figure pat00018
의 곱 연산은 q의 변수로부터 r의 변수로의 간선이 존재하는지 여부와 x의 변수가 q의 포인터에 의한 주소 집합에 속하는지 여부가 모두 충족되는 경우에 0이 아닌 값을 가지며, 나머지의 경우에 대하여서는 0의 값을 가질 수 있다. 아울러, δxr의 합집합 연산은 x의 주소 집합을 r로 전파시킬 수 있음을 의미한다. 즉, 수학식 2는 도 7의 x의 주소 집합(715)의 q 노드(711)로부터의 r노드(713)로의 전파(719) 과정에 대응될 수 있다. 즉, 서버(200)는 수학식 2의 곱연산 및 합집합 연산을 수행함에 따라서 도 7의 노드, 주소 집합 및 간선을 진화시킬 수 있다.
다만, 서버(200)는 암호문에 대하여 동형 연산을 수행함에 따라서, 평문의 분석 과정과는 대조적으로 주소 집합의 전파가 이전과 동일한지 여부를 판단할 수 없다. 이에 따라, 860 동작에서, 서버(200)는 연산 수행 횟수가 기설정된 임계 횟수를 초과하는지 여부를 판단할 수 있다. 기설정된 임계 횟수는 주소 집합이 충분히 전파되어, 노드, 주소 집합 및 간선이 더 이상 진행되지 않도록 하는 충분히 큰 숫자로 설정될 수 있다.
연산 수행 횟수가 기설정된 임계 횟수를 초과하는 경우에는, 870 동작에서 서버(200)는 암호문에 대한 정적 분석을 완료할 수 있다. 연산 수행 횟수가 기설정된 임계 횟수 이하인 경우에는, 서버(200)는 변수를 변경하면서 수학식 2와 같은 동형 연산을 수행할 수 있다.
880 동작에서, 서버(200)는 정적 분석 결과에 판별 알고리즘 적용할 수 있다. 890 동작에서, 서버(200)는 판별 알고리즘 적용 결과를 복호화하여, 악성 코드 여부를 판단할 수 있다. 예를 들어, 계산된 δij들을 복호화한 결과가 0이 아닌 값인 경우에는, 서버(200) 또는 전자 장치(100)는 변수 i는 변수 j가 가리킬 수 있는 포인터에 의한 주소 집합에 속한다고 해석할 수 있다. 이에 따라, 서버(200) 또는 전자 장치(100)는 포인터에 의한 주소 집합이 보안이 요구되는 영역에 대응되는지 여부를 판별하는 판별 알고리즘에 정적 분석 결과를 적용함으로써, 악성 코드 여부를 판단할 수 있다.
상술한 바와 같이, 본 발명의 다양한 실시예에 의한 서버(200)는 암호화된 소스 코드에 대하여 동형 연산을 수행함으로써 정적 분석을 수행할 수 있다. 이에 따라, 대상 프로그램이 노출되지 않을 수 있다. 뿐만 아니라, 본원의 다양한 실시예에서는 포인터 변수 타입을 이용한 방식으로 정적 분석을 수행함으로써 곱셈의 횟수를 m2번으로 감축시킬 수 있다. 아울러, 본원의 다양한 실시예에서는 프로그램 분석 알고리즘을 회로수준이 아닌 정수 연산으로 수행되도록 인코딩함으로써, 곱셈의 횟수가 감축될 수 있다.
도 9a 및 9b는 본 발명의 다양한 실시예에 의한 복호화 과정을 설명하기 위한 흐름도를 도시한다.
우선, 9a를 참조하면, 910 동작에서 서버(200)는 정적 분석 결과에 판별 알고리즘을 적용할 수 있다. 920 동작에서, 서버(200)는 판별 알고리즘의 적용 결과를 전자 장치(100)로 반환할지 여부를 판단할 수 있다. 적용 결과를 반환하는 것으로 판단되면, 930 동작에서 서버(200)는 적용 결과를 전자 장치(100)로 송신할 수 있다. 이 경우, 전자 장치(100)는 적용 결과를 수신하여 복호화할 수 있다. 한편, 적용 결과를 반환하지 않는 것으로 판단되면, 940 동작에서 서버(200)는 적용 결과를 전자 장치와 협력하여 복호화할 수 있다. 또는, 서버(200)는 단독으로 적용 결과를 복호화할 수도 있다.
도 9b를 참조하면, 941 동작에서 서버(200)는 전자 장치(100)와 복호화를 우한 비밀키를 공유할 수 있다. 942 동작에서, 전자 장치(100)는 암호문을 생성할 수 있다. 전자 장치(100)가 소스 코드를 추출하여 암호문을 생성하는 과정에 대하여서는 상세하게 설명하였으므로, 여기에서의 설명을 생략하도록 한다. 943 동작에서, 전자 장치(100)는 암호문을 서버(200)로 송신할 수 있다.
944 동작에서, 서버(200)는 암호문을 분석할 수 있다. 서버(200)는 동형 연산을 수행하고, 수행된 결과에 판별 알고리즘을 적용함으로써 암호문을 분석할 수 있다. 여기에서, 판별 알고리즘은 threshold 암호 체계에 근거할 수 있으며, 판별 알고리즘에 threshold 암호 체계의 비밀 키를 이용한 복호화를 수행함으로써, 악성 코드 여부가 판단될 수 있다. 945 동작에서, 서버(200)는 암호문 분석 결과를 전자 장치(100)로 송신할 수 있다. 946 동작에서, 전자 장치(100)는 암호문 분석 결과를 비밀 키를 이용하여 제 1 부분 복호화할 수 있다. 947 동작에서, 서버(200)는 암호문 분석 결과를 비밀 키를 이용하여 제 2 부분 복호화할 수 있다. 948 동작에서, 전자 장치(100)는 제 1 부분 복호화 결과를 서버(200)로 송신할 수 있다. 서버(200)는 수신된 제 1 부분 복호화 결과 및 제 2 부분 복호화 결과에 기초하여 분석 결과를 판단할 수 있다. 상술한 바에 따라서, 복호화 결과만이 서버에 공유되기 때문에, 악성 코드를 제외한 나머지 정보가 노출되지 않을 수 있다.
본 발명의 다양한 실시예에서, 서버의 제어 방법은 전자 장치로부터 소스 코드를 암호화한 암호문을 수신하는 동작; 상기 암호문에 대하여 동형 연산을 수행하는 동작; 상기 동형 연산 결과에 대하여, 악성 코드를 포함하는지 여부를 판별하기 위한 판별 알고리즘을 적용하는 동작; 및 상기 판별 알고리즘의 적용 결과를 복호화하여, 상기 전자 장치로부터 수신된 소스 코드가 악성 코드인지 여부를 판단하는 동작을 포함할 수 있다.
본 발명의 다양한 실시예에서, 상기 소스 코드는 포인터 조작이 가능한 소스 코드 및 집합 제약식에 대응하는 소스 코드 중 적어도 하나를 포함할 수 있다.
본 발명의 다양한 실시예에서, 상기 암호문은, 상기 소스 코드의 변수 및 변수의 주소 집합 사이의 관계를 나타내는 복수 개의 서브 암호문을 포함할 수 있다.
본 발명의 다양한 실시예에서, 상기 동형 연산을 수행하는 동작은, 상기 복수 개의 서브 암호문 사이의 합집합 연산 및 곱연산을 수행할 수 있다.
본 발명의 다양한 실시예에서, 상기 동형 연산을 수행하는 동작은, 상기 합집합 연산 및 상기 곱연산을 기설정된 임계 횟수를 초과하여 수행하였는지를 판단하는 동작을 포함할 수 있다.
본 발명의 다양한 실시예에서, 상기 동형 연산을 수행하는 동작은, 상기 합집합 연산 및 상기 곱연산의 수행 횟수가 기설정된 임계 횟수 이하인 경우에는, 상기 복수 개의 서브 암호문을 변경하여 변경된 복수 개의 서브 암호문에 대하여 합집합 연산 및 곱연산을 수행할 수 있다.
본 발명의 다양한 실시예에서, 상기 동형 연산을 수행하는 동작은, 상기 합집합 연산 및 상기 곱연산의 수행 횟수가 기설정된 임계 횟수 초과인 경우에는, 상기 판별 알고리즘을 적용하는 동작을 포함할 수 있다.
본 발명의 다양한 실시예에서, 상기 판별 알고리즘은, 상기 복수 개의 서브 암호문 중 변수 및 포인터에 의한 주소 집합 사이의 포함 관계에 대응하는 서브 암호문의 값에 따라서 상기 소스 코드가 악성 코드인지 여부를 판별할 수 있다.
본 발명의 다양한 실시예에서, 상기 판별 알고리즘의 적용 결과를 복호화하여, 상기 전자 장치로부터 수신된 소스 코드가 악성 코드인지 여부를 판단하는 동작은, 상기 전자 장치와 협력하여 상기 적용 결과를 복호화할 수 있다.
본 발명의 다양한 실시예에서, 상기 판별 알고리즘의 적용 결과를 복호화하여, 상기 전자 장치로부터 수신된 소스 코드가 악성 코드인지 여부를 판단하는 동작은, 상기 전자 장치로부터 상기 적용 결과에 대한 제 1 부분 복호화 결과를 수신하는 동작; 상기 적용 결과에 대한 제 2 부분 복호화를 수행하는 동작; 및 상기 수신된 제 1 부분 복호화 결과 및 상기 제 2 부분 복호화 결과에 기초하여, 상기 수신된 소스 코드가 악성 코드인지 여부를 판단할 수 있다.
상기 전자 장치의 전술한 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성 요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시예에서, 전자 장치는 전술한 구성요소 중 적어도 하나를 포함하여 구성될 수 있으며, 일부 구성요소가 생략되거나 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 또한, 다양한 실시예에 따른 전자 장치의 구성 요소들 중 일부가 결합되어 하나의 개체(entity)로 구성됨으로써, 결합되기 이전의 해당 구성 요소들의 기능을 동일하게 수행할 수 있다.
본 문서에서 사용된 용어 “모듈”은, 예를 들면, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 단위(unit)를 의미할 수 있다. “모듈”은, 예를 들면, 유닛(unit), 로직(logic), 논리 블록(logical block), 부품(component), 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. “모듈”은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. “모듈”은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. “모듈”은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면,“모듈”은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는, 예컨대, 프로그램 모듈의 형태로 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 상기 명령어는, 프로세서(예: 프로세서(110))에 의해 실행될 경우, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 상기 메모리(120)가 될 수 있다.
상기 컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체(optical media)(예: CD-ROM(compact disc read only memory), DVD(digital versatile disc), 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크(floptical disk)), 하드웨어 장치(예: ROM(read only memory), RAM(random access memory), 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
다양한 실시예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시예에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
본 발명의 다양한 실시예에 따르면, 명령들을 저장하고 있는 저장 매체에 있어서, 상기 명령들은 적어도 하나의 프로세서에 의하여 실행될 때에 상기 적어도 하나의 프로세서로 하여금 적어도 하나의 동작을 수행하도록 설정된 것으로서, 상기 적어도 하나의 동작은, 상기 암호문에 대하여 동형 연산을 수행하는 동작; 상기 동형 연산 결과에 대하여, 악성 코드를 포함하는지 여부를 판별하기 위한 판별 알고리즘을 적용하는 동작; 및 상기 판별 알고리즘의 적용 결과를 복호화하여, 상기 전자 장치로부터 수신된 소스 코드가 악성 코드인지 여부를 판단하는 동작을 포함할 수 있다.
그리고 본 문서에 개시된 실시예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 개시의 범위를 한정하는 것은 아니다. 따라서, 본 개시의 범위는, 본 개시의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시예를 포함하는 것으로 해석되어야 한다.

Claims (20)

  1. 전자 장치로부터 소스 코드를 암호화한 암호문을 수신하는 동작;
    상기 암호문에 대하여 동형 연산을 수행하는 동작;
    상기 동형 연산 결과에 대하여, 악성 코드를 포함하는지 여부를 판별하기 위한 판별 알고리즘을 적용하는 동작; 및
    상기 판별 알고리즘의 적용 결과를 복호화하여, 상기 전자 장치로부터 수신된 소스 코드가 악성 코드인지 여부를 판단하는 동작
    을 포함하는 서버의 제어 방법.
  2. 제 1 항에 있어서,
    상기 소스 코드는 포인터 조작이 가능한 소스 코드 및 집합 제약식에 대응하는 소스 코드 중 적어도 하나를 포함하는 서버의 제어 방법.
  3. 제 1 항에 있어서,
    상기 암호문은, 상기 소스 코드의 변수 및 변수의 주소 집합 사이의 관계를 나타내는 복수 개의 서브 암호문을 포함하는 서버의 제어 방법.
  4. 제 3 항에 있어서,
    상기 동형 연산을 수행하는 동작은,
    상기 복수 개의 서브 암호문 사이의 합집합 연산 및 곱연산을 수행하는 서버의 제어 방법.
  5. 제 4 항에 있어서,
    상기 동형 연산을 수행하는 동작은,
    상기 합집합 연산 및 상기 곱연산을 기설정된 임계 횟수를 초과하여 수행하였는지를 판단하는 동작
    을 포함하는 서버의 제어 방법.
  6. 제 5 항에 있어서,
    상기 동형 연산을 수행하는 동작은,
    상기 합집합 연산 및 상기 곱연산의 수행 횟수가 기설정된 임계 횟수 이하인 경우에는, 상기 복수 개의 서브 암호문을 변경하여 변경된 복수 개의 서브 암호문에 대하여 합집합 연산 및 곱연산을 수행하는 동작
    을 포함하는 서버의 제어 방법.
  7. 제 5 항에 있어서,
    상기 동형 연산을 수행하는 동작은,
    상기 합집합 연산 및 상기 곱연산의 수행 횟수가 기설정된 임계 횟수 초과인 경우에는, 상기 판별 알고리즘을 적용하는 동작
    을 포함하는 서버의 제어 방법.
  8. 제 3 항에 있어서,
    상기 판별 알고리즘은, 상기 복수 개의 서브 암호문 중 변수 및 포인터에 의한 주소 집합 사이의 포함 관계에 대응하는 서브 암호문의 값에 따라서 상기 소스 코드가 악성 코드인지 여부를 판별하는 서버의 제어 방법.
  9. 제 1 항에 있어서,
    상기 판별 알고리즘의 적용 결과를 복호화하여, 상기 전자 장치로부터 수신된 소스 코드가 악성 코드인지 여부를 판단하는 동작은,
    상기 전자 장치와 협력하여 상기 적용 결과를 복호화하는 서버의 제어 방법.
  10. 제 8 항에 있어서,
    상기 판별 알고리즘의 적용 결과를 복호화하여, 상기 전자 장치로부터 수신된 소스 코드가 악성 코드인지 여부를 판단하는 동작은,
    상기 전자 장치로부터 상기 적용 결과에 대한 제 1 부분 복호화 결과를 수신하는 동작;
    상기 적용 결과에 대한 제 2 부분 복호화를 수행하는 동작; 및
    상기 수신된 제 1 부분 복호화 결과 및 상기 제 2 부분 복호화 결과에 기초하여, 상기 수신된 소스 코드가 악성 코드인지 여부를 판단하는 동작
    을 포함하는 서버의 제어 방법.
  11. 전자 장치와 통신을 수행하는 서버에 있어서,
    전자 장치로부터 소스 코드를 암호화한 암호문을 수신하는 통신 모듈; 및
    상기 암호문에 대하여 동형 연산을 수행하고, 상기 동형 연산 결과에 대하여, 악성 코드를 포함하는지 여부를 판별하기 위한 판별 알고리즘을 적용하고, 상기 판별 알고리즘의 적용 결과를 복호화하여, 상기 전자 장치로부터 수신된 소스 코드가 악성 코드인지 여부를 판단하는 프로세서
    를 포함하는 서버.
  12. 제 11 항에 있어서,
    상기 소스 코드는 포인터 조작이 가능한 소스 코드 및 집합 제약식에 대응하는 소스 코드 중 적어도 하나를 포함하는 서버.
  13. 제 11 항에 있어서,
    상기 암호문은, 상기 소스 코드의 변수 및 변수의 주소 집합 사이의 관계를 나타내는 복수 개의 서브 암호문을 포함하는 서버.
  14. 제 13 항에 있어서,
    상기 프로세서는, 상기 복수 개의 서브 암호문 사이의 합집합 연산 및 곱연산을 수행하는 서버.
  15. 제 14 항에 있어서,
    상기 프로세서는, 상기 합집합 연산 및 상기 곱연산을 기설정된 임계 횟수를 초과하여 수행하였는지를 판단하는 서버.
  16. 제 15 항에 있어서,
    상기 프로세서는, 상기 합집합 연산 및 상기 곱연산의 수행 횟수가 기설정된 임계 횟수 이하인 경우에는, 상기 복수 개의 서브 암호문을 변경하여 변경된 복수 개의 서브 암호문에 대하여 합집합 연산 및 곱연산을 수행하는 서버.
  17. 제 15 항에 있어서,
    상기 프로세서는, 상기 합집합 연산 및 상기 곱연산의 수행 횟수가 기설정된 임계 횟수 초과인 경우에는, 상기 판별 알고리즘을 적용하는 서버.
  18. 제 13 항에 있어서,
    상기 판별 알고리즘은, 상기 복수 개의 서브 암호문 중 변수 및 포인터에 의한 주소 집합 사이의 포함 관계에 대응하는 서브 암호문의 값에 따라서 상기 소스 코드가 악성 코드인지 여부를 판별하는 서버.
  19. 제 11 항에 있어서,
    상기 프로세서는, 상기 전자 장치와 협력하여 상기 적용 결과를 복호화하는 서버.
  20. 제 18 항에 있어서,
    상기 통신 모듈은, 상기 전자 장치로부터 상기 적용 결과에 대한 제 1 부분 복호화 결과를 수신하고,
    상기 프로세서는, 상기 적용 결과에 대한 제 2 부분 복호화를 수행하고, 상기 수신된 제 1 부분 복호화 결과 및 상기 제 2 부분 복호화 결과에 기초하여, 상기 수신된 소스 코드가 악성 코드인지 여부를 판단하는 서버.



KR1020150055481A 2015-04-20 2015-04-20 프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법 KR102317471B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150055481A KR102317471B1 (ko) 2015-04-20 2015-04-20 프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150055481A KR102317471B1 (ko) 2015-04-20 2015-04-20 프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법

Publications (2)

Publication Number Publication Date
KR20160124598A true KR20160124598A (ko) 2016-10-28
KR102317471B1 KR102317471B1 (ko) 2021-10-27

Family

ID=57244765

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150055481A KR102317471B1 (ko) 2015-04-20 2015-04-20 프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법

Country Status (1)

Country Link
KR (1) KR102317471B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107257282A (zh) * 2017-05-18 2017-10-17 柚子(北京)移动技术有限公司 一种基于rc4算法的代码全包加密方法
US11824967B2 (en) 2020-07-07 2023-11-21 Samsung Electronics Co., Ltd. Electronic device using homomorphic encryption and encrypted data processing method thereof

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100611679B1 (ko) * 2004-07-30 2006-08-10 주식회사 뉴테크웨이브 컴퓨터 바이러스의 조기방역 시스템 및 방법
US20110154016A1 (en) * 2008-06-18 2011-06-23 Nec Europe Ltd. Method for aggregating information values in a network
KR20120078018A (ko) * 2010-12-31 2012-07-10 주식회사 안랩 파일 유전자 지도를 이용하여 파일의 악성코드 포함 여부를 판단하는 방법 및 시스템
CN102629924A (zh) * 2012-03-30 2012-08-08 上海交通大学 一种多服务器环境下的隐私信息检索方法
US20130275743A1 (en) * 2012-04-12 2013-10-17 Sap Ag Fault-Tolerant Privacy-Preserving Statistics

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100611679B1 (ko) * 2004-07-30 2006-08-10 주식회사 뉴테크웨이브 컴퓨터 바이러스의 조기방역 시스템 및 방법
US20110154016A1 (en) * 2008-06-18 2011-06-23 Nec Europe Ltd. Method for aggregating information values in a network
KR20120078018A (ko) * 2010-12-31 2012-07-10 주식회사 안랩 파일 유전자 지도를 이용하여 파일의 악성코드 포함 여부를 판단하는 방법 및 시스템
CN102629924A (zh) * 2012-03-30 2012-08-08 上海交通大学 一种多服务器环境下的隐私信息检索方法
US20130275743A1 (en) * 2012-04-12 2013-10-17 Sap Ag Fault-Tolerant Privacy-Preserving Statistics

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107257282A (zh) * 2017-05-18 2017-10-17 柚子(北京)移动技术有限公司 一种基于rc4算法的代码全包加密方法
CN107257282B (zh) * 2017-05-18 2021-01-08 柚子(北京)移动技术有限公司 一种基于rc4算法的代码全包加密方法
US11824967B2 (en) 2020-07-07 2023-11-21 Samsung Electronics Co., Ltd. Electronic device using homomorphic encryption and encrypted data processing method thereof

Also Published As

Publication number Publication date
KR102317471B1 (ko) 2021-10-27

Similar Documents

Publication Publication Date Title
US20200213129A1 (en) Authenticating a user and registering a wearable device
KR102402625B1 (ko) 데이터를 관리하는 방법 및 그를 위한 장치들
US8997230B1 (en) Hierarchical data security measures for a mobile device
US10032037B1 (en) Establishing application trust levels using taint propagation as a service
US10007790B2 (en) Secure application development and execution
KR20180060300A (ko) 전자 기기의 프로그램 관리 방법 및 장치
US10187359B2 (en) Secure message transmission apparatus and processing method thereof
US10733594B1 (en) Data security measures for mobile devices
EP3716185A1 (en) Apparatus and method for payment
KR20170084934A (ko) 전자 장치 및 전자 장치의 식별 정보 인증 방법
KR20160112316A (ko) 애플리케이션 보호 방법 및 장치
US11443323B2 (en) System and method for secure transactions with a trusted execution environment (TEE)
US11924327B2 (en) Variable data protection
KR102199590B1 (ko) 관심정보에 따른 컨텐츠 추천장치 및 방법
KR102317471B1 (ko) 프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법
CN113794706A (zh) 数据的处理方法、装置、电子设备及可读存储介质
KR20170020137A (ko) 전자 기기의 프로그램 관리 방법 및 장치
KR101661817B1 (ko) 서버 및 휴대용 단말의 에플리케이션 보호방법 및 장치
US11606383B1 (en) Securing against network vulnerabilities
KR20160026313A (ko) 데이터 암호화 또는 복호화를 위한 장치 및 방법
KR20150126232A (ko) 암호화 데이터 결정 방법 및 이를 제공하는 호스트 장치
US11366766B2 (en) Electronic device and control method thereof
CN114880630A (zh) 软件使用权限的获取方法与装置
KR20230083837A (ko) 기밀 데이터의 보안성을 위한 하이브리드 클라우드 기반 SECaaS 장치 및 방법
JP2014230156A (ja) 認証システム、認証方法、認証プログラムおよび認証装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant