KR20230024342A - 데이터의 압축 및 암호화를 위한 시스템들 및 방법들 - Google Patents

데이터의 압축 및 암호화를 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR20230024342A
KR20230024342A KR1020237000600A KR20237000600A KR20230024342A KR 20230024342 A KR20230024342 A KR 20230024342A KR 1020237000600 A KR1020237000600 A KR 1020237000600A KR 20237000600 A KR20237000600 A KR 20237000600A KR 20230024342 A KR20230024342 A KR 20230024342A
Authority
KR
South Korea
Prior art keywords
hash table
data
encryption key
keys
encryption
Prior art date
Application number
KR1020237000600A
Other languages
English (en)
Inventor
크리스토퍼 에이 맥켈빈
Original Assignee
로그노베이션스 홀딩스, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 로그노베이션스 홀딩스, 엘엘씨 filed Critical 로그노베이션스 홀딩스, 엘엘씨
Publication of KR20230024342A publication Critical patent/KR20230024342A/ko

Links

Images

Classifications

    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/043Masking or blinding of tables, e.g. lookup, substitution or mapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/30Compression, e.g. Merkle-Damgard construction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

데이터의 압축 및 암호화를 위한 시스템들 및 방법들이 본 명세서에서 설명된다. 방법은, 암호화 키에 비트 마스크를 적용함으로써 복수의 해시 테이블 키들을 생성하는 단계, 암호화 키에 해싱 함수를 적용하는 단계, 해싱 함수를 사용하여 해시 테이블을 생성하는 단계 - 해시 테이블은 복수의 해시 테이블 키들 및 인덱스 값들을 포함하고, 인덱스 값들 각각은 복수의 해시 테이블 키들 중 하나에 연결된 해시 테이블 내의 데이터의 위치를 식별함 -, 입력 데이터를 수신하는 단계, 및 인코딩된 데이터를 발생시키기 위해 입력 데이터를 인코딩하는 단계 - 인코딩은 암호화 키 및 해시 테이블을 사용한 입력 데이터의 압축 및 암호화 둘 다를 포함함 - 를 포함한다.

Description

