KR20190060804A - 컴퓨터 보안, 가변 단어-길이 인코딩 및 가변 길이 디코딩을 향상시키기 위한 기술들 - Google Patents

컴퓨터 보안, 가변 단어-길이 인코딩 및 가변 길이 디코딩을 향상시키기 위한 기술들 Download PDF

Info

Publication number
KR20190060804A
KR20190060804A KR1020197012053A KR20197012053A KR20190060804A KR 20190060804 A KR20190060804 A KR 20190060804A KR 1020197012053 A KR1020197012053 A KR 1020197012053A KR 20197012053 A KR20197012053 A KR 20197012053A KR 20190060804 A KR20190060804 A KR 20190060804A
Authority
KR
South Korea
Prior art keywords
word
data
length
word length
way
Prior art date
Application number
KR1020197012053A
Other languages
English (en)
Other versions
KR102445811B1 (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
Priority claimed from US15/276,380 external-priority patent/US10057250B2/en
Application filed by 카라 파트너스 엘엘씨 filed Critical 카라 파트너스 엘엘씨
Publication of KR20190060804A publication Critical patent/KR20190060804A/ko
Application granted granted Critical
Publication of KR102445811B1 publication Critical patent/KR102445811B1/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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • G06F21/46Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/02Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word
    • H03M7/06Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word the radix thereof being a positive integer different from two
    • H03M7/08Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word the radix thereof being a positive integer different from two the radix being ten, i.e. pure decimal code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04KSECRET COMMUNICATION; JAMMING OF COMMUNICATION
    • H04K1/00Secret communication
    • H04K1/003Secret communication by varying carrier frequency at or within predetermined or random intervals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

데이터를 안전하게 송신하는 방법은 (1) 값들의 제1 시퀀스를 포함하는 인크립팅되지 않은 데이터 스트림을 획득하는 단계, (2) 값들의 제1 시퀀스의 제1 부분을 제1 변수와 동일한 단어-길이를 가진 본래의 제1 단어로 세그먼트화하는 단계, (3) 값들의 제1 시퀀스의 제2 부분을 제1 변수와 상이한 제2 변수와 동일한 단어-길이를 가진 본래의 제2 단어로 세그먼트화하는 단계, (4) 수정된 제1 및 제2 단어들을 생성하기 위해 본래의 제1 및 제2 단어들의 미리결정된 위치들에 랜덤 값들을 삽입하는 단계 ― 수정된 제1 및 제2 단어들은 제1 및 제2 변수들과 상이한 제3 변수와 동일한 단어-길이를 가짐 ―, 및 (5) 수정된 제1 및 제2 단어들을 인크립팅된 데이터 스트림을 정의하는 값들의 제2 시퀀스로 결합하는 단계를 포함한다.

Description

컴퓨터 보안, 가변 단어-길이 인코딩 및 가변 길이 디코딩을 향상시키기 위한 기술들
[0001] 본 PCT 국제 출원은 2017년 1월 17일에 출원된 미국 정식 특허 출원 일련 번호 제 15/407,908호의 이익 및 우선권을 주장한다. 본 PCT 국제 출원은 또한 2016년 9월 26일에 출원된 미국 정식 특허 출원 일련 번호 제 15/276,380호의 이익 및 우선권을 주장한다. 이로써, 위에서 언급된 출원들의 전체 내용들 및 핵심은 본원에 완전히 개진된 바와 같이 그 전체들이 인용에 의해 통합된다.
[0002] 일반적으로, 본 개시내용은 컴퓨터 보안에 관한 것이다. 보다 구체적으로, 본 개시내용은 컴퓨터 보안을 향상시키기 위한 기술들에 관한 것이다.
[0003] 본 개시내용에서, 문서, 행위 및/또는 지식 항목이 언급 및/또는 논의되는 경우, 그런 언급 및/또는 논의는, 문서, 행위 및/또는 지식 항목 및/또는 이들의 임의의 조합이 우선일에서, 공개적으로 입수가능하고, 대중에게 알려지고, 공통의 일반적인 지식의 일부이며 그리고/또는 그렇지 않으면 적용가능한 법 규정들 하에서 종래 기술을 구성하고; 그리고/또는 본 개시내용이 관련될 수 있는 임의의 문제를 해결하기 위한 시도에 관련된 것으로 알려진 것을 인정하는 것이 아니다. 추가로, 아무 것도 부인되지 않는다.
[0004] 지난 수십 년들에 걸쳐, 상이한 엔티티들/사용자들 사이에서 이동하는 데이터 양은 기하급수적으로 증가하였다. 사람들/회사들은 현재 그들이 수행하는 비지니스의 많은 부분을 핸들링(handle)하기 위해 인터넷에 의존한다. 이것은, 데이터가 소스와 목적지 사이에서 전송되는 것을 요구한다. 예컨대, 많은 회사들은 상이한 지리적 위치들에 있는 많은 상이한 사무실들에 직원들을 가진다. 그럼에도 불구하고, 이들 사무실들은 같은 지붕 아래에 있는 것과 같이 효과적으로 통신할 수 있을 필요가 있다. 따라서, 회사들은 외부 네트워크, 예컨대 인터넷을 통한 데이터 통신들을 안전하게 하고, 보안을 유지하기 위해 방대한 양들의 돈을 소비한다. 다른 말로, 회사들(및 개인들)은 이들 데이터 통신들을 인터셉팅(intercept)하려고 시도하는 해커들과 끊임없이 싸우고 있다.
[0005] 해커들과 싸우기 위해, 종래의 데이터 통신 시스템들은 외부 네트워크를 통해 데이터가 송신되기 전에 컴퓨터/서버에서 데이터를 로컬적으로 인크립팅(encrypt)하기 위한 인크립션 알고리즘들을 포함하여, 사용자 인증 및/또는 액세스를 위한 다양한 방법들에 의존하였다. 바람직하지 않게, 이들 종래의 시스템들 중 많은 부분이 외부 네트워크에 직접 연결되기 때문에, 해커들은 단순히 로컬 컴퓨터들/서버들의 "백도어(backdoor)들"을 사용하여, 인크립팅되기 전에 또는 디크립팅(decrypt)된 이후에 보호되어야 하는 데이터를 획득할 수 있다. 따라서, 사용자 인증 및/또는 액세스 제어를 위한 더 효과적인 기술들에 대한 요구가 원해진다.
[0006] 본 개시내용은 위의 것 중 적어도 하나를 적어도 부분적으로 처리할 수 있다. 그러나, 본 개시내용은 다른 기술 영역들에 유용한 것으로 드러날 수 있다. 그러므로, 청구항들은 반드시 위의 것 중 임의의 것을 처리하는 것으로 제한되는 것으로 이해되지 않아야 한다.
[0007] 본 개시내용의 예시적인 실시예에 따라, 방법이 제공된다. 방법은 컴퓨터에 의해 수행될 수 있다. 예컨대, 컴퓨터는 메모리 및 프로세서를 포함할 수 있고, 메모리는, 프로세서에 의해 실행될 때, 컴퓨터로 하여금 방법의 다양한 단계들 중 하나 이상을 수행하게 하는 로지컬(logical) 명령들을 포함할 수 있다. 방법은 데이터 스트림을 인크립팅 및/또는 디크립팅하는 것을 포함할 수 있다. 예컨대, 본 발명의 일부 실시예들에서, 디바이스는 원격/외부 컴퓨터로부터 인크립팅되지 않은 데이터 스트림을 수신하고 그리고 인크립팅된 데이터 스트림을 외부 네트워크를 통해 목적지 컴퓨터에 송신하기 전에 그 데이터 스트림을 인크립팅할 수 있다. 본 발명의 일부 실시예들에서, 디바이스는 인크립팅된 데이터 스트림을 소스 컴퓨터로부터 외부 네트워크를 통해 수신하고 그리고 인크립팅되지 않은 데이터 스트림을 원격/외부 컴퓨터에 송신하기 전에 인크립팅된 데이터 스트림을 디크립팅할 수 있다. 본 발명의 일부 실시예들에서, 동일한 디바이스는 (1) 인크립팅되지 않은 데이터 스트림을 원격/외부 컴퓨터로부터 수신하고 그리고 인크립팅된 데이터 스트림을 외부 네트워크를 통해 목적지 컴퓨터에 송신하기 전에 그 데이터 스트림을 인크립팅하고, 그리고 (2) 인크립팅된 데이터 스트림을 소스 컴퓨터로부터 외부 네트워크를 통해 수신하고 그리고 인크립팅되지 않은 데이터 스트림을 원격/외부 컴퓨터에 송신하기 전에 인크립팅된 데이터 스트림을 디크립팅할 수 있다.
[0008] 본 발명의 일부 실시예들에서, 방법은 인크립팅되지 않은 데이터 스트림을 인크립팅하는 단계를 포함한다. 방법은 값들의 제1 시퀀스를 포함하는 인크립팅되지 않은 데이터 스트림을 획득하는 단계를 포함할 수 있다. 방법은 값들의 제1 시퀀스의 제1 부분을 제1 변수와 동일한 단어-길이를 가진 본래의 제1 단어로 세그먼트화(segmenting)하는 단계 및 값들의 제1 시퀀스의 제2 부분을 제1 변수와 상이한 제2 변수와 동일한 단어-길이를 가진 본래의 제2 단어로 세그먼트화하는 단계를 더 포함할 수 있다. 방법은 제1 및 제2 단어들을 생성하기 위해 본래의 제1 및 제2 단어들의 미리 결정된 위치들에 랜덤(random) 값들을 삽입하는 단계를 더 포함할 수 있다. 수정된 제1 및 제2 단어들은 제1 및 제2 변수들과 상이한 제3 변수와 동일한 단어-길이를 가질 수 있다. 방법은 수정된 제1 및 제2 단어들을 인크립팅된 데이터 스트림을 정의하는 값들의 제2 시퀀스로 결합하는 단계를 더 포함할 수 있다.
[0009] 본 발명의 일부 실시예들에서, 값들의 제1 시퀀스에서 각각의 값은 이진 값일 수 있다.
[0010] 본 발명의 일부 실시예들에서, 값들의 제1 시퀀스에서 각각의 값은 16진수 값일 수 있다.
[0011] 본 발명의 일부 실시예들에서, 방법은 인크립팅되지 않은 데이터 스트림을 생성한 컴퓨터와 상이한 원격 컴퓨터에 의해 수행될 수 있다.
[0012] 본 발명의 일부 실시예들에서, 방법은 인크립팅된 데이터 스트림을 목적지 디바이스로 송신하는 단계를 더 포함할 수 있다.
[0013] 본 발명의 일부 실시예들에서, 제1, 제2, 및 제3 변수들은 목적지 디바이스에 알려진다.
[0014] 본 발명의 일부 실시예들에서, 제1, 제2, 및 제3 변수들은 시간의 함수로서 변화한다.
[0015] 본 발명의 일부 실시예들에서, 방법은 인크립팅된 데이터 스트림을 디크립팅하는 방법을 포함한다. 방법은 값들의 제2 시퀀스를 포함하는 인크립팅된 데이터 스트림을 획득하는 단계를 포함할 수 있다. 방법은 값들의 제2 시퀀스의 적어도 일부를 수정된 제1 및 제2 단어들로 세그먼트화하는 단계를 더 포함할 수 있다. 수정된 제1 및 제2 단어들은 제3 변수와 동일한 단어-길이를 가질 수 있다. 방법은 제1 변수와 동일한 단어-길이를 가진 본래의 제1 단어 및 제2 변수와 동일한 단어-길이를 가진 본래의 제2 단어를 생성하기 위해 수정된 제1 및 제2 단어들의 미리 결정된 위치들에 있는 값들을 제거하는 단계를 더 포함할 수 있다. 방법은 본래의 제1 및 제2 단어들을 인크립팅되지 않은 데이터 스트림을 정의하는 값들의 제1 시퀀스로 결합하는 단계를 더 포함할 수 있다.
[0016] 본 발명의 일부 실시예들에서, 방법은 인크립팅되지 않은 데이터 스트림을 원격 컴퓨터로 송신하는 단계를 더 포함할 수 있다.
[0017] 본 발명의 일부 실시예들에서, 방법은 인크립팅된 데이터 스트림을 소스 디바이스로부터 수신하는 단계를 더 포함할 수 있다.
[0018] 본 발명의 일부 실시예들에서, 제1, 제2, 및 제3 변수들은 소스 디바이스에 알려진다.
[0019] 본 발명의 다른 예시적인 실시예에서, 방법은 복수의 변수들 및 하나의 변수를 제공하는 단계를 포함한다. 변수들은 서로 상이하다. 변수들은 변수와 상이하다. 방법은 제1 진법(numeral system)에 기반하여 복수의 값들을 통해 복수의 문자들을 인덱싱(indexing)하는 룩업 표를 제공하는 단계를 포함한다. 방법은 메시지를 표에 기반한 값들의 제1 시퀀스로 변환하는 단계를 포함한다. 방법은 제1 시스템과 상이한 제2 진법에 기반하고 미리 설정된 포맷에 따라 값들의 제1 시퀀스를 제2 시퀀스로 변환하는 단계를 포함한다. 방법은 포맷을 제거하는 것을 통해 제2 시퀀스를 단일 시퀀스로 결합하는 단계를 포함한다. 방법은 변수들을 교번시키는 것을 통한 시퀀스의 세그먼트화에 기반하여 단일 시퀀스로부터 제1 복수의 서브시퀀스들을 생성하는 단계를 포함한다. 방법은, 제2 서브시퀀스들의 각각이 변수에 따라 사이즈가 정해지도록, 제1 서브시퀀스들을 제2 복수의 서브시퀀스들로 변환하는 단계를 포함한다. 방법은 제2 서브시퀀스들을 송신하는 단계를 포함한다.
[0020] 본 개시내용은 첨부 도면들에 예시된 형태로 구현될 수 있다. 그러나, 도면들이 예시적이라는 사실에 주의가 요구된다. 변형들은 청구항들의 범위에 의해서만 제한되는, 본 개시내용의 일부로서 고려된다.
[0021] 첨부 도면들은 본 개시내용의 예시적인 실시예들을 예시한다. 그런 도면들은 반드시 본 개시내용을 제한하는 것으로 이해되지 않아야 한다. 유사한 번호들 및/또는 유사한 번호매김 방식은 전체에 걸쳐 동일하고 그리고/또는 유사한 엘리먼트들을 지칭할 수 있다.
[0022] 도 1은 본 개시내용에 따른 컴퓨터 보안을 향상시키기 위한 방법의 예시적인 실시예의 흐름도를 도시한다.
[0023] 도 2는 본 개시내용에 따른 컴퓨터 보안을 향상시키기 위한 방법의 예시적인 실시예의 플로우 시트를 도시한다.
[0024] 도 3은 본 개시내용에 따른 네트워크의 예시적인 실시예의 다이어그램을 도시한다.
[0025] 도 4는 본 개시내용에 따른 컴퓨터 보안을 향상시키기 위한 방법의 다른 예시적인 실시예의 흐름도를 도시한다.
[0026] 도 5는 본 개시내용에 따른 가변 단어 길이 인코딩을 위한 방법의 예시적인 실시예의 흐름도를 도시한다.
[0027] 도 6은 본 개시내용에 따른 가변 단어 길이 인코딩을 위한 방법의 다른 예시적인 실시예의 흐름도를 도시한다.
[0028] 본 개시내용은 이제 첨부 도면들을 참조하여 더 완전히 설명될 것이고, 첨부 도면들에서 본 개시내용의 예시적인 실시예들이 도시된다. 그러나, 본 개시내용은 많은 상이한 형태들로 구현될 수 있고 본 개시내용에 개진된 실시예들로 제한되는 것으로 이해되지 않아야 한다. 오히려, 이들 실시예들은, 본 개시내용이 철저하고 완벽하고, 그리고 당업자들에게 본 개시내용의 개념을 완전히 전달하도록 제공된다.
[0029] 소정의 실시예들에 관해 설명된 특징들은 다양한 다른 실시예들에서 조합될 수 있다. 실시예들의 상이한 양상들 및 엘리먼트들은 유사한 방식으로 조합될 수 있다. 개시된 실시예들은 개별적으로 그리고/또는 집합적으로 더 큰 시스템의 컴포넌트들일 수 있고, 다른 절차들은 이들의 애플리케이션에 우선하고 그리고/또는 다르게 수정될 수 있다. 다수의 단계들은 개시된 실시예들 이전, 이후, 및/또는 동시에 요구될 수 있다. 본원에 개시된 프로세스들은 본 개시내용의 원리들에 따라 임의의 방식으로 하나 및/또는 그 초과의 엔티티들에 의해 수행될 수 있다.
[0030] 본원에 사용된 전문 용어는 직접 또는 간접, 전체 또는 부분, 행위 또는 비행위를 암시할 수 있다. 예컨대, 엘리먼트가 다른 엘리먼트에 "연결" 또는 "커플링"되는 것으로 언급될 때, 엘리먼트는 다른 엘리먼트에 직접 연결 또는 커플링될 수 있거나 개재 엘리먼트들이 존재할 수 있다. 대조하여, 엘리먼트가 다른 엘리먼트에 "직접 연결" 또는 "직접 커플링"되는 것으로 언급될 때, 어떠한 개재 엘리먼트들로 존재하지 않는다.
[0031] 비록 제 1, 제 2 등의 용어들이 다양한 엘리먼트들, 컴포넌트들, 구역들, 계층들 및/또는 섹션들을 설명하기 위하여 본원에서 사용될 수 있지만, 이들 엘리먼트들, 컴포넌트들, 구역들, 계층들 및/또는 섹션들은 이들 용어들에 의해 제한되지 않아야 한다. 이들 용어들은 다른 엘리먼트, 컴포넌트, 구역, 계층 또는 섹션으로부터 하나의 엘리먼트, 컴포넌트, 구역, 계층 또는 섹션을 구별하기 위해서만 사용된다. 따라서, 아래에서 논의되는 제1 엘리먼트, 컴포넌트, 구역, 계층 또는 섹션은 본 개시내용의 교시들로부터 벗어남이 없이 제2 엘리먼트, 컴포넌트, 구역, 계층 또는 섹션으로 칭해질 수 있다.
[0032] 본원에 사용된 전문 용어는 단지 특정 실시예들을 설명하는 목적을 위한 것이고 반드시 본 개시내용을 제한하는 것으로 의도되지 않는다. 본원에 사용된 바와 같이, 단수 형태들은, 문맥이 명확하게 다르게 표시하지 않으면, 또한 복수의 형태들을 포함하도록 의도된다. 이 명세서에 사용될 때 "포함하다" 및/또는 "포함하는"이라는 용어들은 언급된 피처들, 정수들, 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 특정하지만, 하나 이상의 다른 피처들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들, 및/또는 이들의 그룹들의 존재 또는 부가를 배제하지 않는다.
[0033] 본원에서 다르게 정의되지 않으면, 본원에 사용된 모든 용어들(기술적이고 과학적인 용어들 포함)은 이 개시내용이 속하는 당업자에 의해 보통 이해되는 것과 동일한 의미를 가진다. 용어들, 이를테면 보통 사용되는 사전들에 정의된 것들은 관련 기술의 환경에서 그의 의미와 일관되는 의미를 가지는 것으로 해석되어야 하고 본원에서 명확하게 그러하다고 정의되지 않으면 이상화되거나 너무 형식적인 의미로 해석되지 않을 것이.
[0034] 임의의 개시내용이 인용에 의해 본원에 통합되고 그런 통합된 개시내용들이 부분적으로 전체적으로 본 개시내용과 충돌하면, 충돌 범위, 및/또는 더 넓은 개시내용, 및/또는 용어들의 더 넓은 정의까지, 본 개시내용이 제어한다. 그런 통합된 개시내용들이 부분적으로 또는 전체적으로 서로 충돌하면, 충돌 범위까지, 최신의 개시내용이 제어한다.
[0035] 도 1은 본 개시내용에 따른 컴퓨터 보안을 향상시키기 위한 방법의 예시적인 실시예의 흐름도를 도시한다.
[0036] 프로세스(100)는 블록들(102-118)을 포함한다. 프로세스(100)는 이를테면 임의의 하드웨어 레벨 상의 하나 및/또는 그 초과의 회로들에서의 하드웨어 로직(logic), 및/또는 이를테면 하나 및/또는 그 초과의 소프트웨어 애플리케이션들에서의 소프트웨어 로직의 임의의 결합을 통해 구현될 수 있고, 이는 오퍼레이팅 시스템 레벨 아래, 상 및/또는 위에 구현될 수 있다. 프로세스(100)는 요청-응답 컴퓨팅으로 구현될 수 있다. 프로세스(100)는 컴퓨터 보안에 어떠한 관련도 없이, 더 큰 프로세스의 부분일 수 있다. 예컨대, 다양한 기능들은 프로세스(100)의 임의의 하나 및/또는 그 초과의 블록들의 수행 이전, 동안 및/또는 이후에 발생할 수 있다. 대안적으로, 프로세스(100)는 혼자서 수행될 수 있다. 비록 블록들(102-118)이 본원에 설명된 바와 같은 순서로 수행될 수 있지만, 블록들(102-118)은 다른 순서들로 수행될 수 있고, 일부 블록들은 이들의 임의의 순열의 다른 블록들 이전, 동안 및/또는 이후 수행된다. 또한, 프로세스(100)가 적어도 부분적으로 알파뉴메릭(alphanumeric) 입력, 심볼 입력, 생체인증 입력, 하드웨어 입력 등에 기반할 수 있는 패스워드 입력으로 구현될 수 있다는 것을 주목하라. 그러나, 프로세스(100)는 또한 패스워드들의 사용 없이 구현될 수 있다.
[0037] 블록(102)은 비트 스트림을 제1 복수의 동일한 사이즈 문자열들로 파싱(parsing)하는 것을 포함한다. 비트 스트림은 매체를 통한 데이터의 스트림을 나타내는 비트들의 연속적인 시퀀스, 이를테면 101001001011110011를 포함한다. 그런 데이터는 임의의 타입 및/또는 임의의 목적을 위한 것일 수 있다. 스트림은 유선 방식 및/또는 무선 방식으로 제공 및/또는 수신될 수 있다. 스트림은 통신 프로토콜, 이를테면 TCP(transmission control protocol), UDP(user datagram protocol), 및/또는 임의의 통신 범위, 및/또는 컴퓨터 메모리 및/또는 컴퓨터 저장부, 이를테면 회로, 비-휘발성 메모리 디바이스 등의 다른 네트워크 통신 프로토콜들을 통해 통신 경로를 경유해 통신될 수 있다. 스트림은 임의의 비트 양일 수 있다. 비트 스트림은 비트 스트림 소스 및 비트 스트림 목적지를 식별하는 정보를 포함할 수 있다. 비트 스트림은 또한 바이트 스트림일 수 있다. 제1 문자열들로 파싱하는 것은 비트 스트림을 임의의 디지트(digit) 사이즈, 이를테면 2개, 5개, 10개 또는 임의의 다른 숫자의 제1 문자열들로 세그먼트화하는 것을 포함한다. 예컨대, 비트 스트림이 101001001011110011을 포함할 때, 그런 스트림은 6개의 디지트 문자열들, 이를테면, 101001, 001011, 110011 등으로 파싱될 수 있다. 제1 문자열들로 파싱하는 것은, 비트 스트림의 사이즈 및/또는 서로에 대한 관계와 무관하게, 전체 비트 스트림 및/또는 비트 스트림의 부분들 및/또는 서브-부분들 상에서 발생할 수 있다. 파싱은 비트 스트림의 무결성과의 간섭으로 및/또는 간섭 없이 수행될 수 있다. 파싱은 적어도 하나의 발진기/클록을 통해 수행될 수 있다. 대안적으로, 시퀀스는 상이한 심볼 및/또는 진법, 이를테면 16진수에 기반할 수 있다.
[0038] 블록(104)은 비트 스트림을 제2 복수의 동일한 사이즈 문자열들로 파싱하는 것을 포함한다. 제2 문자열들로 파싱하는 것은 비트 스트림을 임의의 디지트 사이즈, 이를테면 2개, 5개, 10개 또는 임의의 다른 숫자의 제2 문자열들로 세그먼트화하는 것을 포함한다. 예컨대, 비트 스트림이 101001001011110011을 포함할 때, 그런 스트림은 9개의 디지트 문자열들, 이를테면, 101001001, 011110011 등으로 파싱될 수 있다. 제2 문자열들로 파싱하는 것은, 비트 스트림의 사이즈 및/또는 서로에 대한 관계와 무관하게, 전체 비트 스트림 및/또는 비트 스트림의 부분들 및/또는 서브부분들 상에서 발생할 수 있다. 제1 문자열들은 제2 문자열들과 상이한 사이즈를 가진다. 비록 제1 문자열들 및 제2 문자열들이 비트 스트림의 동일한 부분을 파싱하여 형성되지만, 다른 대안적인 실시예들에서, 제1 문자열들 및 제2 문자열들은 비트 스트림의 상이한 부분들을 파싱하여 형성될 수 있다. 제1 문자열들은 제2 문자열들과 상이한 비트 값을 가질 수 있다. 제1 문자열들은 제2 문자열들과 동일한 비트 값을 가질 수 있다. 제1 문자열들 및 제2 문자열들은 동일한 사이즈 및/또는 동일하지 않은 사이즈로 정해진다. 블록(102) 및 블록(104)은 적어도 하나의 엔티티에 의해 같은 때에, 동시에 및/또는 상이한 시간들에서 수행될 수 있다. 블록(104)은 블록(102) 이전 또는 이후 수행될 수 있다. 파싱은 비트 스트림의 무결성과의 간섭으로 및/또는 간섭 없이 수행될 수 있다. 파싱은 적어도 하나의 발진기/클록을 통해 수행될 수 있다.
[0039] 블록(106)은 스위치에 제1 문자열들의 입력을 지시하는 것을 포함한다. 지시는 제1 문자열들 중 적어도 하나를 스위치에 입력하는 것을 포함할 수 있다. 대안적으로, 지시는 제1 문자열들 중 적어도 하나를 스위치에 전송하는 것을 포함할 수 있다. 또한 대안적으로, 지시는 제1 문자열들 중 적어도 하나를 스위치를 통해 수신하는 것을 포함할 수 있다. 또한 대안적으로, 지시는 제1 문자열들 중 적어도 하나를 스위치에 송신하는 것을 포함할 수 있다. 지시는 스위치 입력 요구 기반일 수 있다. 지시는 유선 및/또는 무선일 수 있다. 지시는 직접적 그리고/또는 간접적일 수 있다. 지시는 인크립팅될 수 있고 그리고/또는 인크립팅되지 않을 수 있다.
[0040] 블록(108)은 스위치에 제2 문자열들의 입력을 지시하는 것을 포함한다. 지시는 제2 문자열들 중 적어도 하나를 스위치에 입력하는 것을 포함할 수 있다. 대안적으로, 지시는 제2 문자열들 중 적어도 하나를 스위치에 전송하는 것을 포함할 수 있다. 또한 대안적으로, 지시는 제2 문자열들 중 적어도 하나를 스위치를 통해 수신하는 것을 포함할 수 있다. 또한 대안적으로, 지시는 제2 문자열들 중 적어도 하나를 스위치에 송신하는 것을 포함할 수 있다. 지시는, 블록(106)의 임의의 성능과 임의의 관련 없이, 스위치 입력 요구 기반일 수 있다. 블록(106) 및 블록(108)은 적어도 하나의 엔티티에 의해 같은 때에, 동시에 및/또는 상이한 시간들에서 수행될 수 있다. 블록(106)은 블록(108) 이전 또는 이후 수행될 수 있다. 지시는 유선 및/또는 무선일 수 있다. 지시는 직접적 그리고/또는 간접적일 수 있다. 지시는 인크립팅될 수 있고 그리고/또는 인크립팅되지 않을 수 있다.
[0041] 블록(110)은 제1 모드와 제2 모드 사이의 스위치를 주기적으로 스위칭하는 것을 포함한다. 스위치는 하드웨어 기반, 이를테면 회로, 및/또는 소프트웨어 기반일 수 있다. 스위치는 A/B 스위치일 수 있다. 대안적으로, 스위치는 A/B/n 스위치일 수 있고, n은, 스위치가 스위칭할 수 있는 모드들의 수에 대응하고, 이는 임의의, 이를테면 5, 7, 9, 20 등일 수 있다. 주기성은 임의의 시간 기간, 이를테면 밀리초들, 초들, 분들, 시간들 등에 기반할 수 있다. 그런 주기적인 스위칭은 자동이다. 그런 기간은 스위치의 모드 지속기간에 대응할 수 있다. 스위칭은 클록, 발진기, 프로세서 및 하드웨어 및/또는 소프트웨어 로직에 기반한다. 예컨대, 그런 스위칭은 클록에 기반하여 매 30 초들이다. 그러므로, 매 30 초들에 대해, A/B 스위치는 제1 모드로부터 제2 모드로 그리고 제2 모드로부터 제1 모드로 반복적으로 스위칭한다. 유사하게, 매 30 초에 대해, A/B/n 스위치는 제1 모드로부터 제2 모드로, 제2 모드로부터 n 모드로, 그리고 n 모드로부터 제1 모드로 반복적으로 스위칭한다. 블록(110)은 블록들(102-108) 중 임의의 블록 및/또는 모든 블록으로부터 이전에, 동시에 및/또는 상이한 시간들에 수행될 수 있다.
[0042] 블록(112)은 제1 모드에서 제1 문자열들 중 하나를 스위치를 통해 출력하는 것을 포함한다. 예컨대, 제1 문자열들 중 하나가 101001일 때, 제1 모드 동안, 스위치는 101001을 출력한다. 하나 초과의 문자열은 제1 모드에서 출력될 수 있다.
[0043] 블록(114)은 제1 문자열의 출력에 기반하여 액세스를 인증/제어하는 것을 포함한다. 그러므로, 스위치가 101001을 출력할 때, 액세스를 인증/제어하는 것은, 이진 형태 및/또는 다른 형태, 이를테면 알파뉴메릭, 심볼, 생체인증 등 이든 패스워드 101001의 올바른 입력에 기반한다. 블록(112) 및 블록(114)은 적어도 하나의 엔티티에 의해 같은 때에, 동시에 및/또는 상이한 시간들에서 수행될 수 있다. 블록(112)은 블록(114) 이전 또는 이후 수행될 수 있다.
[0044] 블록(116)은 제2 모드에서 제2 문자열들 중 하나를 스위치를 통해 출력하는 것을 포함한다. 예컨대, 제2 문자열들 중 하나가 101001001일 때, 제2 모드 동안, 스위치는 101001001을 출력한다. 하나 초과의 문자열은 제2 모드에서 출력될 수 있다.
[0045] 블록(118)은 제2 문자열의 출력에 기반하여 액세스를 인증/제어하는 것을 포함한다. 그러므로, 스위치가 101001001을 출력할 때, 액세스를 인증/제어하는 것은, 이진 형태 및/또는 다른 형태, 이를테면 알파뉴메릭, 심볼, 생체인증 등 이든 패스워드 101001001의 올바른 입력에 기반한다. 블록(116) 및 블록(118)은 적어도 하나의 엔티티에 의해 같은 때에, 동시에 및/또는 상이한 시간들에서 수행될 수 있다. 블록(116)은 블록(118) 이전 또는 이후 수행될 수 있다. 임의의 그리고/또는 모든 블록들(112 및/또는 114)은 임의의 그리고/또는 모든 블록들(116 및/또는 118) 이후 수행될 수 있다.
[0046] 본원의 예들을 사용하면, 스위치가 제2 모드로부터 제1 모드로 다시 스위칭할 때, 스위치는 파싱된 제1 문자열들 중 다음 번 문자열을 출력한다. 그러므로, 제1 모드에서 스위치의 다음 반복에서, 스위치는 001011을 출력한다. 유사하게, 스위치가 다시 제2 모드로 스위칭할 때, 스위치는 파싱된 제2 문자열 중 다음 번 문자열을 출력한다. 그러므로, 제2 모드에서 스위치의 다음 반복에서, 스위치는 011110011을 출력한다. 그런 출력들이 패스워드들로서 기능하기 때문에, 인증/액세스 제어는, 예컨대 컴퓨터 시스템에서 구현될 때, 컴퓨터 시스템의 보안을 향상시키는 스위칭 패스워드들에 기반한다. 결과적으로, 그런 코드를 출력하는 컴퓨터는, 이를테면 문자 시퀀스 및 시퀀스 생성의 제공을 통해 미리 사전에 프로그래밍될 수 있는 본래의 기술 사양들의 지식 없이, 그런 구조가 파악 및/또는 재생될 수 없기 때문에, 액세스 인증 및/또는 승인될 수 있다. 그런 인증/액세스 제어는 바이트가 변화함으로 인한 새로운 컴퓨터 언어 생성을 가능하게 한다.
[0047] 비트 스트림이 2개 초과의 복수의 동일한 사이즈 문자열들로 파싱될 수 있다는 것을 주목하라. 예컨대, 비트 스트림은 임의의 수의 동일한 사이즈 문자열들, 이를테면 3개, 9개, 10개, 20개 등으로 분할될 수 있다. 스위치는 2개 초과의 모드들 사이에서 스위칭할 수 있다. 예컨대, 스위치는 복수의 모드들, 이를테면 3개, 9개, 10개, 20개 등 사이에서 스위칭할 수 있다. 따라서, 스위치는 복수의 모드들에서 복수의 동일한 사이즈 문자열들에 기반하여 출력할 수 있다. 그런 스위치 출력은 복수의 문자열들에 기반하여 액세스를 인증/제어하는 데 사용될 수 있다. 또한, 스위치가 로컬, 이를테면 컴퓨터의 일부 또는 컴퓨터와 동일한 로케일(locale)일 수 있거나, 또는 스위치가 원격, 이를테면 컴퓨터를 통해 액세스가능한 네트워크일 수 있다는 것을 주목하라. 스위치가 또한 컴퓨터들 사이에서 공유될 수 있다는 것을 주목하라.
[0048] 도 2는 본 개시내용에 따른 컴퓨터 보안을 향상시키기 위한 방법의 예시적인 실시예의 플로우 시트를 도시한다. 이 도면의 일부 엘리먼트들은 위에서 설명되어 왔다. 따라서, 동일한 참조 문자들은 위에서 설명된 동일하거나 유사한 컴포넌트들을 식별하고 이의 임의의 반복적인 상세한 설명은 이후 복잡성을 회피하기 위해 생략 또는 단순화될 것이다.
[0049] 비트 스트림(202)이 도시된다. 스트림(202)은 복수의 비트들을 포함한다. 스트림(202)은 제1 복수의 동일한 사이즈 문자열들(204) 및 제2 복수의 동일한 사이즈 문자열들(206)로 파싱된다. 파싱은 적어도 하나의 발진기/클록, 이를테면 하나의 주파수에 따라 동작하고 문자열들(204)로 파싱하는 하나의 발진기/클록 및 다른 하나의 주파수에 따라 동작하고 문자열들(206)로 파싱하는 다른 발진기/클록을 통해 수행될 수 있다. 문자열들(204)은 6개의 디지트 세그먼트화에 기반하여 파싱되고 문자열들(206)은 9개의 디지트 세그먼트화에 기반하여 파싱된다. 그러므로, 문자열들(204) 및 문자열들(206)은 비트 사이즈가 상이하고 상이한 문자열 값들을 가진다. 그러나, 그런 세그먼트화는 임의의 사이즈에 기반할 수 있고 그리고/또는 적어도 하나의 값을 공유할 수 있다. 문자열들(204 및 206)로의 파싱은 적어도 하나의 엔티티에 의해 같은 때에, 동시에 및/또는 상이한 시간들에서 수행될 수 있다. 비트 스트림(202)이 전체 비트 스트림 또는 일부 비트 스트림의 부분일 수 있다는 것을 주목하라.
[0050] 문자열들(204) 각각은 복수의 제1 시간 기간들에 고유하게 할당된다. 그런 할당은 일-대-일 기반, 일-대-다 기반, 다-대-일 기반 및/또는 다-대-다 기반으로 수행될 수 있다. 예컨대, 문자열들(204) 각각은 제1 시간 기간들의 각각, 이를테면 문자열당 1초에 고유하게 일-대-일 대응한다. 유사하게, 문자열들(206) 각각은 복수의 제2 시간 기간들에 고유하게 할당된다. 그런 할당은 일-대-일 기반, 일-대-다 기반, 다-대-일 기반 및/또는 다-대-다 기반으로 수행될 수 있다. 예컨대, 문자열들(206) 각각은 제2 시간 기간들의 각각, 이를테면 문자열당 1/2초에 고유하게 일-대-일 대응한다. 제1 시간 기간들 및 제2 시간 기간들이 동일한 기준 포인트 또는 시간 제로로부터 시작하는 것을 주목하라. 문자열들(204) 및 문자열들(206)은 적어도 2개의 상이한 컴퓨터들을 통해 포함된다는 것을 주목하라.
[0051] 이어서, 문자열들(204) 및 문자열들(206)은 스위치(208)에 입력되도록 지시된다. 도시된 바와 같이, 스위치(208)는 매 30 초마다 제1 모드 A와 제2 모드 B 사이에서 앞뒤로 자동으로 전환하는 A/B 스위치이다. 그러나, 스위치(208)는 임의의 수의 모드들에 따라 모달(modal)이 될 수 있고 스위치(208)는 본원에 설명된 바와 같은 그런 모드들을 통해 반복될 수 있다. 추가로, 스위치(208)는, 본원에 설명된 기술들과 관련되든 그리고/또는 관련되지 않든 다른 입력들로부터 입력을 수신할 수 있다. 문자열들(204) 및 문자열들(206)은, 적어도 하나의 엔티티에 의해 같은 때이든, 동시이든 그리고/또는 상이한 시간들이든, 임의의 방식으로 지시될 수 있다. 문자열들(204) 중 적어도 하나 및 문자열들(206) 중 적어도 하나는, 적어도 하나의 엔티티에 의해 같은 때이든, 동시이든 그리고/또는 상이한 시간들이든, 스위치(208)에 입력된다. 스위치(208)는 임의의 시간 측정, 이를테면 나노초, 밀리초, 초, 분, 시간 등에 기반하여 임의의 시간 기간 동안 전환될 수 있다. 스위치(208)는 자동으로 전환되고, 이는 수동 초기 활성화를 포함할 수 있다. 스위치(208)는 클록, 발진기, 프로세서 및 하드웨어 및/또는 소프트웨어 로직에 기반하여 스위칭한다. 도시된 바와 같이, 스위치(208)는 클록에 기반하여 매 30 초마다 스위칭한다. 그러므로, 매 30 초들에 대해, A/B 스위치는 제1 모드로부터 제2 모드로 그리고 제2 모드로부터 제1 모드로 반복적으로 스위칭한다. 스위치로의 입력이 FIFO(first-in-first-out) 방법론에 기반할 수 있다는 것을 주목하라.
[0052] 복수의 시간 기간들(212)은 문자열들(204) 및 문자열들(206)을 참조하여 도시된 바와 같이 제1 시간 기간들 및 제2 시간 기간들의 결합에 기반한다. 시간 기간들(212)은 상이한 시간 측정들에 기반할 수 있고, 이를테면 문자열들(204)과 연관된 시간은 초들에 기반하고 문자열들(206)과 연관된 시간은 밀리초들에 기반한다. 그런 상이한 시간 측정들은 임의의 타입일 수 있다.
[0053] 스위치(208)가 A 모드일 수 있는 제1 모드에 있을 때, 시간 기간들(212)에 도시된 바와 같이 12:00:00에서, 스위치(208)는 문자열들(204) 중 하나를 출력하고, 이는 도시된 바와 같이 101001이다. 그런 출력에 기반하여, 액세스의 인증/제어가 수행된다. 예컨대, 제1 모드 동안, 패스워드(210)는, 이진 형태이든 그리고/또는 다른 형태, 이를테면 알파뉴메릭, 심볼, 생체인증 등이든, 십진법 또는 16진법에서와 같이 101001 또는 이의 값일 수 있다.
[0054] 시간 기간들(212)에 도시된 바와 같이 12:00:30에서, 스위치(208)는 B 모드일 수 있는 제2 모드로 전환한다. 제2 모드 동안, 스위치(208)는 문자열들(206) 중 하나를 출력하고, 이는 도시된 바와 같이 101001001이다. 그런 출력에 기반하여, 액세스의 인증/제어가 수행된다. 예컨대, 제2 모드 동안, 패스워드(210)는, 이진 형태이든 그리고/또는 다른 형태, 이를테면 알파뉴메릭, 심볼, 생체인증 등이든, 십진법 또는 16진법에서와 같이 101001001 또는 이의 값일 수 있다.
[0055] 시간 기간들(212)에 도시된 바와 같이 12:01:00에서, 스위치(208)는 A 모드일 수 있는 제1 모드로 다시 전환한다. 제1 모드 동안, 스위치(208)는 문자열들(206) 중 다음 번 하나를 출력하고, 이는 도시된 바와 같이 001011이다. 그런 출력에 기반하여, 액세스의 인증/제어가 수행된다. 예컨대, 제1 모드 동안, 패스워드(210)는, 이진 형태이든 그리고/또는 다른 형태, 이를테면 알파뉴메릭, 심볼, 생체인증 등이든, 십진법 또는 16진법에서와 같이 001011 또는 이의 값일 수 있다. 그런 스위치(208) 전환은 무기한으로 또는 일부 조건이 충족될 때까지 계속될 수 있다. 시간 기간들(212)에 의해 표시된 바와 같이 시간이 흐름에 따라 패스워드(210)가 스위칭되기 때문에, 컴퓨터 시스템의 보안은 향상될 수 있다.
[0056] 비트 스트림(202)이 2개 초과의 복수의 동일한 사이즈 문자열들로 파싱될 수 있다는 것을 주목하라. 예컨대, 비트 스트림(202)은 임의의 수의 동일한 사이즈 문자열들, 이를테면 3개, 9개, 10개, 20개 등으로 분할될 수 있다. 스위치(208)는 2개 초과의 모드들 사이에서 스위칭할 수 있다. 예컨대, 스위치(208)는 복수의 모드들, 이를테면 3개, 9개, 10개, 20개 등 사이에서 스위칭할 수 있다. 따라서, 스위치(208)는 복수의 모드들에서 복수의 동일한 사이즈 문자열들에 기반하여 출력할 수 있다. 그런 스위치(208) 출력은 복수의 문자열들에 기반하여 패스워드(210)를 통해 액세스를 인증/제어하는 데 사용될 수 있다.
[0057] 예컨대, 스트림(202) 및 복수의 상이한 스트림 세그먼트화 알고리즘들은 이를테면 사전 프로그래밍을 통해 복수의 컴퓨터들에 제공된다. 컴퓨터들 각각은 알고리즘들에 기반하여, 문자열들(204) 및 문자열들(206)을 초래하기 위해 스트림(202)을 세그먼트화하고, 문자열들(204) 및 문자열들(206)은 알고리즘들에 기반하여 사이즈 및/또는 값이 서로 상이하다. 문자열들(204) 및 문자열들(206)은 복수의 모드들 사이에서 교번하여 로컬 스위치(208)에 입력된다. 컴퓨터들은 스위치 교번에 기반하여 변화하는 패스워드(210)에 기반하여 각각 통신한다. 패스워드(210)는, 문자열들(204) 및 문자열들(206)로부터의 교번하는 입력에 기반하여, 시간 기간들(212)에 따라 주기적으로 변경된다. 입력은 모드들 사이에서 교번하는 스위치에 따라 교번된다. 컴퓨터들에 대해, 패스워드(210) 변화는 이를테면 스위치(208)의 교번에 기반하여 동기식이지만, 비동기식일 수 있다. 또한, 컴퓨터들에 대해, 문자열들(204) 및 문자열들(206)의 생성 중 적어도 하나가 이를테면 클록에 기반하여 동기식이지만, 비동기식일 수 있다는 것을 주목하라. 추가로, 컴퓨터들에 대해, 스위치(208)로의 입력이 이를테면 클록에 기반하여 동기식이지만, 비동기식일 수 있다는 것을 주목하라.
[0058] 도 3은 본 개시내용에 따른 네트워크의 예시적인 실시예의 다이어그램을 도시한다. 이 도면의 일부 엘리먼트들은 위에서 설명되어 왔다. 따라서, 동일한 참조 문자들은 위에서 설명된 동일하거나 유사한 컴포넌트들을 식별하고 이의 임의의 반복적인 상세한 설명은 이후 복잡성을 회피하기 위해 생략 또는 단순화될 것이다.
[0059] 네트워크 다이어그램(300)은 적어도 하나의 데스크톱 컴퓨터(304), 태블릿 컴퓨터(306), 모바일 폰(308), 랩톱 컴퓨터(310), 메인프레임(312), 서버(314), 클라우드 컴퓨팅 네트워크(316), 통신 타워(318), 위성(320), 다른 네트워크(322) 및 네트워킹 디바이스(324)와 통신하는 네트워크(300)를 도시한다. 그런 통신은 직접적이고 그리고/또는 간접적이고, 유선이고 그리고/또는 무선이고, 인크립팅되고 그리고/또는 인크립팅되지 않을 수 있다. 네트워크(302) 및/또는 네트워크(322)는 인터넷을 포함할 수 있다. 다이어그램(300)에 도시된 임의의 엘리먼트들의 1개 초과의 인스턴스(instance)가 포함될 수 있다. 다이어그램(300)에 도시된 임의의 그리고/또는 모든 엘리먼트들은, 유선이든 그리고/또는 무선이든, 임의의 방식으로 다이어그램(300)에 도시된 임의의 그리고/또는 모든 엘리먼트들과 통신할 수 있다. 그런 통신들의 임의의 통신 및/또는 모든 통신은 도 1 및 도 2를 참조하여 설명된 바와 같은 기술을 사용하여 임의의 방식으로 수행될 수 있다. 예컨대, 비트 스트림은 수신되어 제1 방식으로 제1 발진기의 제1 주파수에 따라 파싱되고 제1 방식과 상이한 제2 방식으로 제2 발진기의 제2 주파수에 따라 파싱된다. 제1 발진기 및 제2 발진기의 출력들은 결합되고 네트워크 디바이스들이 포커싱하기 위해 교번적으로 출력하는 문자열들 사이에서 스위칭하는 스위치로서 사용된다. 그런 출력이 네트워크 통신들에 통합될 때, 통신 네트워크 디바이스들 사이의 출력이 동일하지 않으면, 그런 네트워크 통신들은 변화하는 인증/액세스 제어 조건으로 인해 허용되지 않는다.
[0060] 일부 예시적인 실시예들에서, 개시된 기술들은 바이트가 변화하는 것을 가능하게 할 수 있다. 결과적으로, 발진/클록킹 신호는 비트 스트림을 8-비트들, 16-비트들 및/또는 64-비트 증분들로 해석하는 네트워크 디바이스들과 다르게 인코딩하는 길이들을 가진 비트 스트림을 재해석하기 위해 비트 스트림을 다양한 비트 길이들로 파싱함으로써 비트 스트림을 세그먼트화하는 방법의 비트 길이를 변화시킨다. 비트 스트림 증분의 길이는 발진기/클록 주파수에 기반한다. 적어도 2개의 발진기들/클록들은 파싱 또는 비트 분할을 생성하기 위해 제1 발진기/클록 및 파싱을 올바르게 해석하는 제1 클록과 동기하는 제2 발진기/클록과 함께 사용된다. 제1 클록의 주파수를 알지 못하면, 신호의 수신기는 표준 8-비트 파싱을 사용하여 신호를 올바르게 해석할 수 없을 것이다. 따라서, 상이한 주파수들을 가진 한 쌍의 발진기들/클록들이 결합되고 이들의 발진들이 결합될 때, 그런 결합은 랜덤을 나타내지만, 궁극적으로 반복하는 새로운 파형 패턴을 생성한다. 클록들은 원자 클록들, 크리스탈 기반 클록들, 기계 클록들 등일 수 있다. 일부 예시적인 실시예들에서, 그런 기술은 네트워크 디바이스와 무관하게, 더 안전한 네트워크 디바이스 액세스를 생성하기 위해 식별 번호와 결합될 수 있다.
[0061] 도 4는 본 개시내용에 따른 컴퓨터 보안을 향상시키기 위한 방법의 다른 예시적인 실시예의 흐름도를 도시한다. 이 도면의 일부 엘리먼트들은 위에서 설명되어 왔다. 따라서, 동일한 참조 문자들은 위에서 설명된 동일하거나 유사한 컴포넌트들을 식별하고 이의 임의의 반복적인 상세한 설명은 이후 복잡성을 회피하기 위해 생략 또는 단순화될 것이다.
[0062] 프로세스(400)는 블록들(402-416)을 포함한다. 프로세스(400)는 가변 룩업 표들 및/또는 단어 길이를 사용하여 로직을 인코딩 및 디코딩하는 것이다. 프로세스(400)는 이를테면 임의의 하드웨어 레벨 상의 하나 및/또는 그 초과의 회로들에서의 하드웨어 로직, 및/또는 이를테면 하나 및/또는 그 초과의 소프트웨어 애플리케이션들에서의 소프트웨어 로직의 임의의 결합을 통해 구현될 수 있고, 이는 오퍼레이팅 시스템 레벨 아래, 상 및/또는 위에 구현될 수 있다. 프로세스(400)는 요청-응답 컴퓨팅으로 구현될 수 있다. 프로세스(400)는 컴퓨터 보안에 어떠한 관련도 없이, 더 큰 프로세스의 부분일 수 있다. 예컨대, 다양한 기능들은 프로세스(400)의 임의의 하나 및/또는 그 초과의 블록들의 수행 이전, 동안 및/또는 이후에 발생할 수 있다. 대안적으로, 프로세스(400)는 혼자서 수행될 수 있다. 비록 블록들(402-416)이 본원에 설명된 바와 같은 순서로 수행될 수 있지만, 블록들(402-416)은 다른 순서들로 수행될 수 있고, 일부 블록들은 이들의 임의의 순열의 다른 블록들 이전, 동안 및/또는 이후 수행된다. 또한, 프로세스(400)가 적어도 부분적으로 알파뉴메릭 입력, 심볼 입력, 생체인증 입력, 하드웨어 입력 등에 기반할 수 있는 패스워드 입력으로 구현될 수 있다는 것을 주목하라. 그러나, 프로세스(400)는 또한 패스워드들의 사용 없이 구현될 수 있다.
[0063] 블록(402)에서, 복수의 변수들이 제공된다. 그런 제공은 수동이고 그리고/또는 자동이고, 인크립팅되고 그리고/또는 인크립팅되지 않고, 유선이고 그리고/또는 무선이고, 직접적이고 그리고/또는 간접적일 수 있다. 임의의 수의 변수들이 사용될 수 있다는 것을 주목하라. 예컨대, 변수 A, 변수 B 및 변수 C가 제공되고, 여기서 변수 A는 17로 세팅되고, 변수 B는 13으로 세팅되고, 그리고 변수 C는 24로 세팅된다. 변수들이 하나의 진범이지만, 다른 실시예들에서 다른 진법들인 것을 주목하라.
[0064] 블록(404)에서, 룩업 표가 제공된다. 그런 제공은 수동이고 그리고/또는 자동이고, 인크립팅되고 그리고/또는 인크립팅되지 않고, 유선이고 그리고/또는 무선이고, 직접적이고 그리고/또는 간접적일 수 있다. 표는 심볼 라이브러리(library), 이를테면 알파뉴메릭 라이브러리에 대응하는 복수의 십진 값들을 통해 알파뉴메릭 라이브러리를 인덱싱한다. 예컨대, 룩업 표는 아래에 제공된다. 다른 타입들의 룩업 표들 및 상이한 인덱싱 라이브러리들이 이를테면 다른 심볼들, 다른 진법 등을 통해 또한 사용될 수 있다는 것을 주목하라.
Figure pct00001
[0065] 블록(406)에서, 메시지는 룩업 표를 통해 제1 진법으로 변환된다. 그런 변환은 자동이고 임의의 타입의 진법용일 수 있다. 메시지는 이를테면 원격통신들을 위해 수동으로 그리고/또는 자동으로 생성될 수 있다. 메시지는 텍스트이지만, 임의의 타입일 수 있다. 예컨대, 메시지가 hello_world이면, 룩업 표를 통해, 메시지는 h=8, e=5, l=12, l=12, o=15, _=27, w=23, o=15, r=18, l=12, d=4이도록 십진법으로 변환된다.
[0066] 블록(408)에서, 제1 진법을 통해 나타낸 바와 같은 메시지는 제1 진법과 상이한 제2 진법으로 변환된다. 그런 변환은 직접적이든 그리고/간접적이든 자동이고, 16진수 같은 임의의 타입의 진법용일 수 있다. h=8, e=5, l=12, l=12, o=15, _=27, w=23, o=15, r=18, l=12, d=4인 위의 예를 사용하면, 그런 값들은 십진법과 상이한 이진법으로 변환된다. 그러므로, 8 비트 문자열들을 사용하면, 변환은 h=8에 대해 0000 1000, e=5에 대해 0000 0101, l=12에 대해 0000 1100, l=12에 대해 0000 1100, o=15에 대해 0000 1111, _=27에 대해 0001 1011, w=23에 대해 0001 0111, o=15에 대해 0000 1111, r=18에 대해 0001 0010, l=12에 대해 0000 1100 및 d=4에 대해 0000 0100을 초래한다. 문자열들이 또한 다른 비트 사이즈들, 이를테면 4개, 16개 등일 수 있다.
[0067] 블록(410)에서, 제2 진법을 통해 나타낸 메시지는 문자 시퀀스에 결합된다. 그런 결합은, 직접적이든 그리고/또는 간접적이든 자동이다. 문자열들 0000 1000, 0000 0101, 0000 1100, 0000 1100, 0000 1111, 0001 1011, 0001 0111, 0000 1111, 0001 0010, 0000 1100, 0000 0100을 포함하는 위의 예를 사용하면, 문자열들은 문자 시퀀스 00001000000001010000110000001100000011110001101100010111 00001111000100100000110000000100에 결합된다.
[0068] 블록(412)에서, 블록(402)으로부터의 변수들 중 적어도 2개를 교번에 의한 세그먼트화를 통해 복수의 서브시퀀스들이 생성된다. 그런 생성은, 직접적이든 그리고/또는 간접적이든 자동이다. 시퀀스 00001000000001010000110000001100000011110001101100010111 00001111000100100000110000000100를 포함하고 그리고 변수 A가 17로 세팅되고 변수 B가 13으로 세팅된 위의 예들을 사용하면, 스트림을 세그먼트화하기 위해 변수들을 교번하는 것을 통해 서브시퀀스들이 생성된다.
[0069] 그러므로, 시퀀스 00001000000001010000110000001100000011110001101100010111 00001111000100100000110000000100는 교번 변수 A 및 변수 B를 통해 세그먼트화되어, 서브시퀀스들은 교번을 통해 생성되고 대응하여 변수 A 및 변수 B에 기반한 교번에 따라 사이즈가 정해진다. 결과적으로, 서브시퀀스들은 0000 1000 0000 01010(변수 A에 따른 17 비트들), 0001 1000 00011(변수 B에 따른 13 비트들), 0000 0011 1100 01101(변수 A에 따른 17 비트들), 1000 1011 10000(변수 B에 따른 13 비트들), 1111 0001 0010 00001(변수 A에 따른 17 비트들), 및 1000 0000 100(변수 B에 따른 11 비트들)이다.
[0070] 블록(414)에서, 서브시퀀스들은 위에서 설명된 바와 같이, 블록(402)을 통해 제공되고, 이미 사용된 변수들과 상이한 변수들 중 적어도 하나를 사용하여 다른 서브시퀀스들로 변환된다. 변수들 중 적어도 하나의 값이 이미 사용된 변수들과 상이함으로 인해, 그런 변환은 다른 서브시퀀스들이 블록(412)을 통해 생성된 서브시퀀스들과 상이한 길이를 가지게 한다. 그런 변환은, 직접적이든 그리고/또는 간접적이든 자동이다.
[0071] 서브시퀀스들 0000 1000 0000 01010, 0001 1000 00011, 0000 0011 1100 01101, 1000 1011 10000, 1111 0001 0010 00001, 및 1000 0000 100이 변수 A 및 변수 B에 기반하는 위의 예를 사용하면, 그런 서브시퀀스들은 24로 세팅된 변수 C를 사용하여 다른 서브시퀀스들로 변환된다. 변환은 변수 C와 서브시퀀스들 각각의 길이 사이의 차이에 기반한다. 예컨대, 변수 C에 기반한 24 비트 서브시퀀스로의 변수 A에 기반한 17 비트 서브시퀀스의 변환은 7 비트들을 17 비트 서브시퀀스에 부가하는 것을 통해 총 24 비트 서브시퀀스가 되도록 하여 수행된다. 마찬가지로, 변수 C에 기반한 24 비트 서브시퀀스로의 변수 B에 기반한 13 비트 서브시퀀스의 변환은 11 비트들을 13 비트 서브시퀀스에 부가하는 것을 통해 총 24 비트 서브시퀀스가 되도록 하여 수행된다. 그러므로, 다른 서브시퀀스들은 블록(412)을 통해 생성된 서브시퀀스들과 상이한 비트 길이들을 초래한다. 결과적으로, 변수 C와 구(old) 서브시퀀스들, 이를테면 17 또는 13의 관련 문자열 길이 사이의 차이에 대응하는 비트들을 부가하는 것을 통해 변환된 바와 같이, 다른 서브시퀀스들은 0000 0000 0001 0000 0000 1010, 0000 0000 0000 0011 0000 0011, 0000 0000 0000 1111 1000 1101, 0000 0000 0001 0001 0111 0000, 0000 0001 1110 0010 0100 0001, 및 0000 0000 0000 0100 0000 0100이다. 다른 실시예들에서, 적어도 하나의 변수가 이미 사용된 변수들 중 적어도 하나와 상이하지 않다는 것을 주목하라.
[0072] 블록(416)에서, 다른 서브시퀀스들이 송신된다. 그런 송신은 수동이고 그리고/또는 자동이고, 직접적이고 그리고/또는 간접적이고, 무선이고 그리고/또는 유선이고, 인크립팅되고 그리고/또는 인크립팅되지 않을 수 있다.
[0073] 프로세스(400)에 기반한 디코딩의 경우, 위의 예들을 사용하면, 수신된 스트림 000000000001000000001010000000000000001100000011000000000000 111110001101000000000001000101110000000000011110001001000001000000000000010000000100에서 시작된다. 이어서, 수신된 스트림은 24인 변수 C에 기반한 단어 길이로 변환된다. 그런 변환은 0000 0000 0001 0000 0000 1010, 0000 0000 0000 0011 0000 0011, 0000 0000 0000 1111 1000 1101, 0000 0000 0001 0001 0111 0000, 0000 0001 1110 0010 0100 0001, 및 0000 0000 0000 0100 0000 0100을 초래한다. 이어서, 변수들 A 및 B를 사용하면, 각 단어로부터 부가된 비트들이 삭제되고, 이는 0000 1000 0000 01010, 0001 1000 00011, 0000 0011 1100 01101, 1000 1011 10000, 1111 0001 0010 00001, 1000 0000 100을 초래한다. 이어서, 임의의 임의의 분리를 제거하고, 이는 000010000000010100001100000011000 0001111000110110001011100001111000100100000110000000100을 초래한다. 이어서, 스트림을 8 비트 단어들로 세그먼트화하고, 이는 0000 1000, 0000 0101, 0000 1100, 0000 1100, 0000 1111, 0001 1011, 0001 0111, 0000 1111, 0001 0010, 0000 1100, 0000 0100을 초래한다. 이어서, 단어들을 십진 등가물로 변환하고, 이는 8, 5, 12, 12, 15, 27, 23, 15, 18, 12, 4를 초래한다. 이어서, 룩업 표를 사용하여 hello_world로 대체한다.
가변 단어-길이 인코딩
[0076] 부가된 보안 외에, 가변 단어 길이 인코딩은 인코딩에 사용될 수 있다. 일부 경우들에서, 가변 단어 길이 인코딩은 더 효과적이거나 더 높은 해상도 인코딩에 사용될 수 있다. 당업자에 의해 이해될 바와 같이, 이진 단어는 예컨대, 단위, 숫자, 글자 또는 심볼을 함께 나타내는 비트들의 모음이다. 일부 애플리케이션들에서, 더 짧은 단어 길이들은 해상도가 불충분할 수 있지만, 더 긴 단어 길이들은 주어진 임무를 달성하기 위해 과도한 프로세싱 능력 및 저장 용량을 요구할 수 있다. 일부 경우들에서, 가변 단어 길이 인코딩은 이들 및 다른 제한들을 처리할 수 있다.
[0077] 도 5는 본 개시내용에 따른 가변 단어 길이 인코딩의 예시적인 실시예의 흐름도를 도시한다. 프로세스(500)는 블록들(502-510)을 포함한다. 프로세스(500)는 가변 룩업 표들 및/또는 단어 길이를 사용하여 로직을 인코딩 및 디코딩하는 것이다. 프로세스(500)는 이를테면 임의의 하드웨어 레벨 상의 하나 및/또는 그 초과의 회로들에서의 하드웨어 로직, 및/또는 이를테면 하나 및/또는 그 초과의 소프트웨어 애플리케이션들에서의 소프트웨어 로직의 임의의 결합을 통해 구현될 수 있고, 이는 오퍼레이팅 시스템 레벨 아래, 상 및/또는 위에 구현될 수 있다. 프로세스(500)는 요청-응답 컴퓨팅으로 구현될 수 있다. 프로세스(500)는 컴퓨터 보안에 어떠한 관련도 없이, 더 큰 프로세스의 부분일 수 있다. 예컨대, 다양한 기능들은 프로세스(500)의 임의의 하나 및/또는 그 초과의 블록들의 수행 이전, 동안 및/또는 이후에 발생할 수 있다. 대안적으로, 프로세스(500)는 혼자서 수행될 수 있다. 비록 블록들(502-510)이 본원에 설명된 바와 같은 순서로 수행될 수 있지만, 일부 경우들에서, 블록들(502-510)은 다른 순서들로 수행될 수 있고, 일부 블록들은 이들의 임의의 순열의 다른 블록들 이전, 동안 및/또는 이후 수행된다.
[0078] 블록(502)에서, 디폴트 단어 길이가 결정된다. 그런 결정은 수동(예컨대, 사용자에 의해 세팅됨) 및/또는 자동(예컨대, 프로세서에 의해 결정됨)일 수 있다. 일부 경우들에서, 디폴트 단어 길이는 프로그램을 위해 세팅될 수 있다. 예컨대, 디폴트 단어 길이는 제한 없이, 8 비트들, 16 비트들 또는 24 비트들일 수 있다.
[0079] 블록(504)에서, 디폴트 단어 길이의 이진 단어들은 디폴트 단어 길이 모드에서 출력될 수 있다. 예컨대, 디폴트 단어 길이가 8개인 경우에, ASCII(American Standard Code for Information Interchange) 표의 문자들이 출력일 수 있다.
[0080] 블록(506)에서, 디폴트 단어 길이의 미리결정된 이진 전이(transition) 단어는 가변 단어 길이 모드로의 전이를 표시하기 위해 출력될 수 있다. 예컨대, ASCII 문자들이 디폴트 단어 길이 모드 동안 출력되는 경우에, ASCII 표에 사용되지 않는 십진수 141은 가변 단어 길이 모드로의 전이를 표시하기 위해 출력될 수 있다.
[0081] 블록(508)에서, 다음 비트 스트림의 단어 길이를 나타내는 전이 단어 다음의 이진 길이 단어가 출력될 수 있다. 일부 경우들에서, 길이 단어는 다음 비트 스트림의 단어 길이를 명시적으로 특정할 수 있는데, 즉 길이 단어는 다음 비트 스트림의 단어 길이의 번호이거나, 또는 대표적으로 예컨대 단어-길이들을 표시하는 표를 참조한다.
[0082] 블록(510)에서, 표시된 단어 길이의 단어들의 비트 스트림은 각각의 단어의 시작부에 부가적인 플래그(flag) 비트와 함께 출력된다. 플래그 비트는, 다음 단어가 스트림 내의 단어인지 단어 길이의 변화인지를 표시할 수 있다. 예컨대, 플래그 비트가 0일 때, 다음 단어는 스트림 내의 단어이고, 플래그 비트가 1일 때, 다음 단어는 다른 길이 단어일 수 있다. 길이 단어가 종료(exit) 단어, 예컨대 모두 제로들이면, 모드는 디폴트 단어 길이 모드로 전이할 수 있다. 그러나, 이는 단지 예이다. 일부 경우들에서, 플래그 비트가 1인 것은, 다음 단어가 다른 길이 단어인 것을 나타낼 수 있다. 다른 경우들에서, 플래그 비트가 1인 것은 디폴트 단어 길이 모드로의 전이를 나타낼 수 있고, 현재 단어 또는 다음 단어는 실시예에 따라 디폴트 단어 길이일 수 있다.
[0083] 비-제한적 예로서, 디폴트 단어 길이가 ASCII 문자들을 나타내는 8 비트들인 경우를 고려하면, 전이 단어는 십진수 141이고, 길이 단어는 16 비트 길이이고 다음 비트 스트림의 단어 길이를 명시적으로 표시하고, 그리고 1의 플래그 비트는, 다음 단어가 다른 길이 단어인 것을 표시한다. 이 예에서, 2개의 ASCII 문자들, 3개의 4-비트 단어들, 2개의 5 비트 단어들, 및 3개 이상의 ASCII 문자들이 출력된다. 그 경우에 대한 예시적인 출력들은 아래 표 1에 예시된다:
Figure pct00002
[0084] 도 6은 본 개시내용에 따른 가변 단어 길이 인코딩의 다른 예시적인 실시예의 흐름도를 도시한다. 프로세스(600)는 블록들(602-610)을 포함한다. 프로세스(600)는 가변 룩업 표들 및/또는 단어 길이를 사용하여 로직을 인코딩 및 디코딩하는 것이다. 프로세스(600)는 이를테면 임의의 하드웨어 레벨 상의 하나 및/또는 그 초과의 회로들에서의 하드웨어 로직, 및/또는 이를테면 하나 및/또는 그 초과의 소프트웨어 애플리케이션들에서의 소프트웨어 로직의 임의의 결합을 통해 구현될 수 있고, 이는 오퍼레이팅 시스템 레벨 아래, 상 및/또는 위에 구현될 수 있다. 프로세스(600)는 요청-응답 컴퓨팅으로 구현될 수 있다. 프로세스(600)는 컴퓨터 보안에 어떠한 관련도 없이, 더 큰 프로세스의 부분일 수 있다. 예컨대, 다양한 기능들은 프로세스(600)의 임의의 하나 및/또는 그 초과의 블록들의 수행 이전, 동안 및/또는 이후에 발생할 수 있다. 대안적으로, 프로세스(600)는 혼자서 수행될 수 있다. 비록 블록들(602-610)이 본원에 설명된 바와 같은 순서로 수행될 수 있지만, 일부 경우들에서, 블록들(602-610)은 다른 순서들로 수행될 수 있고, 일부 블록들은 이들의 임의의 순열의 다른 블록들 이전, 동안 및/또는 이후 수행된다.
[0085] 블록(602)에서, 디폴트 단어 길이가 결정된다. 그런 결정은 수동(예컨대, 사용자에 의해 세팅됨) 및/또는 자동(예컨대, 프로세서에 의해 결정됨)일 수 있다. 일부 경우들에서, 디폴트 단어 길이는 프로그램을 위해 세팅될 수 있다. 예컨대, 디폴트 단어 길이는 제한 없이, 8 비트들, 16 비트들 또는 24 비트들일 수 있다.
[0086] 블록(604)에서, 디폴트 단어 길이의 이진 단어들은 디폴트 단어 길이 모드에서 출력될 수 있다. 예컨대, 디폴트 단어 길이가 8개인 경우에, ASCII(American Standard Code for Information Interchange) 표의 문자들이 출력일 수 있다.
[0087] 블록(606)에서, 디폴트 단어 길이의 미리결정된 이진 전이 단어는 가변 단어 길이 모드로의 전이를 표시하기 위해 출력될 수 있다. 예컨대, ASCII 문자들이 디폴트 단어 길이 모드 동안 출력되는 경우에, ASCII 표에 사용되지 않는 십진수 143은 가변 단어 길이 모드로의 전이를 표시하기 위해 출력될 수 있다.
[0088] 블록(608)에서, 단어들의 비트 스트림은 단어의 길이를 표시하는 각각의 단어의 시작부에 키(key)와 함께 출력된다. 키는 임의의 수의 비트들, 예컨대 3일 수 있고, 특정된 단어 길이들에 매핑할 수 있다. 일부 경우들에서, 키는 불변일 수 있다. 일부 경우들에서, 헤더(header)는 키를 표시할 수 있다. 예컨대, 헤더는 2개의 비트 키에 대응하는 단어-길이 값들을 표시할 수 있다.
[0089] 블록(610)에서, 종료 단어는 다시 디폴트 단어 길이 모드로의 전이를 표시하는 출력일 수 있다. 예컨대, ASCII 문자들이 디폴트 단어 길이 모드 동안 출력되는 경우에, 키가 8 비트 단어를 표시할 때, ASCII 표에 사용되지 않는 십진수 143은 가변 단어 길이 모드로의 전이를 표시하기 위해 출력될 수 있다.
[0090] 비-제한적 예로서, 디폴트 단어 길이가 ASCII 문자들을 나타내는 8 비트들인 경우를 고려하면, 전이 단어는 십진수 142이고, 종료 단어는 8 비트 단어의 십진수 143이고, 그리고 키는 하기 키를 사용하는 3개의 비트들이다:
Figure pct00003
이 예에서, 2개의 ASCII 문자들, 1개의 64-비트 단어, 2개의 16 비트 단어들, 및 3개 이상의 ASCII 문자들이 출력된다. 그 경우에 대한 예시적인 출력들은 아래 표 2에 예시된다:
Figure pct00004
[0091] 일부 경우들에서, 키는 단어의 길이를 표시하는 각각의 단어의 시작부에 부가될 수 있고, 디폴트 단어 길이는 결정되지 않을 수 있다. 다른 단어들에서, 모든 단어는 단어의 길이를 표시하는 키를 가진다. 도 6을 참조하여 위에서 논의된 실시예에서처럼, 키는 임의의 수의 비트들일 수 있다.
[0092] 비-제한적 예로서, 키가 하기 키를 사용하여 3개의 비트들인 경우를 고려하자:
Figure pct00005
이 예에서, 2개의 8 비트 문자들, 1개의 64 비트 단어, 2개의 16 비트 단어들, 및 3개 이상의 8 비트 문자들이 출력된다. 그 경우에 대한 예시적인 출력들은 아래 표 3에 예시된다:
Figure pct00006
표 3을 표 2와 비교함으로써 알 수 있는 바와 같이, 일부 실시예들에서, 디폴트 단어 길이 모드가 존재하지 않기 때문에, 어떠한 전이 단어 또는 종료 단어도 가변 단어 길이 모드로의 전이에 사용되지 않는다.
[0093] 일부 경우들에서, 2진 길이 단어는 단어들의 각각의 시퀀스 이전에 다음 비트 스트림의 단어 길이를 나타낼 수 있고, 부가적인 플래그 비트는, 다음 단어가 스트림 내의 단어인지 단어 길이의 변화인지를 표시하기 위해 각각의 단어의 시작부에 포함될 수 있다. 도 5를 참조하여 위에서 논의된 실시예에서와 같이, 길이 단어는 다음 비트 스트림의 단어 길이를 명시적으로 특정할 수 있는데, 즉 길이 단어는 다음 비트 스트림의 단어 길이의 번호이거나, 또는 대표적으로 예컨대 단어-길이들을 표시하는 표를 참조한다.
[0094] 비-제한적 예로서, 길이 단어가 16 비트 길이이고 다음 비트 스트림의 단어 길이를 명시적으로 표시하고, 그리고 1의 플래그 비트가, 다음 단어가 다른 길이 단어인 것을 표시하는 경우를 고려하자. 이 예에서, 2개의 8-비트 단어들, 3개의 4-비트 단어들, 2개의 5 비트 단어들, 및 3개 이상의 8-비트 단어들이 출력된다. 그 경우에 대한 예시적인 출력들은 아래 표 4에 예시된다:
Figure pct00007
표 4를 표 1과 비교함으로써 알 수 있는 바와 같이, 일부 실시예들에서, 디폴트 단어 길이 모드가 존재하지 않기 때문에, 어떠한 전이 단어도 가변 단어 길이 모드로의 전이에 사용되지 않는다.
[0095] 가변 단어 길이 인코딩의 사용에 기반하여, 비트 스트림들은 더 빠르게 송신 및 프로세싱될 수 있고, 파일 사이즈들은 더 작을 수 있고, 그리고 필요한 경우 더 높은 해상도가 제공될 수 있다. 일부 경우들에서, 디폴트 단어 길이는 사전에 세팅될 수 있다. 일부 경우들에서, 파일은 스캐닝될 수 있고, 그리고 단어 길이들, 이를테면 디폴트 단어 길이들은 압축을 개선하도록 세팅될 수 있다. 일부 경우들에서, 파일은 스캐닝될 수 있고 디폴트 단어 길이 및 가변 단어 길이들은 최적화될 수 있다. 일부 경우들에서, 디폴트 단어 길이는 세팅되지 않을 수 있고, 그리고 인코딩은 가변 단어 길이 모드에서만 수행될 수 있다.
[0096] 당업자들에 의해 인식될 바와 같이, 본 개시내용의 양상들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 개시내용의 양상들은, 모두가 일반적으로 본원에서 "회로", "모듈" 또는 "시스템"으로 지칭될 수 있는 완전히 하드웨어 실시예, 완전히 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함) 또는 소프트웨어 및 하드웨어 양상들을 결합한 실시예의 형태를 취할 수 있다. 추가로, 본 개시내용의 양상들은 컴퓨터 판독가능 프로그램 코드가 구현되어 있는 하나 이상의 컴퓨터 판독가능 매체(들)로 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
[0097] 하나 이상의 컴퓨터 판독가능 매체(들)의 임의의 결합이 활용될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체 또는 컴퓨터 판독가능 저장 매체(비-일시적 컴퓨터 판독가능 저장 매체들(그러나 이에 제한되지 않음)을 포함함)일 수 있다. 컴퓨터 판독가능 저장 매체는 예컨대 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치 또는 디바이스, 또는 상기의 임의의 적절한 조합(그러나 이로 제한되지 않음)일 수 있다. 컴퓨터 판독가능 저장 매체의 더 구체적 예들(완전한 리스트가 아님)은 하나 이상의 와이어들을 가진 전기 연결부, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM(random access memory), ROM(read-only memory), EPROM(erasable programmable read-only memory) 또는 플래시 메모리, 광섬유, CD-ROM(portable compact disc read-only memory), 광학 저장 디바이스, 자기 저장 디바이스, 또는 상기의 임의의 적절한 조합을 포함할 것이다. 본 문서의 맥락에서, 컴퓨터 판독가능 저장 매체는 명령 실행 시스템, 장치 또는 디바이스에 의해 사용하거나 관련된 프로그램을 포함하거나, 저장할 수 있는 임의의 유형의 매체일 수 있다.
[0098] 컴퓨터 판독가능 신호 매체는 예컨대 기저대역 또는 반송파의 부분으로서 컴퓨터 판독가능 프로그램 코드가 구현되어 있는 전파된 데이터 신호를 포함할 수 있다. 그런 전파된 신호는 전자-자기, 광학, 또는 이들의 임의의 적절한 조합(그러나 이에 제한되지 않음)을 포함하는 다양한 형태들 중 임의의 형태를 취할 수 있다. 컴퓨터 판독가능 신호 매체는 컴퓨터 판독가능 저장 매체가 아니며 명령 실행 시스템, 장치 또는 디바이스에 의해 사용하거나 관련된 프로그램을 통신, 전파 또는 운반할 수 있는 임의의 컴퓨터 판독가능 매체일 수 있다.
[0100] 컴퓨터 판독가능 매체 상에 구현된 프로그램 코드는 무선, 유선, 광섬유 케이블, RF 등 또는 상기의 임의의 적절한 조합(그러나 이에 제한되지 않음)을 포함하는 임의의 적합한 매체를 사용하여 송신될 수 있다.
[0101] 본 개시내용의 양상들에 대한 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 객체 지향 프로그래밍 언어, 이를테면 자바, Smalltalk, C++ 등 및 종래의 절차 프로그래밍 언어들, 이를테면 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들을 포함하는 하나 이상의 프로그래밍 언어들의 임의의 조합으로 쓰여질 수 있다. 다른 타입들의 언어들은 XML, XBRL 및 HTML5를 포함한다. 프로그램 코드는 사용자의 컴퓨터 상에서 완전히, 사용자의 컴퓨터 상에서 부분적으로, 독립형 소프트웨어 패키지로서, 사용자의 컴퓨터 상에서 부분적으로 및 원격 컴퓨터 상에서 부분적으로 또는 원격 컴퓨터 또는 서버 상에서 완전히 실행될 수 있다. 추후 시나리오에서, 원격 컴퓨터는 LAN(local area network) 또는 WAN(wide area network)을 포함하는 임의의 타입의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, 또는 연결은 외부 컴퓨터(예컨대, 인터넷 서비스 제공자를 사용하여 인터넷을 통해)에 대해 이루어질 수 있다.
[0102] 본 개시내용의 양상들은 본 개시내용의 실시예들에 따른 방법들, 장치(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도 예시들 및/또는 블록 다이어그램들을 참조하여 아래에서 설명된다. 흐름도 예시들 및/또는 블록 다이어그램들의 각각의 블록, 및 흐름도 예시들 및/또는 블록 다이어그램들의 블록들의 조합이 컴퓨터 판독가능 프로그램 명령들에 의해 구현될 수 있다. 이들 컴퓨터 프로그램 명령들은 기계를 생성하기 위한 범용 컴퓨터, 특수 목적 컴퓨터, 또는 다른 프로그램가능 데이터 프로세싱 장치의 프로세서에 제공될 수 있어서, 컴퓨터의 프로세서 또는 다른 프로그램가능 데이터 프로세싱 장치를 통하여 실행되는 명령들은 흐름도 및/또는 블록 다이어그램 블록 또는 블록들에 특정된 기능들/동작들을 구현하기 위한 수단을 생성한다.
[0103] 이들 컴퓨터 프로그램 명령들은 또한 컴퓨터, 다른 프로그램가능 데이터 프로세싱 장치, 또는 특정 방식으로 기능하기 위한 다른 디바이스들에 지시할 수 있는 컴퓨터 판독가능 매체에 저장될 수 있어서, 컴퓨터 판독가능 매체에 저장된 명령들은 흐름도 및/또는 블록 다이어그램 블록 또는 블록들에 특정된 기능/동작을 구현하는 명령들을 포함하는 제조 물품을 생산한다.
[0104] 컴퓨터 프로그램 명령들은 또한, 컴퓨터, 다른 프로그램가능 장치 또는 다른 디바이스들 상에서 수행될 일련의 동작 단계들이 컴퓨터 구현 프로세스를 생성하게 하도록 컴퓨터, 다른 프로그램가능 데이터 프로세싱 장치, 또는 다른 디바이스들 상에 로딩될 수 있어서, 컴퓨터 또는 다른 프로그램가능 장치 상에서 실행하는 명령들은 흐름도 및/또는 블록 다이어그램 블록 또는 블록들에 특정된 기능들/행동들을 구현하기 위한 프로세스들을 제공한다.
[0105] 도면들의 흐름도 및 블록 다이어그램들은 본 개시내용의 다양한 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능성 및 동작을 예시한다. 이에 관하여, 흐름도 또는 블록 다이어그램들의 각각의 블록은 특정 로지컬 기능(들)을 구현하기 위한 하나 이상의 실행가능 명령들을 포함하는 모듈, 세그먼트, 또는 명령들의 부분을 나타낼 수 있다. 몇몇 대안적인 구현들에서, 블록에서 주목되는 기능들이 도면들에서 주목되는 순서를 벗어나 발생할 수 있다는 것이 또한 주목되어야 한다. 예컨대, 포함된 기능성에 따라, 연속적으로 도시된 2개의 블록들은 실제로 실질적으로 동시에 실행될 수 있거나 또는 블록들은 때때로 역 순서로 실행될 수 있다. 블록 다이어그램들 및/또는 흐름도 예시의 각각의 블록, 및 블록 다이어그램들 및/또는 흐름도 예시의 블록들의 조합들은 특정 기능들 또는 활동들을 수행하는 특수 목적 하드웨어-기반 시스템들, 또는 특수 목적 하드웨어 및 컴퓨터 명령들의 조합들에 의해 구현될 수 있다.
[0106] 아래 청구항들에서 모든 수단 또는 단계 및 기능 엘리먼트들의 대응하는 구조들, 재료들, 동작들, 및 등가물들은 특정하게 청구된 바와 같은 다른 청구된 엘리먼트들과 결합하여 기능을 수행하기 위하여 임의의 구조, 재료, 또는 활동을 포함하도록 의도된다. 본 개시내용의 설명은 예시 및 설명의 목적들을 위하여 제시되었지만, 개시된 형태의 개시내용으로 포괄적으로 또는 제한되도록 의도되지 않는다. 많은 수정들 및 변형들은 본 개시내용의 범위 및 사상에서 벗어나지 않고 당업자들에게 명백할 것이다. 실시예는 본 개시내용의 원리들 및 실제 응용을 가장 잘 설명하고, 그리고 고려된 특정 용도에 적당한 바와 같은 다양한 수정들을 가진 다양한 실시예들에 대해 다른 당업자들이 본 개시내용을 이해할 수 있게 하기 위하여 선정되고 설명되었다.
[0107] 본원에 도시된 흐름 다이어그램들은 단지 일 예이다. 본 개시내용의 사상으로부터 벗어나지 않고 본원에 설명된 이 다이어그램 또는 단계들(또는 동작들)에 대한 많은 변형들이 있을 수 있다. 예컨대, 단계들은 상이한 순서로 수행될 수 있고 그리고/또는 단계들은 부가, 삭제 및/또는 수정될 수 있다. 이들 변형들 모두는 청구된 개시내용의 부분으로 고려된다.
[0108] 본 개시내용에 대한 바람직한 실시예가 설명되었지만, 당업자들은 현재 및 미래 둘 다에서 이하의 청구항들의 범위 내에 속하는 다양한 개선들 및/또는 향상들을 만들 수 있다. 이들 청구항들은 처음에 설명된 본 개시내용에 대해 적당한 보호를 유지하는 것으로 이해되어야 한다.

Claims (83)

  1. 데이터를 안전하게 송신하는 방법으로서,
    값들의 제1 시퀀스를 포함하는 인크립팅되지 않은(unencrypted) 데이터 스트림을 획득하는 단계;
    상기 값들의 제1 시퀀스의 제1 부분을 제1 변수와 동일한 단어-길이를 가진 본래의 제1 단어로 세그먼트화(segmenting)하는 단계;
    상기 값들의 제1 시퀀스의 제2 부분을 상기 제1 변수와 상이한 제2 변수와 동일한 단어-길이를 가진 본래의 제2 단어로 세그먼트화하는 단계;
    수정된 제1 단어 및 제2 단어를 생성하기 위해 상기 본래의 제1 단어 및 상기 본래의 제2 단어의 미리결정된 위치들에 랜덤(random) 값들을 삽입하는 단계 ― 상기 수정된 제1 단어 및 상기 수정된 제2 단어는 상기 제1 변수 및 상기 제2 변수와 상이한 제3 변수와 동일한 단어-길이를 가짐 ―; 및
    상기 수정된 제1 단어 및 상기 수정된 제2 단어를 인크립팅된 데이터 스트림을 정의하는 값들의 제2 시퀀스로 결합하는 단계를 포함하는,
    데이터를 안전하게 송신하는 방법.
  2. 제1 항에 있어서,
    상기 값들의 제1 시퀀스의 각각의 값은 이진 값인,
    데이터를 안전하게 송신하는 방법.
  3. 제1 항에 있어서,
    상기 값들의 제1 시퀀스의 각각의 값은 16진수 값인,
    데이터를 안전하게 송신하는 방법.
  4. 제1 항에 있어서,
    상기 방법은 상기 인크립팅되지 않은 데이터 스트림을 생성한 컴퓨터와 상이한 원격 컴퓨터에 의해 수행되는,
    데이터를 안전하게 송신하는 방법.
  5. 제1 항에 있어서,
    상기 인크립팅된 데이터 스트림을 목적지 디바이스에 송신하는 단계를 더 포함하는,
    데이터를 안전하게 송신하는 방법.
  6. 제5 항에 있어서,
    상기 제1 변수, 상기 제2 변수 및 제3 변수는 상기 목적지 디바이스에 알려지는,
    데이터를 안전하게 송신하는 방법.
  7. 제1 항에 있어서,
    상기 제1 변수, 상기 제2 변수 및 상기 제3 변수는 시간의 함수로서 변화하는,
    데이터를 안전하게 송신하는 방법.
  8. 제1 항에 있어서,
    상기 인크립팅된 데이터 스트림을 디크립팅하는 단계를 더 포함하고, 상기 디크립팅하는 단계는:
    상기 값들의 제2 시퀀스를 포함하는 상기 인크립팅된 데이터 스트림을 획득하는 단계;;
    상기 값들의 제2 시퀀스의 적어도 일부를 상기 수정된 제1 단어 및 상기 수정된 제2 단어로 세그먼트화하는 단계 ― 상기 수정된 제1 단어 및 상기 수정된 제2 단어는 상기 제3 변수와 동일한 단어-길이를 가짐 ―;
    상기 제1 변수와 동일한 단어-길이를 가진 상기 본래의 제1 단어 및 상기 제2 변수와 동일한 단어-길이를 가진 상기 본래의 제2 단어를 생성하기 위해 상기 수정된 제1 단어 및 상기 수정된 제2 단어의 미리 결정된 위치들에 있는 값들을 제거하는 단계;
    상기 본래의 제1 단어 및 상기 본래의 제2 단어를 상기 인크립팅되지 않은 데이터 스트림을 정의하는 상기 값들의 제1 시퀀스로 결합하는 단계를 포함하는,
    데이터를 안전하게 송신하는 방법.
  9. 데이터를 디크립팅하는 방법으로서,
    값들의 제2 시퀀스를 포함하는 인크립팅된 데이터 스트림을 획득하는 단계;
    상기 값들의 제2 시퀀스의 적어도 일부를 수정된 제1 단어 및 수정된 제2 단어로 세그먼트화하는 단계 ― 상기 수정된 제1 단어 및 상기 수정된 제2 단어는 제3 변수와 동일한 단어-길이를 가짐 ―;
    제1 변수와 동일한 단어-길이를 가진 본래의 제1 단어 및 제2 변수와 동일한 단어-길이를 가진 본래의 제2 단어를 생성하기 위해 상기 수정된 제1 단어 및 상기 수정된 제2 단어의 미리 결정된 위치들에 있는 값들을 제거하는 단계;
    상기 본래의 제1 단어 및 상기 본래의 제2 단어를 인크립팅되지 않은 데이터 스트림을 정의하는 값들의 제1 시퀀스로 결합하는 단계를 포함하는,
    데이터를 디크립팅하는 방법.
  10. 제9 항에 있어서,
    상기 값들의 제1 시퀀스의 각각의 값은 이진 값인,
    데이터를 디크립팅하는 방법.
  11. 제9 항에 있어서,
    상기 값들의 제1 시퀀스의 각각의 값은 16진수 값인,
    데이터를 디크립팅하는 방법.
  12. 제9 항에 있어서,
    상기 인크립팅되지 않은 데이터 스트림을 원격 컴퓨터에 송신하는 단계를 더 포함하는,
    데이터를 디크립팅하는 방법.
  13. 제9 항에 있어서,
    상기 인크립팅된 데이터 스트림을 소스 디바이스로부터 수신하는 단계를 더 포함하는,
    데이터를 디크립팅하는 방법.
  14. 제13 항에 있어서,
    상기 제1 변수, 상기 제2 변수 및 제3 변수는 상기 소스 디바이스에 알려지는,
    데이터를 디크립팅하는 방법.
  15. 제9 항에 있어서,
    상기 제1 변수, 상기 제2 변수 및 상기 제3 변수는 시간의 함수로서 변화하는,
    데이터를 디크립팅하는 방법.
  16. 방법으로서,
    데이터의 제1 부분을 디폴트 제1 단어 길이를 가진 적어도 하나의 제1 데이터 단어로 파싱(parsing)하는 단계;
    디폴트 단어 길이 모드에서, 상기 적어도 하나의 제1 데이터 단어를 출력하는 단계;
    가변 단어 길이 모드로 전이(transitioning)하는 것을 표시하는 전이 단어를 출력하는 단계;
    상기 전이 단어 이후, 제2 단어 길이를 표시하는 제1 단어 길이 단어를 출력하는 단계;
    상기 데이터의 제2 부분을 상기 제2 단어 길이를 가진 적어도 하나의 제2 데이터 단어로 파싱하는 단계; 및
    상기 제1 단어 길이 단어 이후, 상기 제2 단어 길이를 가진 상기 적어도 하나의 제2 데이터 단어를 출력하는 단계를 포함하는,
    방법.
  17. 제16 항에 있어서,
    상기 적어도 하나의 제2 데이터 단어의 각각에 대응하는 개별 플래그(flag) 비트를 출력하는 단계를 더 포함하고, 상기 개별 플래그 비트는, 상기 적어도 하나의 제2 데이터 단어의 대응하는 제2 데이터 단어가 상기 적어도 하나의 제2 데이터 단어의 최종 제2 데이터 단어인지를 표시하는,
    방법.
  18. 제17 항에 있어서,
    상기 대응하는 제2 데이터 단어가 상기 적어도 하나의 제2 데이터 단어의 최종 제2 데이터 단어인 것을 개별 플래그 비트가 표시한 이후, 제3 단어 길이를 표시하는 제2 단어 길이 단어를 출력하는 단계;
    데이터의 제3 부분을 상기 제3 단어 길이를 가진 적어도 하나의 제3 데이터 단어로 파싱하는 단계; 및
    상기 제2 단어 길이 단어 이후, 상기 제3 단어 길이를 가진 적어도 하나의 제3 데이터 단어를 출력하는 단계를 더 포함하는,
    방법.
  19. 제17 항에 있어서,
    상기 대응하는 제2 데이터 단어가 상기 적어도 하나의 제2 데이터 단어의 최종 제2 데이터 단어인 것을 개별 플래그 비트가 표시한 이후, 상기 디폴트 단어 길이 모드로의 전이를 표시하는 종료(exit) 단어를 출력하는 단계;
    데이터의 제3 부분을 디폴트 제1 단어 길이를 가진 적어도 하나의 제3 데이터 단어로 파싱하는 단계; 및
    상기 종료 단어 이후, 상기 디폴트 제1 단어 길이를 가진 적어도 하나의 제3 데이터 단어를 출력하는 단계를 더 포함하는,
    방법.
  20. 제19 항에 있어서,
    상기 종료 단어의 단어 길이는 상기 제1 단어 길이 단어의 단어 길이와 동일한,
    방법.
  21. 제16 항에 있어서,
    상기 적어도 하나의 제2 데이터 단어의 각각의 제2 데이터 단어 직후, 상기 제2 데이터 단어가 상기 적어도 하나의 제2 데이터 단어의 최종 제2 데이터 단어인지를 표시하는 개별 플래그 비트를 출력하는 단계를 더 포함하는,
    방법.
  22. 제16 항에 있어서,
    상기 적어도 하나의 제2 데이터 단어의 각각의 제2 데이터 단어 직전, 상기 제2 데이터 단어가 상기 적어도 하나의 제2 데이터 단어의 최종 제2 데이터 단어인지를 표시하는 개별 플래그 비트를 출력하는 단계를 더 포함하는,
    방법.
  23. 제16 항에 있어서,
    상기 디폴트 제1 단어 길이는 8 비트들이고,
    상기 전이 단어는 상기 디폴트 제1 단어 길이이고, 그리고
    상기 전이 단어는 ASCII 문자에 할당되지 않는,
    방법.
  24. 제16 항에 있어서,
    상기 제1 단어 길이 단어는 상기 제2 단어 길이를 명시적으로 표시하는,
    방법.
  25. 제16 항에 있어서,
    상기 제1 단어 길이 단어는 상기 제2 단어 길이에 매핑되는(mapped) 값을 가지는,
    방법.
  26. 제25 항에 있어서,
    상기 제1 단어 길이 단어의 값은 표준 표의 상기 제2 단어 길이에 매핑되는,
    방법.
  27. 제25 항에 있어서,
    상기 제2 단어 길이에 매핑되는 상기 제1 단어 길이 단어의 값을 표시하는 헤더(header)를 출력하는 단계를 더 포함하는,
    방법.
  28. 방법으로서,
    데이터의 제1 부분을 디폴트 단어 길이를 가진 적어도 하나의 제1 데이터 단어로 파싱하는 단계;
    디폴트 단어 길이 모드에서, 상기 디폴트 단어 길이를 가진 상기 적어도 하나의 제1 데이터 단어를 출력하는 단계;
    가변 단어 길이 모드로 전이하는 것을 표시하는 전이 단어를 출력하는 단계;
    상기 전이 단어 이후, 개별 단어 길이를 표시하는 적어도 하나의 단어 길이 단어를 출력하는 단계;
    데이터의 제2 부분을 적어도 하나의 제2 데이터 단어로 파싱하는 단계 ― 상기 적어도 하나의 제2 데이터 단어의 각각은 개별 단어 길이를 가짐 ―; 및
    상기 적어도 하나의 단어 길이 단어의 각각 이후, 상기 적어도 하나의 제2 데이터 단어의 대응하는 제2 데이터 단어를 출력하는 단계를 포함하고, 상기 적어도 하나의 단어 길이 단어의 각각은 상기 대응하는 제2 데이터 단어의 개별 단어 길이를 표시하는,
    방법.
  29. 제28 항에 있어서,
    상기 디폴트 단어 길이 모드로 전이하는 것을 표시하는 종료 단어를 출력하는 단계;
    데이터의 제3 부분을 상기 디폴트 단어 길이를 가진 적어도 하나의 제3 데이터 단어로 파싱하는 단계; 및
    상기 종료 단어 이후, 상기 디폴트 단어 길이를 가진 상기 적어도 하나의 제3 데이터 단어를 출력하는 단계를 더 포함하는,
    방법.
  30. 제29 항에 있어서,
    상기 종료 단어는 적어도 하나의 제2 데이터 단어의 제2 데이터 단어 바로 다음 출력되고, 그리고
    상기 종료 단어의 단어 길이는 상기 적어도 하나의 단어 길이 단어의 단어 길이와 동일한,.
    방법.
  31. 제28 항에 있어서,
    종료 단어의 단어 길이를 표시하는 종료 단어 길이 단어를 출력하는 단계;
    상기 종료 단어 길이 단어를 출력한 이후, 상기 디폴트 단어 길이 모드로 전이하는 것을 표시하는 종료 단어를 출력하는 단계;
    데이터의 제3 부분을 상기 디폴트 단어 길이를 가진 적어도 하나의 제3 데이터 단어로 파싱하는 단계; 및
    상기 종료 단어 이후, 상기 디폴트 단어 길이를 가진 상기 적어도 하나의 제3 데이터 단어를 출력하는 단계를 더 포함하는,
    방법.
  32. 제31 항에 있어서,
    상기 종료 단어의 단어 길이는 상기 적어도 하나의 단어 길이 단어의 단어 길이와 동일한,
    방법.
  33. 제28 항에 있어서,
    상기 적어도 하나의 단어 길이 단어의 각각은 상기 개별 단어 길이에 매핑되는 개별 값을 가지는,.
    방법.
  34. 제33 항에 있어서,
    상기 적어도 하나의 단어 길이 단어들 각각의 개별 값은 표준 표의 상기 개별 단어 길이에 매핑되는,
    방법.
  35. 제33 항에 있어서,
    상기 개별 단어 길이에 매핑되는 상기 적어도 하나의 단어 길이 단어들 각각의 개별 값을 표시하는 헤더를 출력하는 단계를 더 포함하는,
    방법.
  36. 방법으로서,
    복수의 단어 길이 단어들을 출력하는 단계;
    데이터를 복수의 데이터 단어들로 파싱하는 단계 ― 상기 복수의 데이터 단어들의 각각은 개별 단어 길이를 가짐 ―; 및
    상기 복수의 단어 길이 단어들의 각각 이후, 상기 복수의 데이터 단어들의 대응하는 데이터 단어를 출력하는 단계를 포함하고, 상기 복수의 단어 길이 단어들의 각각은 대응하는 데이터 단어의 상기 개별 단어 길이를 표시하는,
    방법.
  37. 제36 항에 있어서,
    상기 복수의 단어 길이 단어들의 제1 단어 길이 단어는 제1 단어 길이를 표시하고,
    상기 제1 단어 길이 단어에 대응하는 상기 복수의 데이터 단어들 중 제1 데이터 단어는 제1 단어 길이를 가지며,
    상기 복수의 단어 길이 단어들의 제2 단어 길이 단어는 상기 제1 단어 길이와 상이한 제2 단어 길이를 표시하고, 그리고
    상기 제2 단어 길이 단어에 대응하는 상기 복수의 데이터 단어들 중 제2 데이터 단어는 제2 단어 길이를 가지는,
    방법.
  38. 제36 항에 있어서,
    상기 복수의 단어 길이 단어들의 각각은 개별 단어 길이에 매핑되는 개별 값을 가지는,
    방법.
  39. 제38 항에 있어서,
    상기 복수의 단어 길이 단어들 각각의 개별 값은 표준 표의 상기 개별 단어 길이에 매핑되는,
    방법.
  40. 제38 항에 있어서,
    상기 개별 단어 길이에 매핑되는 상기 복수의 단어 길이 단어들 각각의 개별 값을 표시하는 헤더를 출력하는 단계를 더 포함하는,.
    방법.
  41. 방법으로서,
    제1 단어 길이를 표시하는 제1 단어 길이 단어를 출력하는 단계;
    데이터의 제1 부분을 제1 단어 길이를 가진 적어도 하나의 제1 데이터 단어로 파싱하는 단계;
    상기 제1 단어 길이 단어 이후, 상기 제1 단어 길이를 가진 상기 적어도 하나의 제1 데이터 단어를 출력하는 단계;
    제2 단어 길이를 표시하는 제2 단어 길이 단어를 출력하는 단계;
    상기 데이터의 제2 부분을 상기 제2 단어 길이를 가진 적어도 하나의 제2 단어로 파싱하는 단계; 및
    상기 제2 단어 길이 단어 이후, 상기 제2 단어 길이를 가진 상기 적어도 하나의 제2 데이터 단어를 출력하는 단계를 포함하는,
    방법.
  42. 제41 항에 있어서,
    상기 적어도 하나의 제1 데이터 단어 각각이 데이터 단어인 것을 표시하는 상기 적어도 하나의 제1 데이터 단어 각각에 대응하는 개별 플래그 비트를 출력하는 단계;
    상기 적어도 하나의 제2 데이터 단어 각각이 데이터 단어인 것으로 표시하는 상기 적어도 하나의 제2 데이터 단어 각각에 대응하는 개별 플래그 비트를 출력하는 단계; 및
    상기 제2 단어 길이 단어가 단어 길이 단어인 것을 표시하는 상기 제2 단어 길이 단어에 대응하는 플래그 비트를 출력하는 단계를 더 포함하는,
    방법.
  43. 제41 항에 있어서,
    상기 적어도 하나의 제1 데이터 단어 각각, 상기 제2 단어 길이 단어, 및 상기 적어도 하나의 제2 데이터 단어 각각의 직전에 개별 플래그 비트를 출력하는 단계를 더 포함하고, 개별 제1 플래그 비트는, 후속 단어가 데이터 단어인지 단어 길이 단어인지를 표시하는,
    방법.
  44. 제41 항에 있어서,
    상기 적어도 하나의 제1 데이터 단어 중 각각의 제1 데이터 단어 이전 또는 이후, 개별 제1 데이터 단어가 상기 적어도 하나의 제1 데이터 단어의 최종 데이터 단어인지를 표시하는 개별 플래그 비트를 출력하는 단계; 및
    상기 적어도 하나의 제2 데이터 단어의 각각의 제2 데이터 단어 이전 또는 이후, 개별 제2 데이터 단어가 상기 적어도 하나의 제2 데이터 단어의 최종 데이터 단어인지를 표시하는 개별 플래그 비트를 출력하는 단계를 더 포함하는,
    방법.
  45. 제41 항에 있어서,
    상기 제1 단어 길이 단어는 상기 제1 단어 길이를 명시적으로 표시하고, 그리고
    상기 제2 단어 길이 단어는 상기 제2 단어 길이를 명시적으로 표시하는,
    방법.
  46. 제41 항에 있어서,
    상기 제1 단어 길이 단어는 상기 제1 단어 길이에 매핑되는 제1 값을 가지며, 그리고
    상기 제2 단어 길이 단어는 상기 제2 단어 길이에 매핑되는 제2 값을 가지는,
    방법.
  47. 제46 항에 있어서,
    상기 제1 값 및 상기 제2 값은 표준 표의 제1 단어 길이 및 제2 단어 길이에 각각 매핑되는,
    방법.
  48. 제46 항에 있어서,
    상기 제1 단어 길이에 매핑되는 제1 값 및 상기 제2 단어 길이에 매핑되는 제2 값을 표시하는 헤더를 출력하는 단계를 더 포함하는,
    방법.
  49. 방법으로서,
    디폴트 단어 길이 모드에서, 디폴트 제1 단어 길이를 가진 적어도 하나의 제1 데이터 단어를 수신하는 단계;
    수신된 적어도 하나의 제1 데이터 단어를 데이터의 제1 부분으로서 결합하는 단계;
    가변 단어 길이 모드로 전이하는 것을 표시하는 전이 단어를 수신하는 단계;
    상기 전이 단어 이후, 제2 단어 길이를 표시하는 제1 단어 길이 단어를 수신하는 단계;
    상기 제1 단어 길이 단어 이후, 상기 제2 단어 길이를 가진 적어도 하나의 제2 데이터 단어를 수신하는 단계; 및
    수신된 적어도 하나의 제2 데이터 단어를 데이터의 제2 부분으로서 결합하는 단계를 포함하는,
    방법.
  50. 제49 항에 있어서,
    상기 적어도 하나의 제2 데이터 단어의 각각에 대응하는 개별 플래그 비트를 수신하는 단계를 더 포함하고, 상기 개별 플래그 비트는, 상기 적어도 하나의 제2 데이터 단어의 대응하는 제2 데이터 단어가 상기 적어도 하나의 제2 데이터 단어의 최종 제2 데이터 단어인지를 표시하는,
    방법.
  51. 제50 항에 있어서,
    상기 대응하는 제2 데이터 단어가 상기 적어도 하나의 제2 데이터 단어의 최종 제2 데이터 단어인 것을 개별 플래그 비트가 표시한 이후, 제3 단어 길이를 표시하는 제2 단어 길이 단어를 수신하는 단계;
    상기 최종 제2 단어 길이 단어 이후, 상기 제3 단어 길이를 가진 적어도 하나의 제3 데이터 단어를 수신하는 단계; 및
    수신된 적어도 하나의 제3 데이터 단어를 데이터의 제3 부분으로 결합하는 단계를 더 포함하는,
    방법.
  52. 제50 항에 있어서,
    상기 대응하는 제2 데이터 단어가 상기 적어도 하나의 제2 데이터 단어의 최종 제2 데이터 단어인 것을 개별 플래그 비트가 표시한 이후, 디폴트 단어 길이 모드로의 전이를 표시하는 종료 단어를 수신하는 단계;
    상기 종료 단어 이후, 상기 디폴트 제1 단어 길이를 가진 적어도 하나의 제3 데이터 단어를 수신하는 단계; 및
    수신된 적어도 하나의 제3 데이터 단어를 데이터의 제3 부분으로 결합하는 단계를 더 포함하는,
    방법.
  53. 제52 항에 있어서,
    상기 종료 단어의 단어 길이는 상기 제1 단어 길이 단어의 단어 길이와 동일한,
    방법.
  54. 제49 항에 있어서,
    상기 적어도 하나의 제2 데이터 단어의 각각의 제2 데이터 단어 직후, 상기 제2 데이터 단어가 상기 적어도 하나의 제2 데이터 단어의 최종 제2 데이터 단어인지를 표시하는 개별 플래그 비트를 수신하는 단계를 더 포함하는,
    방법.
  55. 제49 항에 있어서,
    상기 적어도 하나의 제2 데이터 단어의 각각의 제2 데이터 단어 직전, 상기 제2 데이터 단어가 상기 적어도 하나의 제2 데이터 단어의 최종 제2 데이터 단어인지를 표시하는 개별 플래그 비트를 수신하는 단계를 더 포함하는,
    방법.
  56. 제49 항에 있어서,
    상기 디폴트 제1 단어 길이는 8 비트들이고,
    상기 전이 단어는 상기 디폴트 제1 단어 길이이고, 그리고
    상기 전이 단어는 ASCII 문자에 할당되지 않는,
    방법.
  57. 제49 항에 있어서,
    상기 제1 단어 길이 단어는 상기 제2 단어 길이를 명시적으로 표시하는,
    방법.
  58. 제49 항에 있어서,
    상기 제1 단어 길이 단어는 상기 제2 단어 길이에 매핑되는 값을 가지는,
    방법.
  59. 제58 항에 있어서,
    상기 제1 단어 길이 단어의 값은 표준 표의 상기 제2 단어 길이에 매핑되는,
    방법.
  60. 제58 항에 있어서,
    상기 제2 단어 길이에 매핑되는 상기 제1 단어 길이 단어의 값을 표시하는 헤더를 수신하는 단계를 더 포함하는,
    방법.
  61. 방법으로서,
    디폴트 단어 길이 모드에서, 디폴트 단어 길이를 가진 적어도 하나의 제1 데이터 단어를 수신하는 단계;
    상기 적어도 하나의 제1 데이터 단어를 데이터의 제1 부분으로 결합하는 단계;
    가변 단어 길이 모드로 전이하는 것을 표시하는 전이 단어를 수신하는 단계;
    상기 전이 단어 이후, 개별 단어 길이를 표시하는 적어도 하나의 단어 길이 단어를 수신하는 단계;
    상기 적어도 하나의 단어 길이 단어 각각 이후, 개별 제2 데이터 단어를 수신하는 단계 ― 상기 적어도 하나의 단어 길이 단어 각각은 상기 개별 제2 데이터 단어의 대응하는 단어 길이를 표시함 ―; 및
    상기 적어도 하나의 제2 데이터 단어를 데이터의 제2 부분으로 결합하는 단계를 포함하는,
    방법.
  62. 제61 항에 있어서,
    상기 디폴트 단어 길이 모드로 전이하는 것을 표시하는 종료 단어를 수신하는 단계;
    상기 종료 단어 이후, 상기 디폴트 단어 길이를 가진 적어도 하나의 제3 데이터 단어를 수신하는 단계; 및
    상기 적어도 하나의 제3 데이터 단어를 데이터의 제3 부분으로 결합하는 단계를 더 포함하는,
    방법.
  63. 제62 항에 있어서,
    상기 종료 단어는 제2 데이터 단어 바로 다음에 수신되고, 그리고
    상기 종료 단어의 단어 길이는 상기 적어도 하나의 단어 길이 단어의 단어 길이와 동일한,
    방법.
  64. 제61 항에 있어서,
    종료 단어의 단어 길이를 표시하는 종료 단어 길이 단어를 수신하는 단계;
    상기 종료 단어 길이 단어를 수신한 이후, 상기 디폴트 단어 길이 모드로 전이하는 것을 표시하는 종료 단어를 수신하는 단계;
    상기 종료 단어 이후, 상기 디폴트 단어 길이를 가진 적어도 하나의 제3 데이터 단어를 수신하는 단계; 및
    상기 적어도 하나의 제3 데이터 단어를 데이터의 제3 부분으로 결합하는 단계를 더 포함하는,
    방법.
  65. 제64 항에 있어서,
    상기 종료 단어의 단어 길이는 상기 적어도 하나의 단어 길이 단어의 단어 길이와 동일한,
    방법.
  66. 제61 항에 있어서,
    상기 적어도 하나의 단어 길이 단어의 각각은 상기 개별 단어 길이에 매핑되는 개별 값을 가지는,
    방법.
  67. 제66 항에 있어서,
    상기 적어도 하나의 단어 길이 단어들 각각의 개별 값은 표준 표의 상기 개별 단어 길이에 매핑되는,
    방법.
  68. 제66 항에 있어서,
    상기 개별 단어 길이에 매핑되는 상기 적어도 하나의 단어 길이 단어들 각각의 개별 값을 표시하는 헤더를 수신하는 단계를 더 포함하는,
    방법.
  69. 방법으로서,
    복수의 단어 길이 단어들을 수신하는 단계;
    상기 복수의 단어 길이 단어들의 각각 이후, 복수의 데이터 단어들의 개별 데이터 단어를 수신하는 단계 ― 상기 복수의 단어 길이 단어들의 각각은 상기 개별 데이터 단어의 대응하는 단어 길이를 표시함 ―; 및
    상기 복수의 데이터 단어들을 상기 대응하는 단어 길이에 기반한 데이터로 결합하는 단계를 포함하는,
    방법.
  70. 제69 항에 있어서,
    상기 복수의 단어 길이 단어들의 제1 단어 길이 단어는 제1 단어 길이를 표시하고,
    상기 제1 단어 길이 단어에 대응하는 상기 복수의 데이터 단어들 중 제1 데이터 단어는 제1 단어 길이를 가지며,
    상기 복수의 단어 길이 단어들의 제2 단어 길이 단어는 상기 제1 단어 길이와 상이한 제2 단어 길이를 표시하고, 그리고
    상기 제2 단어 길이 단어에 대응하는 상기 복수의 데이터 단어들 중 제2 데이터 단어는 제2 단어 길이를 가지는,
    방법.
  71. 제69 항에 있어서,
    상기 복수의 단어 길이 단어들의 각각은 개별 단어 길이에 매핑되는 개별 값을 가지는,
    방법.
  72. 제71 항에 있어서,
    상기 복수의 단어 길이 단어들 각각의 개별 값은 표준 표의 상기 개별 단어 길이에 매핑되는,
    방법.
  73. 제71 항에 있어서,
    상기 개별 단어 길이에 매핑되는 상기 복수의 단어 길이 단어들 각각의 개별 값을 표시하는 헤더를 수신하는 단계를 더 포함하는,
    방법.
  74. 방법으로서,
    제1 단어 길이를 표시하는 제1 단어 길이 단어를 수신하는 단계;
    상기 제1 단어 길이 단어 이후, 상기 제1 단어 길이를 가진 적어도 하나의 제1 데이터 단어를 수신하는 단계;
    수신된 적어도 하나의 제1 데이터 단어를 데이터의 제1 부분으로 결합하는 단계;
    제2 단어 길이를 표시하는 제2 단어 길이 단어를 수신하는 단계;
    상기 제2 단어 길이 단어 이후, 상기 제2 단어 길이를 가진 적어도 하나의 제2 데이터 단어를 수신하는 단계; 및
    수신된 적어도 하나의 제2 데이터 단어를 데이터의 제2 부분으로 결합하는 단계를 포함하는,
    방법.
  75. 제74 항에 있어서,
    상기 적어도 하나의 제1 데이터 단어 각각이 데이터 단어인 것을 표시하는 상기 적어도 하나의 제1 데이터 단어 각각에 대응하는 개별 플래그 비트를 수신하는 단계;
    상기 적어도 하나의 제2 데이터 단어 각각이 데이터 단어인 것을 표시하는 상기 적어도 하나의 제2 데이터 단어 각각에 대응하는 개별 플래그 비트를 수신하는 단계; 및
    상기 제2 단어 길이 단어가 단어 길이 단어인 것을 표시하는 상기 제2 단어 길이 단어에 대응하는 플래그 비트를 수신하는 단계를 더 포함하는,
    방법.
  76. 제74 항에 있어서,
    상기 적어도 하나의 제1 데이터 단어 각각, 상기 제2 단어 길이 단어, 및 상기 적어도 하나의 제2 데이터 단어 각각의 직전에 개별 플래그 비트를 수신하는 단계를 더 포함하고, 개별 제1 플래그 비트는, 후속 단어가 데이터 단어인지 단어 길이 단어인지를 표시하는,
    방법.
  77. 제74 항에 있어서,
    상기 적어도 하나의 제1 데이터 단어 중 각각의 제1 데이터 단어 이전 또는 이후, 개별 제1 데이터 단어가 상기 적어도 하나의 제1 데이터 단어의 최종 데이터 단어인지를 표시하는 개별 플래그 비트를 수신하는 단계; 및
    상기 적어도 하나의 제2 데이터 단어의 각각의 제2 데이터 단어 이전 또는 이후, 개별 제2 데이터 단어가 상기 적어도 하나의 제2 데이터 단어의 최종 데이터 단어인지를 표시하는 개별 플래그 비트를 수신하는 단계를 더 포함하는,
    방법.
  78. 제74 항에 있어서,
    상기 제1 단어 길이 단어는 상기 제1 단어 길이를 명시적으로 표시하고, 그리고
    상기 제2 단어 길이 단어는 상기 제2 단어 길이를 명시적으로 표시하는,
    방법.
  79. 제74 항에 있어서,
    상기 제1 단어 길이 단어는 상기 제1 단어 길이에 매핑되는 제1 값을 가지며, 그리고
    상기 제2 단어 길이 단어는 상기 제2 단어 길이에 매핑되는 제2 값을 가지는,
    방법.
  80. 제79 항에 있어서,
    상기 제1 값 및 상기 제2 값은 표준 표의 제1 단어 길이 및 제2 단어 길이에 각각 매핑되는,
    방법.
  81. 제79 항에 있어서,
    상기 제1 단어 길이에 매핑되는 제1 값 및 상기 제2 단어 길이에 매핑되는 제2 값을 표시하는 헤더를 수신하는 단계를 더 포함하는,
    방법.
  82. 컴퓨터 프로그램 코드가 저장되어 있는 비-일시적 컴퓨터 판독가능 매체로서
    상기 컴퓨터 프로그램 코드는, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제1 항 내지 제81 항 중 어느 한 항에 따른 방법을 수행하도록 명령하는,
    비-일시적 컴퓨터 판독가능 매체.
  83. 장치로서,
    프로세서; 및
    컴퓨터 프로그램 코드가 저장되어 있는 메모리를 포함하고,
    상기 컴퓨터 프로그램 코드는, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제1 항 내지 제81 항 중 어느 한 항에 따른 방법을 수행하도록 명령하는,
    장치.
KR1020197012053A 2014-05-14 2017-09-25 컴퓨터 보안, 가변 단어-길이 인코딩 및 가변 길이 디코딩을 향상시키기 위한 기술들 KR102445811B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201414120315A 2014-05-14 2014-05-14
US15/276,380 2016-09-26
US15/276,380 US10057250B2 (en) 2013-05-14 2016-09-26 Technologies for enhancing computer security
US15/407,908 2017-01-17
US15/407,908 US10116651B2 (en) 2013-05-14 2017-01-17 Technologies for enhancing computer security
PCT/US2017/053254 WO2018058037A1 (en) 2013-05-14 2017-09-25 Technologies for enhancing computer security, variable word-length encoding, and variable length decoding

Publications (2)

Publication Number Publication Date
KR20190060804A true KR20190060804A (ko) 2019-06-03
KR102445811B1 KR102445811B1 (ko) 2022-09-20

Family

ID=56939789

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197012053A KR102445811B1 (ko) 2014-05-14 2017-09-25 컴퓨터 보안, 가변 단어-길이 인코딩 및 가변 길이 디코딩을 향상시키기 위한 기술들

Country Status (3)

Country Link
US (1) US9454653B1 (ko)
KR (1) KR102445811B1 (ko)
CN (1) CN109923516A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10057250B2 (en) 2013-05-14 2018-08-21 Kara Partners Llc Technologies for enhancing computer security
US10594687B2 (en) 2013-05-14 2020-03-17 Kara Partners Llc Technologies for enhancing computer security
CN107832623B (zh) * 2017-10-13 2020-05-08 微梦创科网络科技(中国)有限公司 坐标轨迹加密和解密的方法及系统
CN110737908B (zh) * 2019-10-12 2021-05-25 京东数字科技控股有限公司 加密方法和装置、解密方法和装置、电子设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7478241B2 (en) * 2000-07-25 2009-01-13 Canon Kabushiki Kaisha Message insertion and extraction in digital data
US8667025B2 (en) * 2009-11-16 2014-03-04 Jackson-Smith Alexander Variable substitution data processing method

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL7710503A (nl) * 1977-09-27 1979-03-29 Philips Nv Digitaal transmissiestelsel.
US4568916A (en) 1983-11-14 1986-02-04 Bahgat Osama A E H Variable word length encoder
US5249220A (en) * 1991-04-18 1993-09-28 Rts Electronics, Inc. Handheld facsimile and alphanumeric message transceiver operating over telephone or wireless networks
US6324558B1 (en) 1995-02-14 2001-11-27 Scott A. Wilber Random number generator and generation method
US6195764B1 (en) * 1997-01-30 2001-02-27 Fujitsu Network Communications, Inc. Data encoder/decoder for a high speed serial link
US6226607B1 (en) 1999-02-08 2001-05-01 Qualcomm Incorporated Method and apparatus for eighth-rate random number generation for speech coders
US7044396B2 (en) * 2000-02-22 2006-05-16 Dupont Teijin Films Us Limited Partnership Multi-layer polymeric film and the use thereof
US6728893B1 (en) 2000-04-21 2004-04-27 Intel Corporation Power management system for a random number generator
US6925638B1 (en) * 2000-09-21 2005-08-02 International Business Machines Corporation Mutability analysis in Java
US20060291650A1 (en) * 2001-05-22 2006-12-28 Viswanath Ananth State-varying hybrid stream cipher
US6954770B1 (en) 2001-08-23 2005-10-11 Cavium Networks Random number generator
US7219112B2 (en) 2001-11-20 2007-05-15 Ip-First, Llc Microprocessor with instruction translator for translating an instruction for storing random data bytes
FR2846505B1 (fr) * 2002-10-25 2005-02-11 Medialive Dispositif pour la transformation de contenus multimedias et audiovisuels de type mpeg-2 en contenus securises de meme type
US7194496B2 (en) 2003-05-02 2007-03-20 Spirent Communications Of Rockville, Inc. System and method for producing functions for generating pseudo-random bit sequences
US7332976B1 (en) 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
JP4559985B2 (ja) 2005-03-15 2010-10-13 株式会社東芝 乱数発生回路
CN101040306B (zh) 2005-09-09 2012-01-04 三菱电机株式会社 伪随机数生成装置
CN101331483A (zh) * 2005-12-14 2008-12-24 皇家飞利浦电子股份有限公司 用于操纵数据文件的方法和设备
EP1997265B1 (en) * 2006-03-10 2020-08-05 Irdeto B.V. Integrity of a data processing system using white-box for digital content protection
FR2899352B1 (fr) 2006-03-29 2008-06-20 Eads Secure Networks Soc Par A Generateur de nombres aleatoires
US20080120676A1 (en) * 2006-11-22 2008-05-22 Horizon Semiconductors Ltd. Integrated circuit, an encoder/decoder architecture, and a method for processing a media stream
WO2009066313A2 (en) * 2007-07-31 2009-05-28 Raymonde Gene Clifford Artus Method and system for encryption of data
US8280056B2 (en) * 2009-01-29 2012-10-02 Fortress Applications Ltd. System and methods for encryption with authentication integrity
KR101104985B1 (ko) 2009-11-06 2012-01-16 양창근 난수 생성 방법 및 시스템
US20130129088A1 (en) * 2009-12-24 2013-05-23 Telefonica, S.A Method and system for generating unpredictable pseudo-random numbers
US8731197B2 (en) * 2010-03-09 2014-05-20 Ebay Inc. Secure randomized input
US9092385B2 (en) * 2011-08-17 2015-07-28 Cleversafe, Inc. Facilitating access of a dispersed storage network
CN103117850B (zh) * 2011-11-16 2016-01-20 中国科学院华南植物园 一种基于随机序列数据库的密码系统的建立方法
US8824569B2 (en) * 2011-12-07 2014-09-02 International Business Machines Corporation High bandwidth decompression of variable length encoded data streams
CN105827665A (zh) * 2016-06-06 2016-08-03 南开大学 一种sdn网络控制器与交换机之间的流表消息敏感数据加密方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7478241B2 (en) * 2000-07-25 2009-01-13 Canon Kabushiki Kaisha Message insertion and extraction in digital data
US8667025B2 (en) * 2009-11-16 2014-03-04 Jackson-Smith Alexander Variable substitution data processing method

Also Published As

Publication number Publication date
US9454653B1 (en) 2016-09-27
KR102445811B1 (ko) 2022-09-20
CN109923516A (zh) 2019-06-21

Similar Documents

Publication Publication Date Title
US10917403B2 (en) Systems and methods for variable-length encoding and decoding for enhancing computer systems
KR20190060804A (ko) 컴퓨터 보안, 가변 단어-길이 인코딩 및 가변 길이 디코딩을 향상시키기 위한 기술들
JP6346942B2 (ja) パスワードへの攻撃を阻害すること
WO2021139172A1 (zh) 一种文件存储为音频实现加密的方法、装置和设备
GB2454278A (en) Searching encoded data streams using encoded data strings
US20240178999A1 (en) Method for data encryption, terminal device and non-transitory computer-readable storage medium
Goel et al. Chaos based joint compression and encryption framework for end‐to‐end communication systems
CN111064570B (zh) 共享密钥处理方法、装置、存储介质和电子设备
Kumar et al. A novel approach for securing data in IoTcloud using DNA cryptography and Huffman coding algorithm
KR20080072345A (ko) 암호화 장치 및 그 방법
US20210168131A1 (en) Systems and methods for variable-length encoding and decoding for enhancing computer systems
US12028333B2 (en) Systems and methods for variable-length encoding and decoding for enhancing computer systems
US10594687B2 (en) Technologies for enhancing computer security
KR20220137024A (ko) 대칭 비동기 생성 암호화 방법
KR101428650B1 (ko) 암호화 방법 및 복호화 방법
CN115982109B (zh) 数据同步方法、装置、电子设备和计算机可读介质
CN113259438B (zh) 模型文件的发送方法和装置及模型文件的接收方法和装置
KR101978777B1 (ko) 다양한 암호화 방식을 조합한 암호화 장치 및 방법
Mukhi et al. Survey on triple system security in cloud computing
Devi et al. Simple Encryption and Decryption of Password for Cyber Security Application
CN117436110A (zh) 数据加密、数据解密方法和装置
KR20190135663A (ko) 보안이 강화된 ofb 모드의 암호화 방법
San Jose et al. Application of the Enhanced SHA-1 for On-line Authentication and Security of Documents.

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