KR20100039359A - 파일 시스템 레벨에서 명확하게 인지되는 데이터 변환을 위한 시스템 및 방법 - Google Patents

파일 시스템 레벨에서 명확하게 인지되는 데이터 변환을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20100039359A
KR20100039359A KR1020107001759A KR20107001759A KR20100039359A KR 20100039359 A KR20100039359 A KR 20100039359A KR 1020107001759 A KR1020107001759 A KR 1020107001759A KR 20107001759 A KR20107001759 A KR 20107001759A KR 20100039359 A KR20100039359 A KR 20100039359A
Authority
KR
South Korea
Prior art keywords
file
file system
encrypted
network
attributes
Prior art date
Application number
KR1020107001759A
Other languages
English (en)
Other versions
KR101221310B1 (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 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20100039359A publication Critical patent/KR20100039359A/ko
Application granted granted Critical
Publication of KR101221310B1 publication Critical patent/KR101221310B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer

Abstract

본 발명은, 네트워크 파일의 효율적인 암호화(efficient encryption) 및 무결성 확인(integrity validation)을 가능하게 하는 메커니즘이다. 로컬(local) 네트워크 파일 시스템이, 파일을 읽기 위한 요구를 수신하면, 로컬 네트워크 파일 시스템은 상기 파일과 관련된 암호 속성, 즉 파일이 암호화되었는지 또는 무결성 확인되었는지에 관해서 조사한다. 파일이 암호화되었음을 표시하는 암호화 속성을 갖는 경우, 로컬 네트워크 파일 시스템은 상기 파일이 리모트 네트워크 파일 시스템에 전송되기 전에, 로컬 네트워크 파일 시스템에 의한 파일 암호화를 생략한다. 만일, 파일이 무결성 확인되었음을 표시하는 암호화 속성을 갖는 경우라면, 로컬 네트워크 파일 시스템은 상기 파일이 리모트 네트워크 파일 시스템에 전송되기 전에, 로컬 네트워크 파일 시스템에 의한 파일의 무결성 확인을 생략한다. 그 다음, 로컬 네트워크 파일 시스템은 리모트 네트워크 파일 시스템에 상기 파일을 전송한다.

Description

파일 시스템 레벨에서 명확하게 인지되는 데이터 변환을 위한 시스템 및 방법{SYSTEM AND METHOD OF TRANSPARENT AWARE DATA TRANSFORMATION AT FILE SYSTEM LEVEL}
본 발명은 일반적으로 데이터 처리 시스템(data processing system)을 개선하기 위한 것으로서, 특히, 네트워크 파일의 효율적인 암호화(efficient encryption) 및 무결성 확인(integrity validation)을 가능하게 하기 위해 파일 시스템 레벨에서 트렌스페런트 어웨어 데이터 변환을 제공하는 컴퓨터로 구현된 방법(computer implemented method), 데이터 처리 시스템, 및 컴퓨터 프로그램 제품(computer program product)에 관한 것이다.
대부분의 데이터 처리 시스템(data processing system)은 보호될 필요가 있는 민감한 정보와 민감한 동작들을 포함한다. 광범위한 비즈니스에 있어서 안전한 데이터 통신은 필수적인데, 예를 들어 뱅킹(banking), e-commerce, 온라인 주식 시장, 비즈니스-대-비즈니스 상거래 등(이에 한정되는 것은 아니다)이 포함된다. 네트워크와 인터넷을 통한 접속의 보급과 함께 기밀 정보(confidential information)의 적절한 핸들링(handling)에 관한 중요성이 증가 되었다. 이는 승인받지 않은 수취인(unauthorized recipient)에 의한 기밀 정보의 우발적 가로채기(accdental interception)를 막기 위한 것이다. 통상적으로, 회사들은 기밀 정보의 취급 및 지정에 관한 정책들을 시행하고 있다(have policies in place). 예를 들어, 회사 네트워크의 외부로 또는 선택된 컴퓨터들의 외부로 파일들을 옮길 때 기밀 정보를 포함하는 모든 파일들에 관해서는 암호화(encryption)가 요구될 수 있다.
암호화 방법(Cryptography)은, 기밀성 및 보안성에 관한 도전들을 충족시키기 위해 제안되는 다양한 솔루션들에서 중요한 역할을 한다. 암호화 방법은 일 군의 기술들(a family of technologies)을 포함한다. 이들 기술들 중 두 가지가 암호화(encryption) 및 복호화(decryption)이다. 암호화는 승인받지 않은 접근을 금지시키기 위해서, 특히 데이터 전송 동안 금지시키기 위해서, 데이터를 인코딩(encoding)하는 프로세스이다. 암호화는 디코딩(decoding)에 필요한 키(key)를 사용한다. 암호화는 암호화 키(encryption key) 없이는 암호를 풀 수 없는 형태로 데이터를 변환함으로써 프라이버시(privacy)를 보장한다(ensure). 복호화(decryption)는 암호화의 역 과정이다. 복호화(decryption)는 암호화된 데이터를 본래 형태(original form)로 되돌리기 위해서 암호화 키를 사용한다.
암호화 방법(scheme)의 한 가지는 Secure Sockets Layer(SSL)이다. 상기 표준은 인터넷 상의 보안 프로토콜(security protocol)에서 널리 사용된다. SSL은 소위 “공개 키 암호화 방법(public key cryptography)”이라 불리는 기술을 사용하여 민감한 파일들이 서버와 클라이언트 사이에 전송될 때 보호될 수 있도록 한다. 공개 키 암호화 방법에서는 비대칭 방법(asymmetric scheme)이 사용되는데, 이는 암호화를 위해 한 쌍의 키들(keys)을 이용한다. 공개 키 암호화 방법은 각 사람(each person)에게 한 쌍의 키들, 즉 공개 키(public key) 및 비밀 키(secret key)를 제공하는 것을 포함한다. 통상적으로, 공개 키는 공개되며, 한편 비밀 키는 비밀로 유지된다. 공개 키는 데이터를 암호화하는데 사용되고, 대응 비밀 키는 그 암호화된 데이터의 암호를 푸는데 사용된다.
비밀 키(a secret key)는 공개 키 암호화에서 사용되는 또 다른 키(key)이다. 사용자는 통상적으로 비밀 키를 비밀로 유지하고, 비밀 키를 사용하여 전자 서명(digital signature)을 암호화하고 수신한 메시지들을 해독한다. 공개 키 암호화 종류에는 Rivest-Shamir_Adleman(RSA) 암호화가 포함되는데, 이는 Pretty Good Privacy (PGP) 암호화 프로그램과 같은 프로그램에 기반을 둔 공개 키 암호화 알고리즘이다. 또 다른 암호화 기술로는 Diffie-Hellman(DH) 암호화가 있는데, 이는 통상 사용되는 키 교환 프로토콜(key exchange protocol)이다.
또한 암호화는, 파일들이 스토리지(storage)에 있는 동안 보호하기 위해 사용되기도 한다. 예를 들어, 사용자는 침입자(intruder) 또는 다른 승인 받지 않은 자가 파일들을 읽거나 파일들에 접근하는 것을 막기 위해서, 하드 디스크 상의 파일들을 암호화 하기를 원할 수 있다. 그런 까닭에, 암호화는 데이터를 비밀 복호화 키(a secret decryption key) 없이는 누구도 판독 할 수 없는(undecipherable) 형태로 변환한다.
이러한 방식으로, 암호화는 안전하지 않는 채널(insecure channel)을 통해서도 안전한 통신을 할 수 있도록 해준다. 그러나, 데이터 안전하지 않은 네트워크 접속을 통해서 데이터를 암호화(encrypting)하고 복호화(decrypting)하는 전통적인 기술들은 비용이 많이 들 수 있는데, 이는 전송 전과 후에 IP Security(IPSec) 또는 Secure Sockets Layer(SSL) 접속들을 사용하기 때문이다. 기존의 클라이언트 파일 시스템 구성들(implementations)을 바꾸는 것은, 비용이 많이 들 수 있기 때문에, 기존의 네트워크 파일 시스템(network file system, NFS), 공통 인터넷 파일 시스템(Common Internet File System: CIFS), 또는 일반 병렬 파일 시스템(General Parallel File System: GPFS) 클라이언트 위에 암호화 파일 시스템 또는 필터 드라이버(filter driver)를 스택하는 것(stack)이 종종 가능한 방안이다(feasible). 암호화 파일 시스템들은 파일 시스템 전체(entire) 또는 파일 시스템들의 서브세트들(subsets)을 암호화하는 것을 허용한다. 암호화 파일 시스템들, 예를 들어 암호화 파일 시스템(Cryptographic File System(CFS)) 및 eCryptfs와 같은 시스템들은 디스크에 암호화된 형태로 파일들을 저장하기 때문에, 상기 파일들을 서버에 전송하기 전에 다시 암호화할 필요가 없다. 실제로, 일부 암호화 사이퍼들(cryptographic ciphers)에 대해서, 데이터를 동일한 사이퍼와 동일한 키를 사용하여 두 번씩 암호화하는 것은 암호화에 의해서 제공되는 보안 수준(level of security)을 약하게 할 수 있다.
그러나, 기존의 네트워크 파일 시스템들 위에 암호화 층(encryption layer)을 스택하는 것(stacking)에는 해결해야 할(address) 네 가지 중요한 문제들(key problems)이 있다. 첫 번째 문제는 동일한 노드(node) 상에서 운영되는(working) 암호화 파일 시스템 층(layer)의 다수의 (multiple) 클라이언트 구성들을 거쳐서(across) 직렬로 접근하는 것(serializing access)이다. 두 번째 문제는 사용자 및 클라이언트 종류에 기초하여 복호화된(암호화되지 않은) (decrypted) 파일 데이터를 포함하는 모든 트래픽(traffic)을 암호화할 것인지, 아니면 암호화 된(encrypted) 파일 데이터를 포함하는 네트워크 파일 시스템 트래픽은 암호화하지 않을 것인지를 서버가 결정하도록 하는 것이다. 세 번째 문제는, 클라이언트 및 서버상에서 키 저장(key store)(및 관련 UUID들(the associated universally unique identifiers(UUIDs))을 항상 보여 주는 것(consistent view)을 유지해야 한다는 것이다. 네 번째 문제는, 네트워크 파일 시스템을 통해 데이터를 전송할 때, 암호화 파일 시스템(cryptographic file system)이, 읽기 및 쓰기 블록 사이즈들(read and write block sizes)과 같은, 보다 최적의 실행 구성(more optimal performance configuration) 탐지하여 (detect) 사용하도록 해야 한다는 것이다.
예시된 실시 예들은 파일 시스템 수준에서 명확하게 인지되는 데이터 변환을 제공하는 컴퓨터 구현 방법, 데이터 처리 시스템, 및 컴퓨터 프로그램 제품을 제공한다. 이는 네트워크 파일의 효율적인 암호화(efficient encryption) 및 무결성 확인(integrity validation)을 제공한다. 로컬(local) 네트워크 파일 시스템에 저장된 파일을 읽기 위해서 리모트(remote) 네트워크 파일로부터 요구를 로컬(local) 네트워크 파일 시스템이 수신하면, 로컬 네트워크 파일 시스템은 상기 파일과 관련된 암호화 속성들을 조사하여(examine) 상기 파일이 암호화된 것인지 또는 무결성 확인이된 것인지를 결정한다. 만일, 로컬 네트워크 파일 시스템이 암호화 속성들이 상기 파일이 암호화되었음을 나타낸다고 결정하면, 상기 로컬 네트워크 파일 시스템은 상기 파일이 리모트 네트워크 파일 시스템으로 전달되기 전에, 상기 로컬 네트워크 파일 시스템에 의한 파일의 암호화를 생략한다. 만일, 상기 로컬 네트워크 파일 시스템이 암호화 속성들이 상기 파일이 무결성 확인이 되었음을 나타낸다고 결정하면, 상기 로컬 네트워크 파일 시스템은 상기 파일이 리모트 네트워크 파일 시스템으로 전달되기 전에, 상기 로컬 네트워크 파일 시스템에 의한 파일의 무결성 확인을 생략한다. 그 다음, 상기 로컬 네트워크 파일 시스템은 리모트 네트워크 파일 시스템으로 상기 파일을 전송한다.
본 발명의 특징이라 여겨지는 신규한 특징들은 첨부된 특허청구범위에 기재되어 있다. 그러나, 본 발명 그 자체, 바람직한 사용 모드, 추가적인 목적들, 및 장점들은 예시적인 실시 예들에 관한 아래의 상세한 설명들을 참조하여 첨부된 도면들과 관련하여 읽을 때 가장 잘 이해가 될 수 있을 것이다.
도 1은, 예시적 실시 예들이 구현되는 분산(distributed) 데이터 처리 시스템의 대표 도이다.
도 2는, 예시적 실시 예들이 구현되는 데이터 처리 시스템의 블록 도이다.
도 3a는, 예시적 실시 예들이 구현되는 암호화 보안(cryptographic security)을 포함하는 데이터 처리 시스템의 일 예에 관한 개요를 도시한 블록도이다.
도 3b는, 예시적 실시 예들에 따른 클라이언트 암호화 파일 시스템 패스쓰루(client file system passthrough) 구현의 일 예를 도시한 블록 도이다.
도 4는, 예시적 실시 예들에 따른 클라이언트 암호화 파일 시스템 구현의 일 예를 도시한 블록 도이다.
도 5는 예시적 실시 예들에 따른 암호화 층(layer)과 그 밑에 있는(underlying) 파일 시스템의 일 예를 도시한 블록도.
도 6은, 예시적 실시 예들에 따른 파일 시스템 레벨에서 명확하게 인지되는 데이터 변환을 제공하기 위한 프로세스의 흐름도이다.
도 7은, 예시적 실시 예들에 따라, 요구하는 클라이언트에 파일 시스템에 있는 데이터를 제공하기 위한 프로세스의 흐름도이다.
이제 도면을 참조하되, 특히 도 1 및 도 2를 참조하면, 데이터 처리 환경들(data processing environments)에 관한 예시적 다이어그램이 제공되는데, 여기서 예시적 실시 예들이 구현될 수 있다. 여기서 도 1 및 도 2는 오직 하나의 예시에 해당하며, 다른 실시 예들이 구현될 수 있는 환경과 관련하여 어떤 한정을 하거나 암시하려는 의도는 없다. 도시된 환경들에 대한 많은 변형들이 있을 수 있다.
이제 도면을 참조하되, 특히 도 1 및 도 2를 참조하면, 데이터 처리 환경들(data processing environments)에 관한 예시적 다이어그램이 제공되는데, 여기서 예시적 실시 예들이 구현될 수 있다. 여기서 도 1 및 도 2는 오직 하나의 예시에 해당하며, 다른 실시 예들이 구현될 수 있는 환경과 관련하여 어떤 한정을 하거나 암시하려는 의도는 없다. 도시된 환경들에 대한 많은 변형들이 있을 수 있다.
도시된 예에서, 서버(104)와 서버(106)은 스토리지 유닛(storage unit) (108)과 함께 네트워크(102)에 연결되어 있다. 또한 클라이언트들(110, 112, 114)들 역시 네트워크(102)에 연결되어 있다. 클라이언트들(110, 112, 114)는, 예를 들어 개인용 컴퓨터들(personal computers) 또는 네트워크 컴퓨터들이 될 수 있다. 도시된 예에서, 서버(104)는 데이터, 예를 들어 부트 파일들(boot files), 오퍼레이팅 시스템 이미지(operating system images), 및 응용프로그램들 (applications)을 클라이언트들(110, 112, 114)에게 제공한다. 클라이언트들(110, 112, 114)는, 이 예에서 서버(104)의 클라이언트들(clients)이다. 네트워크 데이터 처리 시스템(100)은, 또 다른 서버, 클라이언트, 및 도시되지 않은 다른 장치들을 포함할 수 있다.
도시된 예에서, 네트워크 데이터 처리 시스템(100)은, 전송 제어 프로토콜/인터넷 프로토콜(Transmission Control Protocol/Internet Protocol: TCP/IP)을 사용하는 네트워크들과 게이트웨이들(gateways)의 전 세계적 집합을 나타내는 네트워크(102)를 갖는 인터넷이다. 인터넷의 중심에는 대다수의 노드들(major nodes) 또는 호스트 컴퓨터들(host computers) 사이를 연결하는 고속 데이터 통신 라인들(high-speed data communication lines)이라는 백본 (backbone)이 있다. 여기서 대다수의 노드들(major node) 또는 호스트 컴퓨터(host computer)들은 데이터와 메시지를 라우트하는 수천의 기업(commercial), 정부(governmental), 교육(educational) 및 기타 컴퓨터 시스템들로 구성되어 있다. 물론, 네트워크 데이터 처리 시스템(100)은 또한, 인트라넷(intranet), 근거리 통신망(LAN), 또는 원거리 통신망(WAN)과 같은 수많은 다른 종류의 네트워크들로도 구현될 수도 있다. 도 1은, 한가지 예를 나타낸 것이고 다른 실시 예들에 대하여 구조적 한정으로서 도시한 것이 아니다.
도 2에서, 예시되는 실시 예들이 구현될 수 있는 데이터 처리 시스템의 하나의 블록 도를 보여준다. 데이터 처리 시스템(200)은, 도 1의 서버(104) 또는 클라이언트(110)과 같은 컴퓨터의 예이며, 여기에는 본 발명의 실시 예들을 위해 프로세스들을 구현하는 컴퓨터 사용 가능 프로그램 코드 또는 명령들이 위치할 수 있다.
도시된 실시 예에서, 데이터 처리 시스템(200)은, 허브 구조(hub architecture)를 사용하는데, 상기 허브 구조는 노쓰 브리지 및 메모리 컨트롤러 허브(north bridge and memory controller hub(NB/MCH))(202) 및 사우쓰 브리지 및 입력/출력 컨트롤러 허브(south bridge and input/output(I/O) controller hub(SB/ICH))(204)를 포함한다. 프로세싱 유닛(processing unit) (206), 메인 메모리(208), 및 그래픽 프로세서(graphics processor) (210)는 NB/MCH(202)에 연결되어 있다. 프로세싱 유닛(206)은, 하나 혹은 이상의 프로세서를 포함하며 또한 하나 혹은 그 이상의 이종 프로세서 시스템(heterogeneous processor system)을 사용해서도 구현될 수 있다. 그래픽 프로세서(210)는, 예를 들어 가속된 그래픽 포트(accelerated graphics port, AGP)를 통해 NB/MCH(202)에 연결될 수 있다.
도시된 예에서, 근거리 통신망(LAN) 어댑터(adapter)(212)는, SB/ICH(204)에 연결되어 있다. 오디오 어댑터(216), 키보드 및 마우스 어댑터(220), 모뎀(222), 읽기 전용 메모리(ROM) (224), 유니버설 시리얼 버스(USB) 및 다른 포트들(232), 및 PCI/PCIe 디바이스들(234)는 버스(238)를 통해 SB/ICH(204)에 연결되어 있다. 또한 하드 디스크 드라이브(HDD)(226)와 CD-ROM은 버스(240)를 통해 SB/ICH(204)에 연결되어 있다. PCI/PCIe 디바이스들(234)는, 예를 들어 노트북 컴퓨터들을 위한 이더넷 어댑터들(Ethernet adapters), 애드-인 카드들(add-in cards), 및 PC 카드들을 포함할 수 있다. PCI는 카드 버스 컨트롤러(card bus controller)를 사용하지만 , PCIe는 그렇게 하지 않는다. ROM(224)은, 예를 들어 플래시 이진 입출력 시스템(flash binary input/output system: BIOS)이 될 수 있다. 하드 디스크 드라이브(226)와 CD-ROM은, 예를 들어 통합된 드라이브 일렉트로닉스 (integrated drive electronics: IDE) 또는 직렬 어드밴스드 테크놀러지 어태치먼트(serial advanced technology attachment: SATA) 인터페이스를 사용할 수 있다. 수퍼 I/O(super I/O: SIO) 디바이스(236)는 SB/ICH(204)와 연결될 수 있다.
하나의 오퍼레이팅 시스템(OS)이 프로세싱 유닛(206) 상에서 실행되어 도 2의 데이터 프로세싱 시스템(200) 내의 여러 컴포넨트들(components)의 컨트롤을 제공하고 조정한다. 상기 OS는 Microsoft® 사의 Windows® XP와 같은 상업적으로 이용 가능한 OS가 될 수 있다(여기서 Microsoft 및 Windows 는 미국, 다른 나라들, 혹은 이들 모두에서 Microsoft 사의 상표들이다). 자바(Java™) 프로그래밍 시스템과 같은, 객체 지향적인 프로그래밍 시스템은 상기 OS와 관련하여 실행되어 데이터 프로세싱 시스템(200)상에서 실행되는 Java™ 프로그램 또는 응용프로그램으로부터 상기 OS로의 호출(calls)을 제공할 수 있다. Java™ 및 모든 Java™ 기초 상표들은 미국, 다른 나라들, 혹은 이들 모두에서 Sun Microsystems 사의 상표들이다.
OS를 위한 명령들, 객체 지향 프로그래밍 시스템, 및 응용프로그램들 또는 프로그램들은 스토리지 디바이스들(storage devices)-예를 들어 하드 디스크 드라이브(226)- 에 위치하고, 프로세싱 유닛(206)에 의한 실행을 위해서 메인 메모리(208)에 로드될 수 있다. 예시되는 실시 예들의 프로세스들은 컴퓨터 실행 명령들(computer implemented instructions)을 사용하는 프로세싱 유닛(206)에 의해서 수행된다. 여기서 상기 컴퓨터 실행 명령들은 메모리 상에 위치하는데, 예를 들면 메인 메모리(208), ROM(224), 또는 하나 또는 그 이상의 주변기기들(peripheral devices)에 위치할 수 있다.
도 1 및 도 2의 하드웨어는 구성에 따라 여러 가지 변형이 가능하다. 다른 내부 하드웨어 또는 주변기기들, 예를 들어 플래시 메모리, 동등한 비휘발성 메모리(equivalent non-volatile memory), 또는 광디스크 드라이브들 및 그와 유사한 것들은 도 1 및 도 2에 도시된 하드웨어에 추가되거나 그의 대신으로 사용될 수 있다. 또한, 실시 예들의 프로세스들은 멀티프로세서 데이터 프로세싱 시스템에서도 처리될 수 있다.
설명하는 몇몇 실시 예들에서, 데이터 프로세싱 시스템(200)은, 개인휴대정보 단말기(personal digital assistant: PDA)가 될 수 있는데, 이는 일반적으로 OS 파일들 및/또는 사용자 생성 데이터(user-generated data)를 저장하기 위한 비휘발성 메모리를 제공하기 위하여 플래시 메모리로 구성된다. 버스 시스템(bus system)은 하나 혹은 그 이상의 버스로 구성되는데, 예를 들어 시스템 버스, I/O 버스, 그리고 PCI 버스로 구성된다. 물론 버스 시스템은 접속된 다른 컴포넨트들 또는 디바이스들 사이에 데이터의 전송을 제공하는 모든 종류의 통신 패브릭 또는 아키텍쳐(communications fabric or architecture)를 사용하여 구현될 수 있다. 통신 유닛(a communications unit)은, 모뎀 혹은 네트웍 어댑터와 같은, 데이터를 전송하고 수신하기 위해 사용되는 하나 또는 그 이상의 디바이스들을 포함할 수 있다. 메모리는, 예를 들어 메인 메모리(208) 또는 캐시(cache) -예를 들어 NB/MCH(202)에서 발견할 수 있다 -가 될 수 있다. 프로세싱 유닛(processing unit)은, 하나 또는 그 이상의 프로세서들 또는 CPU들을 포함할 수 있다. 도1 및 도2 에 도시된 실시 예와 상기 기술된 실시 예들은 구조적인 한정을 하려는 의도가 없다. 예를 들어, 데이터 프로세싱 시스템(200)은, 또한 타블릿 컴퓨터(tablet computer), 랩탑(laptop) 컴퓨터, 또는 PDA 형태의 텔레폰(telephone)장치가 될 수 있다.
예시하는 실시 예는 네트워크 파일의 효율적인 암호화(efficient encryption) 및 무결성 확인(integrity validation)을 가능하게 하기 위해 파일 시스템 레벨에서 명확하게 인지되는 데이터 변환을 제공하기 위한 컴퓨터에서 구현되는 방법, 데이터 처리 시스템, 및 컴퓨터 프로그램 제품을 제공한다. 전술한 바와 같이, 기존의 네트워크 파일 시스템 위(top)에 암호화 층(encryption layer)을 스택하는 것(stacking)에는 해결해야 할(address) 네 가지 중요한 문제들(key problems)이 있다. 예시된 실시 예들은 네트워크 파일 시스템을 통해 데이터를 전송할 때 암호화 파일 시스템이 보다 최적의 퍼포먼스 구성을 검출하여(detect) 사용(use)하도록 해야하는 상기 확인된 문제들을 해결한다. 또한 예시된 실시 예들은, 암호화 파일 시스템 층 밑에 있는 네트워크 파일 시스템의 속성들에 기초하여 암호화 폴리시(policy)를 최적화하기 위해서 제공된 것이다.
암호화 파일 시스템 층은 암호화 폴리시를 최적화하기 위해서 디스크에 파일을 저장할 때 네트워크 파일 시스템 밑에 있는 속성들(attributes)을 고려한다. 암호화 파일 시스템 층은 상기 네트워크 파일 시스템에 따라 상기 파일의 포맷(format)을 조정한다. 이러한 속성들은 익스텐트 사이즈(extent size), 디스크 상에 암호화된 파일 데이터의 배열(layout), 암호화 알고리즘, 및 무결성 알고리즘 뿐만 아니라, 대기 시간(latency), 전송 유닛 사이즈, 및 요구 순서 정하기 (request ordering)를 포함한다(이에 한정되는 것은 아니다). 암호화 파일 시스템 밑에 있는 네트워크 파일 시스템의 속성들을 고려함으로써 암호화 층과 호환될 수 있는 포맷으로 디스크 상에 암호화된 데이터가 저장되는 것을 가능하게 한다. 암호화 층에서 호환 가능한 포맷을 사용함으로써 요구하는 클라이언트 또는 서버에 데이터를 전송하기 위해 네트워크 파일 시스템이 반드시 수행해야 하는 데이터 변환의 양(amount of data transformation)을 최소로 하는 것이 가능하게 된다. 예를 들어, 프로토콜의 통상의 동작하에서 데이터가 암호화가 안 된 형태로부터 암호화된 형태로 변환되어야 할 경우에, 만일 데이터가 이미 필수적으로 요구되는 암호화된 형태로 저장되었다면 변환 프로세스(transformation process)는 모두 건너뛸 수 있다(skip). 이런 식으로, 네트워크 파일 시스템 위에 스택된(stacked) 암호화 파일 시스템과 호환 가능한 포맷으로 데이터가 저장되기 때문에, 네트워크 파일 시스템은 데이터를 읽을 때 데이터를 복호화하여 무결성-확인을 할 필요가 없다. 대신, 네트워크 파일 시스템 위에 놓여진(layered) 상기 암호화 파일 시스템이 데이터를 복호화하고 무결성 확인을 하기 위해 사용된다.
도 3a는 예시적 실시 예들이 구현되는 암호화 보안(cryptographic security)을 포함하는 데이터 처리 시스템(data processing system)의 한 예를 도시한 블록도 이다. 여기서 도시한 예에서, 데이터 프로세싱 시스템(300)은 암호화 파일 시스템 층을 갖는 클라이언트(302), 암호화된 파일 패스쓰루(passthrough) 를 갖는 서버(304), 암호화 파일 시스템 층을 갖지 않는 클라이언트(306)를 포함하는 것으로 도시되어 있다.
클라이언트(302) 내에서, 암호화 층(308)은 밑에 있는 네트워크 파일 시스템(310) 위에 마운트되는(mounted) 가상의(virtual) 파일 시스템을 제공하기 위해 사용된다. 비록 모든 적합한 암호화 파일 시스템이 예시된 실시 예들에 사용될 수 있지만, 암호화 층(308)로서 사용된 하나의 특정 예는 eCryptfs로서, 이는 리눅스 암호화 파일 시스템이다. 암호화 층(308)은 물리적(physical) 파일 시스템의 세부항목들(details)로부터 암호 기능을 분리한다. 클라이언트(302) 내의 유저스페이스 어플리케이션(userspace application) (312)으로부터 네트워크 파일 시스템(310)내의 암호화된 데이터가 요구되면, 암호화 층(308)은 데이터를 복호화하고, 복호화한 데이터를 요구하는 어플리케이션에 제공한다.
네트워크 파일 시스템(310) 내에서 새로운 파일을 생성하면, 네트워크 파일 시스템 위의 암호화 층(308)은 최적의 퍼포먼스 및 보안을 제공하면서 네트워크 파일 시스템(310)에 의해서 수행되는 작업(work)이 최소가 되도록 네트워크 파일 시스템(310)내에서 온-디스크 스토리지(on-disk storage) 포맷을 선택한다. 상기와 같은 스토리지 포맷(storage format)을 선택하기 위해, 암호화 층(308)은 파일 시스템의 여러 가지 속성들에 관하여 네트워크 파일 시스템(310)에 조회한다(query). 이러한 속성들은 최대 전송 유닛(MTU) 사이즈 또는 패킷 사이즈, 사용된 암호화 사이퍼(cipher), 키 사이즈(key size), 사용된 사이퍼 블록 체이닝 모드(cipher block chaining mode), 옥텟 레인지들 및 코드들로 암호화 속성 디스크립터들의 매핑(mapping of cryptographic attribute descriptors to octet ranges and codes)), 또는 무결성 확인 메커니즘(즉, HMAC를 위한 해시 타입)을 포함한다. 여기서 MTU는, 어떤 싱글 데이터 패킷 속에 팩되는(packed) 데이터의 가장 큰 용량에 해당한다. 암호화 사이퍼는, 암호화 방법인데, 예를 들어 AES-128이 있다. 키 사이즈는, 키의 크기를 말한다. 사이퍼 블록 체이닝 모드는, 어떻게 순차적인 블록들이 서로 연결되는지(chained toether)를 규정한다(specify). 해시 타입은 해시/다이제스트 값(hash/digest value)(다수를 하나로 매핑(many-to-one mapping))을 생성하기 위해 사용되는 알고리즘을 규정한다.
암호화 층 밑에 있는 네트워크 파일 시스템(310)과 그 위에 있는 암호화 층(308) 사이에 이러한 속성 정보를 주고 받기(communicate) 위해 몇 가지 메커니즘들이 사용될 수 있다. 예를 들면, 파일 시스템들이 그들 사이에 정보를 주고 받는 것을 가능하게 하기 위해서, 네트워크 파일 시스템(310)은, 파일 객체들(the file objects)에 pseudo-xattr 값들을 채우거나, 또는 커넬 가상 파일 시스템(kernel virtual file system: VFS)이, 커넬 크립토 API (kernel crypto API)같은, 어플리케이션 프로그래밍 인터페이스(API)를 제공할 수도 있다.
이러한 속성 정보가 주어지면, 암호화 층(308)은 상기 속성 정보에 기초하여 데이터를 암호화하고, 무결성 확인을 하며(integrity-protects), 그리고 배열한다(arrange). 이러한 방식으로, 암호화 층(308)은 상기 속성 정보에 기초하여 암호화 층 밑에 있는 네트워크 파일 시스템(310)에 데이터를 기록하는데, 이렇게 함으로서 상기 네트워크 파일 시스템이 데이터를 서버에 전송하기 위해 요구하는 추가적인 데이터 전송 용량이 최소가 된다.
본 예시에서, 서버(304)는 네트워크 파일 시스템(314), 암호화 파일 시스템(316), 및 온-디스크 파일 시스템(318)을 포함하는 것으로 도시되어 있다. 네트워크 파일 시스템(314)은 밑에 있는 온-디스크 파일 시스템(318) 위에 스택될 수 있다. 암호화되지 않은 데이터가 온-디스크 파일 시스템(318)에서 네트워크 파일 시스템(314)까지의 스택(stack)을 지나갈 때, 암호화 파일 시스템(316)이 그 데이터를 암호화한다. 암호화된 데이터가 네트워크 파일 시스템(314)에 수신되면, 암호화 파일 시스템(316)은 또한 온-디스크 파일 시스템(318)에 데이터를 암호화된 그대로 기록하거나, 또는 온-디스크 파일 시스템(318)에 데이터를 기록하기 전에 데이터를 복호화한다. 암호화 파일 시스템(316)은, 또한 데이터의 승인받지않은 수정(unauthorized modification)을 막기 위해 데이터 인증(data signing)을 통해 데이터의 무결성을 제공하기 위해 사용될 수 있다.
클라이언트(306) 내에서는, 암호화 층이 제공되지 않는다. 이런 까닭에, 네트워크 파일 시스템(320)이 파일 시스템에 저장된 데이터의 암호화 및 복호화를 제공한다. 네트워크 파일 시스템(320)내의 암호화된 데이터가 네트워크 파일 시스템(320) 내의 유저스페이스 어플리케이션(322)로부터 요구를 수신하면, 네트워크 파일 시스템(320)은 그 데이터를 복호화하여, 요구하는 어플리케이션에 복호화한 데이터를 제공한다
암호화 층에서 호환 가능한 포맷을 사용하는 것이 요구하는 클라이언트 또는 서버에 데이터를 전송하기 위해 네트워크 파일 시스템이 반드시 수행해야 하는 데이터 변환의 양을 최소로 하는 것을 어떻게 가능하게 하는지를 보여주기 위해서, 여러 가지 예들이 제공된다. 예를 들어, 하나의 예로서, 클라이언트 (302)가 요구하는 클라이언트(306)에 데이터를 전송한다고 하자. 그러면, 이 예에서는, 클라이언트(302)의 밑에 있는 네트워크 파일 시스템(310)이 클라이언트 (306)의 리모트 네트워크 파일 시스템(320)에 데이터를 제공한다. 클라이언트(302)에서, 전송될 데이터는 유저스페이스 어플리케이션(312)이 ‘디스크(disk)’ 또는 네트워크 파일 시스템(310)에 데이터를 기록할 때 이미 암호화 층(308)을 통과하게 된다. 이와 같이 데이터가 이미 암호화 층(308)을 통과했기 때문에, 상기 데이터는 네트워크 파일 시스템(310)이 신뢰할 수 없는 도메인으로 전송하기 전에 이미 안전하게 암호화되었다. 이러한 상황에서, 네트워크 파일 시스템(310)은 암호화된 데이터를 있는 그대로(어떤 추가적인 암호화 수행 없이)통과시켜 서버(304)로 전송한다. 마찬가지로, 데이터가 이미 암호화 층(308)을 통과했기 때문에, 상기 데이터는 네트워크 파일 시스템(310)이 전송하기 전에 무결성이 확인되었다고 할 수 있다. 이러한 상황에서, 네트워크 파일 시스템(310)은 암호화된 데이터를 있는 그대로(어떤 추가적인 무결성 확인의 수행 없이)통과시켜 서버(304)로 전송한다. 따라서, 상기 데이터는 이미 승인(또는 확인) 되었기 때문에 무결성을 재확인할 필요 없이 서버(304)로 전송된다.
일단 암호화된 데이터가 서버(304)에 도착하면, 서버(304)의 네트워크 파일 시스템(314)은 서버의 온-디스크 파일 시스템(318)에 암호화된 데이터를 저장한다. 상기 파일이 이미 암호화 및/또는 승인(무결성 확인)되었음을 수신하는 네트워크 파일 시스템에 전달하기 위해 데이터 헤더(header)에 암호 속성들이 삽입될 수 있다. 따라서, 서버의 온-디스크 파일 시스템(318)과 같은 수신하는 네트워크 파일 시스템은 상기 암호 속성들로부터 상기 수신된 데이터에 관한 암호화 동작들 혹은 무결성 확인이 필요하지 않음을 결정할 수 있다. 미래에, 다른 네트워크 파일 시스템이 네트워크 파일 시스템(310)으로부터 데이터를 읽기 원하면, 상기 서버는 오로지 네트워크 파일 시스템(310)으로부터 암호화되고 무결성 보호된 데이터를 읽고 요구하는 클라이언트에 상기 데이터를 전송하기 위해 필요한 작업의 최소 량을 수행하기만 하면 된다.
파일이 암호화되었는 지 또는 승인되었는지를 표시하는 상기 암호화 속성들을 획득하기 위해 다양한 메커니즘들이 사용될 수 있다. 그러한 메커니즘의 하나로 이노드 메타데이터(inode metadata)가 있는데, 이는 파일이 암호화 되었는지(암호화 메커니즘이 사용되었는지) 또는 승인되었는지를 표시하는 정보를 포함하는 “확장된 속성(extended attribute)”을 데이터 헤더에 제공할 수 있다. 파일이 이미 암호화 되었는지 또는 무결성 확인이 되었는지를 표시하기 위해 하나의 플래그(A flag)가 이노드 메타데이터에서 사용될 수 있다. 다른 메커니즘으로 이노드 데이터(inode data)가 있는데, 이는 파일이 암호화되었는지 또는 승인되었는지를(선택적으로, 어떻게 메커니즘이 사용되는지) 표시하는 암호화 정보로 시작하는 데이터를 제공한다. 암호화 정보를 획득하기 위한 세 번째 메커니즘은 암호화된 파일들의 리스트를 포함하는 다른 파일을 사용한다. 예를 들어, 각 디렉토리(each directory)는 암호화된 파일들 (선택적으로, 사용된 암호 메커니즘)을 나열하는 “암호화된_파일들” 이라 명명되는 하나의 파일을 포함할 수 있다. 네 번째 메커니즘은 암호화되거나 또는 승인된 파일들(예를 들어, 특정 확장(certain extension), 특정 최소 사이즈, 특정 파일 이름 패턴을 갖는 모든 파일들)을 표시하는 공유된 폴리시(shared policy)(클라이언트와 서버 간에 공유된)를 사용한다.
서버 (304)가 요구된 데이터를 클라이언트(306)에 제공할 때, 서버(304)의 네트워크 파일 시스템(314)는 온-디스크 파일 시스템(318)에 저장된 상기 요구된 데이터가 이미 암호화되었는지를 결정한다. 이때 네트워크 파일 시스템(314)이 상기 데이터가 이미 암호화 되었음(클라이언트(302)의 암호화 층(308)에 의해)을 탐지(detect)했기 때문에, 네트워크 파일 시스템(314)은, 암호화 스텝을 수행할 필요가 없다. 따라서, 서버(304)는, 상기 암호화된 데이터를 클라이언트(306)에 보낼 수 있다.
수신받는 측 클라이언트(306)은 암호화 층이 필요 없다. 클라이언트(306)는, 요구된 (그리고 암호화된) 데이터를 네트워크 파일 시스템(320)에서 수신한다. 네트워크 파일 시스템(320)은 데이터 헤더에 있는 상기 암호화 속성을 사용한다. 이는, 상기 데이터의 암호를 풀려는 것이 아니라 암호화된 데이터가 있는 그대로 네트워크 파일 시스템(320)에 쓰여지도록 결정하기 위한 것이다. 그 다음에 네트워크 파일 시스템(320)은 상기 요구된 데이터를 유저스페이스 어플리케이션(322)에 제공할 때 상기 데이터를 복호화한다.
대조적으로, 클라이언트(306)는 암호화 층을 포함하지 않기 때문에, 요구된 데이터를 서버(304)에 보내기 전에 네트워크 파일 시스템(320)은 데이터 암호화를 수행해야 한다. 그러나, 일단 서버(304)가 암호화된 데이터를 수신하면, 서버(304)는 상기 데이터를 암호화된 상태로 암호화 층(316)에 전송할 수 있다. 암호화 층(316)은 상기 데이터를 온-디스크 파일 시스템(318)에 암호화 상태로 기록하거나, 또는 온-디스크 파일 시스템(318)에 기록하기 전에 상기 데이터를 복호화할 수 있다. 그 다음에 다른 네트워크 파일 시스템 클라이언트-예를 들어, 클라이언트(302)의 네트워크 파일 시스템(310)-가 데이터를 요구하면, 서버(304)는 클라이언트(302)의 요구하는 네트워크 파일 시스템(310)으로 온- 디스크 파일 시스템(316)에 저장된 암호화된 데이터를 그저 전송만 해 주게 될 것이다 (may just pass along). 그 다음에 암호화 층(308)은 유저스페이스 어플리케이션(312)에 상기 데이터를 보내기 전에 데이터를 복호화하고, 무결성 확인할 것이다.
도 3b는, 예시된 실시 예들에 따라 클라이언트 암호화 파일 시스템 패스쓰루(passthrough) 구현의 일 예를 도시한 블록도 이다. 이 특정 예시는, 암호화 작업들(cryptographic operations)이 수행되는 일이 없어도 어떻게 파일이 온-디스크 파일 시스템으로부터 서버에 카피(copy)되는지를 보여준다.
클라이언트(330)는, 유저스페이스 어플리케이션(332), 암호화 층들 (334) 및 (336), 온-디스크 파일 시스템(338), 및 네트워크 파일 시스템(340)을 포함한다. 이 예시에서 유저스페이스 어플리케이션(332)은 로컬 온-디스크 파일 시스템(338)에서 서버(342)로 파일(원으로 표시되었다)을 카피한다. 상기 파일은 클라이언트(330)의 온 디스크 파일 시스템(338)에서 이미 암호화된 상태에 있다. 파일 헤더에 있는 암호 속성들에 기초하여, 암호화 층들 (334) 및 (336)은 상기 파일이 유저스페이스 어플리케이션(332)을 통과하여 네트워크 파일 시스템(340)에 전송되어야 하는지를 결정한다. 이러한 방식에서, 데이터가 로컬 온-디스크 파일 시스템(338)에서 네트워크상의 서버(342)로 간단히 카피 되는 경우, 상기 전송되는 데이터는 전체 프로세스 동안 암호화 동작들의 수행 없이 본래의 암호화 상태 및 무결성 보호된 포맷이 유지된 상태로 남아있게 된다. 그 다음, 서버(342)는 상기 암호화된 데이터를 그대로 저장한다. 이러한 프로세스는 데이터가 서버(342)에서 클라이언트(330)의 온-디스크 파일 시스템(338)으로 카피 될 때와 동일하다. 따라서, 이 예에서 파일이 불필요하게 여러 번 암호화 및 복호화되는 것을 요구하는 기존의 시스템과는 대조적으로, 예시된 실시 예들에서의 제어 논리회로(control logic)는 그러한 파일이 암호화 동작들의 수행 없이 카피 되는 것을 가능하게 한다.
도 4는, 예시하는 실시 예들에 따라 클라이언트 암호화 파일 시스템 구현의 한 예를 도시한 블록도 이다. 커넬 스페이스(Kernel space) (402)는 크립토 API(crypto API) (404), 키링(keyring) (406) 및 암호화 층(408)을 포함하는 것으로 도시되었다. 암호화 층(408)은 도 3a에서의 암호화 층(308)의 일 예에 해당한다. 이 특정 예에서, 암호화 층(408)은 eCryptfs 층이다. 암호화 층(408)은 밑에 있는 파일 시스템(410) 위에 스택 되는데, 여기서 밑에 있는 파일 시스템(410)은, 여러 파일들 중에서, 특히 JFS(journaled file system)(412) 또는 ext3(third exetended file system)(414)을 포함한다. 암호화 층(408)은 유저스페이스(420) 내의 어플리케이션(418)에 가상 파일 시스템(virtual file system: VFS) (416)을 제공한다. 어플리케이션(418)은 도 3A에서의 유저스페이스 어플리케이션 (312)의 일 예에 해당한다.
커넬 스페이스(402) 내의 키링(406)은 암호화 층(408)에 암호화 키들을 제공한다.
커넬 스페이스(402)는 또한 크립토 API(404)를 포함하는 것으로 도시되어 있다. 크립토 API(404)는 어플리케이션 프로그래밍 인터페이스이며, 이는 암호화 층이 하위 레벨(low-level)의 암호화 및 복호화 요구를 하기 위한 메커니즘을 제공한다.
유저스페이스(420)는 ecryptfsd(422)를 포함한다. ecryptfsd(422)는, eCryptfs 커넬 모듈로부터 키(key) 암호화 및 복호화 요구들을 다루는 유저스페이스 대몬(daemon)이다. 키 모듈 API(424)는, 커스텀 키 매니지먼트 모듈들(custom key management modules)(예를 들어, RSA 또는 Trusted Platform Module(TPM))에 대하여 인터페이스를 제공한다.
도 5는 예시된 실시 예들을 따라 암호화 층과 그 밑에 있는 네트워크 파일 시스템의 한 예를 도시한 블록도 이다. 암호화 층(502)은 도 3A의 암호화 층(308)의 일 예에 해당한다. 암호화 층(502)은 메타데이터(504)와 암호화 파일(506)을 포함하는 것으로 도시되어 있다. 여기서 메타데이터(504)에는 암호 속성들이 저장된다. 메타데이터(504)는 네트워크 파일 시스템에 의해 생성된 헤더 정보로써 제공된다.
파일 시스템(508)은 도 3a에서의 네트워크 파일 시스템의 일 예에 해당한다. 이 예시적 실시 예에서, 암호화 층(502)은 파일 시스템(508)에 관한 속성 정보를 얻기 위해 크립토 API(510)을 사용한다. 크립토 API(510)는 하위 파일(lower file)(512)에서 암호화된 데이터 확장 속성들을 조회(querying)하고 암호화 파일(506)에 이러한 속성들을 제공함으로써, 속성 정보를 획득한다. 그 다음 암호화 층(502)은 암호화 파일 (506)에서 이러한 속성 정보를 사용하는데, 이는 파일 시스템(508)의 이들 속성들에 기초하여 암호화된 데이터를 파일 시스템(508)에 저장하기 위한 포맷을 선택하기 위한 것이다.
또한 암호화 층(502)은, 선택한 포맷에 따라 데이터를 암호화하고 복호화하기 위해서 파일 암호화 키(FEK) 암호화/복호화 메커니즘(514)를 사용한다. 예를 들어, 새로운 파일이 생성될 때, 암호화 층(502)은 데이터를 암호화하여 파일 시스템(508)의 속성과 일치하는 포맷으로 배열한다.
또한 암호 속성들(context)(516)이 상기 데이터의 헤더 (518)에 세트될 수 있는데, 이는 상기 데이터에 대하여 어떠한 암호화 작업들 혹은 변환을 수행하지 않도록 파일 시스템 (508)과 통신하기 위해서이다. (그렇게 함으로서) 상기 데이터가 나중에 파일 시스템(508)에서 읽혀 질 때, 파일 시스템(508)이 상기 데이터를 변환하지 않음을 알 수 있기 때문이다. 대신, 파일 시스템(508)은 스택된(stacked) 암호화 층(502)까지 데이터를 전송하는데 필요한 최소 작업 량만 수행할 것이다. 그 다음, 암호화 층(502)은 상기 데이터를 요구하는 유저 어플리케이션에 전송하기 전에 FEK 암호화/복호화 메커니즘을 사용하여 상기 데이터를 복호화하고 무결성 확인할 수 있다.
도 6은, 예시하는 실시 예들에 따른 파일 시스템 레벨에서 투명하게 인식된 데이터 변환을 제공하기 위한 프로세스의 흐름도이다. 도 6에 도시된 프로세스는 도 3A의 데이터 처리 시스템(300)과 같은 데이터 처리 시스템에서 구현될 수 있다. 특히, 상기 프로세스는, 도 3A의 클라이언트(302)와 같은, 암호화 층을 포함하는 클라이언트에 의해 수행될 수 있다.
상기 프로세스는 새로운 파일이 생성될 때 시작된다(스텝 602). 클라이언트의 네트웍 파일 시스템 위에 스택 된(layered) 암호화 파일 시스템은 상기 파일 시스템의 여러 가지 속성에 관해서 상기 네트워크 파일 시스템을 조회한다(스텝 604). 하나의 실시 예에서, 상기 네트워크 파일 시스템은 pseudo-xattr 값들을 파일 객체(the file bject)에 기입함(filling in)으로써 암호화 층에 속성 정보를 전달할 수 있다. 다른 실시 예에서, 암호화 파일 시스템과 네트워크 파일 시스템이 서로 간에 정보를 주고 받을 수 있도록 API가 제공될 수 있다.
일단 속성 정보가 획득되면, 상기 암호화 파일 시스템은 밑에 있는 상기 파일 시스템의 속성들에 기초하여 상기 새로운 파일을 암호화하고, 확인하고, 배열한다(스텝 606). 상기 암호화 파일 시스템은 또한 암호화 속성들을 상기 파일의 헤더에 삽입할 수 있는데, 이들은, 리모트 네트웍 파일 시스템으로부터 상기 파일이 요구될 때, 상기 네트웍 파일 시스템에게 상기 파일이 요구하는 클라이언트에 전송되기 전에 암호화되는 것 및/또는 무결성-확인되는 것이 필요하지 않음을 알려준다(스텝 608). 그 다음, 상기 암호화 파일 시스템은 암호화되고 확인된 파일을 디스크에 기록한다(스텝 610).
도 7은, 예시되는 실시 예들에 따라 요구하는 클라이언트에 파일 시스템의 데이터를 제공하기 위한 프로세스의 흐름도이다. 도 7에 도시된 프로세스는, 도 3A의 데이터 처리 시스템(300)과 같은 데이터 처리 시스템에서 구현될 수 있다. 이 예의 프로세스는 데이터에 관한 암호화 작업들을 수행함이 없이 네트워크 파일 시스템이 암호화된 데이터를 전송할 수 있는 데이터 프라이버시 프로세스를 기술하지만, 이러한 프로세스의 예는 상기 네트웍 파일 시스템이 상기 데이터가 이미 승인(확인)된 것으로 결정한다면 상기 데이터에 관한 무결성-확인 작업들을 수행함이 없이 네트웍 파일 시스템이 상기 데이터를 전송할 수 있는 데이터 무결성 프로세스에도 적용할 수 있음을 주목해야한다.
상기 프로세스는 로컬 클라이언트 상의 네트워크 파일 시스템에 저장된 파일을 읽기 위해 리모트 클라이언트로부터 요구를 수신함으로써 시작된다 (스텝702). 요구가 수신되면, 상기 네트워크 파일 시스템은 요구된 파일이 이미 암호화 및/또는 무결성 확인이 되었는지를 결정한다(스텝 704). 이러한 결정은 상기 파일의 헤더를 조사함으로써 내려질 수 있는데, 이 조사는 상기 헤더가 암호화 속성을 포함하고 이 암호화 속성이 상기 파일의 암호화 및/또는 무결성 확인이 필요 없음을 표시하는 지 아닌 지를 결정한다. 만일 상기 파일의 헤더가 요구된 파일이 암호화된 것 및/또는 무결성 확인이 된 것이 아니라고 표시한다면(스텝 (704)에서 ‘아니오’로 출력), 상기 네트워크 파일 시스템(또는, 클라이언트가 암호화 층을 포함한다면 클라이언트의 암호화 층)은 상기 파일을 암호화 및/또는 무결성 확인하고(스텝706), 상기 프로세스는 스텝 (710)으로 진행한다.
다시 스텝 (704)로 되돌아와서, 만일 상기 파일의 헤더가 요구한 파일이 이미 암호화 및/또는 무결성 확인이 되었음을 표시한다면(스텝 (704)에서 ‘예’로 출력), 상기 요구된 파일의 암호화 및/또는 무결성 확인이 상기 네트워크 파일 시스템에 의해 수행될 필요가 없고, 상기 로컬 클라이언트 상의 상기 네트워크 파일 시스템은 상기 파일을 그대로(as-is) 전송할 것이다(스텝 708). 그 다음, 상기 로컬 클라이언트는 상기 서버상의 네트워크 파일 시스템으로 암호화된 및/또는 무결성 확인된 파일을 전송한다(스텝 710).
요구된 파일이 상기 서버에 수신되면, 상기 네트워크 파일 시스템은 상기 파일의 헤더를 조사하는데, 이는 상기 파일이 이미 암호화된 것 및/또는 무결성 확인된 것인 지를 결정하기 위함이다(스텝 712). 만일 상기 파일이 이미 암호화 및/또는 무결성 확인되었다면, 상기 서버는 상기 파일에 대하여 암호화 및/또는 무결성 확인 프로세스를 생략하고(skip) 상기 파일을 리모트 클라이언트로 전송한다(스텝 714).
상기 요구된 파일이 리모트 클라이언트에 수신되면, 그 다음 상기 리모트 클라이언트 상의 암호화 파일 시스템 또는 네트워크 파일 시스템은 상기 파일을 암호화되고 무결성 확인된 상태로 상기 클라이언트의 온-디스크 파일 시스템에 기록하거나, 또는 상기 네트워크 파일 시스템이 상기 파일을 상기 리모트 클라이언트의 온-디스크 파일 시스템에 기록하기 전에 복호화하고 무결성 확인할 수 있다(스텝 716).
본 발명은, 전체가 하드웨어로 구현되는 형태를 취하거나, 전체가 소프트웨어로 구현되는 형태를 갖거나, 또는 하드웨어 및 소프트웨어 요소의 조합의 형태로 구현될 수 있다. 바람직한 실시 예에서, 본 발명은 펌웨어(firmware), 레지던트 소프트웨어(resident software), 마이크로코드(microcode) 등을 포함하는(이에 한정되는 것은 아니다) 소프트웨어로 구현될 수 있다.
또한, 본 발명은, 컴퓨터 사용 가능 매체 또는 컴퓨터 판독가능 매체로부터 접근가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있으며, 여기서 상기 매체는 컴퓨터 또는 어떠한 명령 실행 시스템과 관련하여 또는 그에 의한 사용을 위해 프로그램 코드를 제공한다. 본 설명의 목적을 위해 컴퓨터 사용 가능 매체 또는 컴퓨터 판독가능 매체는 명령 실행 시스템, 장치 또는 디바이스와 관련하여 또는 그에 의한 사용을 위해 프로그램을 포함하거나, 저장하거나, 통신하거나, 보급하거나, 또는 전송하는 어떤 구체적인 장치(tangible appratus)가 될 수 있다.
상기 매체는, 전기, 자기, 광학, 전자기, 적외선, 반도체 시스템(또는 장치나 디바이스), 또는 프로그램 매체가 될 수 있다. 컴퓨터 판독 매체의 예시들은, 반도체를 이용한 장치(semiconductor) 또는 솔리드(solid) 상태 메모리, 마그네틱 테이프, 이동가능한 컴퓨터 디스켓, 랜덤 접근 메모리(RAM), 읽기전용메모리(ROM), 리지드(rigid) 마그네틱 디스크와 광학 디스크를 포함할 수 있다. 현재 광학 디스크의 예들은 컴팩트 디스크 - 읽기전용메모리 (CD-ROM), 컴팩트 디스크 - 읽기/쓰기(CD-R/W) 및 DVD를 포함한다.
데이터 처리 시스템 -프로그램 코드를 저장 및/또는 실행하기에 적당하다- 은, 시스템 버스를 통해 메모리 요소와 직접 또는 간접적으로 연결된 적어도 하나의 프로세서(processor)를 포함할 것이다. 메모리 요소들은 로컬 메모리, 벌크 스토리지(bulk storage), 및 캐시(cache)를 포함할 수 있다. 상기 로컬 메모리는 프로그램코드의 실제 실행 동안 사용되는 메모리이며, 상기 캐시 메모리는 실행 동안 벌크 스토리지로부터 검색되어야하는 코드의 검색 횟수를 감소시키기 위해서 적어도 몇몇 프로그램 코드에 관하여 임시 저장 장소를 제공하기 위한 메모리이다.
입/출력 또는 I/O 디바이스(키보드, 디스플레이, 포인팅 디바이스 등을 포함하는데, 이에 한정되는 것은 아님)는, 시스템에 직접적으로 연결되거나, 또는 외부(intervening) I/O 컨트롤러를 통해서 시스템에 연결된다.
또한, 네트워크 어댑터들이 중간에 개재하는 (intervening) 사설(private) 혹은 공중(public) 네트워크들을 통하여 데이터 처리 시스템이 다른 데이터 시스템과 , 혹은 리모트 프린터들, 혹은 저장 장치들과 접속하는 것을 가능하도록 시스템과 연결될 수 있다. 현재 이용 가능한 몇몇 네트워크 어댑터들 타입으로는 모뎀들(modems), 케이블 모뎀(cable modem), 이더넷 카드들(Ethernet cards)이 있다
본 발명에 관한 기술은 예시 및 설명을 위한 목적으로 제공된 것이며, 개시된 형태에서 발명이 전부 포함되었다는 것을 의도하거나 발명을 제한하려고 의도하는 것이 아니다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 여러 변형 및 변경이 가능할 것이다. 상기 실시 예들은, 발명의 원리들과 실제 응용을 가장 알기 쉽게 설명하기 위해서 선택된 것이며, 또한 특정한 사용에 적합하도록 여러 변형과 함께 발명의 여러 실시 예들에 관하여 본 발명을 이해하는 것이 당해 기술분야의 다른 통상의 기술이 있는 자들에게 가능하도록 선택되었다.

Claims (30)

  1. 네트워크 파일(network file)을 매니징 하기(managing) 위한 방법에 있어서,
    로컬 네트워크(local network) 파일 시스템에 저장된 파일을 읽기 위해, 리모트 네트워크(remote network) 파일 시스템으로부터의 요구를, 상기 로컬 네트워크 파일 시스템에서, 수신하는 단계;
    상기 파일이 암호화되거나 또는 무결성 확인된 것 중 적어도 하나 인지를 결정하기 위해 상기 파일과 관련된 암호화 속성(cryptographic attributes)을 조사하는 단계;
    상기 암호화 속성들이 상기 파일이 암호화되었음을 표시한다는 결정에 응답하여, 상기 파일이 리모트 네트워크 파일 시스템에 전송되기 전에 상기 로컬 네트워크 파일 시스템에 의해서 상기 파일의 암호화를 생략하는 단계;
    상기 암호화 속성들이 상기 파일이 무결성 확인되었음을 표시한다는 결정에 응답하여, 상기 파일이 리모트 네트워크 파일 시스템에 전송되기 전에 상기 로컬 네트워크 파일 시스템에 의해서 상기 파일의 무결성 확인을 생략하는 단계; 및
    상기 파일을 상기 리모트 네트워크 파일 시스템에 전송하는 단계
    를 포함하는 네트워크 파일을 매니징하기 위한 방법.
  2. 제 1항에 있어서,
    상기 파일을 생성하는 것에 응답하여, 상기 로컬 네트워크 파일 시스템의 속성들(attributes)에 대해 조회하기(query) 위해 상기 로컬 네트워크 파일 시스템 위에 스택된(layered) 암호화 파일 시스템을 사용하는 단계;
    상기 로컬 네트워크 파일 시스템의 속성들에 기초하여 상기 파일을 암호화 또는 무결성 확인하는 단계;
    상기 파일의 헤더에 암호 속성들을 삽입하는 단계 - 상기 암호화 속성들은 상기 파일이 암호화되었는지 또는 무결성 확인이 되었는지를 표시함 ; 및
    상기 파일을 상기 로컬 네트워크 파일 시스템에 기록하는(writing) 단계
    를 더 포함하는 네트워크 파일을 매니징하기 위한 방법.
  3. 제 2항에 있어서, 상기 로컬 네트워크 파일 시스템은 상기 파일에 pseudo-xattr 값을 채움으로써 상기 암호화 파일 시스템에 속성들을 전달하는(communicate)
    네트워크 파일을 매니징하기 위한 방법.
  4. 제 2항에 있어서, 상기 로컬 네트워크 파일 시스템은 어플리케이션 프로그래밍 인터페이스(application programming interface)를 사용하여 상기 암호화 파일 시스템에 상기 속성들을 전달하는
    네트워크 파일을 매니징하기 위한 방법.
  5. 제 1항에 있어서, 상기 파일을 수신 단계에서, 상기 파일이 이미 암호화되었다고 상기 리모트 네트워크 파일 시스템이 결정하면 상기 리모트 네트워크 파일 시스템은 상기 파일을 복호화(decrypt)하지 않는
    네트워크 파일을 매니징하기 위한 방법.
  6. 제 5항에 있어서, 상기 파일이 어플리케이션(application)에 전송되기 전에 상기 리모트 네트워크 파일 시스템이 상기 파일을 복호화하는
    네트워크 파일을 매니징하기 위한 방법.
  7. 제 1항에 있어서, 상기 파일을 수신하는 단계에서, 상기 파일이 이미 무결성 확인 되었다고 상기 리모트 네트워크 파일 시스템이 결정한 경우라면 상기 리모트 네트워크 파일 시스템은 상기 파일을 무결성 확인(integrity-verify)하지 않는
    네트워크 파일을 매니징하기 위한 방법.
  8. 제 1항에 있어서, 상기 리모트 네트워크 파일 시스템을 포함하는 클라이언트가 암호화 파일 시스템을 포함하지 않는
    네트워크 파일을 매니징하기 위한 방법.
  9. 제 2항에 있어서, 상기 로컬 네트워크 파일 시스템의 속성들은, 최대 전송 유닛 사이즈, 사용된 암호화 사이퍼, 키 사이즈, 사용된 사이퍼 블록 체이닝 모드(a cipher bock chaining mode used), 다양한 암호 속성 디스크립터들(descriptor) 의 옥텟 범위들과 코드들(octet ranges and codes)에 대한 매핑, 또는 사용한 무결성 확인 메커니즘 중 적어도 하나를 포함하는
    네트워크 파일을 매니징하기 위한 방법.
  10. 제 1항에 있어서, 상기 암호 속성들은, 이노드 메타데이터(inode metadata), 이노드 데이터, 암호화된 파일 리스트 파일, 또는 공유 폴리시(shared policy) 중 하나에 위치하는
    네트워크 파일을 매니징하기 위한 방법.
  11. 네트워크 파일을 매니징하기 위한 데이터 처리 시스템(data processing system)에 있어서,
    버스(bus);
    상기 버스에 연결된, 컴퓨터 사용 가능 코드를 포함하는, 스토리지 디바이스;
    상기 버스에 연결된 적어도 하나의 매니지된(managed) 디바이스;
    상기 버스에 연결된 통신 유닛; 및
    상기 버스에 연결된 프로세싱 유닛을 포함하되, 상기 프로세싱 유닛은 상기 컴퓨터 사용 가능 코드를 실행하여,
    로컬 네트워크(local network) 파일 시스템에 저장된 파일을 읽기 위해 리모트 네트워크(remote network) 파일 시스템으로부터의 요구를, 상기 로컬 네트워크 파일 시스템에서, 수신하고,
    상기 파일이 암호화되거나 또는 무결성 확인된 것 중 적어도 하나 인지를 결정하기 위해 상기 파일과 관련된 암호화 속성들(cryptographic attributes)을 조사하며,
    상기 암호화 속성들이 상기 파일이 암호화되었음을 표시한다는 결정에 응답하여, 상기 파일이 리모트 네트워크 파일 시스템에 전송되기 전에 상기 로컬 네트워크 파일 시스템에 의해서 상기 파일의 암호화를 생략하고,
    상기 암호화 속성들이 상기 파일이 무결성 확인되었음을 표시한다는 결정에 응답하여, 상기 파일이 리모트 네트워크 파일 시스템에 전송되기 전에 상기 로컬 네트워크 파일 시스템에 의해서 상기 파일의 무결성 확인을 생략하며, 그리고
    상기 파일을 상기 리모트 네트워크 파일 시스템에 전송하도록 하는
    데이터 처리 시스템.
  12. 제 11항에 있어서, 상기 프로세싱 유닛은 상기 컴퓨터 사용 가능 코드를 더 수행하여서,
    상기 파일을 생성하는 것에 응답하여, 상기 로컬 네트워크 파일 시스템의 속성들(attributes)에 대해 조회하기(query) 위해 상기 로컬 네트워크 파일 시스템 위에 스택된(layered) 암호화 파일 시스템을 사용하고,
    상기 로컬 네트워크 파일 시스템의 속성들에 기초하여 상기 파일을 암호화 또는 무결성 확인하며,
    상기 파일의 헤더에 암호 속성들을 삽입하고 - 상기 암호화 속성들은 상기 파일이 암호화되었는지 또는 무결성 확인이 되었는지를 표시함, 그리고
    상기 파일을 상기 로컬 네트워크 파일 시스템에 기록하(writing)도록 하는
    데이터 처리 시스템.
  13. 네트워크 파일을 매니징하기 위한 컴퓨터 프로그램 제품(product)에 있어서,
    상기 컴퓨터 프로그램 제품은 컴퓨터 사용 가능 매체를 포함하고, 상기 컴퓨터프로그램 사용 가능 매체는 그 위에 구체적으로(tangibly) 구현된 컴퓨터 사용 가능 프로그램 코드를 포함하되, 상기 컴퓨터 프로그램 코드는,
    로컬 네트워크(local network) 파일 시스템에 저장된 파일을 읽기 위해, 리모트 네트워크(remote network) 파일 시스템으로부터의 요구를, 상기 로컬 네트워크 파일 시스템에서, 수신하기 위한 컴퓨터 사용 가능 프로그램 코드;
    상기 파일이 암호화되거나 또는 무결성 확인된 것 중 적어도 하나 인지를 결정하기 위해 상기 파일과 관련된 암호화 속성(cryptographic attributes)을 조사하기 위한 컴퓨터 사용 가능 프로그램 코드;
    상기 암호화 속성들이 상기 파일이 암호화되었음을 표시한다는 결정에 응답하여, 상기 파일이 리모트 네트워크 파일 시스템에 전송되기 전에 상기 로컬 네트워크 파일 시스템에 의해서 상기 파일의 암호화를 생략하기 위한 컴퓨터 사용 가능 프로그램 코드;
    상기 암호화 속성들이 상기 파일이 무결성 확인되었음을 표시한다는 결정에 응답하여, 상기 파일이 리모트 네트워크 파일 시스템에 전송되기 전에 상기 로컬 네트워크 파일 시스템에 의해서 상기 파일의 무결성 확인을 생략하기 위한 컴퓨터 사용가능 프로그램 코드 ; 및
    상기 파일을 상기 리모트 네트워크 파일 시스템에 전송하기 위한 컴퓨터 사용가능 프로그램 코드를 포함하는
    네트워크 파일을 매니징하기 위한 컴퓨터 프로그램 제품.
  14. 제 13항에 있어서, 상기 컴퓨터 프로그램 제품은,
    상기 파일을 생성하는 것에 응답하여, 상기 로컬 네트워크 파일 시스템의 속성들(attributes)에 대해 조회하기(query) 위해 상기 로컬 네트워크 파일 시스템 위에 스택된(layered) 암호화 파일 시스템을 사용하기 위한 컴퓨터 사용 가능 프로그램 코드 ;
    상기 로컬 네트워크 파일 시스템의 속성들에 기초하여 상기 파일을 암호화 또는 무결성 확인하기 위한 컴퓨터 사용 가능 프로그램 코드;
    상기 파일의 헤더에 암호 속성들을 삽입하기 위한 컴퓨터 사용 가능 프로그램 코드 - 상기 암호화 속성들은 상기 파일이 암호화되었는지 또는 무결성 확인이 되었는 지를 표시함 ; 및
    상기 파일을 상기 로컬 네트워크 파일 시스템에 기록하기(writing) 사용하기 위한 컴퓨터 사용 가능 프로그램 코드
    를 더 포함하는 네트워크 파일을 매니징하기 위한 컴퓨터 프로그램 제품.
  15. 제 14항에 있어서,
    상기 로컬 네트워크 파일 시스템은 상기 파일에 pseudo-xattr 값을 채움으로써 상기 암호화 파일 시스템에 속성들을 전달하는(communicate)
    네트워크 파일을 매니징하기 위한 컴퓨터 프로그램 제품.
  16. 제 14항에 있어서, 상기 로컬 네트워크 파일 시스템은 어플리케이션 프로그래밍 인터페이스를 사용하여 암호화 파일 시스템에 상기 속성들을 전달하는
    네트워크 파일을 매니징하기 위한 컴퓨터 프로그램 제품.
  17. 제 13항에 있어서, 상기 파일을 수신할 때, 리모트 네트워크 파일 시스템이 상기 파일이 이미 암호화되었다고 결정한 경우에는 상기 리모트 네트워크 파일 시스템은 상기 파일을 복호화하지 않는
    네트워크 파일을 매니징하기 위한 컴퓨터 프로그램 제품.
  18. 제 16항에 있어서, 상기 리모트 네트워크 파일 시스템은, 상기 파일을 어플리케이션에 전송하기 전에 상기 파일을 복호화하는
    네트워크 파일을 매니징하기 위한 컴퓨터 프로그램 제품.
  19. 제 13항에 있어서, 상기 파일을 수신할 때, 리모트 네트워크 파일 시스템이 상기 파일이 이미 무결성 확인이 되었다고 결정한 경우라면, 상기 리모트 네트워크 파일 시스템은 상기 파일을 무결성 확인하지 않는
    네트워크 파일을 매니징하기 위한 컴퓨터 프로그램 제품.
  20. 제 14항에 있어서, 상기 로컬 네트워크 파일 시스템의 속성들은, 최대 전송 유닛 사이즈, 사용된 암호화 사이퍼, 키 사이즈, 사용된 사이퍼 블록 체이닝 모드, 다양한 암호화 속성 디스크립터들(descriptors)의 옥텟 범위들 및 코드들로의 매핑, 또는 사용된 무결성 확인 메커니즘, 중 적어도 하나를 포함하며, 그리고 상기 암호 속성들은 이노드(inode) 메타데이터, 이노드 데이터, 암호화된 파일리스트 파일, 또는 공유 폴리시(policy) 중 하나에 위치하는
    네트워크 파일을 매니징하기 위한 컴퓨터 프로그램 제품.
  21. 네트워크 파일을 매니징하기 위한 장치(apparatus)에 있어서,
    로컬 네트워크(local network) 파일 시스템에 저장된 파일을 읽기 위해, 리모트 네트워크(remote network) 파일 시스템으로부터의 요구를, 상기 로컬 네트워크 파일 시스템에서, 수신하는 수단;
    상기 파일이 암호화되거나 또는 무결성 확인된 것 중 적어도 하나 인지를 결정하기 위해 상기 파일과 관련된 암호화 속성(cryptographic attributes)을 조사하는 수단;
    상기 암호화 속성들이 상기 파일이 암호화되었음을 표시한다는 결정에 응답하여, 상기 파일이 리모트 네트워크 파일 시스템에 전송되기 전에 상기 로컬 네트워크 파일 시스템에 의해서 상기 파일의 암호화를 생략하는 수단;
    상기 암호화 속성들이 상기 파일이 무결성 확인되었음을 표시한다는 결정에 응답하여, 상기 파일이 리모트 네트워크 파일 시스템에 전송되기 전에 상기 로컬 네트워크 파일 시스템에 의해서 상기 파일의 무결성 확인을 생략하는 수단; 및
    상기 파일을 상기 리모트 네트워크 파일 시스템에 전송하는 수단을 포함하는
    네트워크 파일을 매니징하기 위한 장치.
  22. 제 21항에 있어서,
    상기 파일을 생성하는 것에 응답하여, 상기 로컬 네트워크 파일 시스템의 속성들(attributes)에 대해 조회하기(query) 위해 상기 로컬 네트워크 파일 시스템 위에 스택된(layered) 암호화 파일 시스템을 사용하는 수단;
    상기 로컬 네트워크 파일 시스템의 속성들에 기초하여 상기 파일을 암호화 또는 무결성 확인을 하는 수단;
    상기 파일의 헤더에 암호 속성들을 삽입하는 수단 - 상기 암호화 속성들은 상기 파일이 암호화되었는지 또는 무결성 확인이 되었는지를 표시함 ; 및
    상기 파일을 상기 로컬 네트워크 파일 시스템에 기록하는(writing) 수단을
    더 포함하는
    네트워크 파일을 매니징하기 위한 장치.
  23. 제 22항에 있어서, 상기 로컬 네트워크 파일 시스템은 상기 파일에 pseudo-xattr 값을 채움으로써 상기 암호화 파일 시스템에 상기 속성들을 전달하는(communicate) 동작을 할 수 있도록 되어있는
    네트워크 파일을 매니징하기 위한 장치.
  24. 제 22항에 있어서, 상기 로컬 네트워크 파일 시스템은 어플리케이션 프로그래밍 인터페이스를 사용하여 상기 암호화 파일 시스템에 상기 속성들을 전달하는 동작을 할 수 있도록 되어있는
    네트워크 파일을 매니징하기 위한 장치.
  25. 제 21항에 있어서, 상기 파일을 수신할 때, 리모트 네트워크 파일 시스템이 상기 파일이 이미 암호화되었다고 결정한 경우에는 상기 리모트 네트워크 파일 시스템에서 파일을 복호화하지 않는 동작을 할 수 있도록 되어있는
    네트워크 파일을 매니징하기 위한 장치.
  26. 제 25항에 있어서, 상기 리모트 네트워크 파일 시스템은 상기 파일이 어플리케이션에 전송되기 전에 암호를 복호화하는 동작을 할 수 있도록 되어있는
    네트워크 파일을 매니징하기 위한 장치.
  27. 제 21항에 있어서, 상기 파일을 수신할 때, 리모트 네트워크 파일 시스템이 상기 파일이 이미 무결성 확인이 되었다고 결정한 경우라면, 상기 리모트 네트워크 파일 시스템은 상기 파일을 무결성 확인을 하지 않는 동작을 할 수 있도록 되어있는
    네트워크 파일을 매니징하기 위한 장치.
  28. 제 21항에 있어서, 상기 리모트 파일 시스템을 포함하는 클라이언트는 암호화 파일 시스템을 포함하지 않는
    네트워크 파일을 매니징하기 위한 장치.
  29. 제 22항에 있어서, 상기 로컬 네트워크 파일 시스템의 속성은, 최대 전송 유닛 사이즈, 사용된 암호화 사이퍼, 키 사이즈, 사용된 사이퍼 블록 체이닝 모드, 다양한 암호 속성 디스크립터들(descriptors)의 옥텟 범위들 및 코드들로의 매핑, 또는 사용된 무결성 확인 메커니즘, 중 적어도 하나를 포함하는
    네트워크 파일을 매니징하기 위한 장치.
  30. 제 21항에 있어서, 상기 암호 속성들은 이노드(inode) 메타데이터, 이노드 데이터, 암호화된 파일리스트 파일, 또는 공유 폴리시(policy) 중 하나에 위치하는 네트워크 파일을 매니징하기 위한 장치.
KR1020107001759A 2007-07-27 2008-07-22 파일 시스템 레벨에서 명확하게 인지되는 데이터 변환을 위한 시스템 및 방법 KR101221310B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/829,132 2007-07-27
US11/829,132 US7877602B2 (en) 2007-07-27 2007-07-27 Transparent aware data transformation at file system level for efficient encryption and integrity validation of network files
PCT/EP2008/059610 WO2009016070A1 (en) 2007-07-27 2008-07-22 Transparent aware data transformation at file system level

Publications (2)

Publication Number Publication Date
KR20100039359A true KR20100039359A (ko) 2010-04-15
KR101221310B1 KR101221310B1 (ko) 2013-01-11

Family

ID=40091306

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107001759A KR101221310B1 (ko) 2007-07-27 2008-07-22 파일 시스템 레벨에서 명확하게 인지되는 데이터 변환을 위한 시스템 및 방법

Country Status (7)

Country Link
US (1) US7877602B2 (ko)
EP (1) EP2174465B1 (ko)
JP (1) JP4929398B2 (ko)
KR (1) KR101221310B1 (ko)
CN (1) CN101803327B (ko)
AT (1) ATE513406T1 (ko)
WO (1) WO2009016070A1 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8775823B2 (en) 2006-12-29 2014-07-08 Commvault Systems, Inc. System and method for encrypting secondary copies of data
EP2185936A4 (en) * 2007-08-02 2010-08-04 Iss Immune System Stimulation DIAGNOSIS, STADIFICATION AND SURVEILLANCE OF INFLAMMATORY ABDOMINAL DISEASE
US8019795B2 (en) * 2007-12-05 2011-09-13 Microsoft Corporation Data warehouse test automation framework
JP2010186352A (ja) * 2009-02-12 2010-08-26 Brother Ind Ltd 情報処理装置及び情報処理用プログラム
US8626876B1 (en) 2012-11-28 2014-01-07 Limelight Networks, Inc. Intermediate content processing for content delivery networks
US20150052347A9 (en) * 2009-12-14 2015-02-19 Michael T. Kain File-based application programming interface providing selectable security features
US8478996B2 (en) * 2009-12-21 2013-07-02 International Business Machines Corporation Secure Kerberized access of encrypted file system
US8751789B2 (en) * 2010-09-17 2014-06-10 International Business Machines Corporation General purpose distributed encrypted file system
US8788816B1 (en) * 2011-02-02 2014-07-22 EJS Technologies, LLC Systems and methods for controlling distribution, copying, and viewing of remote data
US8346742B1 (en) * 2011-03-30 2013-01-01 Ari Juels Remote verification of file protections for cloud data storage
CN103650410A (zh) * 2011-05-31 2014-03-19 三星Sds株式会社 基于id的加密及签名方法以及终端
US8819361B2 (en) * 2011-09-12 2014-08-26 Microsoft Corporation Retaining verifiability of extracted data from signed archives
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
CN103076988A (zh) * 2012-12-28 2013-05-01 银联商务有限公司 一种密码输入方法及装置
US9367702B2 (en) 2013-03-12 2016-06-14 Commvault Systems, Inc. Automatic file encryption
JP6079875B2 (ja) 2013-05-27 2017-02-15 富士通株式会社 アプリケーション実行プログラム,アプリケーション実行方法及びアプリケーションを実行する情報処理端末装置
CN105981027A (zh) * 2013-08-12 2016-09-28 哥莱菲特软件公司 安全认证并切换至加密域
CN106134230A (zh) 2013-11-21 2016-11-16 哥莱菲特软件公司 用于移动信息设备上的远程内容和配置控制的管理域
US9405928B2 (en) 2014-09-17 2016-08-02 Commvault Systems, Inc. Deriving encryption rules based on file content
US10049228B2 (en) 2015-01-20 2018-08-14 Microsoft Technology Licensing, Llc File encryption support for FAT file systems
US9575687B2 (en) * 2015-01-29 2017-02-21 Vmware, Inc. Host-based replication with end-to-end compression
US10200499B1 (en) 2015-01-30 2019-02-05 Symantec Corporation Systems and methods for reducing network traffic by using delta transfers
US9735965B1 (en) * 2015-04-16 2017-08-15 Symantec Corporation Systems and methods for protecting notification messages
CN106528571A (zh) * 2015-09-14 2017-03-22 北京中质信维科技有限公司 一种用于移动终端的文件管理方法及系统
US10187485B1 (en) 2015-09-28 2019-01-22 Symantec Corporation Systems and methods for sending push notifications that include preferred data center routing information
US10454679B2 (en) * 2016-06-10 2019-10-22 Apple Inc. File system support for rolling keys on file extents
US10367639B2 (en) 2016-12-29 2019-07-30 Intel Corporation Graphics processor with encrypted kernels
CN108173868A (zh) * 2018-01-05 2018-06-15 中国地质大学(武汉) 一种一对多文件分发的方法、设备及存储设备
CN108509613A (zh) * 2018-04-03 2018-09-07 重庆大学 一种利用nvm提升加密文件系统性能的方法
US11290258B2 (en) 2019-02-22 2022-03-29 Panasonic Avionics Corporation Hybrid cryptographic system and method for encrypting data for common fleet of vehicles

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6868495B1 (en) * 1996-09-12 2005-03-15 Open Security Solutions, Llc One-time pad Encryption key Distribution
KR19980072826A (ko) * 1997-03-08 1998-11-05 김광호 휴대용 컴퓨터
US7580919B1 (en) * 1997-03-10 2009-08-25 Sonicwall, Inc. Query interface to policy server
US6523022B1 (en) * 1997-06-09 2003-02-18 Allen Hobbs Method and apparatus for selectively augmenting retrieved information from a network resource
US6249866B1 (en) * 1997-09-16 2001-06-19 Microsoft Corporation Encrypting file system and method
CA2302784A1 (en) * 1997-09-17 1999-03-25 Frank C. Luyster Improved block cipher method
US6128737A (en) * 1998-04-20 2000-10-03 Microsoft Corporation Method and apparatus for producing a message authentication code in a cipher block chaining operation by using linear combinations of an encryption key
US6226742B1 (en) * 1998-04-20 2001-05-01 Microsoft Corporation Cryptographic technique that provides fast encryption and decryption and assures integrity of a ciphertext message through use of a message authentication code formed through cipher block chaining of the plaintext message
JP2004509392A (ja) * 2000-09-08 2004-03-25 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェアのセキュア認証済チャネル
JP2002290900A (ja) * 2001-03-23 2002-10-04 Hitachi Ltd 情報安全化装置及び情報保証システム
JP3978046B2 (ja) * 2002-02-25 2007-09-19 日本電信電話株式会社 ファイルアクセス制御方法、プログラム及び記憶媒体
US7899189B2 (en) * 2004-12-09 2011-03-01 International Business Machines Corporation Apparatus, system, and method for transparent end-to-end security of storage data in a client-server environment
US7434253B2 (en) * 2005-07-14 2008-10-07 Microsoft Corporation User mapping information extension for protocols
JP2007188445A (ja) * 2006-01-16 2007-07-26 Nec Corp 情報漏えい防止システム及び情報漏えい防止方法

Also Published As

Publication number Publication date
EP2174465A1 (en) 2010-04-14
KR101221310B1 (ko) 2013-01-11
US20090031128A1 (en) 2009-01-29
CN101803327A (zh) 2010-08-11
ATE513406T1 (de) 2011-07-15
CN101803327B (zh) 2013-04-24
JP4929398B2 (ja) 2012-05-09
JP2010534875A (ja) 2010-11-11
US7877602B2 (en) 2011-01-25
EP2174465B1 (en) 2011-06-15
WO2009016070A1 (en) 2009-02-05

Similar Documents

Publication Publication Date Title
KR101221310B1 (ko) 파일 시스템 레벨에서 명확하게 인지되는 데이터 변환을 위한 시스템 및 방법
US9536102B2 (en) Privacy-protective data transfer
EP3420492B1 (en) Idps access-controlled and encrypted file system design
US8107621B2 (en) Encrypted file system mechanisms
US7908476B2 (en) Virtualization of file system encryption
US7047407B2 (en) Network system enabling transmission control
US9152813B2 (en) Transparent real-time access to encrypted non-relational data
US8245050B1 (en) System and method for initial key establishment using a split knowledge protocol
US20080235521A1 (en) Method and encryption tool for securing electronic data storage devices
EP3565174A1 (en) Access management system, access management method, and program
US11755499B2 (en) Locally-stored remote block data integrity
US10346319B1 (en) Separate cryptographic keys for protecting different operations on data
US8190905B1 (en) Authorizing administrative operations using a split knowledge protocol
US7802102B2 (en) Method for efficient and secure data migration between data processing systems
CN114186245A (zh) 来自存储系统的加密密钥
US7886147B2 (en) Method, apparatus and computer readable medium for secure conversion of confidential files
EP2827276B1 (en) Secure data processing
CA2582867A1 (en) Method and encryption tool for securing electronic data storage devices

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
LAPS Lapse due to unpaid annual fee