데이터의 압축 및 암호화를 위한 시스템들 및 방법들
본 개시는 데이터 보안 및 프라이버시 기술 분야에 관한 것이며, 보다 구체적으로, 이에 제한되는 것은 아니나, 압축 및 암호화의 단일 프로세스를 사용하여 데이터를 인코딩하는 시스템들 및 방법들에 관한 것이다.
본 개시는, 암호화 키에 비트 마스크를 적용함으로써 복수의 해시 테이블 키들을 생성하는 단계; 암호화 키에 해싱 함수를 적용하는 단계; 해싱 함수를 사용하여 해시 테이블을 생성하는 단계 - 해시 테이블은 복수의 해시 테이블 키들 및 인덱스 값들을 포함하고, 인덱스 값들 각각은 복수의 해시 테이블 키들 중 하나에 연결된 해시 테이블 내의 데이터의 위치를 식별함 - ; 입력 데이터를 수신하는 단계; 및 인코딩된 데이터를 발생시키기 위해 입력 데이터를 인코딩하는 단계 - 인코딩은, 암호화 키 및 해시 테이블을 사용하는 입력 데이터의 압축 및 암호화 둘 다를 포함함 - 를 포함할 수 있다.
본 개시는 시스템을 포함할 수 있으며, 시스템은: 프로세서; 및 명령어들을 저장하기 위한 메모리를 포함하며, 프로세서는, 암호화 키에 비트 마스크를 적용함으로써 복수의 해시 테이블 키들을 생성하도록; 암호화 키에 해싱 함수를 적용하도록; 해싱 함수를 사용하여 해시 테이블을 생성하도록 - 해시 테이블은 복수의 해시 테이블 키들 및 인덱스 값들을 포함하고, 인덱스 값들 각각은 복수의 해시 테이블 키들 중 하나에 연결된 해시 테이블 내의 데이터의 위치를 식별함 - ; 입력 데이터를 수신하도록; 그리고 인코딩된 데이터를 발생시키기 위해 입력 데이터를 인코딩하도록 명령어들을 실행하고, 인코딩은 암호화 키 및 해시 테이블을 사용하는 입력 데이터의 압축 및 암호화 둘 다를 포함한다.
본 기술의 특정 실시예들은 첨부된 도면들에 의해 예시된다. 도면들은 반드시 비율에 맞게 그려진 것은 아니며, 기술을 이해하는 데 필요하지 않거나 다른 세부 사항들을 인식하기 어렵게 하는 세부 사항들은 생략될 수 있음이 이해될 것이다. 본 기술이 본 명세서에 예시된 특정 실시예들로 반드시 제한되는 것은 아니라는 점이 이해될 것이다.
도 1은 본 명세서에 개시된 시스템들 및 방법들을 제공하기 위한 기술들 및 구조들이 구현될 수 있는 예시적인 개략도를 도시한다.
도 2는 도 1에 예시된 바와 같은 시스템을 사용하여 데이터를 인코딩하는 것과 관련된 본 개시의 예시적인 방법의 흐름도이다.
도 3은 본 개시의 예시적인 서브 방법의 흐름도이다.
도 4는 본 개시의 다른 예시적인 서브 방법의 흐름도이다.
도 5는 해시 테이블 생성과 관련된 본 개시의 또 다른 예시적인 서브 방법의 흐름도이다.
도 6은 입력 데이터의 인코딩과 관련된 본 개시의 또 다른 예시적인 서브 방법의 흐름도이다.
도 7은 본 기술에 따른 실시예들을 구현하는 데 사용되는 예시적인 컴퓨터 시스템의 개략도이다.
도 8a 내지 도 8m은 본 개시의 암호화 키 프로세스를 구현하기 위한 예시적인 코드를 예시한다.
일반적으로, 본 개시는 데이터 보안 및 프라이버시에 관한 것이다. 보다 상세하게, 본 명세서의 시스템들 및 방법들은, 일반적으로 인코딩이라고 지칭되는 단일 프로세스에서 입력 데이터 파일 또는 스트림을 압축 및 암호화하는 데 사용될 수 있다.
맥락과 관련하여, 데이터 압축과 암호화의 기본 특성들 및 목표들은 서로 상이하다. 데이터 압축의 목표는 데이터 내의 패턴들을 활용하여 중복성을 감소시켜서 출력을 원본보다 작게 만드는 것이고, 반면에 데이터 암호화의 목표는 패턴들이 발견될 수 없도록 데이터를 인코딩하여서 입력 데이터 또는 스트림 내에 포함된 정보를 보호하는 것이다.
감소된 저장 및/또는 전송 비용을 통해, 전송 중인 그리고 저장된 데이터의 크기를 감소시키기 위한 데이터 압축에 대해 명백한 이점들이 존재한다. 데이터 파일 또는 스트림 콘텐츠가 알려지지 않도록 보호하기 위한 데이터 암호화에 대한 명백한 이점들도 존재한다. 해마다 더 많은 데이터가 생성되고 더 많은 최종 사용자들이 프라이버시 및 그들의 정보 보안에 대해 우려하기 때문에, 데이터 압축과 암호화를 결합하는 것은 폭넓은 적용 가능성을 갖는다. 매년 생성되고, 전송되고, 저장되는 총 데이터 양은 증가하고 있다. 클라우드 컴퓨팅 및 개인 컴퓨팅 디바이스들의 증가와 비용 효율성을 고려하면, 최종 사용자들은 몇몇 대규모 중앙 집중화된 지점들의 컴퓨팅 리소스들에 점점 더 의존하고 있다. 파일이나 스트림과 같은 최종 사용자의 데이터를 보호하는 것은, 중앙 프로세싱 시설로 전송될 때, 데이터가 저장되는 동안, 또는 프로세싱 되기를 기다리는 동안에 조차도, 공공 및 민간 영역들 둘 다에서 엔티티들에 대한 핵심 차별화 요소가 되어 왔다. 데이터를 전송하고 저장하는 비용은 비교적 고정된 채로 있다. 따라서, 전송되거나 저장되는 데이터 총량의 감소는, 데이터 전송 또는 저장을 비용으로서 셈하는 비즈니스를 운영하기 위한 비용을 감소시킬 수 있다.
본 명세서에 개시된 바와 같이 데이터 압축과 암호화를 결합하는 것은, 단일 프로세스에서 데이터 압축 및 암호화 둘 다의 모든 개별 이점들을 제공한다. 단일 프로세스는 압축 및 암호화를 위한 다수 단계들에 대한 필요성을 감소시킨다. 단계들의 개수의 감소는 시스템 내에서의 장애 지점을 줄이고, 이는 그러한 시스템을 유지 보수하거나 동작시키는 비용을 감소시킬 수 있으며 최종 사용자들에 대한 그 시스템의 가용성을 증가시킬 수 있다.
예시적인 실시예들
이제 도면들로 돌아가서, 도 1은 본 명세서에 개시된 시스템들 및 방법들을 제공하기 위한 기술들 및 구조들이 데이터 인코딩과 관련하여 구현될 수 있는 예시적인 개략도를 도시한다. 위에서 언급한 바와 같이, 인코딩은 단일의 종단 간(end-to-end) 프로세스에서 데이터의 압축 및 암호화 둘 다를 포함한다.
시스템은, 난수 발생기를 사용하여 발생된 개인 키를 사용하여 데이터를 인코딩(압축과 암호화의 결합)하는 데에 사용될 수 있다. 개인 키는 암호화 키로서 기능하며 해시 테이블 키들 및 해시 함수를 발생시키는 데 사용된다. 시스템은 네트워크(110)를 통해 함께 통신 가능하게 결합된 인코딩 컴퓨터(100) 및 디코딩 컴퓨터(105)를 포함할 수 있다. 시스템(100)은 또한 난수 발생기(115) 및 암호화 키 발생기(120)를 포함한다. 인코딩 컴퓨터(100)는 인코딩 모듈(103) 및 2차 암호화 모듈(109)을 포함할 수 있다. 디코딩 컴퓨터(105)는 디코딩 모듈(111) 및 2차 복호화 모듈(113)을 포함할 수 있다.
네트워크(110)는, 케이블 네트워크들, 인터넷, 무선 네트워크들, 및 다른 사설 및/또는 공중 네트워크들과 같은, 다수의 상이한 유형의 네트워크들 중 임의의 하나 또는 이들의 조합을 포함할 수 있다. 일부 경우들에서, 네트워크(110)는 셀룰러, Wi-Fi 또는 Wi-Fi 다이렉트를 포함할 수 있다. 임의의 근거리 또는 장거리 무선 또는 유선 통신들이 사용될 수 있다.
구별되는 컴퓨팅 시스템들이 예시되어 있지만, 인코딩 컴퓨터(100) 및 디코딩 컴퓨터(105)는 동일한 디바이스 또는 시스템에 통합될 수 있고, 이는 단일 시스템 또는 디바이스 내에서 안전한 데이터 전송을 허용할 수 있다. 인코딩 컴퓨터(100) 및 디코딩 컴퓨터(105)는 동일한 디바이스 내에서 모듈들로서 기능할 수 있다.
적절한 경우에, 본 명세서에 설명된 기능들은, 하드웨어, 소프트웨어, 펌웨어, 디지털 구성요소들 또는 아날로그 구성요소들, 중 하나 이상에서 수행될 수 있다. 예를 들어, 인코딩 및/또는 디코딩 시스템들은 본 명세서에서 설명된 시스템들 및 절차들 중 하나 이상을 실행하도록 프로그래밍될 수 있는 하나 이상의 주문형 집적 회로(ASIC)들 또는 마이크로컨트롤러들로서 구현될 수 있다. 특정 용어들이 설명 전반에 걸쳐 사용되며 청구항들은 특정 시스템 구성요소들을 언급한다. 통상의 기술자가 이해할 바와 같이, 구성요소들은 상이한 명칭들로 지칭될 수 있다. 본 명세서는, 명칭은 다르지만 기능이 다르지 않은 구성요소들을 구분하는 것을 의도하지 않는다.
난수 발생기(115)는 암호화 키 발생기(120)에 의한 시드 키 발생에 사용되는 엔트로피의 비트들을 생성하도록 구성된다. 암호화 키 발생기(120)는 난수 발생기(115)로부터 엔트로피 비트들을 수신하고 복수의 암호화 키들을 발생시킨다. 생성되는 암호화 키들의 개수는 설계 요구 사항들에 따라 달라질 수 있다. 일부 실시예들에서, 각각의 키는 128비트 키이지만, 다른 크기들의 키들이 또한 발생될 수 있다. 확실히 하기 위해, 복수의 암호화 키들 각각은 서로 유사한 길이를 가질 수 있다.
복수의 암호화 키들은, 본 명세서에 개시된 바와 같이 데이터를 인코딩하는 데 사용될 수 있는 후보 암호화 키들의 풀을 생성하기 위해 발생된다. 일부 실시예들에서, 최적의 암호화 키가 복수의 암호화 키들로부터 선택된다. 일부 실시예들에서, 복수의 암호화 키들의 양은 반복되는 암호화 키 분석을 허용하도록 충분히 클 수 있다.
최종적으로 선택되는 암호화 키는, 원하는 양의 압축 및 원하는 양의 암호화(예를 들어, 인코딩) 둘 다를 산출시키는 후보 암호화 키들 중 하나를 포함할 수 있다. 선택되는 키 발견은, 어떤 암호화 키들이 사용될 수 있고 어떤 것들이 사용될 수 없는지를 결정하기 위해, 복수의 암호화 키들 각각으로 복수의 샘플 데이터 파일들을 인코딩 및 디코딩하는 반복 프로세스를 포함할 수 있다. 비교는, 복수의 암호화 키들을 사용한 결과인 샘플 데이터 파일들의 압축량을 평가하는 것을 포함할 수 있다.
본 개시에 따라 데이터를 인코딩하기 위해 선택된 최적의 암호화 키 또는 암호화 키들의 세트는 복수의 암호화 키들 중 가장 최적인 암호화 키가 아닐 수 있는데, 이러한 키는, 전송된 또는 저장된 데이터 파일 또는 스트림에 대하여 발견하고 확인하기가 용이할 것이기 때문이라는 점이 이해될 것이다.
랜덤하게 발생된 n 비트들의 암호화 키를 고려할 때, 비트별(bitwise) 인덱싱 함수에 대한 ((2^n)*n)-1개의 상이한 최적 시작 위치들을 나타내는 (2^n)-1개의 상이한 암호화 키들이 존재한다는 것이 이해될 것이다(비트별 인덱싱 함수의 사용은 아래에 설명된다). 달리 말하면, 매 n비트 윈도우 크기마다 압축을 위한 최적의 암호화 키가 존재한다. n이 충분히 크고 (2^n)-1의 순서가 인코딩 및/또는 디코딩 함수의 외부에 알려지지 않은 경우, 매 n에 대한 압축 및 암호화를 산출시킬 암호화 키가 존재한다.
또한, n이 정확히 랜덤이고 2^n-1의 암호화 키가 정확히 랜덤인 경우, 압축은 일어나지 않을 것이다. 암호화 키가 주어진 f(i)(즉, 인코딩 및/또는 디코딩 함수)의 출력은 n의 콘텐츠와 그 암호화 키 (2^n)-1이 알려지지 않은 경우에만 완벽하게 암호화된다.
모든 최적의 암호화 키에 대하여, 압축이 일어나지 않을 때까지, 두번째로 가장 최적, 세번째로 가장 최적, 네번째로 가장 최적 등이 존재한다. 또한, 많은 차선의(suboptimal) 암호화 키들이 존재한다(즉, n을 더 크게 만든다). 사실 |((2^n)-1)/(n))-(2^n)-1)|개의 차선의 암호화 키들이 존재한다. 암호화에 사용하기에 충분히 큰 암호화 키는, 암호화 키의 비트들의 총 개수에 의해 결정되는 것이 아니라, (2^n)-1)/(n)에 의해 결정될 수 있다.
이상적으로 (2^n)-1)/(n)은, 현실적인 또는 실행 가능한 시간의 양 또는 돈의 양으로 공격자에 의해 쉽게 저장되거나 확인될 수 있는 암호화 키들의 수보다 커야 한다. 일부 경우들에서, 암호화 키 크기는 (2^n)-1)보다 커야 하며, (2^n)-1)/(n)은 (2^n)-1의 서브 그룹이다. (2^n)-1과 그 서브 그룹 ((2^n)-1)/(n))의 암호화 키의 모든 특성들은 계산과 관련하여 동일하다.
해시 테이블(135)을 발생시키는 데 사용하기 위해 선택된 암호화 키 또는 암호화 키들의 세트는, 암호화 키(들)이 샘플 파일들/데이터를 압축 및 암호화 둘 다를 하는 방법을 비교함으로써 선택될 수 있음이 이해될 것이다. 즉, 암호화 키의 콘텐츠에 기초하여 압축 및 암호화 양상들이 다를 수 있다. 예를 들어, 하나의 암호화 키는, 샘플 파일을 충분히 압축할 수 있지만 샘플 파일을 충분히 암호화하지 못할 수 있다. 다른 암호화 키는, 샘플 파일을 충분히 압축하지 못할 수 있지만 샘플 파일을 충분히 암호화할 수 있다. 일부 실시예들에서, 인코딩 컴퓨터(100)는 압축 및 암호화의 미리 선택된 균형을 갖는 암호화 키를 복수의 암호화 키들로부터 선택하도록 구성될 수 있다. 일 실시예에서, 압축은 대략 8:1의 비율일 수 있다.
다양한 실시예들에서, 최상의 압축을 위해 선택된 암호화 키는, n-길이의 모든 이진 순열들을 나타내는 표준 키들을 이용할 수 있다. 일련의 이진 정보는 특정한 또는 선택된 길이를 초과하지 않을 수 있다. 다른 암호화 키는 n번째로 가장 최적인 암호화 키인 조합을 산출할 수 있다. 압축에 가장 최적이지도 암호화에 가장 최적이지도 않지만 암호화와 압축 사이의 균형을 유지하는 다른 암호화 키가 선택될 수 있다.
일 실시예에서, 선택된 암호화 키(125)는, 매우 다양한 바이트 시퀀스가 존재하도록 상당한 크기일 수 있다. 이상적으로, 선택된 암호화 키(125)는, 데이터 난독화를 제공할 뿐만 아니라, 가변 길이 바이트 인코딩(즉, 도 8a 내지 도 8m에 참조된 파라미터 "-c 0")의 추가 없이, 50%+ 압축률을 산출하는, 12~24개 비트들에 대하여 48~64개 문자들의 표시를 허용해야 한다. 일 실시예에서, 이용되는 비트마스크의 마스크 길이는 길이가 적어도 8개의 문자들이어야 한다. 선택된 암호화 키(125)의 콘텐츠가, 선택된 암호화 키(125)가 적용될 때 데이터가 얼마나 광범위하게 확산되는지를 결정할 수 있기 때문에, 마스크 길이의 크기는 동작 요구사항들에 따라 달라질 수 있다. 요약하면, 위의 방법들을 사용하여, 복수의 암호화 키들로부터, 선택된 암호화 키(125)로서 지정되는 단일의 암호화 키가 선택된다.
단일의 암호화 키는 비트마스크를 단일 암호화 키에 적용하는 것에 기초하여 복수의 해시 테이블 키들을 발생시키는 데 사용될 수 있다. 이 방법은 또한 선택된 암호화 키(125)로부터 해시 함수(127)를 발생시키는 단계를 포함한다. 방법은, 해시 함수(127) 및 복수의 해시 키들로부터 해시 테이블(135)을 발생시키는 단계를 포함한다.
따라서, 본 명세서에서 논의되는 다양한 키들 중에서, 암호화 키라고 지칭되는 하나의 키는, 데이터를 인코딩하는 데 사용되는 인코더/암호화 키를 지칭한다. 암호화 키는, 일부 실시예들에서, 키 파일의 형태일 수 있다. 해시 키들은 발생된 해시 테이블/맵의 키 값들을 지칭한다.
예시로서, 키 추출의 메커니즘은 아래의 용어들을 사용하여 설명될 수 있다:
● 01 <- 데이터의 바이트;
● 01 23 45 67 <- 문서에 대한 키 파일(예: 샘플 파일)로부터의 하나의 32비트 크기 '청크';
● 01 23 45 67 89 AB CD EF 키 파일로부터 판독된 64비트 청크(워드라고 지칭됨) [01 23 45 67 89 AB CD EF, FE DC BA 98 76 54 32 10] <- 기본적이고, 예시적인 암호화 키;
● [00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111
● 11111110 11011100 10111010 10011000 01110110 01010100 00110010 00010000] <- 이진수로 된 우리의 아주 기본적인 암호화 키(표준 MSbit-first 형식으로 기록됨).
해시 테이블은 키 내의 비트들 각각에 대해 하나의 값으로 발생되므로, 이 예시에서 우리는 비정렬 맵 내에서 128개의 구별되는 값들을 가질 것이다. 맵 내의 i번째 값은 전체 키 내의 i번째 비트와 관련된다. 해시 테이블(135)은 <i,j> 구성요소들을 참조할 수 있으며, 여기서 "i"는 매치(match)의 인덱스 또는 시작 위치이고 "j"는 매치의 비트들의 길이이다. 일반적으로, <i,j>와 관련하여, i는 비트 인덱스이고 j는 비트들에서의 매치 길이이다. 참고: <i,j>는 <i mod j>와 같이 생각될 수도 있다.
일부 실시예들에서, 해시 함수(127)는 특정 해시 키에 연결되는 해시 테이블(135) 내의 데이터의 위치를 식별하는 인덱스 값을 발생시키는 데 사용된다.
그 다음, 이들 데이터는 패스된 비트마스크의 길이만큼 감소된다. 예를 들어, 코덱 구성에 패스될 때 4의 비트마스크는, 해시 테이블 내의 모든 엔트리가 4비트 길이일 것임을 의미할 것이다. 예를 들면:
● i=0: 워드 1;
● i=31: 워드 1의 후반부 + 워드 2의 전반부;
● i=95: 워드 2의 후반부 + 워드 1의 전반부; 및
● i=127: 워드 2의 마지막 비트 + 워드 1의 앞쪽 63 비트들.
예를 들어, 12의 비트마스크로 해시 테이블(135)에 추가될 31번째 항목을 고려하면, 다음 값: [10001001 10101011 11001101 11101111 11111110 11011100 10111010 10011000]이 발생되고, 다음 해시 테이블 키 10001001 1011로 해시 테이블에 추가된다. 개념적으로, 해시 테이블(135)의 엔트리들은 링크된 목록들로서 기능하므로, 동일한 키를 만들어 내는 입력 데이터의 모든 후보 세그먼트들이 각 엔트리의 목록에 첨부된다.
예시:
위의 키와 마스크 길이 4를 고려할 때, 해시 테이블의 하나의 엔트리는 아래와 같을 것이다:
Figure pct00001
해시 키: 1001
값: (링크된 목록)
1. 01011001 11100010 01101010 11110011
2. 10001001 10101011 11001101 11101111
3. 11111001 11011101 10011111 01011011
해시 테이블 1의 요소들은 위의 값들과 매칭된다. 즉, 해시 테이블 엔트리들 위의 참조 번호들은 위의 1~3 값들과 매칭된다. 참조 번호들 위 (또는 아래에) 연장되는 라인들이 순서대로 배열된다. 예를 들어, 1100101의 값은 값 (1), (2)에 대응하고, 부분적으로 (3)에 대응한다.
해시 테이블은 인코딩 프로세스에서 새로운 문자열들에 대한 잠재적인 O(1) 매치들을 제공하는 데 사용될 수 있다. 해시 키와 매칭되면, 인코더는 목록을 탐색하고 오른쪽에서부터 가장 긴 일치를 갖는 워드를 발견하고, 그 다음, 해시 키 및 길이를 보고한다. 이는 속도를 위한 최적화이며 비교들의 횟수를 감소시키는 데 사용될 수 있다.
해시 테이블이 발생되면, 인코딩 컴퓨터(100)에 의한 인코딩 프로세스가 일어날 수 있다. 위에서 언급한 것과 같이, 인코딩은 단일 단계에서 압축 및 암호화 둘 다를 포함한다. 대체로, 압축 및 인코딩은, 위에서 개시된 바와 같이 발생된 해시 테이블(135)을 사용하여 가능하게 된다. 인코딩 컴퓨터(100)는 입력 데이터(140)(파일 또는 데이터 스트림)를 수신할 수 있고 해시 테이블(135) 내의 키와 매칭되는 가장 긴 데이터 시퀀스를 수신된 파일 내에서 검색할 수 있고, 대응하는 인덱스 값을 리트리빙(retrieve)할 수 있다.
인코딩 컴퓨터(100)는, 해시 테이블(135)로부터의 인덱스 값(들)을 사용하여 입력 데이터(140)를, 일반적으로 "인코딩된 데이터(145)"라고 지칭되는, 압축되고 암호화된 표현으로 인코딩한다. 확실히 하기 위해, 인코딩된 데이터(145)는 짧아진 데이터 길이를 갖고, 이에 의해 입력 데이터(140)를 압축한다. 인덱스 값(들)의 대입 또한 입력 데이터(140)를 암호화하는 기능을 한다. 따라서, 인코딩된 데이터(145)는 해시 테이블 및 해시 테이블 키들에 대한 참조들만을 포함한다.
일부 실시예들에서, 인코딩 컴퓨터(100)는 인코딩된 데이터(145)를 더 암호화하기 위해 2차 암호화 유형을 적용할 수 있다. 예를 들어, 인코딩 컴퓨터(100)는 AES(advanced encryption standard; 고급 암호 표준), HE(homomorphic encryption; 동형 암호), 또는 다른 암호화 유형을 이용할 수 있다. 이는, 암호화되고 인코딩된 데이터(160)를 만들어 낸다. 다시, 여기에 참조된 2차 암호화는 입력 데이터를 인코딩하는 데 사용되었던 압축/암호화의 결합 프로세스에서 일어나는 암호화와는 상이하다. 2차 암호화 유형은 2차 암호화 키를 이용할 수 있다.
인코딩 컴퓨터(100)는, 암호화되고 인코딩된 데이터(160)를 컴퓨터 네트워크(110) 상에서 디코딩 컴퓨터(105)로 전송할 수 있다. 암호화된 이진 데이터의 전송은, 데이터가 '일반' 숫자들의 세트를 포함하므로, 다른 암호화된 데이터 파일들로서 취급될 수 있다.
본 명세서에서의 방법들이 대칭 암호화 방법을 이용하기 때문에 키 분배의 신중한 제어가 사용될 수 있다. 사용자들은, 데이터 파일들과 암호화 키들이 서로 떨어져 저장되도록 유지할 수 있고, 개별 암호화된 또는 격리된 전송 방법들을 통해 각각 전송할 수 있다. 즉, 암호화 키들 및 해싱 함수들과 같은 데이터가 인코딩 컴퓨터와 디코딩 컴퓨터 사이에서 공유될 때, 이들 데이터는 인코딩된 데이터(145)(또는 암호화되고 인코딩된 데이터(160))와는 별도로 전송될 수 있다.
디코딩 컴퓨터(105)는 선택된 암호화 키(125), 암호화되고 인코딩된 데이터(160), 2차 암호화 키(2차 암호화가 사용된 경우) 및 해시 함수(127)를 수신한다. 2차 인코딩이 사용된 경우, 디코딩 컴퓨터(105)는, 암호화되고 인코딩된 데이터(160)를 복호화(decrypt)하여 인코딩된 데이터(145)를 복구할 수 있다. 그 다음, 디코딩 컴퓨터(105)는, 위에 개시된 해시 테이블(135)과 동일한 복수의 해시 키들 및 동일한 해시 함수(127)를 사용하여 발생된 해시 테이블(170)(해시 테이블(135)의 재발생된 사본)을 재발생시킴으로써 선택된 암호화 키(125)를 사용하여 인코딩된 데이터(145)를 디코딩할 수 있다.
일 예시에서, 소스 파일로부터의 유입 콘텐츠 스트림은 64비트 길이 값들로 잘린다(chop). 워드의 서명(signature)은 최하위 비트들의 마스크 길이이고(즉, 마스크 길이가 8인 경우 LSbyte), 그 다음, 그 서명은 해시 테이블에서 검색된다. 매치가 있는 경우, 테이블 내의 링크된 목록이 탐색되고, 최상의 초기 매치가 발견된다. 값이 발견되지 않은 경우, 인코더는 가장 긴 링크를 갖는 엔트리를 발견하기 위해 슬라이딩 윈도우로 전체 키의 선형 탐색을 수행한다.
출력은, 정렬된 쌍들: 키(Key) 파일 내의 비트 위치 및 비트들의 매칭 시퀀스 길이의 시퀀스이다. 키가 너무 짧은 경우, 일부 64비트 워드들이 분할될 것이고, 이는 알고리즘의 압축 피처를 반전시킨다. 인코딩 알고리즘이 LS -> MS로부터 매칭된다는 것이 이해될 수 있을 것이다. 왼쪽의 MSbit와 오른쪽의 LSbit로 값들을 나타내는, 여기서 사용된 방식이 표준이다. 그러나, 비트 인덱스는 각 연속 바이트의 LSbit부터 시작하여 카운트된다.
Figure pct00002
사용 사례 예시는 표 1을 참조한다. 암호화 키: [00000001 01100100 01101111 00111 011, 10001 011 10101011 11001101 11101111]를 사용하면, 8~24번째 키 비트들이 문자열의 처음 두 문자들을 커버하고, 마지막 문자는 27~35번째 키 비트들로 전달되기 때문에, 'dog' [01100100, 01101111, 01100111]은 <8,16>, <27,8> 로 인코딩될 수 있다.
인코딩된 데이터가 제시될 때, 원본 메시지를 어셈블링하는 프로세스는, <i,j>의 각 쌍에 대해 암호화 키 파일의 i번째 비트로 이동하여 j 비트들을 판독하는 것을 포함한다. 그 다음, 이 정보는 64비트 워드들의 연속적인 스트림으로 준비되고, 그 다음 그 단어들이 기록된다.
따라서, 메시지 <8,16>,<27,8>은, 디코더가, 암호화 키의 8번째 위치에서 시작하여 16 비트들을 복사하고, 키의 27번째 위치에서 시작하여 8 비트들을 복사하여, 01100100, 01101111, 01100111 ... 또는 'dog'에 이르는 것을 요구할 것이다.
도 2는 본 개시의 예시적인 방법을 예시한다. 방법은 암호화 키에 비트 마스크를 적용함으로써 복수의 해시 테이블 키들을 생성하는 단계(202)를 포함할 수 있다. 맥락과 관련하여, 비트 마스크의 마스크 길이는 위에 개시된 해시 테이블 키들의 비트 폭이며, 이에 대응하여, 입력 데이터의 검색 값의 비트 폭이다. 암호화 키는, 난수 발생기를 사용하여 발생된 복수의 가능한 또는 후보인 암호화 키들로부터 획득된, 특정 선택된 암호화 키를 포함한다. 일부 경우들에서, 방법은 또한 랜덤 프로세스를 사용하여 복수의 암호화 키들을 발생시키는 단계, 및 입력 데이터를 압축 및 암호화 둘 다 하기 위해 암호화 키의 능력에 기초하여 복수의 암호화 키들로부터 암호화 키를 선택하는 단계를 포함할 수 있다.
방법은 또한, 암호화 키에 해싱 함수를 적용하는 단계(204)뿐만 아니라, 해싱 함수를 사용하여 해시 테이블을 생성하는 단계(206)를 포함할 수 있다. 해시 테이블은 복수의 해시 테이블 키들 및 인덱스 값들을 포함하는 것으로 이해될 것이다. 확실히 하기 위해, 인덱스 값들 각각은 복수의 해시 테이블 키들 중 하나에 연결된 해시 테이블 내의 데이터의 위치를 식별한다.
일단 해시 테이블이 생성되면, 방법은 입력 데이터를 수신하는 단계(208) 및 인코딩된 데이터를 발생시키기 위해 입력 데이터를 인코딩하는 단계(210)를 포함할 수 있다. 위에서 언급된 바와 같이, 인코딩은 암호화 키 및 해시 테이블을 사용한 입력 데이터의 압축 및 암호화 둘 다를 포함한다.
도 3은 선택되는 암호화 키를 선정하는 방법이다. 방법은, 복수의 암호화 키들 각각에 대해서, 인코딩된 데이터를 생성하기 위해 샘플 데이터가 복수의 암호화 키들 중 하나와 함께일 수 있는 단계(302)를 포함할 수 있다. 방법은, 디코딩된 데이터를 생성하기 위해 인코딩된 데이터를 디코딩하는 단계(304)를 더 포함한다. 다음으로, 방법은 디코딩된 데이터를 인코딩된 데이터와 비교하는 단계(306) 및 비교에 기초하여 암호화 키를 선택하는 단계(308)를 포함할 수 있다.
도 4는, 암호화되고 인코딩된 데이터인 암호문을 생성하기 위해 인코딩된 데이터를 암호화하는 단계(402)를 포함하는, 본 개시의 다른 예시적인 방법이다. 위에서 언급된 바와 같이, 이 암호화는 AES, HE 또는 다른 원하는 암호화 방법을 사용하는 것을 포함할 수 있다. 방법은 또한, 암호화되고 인코딩된 데이터를 암호화 키와 함께 수신기에 전송하는 단계(404)를 포함할 수 있다.
방법은, 인코딩된 데이터를 획득하기 위해, 암호화 키를 사용하여, 암호화되고 인코딩된 데이터를 복호화하는 단계(406)뿐만 아니라, 해싱 함수 및 복수의 해시 테이블 키들을 사용하여 해시 테이블을 재발생시키는 단계(408)를 포함할 수 있다. 일부 경우들에서, 방법은 해시 테이블 및 암호화 키를 사용하여 인코딩된 데이터를 디코딩하는 단계(410)를 포함한다.
도 5는 해시 테이블 생성과 관련된 본 개시의 또 다른 예시적인 방법이다. 방법은, 비정렬 매핑(un-ordered mapping)을 갖는 구별되는 값들을 만들어 내기 위해 암호화 키 내의 비트들 각각에 대한 값을 생성하는 단계(502)를 포함할 수 있다. 방법은 또한, 비트마스크 길이를 적용함으로써 비정렬 매핑을 감소시키는 단계(504)를 포함할 수 있다. 확실히 하기 위해, 비정렬 매핑의 i번째 값은 암호화 키의 i번째 비트와 상관된다. 해시 테이블은 일부 실시예들에서 링크된 목록을 포함한다.
방법은 또한, 복수의 해시 테이블 키들 중 하나와 매칭되는 가장 긴 데이터 시퀀스를 입력 데이터에서 검색하는 것과 관련된 단계들을 포함할 수 있다. 따라서, 방법은, 링크된 목록을 탐색하고 가장 긴 데이터 시퀀스의 위치를 찾아내는 단계(506)뿐만 아니라, 복수의 해시 테이블 키들 중 매칭되는 하나의 해시 테이블 키 및 가장 긴 데이터 시퀀스의 길이를 보고하는 단계(508)를 포함할 수 있다.
도 6은 입력 데이터의 인코딩과 관련된, 흐름도로 예시된 다른 예시적인 방법이다. 방법은 입력 데이터를 세그먼트들로 분할하는 단계(602)를 포함할 수 있다. 방법은, 세그먼트들 각각의 서명을 획득하는 단계(604)를 포함할 수 있다. 이는 임의의 원하는 해싱 방법을 사용하여 각각의 세그먼트를 해싱하는 것을 포함할 수 있다.
방법은 해시 테이블에서 서명을 검색하는 단계(606)를 포함할 수 있다. 서명에 대한 매치가 발견될 때, 방법은 최상의 매칭 엔트리가 발견될 때까지 링크된 목록을 탐색하는 단계(608)를 포함할 수 있다. 대안적으로, 매치가 발견되지 않을 때, 방법은 링크된 목록에서 가장 긴 엔트리를 발견하기 위해 윈도잉 함수를 사용하여 암호화 키를 탐색하는 단계(610)를 포함할 수 있다.
다시, 인코딩 프로세스는, 암호화된 키 내의 비트 위치 및 매칭 엔트리의 길이를 포함하는 정렬된 쌍들의 시퀀스를 만들어 낸다. 정렬된 쌍들의 시퀀스는 입력 데이터의 압축되고 암호화된 버전이다. 일부 경우들에서, 이 프로세스에 사용되는 비트마스크 길이는 8비트이며, 이는 입력 데이터의 8:1 압축을 허용한다.
도 7은 컴퓨터 시스템(1) 형태의 예시적인 머신의 개략도로서, 그 내부에서는, 머신이 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위한 명령어들의 세트가 실행될 수 있다. 다양한 예시적인 실시예들에서, 머신은 독립형 디바이스로서 동작하거나 다른 머신들에 연결(예를 들어, 네트워킹)될 수 있다. 네트워킹된 배치에서, 머신은 서버-클라이언트 네트워크 환경에서 서버 또는 클라이언트 머신의 역할로 동작할 수 있고, 또는 피어 투 피어(또는 분산된) 네트워크 환경에서 피어 머신으로 동작할 수 있다. 머신은, 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 개인용 디지털 보조기(PDA), 셀룰러 전화기, 휴대용 음악 재생기(예를 들어, MP3(Moving Picture Experts Group Audio Layer 3) 플레이어와 같은 휴대용 하드 드라이브 오디오 디바이스), 웹 어플라이언스, 네트워크 라우터, 스위치 또는 브리지, 또는 그 머신에서 수행할 동작들을 특정하는 명령어들의 세트를 (순차적으로 또는 이와 달리) 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신만이 예시되어 있지만, "머신"이라는 용어는 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어들의 세트(또는 다수의 세트들)을 개별적으로 또는 공동으로 실행하는 머신들의 임의의 집합을 포함하는 것으로도 여겨질 수 있을 것이다.
컴퓨터 시스템(1)은, 프로세서 또는 다수의 프로세서(들)(5)(예를 들어, 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 또는 둘 다)과, 버스(20)를 통해 서로 통신하는 메인 메모리(10) 및 정적 메모리(15)를 포함한다. 컴퓨터 시스템(1)은 비디오 디스플레이(35)(예를 들어, 액정 디스플레이(LCD))를 더 포함할 수 있다. 컴퓨터 시스템(1)은 또한 영숫자 입력 디바이스(들)(30)(예를 들어, 키보드), 커서 제어 디바이스(예를 들어, 마우스), 음성 인식 또는 생체 인증 유닛(미도시), 드라이브 유닛(37)(디스크 드라이브 유닛으로도 지칭될 수 있음), 신호 발생 디바이스(40)(예를 들어, 스피커), 및 네트워크 인터페이스 디바이스(45)를 포함할 수 있다. 컴퓨터 시스템(1)은 데이터를 암호화하기 위해 데이터 암호화 모듈(미도시)을 더 포함할 수 있다.
드라이브 유닛(37)은 본 명세서에 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구현하거나 이용하는 하나 이상의 명령어들의 세트 및 데이터 구조들(예를 들어, 명령어들(55))이 저장된 컴퓨터 또는 머신 판독 가능 매체(50)를 포함한다. 명령어들(55)은 또한, 컴퓨터 시스템(1)에 의한 그 실행 동안 메인 메모리(10) 및/또는 프로세서(들)(5) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 메인 메모리(10) 및 프로세서(들)(5)은 또한 머신 판독가능 매체를 구성할 수 있다.
명령어들(55)은 또한, 다수의 잘 알려진 전송 프로토콜들(예를 들어, 하이퍼텍스트 전송 규약(HTTP)) 중 임의의 하나를 이용하는 네트워크 인터페이스 디바이스(45)를 통해 네트워크를 이용하여 전송되거나 수신될 수 있다. 머신 판독 가능 매체(50)가 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "컴퓨터 판독 가능 매체"라는 용어는, 명령어들의 하나 이상의 세트를 저장하는 단일 매체 또는 다수의 매체들(예를 들어, 중앙 집중식 또는 분산형 데이터베이스 및/또는 연관된 캐시들 및 서버들)을 포함하는 것으로 여겨져야 한다. "컴퓨터 판독 가능 매체"라는 용어는 또한, 머신에 의한 실행을 위한 명령어들을 세트를 저장, 인코딩 또는 전달할 수 있되 머신으로 하여금 본 출원의 방법론들 중 임의의 하나 이상을 수행하게 하는, 또는 그러한 명령어들의 세트와 연관되거나 그러한 명령어들의 세트에 의해 이용되는 데이터 구조들을 저장, 인코딩 또는 전달할 수 있는 임의의 매체를 포함하는 것으로 여겨져야 한다. 이에 따라, "컴퓨터 판독 가능 매체"라는 용어는, 이에 제한되는 것은 아니나, 솔리드 스테이트 메모리들, 광학 및 자기 매체들, 및 반송파 신호들을 포함하는 것으로 여겨져야 한다. 이러한 매체들은 또한, 제한 없이, 하드 디스크들, 플로피 디스크들, 플래시 메모리 카드들, 디지털 비디오 디스크들, RAM(Random Access Memory), ROM(Read Only Memory) 등을 포함할 수 있다. 본 명세서에 설명된 예시적인 실시예들은 컴퓨터에 설치된 소프트웨어를 포함하는 운영 환경에서, 하드웨어에서, 또는 소프트웨어와 하드웨어의 결합에서 구현될 수 있다.
컴퓨터 시스템(1)에 제공되는 구성요소들은 컴퓨터 시스템들에서 일반적으로 발견되는 구성요소들이며, 이는 본 개시의 실시예들과 함께 사용하기에 적합할 수 있고 당업계에 잘 알려진 그러한 컴퓨터 구성요소들의 광범위한 범주를 나타내도록 의도된다. 따라서, 컴퓨터 시스템(1)은 개인용 컴퓨터(PC), 핸드헬드 컴퓨터 시스템, 전화기, 모바일 컴퓨터 시스템, 워크스테이션, 태블릿, 패블릿, 휴대폰, 서버, 미니컴퓨터, 메인프레임 컴퓨터, 웨어러블, 또는 임의의 다른 컴퓨터 시스템일 수 있다. 컴퓨터는 또한, 상이한 버스 구성들, 네트워크 플랫폼들, 다중 프로세서 플랫폼들 등을 포함할 수 있다. UNIX, LINUX, WINDOWS, MAC OS, PALM OS, QNX ANDROID, IOS, CHROME, TIZEN 및 다른 적절한 운영 체제들을 포함하는 다양한 운영 체제들이 사용될 수 있다.
앞서 설명된 기능들 중 일부는 저장 매체(예를 들어, 컴퓨터 판독 가능 매체)에 저장되는 명령어들로 구성될 수 있다. 명령어들은 프로세서에 의해 리트리빙되고 실행될 수 있다. 저장 매체의 일부 예시들은, 메모리 디바이스들, 테이프들, 디스크들 등이다. 명령어들은, 프로세서에 의해 실행될 때, 프로세서가 본 기술에 따라 동작하는 것을 지시하도록 동작 가능하다. 본 업계의 통상의 기술자는, 명령어들, 프로세서(들) 및 저장 매체에 익숙하다.
일부 실시예들에서, 컴퓨터 시스템(1)은, 컴퓨팅 클라우드 내에서 동작하는 가상 머신과 같은, 클라우드 기반 컴퓨팅 환경으로 구현될 수 있다. 다른 실시예들에서, 컴퓨터 시스템(1)은, 컴퓨터 시스템(1)의 기능들이 분산 방식으로 실행되는 클라우드 기반 컴퓨팅 환경을 자체적으로 포함할 수 있다. 따라서, 컴퓨팅 클라우드로서 구성될 때, 컴퓨터 시스템(1)은 이하에서 더 상세히 설명될 바와 같이 다양한 형태들의 복수의 컴퓨팅 디바이스들을 포함할 수 있다.
일반적으로, 클라우드 기반 컴퓨팅 환경은, 일반적으로 (웹 서버들 내에서와 같이) 프로세서들의 대규모 그룹의 계산 능력을 결합하고/하거나 저장 디바이스들 또는 컴퓨터 메모리들의 대규모 그룹의 저장 용량을 결합하는 리소스이다. 클라우드 기반 리소스들을 제공하는 시스템들은 그 소유자들에 의해서만 독점적으로 이용될 수 있고, 또는 이러한 시스템들은 대규모 계산 또는 저장 리소스들의 이점을 획득하기 위해 컴퓨팅 인프라스트럭처 내에 애플리케이션들을 배치하는 외부 사용자들에게 접근 가능할 수 있다.
클라우드는, 예를 들어, 컴퓨터 디바이스(1)와 같은, 복수의 컴퓨팅 디바이스들을 포함하는 웹 서버들의 네트워크에 의해 형성되며, 각 서버 (또는 적어도 그 복수 개)는 프로세서 및/또는 저장 리소스들을 제공한다. 이러한 서버들은 다수의 사용자들(예를 들어, 클라우드 리소스 고객들 또는 다른 사용자들)이 제공하는 워크로드들을 관리한다. 일반적으로, 각각의 사용자는, 실시간으로, 때로는 극적으로 달라지는 워크로드 요구들을 클라우드에 배치한다. 이러한 변동들의 특징과 범위는 일반적으로 사용자와 연관된 비즈니스 유형에 따라 달라진다.
본 명세서에서 설명된 프로세싱을 수행하기에 적합한 임의의 하드웨어 플랫폼이 이 기술에 사용되기에 적합하다는 것은 주목할 만하다. 본 명세서에서 사용되는 "컴퓨터 판독 가능 저장 매체" 및 "컴퓨터 판독 가능 저장 매체들"이라는 용어는, 실행을 위해 CPU에 명령어들을 제공하는 데 참여하는 임의의 매체 또는 매체들을 지칭한다. 이러한 매체들은, 이에 제한되는 것은 아니지만, 비휘발성 매체들, 휘발성 매체들 및 전송 매체들을 포함하는, 다양한 형태들을 취할 수 있다. 비휘발성 매체들은, 예를 들어, 고정 디스크와 같은 광학 또는 자기 디스크들을 포함한다. 휘발성 매체들은, 시스템 RAM과 같은 동적 메모리를 포함한다. 전송 매체들은 동축 케이블들, 구리 와이어 및 광 섬유를 포함하며, 그 중에서도, 버스의 일 실시예를 포함하는 와이어들을 포함한다. 전송 매체들은 무선 주파수(RF) 및 적외선(IR) 데이터 통신들 중에 발생되는 것과 같은, 음향 또는 광 파장들의 형태를 취할 수도 있다. 컴퓨터 판독 가능 매체들의 일반적인 형태들은, 예를 들어, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프, 임의의 다른 자기 매체, CD-ROM 디스크, 디지털 비디오 디스크(DVD), 임의의 다른 광학 매체, 마크들 또는 구멍들의 패턴들이 있는 임의의 다른 물리적 매체, RAM, PROM, EPROM, EEPROM, FLASHEPROM, 임의의 다른 메모리 칩 또는 데이터 교환 어댑터, 반송파 또는 컴퓨터가 판독할 수 있는 임의의 다른 매체를 포함한다.
다양한 형태들의 컴퓨터 판독 가능 매체들이, 실행을 위해, 하나 이상의 명령어의 하나 이상의 시퀀스를 CPU로 전달하는 데 관여할 수 있다. 버스는 데이터를 시스템 RAM으로 전달하고, CPU는 시스템 RAM으로부터 명령어들을 리트리빙하고 실행한다. 시스템 RAM에 의해 수신된 명령어들은 CPU에 의한 실행 전 또는 후에 고정 디스크에 선택적으로 저장될 수 있다.
본 기술의 양태들에 대한 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 Java, Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어, 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들과 같은 종래의 절차적 프로그래밍 언어들을 포함하는, 하나 이상의 프로그래밍 언어의 임의의 결합으로 작성될 수 있다. 프로그램 코드는, 전적으로 사용자의 컴퓨터에서, 부분적으로 사용자의 컴퓨터에서, 자립형 소프트웨어 패키지로서, 부분적으로 사용자 컴퓨터에서 그리고 부분적으로 원격 컴퓨터에서 또는 전적으로 원격 컴퓨터 또는 서버에서, 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함하는, 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, (예를 들어, 인터넷 서비스 공급자를 사용한 인터넷을 통해) 외부 컴퓨터로의 연결이 이루어질 수 있다.
전술한 상세한 설명은 상세한 설명의 일부를 형성하는 첨부 도면들에 대한 참조들을 포함한다. 도면들은 예시적인 실시예들에 따른 예시들을 보여준다. 본 명세서에서 "예시들"이라고도 지칭되는 이러한 예시적인 실시예들은 통상의 기술자가 본 주제(subject matter)를 실시할 수 있도록 충분히 상세하게 설명된다. 실시예들은 결합될 수 있고, 다른 실시예들이 이용될 수 있으며, 또는 청구된 범위를 벗어나지 않고 구조적, 논리적 및 전기적 변경들이 이루어질 수 있다. 따라서, 아래의 상세한 설명은 제한적인 의미로 받아들여져서는 안 되며, 범위는 첨부된 청구항들 및 그들의 균등물들에 의해 정의된다.
이 문서에서는, 특허 문서들에서 일반적인 바와 같이, 하나 이상을 포함하기 위해 "a" 또는 "an"이라는 용어들이 사용된다. 이 문서에서, "또는"이라는 용어는, 달리 표시되지 않는 한, "A 또는 B"가, "A이지만 B가 아닌", "B이지만 A가 아닌" 및 "A 및 B"를 포함하도록, 비배타적인 "또는"을 지칭하는 데 사용된다. 또한, 본 문서에서 지칭된 모든 개시물들, 특허들 및 특허 문서들은, 마치 개별적으로 참조로서 통합된 것처럼, 참조로서 그 전체가 본 명세서에 통합된다. 이 문서와 참조로 통합된 그 문서들 간의 불일치하는 사용들이 있는 경우, 통합된 참조(들)에서의 사용은 이 문서의 사용을 보완하는 것으로 여겨져야 하고; 양립할 수 없는 불일치들에 대해서는, 이 문서에서의 사용이 지배한다.
아래의 청구항들 내의 모든 수단 또는 단계 및 기능적 요소들의 대응하는 구조들, 재료들, 동작들, 및 균등물들은, 구체적으로 청구된 것과 같은 다른 청구된 요소들과 결합하여 기능을 수행하기 위한 임의의 구조, 재료 또는 동작을 포함하도록 의도된다. 본 기술의 설명은 예시 및 설명의 목적들을 위해서 제시되었지만, 개시된 형태의 발명으로 제한 또는 총망라하는 것을 의도한 것은 아니다. 발명의 범위 및 사상을 벗어나지 않고 많은 수정들 및 변형들이 통상의 기술자에게 명백할 것이다. 예시적인 실시예들은, 본 기술의 원리들 및 그의 실제 적용을 가장 잘 설명하기 위해, 그리고 고려되는 특정 용도에 적합한 다양한 수정들을 갖는 다양한 실시예들에 대해 다른 통상의 기술자가가 본 발명을 이해할 수 있도록 하기 위해, 선정되고 설명되었다.
다양한 실시예들이 위에서 설명되었지만, 이들은 단지 예시로서 제시된 것이며 제한이 아님이 이해되어야 한다. 설명들은 본 기술의 범위를 본 명세서에 제시된 특정한 형태로 제한하는 것으로 의도되지 않는다. 따라서, 바람직한 실시예의 폭과 범위는 전술한 예시적인 실시예들 중 임의의 것에 의해 제한되어서는 안 된다. 위의 설명은 예시적인 것이며 제한적이지 않음이 이해되어야 한다. 반대로, 본 설명들은, 첨부된 청구항들에 의해 정의된 것과 같은 기술의 범위와 사상 내에서 포함될 수 있는 것과 그렇지 않으면 통상의 기술자에게 이해될 수 있는 것과 같은, 그러한 대체물들, 수정들, 및 균등물들을 커버하도록 의도된다. 따라서, 기술의 범위는 위의 설명을 참조하여 결정되어야 하는 것이 아니고, 대신에 균등물들의 그 전체 범위와 함께 첨부된 청구항들을 참조하여 결정되어야 한다.

