KR20190054763A - 보안 기능을 지원하는 파일 시스템 및 공통적 파일 액세스 인터페이스에 기초한 파일 유출 방지 - Google Patents

보안 기능을 지원하는 파일 시스템 및 공통적 파일 액세스 인터페이스에 기초한 파일 유출 방지 Download PDF

Info

Publication number
KR20190054763A
KR20190054763A KR1020170151709A KR20170151709A KR20190054763A KR 20190054763 A KR20190054763 A KR 20190054763A KR 1020170151709 A KR1020170151709 A KR 1020170151709A KR 20170151709 A KR20170151709 A KR 20170151709A KR 20190054763 A KR20190054763 A KR 20190054763A
Authority
KR
South Korea
Prior art keywords
file
target file
type
program
read request
Prior art date
Application number
KR1020170151709A
Other languages
English (en)
Other versions
KR102368208B1 (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 KR1020170151709A priority Critical patent/KR102368208B1/ko
Publication of KR20190054763A publication Critical patent/KR20190054763A/ko
Application granted granted Critical
Publication of KR102368208B1 publication Critical patent/KR102368208B1/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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

본 명세서 시스템 내의 응용 프로그램들에 의해 공통으로 호출될 수 있는 API(Application Programming Interface) 형태의 파일 입출력 인터페이스를 통해 상기 응용 프로그램들 중 제1 프로그램으로부터 대상 파일에 대한 저장 요청을 수신하는 동작; 상기 대상 파일의 형태(type)가 미리 설정된 정책 내의 허용 형태 목록에 포함되어 있는지 여부를 판단하는 동작; 상기 대상 파일의 형태가 상기 허용 형태 목록에 포함되어 있는 것으로 판단되는 경우, 상기 대상 파일을 암호화하는 동작; 및 상기 암호화된 대상 파일을 네트워크로 연결된 저장소에 저장하는 동작을 포함하는 파일 유출 방지 방법을 개시한다.

Description

보안 기능을 지원하는 파일 시스템 및 공통적 파일 액세스 인터페이스에 기초한 파일 유출 방지{FILE LEAKAGE PREVENTION BASED ON SECURITY FILE SYSTEM AND COMMONLY USED FILE ACCESS INTERFACE}
본 명세서는 보안 기능을 지원하는 파일 시스템 및 공통적 파일 액세스 인터페이스에 기초한 파일 유출 방지에 관한 것이다.
컴퓨터 등 전자 장치에는 많은 데이터가 파일 형태로 취급되며, 파일들은 저장 매체에 저장 및/또는 보관되고 다시 저장 매체로부터 판독된다. 여러 사람이 접근 가능한 파일에 대하여 보안 상의 이유로 접근 통제 등의 보호 조치가 적용될 수 있다. 다만, 회사, 정부기관, 비영리 기관 등 다양한 조직에서 이러한 파일에 대한 보호 조치에도 불구하고 내부자의 관여로 인하여 파일 유출이 발생하는 경우가 빈번하다. 파일 유출은 개인정보, 제품 설계도 등 많은 기술자료, 공공시설, 산업시설, 군 기밀 등 기밀자료 등 다양한 데이터에 대하여 컴퓨터 파일의 형태로 발생할 수 있다.
파일 유출을 방지하는 기술로서 보안 기능을 탑재하도록 설계된 특수 저장 매체(예, USB 메모리)에 파일 저장을 강제하는 방식, 네트워크의 실시간 감시를 통해 특정 형식을 가진 데이터의 외부 유출을 방지하는 방식, 작업용 임시 파일을 암호화한 후 암호화된 파일을 안전하게 저장하는 방식 등이 제시되었다.
본 명세서는 전자 장치에 설치되는 응용 프로그램을 수정하지 않고 파일 유출 방지 기능을 활용할 수 있도록, 시스템 또는 프레임워크의 API로 존재하여 응용프로그램이 공통적으로 호출될 수 있는 API 및 그 처리 모듈을 제시한다. 본 명세서는 응용 프로그램의 종류 및 대상 파일의 종류에 따라 네트워크 상에 존재하는 저장소에 안전하게 저장될 수 있도록 파일 시스템 형태로 구현될 수 있는 파일 유출 방지 기술을 제시한다.
본 명세서는 한 실시 예에 따른 컴퓨터의 파일 유출 방지 방법을 제시한다. 상기 파일 유출 방지 방법은 시스템 내의 응용 프로그램들에 의해 공통으로 호출될 수 있는 API(Application Programming Interface) 형태의 파일 입출력 인터페이스를 통해 상기 응용 프로그램들 중 제1 프로그램으로부터 대상 파일에 대한 저장 요청을 수신하는 동작; 상기 대상 파일의 형태(type)가 미리 설정된 정책 내의 허용 형태 목록에 포함되어 있는지 여부를 판단하는 동작; 상기 대상 파일의 형태가 상기 허용 형태 목록에 포함되어 있는 것으로 판단되는 경우, 상기 대상 파일을 암호화하는 동작; 및 상기 암호화된 대상 파일을 네트워크로 연결된 저장소에 저장하는 동작을 포함하도록 구성될 수 있다.
한편, 본 명세서는 다른 실시 예에 따른 컴퓨터의 파일 유출 방지 방법을 제시한다. 상기 파일 유출 방지 방법은 시스템 내의 응용프로그램들에 의해 공통으로 호출될 수 있는 API(Application Programming Interface) 형태의 파일 입출력 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 상기 대상 파일에 대한 읽기 요청을 수신하는 동작, 상기 대상 파일은 암호문 형태로 네트워크로 연결된 저장소에 저장되어 있고; 상기 응용 프로그램이 미리 설정된 정책 내의 허용된 프로그램 목록에 포함되고, 상기 응용프로그램이 상기 대상 파일의 형태(type)과 연관되어 있는 경우, 상기 암호화된 대상 파일을 평문 형태로 복호화하고, 상기 평문 형태의 상기 대상 파일을 상기 읽기 요청에 대한 응답으로 전송하는 동작; 및 상기 응용 프로그램이 상기 정책 내의 상기 허용된 프로그램 목록에 포함되어 있지 않은 경우, 상기 대상 파일을 암호문 형태로 상기 읽기 요청에 대한 응답으로 전송하는 동작을 포함하도록 구성될 수 있다.
한편, 본 명세서는 한 실시 예에 따른 파일 유출 방지 장치를 제시한다. 상기 파일 유출 방지 장치는 응용 프로그램 및 파일 시스템 모듈을 저장하는 메모리, 상기 파일 시스템 모듈은 상기 응용 프로그램의에 의해 공통으로 호출될 수 있는 API 형태의 파일 입출력 인터페이스들을 통해 수신되는 파일 저장 요청 및 읽기 요청을 처리하는 동작을 실행하는 명령어를 포함하도록 구성되고; 네트워크의 저장소와 연결을 수립하고, 상기 파일 시스템 모듈에 의해 처리되는 대상 파일을 상기 저장소에 송수신하는 네트워크 모듈; 및 상기 메모리 및 상기 네트워크 모듈과 전기적으로 연결되어, 상기 대상 파일에 대하여 상기 응용 프로그램의 상기 저장 요청을 처리하는 동작 및 상기 읽기 요청을 처리하는 동작을 수행하는 프로세서를 포함하도록 구성될 수 있다. 상기 프로세서는 상기 저장 요청을 처리하기 위하여: 상기 파일 입출력 인터페이스들 중 제1 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 대상 파일에 대한 저장 요청을 수신하는 동작; 상기 대상 파일의 형태(type)가 미리 설정된 정책 내의 허용 형태 목록에 포함되어 있는지 여부를 판단하는 동작; 상기 대상 파일의 형태가 상기 허용 형태 목록에 포함되어 있는 것으로 판단되는 경우, 상기 대상 파일을 암호화하는 동작; 및 상기 암호화된 대상 파일을 네트워크로 연결된 저장소에 저장하는 동작을 수행할 수 있다. 상기 프로세서는 상기 읽기 요청을 처리하기 위하여: 상기 파일 입출력 인터페이스들 중 제2 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 상기 대상 파일에 대한 읽기 요청을 수신하는 동작, 상기 대상 파일은 암호문 형태로 네트워크로 연결된 저장소에 저장되어 있고; 상기 응용 프로그램이 미리 설정된 정책 내의 허용된 프로그램 목록에 포함되고, 상기 응용프로그램이 상기 대상 파일의 형태(type)과 연관되어 있는 경우, 상기 암호화된 대상 파일을 평문 형태로 복호화하고, 상기 평문 형태의 상기 대상 파일을 상기 읽기 요청에 대한 응답으로 전송하는 동작; 및 상기 응용 프로그램이 상기 정책 내의 상기 허용된 프로그램 목록에 포함되어 있지 않은 경우, 상기 대상 파일을 암호문 형태로 상기 읽기 요청에 대한 응답으로 전송하는 동작을 수행할 수 있다.
한편, 본 명세서는 한 실시 예에 따른 컴퓨터에서 동작 가능하고, 시스템 내의 응용 프로그램들에 의해 공통으로 호출될 수 있는 API(Application Programming Interface) 형태의 파일 입출력 인터페이스들을 통해 수신되는 대상 파일에 대한 저장 요청 및 읽기 요청을 처리하는 동작을 실행하도록 기록 매체에 저장 가능한 컴퓨터 프로그램을 제시한다.
상기 저장 요청을 처리하는 동작은: 상기 파일 입출력 인터페이스들 중 제1 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 대상 파일에 대한 저장 요청을 수신하는 동작; 상기 대상 파일의 형태(type)가 미리 설정된 정책 내의 허용 형태 목록에 포함되어 있는지 여부를 판단하는 동작; 상기 대상 파일의 형태가 상기 허용 형태 목록에 포함되어 있는 것으로 판단되는 경우, 상기 대상 파일을 암호화하는 동작; 및 상기 암호화된 대상 파일을 네트워크로 연결된 저장소에 저장하는 동작을 포함할 수 있다. 상기 읽기 요청을 처리하는 동작은: 상기 파일 입출력 인터페이스들 중 제2 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 상기 대상 파일에 대한 읽기 요청을 수신하는 동작, 상기 대상 파일은 암호문 형태로 네트워크로 연결된 저장소에 저장되어 있고; 상기 응용 프로그램이 미리 설정된 정책 내의 허용된 프로그램 목록에 포함되고, 상기 응용프로그램이 상기 대상 파일의 형태(type)과 연관되어 있는 경우, 상기 암호화된 대상 파일을 평문 형태로 복호화하고, 상기 평문 형태의 상기 대상 파일을 상기 읽기 요청에 대한 응답으로 전송하는 동작; 및 상기 응용 프로그램이 상기 정책 내의 상기 허용된 프로그램 목록에 포함되어 있지 않은 경우, 상기 대상 파일을 암호문 형태로 상기 읽기 요청에 대한 응답으로 전송하는 동작을 포함할 수 있다.
본 명세서에 개시된 파일 유출 방지 기술은 응용 프로그램 및 파일의 종류에 따라 암호화 및 분산 저장 기능을 이용함으로써 정책상 허가되지 않은 사용자에게 대상 파일이 유출되지 않도록 한다. 본 명세서의 파일 유출 방지 기술은 공통적으로 사용되는 인터페이스를 이용하여 구현됨으로써 응용 프로그램 제공자가 별도의 수정없이 종래와 마찬가지로 파일 입출력 기능을 이용할 수 있도록 한다. 또한, 상기 파일 유출 방지 기술은 별도의 매체 제어를 위한 보안 프로그램과 비교하여 사용자 관점에서 별도의 보안 프로그램을 설치할 필요가 없도록 한다.
본 명세서에 개시된 파일 유출 방지 기술은 동일한 대상 파일의 경우에도 등록된 응용 프로그램은 접근을 허용하되, 등록되지 아니한 응용 프로그램에 의한 복제, 편집 등의 작업을 방지할 수 있도록 한다. 상기 파일 유출 방지 기술은 사용자 컴퓨터의 운영 체제가 달라도 파일을 공유할 수 있도록 한다.
도 1은 예시적인 전자 시스템을 나타낸 도면이다.
도 2는 본 명세서의 기술이 적용될 수 있는 전자 장치의 구현 예를 도시한다.
도 3은 본 명세서에 개시된 기술이 적용될 수 있는 전자 장치의 예시적인 프로그램 모듈의 블록도이다.
도 4는 본 명세서에 개시된 기술에 따른 파일 저장 요청에 대한 처리 동작을 수행하는 예시적인 흐름도이다.
도 5는 본 명세서에 개시된 기술에 따른 파일 읽기 요청에 대한 처리 동작을 수행하는 예시적인 흐름도이다.
도 6은 본 명세서에 개시된 기술에 따른 파일 저장 요청 및 파일 읽기 요청에 대한 처리 동작을 수행하는 예시적인 흐름도이다.
도 7은 응용 프로그램에 의해 호출되는 인터페이스를 도시한다.
도 8은 본 명세서에 개시된 기술이 적용될 수 있는 전자 장치에 대한 블록도이다.
본 명세서에 개시된 기술은 파일유출 방지 장치에 적용될 수 있다. 그러나 본 명세서에 개시된 기술은 이에 한정되지 않고, 상기 기술의 기술적 사상이 적용될 수 있는 모든 전자 장치 및 방법에도 적용될 수 있다.
본 명세서에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 명세서에 개시된 기술의 사상을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 명세서에서 사용되는 기술적 용어는 본 명세서에서 특별히 다른 의미로 정의되지 않는 한, 본 명세서에 개시된 기술이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 명세서에서 사용되는 기술적인 용어가 본 명세서에 개시된 기술의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 본 명세서에 개시된 기술이 속하는 분야에서 통상의 지식을 가진 자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 명세서에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥 상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
본 명세서에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시 예들을 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 명세서에 개시된 기술을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 기술의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 명세서에 개시된 기술의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 그 기술의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
도 1은 예시적인 전자 시스템을 나타낸 도면이다.
도 1을 참조하면, 전자 시스템(100)은 적어도 하나의 전자 장치(101, 102, 104), 서버(106) 및/또는 네트워크(162)를 포함할 수 있다.
본 명세서에 따른 전자 장치는, 통신 기능이 포함된 장치 형태로 구현될 수 있다. 예를 들어, 전자 장치는 스마트 폰(smart phone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 화상전화기, 전자북 리더기(ebook reader), 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera), 또는 웨어러블 장치(wearable device)(예: 전자 안경과 같은 head-mounted device(HMD), 전자 의복, 전자 팔찌, 전자 목걸이, 전자 신문, 또는 스마트 워치(smartwatch))중 적어도 하나를 포함할 수 있다.
어떤 실시 예들에 따르면, 전자 장치는 통신 기능을 갖춘 스마트 가전 제품(smart home appliance)일 수 있다. 스마트 가전 제품은, 예를 들자면, 전자 장치는 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), TV 박스(예를 들어, 삼성 HomeSyncTM, 애플TVTM, 또는 구글 TVTM), 게임 콘솔(game consoles), 전자 사전, 전자 키, 캠코더(camcorder), 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
어떤 실시 예들에 따르면, 전자 장치는 각종 의료기기(예: MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 초음파기 등), 네비게이션(navigation) 장치, GPS 수신기(global positioning system receiver), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치 및 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛, 산업용 또는 가정용 로봇, 금융 기관의 ATM(automatic teller machine) 또는 상점의 POS(point of sales) 중 적어도 하나를 포함할 수 있다.
어떤 실시 예들에 따르면, 전자 장치는 통신 기능을 포함한 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 입력장치(electronic signature receiving device), 프로젝터(projector), 또는 각종 계측기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 본 명세서에 따른 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 또한, 본 명세서에 따른 전자 장치는 플렉서블 장치일 수 있다. 또한, 본 명세서에 따른 전자 장치는 전술한 기기들에 한정되지 않음은 당업자에게 자명하다.
전자 장치(101)는 버스(110), 프로세서(120), 메모리(130), 입출력 인터페이스(150), 디스플레이(160), 및/또는 통신 인터페이스(170)를 포함할 수 있다.
이때, 네트워크(162)는 유선으로 연결된 LAN 과 케이블채널망, 무선으로 연결된 가능한 모든 방법을 포함할 수 있다.
어떤 실시예에서, 상기 전자 장치(101)는 구성요소들 중 적어도 하나를 생략하거나 다른 구성요소를 추가적으로 구비할 수 있다.
상기 버스(110)는, 예를 들어, 구성요소들(110-170)을 서로 연결하고, 구성요소들 간의 통신(예: 제어 메시지 및/또는 데이터)을 전달하는 회로를 포함할 수 있다.
상기 프로세서(120)는 중앙처리장치(Central Processing Unit; CPU), 어플리케이션 프로세서(Application Processor; AP), 또는 커뮤니케이션 프로세서(Communication Processor; CP) 중 하나 또는 그 이상을 포함할 수 있다. 상기 프로세서(120)는, 예를 들어, 상기 전자 장치(101)의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
상기 메모리(130)는 휘발성(volatile)(131) 및/또는 비휘발성(non-volatile)(133) 메모리를 포함할 수 있다. 상기 메모리(130)는, 예를 들어, 상기 전자 장치(101)의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 한 실시예에 따르면, 상기 메모리(130)는 소프트웨어 및/또는 프로그램을 저장할 수 있다. 상기 프로그램은, 예를 들어, 커널(141), 미들웨어(143), 어플리케이션 프로그래밍 인터페이스(Application Programming Interface; API) (145), 및/또는 어플리케이션 프로그램(또는 "어플리케이션")(147) 등을 포함할 수 있다. 상기 커널(141), 상기 미들웨어(143), 또는 상기 API(145)의 적어도 일부는, 운영체제 (Operating System; OS)로 지칭될 수 있다.
상기 입출력 인터페이스(150)는, 예를 들어, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 상기 전자 장치(101)의 다른 구성요소(들)에 전달할 수 있는 인터페이스의 역할을 할 수 있다. 또한, 상기 입출력 인터페이스(150)은 상기 전자 장치(101)의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다.
상기 디스플레이(160)는, 예를 들어, 액정 디스플레이(Liquid Crystal Display; LCD), 발광 다이오드(Light Emitting Diode; LED) 디스플레이, 유기 발광 다이오드(Organic Light-Emitting Diode; OLED) 디스플레이, 또는 마이크로 전자기계 시스템(Micro-Electro-Mechanical Systems; MEMS) 디스플레이, 또는 전자종이(electronic paper) 디스플레이를 포함할 수 있다. 상기 디스플레이(160)는, 예를 들어, 사용자에게 각종 컨텐츠(예: 텍스트, 이미지, 비디오, 아이콘, 또는 심볼 등)을 표시할 수 있다. 상기 디스플레이(160)는, 터치 스크린을 포함할 수 있으며, 예를 들어, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치, 제스쳐, 근접, 또는 호버링 입력을 수신할 수 있다.
상기 통신 인터페이스(170)는, 예를 들어, 상기 전자 장치(101)와 외부 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(106)) 간의 통신을 설정할 수 있다. 예를 들어, 상기 통신 인터페이스(170)는 무선 통신 또는 유선 통신을 통해서 네트워크(162)에 연결되어 외부 장치(예: 전자 장치(104) 또는 서버(106))와 통신할 수 있다.
상기 무선 통신은, 예를 들어, 셀룰러 통신을 포함할 수 있다. 상기 셀룰러 통신은, 예를 들어, LTE(long-term evolution), LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), 또는 GSM(Global System for Mobile Communications) 등 중 적어도 하나를 포함할 수 있다. 또한, 상기 무선 통신은, 예를 들어, 근거리 통신(164)을 포함할 수 있다. 상기 근거리 통신(164)은, 예를 들어, Wi-Fi(wireless fidelity), 블루투스(Bluetooth) 또는 NFC(nearfield communication) 등 적어도 하나를 포함할 수 있다. 또한, 상기 무선 통신은 GPS(global positioning system)를 포함할 수 있다.
상기 유선 통신은, 예를 들어, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard232), 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 상기 네트워크(162)는 통신 네트워크(telecommunications network), 예를 들어, 컴퓨터 네트워크(computer network)(예: LAN 또는 WAN), 인터넷, 또는 전화 망(telephone network) 중 적어도 하나를 포함할 수 있다.
전자 장치(102) 및 전자 장치(104) 각각은 상기 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 한 실시 예에 따르면, 상기 서버(106)는 하나 또는 그 이상의 서버들의 그룹을 포함할 수 있다. 다양한 실시예에 따르면, 상기 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 외부 장치(예: 전자 장치(102, 104), 또는 서버(106))에서 실행될 수 있다. 한 실시예에 따르면, 상기 전자 장치(101)가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 상기 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 외부 장치(예: 전자 장치(102, 104), 또는 서버(106))에게 요청할 수 있다. 외부 장치(예: 전자 장치(102, 104), 또는 서버(106))는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 상기 전자 장치(101)로 전달할 수 있다. 상기 전자 장치(101)는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들어, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 2는 본 명세서의 기술이 적용될 수 있는 전자 장치의 구현 예를 도시한다. 컴퓨팅 장치는 본 명세서에 개시된 기술이 적용될 수 있는 전자 장치의 예시일 뿐, 본 명세서에 개시된 기술의 기능 또는 사용 범위를 제한하려는 것이 아니다. 따라서, 본 명세서의 컴퓨팅 환경은 예시적으로 도시된 컴포넌트 및/또는 그들의 조합에 종속되거나 필수적으로 포함해야 하는 것으로 해석되어서는 안 된다.
컴퓨팅 장치는 범용 또는 특수 목적의 컴퓨팅 시스템 환경을 위하여 동작할 수 있다. 본 명세서에 개시된 기술이 적용될 수 있는 컴퓨팅 장치(200)는, 예를 들어, 퍼스널 컴퓨터(personal computer), 서버 컴퓨터(server computer), 핸드-헬드 장치(handheld device) 또는 랩톱 장치(laptop device), 태블릿 장치(tablet), 멀티프로세서 시스템(multiprocessor system), 마이크로프로세서 기반 시스템(microprocessor-based system), 셋톱 박스(set-top boxes), 프로그램가능한 소비자 가전제품(programmable consumer electronics), 네트워크 PC(network PCs), 미니컴퓨터(minicomputers), 메인프레임 컴퓨터(mainframe computers), 상기 시스템이나 장치 등의 임의의 것을 포함하는 분산 컴퓨팅 환경(distributed computing environment)을 포함할 수 있다.
본 명세서에 개시된 기술은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 일반적인 명령어 형태로 표현될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하고 또는 특정 추상 데이터 유형을 구현하는 루틴(routine), 프로그램(program), 객체(object), 컴포넌트(component), 데이터 구조(data structure) 등을 포함한다. 또한, 본 명세서에 개시된 기술은 통신 네트워크를 통해 링크된 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및/또는 원격 컴퓨터 저장 매체에 위치할 수 있다.
도 2를 참조하면, 본 명세서에 개시된 기술이 적용될 수 있는 예시적 시스템은 컴퓨터(200) 형태로 구현될 수 있는 범용 컴퓨팅 장치를 포함한다. 컴퓨터(200)는 프로세서(210), 시스템 메모리(220) 및 시스템 메모리(220)를 포함하는 각종 시스템 컴포넌트를 처리 장치(210)에 결합시키는 시스템 버스(215)를 포함할 수 있으나, 이에 제한되는 것은 아니다. 시스템 버스(215)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 포함하는 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예를 들면, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스 및 PCI(peripheral component interconnect) 버스 등을 포함할 수 있으나, 이에 제한되는 것은 아니다.
컴퓨터(200)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함할 수 있다. 컴퓨터(200)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다. 예를 들어, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있으나, 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위해 모든 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(200)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 그 밖의 전송 방식에 의하여 변조된 데이터 시그널(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 탑재하여 전달할 수 있으며, 일반적으로 모든 정보 전달 매체를 포함한다. '변조된 데이터 시그널'이라는 용어는, 시그널 내에 정보가 인코딩 되도록 시그널의 한 가지 이상의 특성을 설정하거나 변경시킨 시그널을 의미한다. 예를 들면, 통신 매체는 유선 네트워크 또는 직접 연결을 통하는 유선 매체, 그리고 소리, RF, 적외선 등과 같은 무선 매체를 포함하며, 다만 이에 제한되는 것은 아니다. 이상의 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함될 수 있다.
시스템 메모리(220)는 ROM(Read-Only Memory)(221) 및 RAM(Random Access Memory)(132)와 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 저장 매체를 포함한다. 비휘발성 메모리인 ROM(221)에는 일반적으로 컴퓨터(220)가 부팅될 때 내부 컴포넌트들 사이의 데이터 전송을 수행하는 기본 루틴을 포함하는 BIOS(Basic Input/Output System)를 포함한다. RAM(222)은 일반적으로 프로세서(210)에 즉시 액세스 가능하고 및/또는 현재 프로세서(210)에 의해 동작되는 데이터 및/또는 프로그램 모듈을 포함한다. 예를 들어, RAM(222)은 운영 체제(OS), 애플리케이션 프로그램, 기타 프로그램 모듈 및 프로그램 데이터 등을 포함하는 프로그램 모듈일 수 있으며, 이에 제한되는 것은 아니다.
컴퓨터(200)는 또한 기타 이동식(removable)/비이동식(non-removable), 휘발성/비휘발성 컴퓨터 저장매체를 포함하도록 구성될 수 있다. 도 2를 참조하여 예를 들면, 컴퓨터(200)는 비이동식, 비휘발성 자기 매체인 HDD(Hard Disk Drive)에 데이터를 기록하고 이로부터 데이터를 판독하기 위한 비이동식 메모리 인터페이스(250)을 포함하도록 구성되거나, 이동식, 비휘발성 플래시메모리 매체에 데이터를 기록하고 이로부터 데이터를 판독하기 위한 이동식 메모리 인터페이스(260)를 포함하도록 구성될 수 있다. 예를 들어, 컴퓨터(200)와 연결되어 사용될 수 있는 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, SSD(Solid State Disk) 등이 있지만 이에 제한되는 것은 아니다.
컴퓨터(200)는 저장 매체에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 컴퓨터(200)의 다른 데이터를 기록하거나 판독할 수 있다. 예를 들어, 컴퓨터는 디스크 드라이브는 운영 체제(OS), 애플리케이션 프로그램, 기타 프로그램 모듈 및 프로그램 데이터를 기록하거나 판독할 수 있다. 컴퓨터(200)는 저장 매체로부터 데이터를 판독하여 시스템 메모리(220)에 로딩할 수 있다.
컴퓨터(200)는 하나 이상의 원격 컴퓨터와 연결된 네트워크 환경(networked environment)에서 동작할 수 있다. 컴퓨터(200)가 네트워크 환경에서 동작하는 경우 네트워크 인터페이스(270)를 통해 원격 컴퓨터와 연결될 수 있다. 원격 컴퓨터는 다른 컴퓨팅 장치, 예를 들어, 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 공통 네트워크 노드일 수 있으며, 일반적으로 컴퓨터(200)와 연관 지어 설명된 구성요소의 적어도 일부 또는 전부를 포함하도록 구성될 수 있다. 이와 같은 네트워크 환경은 사무실, 기업 네트워크, 인트라넷 및 인터넷에서 흔히 볼 수 있다.
컴퓨팅 장치에서 사용가능한 저장 공간은 일반적으로 DAS(Direct Attached Storage), NAS(Network Attached Storage) 및 SAN(Storage Area Network)로 분류할 수 있다. 컴퓨팅 장치에 직접 저장 매체를 연결하는 DAS 방식의 경우는, 예를 들어, 비이동식 인터페이스(250) 또는 이동식 메모리 인터페이스(260)를 통해 데이터를 저장 매체에 기록하고 이로부터 판독하는 방식일 수 있다. 네트워크 환경의 원격 컴퓨터가 NAS 또는 SAN 방식으로 컴퓨터(200)를 위해 저장 공간을 제공하는 경우, 컴퓨터(200)는 네트워크 인터페이스(270)를 통해 원격 컴퓨터에 접속하여 NAS 또는 SAN 방식으로 데이터를 저장 공간에 기록하고 이로부터 판독할 수 있다.
컴퓨터(200)는 비디오 인터페이스(230)를 통해 모니터 등의 디스플레이 장치와 연결될 수 있다. 또한, 컴퓨터(200)는 사용자 입력 인터페이스(280)를 통해 키보드, 마우스, 마이크, 전자 디지타이저, 스캐너, 카메라 등의 입력 장치로부터 명령 및 정보를 수신할 수 있다. 또한, 컴퓨터(200)는 주변장치 인터페이스(240)를 통해 프린터, 스피커 등과 같은 주변장치와 연결될 수 있다.
도 3은 본 명세서에 개시된 기술이 적용될 수 있는 전자 장치의 예시적인 프로그램 모듈의 블록도이다.
한 실시 예에 따르면, 프로그램 모듈(300)(예를 들어, 도 1의 메모리(130)에 저장되는 프로그램)은 전자 장치(예를 들어, 도 1의 전자 장치(101))에 관련된 자원을 제어하는 운영 체제(Operating System; OS) 및/또는 운영 체제 상에서 구동되는 다양한 응용 프로그램(어플리케이션, 앱 등)을 포함할 수 있다. 비교적 고성능의 전자 장치를 위한 운영 체제는, 예를 들어, 윈도즈(Windows) 또는 리눅스(Linux) 등이 될 수 있으며, 비교적 낮은 성능의 전자 장치를 위한 운영체제는, 예를 들어, 안드로이드(Android), iOS, RTOS(Realtime OS), 리눅스(Linux), 또는 타이젠(tizen) 등이 될 수 있다.
상기 프로그램 모듈(300)은 커널, 미들웨어, 어플리케이션 프로그래밍 인터페이스(application programming interface; API), 및/또는 응용 프로그램을 포함하도록 구성될 수 있다. 상기 프로그램 모듈(300)의 적어도 일부는 전자 장치 상에 설치 또는 프리로드(preload)되어 있을 수 있으며, 외부 전자 장치(예를 들어, 도 1의 외부 전자 장치(102, 104), 서버(106) 등)로부터 다운로드(download) 가능하다.
상기 커널은, 예를 들어, 시스템 리소스 매니저 및/또는 디바이스 드라이버를 포함할 수 있다. 상기 시스템 리소스 매니저는 시스템 리소스의 제어, 할당, 또는 회수 등을 수행할 수 있다. 한 실시 예에 따르면, 상기 시스템 리소스 매니저는 프로세스 관리부, 메모리 관리부, 또는 파일 시스템 관리부 등을 포함할 수 있다. 상기 디바이스 드라이버는, 예를 들어, 디스플레이 드라이버, 카메라 드라이버, 블루투스 드라이버, 공유 메모리 드라이버, USB 드라이버, 키패드 드라이버, 네트워크 드라이버, Wi-Fi 드라이버, 오디오 드라이버, 또는 IPC(inter process communication) 드라이버를 포함할 수 있다.
상기 미들웨어는, 예를 들어, 상기 응용 프로그램이 공통적으로 필요로 하는 기능을 제공하거나, 상기 응용 프로그램이 전자 장치 내부의 제한된 시스템 자원을 효율적으로 사용할 수 있도록 상기 API를 통해 다양한 기능들을 상기 응용프로그램 형태로 제공할 수 있다.
상기 API는, 예를 들어, API 프로그래밍 함수들의 집합이며, 응용 프로그램이 상기 API를 통하여 상기 커널 및/또는 상기 미들웨어가 제공하는 기능을 사용할 수 있다. 상기 API는 운영 체제의 종류와 관계없이 공통적으로 따르는 API와 운영체제에 따라 서로 다르게 구성된 API로 분류될 수 있다. API 함수가 운영 체제에 대한 종속성을 가지지 않고 서로 다른 운영 체제에서 널리 공통적으로 사용되는 형태를 지원하는 경우, 장치 내에서 실행되는 응용 프로그램들은 이미 널리 알려진 API를 이용하여 운영 체제가 제공하는 리소스에 접근할 수 있다. 여러 운영 체제에 걸쳐 공통된 형태를 가지도록 표준화된 API로는 POSIX(Portable Operating System Interface) 규칙이 있다. POSIX 규칙에 따른 파일 입출력은, 예를 들면, 열기(open), 쓰기(저장)(write), 읽기(판독)(read), 닫기(close) 등과 같은 입출력 인터페이스를 통해서 수행될 수 있다. 한 실시 예에서, 상기 API 함수는 운영 체제에 의해 제공되는 것으로, 사용자 모드(user mode)에서 동작하는 응용 프로그램이 커널 모드(kernel mode)에 시스템 동작을 수행하기 위하여 호출하는 함수일 수 있다. 이 경우 상기 API 함수는 사용자 모드와 커널 모드의 경계에 위치하는 함수의 집합일 수 있다. 한 실시 예에서, 상기 API는 시스템의 다린 래퍼 함수(wrapper function)으로서 동작하는 것으로 하나 이상의 시스템 API를 조합한 기능을 수행하도록 설계된 것일 수 있다.
상기 응용 프로그램은 상기 전자 장치의 용도에 따라 다양한 종류가 존재한다. 한 실시 예에서 상기 전자 장치가 통신 기능을 제공하는 이동 단말기인 경우에는 상기 응용 프로그램은, 예를 들어, 다이얼러, SMS/MMS, IM, 주소록 등의 통신용 프로그램을 포함할 수 있다. 한 실시 예에서 상기 전자 장치가 컴퓨터인 경우에는 상기 응용 프로그램은, 예를 들어, 문서 작성 프로그램, 이메일 프로그램, 업무 관리 프로그램 등 생산성(Productivity) 관련 프로그램을 포함할 수 있다.
도 3은 전자 장치를 구성하는 프로그램 모듈의 일부를 예시적으로 도시한다. 상기 프로그램 모듈(300)은 응용 프로그램으로서 제1 프로그램(311), 제2 프로그램(312) 및 제3 프로그램(313)을 포함할 수 있으나, 이는 예시적으로 도시한 것으로 응용 프로그램의 수는 이에 제한되지 아니한다.
한 실시 예에서, 상기 API 함수(320)는 운영 체제가 제공하는 파일 입출력 인터페이스일 수 있다. 상기 응용 프로그램들은 파일 입출력 API 함수(320)를 통해 하위 모듈인 파일 시스템 모듈(331, 332, 333)이 제공하는 파일 읽기 및/또는 쓰기 기능을 이용할 수 있다.
상기 파일 시스템 모듈들(331, 332, 333)은 서로 다른 파일 시스템에 대한 파일 입출력을 처리하도록 구현된 것이나, 이는 예시적으로 도시한 것일 뿐 파일 시스템 모듈들의 수는 이에 제한되지 아니한다. 실시 예에 따라, 상기 응용 프로그램이 요청하는 파일 입출력의 대상 파일의 저장 공간에 따라 상기 파일 시스템 모듈들 중에서 이를 처리할 파일 시스템 모듈이 선택될 수 있다.
도 3을 참조하여 설명하면, 상기 응용 프로그램(311, 312, 313)은 복수의 파일 시스템 모듈(331, 332, 333)이 공통으로 지원하는 API 형태를 가진 인터페이스(320)를 통해 대상 파일에 대한 파일 입출력을 요청할 수 있으며, 이 경우 상기 복수의 파일 시스템 모듈 중에서 상기 대상 파일의 위치를 기초로 결정되는 어느 한 파일 시스템 모듈이 상기 요청을 처리할 수 있다. 예를 들어, 상기 제1 파일 시스템 모듈(331)은 네트워크 파일 시스템으로서 네트워크로 연결된 다른 장치와 데이터를 송수신하며 상기 응용 프로그램으로부터 수신한 파일 입출력 요청을 수행할 수 있다. 다만, 이러한 경우에도 상기 제1 파일 시스템(331)이 상기 응용 프로그램의 파일 입출력 요청을 처리하기 위하여 상기 대상 파일의 일부, 상기 대상 파일 처리과정에 생성될 수 있는 임시 파일 또는 그 밖의 중간 데이터를 다른 저장 매체 인터페이스(예를 들어, 저장 매체 인터페이스(343))를 이용하여 상기 전자 장치 내의 저장소에 저장 및/또는 판독할 수 있는 가능성이 배제되지 아니한다.
한 실시 예에서, 상기 제1 파일 시스템 모듈(331)은 네트워크 인터페이스(341)(예를 들어, 도 1의 통신 인터페이스(170) 또는 도 2의 네트워크 인터페이스(270))를 통해 네트워크 환경에 존재하는 파일 저장 서버(350)(예를 들어, 도 1의 서버(105))에 파일을 저장할 수 있다. 본 명세서에 개시된 파일 유출 방지 기술의 한 실시 예는 네트워크 상에 존재하는 저장소를 응용 프로그램이 요청하는 파일 입출력과 연관된 저장 영역으로 사용할 수 있다. 또한, 다른 실시 예에서, 상기 파일 저장 서버(350)는 복수의 서버들(351a, 351b, 351c, 351d)을 포함하도록 구성되는 분산 저장소일 수 있으며, 이 경우 상기 복수의 서버들의 수는 예시적인 것일 뿐 이에 제한되지는 아니한다.
한편, 예를 들어, 상기 제2 파일 시스템 모듈(332)은 저장 매체 인터페이스(343)(예를 들어, 도 2의 비이동식 메모리 인터페이스(250))를 이용하여 상기 전자 장치 내에 존재하는 저장 매체(360)(예를 들어 도 1의 비휘발성 메모리(133))에 파일을 저장할 수 있다. 상기 파일 시스템 모듈이, 상기 저장소를 이용하여 저장하지 않는 것으로 판단되는 응용 프로그램 및/또는 대상 파일의 종류에 대하여 저장 요청을 수신하는 경우, 상기 요청이 동일한 인터페이스(320)를 이용하여 수신 된 것이라 하더라도 상기 저장소(350)가 아닌 상기 저장 매체 인터페이스(343)를 통한 별도의 저장 매체에 저장된다.
본 명세서에 개시된 파일 시스템 모듈은 복수의 응용 프로그램이 공통적으로 사용하는 API 형태를 통해 파일 입출력 요청을 수신한다. 응용 프로그램에 대한 별다른 변형 없이 파일 유출 방지를 지원하기 위해서는 상기 인터페이스는 일반적으로 응용 프로그램에 의하여 공통적으로 호출되는 형태와 동일할 필요가 있다. 만약, 전자 장치 또는 응용 프로그램의 사용자가 별다른 만약 응용 프로그램 중 어느 하나가 본 명세서에 개시된 파일 유출 방지 방법을 수행하기 위하여 특수한 API를 호출해야 한다면, 상기 응용 프로그램은 상기 특수 API를 사용할 수 있도록 제작되어, 재컴파일되고, 배포되어야 하는 문제가 발생할 수 있다. 따라서, 본 명세서에 개시된 파일 유출 방지 방법은 공통적인 인터페이스를 통해 호출되고, 이를 처리하는 하위 레벨의 파일 시스템 모듈에 구현될 필요가 있다. 예를 들어, 상기 공통으로 호출될 수 있는 API 형태는 POSIX 규격을 따르는 인터페이스 또는 FUSE(Filesystem in User-Space)에 따른 인터페이스일 수 있다.
다양한 실시예에 따르면, 상기 프로그램 모듈(300)의 적어도 일부는 소프트웨어, 펌웨어, 하드웨어, 또는 이들 중 적어도 둘 이상의 조합으로 구현될 수 있다. 상기 프로그램 모듈(300)의 적어도 일부는, 예를 들어, 프로세서(예: 상기 프로세서(210))에 의해 구현(implement)(예: 실행)될 수 있다. 상기 프로그램 모듈(300)의 적어도 일부는 하나 이상의 기능을 수행하기 위한, 예를 들어, 모듈, 프로그램, 루틴, 명령어 세트(sets of instructions) 또는 프로세스 등을 포함할 수 있다.
본 문서에서 사용된 용어 "모듈"은, 예를 들어, 하드웨어, 소프트웨어 또는 펌웨어(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)에 저장된 명령어로 구현될 수 있다. 상기 명령어가 프로세서(예: 상기 프로세서(120))에 의해 실행될 경우, 상기 하나 이상의 프로세서가상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들어, 상기 메모리(130)가 될 수 있다.
컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체(optical media)(예: CD-ROM(compact disc read only memory), DVD(digitalversatile disc), 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크(floptical disk)), 하드웨어 장치(예: ROM(read only memory), RAM(random access memory), 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
다양한 실시예에 따른 모듈 또는 프로그램 모듈은 전술된 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시예에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
도 4는 본 명세서에 개시된 기술에 따른 파일 저장 요청에 대한 처리 동작을 수행하는 예시적인 흐름도이다. 본 명세서에 개시된 기술은 파일 유출 방지를 위해서 대상 파일에 대한 접근 통제 수단을 제공하며, 상기 접근 통제는 미리 설정된 정책(policy)에 따라 정상적인 파일 사용에만 접근을 허용하는 방식이다. 본 명세서에 개시된 파일 유출 방지 기술은 파일의 입출력 요청을 처리하는 파일 시스템에 구현될 수 있다. 따라서 상기 파일 유출 방지 기술은 일반적인 응용 프로그램이 사용하는 규격화된 파일 입출력 API를 사용할 수 있으며, 종래의 파일 유출 방지 기술이 파일 시스템 모듈의 조력을 받지 못하여 상기 응용 프로그램이 접근할 수 있는 별도의 임시 파일을 만드는 등의 보안상 취약한 동작을 수행하지 않아도 되는 장점이 있다.
먼저, 전자 장치는 시스템 내의 응용 프로그램들에 의해 공통으로 호출될 수 있는 API 형태의 파일 입출력 인터페이스를 통해 대상 파일에 대한 저장 요청을 수신한다(410). 상기 저장 요청에는 상기 대상 파일에 대한 이름, 상기 대상 파일을 저장할 위치와 연관된 저장 경로 등을 포함할 수 있다. 상기 공통으로 호출될 수 있는 API 형태는 POSIX 또는 FUSE(Filesystem in User-Space)를 포함할 수 있다.
상기 전자 장치는 상기 저장 요청이 상기 미리 설정된 정책에 부합하는지 여부를 판단할 수 있다(420). 상기 정책에 부합하는지 여부는 상기 정책 내의 다양한 항목에 따라 판단 가능하다. 상기 전자 장치는 본 명세서에 개시된 파일 보호 방법을 적용할 것인지 여부를 결정하기 위해 사용되는 조건들을 미리 저장하고 있다. 상기 조건들은 정책(policy), 설정 값(configurations) 등 다양한 용어로 호칭될 수 있으며, 상기 전자 장치에 미리 설정되어 있거나, 필요에 따라 갱신될 수 있다. 상기 정책은 일반적으로 사용자 식별 정보, 사용 시기, 사용 장치 식별 정보, 사용 위치, 사용 프로그램 등에 대한 조건을 포함하고 있으며, 상기 조건들 중 필수적인 조건들에 대하여 적합한 경우에 파일 유출을 방지하기 위한 후속 조치들이 이루어 질 수 있다.
한 실시 예에서, 상기 전자 장치는 상기 저장 요청이 상기 정책에 부합하는지 여부를 판단하기 위하여 상기 대상 파일의 형태(type)가 미리 설정된 정책 내의 허용 형태 목록에 포함되어 있는지 여부를 판단할 수 있다(421).
즉, 상기 전자 장치는 상기 대상 파일의 종류에 적어도 일부(at least partially) 기초하여 상기 대상 파일을 암호화할지 여부를 판단할 수 있다(421). 상기 대상 파일의 종류는 상기 대상 파일의 이름에 포함된 확장자(extension), 상기 대상 파일의 형식에 기초로 판단한 파일의 종류 또는 MIME(Multipurpose Internet Mail Extensions) 타입 등을 이용할 수 있다. 한 실시 예에서, 상기 암호화 대상 파일의 종류로, 문서, 메일, 그림, 텍스트 또는 압축 파일 등이 포함될 수 있다.
다른 실시 예에서, 상기 저장 요청이 상기 정책에 포함된 다른 조건들에 부합하는지 여부를 판단해야 하는 경우, 상기 전자 장치는 상기 다른 조건들에 만족하는 경우에만 저장소에 저장하거나 상기 대상 파일을 암호화하도록 결정하는 동작들을 수행할 수 있다(423). 예를 들어, 상기 전자 장치는 상기 응용 프로그램이 상기 미리 설정된 정책 내의 상기 대상 파일의 형태를 위한 프로그램 목록에 포함되어 있는지 여부를 판단할 수 있다. 즉, 상기 전자 장치는 상기 응용 프로그램이 상기 대상 파일의 형태와 연관(association)되어 있지 않아 상기 대상 파일 형태와의 연관 프로그램 목록에 포함되어 있지 않은 경우에는 상기 저장 요청이 상기 정책에 부합하지 않는 것으로 판단할 수 있다. 이 경우 상기 저장 장치는 상기 저장 요청에 대응하여 오류 값으로 응답하고 상기 저장 요청에 대한 처리 동작을 중단할 수 있다.
상기 전자 장치는 상기 저장 요청이 상기 미리 설정된 정책에 부합하지 않는 경우 상기 대상 파일을 암호화하지 않고 평문의 형태로 저장소에 저장할 수 있다(430)
상기 대상 파일에 대한 암호화는 PKI(public key infrastructure) 기반의 암호화뿐 아니라, 데이터 스크램블링(scrambling) 등의 다양한 방식의 난독화 방법을 포함할 수 있다. 상기 암호화는 상기 대상 파일에 대한 기밀성(confidentiality)을 보장하기 위한 것이며, 한 실시 예에 따라 상기 저장소가 분산 저장소 형태로 구현되는 경우 각 분산 저장소를 구성하는 서버들에 대한 정보를 상기 암호화 동작에 포함하여, 상기 서버들 중 일부의 유출이 발생하는 경우에도 전체로서의 상기 대상 파일에 대한 기밀성은 보장될 수 있도록 할 수 있다. 이 경우 상기 저장소를 구성하는 상기 분산된 서버는 하나 이상의 NAS(Network Attached Storage) 서버를 포함하도록 구성될 수 있다.
한 실시 예에서 상기 대상 파일을 암호화 하는 동작은 상기 대상 파일을 기초로 하나 이상의 암호화된 청크(chunk)로 구성된 보호 데이터(protected data)를 생성할 수 있다. 상기 하나 이상의 암호화된 청크는 그 중 일부가 유출되더라도 상기 보호 데이터 또는 상기 대상 파일이 유출되는 것으로 인식될 수 없다. 이를 위하여 상기 각 청크에는 상기 각 분산된 서버로부터 획득할 수 있는 정보가 포함될 수 있다. 이후 상기 하나 이상의 청크는 상기 저장소를 구성하는 분산된 서버에 각각 분배되어 저장될 수 있다.
상기 전자 장치는 상기 암호화된 대상 파일을 상기 저장소에 저장한다(450). 이는 상기 전자 장치 내의 통신 인터페이스에 의하여 네트워크 상에 존재하는 저장소로 상기 암호화된 대상 파일을 보내는 동작일 수 있다.
도 5는 본 명세서에 개시된 기술에 따른 파일 읽기 요청에 대한 처리 동작을 수행하는 예시적인 흐름도이다. 상기 판독 요청에 따른 처리 동작은 도 4를 참조하여 설명된 저장 요청에 대한 처리 동작과 별개로 수행되거나 또는 연속적으로 수행될 수 있다.
먼저, 전자 장치는 상기 파일 입출력 인터페이스를 통해 대상 파일에 대한 읽기(판독) 요청을 수신한다(510). 상기 읽기 요청에는 상기 대상 파일에 대한 이름, 상기 대상 파일에 접근 가능한 위치와 연관된 저장 경로 등을 포함할 수 있다. 상기 전자 장치는 상기 읽기 요청이 상기 미리 설정된 정책에 부합하는지 여부를 판단할 수 있다(520).
한 실시 예에서, 상기 전자 장치는 상기 정책 내에 포함된 응용 프로그램의 목록에 포함된 프로그램을 위하여 상기 저장소에 암호문 형태로 되어 있는 파일들을 평문 형태로 복호화할 수 있다. 이를 위하여, 상기 전자 장치는 상기 읽기 요청을 전송한 상기 응용 프로그램이 상기 정책 내의 허용된 프로그램 목록에 포함되는지 여부를 판단할 수 있다(521). 반대로, 상기 정책 내의 상기 허용된 프로그램 목록에 포함되지 않은 응용 프로그램의 경우 복호화 과정을 거치지 않기 때문에 상기 저장소에 저장된 대상 파일을 암호문 형태 그대로 응답으로 돌려 받을 수 있다. 즉, 상기 공통적인 파일 입출력 인터페이스 내부에서 상기 정책에 따라 복호화 기능이 수행될 수 있다. 이는 상기 저장소에 저장된 파일들에 대하여 등록되지 않은 응용 프로그램에 의한 허가되지 않은 접근을 차단하는 것이다.
다른 실시 예에서, 상기 전자 장치는 상기 읽기 요청을 전송한 상기 응용프로그램이 상기 읽기 요청된 대상 파일의 형태와 연관되어 있는지 여부를 판단할 수 있다(523). 상기 정책은 특정 파일 형태에 대하여 접근할 수 있는 응용 프로그램의 목록을 포함할 수 있다. 즉, 상기 정책은 사용자가 지정된 파일 종류에 대하여 지정된 응용 프로그램만 사용하도록 강제할 수 있다. 예를 들어, 특정 포맷의 문서 파일에 접근할 수 있는 응용 프로그램의 목록에 특정 문서 편집 프로그램만 포함되어 있는 경우, 이와 다른 별도의 문서 편집기 또는 운영 체제의 파일 매니져 프로그램에 의한 읽기 요청은 불가능 하도록 설정되어 있는 것이다.
또한, 실시 예에 따라서, 상기 응용 프로그램의 종류 외에 별도의 정책을 적용해야 하는 경우, 필수적인 정책에 부합하는지 여부를 판단할 수 있다(525). 예를 들어, 상기 정책은 특정 파일을 저장할 수 있는 장치 목록, 장소 또는 네트워크 주소 목록, 운영체제 목록, 시간 대역 등을 포함하여 해당 조건에 부합하는지 여부를 추가로 판단할 수 있다.
상기 응용 프로그램의 종류 및/또는 기타 다른 정책에 부합하는 것으로 판단되는 경우, 상기 암호화된 대상 파일을 평문 형태로 복호화하고(540), 상기 평문 형태의 상기 대상 파일을 상기 읽기 요청에 대한 응답으로 전송한다(550). 그 밖의 경우는 상기 저장소에 저장되어 있는 암호문 형태의 대상 파일을 상기 읽기 요청에 대한 응답으로 전송할 수 있다(560).
도 6은 본 명세서에 개시된 기술에 따른 파일 저장 요청 및 파일 읽기 요청에 대한 처리 동작을 수행하는 예시적인 흐름도이다. 도 6은 본 명세서의 기술이 적용된 파일 시스템 모듈에 대하여 서로 다른 응용 프로그램이 저장 요청 및 읽기 요청을 처리하는 동작을 나타낸다. 도 4 및 도 5를 참조하여 설명된 부분 중 중복되는 내용은 생략한다.
먼저, 전자 장치는 파일 입출력 인터페이스를 통해 대상 파일에 대한 제1 프로그램의 저장 요청을 수신한다(611). 상기 전자 장치는 상기 대상 파일의 형태(type)가 미리 설정된 정책 내의 허용 형태 목록에 포함되어 있는지 여부를 판단할 수 있다(613). 또한, 상기 저장 요청이 상기 정책에 포함된 다른 조건들에 부합하는지 여부를 판단해야 하는 경우, 상기 전자 장치는 상기 다른 조건들에 만족하는 경우에만 이후 암호화 동작들을 수행할 수 있다(615). 예를 들어, 상기 전자 장치는 상기 제1 프로그램이 상기 미리 설정된 정책 내의 상기 대상 파일의 형태를 위한 프로그램 목록에 포함되어 있는지 여부를 판단할 수 있다.
상기 대상 파일의 형태가 상기 허용 형태 목록에 포함되어 있는 경우 또는 기타 정책에 부합하는 경우, 상기 전자 장치는 상기 대상 파일의 저장 영역을 저장소로 지정하고 상기 대상 파일을 암호화 할 수있다. (617). 반대로, 상기 저장 요청이 상기 정책에 부합하지 않는 경우, 상기 전자 장치는 상기 대상 파일에 대하여 저장소가 아닌 다른 저장 매체를 저장 영역으로 지정하여 저장하거나, 상기 저장소 내에 암호화하지 않은 평문 형태로 저장할 수 있다(619). 상기 전자 장치는 상기 암호화된 대상 파일을 상기 네트워크로 연결된 저장소에 저장한다(621).
이후, 상기 전자 장치는 제2 프로그램으로부터 상기 파일 입출력 인터페이스를 통해 대상 파일에 대한 읽기(판독) 요청을 수신할 수 있다(551). 상기 전자 장치는 상기 제2 프로그램이 미리 설정된 프로그램 목록에 포함되어 있는지 여부를 판단할 수 있다(653). 또한, 실시 예에 따라서, 상기 전자 장치는 상기 제2 프로그램이 상기 읽기 요청된 상기 대상 파일의 형태와 연관되어 있는지 여부를 판단할 수 있다(655). 또한, 실시 예에 따라서 상기 전자 장치는 그 밖에 상기 정책 내의 필수적인 정책에 부합하는지 여부를 판단할 수 있다(657). 상기 제2 프로그램의 종류 및/또는 기타 다른 정책에 부합하는 것으로 판단되는 경우, 상기 암호화된 대상 파일을 평문 형태로 복호화하고(659), 상기 평문 형태의 상기 대상 파일을 상기 읽기 요청에 대한 응답으로 전송한다(661). 그 밖의 경우는 상기 읽기 요청에 대한 응답으로 오류 메시지를 전송하거나 또는 상기 저장소에 저장되어 있는 암호문 형태의 대상 파일을 전송할 수 있다(663).
상기 실시 예에 따른 전자 장치에서 상기 제1 프로그램은 상기 미리 설정된 프로그램 목록에 포함되어 있으나 상기 제2 프로그램은 그렇지 않은 경우, 상기 대상 파일은 상기 제1 프로그램에 의하여 저장소에 저장되나 상기 제2 프로그램의 읽기 요청에는 상기 대상 파일이 암호화된 채로 수신되어 내용의 기밀성이 유지될 수 있다. 예를 들어, 상기 제1 프로그램이 오피스와 같은 문서 작성 프로그램에 해당하고, 상기 제2 프로그램이 탐색기와 같은 파일 관리 프로그램일 수 있다. 이 경우, 상기 제1 프로그램에 의해 작성된 문서를 저장하려 할 때 상기 대상 문서는 암호화되어 저장소에 저장되나, (상기 제1 프로그램이 아닌) 일반적인 기능을 가진 탐색기에 의한 다른 장치 또는 로컬 저장장치로의 복사를 시도하는 경우, 허용된 응용 프로그램이 아니므로, 암호화된 채로 복사가 이루어져, 복호화하는 방법 또는 키 값을 알 지 못하는 경우 상기 대상 파일을 접근할 수 없게 된다.
한편, 상기 읽기 요청을 수신하는 동작에서(651), 상기 파일 시스템 모듈이 동일한 상기 제1 프로그램으로부터 상기 암호화된 대상 파일에 대한 읽기 요청을 수신하는 경우, 상기 제1 프로그램에 대한 허용 여부는 상기 저장 요청에 대한 처리 중에 프로그램 목록에 해당한다는 것을 알고 있으므로 이후 동작을 생략하고 바로 상기 암호화된 대상 파일을 평문 형태로 복호화하고, 상기 평문 형태의 상기 대상 파일을 상기 읽기 요청에 대한 응답 전송할 수 있다.
도 7은 응용 프로그램에 의해 호출되는 인터페이스를 도시한다. 본 명세서에 개시된 기술이 적용될 수 있는 파일 시스템 모듈은 파일 저장 요청을 위한 제1 인터페이스 및 파일 읽기 요청을 위한 제2 인터페이스를 포함한 파일 입출력 인터페이스를 포함하여 구현될 수 있다.
즉, 상기 파일 시스템 모듈이 상기 저장 요청을 처리하는 동작은, 상기 파일 입출력 인터페이스들 중 제1 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 대상 파일에 대한 저장 요청을 수신하는 동작; 상기 대상 파일의 형태(type)가 미리 설정된 정책 내의 허용 형태 목록에 포함되어 있는지 여부를 판단하는 동작; 상기 대상 파일의 형태가 상기 허용 형태 목록에 포함되어 있는 것으로 판단되는 경우, 상기 대상 파일을 암호화하는 동작; 및 상기 암호화된 대상 파일을 네트워크로 연결된 저장소에 저장하는 동작을 포함할 수 있다.
또한, 상기 파일 시스템 모듈이 상기 읽기 요청을 처리하는 동작은, 상기 파일 입출력 인터페이스들 중 제2 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 상기 대상 파일에 대한 읽기 요청을 수신하는 동작, 상기 대상 파일은 암호문 형태로 네트워크로 연결된 저장소에 저장되어 있고; 상기 응용 프로그램이 미리 설정된 정책 내의 허용된 프로그램 목록에 포함되고, 상기 응용프로그램이 상기 대상 파일의 형태(type)과 연관되어 있는 경우, 상기 암호화된 대상 파일을 평문 형태로 복호화하고, 상기 평문 형태의 상기 대상 파일을 상기 읽기 요청에 대한 응답으로 전송하는 동작; 및 상기 응용 프로그램이 상기 정책 내의 상기 허용된 프로그램 목록에 포함되어 있지 않은 경우, 상기 대상 파일을 암호문 형태로 상기 읽기 요청에 대한 응답으로 전송하는 동작을 포함할 수 있다.
한 실시 예에서, 상기 파일 입출력 인터페이스는 POSIX 규약을 따르는 시스템 API일 수 있다. 도 7(a)를 참조하면, 상기 파일 입출력 인터페이스(710)는 사용자 모드와 커널 모드를 구분하는 시스템 API일 수 있다. 이 경우 본 명세서에 개시된 기술에 따른 파일 유출 방지 방법은 운영 체제의 일부에 해당하는 파일 시스템 모듈에 포함되도록 구현될 수 있다. 예를 들어, 상기 저장 요청을 위한 인터페이스는 open, write 또는 close 등의 함수일 수 있으며, 상기 읽기 요청을 위한 인터페이스는 open, read 또는 close 등의 함수 일 수 있다.
다른 실시 예에서, 상기 파일 입출력 인터페이스는 프로그램 모듈 상의 미들웨어 또는 프레임워크 상의 래퍼 API(wrapper API)일 수 있다. 도 7(b)를 참조하면, 상기 파일 입출력 인터페이스(720)는 시스템 제공자 또는 독립적인 프레임워크 제공자에 의해 배치될 수 있는 프레임워크의 API일 수 있다. 이 경우 본 명세서에 개시된 기술에 따른 파일 유출 방지 방법은 프레임워크의 일부에 해당하도록 구현될 수 있다. 예를 들어, 프레임워크 API의 형태로 제공되는 인터페이스는 FUSE(Filesystem in User-Space) API일 수 있다.
도 8은 본 명세서에 개시된 기술이 적용될 수 있는 전자 장치에 대한 블록도이다. 도 8을 참조하면 전자 장치(800)는 프로세서(810), 메모리(820) 및 네트워크 모듈(830)을 포함하도록 구성될 수 있다.
상기 메모리(820)는 응용 프로그램 및 파일 시스템 모듈을 저장할 수 있도록 구성될 수 있다. 상기 파일 시스템 모듈은 상기 응용 프로그램의에 의해 공통으로 호출될 수 있는 API 형태의 파일 입출력 인터페이스들을 통해 수신되는 파일 저장 요청 및 읽기 요청을 처리하는 동작을 실행하는 명령어를 포함하도록 구성될 수 있다.
상기 네트워크 모듈(830)은 네트워크 상에 존재하는 저장소와 연결을 수립하고, 상기 파일 시스템 모듈에 의해 처리되는 대상 파일을 상기 저장소에 송수신하도록 구성될 수 있다.
상기 프로세서(810)는 상기 메모리(820) 및 상기 네트워크 모듈(830)과 전기적으로 연결되어, 상기 대상 파일에 대하여 상기 응용 프로그램의 상기 저장 요청을 처리하는 동작 및 상기 읽기 요청을 처리하는 동작을 수행하도록 구성될 수 있다. 상기 프로세서는 상기 저장 요청을 처리하기 위하여 상기 파일 입출력 인터페이스들 중 제1 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 대상 파일에 대한 저장 요청을 수신하는 동작; 상기 대상 파일의 형태(type)가 미리 설정된 정책 내의 허용 형태 목록에 포함되어 있는지 여부를 판단하는 동작; 상기 대상 파일의 형태가 상기 허용 형태 목록에 포함되어 있는 것으로 판단되는 경우, 상기 대상 파일을 암호화하는 동작; 및 상기 암호화된 대상 파일을 네트워크로 연결된 저장소에 저장하는 동작을 수행할 수 있다.
또한, 상기 프로세서는 상기 읽기 요청을 처리하기 위하여, 상기 파일 입출력 인터페이스들 중 제2 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 상기 대상 파일에 대한 읽기 요청을 수신하는 동작; 상기 응용 프로그램이 미리 설정된 정책 내의 허용된 프로그램 목록에 포함되고, 상기 응용프로그램이 상기 대상 파일의 형태(type)과 연관되어 있는 경우, 상기 암호화된 대상 파일을 평문 형태로 복호화하고, 상기 평문 형태의 상기 대상 파일을 상기 읽기 요청에 대한 응답으로 전송하는 동작; 및 상기 응용 프로그램이 상기 정책 내의 상기 허용된 프로그램 목록에 포함되어 있지 않은 경우, 상기 대상 파일을 암호문 형태로 상기 읽기 요청에 대한 응답으로 전송하는 동작을 수행할 수 있다.
한편, 상기 전자 장치(800)는 도 1을 참조하여 설명된 전자 장치(101) 또는 도 2를 참조하여 설명된 컴퓨팅 장치(200)의 형태로 구현될 수 있다. 상기 전자 장치(101)는 상기 응용 프로그램 및 상기 파일 시스템 모듈을 저장할 수 있도록 구성될 수 있는 상기 메모리(130); 네트워크 상에 존재하는 저장소와 연결을 수립하고, 상기 파일 시스템 모듈에 의해 처리되는 대상 파일을 상기 저장소에 송수신하도록 설정된 상기 통신 인터페이스(170); 및 상기 메모리(130) 및 상기 통신 인터페이스(170)과 전기적으로 연결되어, 상기 대상 파일에 대하여 상기 응용 프로그램의 상기 저장 요청을 처리하는 동작 및 상기 읽기 요청을 처리하는 동작을 수행하도록 구성되는 상기 프로세서(120)를 포함하도록 구성될 수 있다. 이하 중복되는 설명에 대해서는 생략한다.
상기 메모리(820)는 응용 프로그램 및 파일 시스템 모듈을 저장할 수 있도록 구성될 수 있다. 상기 파일 시스템 모듈은 상기 응용 프로그램의에 의해 공통으로 호출될 수 있는 API 형태의 파일 입출력 인터페이스들을 통해 수신되는 파일 저장 요청 및 읽기 요청을 처리하는 동작을 실행하는 명령어를 포함하도록 구성될 수 있다.
상기 네트워크 모듈(830)은 네트워크 상에 존재하는 저장소와 연결을 수립하고, 상기 파일 시스템 모듈에 의해 처리되는 대상 파일을 상기 저장소에 송수신하도록 구성될 수 있다.
상기 프로세서(810)는 상기 메모리(820) 및 상기 네트워크 모듈(830)과 전기적으로 연결되어, 상기 대상 파일에 대하여 상기 응용 프로그램의 상기 저장 요청을 처리하는 동작 및 상기 읽기 요청을 처리하는 동작을 수행하도록 구성될 수 있다.
이상에서 본 명세서의 기술에 대한 바람직한 실시 예가 첨부된 도면들을 참조하여 설명되었다. 여기서, 본 명세서 및 청구 범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니되며, 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야 한다.
본 발명의 범위는 본 명세서에 개시된 실시 예들로 한정되지 아니하고, 본 발명은 본 발명의 사상 및 특허청구범위에 기재된 범주 내에서 다양한 형태로 수정, 변경, 또는 개선될 수 있다.

Claims (14)

  1. 시스템 내의 응용 프로그램들에 의해 공통으로 호출될 수 있는 API(Application Programming Interface) 형태의 파일 입출력 인터페이스를 통해 상기 응용 프로그램들 중 제1 프로그램으로부터 대상 파일에 대한 저장 요청을 수신하는 동작;
    상기 대상 파일의 형태(type)가 미리 설정된 정책 내의 허용 형태 목록에 포함되어 있는지 여부를 판단하는 동작;
    상기 대상 파일의 형태가 상기 허용 형태 목록에 포함되어 있는 것으로 판단되는 경우, 상기 대상 파일을 암호화하는 동작; 및
    상기 암호화된 대상 파일을 네트워크로 연결된 저장소에 저장하는 동작을 포함하는 컴퓨터의 파일 유출 방지 방법.
  2. 제1 항에 있어서, 상기 제1 프로그램이 상기 미리 설정된 정책 내의 상기 대상 파일의 형태를 위한 프로그램 목록에 포함되지 않은 경우, 상기 저장 요청에 대응하여 오류 값으로 응답하는 동작을 더 포함하는 컴퓨터의 파일 유출 방지 방법.
  3. 제1 항에 있어서, 상기 공통으로 호출될 수 있는 API 형태는
    POSIX(Portable Operating System Interface) 또는 FUSE(Filesystem in User-Space)를 포함하는 컴퓨터의 파일 유출 방지 방법.
  4. 제1 항에 있어서,
    상기 대상 파일을 암호화 하는 동작은
    상기 대상 파일의 종류에 적어도 일부 기초하여 상기 대상 파일의 암호화 여부를 판단하는 동작;
    상기 대상 파일이 암호화되는 것으로 판단되는 경우, 상기 대상 파일을 기초로 하나 이상의 암호화된 청크(chunk)로 구성된 보호 데이터(protected data)를 생성하는 동작; 및
    상기 하나 이상의 청크를 상기 저장소를 구성하는 분산된 서버에 각각 분배되어 저장되도록 네트워크 인터페이스를 통해 전송하는 동작
    을 포함하도록 구성된 컴퓨터의 파일 유출 방지 방법.
  5. 제4 항에 있어서,
    상기 저장소를 구성하는 상기 분산된 서버는 하나 이상의 NAS(Network Attached Storage) 서버를 포함하는 컴퓨터의 파일 유출 방지 방법.
  6. 제1 항에 있어서,
    상기 파일 입출력 인터페이스를 통해 상기 응용 프로그램들 중 제2 프로그램으로부터 상기 암호화된 대상 파일에 대한 읽기 요청을 수신하는 동작;
    상기 제2 프로그램으로부터의 상기 읽기 요청이 상기 미리 설정된 정책에 부합하는지 여부를 판단하는 동작;
    상기 읽기 요청이 상기 미리 설정된 정책에 부합하지 않는 것으로 판단되는 경우, 상기 대상 파일을 암호문 형태로 상기 읽기 요청에 대한 응답으로 전송하는 동작;
    상기 읽기 요청이 상기 미리 설정된 정책에 부합하는 것으로 판단되는 경우 상기 대상 파일을 평문 형태로 복호화하고, 상기 평문 형태의 상기 대상 파일을 상기 읽기 요청에 대한 응답으로 전송하는 동작을 더 포함하는 컴퓨터의 파일 유출 방지 방법.
  7. 제6 항에 있어서, 상기 제2 프로그램으로부터의 상기 읽기 요청이 상기 미리 설정된 정책에 부합하는지 여부는
    상기 제2 프로그램이 상기 미리 설정된 정책 내의 허용된 프로그램 목록에 포함되지 않은 경우, 또는 상기 제2 프로그램이 상기 대상 파일에 대한 타입과 연관되어 있지 않은 경우, 상기 정책에 부합하지 않는 것으로 판단하는 컴퓨터의 파일 유출 방지 방법.
  8. 시스템 내의 응용프로그램들에 의해 공통으로 호출될 수 있는 API(Application Programming Interface) 형태의 파일 입출력 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 상기 대상 파일에 대한 읽기 요청을 수신하는 동작, 상기 대상 파일은 암호문 형태로 네트워크로 연결된 저장소에 저장되어 있고;
    상기 응용 프로그램이 미리 설정된 정책 내의 허용된 프로그램 목록에 포함되고, 상기 응용프로그램이 상기 대상 파일의 형태(type)과 연관되어 있는 경우, 상기 암호화된 대상 파일을 평문 형태로 복호화하고, 상기 평문 형태의 상기 대상 파일을 상기 읽기 요청에 대한 응답으로 전송하는 동작; 및
    상기 응용 프로그램이 상기 정책 내의 상기 허용된 프로그램 목록에 포함되어 있지 않은 경우, 상기 대상 파일을 암호문 형태로 상기 읽기 요청에 대한 응답으로 전송하는 동작
    을 포함하는 컴퓨터의 파일 유출 방지 방법.
  9. 응용 프로그램 및 파일 시스템 모듈을 저장하는 메모리, 상기 파일 시스템 모듈은 상기 응용 프로그램의에 의해 공통으로 호출될 수 있는 API 형태의 파일 입출력 인터페이스들을 통해 수신되는 파일 저장 요청 및 읽기 요청을 처리하는 동작을 실행하는 명령어를 포함하도록 구성되고;
    네트워크의 저장소와 연결을 수립하고, 상기 파일 시스템 모듈에 의해 처리되는 대상 파일을 상기 저장소에 송수신하는 네트워크 모듈; 및
    상기 메모리 및 상기 네트워크 모듈과 전기적으로 연결되어, 상기 대상 파일에 대하여 상기 응용 프로그램의 상기 저장 요청을 처리하는 동작 및 상기 읽기 요청을 처리하는 동작을 수행하는 프로세서를 포함하는 파일 유출 방지 장치로서,

    상기 프로세서는 상기 저장 요청을 처리하기 위하여:
    상기 파일 입출력 인터페이스들 중 제1 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 대상 파일에 대한 저장 요청을 수신하는 동작;
    상기 대상 파일의 형태(type)가 미리 설정된 정책 내의 허용 형태 목록에 포함되어 있는지 여부를 판단하는 동작;
    상기 대상 파일의 형태가 상기 허용 형태 목록에 포함되어 있는 것으로 판단되는 경우, 상기 대상 파일을 암호화하는 동작; 및
    상기 암호화된 대상 파일을 네트워크로 연결된 저장소에 저장하는 동작을 수행하고,
    상기 프로세서는 상기 읽기 요청을 처리하기 위하여:
    상기 파일 입출력 인터페이스들 중 제2 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 상기 대상 파일에 대한 읽기 요청을 수신하는 동작, 상기 대상 파일은 암호문 형태로 네트워크로 연결된 저장소에 저장되어 있고;
    상기 응용 프로그램이 미리 설정된 정책 내의 허용된 프로그램 목록에 포함되고, 상기 응용프로그램이 상기 대상 파일의 형태(type)과 연관되어 있는 경우, 상기 암호화된 대상 파일을 평문 형태로 복호화하고, 상기 평문 형태의 상기 대상 파일을 상기 읽기 요청에 대한 응답으로 전송하는 동작; 및
    상기 응용 프로그램이 상기 정책 내의 상기 허용된 프로그램 목록에 포함되어 있지 않은 경우, 상기 대상 파일을 암호문 형태로 상기 읽기 요청에 대한 응답으로 전송하는 동작을 포함하는
    파일 유출 방지 장치.
  10. 제9 항에 있어서,
    상기 파일 시스템 모듈은 상기 전자 장치의 운영체제의 일부에 포함되어 파일 시스템을 처리하는 모듈 중 하나로 구성되고,
    상기 공통으로 호출될 수 있는 API 형태는 상기 운영체제의 파일 입출력 API 형태인 것을 특징으로 하는 파일 유출 방지 장치.
  11. 제10 항에 있어서,
    상기 공통으로 호출될 수 있는 API는 POSIX(Portable Operating System Interface) API를 포함하는 파일 유출 방지 장치.
  12. 제11 항에 있어서,
    상기 저장 요청을 위한 인터페이스는 open, write 또는 close를 포함하고, 상기 읽기 요청을 위한 인터페이스는 open, read 또는 close를 포함하는 파일 유출 방지 장치.
  13. 제9 항에 있어서,
    상기 공통으로 호출될 수 있는 API는 파일 FUSE(Filesystem in User-Space)를 포함하는 파일 유출 방지 장치.
  14. 컴퓨터에서 동작 가능하고, 시스템 내의 응용 프로그램들에 의해 공통으로 호출될 수 있는 API(Application Programming Interface) 형태의 파일 입출력 인터페이스들을 통해 수신되는 대상 파일에 대한 저장 요청 및 읽기 요청을 처리하는 동작을 실행하도록 기록 매체에 저장 가능한 컴퓨터 프로그램으로서,
    상기 저장 요청을 처리하는 동작은:
    상기 파일 입출력 인터페이스들 중 제1 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 대상 파일에 대한 저장 요청을 수신하는 동작;
    상기 대상 파일의 형태(type)가 미리 설정된 정책 내의 허용 형태 목록에 포함되어 있는지 여부를 판단하는 동작;
    상기 대상 파일의 형태가 상기 허용 형태 목록에 포함되어 있는 것으로 판단되는 경우, 상기 대상 파일을 암호화하는 동작; 및
    상기 암호화된 대상 파일을 네트워크로 연결된 저장소에 저장하는 동작을 포함하고,
    상기 읽기 요청을 처리하는 동작은:
    상기 파일 입출력 인터페이스들 중 제2 인터페이스를 통해 상기 응용 프로그램들 중 어느 하나로부터 상기 대상 파일에 대한 읽기 요청을 수신하는 동작, 상기 대상 파일은 암호문 형태로 네트워크로 연결된 저장소에 저장되어 있고;
    상기 응용 프로그램이 미리 설정된 정책 내의 허용된 프로그램 목록에 포함되고, 상기 응용프로그램이 상기 대상 파일의 형태(type)과 연관되어 있는 경우, 상기 암호화된 대상 파일을 평문 형태로 복호화하고, 상기 평문 형태의 상기 대상 파일을 상기 읽기 요청에 대한 응답으로 전송하는 동작; 및
    상기 응용 프로그램이 상기 정책 내의 상기 허용된 프로그램 목록에 포함되어 있지 않은 경우, 상기 대상 파일을 암호문 형태로 상기 읽기 요청에 대한 응답으로 전송하는 동작을 포함하는
    컴퓨터 프로그램.
KR1020170151709A 2017-11-14 2017-11-14 보안 기능을 지원하는 파일 시스템 및 공통적 파일 액세스 인터페이스에 기초한 파일 유출 방지 KR102368208B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170151709A KR102368208B1 (ko) 2017-11-14 2017-11-14 보안 기능을 지원하는 파일 시스템 및 공통적 파일 액세스 인터페이스에 기초한 파일 유출 방지

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170151709A KR102368208B1 (ko) 2017-11-14 2017-11-14 보안 기능을 지원하는 파일 시스템 및 공통적 파일 액세스 인터페이스에 기초한 파일 유출 방지

Publications (2)

Publication Number Publication Date
KR20190054763A true KR20190054763A (ko) 2019-05-22
KR102368208B1 KR102368208B1 (ko) 2022-02-28

Family

ID=66679895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170151709A KR102368208B1 (ko) 2017-11-14 2017-11-14 보안 기능을 지원하는 파일 시스템 및 공통적 파일 액세스 인터페이스에 기초한 파일 유출 방지

Country Status (1)

Country Link
KR (1) KR102368208B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113961931A (zh) * 2021-10-19 2022-01-21 北京字节跳动网络技术有限公司 adb工具使用方法、装置和电子设备
WO2023163506A1 (ko) * 2022-02-23 2023-08-31 프라이빗테크놀로지 주식회사 애플리케이션의 파일 송신 및 수신을 제어하기 위한 시스템 및 그에 관한 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010257206A (ja) * 2009-04-24 2010-11-11 Nec Corp ファイルサーバ、ファイル提供方法及びプログラム
CN102014133A (zh) * 2010-11-26 2011-04-13 清华大学 在云存储环境下一种安全存储系统的实现方法
KR20150040245A (ko) * 2013-10-04 2015-04-14 삼성전자주식회사 사용자 인터페이스 관리 방법 및 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010257206A (ja) * 2009-04-24 2010-11-11 Nec Corp ファイルサーバ、ファイル提供方法及びプログラム
CN102014133A (zh) * 2010-11-26 2011-04-13 清华大学 在云存储环境下一种安全存储系统的实现方法
KR20150040245A (ko) * 2013-10-04 2015-04-14 삼성전자주식회사 사용자 인터페이스 관리 방법 및 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113961931A (zh) * 2021-10-19 2022-01-21 北京字节跳动网络技术有限公司 adb工具使用方法、装置和电子设备
WO2023163506A1 (ko) * 2022-02-23 2023-08-31 프라이빗테크놀로지 주식회사 애플리케이션의 파일 송신 및 수신을 제어하기 위한 시스템 및 그에 관한 방법

Also Published As

Publication number Publication date
KR102368208B1 (ko) 2022-02-28

Similar Documents

Publication Publication Date Title
US10375116B2 (en) System and method to provide server control for access to mobile client data
EP3479283B1 (en) Maintaining operating system secrets across resets
CN108140097B (zh) 组织数据的被动加密
US9483646B2 (en) Data exfiltration prevention from mobile platforms
US10078599B2 (en) Application access control method and electronic apparatus implementing the same
AU2014258137B2 (en) Apparatus and method for notifying of security information in electronic device and computer-readable recording medium for the same
KR101109361B1 (ko) 고 확실성 실행 환경을 갖는 시스템 내의 신뢰되는에이전트에 안전한 입출력을 제공하는 방법
US10146942B2 (en) Method to protect BIOS NVRAM from malicious code injection by encrypting NVRAM variables and system therefor
US9659189B2 (en) Systems and methods of safeguarding user information while interacting with online service providers
CN111695166B (zh) 磁盘加密保护方法及装置
CN105809028B (zh) 在移动设备中运行相同应用的多个实例的装置和方法
KR20150047707A (ko) 전자 장치의 운영체제 업그레이드 방법 및 장치
US11233661B2 (en) Device and method for authenticating application in execution environment in trust zone
KR20140112399A (ko) 어플리케이션 접근 제어 방법 및 이를 구현하는 전자 장치
KR102368208B1 (ko) 보안 기능을 지원하는 파일 시스템 및 공통적 파일 액세스 인터페이스에 기초한 파일 유출 방지
KR20160146093A (ko) 바이너리 병합 장치, 방법 및 컴퓨터 프로그램
US11100243B2 (en) Selective persistence of data utilized by software containers
US10503929B2 (en) Visually configurable privacy enforcement
US20210400130A1 (en) Private contact sharing
KR102568514B1 (ko) 전자 장치와 이의 동작 방법
US11882123B2 (en) Kernel level application data protection
US11809550B2 (en) Electronic device and control method therefor
KR102086590B1 (ko) 전자통신기기를 보호하는 보호 시스템, 장치, 및 그 방법
CN118568743A (zh) 基于硬件加密卡的数据加解密方法、装置、介质及设备
KR20190074170A (ko) 이중 패킹을 이용한 코드 난독화

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