Claims (20)

  1. 방법에 있어서,
    암호화 키에 비트 마스크를 적용함으로써 복수의 해시 테이블 키들을 생성하는 단계;
    상기 암호화 키에 해싱 함수를 적용하는 단계;
    상기 해싱 함수를 사용하여 해시 테이블을 생성하는 단계 - 상기 해시 테이블은 상기 복수의 해시 테이블 키들 및 인덱스 값들을 포함하고, 상기 인덱스 값들 각각은 상기 복수의 해시 테이블 키들 중 하나에 연결된 상기 해시 테이블 내의 데이터의 위치를 식별함 - ;
    입력 데이터를 수신하는 단계; 및
    인코딩된 데이터를 발생시키기 위해 상기 입력 데이터를 인코딩하는 단계 - 상기 인코딩은, 상기 암호화 키 및 상기 해시 테이블을 사용하는 상기 입력 데이터의 압축 및 암호화 둘 다를 포함함 -
    를 포함하는, 방법.
  2. 제1항에 있어서,
    랜덤 프로세스를 사용하여 복수의 암호화 키들을 발생시키는 단계; 및
    입력 데이터를 압축 및 암호화 둘 다하기 위해 상기 암호화 키의 능력에 기초하여 상기 복수의 암호화 키들로부터 상기 암호화 키를 선택하는 단계
    를 더 포함하는, 방법.
  3. 제2항에 있어서, 상기 암호화 키는,
    상기 복수의 암호화 키들 각각에 대해, 인코딩된 데이터를 생성하기 위해 상기 복수의 암호화 키들 중 하나로 샘플 데이터를 인코딩하는 단계;
    디코딩된 데이터를 생성하기 위해 상기 인코딩된 데이터를 디코딩하는 단계;
    상기 디코딩된 데이터를 상기 인코딩된 데이터와 비교하는 단계; 및
    상기 비교에 기초하여 상기 암호화 키를 선택하는 단계
    에 의해 선택되는 것인, 방법.
  4. 제1항에 있어서, 암호화되고 인코딩된 데이터인 암호문을 생성하기 위해, 상기 인코딩된 데이터를 암호화하는 단계를 더 포함하는, 방법.
  5. 제1항에 있어서, 상기 암호화되고 인코딩된 데이터를 상기 암호화 키와 함께 수신기로 전송하는 단계를 더 포함하는, 방법.
  6. 제5항에 있어서,
    상기 인코딩된 데이터를 획득하기 위해, 상기 암호화 키를 사용하여 상기 암호화되고 인코딩된 데이터를 복호화(decrypt)하는 단계;
    상기 해싱 함수 및 상기 복수의 해시 테이블 키들을 사용하여 상기 해시 테이블을 재발생시키는 단계; 및
    상기 해시 테이블 및 상기 암호화 키를 사용하여 상기 인코딩된 데이터를 디코딩하는 단계
    를 더 포함하는, 방법.
  7. 제1항에 있어서, 상기 해시 테이블은,
    비정렬 매핑(un-ordered mapping)을 갖는 구별되는 값들을 만들어 내기 위해, 상기 암호화 키 내의 비트들 각각에 대한 값을 생성하는 단계; 및
    비트마스크 길이를 적용함으로써 상기 비정렬 매핑을 감소시키는 단계 - 상기 비정렬 매핑의 i번째 값은 상기 암호화 키의 i번째 비트와 상관되며, 상기 해시 테이블은 링크된 목록을 포함함 -
    에 의해 생성되는 것인, 방법.
  8. 제7항에 있어서, 인코딩된 데이터를 발생시키기 위해 상기 입력 데이터를 인코딩하는 단계는,
    초기에, 상기 복수의 해시 테이블 키들 중 하나와 매칭되는 가장 긴 데이터 시퀀스를 상기 입력 데이터에서 검색하는 단계;
    상기 복수의 해시 테이블 키들로부터, 상기 인덱스 값들 중, 상기 가장 긴 데이터 시퀀스와 매칭되는 대응하는 하나의 인덱스 값을 리트리빙(retrieve)하는 단계; 및
    상기 입력 데이터의 나머지를 인코딩하기 위해 상기 인덱스 값들 중 추가적인 인덱스 값들을 리트리빙하는 단계
    를 포함하는 것인, 방법.
  9. 제8항에 있어서, 상기 복수의 해시 테이블 키들 중 하나와 매칭되는 가장 긴 데이터 시퀀스를 상기 입력 데이터에서 검색하는 단계는,
    상기 링크된 목록을 탐색하고 상기 가장 긴 데이터 시퀀스의 위치를 찾아내는 단계; 및
    상기 복수의 해시 테이블 키들 중 매칭되는 하나, 및 상기 가장 긴 데이터 시퀀스의 길이를 보고하는 단계
    를 더 포함하는 것인, 방법.
  10. 제1항에 있어서, 인코딩은,
    입력 데이터를 세그먼트들로 분할하는 단계;
    상기 세그먼트들 각각의 서명(signature)을 획득하는 단계;
    상기 해시 테이블 내에서 상기 서명을 검색하는 단계;
    상기 서명에 대한 매치(match)가 발견되는 경우, 최상의 매칭 엔트리가 발견될 때까지 링크된 목록을 탐색하는 단계; 및
    매치가 발견되지 않은 경우, 상기 링크된 목록 내의 가장 긴 엔트리를 발견하기 위해 윈도잉 함수를 사용하여 상기 암호화 키를 탐색하는 단계
    를 포함하는 것인, 방법.
  11. 제10항에 있어서, 인코딩은, 상기 암호화된 키 내의 비트 위치 및 상기 매칭 엔트리의 길이를 포함하는 정렬된 쌍들의 시퀀스를 만들어 내는 것인, 방법.
  12. 제11항에 있어서, 상기 정렬된 쌍들의 시퀀스는 상기 입력 데이터의 압축되고 암호화된 버전인 것인, 방법.
  13. 제11항에 있어서, 비트마스크 길이는 8비트이고, 이는 상기 입력 데이터의 8:1 압축을 허용하는 것인, 방법.
  14. 시스템에 있어서,
    프로세서; 및
    명령어들을 저장하기 위한 메모리
    를 포함하고, 상기 프로세서는,
    암호화 키에 비트 마스크를 적용함으로써 복수의 해시 테이블 키들을 생성하도록,
    상기 암호화 키에 해싱 함수를 적용하도록,
    상기 해싱 함수를 사용하여 해시 테이블을 생성하도록 - 상기 해시 테이블은 상기 복수의 해시 테이블 키들 및 인덱스 값들을 포함하고, 상기 인덱스 값들 각각은 상기 복수의 해시 테이블 키들 중 하나에 연결된 상기 해시 테이블 내의 데이터의 위치를 식별함 -
    입력 데이터를 수신하도록; 그리고
    인코딩된 데이터를 발생시키기 위해 상기 입력 데이터를 인코딩하도록 - 상기 인코딩은, 상기 암호화 키 및 상기 해시 테이블을 사용한 상기 입력 데이터의 압축 및 암호화 둘 다를 포함함 -,
    상기 명령어들을 실행시키는 것인, 시스템.
  15. 제14항에 있어서,
    상기 프로세서는,
    랜덤 프로세스를 사용하여 복수의 암호화 키들을 발생시키도록; 그리고
    상기 입력 데이터를 압축 및 암호화 둘 다하기 위해 상기 암호화 키의 능력에 기초하여 상기 복수의 암호화 키들로부터 상기 암호화 키를 선택하도록 구성되는 것인, 시스템.
  16. 제14항에 있어서,
    상기 프로세서는,
    상기 복수의 암호화 키들 각각에 대해, 상기 복수의 암호화 키들 중 하나로 샘플 데이터를 인코딩하여 인코딩된 데이터를 생성하도록;
    상기 인코딩된 데이터를 디코딩하여 디코딩된 데이터를 생성하도록;
    상기 디코딩된 데이터를 상기 인코딩된 데이터와 비교하도록; 그리고
    상기 비교에 기초하여 상기 암호화 키를 선택하도록,
    상기 암호화 키를 선택하는 것인, 시스템.
  17. 제14항에 있어서,
    상기 프로세서는,
    상기 인코딩된 데이터를 암호화하여 암호문을 생성하도록;
    상기 암호화 키와 함께 상기 암호문을 수신기에 전송하도록;
    상기 암호화 키를 사용하여 상기 암호문을 복호화하여 상기 인코딩된 데이터를 복구하도록;
    상기 해싱 함수 및 상기 복수의 해시 테이블 키들을 사용하여 상기 해시 테이블을 재발생시키도록; 그리고
    상기 해시 테이블을 사용하여 상기 인코딩된 데이터를 압축해제(decompress)하도록
    구성되는 것인, 시스템.
  18. 제14항에 있어서,
    상기 프로세서는,
    비정렬 매핑을 갖는 구별되는 값들을 만들어 내기 위해 상기 암호화 키 내의 비트들 각각에 대한 값을 생성하는 것; 및 비트 마스크 길이를 적용함으로써 상기 비정렬 매핑을 감소시키는 것 - 상기 비정렬 매핑의 i번째 값은 상기 암호화 키의 i번째 비트와 상관되고, 상기 해시 테이블은 링크된 목록을 포함함 - 에 의해, 상기 해시 테이블을 생성하도록;
    초기에, 상기 복수의 해시 테이블 키들 중 하나와 매칭되는 가장 긴 데이터 시퀀스를 상기 입력 데이터에서 검색하도록;
    상기 복수의 해시 테이블 키들로부터, 상기 인덱스 값들 중 상기 가장 긴 데이터 시퀀스와 매칭되는 대응하는 하나의 인덱스 값을 리트리빙하도록; 그리고
    상기 입력 데이터의 나머지를 인코딩하기 위해 상기 인덱스 값들 중 추가의 인덱스 값들을 리트리빙하도록 구성되는 것인, 시스템.
  19. 제18항에 있어서,
    상기 복수의 해시 테이블 키들 중 하나와 매칭되는 상기 가장 긴 데이터 시퀀스를 상기 입력 데이터에서 검색하는 것은,
    상기 링크된 목록을 탐색하고 상기 가장 긴 데이터 시퀀스의 위치를 찾아내는 것; 및
    상기 복수의 해시 테이블 키들 중 매칭되는 하나, 및 상기 가장 긴 데이터 시퀀스의 길이를 보고하는 것
    을 포함하는 것인, 시스템.
  20. 제19항에 있어서,
    상기 프로세서는,
    입력 데이터를 세그먼트들로 분할하도록;
    상기 세그먼트들 각각의 서명을 획득하도록;
    상기 해시 테이블 내에서 상기 서명을 검색하도록;
    상기 서명에 대한 매치가 발견되는 경우, 최상의 매칭 엔트리가 발견될 때까지 상기 링크된 목록을 탐색하도록; 그리고,
    매치가 발견되지 않은 경우, 상기 링크된 목록 내의 가장 긴 엔트리를 발견하기 위해 윈도잉 함수를 사용하여 상기 암호화 키를 탐색하도록
    구성되는 것인, 시스템.
KR1020237000600A 2020-06-11 2021-06-01 데이터의 압축 및 암호화를 위한 시스템들 및 방법들 KR20230024342A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/899,457 2020-06-11
US16/899,457 US11533173B2 (en) 2020-06-11 2020-06-11 Systems and methods for compression and encryption of data
PCT/US2021/035272 WO2021252227A1 (en) 2020-06-11 2021-06-01 Systems and methods for compression and encryption of data

Publications (1)

Publication Number Publication Date
KR20230024342A true KR20230024342A (ko) 2023-02-20

Family

ID=78826153

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237000600A KR20230024342A (ko) 2020-06-11 2021-06-01 데이터의 압축 및 암호화를 위한 시스템들 및 방법들

Country Status (7)

Country Link
US (1) US11533173B2 (ko)
EP (1) EP4165780A4 (ko)
JP (1) JP2023529948A (ko)
KR (1) KR20230024342A (ko)
AU (1) AU2021287730A1 (ko)
CA (1) CA3181813A1 (ko)
WO (1) WO2021252227A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11849033B2 (en) * 2020-09-24 2023-12-19 Intertrust Technologies Corporation Key generation systems and methods
CN114301583B (zh) * 2021-12-22 2023-10-24 阿里巴巴(中国)有限公司 密文压缩方法、装置、设备和存储介质
CN117354059B (zh) * 2023-12-04 2024-03-29 广州汇通国信科技有限公司 一种基于云边端协同的数据共享方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778102A (en) * 1995-05-17 1998-07-07 The Regents Of The University Of California, Office Of Technology Transfer Compression embedding
US20010042204A1 (en) * 2000-05-11 2001-11-15 David Blaker Hash-ordered databases and methods, systems and computer program products for use of a hash-ordered database
US7254232B2 (en) * 2001-02-14 2007-08-07 Copytele, Inc. Method and system for selecting encryption keys from a plurality of encryption keys
JP2005020346A (ja) * 2003-06-26 2005-01-20 Konica Minolta Business Technologies Inc データ秘密化装置、データ復元装置、画像データ保存装置及び画像形成装置
US9143323B2 (en) * 2005-04-04 2015-09-22 Blackberry Limited Securing a link between two devices
US9497172B2 (en) * 2005-05-23 2016-11-15 Litera Corp. Method of encrypting and transferring data between a sender and a receiver using a network
US8769279B2 (en) 2006-10-17 2014-07-01 Verifone, Inc. System and method for variable length encryption
US8082359B2 (en) 2009-12-23 2011-12-20 Citrix Systems, Inc. Systems and methods for determining a good RSS key
US8645713B2 (en) * 2011-03-22 2014-02-04 Fujitsu Limited Encrypting method, recording medium of encrypting program, decrypting method, and recording medium of decrypting program
US10785545B2 (en) * 2012-04-20 2020-09-22 The Board Of Regents Of The University Of Texas System Systems and methods for simultaneous compression and encryption
KR101956031B1 (ko) * 2012-10-15 2019-03-11 삼성전자 주식회사 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템
JP6028567B2 (ja) * 2012-12-28 2016-11-16 富士通株式会社 データ格納プログラム、データ検索プログラム、データ格納装置、データ検索装置、データ格納方法及びデータ検索方法
US10339112B1 (en) * 2013-04-25 2019-07-02 Veritas Technologies Llc Restoring data in deduplicated storage
US10469383B2 (en) * 2016-11-10 2019-11-05 International Business Machines Corporation Storing data in association with a key within a hash table and retrieving the data from the hash table using the key
KR101987025B1 (ko) * 2017-05-31 2019-06-10 삼성에스디에스 주식회사 암호화 처리 방법 및 그 장치
US20200151356A1 (en) * 2017-08-11 2020-05-14 Duality Technologies, Inc. System and method for fast and efficient searching of encrypted ciphertexts
US10491240B1 (en) * 2019-01-17 2019-11-26 Cyborg Inc. Systems and methods for variable length codeword based, hybrid data encoding and decoding using dynamic memory allocation
US10904001B2 (en) * 2019-05-24 2021-01-26 Tokenex, Inc. Data format-preserving encryption, tokenization, and access control for vaultless systems and methods

Also Published As

Publication number Publication date
US11533173B2 (en) 2022-12-20
CA3181813A1 (en) 2021-12-16
EP4165780A1 (en) 2023-04-19
US20210391990A1 (en) 2021-12-16
AU2021287730A1 (en) 2023-02-02
JP2023529948A (ja) 2023-07-12
WO2021252227A1 (en) 2021-12-16
EP4165780A4 (en) 2024-07-17

Similar Documents

Publication Publication Date Title
KR20230024342A (ko) 데이터의 압축 및 암호화를 위한 시스템들 및 방법들
US7821427B2 (en) Data processing system and method
US20180048578A1 (en) Classification device and method of performing a real- time classification of a data stream, computer program product, and system
US10037433B2 (en) Secure text retrieval
JP2012164031A (ja) データ処理装置及びデータ保管装置及びデータ処理方法及びデータ保管方法及びプログラム
US11468009B2 (en) Secure compression
CN111698576B (zh) 信息加密方法、解密方法、服务器、客户端及介质
US11586588B2 (en) System and methods for bandwidth-efficient cryptographic data transfer
JP5719386B2 (ja) N個のチャネルを用いてデータを安全に分散させ格納する方法および装置
US10305865B2 (en) Permutation-based content encryption with manifests in a content centric network
CA3061776A1 (en) Key information processing method and apparatus, electronic device and computer readable medium
US11477172B2 (en) Securing data compression
Bieniasz et al. SocialStegDisc: Application of steganography in social networks to create a file system
Shuvo et al. Storage efficient data security model for distributed cloud storage
Kumar et al. A Data Security-based Efficient Compression and Encryption for Cloud Computing
US12040820B2 (en) System and method for data compression with homomorphic encryption
US20240113729A1 (en) System and method for data compression with homomorphic encryption
Padmapriya et al. Effect of Data Compression on Cipher Text Aiming Secure and Improved Data Storage
US20240106457A1 (en) System and method for data compression and encryption using asymmetric codebooks
US20240154622A1 (en) System and method for extracting data from a compressed and encrypted data stream
Yongjun et al. Reversible Data Hiding in Encrypted Domain Based on the Error‐Correction Redundancy of Encryption Process
Verma et al. Data Security Using Extended ECS (Encryption, Compression, Steganography)
Sri Gurubaran et al. Storage Optimization Using Secure Image Hashing
Savant et al. Data Solution
EP4052136A1 (en) System and methods for bandwidth-efficient cryptographic data transfer

Legal Events

Date Code Title Description
A201 Request for examination