KR101248558B1 - 보안성을 향상시키는 순열 데이터 변환 - Google Patents

보안성을 향상시키는 순열 데이터 변환 Download PDF

Info

Publication number
KR101248558B1
KR101248558B1 KR1020117029214A KR20117029214A KR101248558B1 KR 101248558 B1 KR101248558 B1 KR 101248558B1 KR 1020117029214 A KR1020117029214 A KR 1020117029214A KR 20117029214 A KR20117029214 A KR 20117029214A KR 101248558 B1 KR101248558 B1 KR 101248558B1
Authority
KR
South Korea
Prior art keywords
segment
data
groups
bits
permutation
Prior art date
Application number
KR1020117029214A
Other languages
English (en)
Other versions
KR20110137840A (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 US10/918,103 external-priority patent/US7564970B2/en
Priority claimed from US10/918,717 external-priority patent/US8077861B2/en
Priority claimed from US10/918,718 external-priority patent/US7577250B2/en
Application filed by 씨엠엘에이 엘엘씨 filed Critical 씨엠엘에이 엘엘씨
Publication of KR20110137840A publication Critical patent/KR20110137840A/ko
Application granted granted Critical
Publication of KR101248558B1 publication Critical patent/KR101248558B1/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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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
    • 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/60Digital content management, e.g. content distribution
    • H04L2209/603Digital right managament [DRM]
    • 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
    • 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

Abstract

데이터 입력에 있는 특정 비트들을 상기 데이터 입력에 있는 다른 비트들에 기초하여 순열하는 데이터 변환이 개시된다. 다른 데이터 변환은 데이터 입력의 한 세그먼트를 다른 세그먼트의 함수의 멱(power)까지 상승시키는데, 여기서 멱은 미리 정해둔 대수계수(modulus)의 함수에 대해 서로소이다. 이 대수계수를 결과에 적용하고, 변환된 데이터를 어셈블한다. 마스터 키의 세그먼트를 해쉬하는 것은 파생의 중요한 응용이다. 마스터 키의 다른 세그먼트로부터 2개의 숫자를 구한다. 범용 해쉬 함수를 해쉬의 결과에 적용하는데 이로부터 선택된 비트들이 파생 키가 된다. 다른 실시예에 따르면, 부호화된 카운터를 마스터 키의 세그먼트들과 결합한다. 이 결과를 해쉬하여 생긴 비트들을 파생 키로 선택한다. 이러한 알고리즘들을 서로 결합될 수 있고, 키 래핑 알고리즘이나 암호화 알고리즘과 결합되어 이들 다른 응용의 보안성을 높일 수 있다.

Description

보안성을 향상시키는 순열 데이터 변환{Permutation Data Transformation to Enhance Security}
본 발명은 데이터 보안에 관한 것으로서, 좀 더 구체적으로는 보안성을 높이기 위한 순열 데이터 변환에 관한 것이다.
수천 년 동안 인류는 비밀 유지의 필요성을 알고 있었다. 그러나 비밀을 유지하는 기술은 인류 역사의 대부분에 걸쳐 느리게 발전하였다. 율리우스 카이사르(Julius Caesar)가 직접 사용했다고 알려진 '카이사르 자리옮김 암호기'(Caesar shift cipher)는 메시지를 감추기 위하여 알파벳의 문자를 하나씩 이동한다. 즉, "A"는 "D"가 되고, "B"는 "D"가 되는 식이다. 이것은 매우 낮은 수준의 암호화 기술이었지만, 그 후 수세기 동안 이 보다 더 좋은 암호화 알고리즘은 거의 없었다.
암호화는 양차 세계대전 동안 집중적인 연구의 대상이었다. 적이 깰 수 없는 코드를 개발하는 것과, 적의 암호화된 메일을 판독하려는 연구 모두에 많은 노력을 들였다. 암호화를 돕기 위해 기계 장치들이 고안되었는데, 당시 유일한 기계 암호 장치는 아니었지만 이 가운데 가장 유명한 것은 독일의 에니그마(Enigma)였다.
컴퓨터의 도래는 암호 사용의 지평을 크게 바꾸었다. 복잡한 기계나 수시간에 걸친 수작업이 더 이상 필요하지 않는 컴퓨터는 적은 비용으로 메시지를 고속으로 암호하고 복호할 수 있다. 컴퓨터의 기반이 되는 수학에 대한 이해로 인해 새로운 암호화 알고리즘이 도입되였다. 소수(prime)의 지수적 모듈러 연산을 이용하여 개인키를 교환하는 방식을 제안한 디피(Diffie)와 헬만(Hellman)의 연구는, 공개된 정보가 있을 때 공유 키를 계산하는 것이 실제로 불가능하다는 사실에 전제를 둔 것이다. 잘 알려진 RSA 알고리즘(이것은 이를 발명한 사람들, R. Rivest, A. Shamir 및 L. Adleman의 이름을 딴 것임)은 큰 수들을 인수분해(factoring)하는 것은 계산이 사실상 불가능하여 암호화된 데이터를 해독할 수 없을 정도라는 점에 기반한 것이다. 디피와 헬만의 연구 및 RSA 알고리즘은 이론적으로는 깰 수 있는 것이었지만, 이러한 알고리즘들을 깨는 것은 아직까지 풀리지 않은 수학적 문제를 해결해야 되는 것이었다. (다른 얘기지만, RSA 알고리즘은 암호화에 사용했던 키와는 다른 키를 이용하여 해독하는 첫 번째의 공개키 암호화 체계이기도 하다. 이로 인해, 보안성을 잃지 않고 하나의 키를 공개적으로 배포하는 것이 가능하다.)
그러나 어떠한 암호화 알고리즘도 영구할 수 없다. 예를 들면, DES (Date Encryption Standard)는 1976년에 처음 배포되었는데, 당시의 정부는 이것의 수명을 10년으로 추정했다. DES는 처음 예상보다 더 오래 사용되었지만, 키가 짧았기 때문에 DES는 이상적이지 못한 것으로 평가되었다. DES는 정부 표준으로 그 후 AES (Advanced Encryption Standard)로 대체되었으나, DES는 여전히 많이 사용되었다. DES에 대한 다양한 개량이 존재하지만, 이러한 개량들은 DES 보안을 영원한 것으로 만들지는 못한다. 결국, DES는 안전하지 않는 것으로 취급될 것이다.
현존하는 암호화 알고리즘의 보안성을 어떻게 향상시킬 것인지에 대한 요구는 늘 존재한다.
본 발명의 일 실시 예는 데이터 변환기 및 데이터 변환 방법을 제공한다.
본 발명의 일 실시 예는 데이터 보안 장치 및 데이터 보안 향상 방법을 제공한다.
본 발명의 제1 실시예는 순열 데이터 변환을 위한 방법과 장치에 관한 것이다. 여기서 데이터는 2개의 세그먼트로 분할된다. 제1 세그먼트에 있는 비트들은 제2 세그먼트에 있는 비트 그룹들에 순열 함수(permutation function)를 적용하는 것을 통제한다. 변환된 데이터는 제1 세그먼트와 제2 세그먼트의 상기 순열된 그룹들을 포함한다.
본 발명의 제2 실시예는 지수 데이터 변환에 관한 것이다. 데이터는 2개의 세그먼트로 분할되며, 제2 세그먼트는 제1 세그먼트의 함수의 멱(power)으로까지 상승된다. 그 다음 대수계수(modulus)를 결과에 적용한다. 변환된 데이터는 "제1 세그먼트와 나머지 mod 대수계수"의 모듈러 연산 결과를 포함한다.
본 발명의 제3 실시예는, 마스터 키로부터 키 파생을 수행하는 방법과 장치에 관한 것이다. 일실시예에서, 마스터 키의 일부가 해쉬된다. 마스터 키의 다른 부분으로부터 2개의 숫자를 구한다. 이 2개의 숫자를 이용한 범용 해쉬 함수를 상기 해쉬의 결과에 적용하여, 이로부터 파생 키가 될 비트를 선택한다.
본 발명의 제4 실시예는, 부호화된 카운터를 이용하는 범용 해쉬 함수를 마스터 키의 일부분에 적용하고, 그 결과들을 결합한다. 이렇게 결합된 결과물을 해쉬하면, 이로부터 파생 키가 될 비트들이 선택된다.
본 발명의 일 실시 예에 따르면 보안성을 향상시킬 수 있다.
앞에서 언급한 본 발명의 특징과 목적 및 장점들은 첨부 도면을 참조로 한 이하의 설명으로부터 좀 더 분명해 질 것인데, 첨부 도면에서,
도 1은 마스터 키로부터 파생 키를 생성하는 보안 해쉬 알고리즘의 일반적인 구현예를 보여준다.
도 2는 도 1의 보안 해쉬 알고리즘의 전형적인 동작을 보여준다.
도 3은 범용 해쉬 알고리즘의 전형적인 동작을 보여준다.
도 4는 도 1의 보안 해쉬 알고리즘과 범용 해쉬 알고리즘을 조합하여 보안성이 개선된 파생 키를 생성하는 본 발명에 따른 서로 다른 방식을 보여준다.
도 5는 본 발명의 일실시예에 따라 데이터 변환, 키 생성, 키 래핑(key wrapping) 및 데이터 암호화를 실행할 수 있는 장치와 서버를 보여준다.
도 6은 본 발명의 일실시예에 따라, 데이터 변환기를 키 래퍼, 키 파생기 또는 암호화 함수와 조합하여 사용함으로써 보안성을 높이도록 구성되는 데이터 보안 장치를 보여준다.
도 7A와 도 7B는 도 6의 데이터 보안 장치를 본 발명의 일실시예에 따라 이용하는 방법의 흐름도이다.
도 8은 본 발명의 일실시예에 따른, 도 5와 도 6의 데이터 변환기의 내부 구조를 보여준다.
도 9는 본 발명의 다른 실시예에 따른, 도 5와 도 6에 나타낸 데이터 변환기의 내부 구성을 보여준다.
도 10A 내지 도 10C는 본 발명의 일실시예에 따라 도 8의 데이터 변환기를 이용하는 방법의 흐름도.
도 11은 도 9의 데이터 변환기를 이용하는 방법의 흐름도이다.
도 12는 보안 해쉬 함수와 범용 해쉬 함수의 장점들을 결합한 하나의 키 파생 함수의 세부 구성을 보여준다.
도 13은 본 발명의 일실시예에 따른 도 5와 도 6의 키 파생 함수의 세부 구성을 보여준다.
도 14는 도 12의 키 파생 함수를 본 발명의 일실시예에 따라 이용하는 방법의 흐름도이다.
도 15는 도 13의 키 파생 함수를 본 발명의 일실시예에 따라 이용하는 방법의 흐름도이다.
도 16은 도 5의 데이터 보안 장치에서 또 다른 키 파생 함수에 대한 흐름도이다.
도 1은 보안 해쉬 알고리즘으로 마스터 키로부터 파생 키를 생성하는 일반적인 구현예를 보여준다. 전체적인 개념은 다음과 같다. 마스터 키(105)를 보안 해쉬 알고리즘(110)으로 입력한다. 보안 해쉬 알고리즘은 예컨대, SHA-1 (Secure Hash Algorithm 1)이다. 이렇게 하여 파생 키(115-1)가 생성된다. 보안 해쉬 알고리즘(110)은 여러 번 사용될 수 있다. 보안 해쉬 알고리즘(110)의 구현 방식에 따라, 마스터 키(105)를 수정하거나 수정하지 않고 보안 해쉬 알고리즘(110)의 입력으로 반복 사용할 수 있다. 예를 들어서, 만약 보안 해쉬 알고리즘(110)이 출력을 제어하기 위해 클록(clock)을 사용한다면, 마스터 키(105)를 수정없이 이용하여 파생 키(115-2, 115-3)를 생성할 수 있다. 보안 해쉬 알고리즘이 클록을 사용하지 않으면, 마스터 키(105)를 카운터와 어떤 식으로 조합하여 마스터 키(105)를 수정함으로써 파생 키(115-2, 115-3)를 파생 키(115-1)와 충분히 다르게 한다. 만약 보안 해쉬 알고리즘(105)이 제대로 구현되면, 마스터 키(105)에서 단 하나의 비트만 바꾸는 정도의 변화로도 파생 키(115-2, 115-3)와 파생 키(115-1)를 완전히 무관하게 할 수 있다.
도 2는 도 1의 보안 해쉬 알고리즘의 전형적인 동작으로 보여준다. 도 2에 나타낸 것처럼, 해쉬 알고리즘은 입력을 해쉬 값과 매칭한다. 도 2에서 해쉬 값들은 n의 어떤 값에 대해 0과 n 사이에서 변한다. 해쉬 알고리즘의 출력을 바스켓(basket)이라고 하는데, 도 2에는 바스켓(205, 210, 215) 및 바스켓(220)이 나타나 있다.
입력을 바스켓에 매칭할 때 어떠한 매핑도 이용할 수 있는 일반적인 해쉬 알고리즘과 달리, 보안 해쉬 알고리즘은 예측 불가능(충돌 회피(collision-free)라고도 함)하다. 즉, 하나의 입력이 특정 출력을 생성한다는 것을 알고 있더라도, 이 출력과 동일한 출력을 생성할 다른 입력을 찾는 방법에 대해서는 아무런 정보도 얻을 수 없다. 예를 들어서, 입력 "5"가 바스켓 "215"와 매칭된다는 점을 알더라도, 이것이 바스켓 "215"에 매칭될 수 있는 다른 입력 값을 찾는 데에는 아무런 도움을 주지 않는다. 사실, 어떤 특별한 해쉬 알고리즘에서는, 바스켓 "215"에 매칭되는 다른 입력이 없을 수도 있다. 이것은, 원하는 출력과 매칭되는 다른 입력을 찾을 방법이 없다는 점 때문에, 보안 해쉬 알고리즘(110)의 보안성을 보장한다. 특정 출력과 매칭되는 다른 입력을 찾는 유일한 방법은 이 출력과 매칭되는 다른 값을 찾을 수 있다는 희망으로 서로 다른 입력들로 계속 시도해 보는 것이다.
보안 해쉬 알고리즘의 약점은 바스켓이 항상 동일하게 매칭되지 않을 수도 있다는 점이다. 다시 말하면, 바스켓(215)에 매칭되는 입력이 오직 하나 밖에 없을 수도 있으나, 100개의 입력이 바스켓(215)에 매칭될 수도 있다. 그리고, 앞에서 얘기한 것처럼, 어떤 바스켓들은 매칭되는 입력이 없을 수도 있다.
범용 해쉬 알고리즘은 보안 해쉬 알고리즘에는 없는 분산 특성이 있다. 도 3에 나타낸 것처럼, 범용 해쉬 알고리즘(305) 역시 입력을 바스켓(310, 315, 320, …, 325)에 매칭한다. 그러나 도 2의 보안 해쉬 알고리즘과 달리 범용 해쉬 알고리즘(305)은 입력들을 바스켓에 골고루 배부한다. 그래서 바스켓(301)은 바스켓(315, 320, 325, 등)과 동일한 빈도로 매칭된다.
범용 해쉬 알고리즘의 약점은 동일한 바스켓에 매칭되는 다른 입력을 찾기가 쉽다는 것이다. 예를 들어서, 입력의 마지막 자리수에 대응되는 바스켓을 선택하여 0부터 9까지인 10개의 바스켓에 매칭되는 범용 해쉬 알고리즘의 경우, 이러한 해쉬 알고리즘은 출력이 모든 바스켓에 일정하게 분산되어 있다는 점을 금방 알 수 있다. 또한, 주어진 입력에 대해서 동일한 바스켓에 매칭되는 다른 입력을 찾는 것도 쉽다. 예를 들면, 1, 11, 21, 31 등은 모두 바스켓(315)에 매칭된다.
이처럼 보안 해쉬 알고리즘과 범용 해쉬 알고리즘은 모두 장단점이 있다. 보안 측면에서 가장 좋은 해결책은 보안 해쉬 알고리즘과 범용 해쉬 알고리즘의 장점들을 결합하는 것이다. 도 4는 도 1, 2의 보안 해쉬 알고리즘과 도 3의 범용 해쉬 알고리즘을 어떻게 조합하여 보안성이 더 좋은 파생 키를 본 발명의 일실시예에 따라 생성하는지를 보여준다. 시퀀스(405)에서는, 마스터 키(105)가 보안 해쉬 알고리즘(110)을 먼저 통과한다. 보안 해쉬 알고리즘(110)의 결과는 범용 해쉬 알고리즘(305)의 입력으로 사용되고, 이 결과에 의해 파생 키(115-1)가 생성된다.
시퀀스(405)에서는 범용 해쉬 알고리즘(305)보다 보안 해쉬 알고리즘(110)이 먼저 사용되는 반면, 시퀀스(410)에서는 반대가 되어 마스터 키(105)가 범용 해쉬 알고리즘(305)의 입력으로 사용되고 범용 해쉬 알고리즘(305)의 결과가 보안 해쉬 알고리즘(110)의 입력으로 사용되며, 이 결과로 파생 키(115-1)가 생성된다.
보안 해쉬 알고리즘(110)과 범용 해쉬 알고리즘(305)은 어떠한 원하는 형태로도 구현될 수 있다. 예컨대, 보안 해쉬 알고리즘(110)과 범용 해쉬 알고리즘(305)을 ROM (Read Only Memory), 펌 웨어 또는 메모리에 저장된 소프트웨어 형태로 구현하여 보안 해쉬 알고리즘(110)과 범용 해쉬 알고리즘(305)이 범용 프로세서에 의해 실행되도록 하는 구현예들도 가능하다. 이러한 구현예에서는 특수한 장치들을 포함할 수 있다. 예컨대, 프로세서를 특수하게 설계하여 보안 해쉬 알고리즘(110)과 범용 해쉬 알고리즘(305)을 구현할 수 있다. 또한, 보안 해쉬 알고리즘(110)과 범용 해쉬 알고리즘(305) 중 어느 하나를 구현하도록 계산기(calculator)를 설계할 수도 있다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면, 보안 해쉬 알고리즘(110)과 범용 해쉬 알고리즘(305)을 구현하는 다른 방법들을 쉽게 알 것이다.
도 5는 본 발명의 일실시예에 따라 데이터 변환, 키 생성, 키 래핑(key wrapping) 및 데이터 암호화를 실행할 수 있는 장치와 서버를 보여준다. 도 5에서 서버(505)는 데이터 변환기(510), 키 파생 함수(515), 키 래핑 함수(520) 및 암호화 함수(510)를 포함한다. 데이터 변환기(510)는 데이터 변환을 책임진다. 아래에서 도 8, 9, 10A 내지 10C를 참조로 설명하는 것처럼, 데이터 변환은 그 자체로는 본래 보안성이 없지만, 데이터를 스크램블(scramble) 함으로써 부호화된 데이터의 복잡도를 높여서 암호 분석을 더 어렵게 만든다. 예를 들어, 데이터 변환은 부화화는 되었지만 변환되지는 않은 데이터에 존재하는 패턴을 가린다.
키 파생 함수(510)는 데이터를 암호화하는 데에 사용되는 키들을 파생시키는 역할을 한다. 데이터를 암호화하는 데에는 어떠한 키도 사용할 수 있는 것은 사실이지만, 특수한 키를 사용하면 할수록 이러한 키를 암호 분석가들이 찾아낼 가능성이 더 높아진다. 따라서, 어떤 시스템들은 마스터 키에 기반하여 파생 키를 생성하고, 이 파생 키를 데이터 암호화에 사용한다. 필요한만큼 새로운 파생 키를 생성할 수 있는데, 파생 키만을 이용하여 암호화된 데이터는 이러한 새로운 파생 키로 암호화된 메시지를 깨는 데에 어떠한 단서도 제공하지 않는다. 현존하는 키 파생 함수가 존재하므로, 3개의 새로운 키 파생 함수에 대해 도 12, 13 및 15, 16을 참조로 아래에서 설명한다.
키 래핑 함수(520)는 전송할 키를 덮어 감추는 역할을 한다. 키 래핑은 전송할 키를 암호화함으로써 구현된다. 예를 들어서, RSA 방식을 이용하여 키를 암호화(즉, 래핑)할 수 있다. 이렇게 하여 충분히 암호화된 키를 비보안 접속을 통해서도 다른 기계로 전송할 수 있는데, 전송받은 기계는 키를 풀어서(해독하여) 데이터 암호화/해독화에 이용한다.
보통 래핑된 키는 개인 키 즉, 대칭 암호체계에 사용할 키로서, 공개 키 즉, 비대칭 암호체계를 사용하여 래핑된 것이다. 개인 키 암호체계는 암호화와 해독화에 서로 다른 키를 사용하는 공개 키 암호 체계와는 반대로 암호화와 해독화에 동일한 키를 사용한다. 예를 들어서, DES와 AES는 개인 키 암호 체계이고, RSA는 공개 키 암호 체계이다. 공개 키 암호 체계는 키를 안전하게 배포하는 것이 가능하지만(키를 중간에 가로채 제3자가 사적 메시지를 해독할 수 있다는 점을 염려할 필요없이), 공개 키 암호 체계는 종종 구현에 많은 시간이 걸려서 개인 키 암호 체계에 비해 메시지의 길이가 더 길어진다. 공개 키 암호체계를 이용하여 키를 래핑하면, 서버(505)는 래핑된 키를 주고 받을 장치의 공개 키를 알고 있어야 한다는 점은 분명하다. 그러나 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면, 키를 래핑하기 위하여 어떠한 암호화 알고리즘도 이용할 수 있으며, 래핑될 키도 어떠한 종류의 암호 체계든 가능하다는 점을 이해할 것이다.
암호화 함수(525)는 데이터를 암호화하는 데에 사용된다. 이 데이터는 키 래핑 함수(520)에 의해 래핑된 키를 이용하여 암호화되는데, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면, 어떠한 키를 사용해서도 데이터를 암호화할 수 있으며, 데이터도 암호화에 적합한 어떠한 데이터일 수 있고, 어떠한 형태의 암호화 함수를 사용해도 된다는 점을 이해할 것이다.
도 5는 본 발명의 일실시예에 따라 데이터 변환, 키 래핑 및 데이터 암호화를 수행할 수 있는 장치도 보여준다. 장치(530)가 PDA (Personal Digital Assistant)인 것처럼 보이지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 장치(530)는 물론 서버(505)도 보안 알고리즘을 이용하는 어떠한 장치든 될 수 있다는 점을 이해할 것이다. 예를 들면, 장치(530)는 컴퓨터(데스크 탑이나 노트북 컴퓨터)로, 서버(505)(서버 그 자체가 아닌 보통의 컴퓨터일 수도 있음)와 파일을 교환하는 장치이다. 또는 장치(530)는 디지털 미디어 장치(사용자에게 디지털 콘텐츠를 보여주는 장치로서, 서버(505)가 이 콘텐츠를 장치(530)에게 제공함)일 수 있다. 이와 달리, 장치(530)는 콘텐츠를 다른 적법한 소스로부터 받고, 서버(505)는 해당 콘텐츠에 대해 장치(520)에 부여된 권한을 지정하도록 할 수도 있다. 또는, 장치는 범용 기계(예컨대, 컴퓨터)에 사용되는 어떤 매체에 저장된 어떤 기능을 구현하는 소프트웨어일 수도 있다. 이러한 다양한 구현예에서, 장치(530)를 도 5에 나타낸 시스템의 일부로 만드는 것은 장치(530)의 하드웨어에 덜 의존하는 것이고, 장치(530)에서 실행되는 소프트웨어에 더 의존하도록 만드는 것이다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면, 위에서 말한 소프트웨어는 어떠한 기능도 구현할 수 있으며, 적절한 매체(널리 알려진 것들로 몇가지 예를 들면, 플로피 디스크나 여러 CD (Compact Disc) 또는 디지털 비디오 디스크(DVD (Digital Video Disc), "Digital Versatile Disc"라고도 함), 테이프 매체 또는 USB (Universal Serial Bus) 키와 같은 매체)에 저장될 수 있다는 점을 이해할 것이다. 또는, 장치(530)는 셀룰러 전화기이고, 서버(505)는 기지국이 될 수도 있는데, 이 경우 셀룰러 전화기와 기지국은 암호 방식으로 통신한다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면, 장치(530)와 서버(505)에 대한 다른 변형예가 가능하다는 점을 이해할 것이며, 서버(505)와 장치(530)가 통신하는 방식은 어떤 형태의 통신 채널 방식, 예컨대, 유선, 무선 등의 통신 방식도 가능하다는 점을 이해할 것이다.
장치(530)는 데이터 변환기(510), 키 래핑 함수(520) 및 암호화 함수(525)를 포함하고 있다는 점에서, 도 5의 서버(505)와 유사하다. 주목할 점은, 도 5의 서버(505)와 달리 장치(530)는 키 파생 함수(515)를 포함하지 않는다. 그 이유는 키 파생은 보통 서버(505)에서만 필요하기 때문이다. 다른 장치와 통신하는 방식이 존재한다면, 하나의 장치에서만 파생 키를 생성하는 것으로 충분하다. 물론, 두 개의 장치들이 동일한 파생 키를 정확하게 생성하지 않고서는 파생 키를 안전하게 통신할 방법이 없는 경우라면, 키 파생 함수(514)에 키 파생 함수(515)를 포함시킬 수 있다(그렇다면, 장치(530)는 키 래핑 함수(520)를 필요로 하지 않을 것이다).
도 6은 본 발명의 일실시예에 따라, 데이터 변환기를 키 래퍼, 키 파생기 또는 암호화 함수와 조합하여 사용함으로써 보안성을 높이도록 구성된 데이터 보안 장치를 보여준다. 데이터 보안 장치(605)는 도 5에 나타낸 서버(505)나 장치(530)의 부품인데, 필요한 경우 부품들을 추가하거나 제거하는 수정이 가능하다. 데이터 보안 장치(605)에서 입력 포트(610)는 데이터를 수신하는 역할을 한다. 이 데이터는 마스터 키일 수 있는데, 마스터 키는 여러 가능한 용도 중에서 파생 키를 생성하거나 래핑할 키를 생성하거나 암호화할 키를 마스터 키로부터 생성하는 용도로 이용된다. 분할기(615)는 데이터를 블록으로 분할하는 역할을 한다. 아래에서 도 12, 13 및 도 14-16을 참조로 설명하겠지만, 때때로 함수들은 데이터 변환을 데이터의 여러 부분들에 적용한다. 즉, 분할기(615)는 데이터를 원하는 크기의 블록들도 분할함으로써 데이터 변환기(510)가 각각의 블록에 적용될 수 있도록 한다. 데이터 변환기(510)는 아래에서 도 12, 13 및 도 14-16을 참조로 설명하는 데이터 변환을 수행하는 역할을 한다. 결합기(620)는 블록들의 데이터 변환이 끝난 다음에 블록들을 적절한 보안 함수에 적용하기 위해 다시 결합하는 역할을 한다. 사용 가능한 여러 보안 함수에는 키 파생 함수(515), 키 래핑 함수(520), 암호화 함수(525)가 포함된다. 마지막으로, 출력 포트(625)는 데이터 변환 후 및/또는 보안 함수의 적용 후에 데이터를 출력한다.
분할기(615)가 데이터를 데이터 변환 알고리즘의 크기와 일치하는 블록들로 분할하는 것이 보통이지만, 반드시 그렇지 않다는 점에 주목해야 한다. 즉, 분할기(615)는 데이터 변환기(510)의 예상 입력보다 더 크거나 더 작은 블록으로 데이터를 분할할 수도 있다. 분할기(615)가 데이터 변환기(510)에 입력될 것으로 예상되는 것보다 더 작은 크기의 블록으로 데이터를 분할하면, 이 데이터를 패딩(padding)하여 데이터를 충분히 크게 만들어야 하며, 분할기(615)가 데이터 변환기(510)의 예상보다 큰 블록으로 데이터를 분할하면, 데이터 변환기(510)는 이 데이터 변환을 필요한 데이터의 비트수 만큼만 적용한다. 예를 들어서, 데이터 변환기(510)가 도 10의 구현예에서 설명한 것처럼 구현될 경우, 데이터 변환기(510)는 8-바이트 입력에 대해 동작한다. 만약 데이터 변환기(510)가 8-바이트 이상을 수신하면, 데이터 변환기(510)는 입력의 8-바이트에 대해서만 적용된다. 이것은 데이터 내의 어떠한 8-바이트이어도 좋은데, 예컨대 첫 번째 8-바이트일 수도 있고 마지막 8-바이트일 수도 있으며 다른 원하는 조합의 8-바이트가 될 수도 있다.
여기서 주목할 것은 어떠한 데이터도 변환 가능하다는 것이다. 즉, 변환될 데이터는 마스터 키일 수 있는데, 이 경우 변환된 마스터 키는 파생 키를 생성하는 데에 사용된다. 변환된 데이터가 파생 키인 경우 이 파생 키는 전송하기 전에 래핑된다. 변환될 데이터는 암호화 알고리즘을 이용하여 암호화될 데이터가 될 수도 있다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면, 다른 유형의 데이터를 변환할 수도 있다는 점을 이해할 것이다.
도 7A와 도 7B는 도 6의 데이터 보안 장치를 이용한 본 발명의 일실시예에 따른 흐름도이다. 도 7A의 단계 705에서 데이터는 블록들로 분할된다. 단계 710에서 각각의 블록들은 데이터 변환된다. 각각의 블록들은 독립적으로 데이터 변환될 수도 있고, 그렇지 않을 수도 있다. 다시 말하면, 어떤 블록들은 데이터 변환되고 어떤 블록들은 데이터 변환되지 않을 수도 있다. 단계 715에서, 블록들은 리어셈블(reassemble)된다. 점선 720으로 나타낸 것처럼, 단계 705-715들은 선택적이어서 필요하지 않으면 생략할 수 있다.
도 7B에서 데이터 보안 장치를 다른 방식으로 이용할 수도 있다. 단계 725에서 키 래핑 알고리즘을 데이터에 적용한다. 단계 730에서는 키 파생 알고리즘을 데이터에 적용하며, 단계 735에서는 데이터 암호화 알고리즘을 데이터에 적용한다.
도 8은 본 발명에 따른 도 5와 도 6의 데이터 변환기의 내부 구조를 보여준다. 도 8에 나타낸 데이터 변환기(510)의 구현예에서, 데이터 변환기(510)는 순열 함수를 사용하여 비트 그룹을 순열화한다. 데이터 변환기(510)는 변환할 데이터를 수신하는 입력 포트(805)와, 분할기(810), 패더(815, padder), 순열기(820, permuter) 및 변환한 데이터를 출력하는 출력 포트(825)를 포함한다. 분할기(810)는 순열 함수의 적용을 위해 입력 데이터를 비트 그룹들로 분할하는 역할을 한다. 실제로, 분할기(810)는 데이터를 2개의 세그먼트로 분할하는 동작부터 시작한다. 제1 세그먼트는 순열 함수를 비트 그룹에 적용하는 것을 제어하는 데에 사용되는데, 비트 그룹들은 제2 세그먼트에서 분할된 것이다. 본 발명의 일실시예에서, 위 데이터는 64-비트를 포함한다. 즉, 제1 세그먼트는 8-비트를 포함하고 제2 세그먼트는 8개의 7-비트 그룹을 포함한다. 그러나, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 데이터는 어떠한 길이도 될 수 있으며, 이 데이터는 어떠한 길이의 그룹으로 분할될 수도 있고, 심지어 각각의 그룹이 길이가 서로 다를 수도 있다는 점을 이해할 것이다. 마지막으로, 순열 그룹의 적용을 제어하는 비트를 포함하는 제1 세그먼트는 개별 그룹들이 항상 순열된다면 생략할 수도 있다.
데이터 변환기(510)가 예측 불가능한 크기의 데이터 수신을 지원하는 경우(데이터가 항상 고정된 크기라는 가정 대신에), 분할기(810)는 데이터를 비트 그룹으로 제대로 분할하지 못할 수도 있다. 패더(815)는 추가 비트로 데이터를 패딩하는 데에 사용되는데, 이렇게 하면 데이터는 제대로 분할될 수 있는 적절한 크기의 데이터가 된다.
본 발명의 일실시예에서, 순열 함수의 적용은 제1 세그먼트의 비트에 의해 제어된다. 즉, 하나의 비트 그룹은 만약 제1 세그먼트에 있는 해당 비트가 셋(set)인 경우 특정 순열 함수를 사용하여 순열된다. 예를 들어서, 해당 비트가 값 "1"을 가지는 경우, 해당 그룹은 적합한 순열 함수를 이용하여 순열되고, 해당 비트가 값 "0"을 가지면, 해당 그룹은 순열되지 않는다. 이와 달리, 해당 비트가 값 "0"을 가지면, 해당 비트 그룹은 식별(identity) 순열 함수를 이용하여 이미 순열된 것으로 간주될 수도 있다. 순열 함수 역시 색인화(index)되는데, 만약 순열 함수의 개수가 제2 세그먼트에 있는 비트 그룹의 개수와 일치하면(따라서 제1 세그먼트에 있는 비트 개수와도 일치하면), 하나의 색인으로 3개의 대응 요소(즉, 제1 세그먼트에 있는 하나의 비트와, 제2 세그먼트에 있는 하나의 비트 그룹, 이 비트 그룹에 적용되는 하나의 순열 함수)를 식별할 수 있다.
순열기(820)는 제2 세그먼트의 비트 그룹의 순열을 제어하는 역할을 한다. 본 발명의 일실시예에서, 순열기(820)는 아래의 표 1에 나타낸 기능에 따라 순열을 구현한다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 이와 다른 순열 함수를 사용할 수 있다는 점을 알 것이다.
함수 (a b c d e f g)의 순열
P1 f a e b d g c
P2 g f d a b c e
P3 c g b f a e d
P4 e c a g f d b
P5 d e f c g b a
P6 b d g e c a f
P7 e c a g f d b
P8 c g b f a e d
표 1에 나타낸 순열에는 재미있는 특징이 있다. 우선, 각각의 순열 함수는 순열 함수 P1의 멱(power)이다. 즉, P2=P1○P1, P3=P2○P1(=P1○P1○P1)이 되는 식이다. P6○P1은 다시 P1이 되고, P7과 P8을 선택하면, P1에 대한 이전의 멱을 반복한다. 이것이 의미하는 것은, 데이터 변환기(510)는 하나의 순열 함수를 구현하는 데에만 필요하다는 것이다. 즉, 순열 함수의 나머지는 기본 순열 함수로부터 구할 수 있다. 둘째, 표 1의 순열들은 RSA나 DES, AES, SHA-1 등과 같은 암호화 함수에서 발견되는 것과 달리, 데이터에 들어 있는 어떠한 구조에 대해서도 알려주지 않는다.
순열 함수는 반전가능(invertible)하기 때문에, 표 1의 순열 함수를 적용하여 생긴 데이터 변환은 쉽게 역전할 수 있다. 표 2는 표 1에 나타낸 순열 함수들의 역에 해당하는 순열 함수들을 보여준다.
함수 (a b c d e f g)의 순열
P1-1 b d g e c a f
P2-1 d e f c g b a
P3-1 e c a g f d b
P4-1 c g b f a e d
P5-1 g f d a b c e
P6-1 f a e b d g c
P7-1 c g b f a e d
P8-1 e c a g f d b
따라서, 표 1의 순열 함수를 적용하여 데이터 변환을 역전하려면, 표 2의 순열 함수를 사용하여 제2 데이터 변환을 적용하기만 하면 된다. 이러한 역전 변환이 가능하게 하기 위해서, 출력 포트(825)는 상기 순열된 그룹들과 함께 제1 세그먼트의 비트들을 곧바로 출력한다. 그렇지 않으면, 상기 변환된 데이터의 수신부는 어떤 비트들이 순열되었는지를 알 수 없다.
표 1의 순열 함수와 마찬가지로, 표 2의 모든 순열 함수들은 하나의 기본 함수(위 예에서는 P6-1)로부터 구할 수 있다. 따라서, P5-1=P6-1○P6-1, P4-1=P5-1○P6-1(=P6-1○P6-1○P6-1) 등이 된다.
도 9는 본 발명의 다른 실시예에 따른, 도 5와 도 6에 나타낸 데이터 변환기의 내부 구성을 보여준다. 도 9에서 입력 포트(905)와 출력 포트(910)는 도 8의 데이터 변환기(510)와 유사하게 동작한다. 다만, 도 9의 데이터 변환기(510)는, 순열 함수를 이용하여 데이터를 순열하지 않고, 데이터에 대한 지수 순열(exponential permutation)을 계산하여 동작하는데, 이러한 계산은 계산기(915)에 의해 수행된다. 본 발명의 일실시예에서, 데이터 변환기(510)는 길이가 3-바이트인 데이터 입력에 대해 동작한다. 제1 세그먼트를 이용하여 멱을 계산하는데, 마지막 2개의 바이트가 이 멱까지 상승된다. 그 다음, 상기 결과를 취하여 대수계수(modulus)와 모듈러 연산을 한다. 예를 들어서, "Y = ((B + 1)(2A+1) mod 65537) - 1" (여기서, A는 데이터 입력의 첫째 바이트이고, B는 데이터 입력의 마지막 두 바이트이다. 이렇게 하면, 변환된 데이터는 A와 Y를 포함하고, 길이는 3-바이트이다. 그러나, 입력의 길이를 다르게 할 수도 있고, 다른 지수 순열 함수를 적용할 수도 있다.
위에서 설명한 지수 순열 함수는 여러 장점을 갖는다. 우선, 멱지수(exponent)와 대수계수(빼기 1)는 서로소인 경우, 함수는 1과 대수계수 사이에 가능한 모든 값에 대해 반복된다는 것을 추상 대수(abstract algebra)를 통해 알 수 있는데, 이것은 지수 순열 함수가 순열이라는 것을 의미한다. 65537을 소수로 선택하면, 65537보다 "1"이 작은 것은 2의 멱인 65536이 된다. 따라서, A의 값에 상관없이, (2A + 1)은 홀수이고, 따라서 65536에 대해 서로소이다. 두 번째, 만약 A가 "0"이면, 데이터 출력은 변하지 않는다. 마지막으로, 도 8의 데이터 변환기와 마찬가지로, 도 9의 데이터 변환기(510)의 구조는 RSA, DES, AES, SHA-1 등과 같은 암호 알고리즘에는 존재하지 않는 구조를 이용한다.
데이터 변환기(510)가 예측 불가능한 크기의 데이터 수신을 지원한다면(항상 고정된 크기의 데이터를 가정하는 대신에), 분할기(920)는 데이터를 적절한 크기의 세그먼트로 분할하지 못할 수도 있다. 패더(925)는 도 8의 데이터 변환기의 패더(815)와 마찬가지로, 추가 비트로 데이터를 패딩하여 데이터를 적절히 분할할 수 있는 길이의 데이터로 만든다.
도 8의 순할 데이터 변환기와 마찬가지로, 도 9의 데이터 변환기(510)도 역전 가능하다. 데이터 변환을 역전할 수 있도록 하기 위하여, 출력 포트(910)는 Y에 따라 변하지 않는 A를 출력한다. 그 다음, 지수 순열을 역전하기 위하여 계산기(915)가 "2A+1 mod 65536 (즉, 65537-1)" 모듈러 연산의 반전을 계산한다. 이 반전을 'e'라고 하면, 반전 지수 순열은 ((Y+1)e mod 65537) - 1"이 된다. 이러한 계산의 결과는 원래 바이트 B를 복원한다. 따라서, 지수 순열은 제2 데이터 변환을 적용하여 데이터 변환기의 지수를 바꾸는 것만으로도 반전된다.
이제 도 8과 도 9의 장치에 대해 이들을 이용하는 방법에 대해 설명한다. 도 10A 내지 도 10C는 도 8의 데이터 변환기를 본 발명의 일실시예에 따라 이용하는 방법의 흐름도이다. 도 10A의 단계 1005에서 데이터가 수신된다. 단계 1010에서 데이터는 2개의 블록(비트 그룹의 순열은 제1 세그먼트에 있는 비트에 의해 제어된다고 가정함)으로 분할된다. 단계 1015에서, 데이터 변환기는 제2 데이터 세그먼트를 그룹으로 균등하게 분할할 수 있는지를 조사한다. 만약 균등한 분할이 안 된다면, 단계 1020에서 데이터를 패딩하여 제2 세그먼트를 균등한 크기의 그룹들도 분할할 수 있도록 한다. (이것은 데이터 변환기가 데이터 입력을 균등한 크기의 그룹으로 분할하려고 한다는 가정에 따른 것인데, 만약 데이터 변환기가 입력 데이터를 균등한 크기의 그룹으로 나눌 필요가 없다면, 단계 1015와 1020은 생략된다.)
단계 1025(도 10B)에서 제2 세그먼트를 비트 그룹으로 분할한다. 이 단계 1025에서는 제2 세그먼트를 동일한 크기의 그룹으로 분할하는 것으로 묘사하였지만, 앞에서 설명한 것처럼, 데이터 변환기가 지원하는 한 그룹의 크기를 서로 다르게 분할하는 것도 가능하다. 단계 1030에서, 각각의 그룹을 제1 세그먼트에 있는 비트와 연관시킨다. 단계 1035에서, 기본 순열 함수를 정의한다. 단계 1040에서 다른 순열 함수들을 기본 순열 함수의 멱으로 정의한다. (다시 설명하지만, 이 순열들이 기본 순열 함수의 멱일 필요는 없는데, 순열 함수들 각각은 다른 함수와 무관할 수 있으며 이 경우 각각의 단계 1035와 1040은 수정하거나 생략될 수 있다.). 단계 1045에서 순열 함수들을 색인화한다.
단계 1050에서(도 10C), 데이터 변환기는 제1 세그먼트에 있는 어떤 비트(이것은 순열 함수를 제2 세그먼트에 있는 비트 그룹에 적용하는 것을 제어함)를 이미 조사하였는지를 점검한다. 조사되지 않은 비트가 있으면, 단계 1055에서 데이터 변환기는 비트가 셋인지를 조사한다. 비트가 셋이면, 단계 1060에서는 이 비트에 의해 색인화된 순열 함수를 식별하고, 단계 1065에서는 이 식별된 순열을 상기 연관된 순열 그룹에 적용한다. 다음으로 단계1050으로 되돌아가 조사되지 않은 비트가 제1 세그먼트에 더 있는지를 확인한다. 제1 세그먼트에 있는 모든 비트들을 조사한 다음, 단계 1070에서 데이터 변환기는 제1 세그먼트와 상기 순열된 비트 그룹으로부터 데이터 변환을 구성한다.
도 11은 도 9의 데이터 변환기를 본 발명의 일실시예에 따라 이용하는 방법의 흐름도이다. 단계 1105에서 데이터 변환기는 데이터를 수신한다. 단계 1110에서, 데이터 변환기는 데이터를 2개의 세그먼트로 분할한다. 단계 1115에서 제1 세그먼트를 사용하여 상기 선택된 대수계수에 대한 서로소인 멱을 구성한다. 단계 1120에서 제2 세그먼트를 상기 계산된 멱까지 상승시킨다. 단계 1125에서 "상기 결과 mod 대수계수"의 모듈러 연산으로 나머지를 계산한다. 마지막으로 단계 1130에서 제1 세그먼트와 나머지로부터 데이터 변환을 구성한다.
도 5를 참조로 앞에서 설명한 것처럼, 현존하는 키 파생 함수가 존재한다. 그러나 현존 키 파생 함수는 도 4를 참조로 위에서 설명했듯이 보안 해쉬 함수와 범용 해쉬 함수의 장점들을 제공하지 못한다. 도 12는 보안 해쉬 함수와 범용 해쉬 함수의 장점들을 결합한 하나의 키 파생 함수의 세부 구성을 보여준다. 도 12에서 키 파생 함수(515)는 입력 포트(1205)와 출력 포트(1210)를 포함하는데, 이 포트들은 입력을 각각 키 파생 함수와 출력 파생 키에 제공한다. 키 파생 함수(515)는 또한 분할기(1215), 결합기(1220), 해쉬(1225), 결정기(1230, determiner), 계산기(1235) 및 비트 선택기(1240)를 포함한다.
분할기(1215)는 마스터 키를 2개의 부분으로 분할한다. 결합기(1220)는 마스터의 제1 부분을 카운터와 결합하는데, 카운터는 입력 데이터의 일부분이다. 마스터 키를 카운터와 결합하는 한 가지 방법은 마스터 키의 제1 부분을 카운터(이것은 어떤 크기(예컨대, 4-바이트)도 가능함)와 연쇄시키는 것이다. 이러한 연쇄(concatenation)는 마스터 키의 제1 부분이 결합물의 앞에 오도록 하거나, 카운터가 결합물의 앞에 오도록 하는 2가지 중 어느 것으로도 가능하다. 이러한 결합의 결과물은 해쉬 함수(1225)를 이용하여 해쉬되는데, 여기서 해쉬 함수는 보안 해쉬 함수이다. (이 예에서, 해쉬 함수(1225)(는 도 4의 시퀀스 405에 있는 보안 해쉬 함수(110) 역할을 함.)
결정기(1230)는 마스터 키의 제1 부분으로부터 2개의 수를 결정한다. 본 발명의 일실시예에서, 이 2개의 수는 'a'와 'b'로서 마스터 키의 제2 부분의 상위 및 하위 32-바이트들과, 소수 'p'의 모듈러 연산 결과가 된다. 'a'와 'b'를 이런 식으로 정하려면 마스터 키는 제2 부분을 64-바이트 길이로 할 정도로 충분히 길어야 한다. 그러나, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면, 마스터 키가 반드시 이러한 길이이어야만 하는 것은 아니라는 점을 이해할 것이다. 예를 들어서, "a와 b mod p" 모듈러 연산을 계산하여 a와 b의 비트를 충분히 변경하면, a와 b는 이들의 원래 비트들이 마스터 키의 제2 부분 내에서 중첩되도록 하는 방식으로 선택될 수 있다.
소수를 p192=2192=264-1로 선택할 수 있는데, 이 대신 다른 소수를 선택할 수도 있다. 이렇게 하면, 계산기(1235)는 "ax+b mod p"(여기서, x는 해쉬(1225)의 결과) 모듈러 연산의 범용 해쉬 함수를 구현할 수 있다. (이 범용 해쉬 함수는 도 4의 시퀀스 405에 있는 범용 해쉬 알고리즘(305)의 역할을 함.) 마지막으로, 비트 선택기(1240)는 상기 파생된 키(이 키는 출력으로 됨)에 대한 범용 해쉬 함수의 결과로부터 비트를 선택한다. 예를 들면, 비트 선택기(1240)는 범용 해쉬 함수의 결과의 최하위비트를 파생 키로 선택할 수 있다.
도 13은 본 발명의 일실시예에 따른 도 5와 도 6의 키 파생 함수의 세부 구성을 보여준다. 도 4의 시퀀스 405에 따라 키 파생 함수를 구현하는 도 12에 나타낸 실시예와 비교했을 때, 도 13의 키 파생 함수(515)는 보안 해쉬 알고리즘 다음에 범용 해쉬 알고리즘을 적용하지 않는다. 그 대신 도 13의 실시예에서는 입력과 보안 해쉬 알고리즘에 대한 선형 매핑(linear mapping)을 적용한다.
도 12의 키 파생 함수(515)와 마찬가지로, 도 13의 키 파생 함수(515)도 입력 포트(1305), 출력 포트(1310)(이들은 각각 마스터 키를 입력으로 수신하고, 파생 키를 출력함)를 포함한다. 도 13의 키 파생 함수(515)는 또한 분할기(1315), 부호화기(1320), 결합기(1325), 해쉬(1330) 및 비트 선택기(1335)를 포함한다.
분할기(1315)는 도 12의 분할기(1215)와 마찬가지로 마스터 키를 2개의 부분으로 분할한다. 부호화기(1320)는 카운터를 부호화한다. 부호화기(1320)는 어떤 방식으로도 동작할 수 있다. 예를 들면, 부호화기(1320)는 카운터를 반복하여 카운터가 마스터 키의 제1 부분의 길이까지 확장되도록 동작할 수 있다. 그래서 예컨대 마스터 키의 제1 부분이 64-바이트 길이이고, 카운터가 4-바이트로 표현된 경우, 부호화기(1320)는 이 4-바이트를 16회 반복하여, 카운터를 64-바이트 길이로 확장한다. 결합기(1325)는 이렇게 부호화된 카운터를 마스터 키의 각 부분과 독립적으로 결합한다. 예를 들어서, 결합기(1325)는 비트 레벨에서 마스터 키의 부분들과 상기 부호화된 카운터를 결합한다. 본 발명의 일실시예에서는 마스터 키의 부분들과 부호화된 카운터를 결합하는 데에 XOR 이진 함수를 이용한다. 그러나 결합기(1325)는 어떠한 비트의 이진 함수 또는 실제로 어떠한 함수도 사용할 수 있다. 그 다음 결합기(1325)는 마스터 키의 두 부분들을 재결합하는데(부호화된 카운터와 결합한 다음), 예컨대 두 부분들을 연쇄시킨다(결합기(1325)가 마스터 키의 두 부분들을 이와 다르게 결합할 수도 있음). 결합기(1325)는 마스터 키의 재결합된 부분들을 부호화된 카운터와 한번 더 연쇄시킬 수도 있다.
해쉬(1330)는 결합기(1325)의 출력을 취해 해쉬한다. 해쉬(1330)는 보안 해쉬 함수이다. 비트 선택기(1335)는 도 12의 비트 선택기(1240)와 마찬가지로 해쉬(1330)의 결과로부터 비트를 선택하여 파생 키로 한다.
도 12와 도 13의 장치들을 이용하는 방법에 대해 설명한다. 도 14는 도 12의 키 파생 함수를 본 발명의 일실시예에 따라 이용하는 방법의 흐름도이다. 단계 1405에서 마스터 키가 세그먼트들로 분할된다. 단계 1410에서, 제1 세그먼트를 부호화된 카운터와 결합한다. 도 12를 참조로 앞에서 설명했던 것처럼, 이 결합은 제1 세그먼트와 상기 부호화된 카운터의 연쇄이다. 단계 1415에서, 상기 결합된 제1 세그먼트가 해쉬된다.
단계 1420에서, 제2 세그먼트로부터 2개의 숫자가 결정된다. 도 12를 참조로 앞에서 설명했던 것처럼, 이 2개의 숫자는 대수계수에 대해 상대적으로 정해질 수 있다. 단계 1425에서, 범용 해쉬 함수가 상기 2개의 숫자 및 대수계수를 이용하여 정해진다. 단계 1430에서, 해쉬의 결과물이 범용 해쉬 함수에 적용된다. 단계 1435에서는, 범용 해쉬의 결과로부터 선택된 비트가 파생 키로 선택된다.
도 15는 도 13의 키 파생 함수를 본 발명의 일실시예에 따라 이용하는 방법의 흐름도이다. 단계 1505에서, 마스터 키가 세그먼트로 분할된다. 단계 1510에서, 각각의 세그먼트가 부호화된 카운터와 결합된다. 도 13을 참조로 앞에서 설명했던 것처럼, 이것은 각각의 세그먼트를 상기 부호화된 카운터와 별개로 XOR 비트 함수를 적용함으로써 실행될 수 있다. 단계 1515에서는 결합된 블록들은 다시 결합하고, (도 13을 참조로 위에서 설명한 것처럼), 상기 부호화된 카운터와 다시 결합될 수도 있다. 단계 1520에서 상기 결합된 마스터 키가 해쉬되고 단계 1525에서는 해쉬의 결과부터 비트를 선택하여 파생 키로 한다.
도 12 내지 도 15에 나타낸 키 파생 함수들은 2가지 예에 불과한데, 이와 다른 키 파생 함수를 사용하여 보안 해쉬 알고리즘과 범용 해쉬 알고리즘을 장점들을 조합하는 것도 가능하다. 도 16은 본 발명의 일실시예에 따른, 도 5의 데이터 보안 장치에서 또 다른 키 파생 함수의 흐름도이다. 단계 1605에서 마스터 키가 세그먼트로 분할된다. 단계1610에서는 데이터 변환을 이용하여 세그먼트들이 변환된다. 세그먼트는 보통 데이터 변환기가 사용할 수 있는 것보다 크기가 더 크기 때문에, 세그먼트의 하위 집합만이 사용되는데, 예컨대 데이터 변환에 의해 단지 첫 번째 바이트만 필요하다. 단계 1615에서, 상기 변환된 세그먼트들이 결합되고, 부호화된 카운터와 결합(예컨대, 세그먼트와 부호화된 카운터가 연쇄됨)된다. 단계 1620에서, 결합된 결과물이 해쉬되고, 단계 1625에서는 해쉬의 결과에서 비트를 선택하여 파생 키로 한다.
도 12, 13의 장치와 도 14 내지 도 16의 흐름도는 마스터 키로부터 하나의 파생 키를 생성하는 것을 나타내었지만, 본 발명의 실시예들은 반복된 파생 키들을 생성하도록 쉽게 조절할 수 있다. 이러한 추가 파생 키들은 여러 방식으로 생성될 수 있다. 예를 들면, 도 14 내지 16의 흐름도는 모두 카운터를 포함하는데, 각각의 추가 파생 키에 대해서 카운터를 증가시킬 수 있다. 따라서, 제1 키를 파생시키기 위하여 카운터는 값 "1"을 이용할 수 있고 제2 키를 위해서 카운터는 값 "2"를 이용할 수 있다.
또 다른 변형예로는, 도 12의 비트 선택기(1240) 또는 도 13의 비트 선택기(1335)를 사용하여 파생 키를 위한 비트를 선택하는 대신에, 상기 결합된 결과로부터 모든 파생 키를 위해 필요한 비트를 선택할 수 있도록 충분한 결과를 한번에 생성하는 것도 가능하다. 예컨대, 비트 길이가 'k'인 'u'개의 키가 필요하고 도 12, 13의 장치 및/또는 도 14-16의 흐름도의 결과가 비트 선택 전에 'l' 개의 비트를 생성한다고 가정하자. 키 파생 함수가 'm'회 적용되어, m * l ≥ u * k이면, u개의 파생 키들이 m*l 결과 비트로부터 한꺼번에 선택될 수 있다. 예를 들어서, m*l 결과 비트들은 동시에 연쇄될 수 있고, 제1 키는 첫 번째 k 비트로부터 선택되고, 제2 키는 두 번째 k 비트에서 선택되며, 이런 식으로 모든 u개의 키들이 선택될 때까지 진행할 수 있다.
아래의 논의는 본 발명의 특정 형태가 구현될 수 있는 적절한 기계에 대한 간략하고 전반적인 설명을 위한 것이다. 이러한 기계에는 시스템 버스가 있고, 여기에 프로세서, 메모리(예컨대, RAM (Random Access Memory), ROM (Read-Only Memory)나 기타 상태 보존 매체), 저장 장치, 비디오 인터페이스와 입출력 인터페이스 포트가 연결되어 있는 것이 보통이다. 이러한 기계는 최소한 부분적으로나마 종래 입력 장치(예컨대, 키보드, 마우스 등)를 통한 입력에 의해 제어되며, 다른 기계로부터 받은 지시나, 가상 현실 (VR: Virtual Reality) 환경, 바이오메트릭 피드백, 또는 기타 입력 신호에 의해서도 제어된다. 본 명세서에서 "기계"라는 용어는 하나의 기계 뿐만 아니라, 통신으로 결합된 기계들로 된 시스템이나 함께 동작하는 장치들로 된 시스템을 포괄하는 넓은 의미이다. 이러한 기계의 예로는 개인용 컴퓨터, 워크스테이션, 서버, 이동형 컴퓨터, 휴대용 장치, 전화기, 태블릿(tablet) 등과 같은 컴퓨터는 물론, 자동차나 기차, 택시 등과 같은 개인 운송수단이나 대중 교통수단들을 들 수 있다.
이 기계는 내장된 제어기 예컨대, 프로그램 가능한 또는 프로그램 가능하지 않은 논리 소자나 어레이, ASIC (Application Specific Integrated Circuits), 내장형 컴퓨터, 스마트 카드 등을 포함한다. 이 기계는 네트워크 인터페이스나 모뎀과 같은 통신 커플링을 통해 하나 이상의 원격 기계와 하나 이상의 접속을 활용할 수 있다. 인트라넷, 인터넷, LAN (Local Area Network), 광대역 네트워크와 같은 물리적인 네트워크 및/또는 논리적인 네트워크를 통해 기계들을 서로 연결시킬 수도 있다. 본 발명이 속하는 기술 분야에서 보통의 지식을 가진 자라면, 네트워크 통신은 무선 및/또는 유선의 단거리 또는 장거리 캐리어와 프로토콜(무선(RF), 위성, 마이크로파, IEEE (Institute of Electrical and Electronics Engineers) 802.11, 블루투스, 광, 적외선, 케이블, 레이저 등을 포함)을 활용할 수 있다는 점을 이해할 것이다.
본 발명은 함수나 프로시저, 데이터 구조, 응용 프로그램 등(이들은 기계로 접속하였을 때 기계에 의해 수행되는 작업이거나, 추상적인 데이터 유형 또는 로레벨 하드웨어 측면으로 정의됨)을 포함하는 관련 데이터와 결부시키거나 이 데이터를 참조로 본 발명을 설명할 수도 있다. 관련 데이터는 예컨대 휘발성 및/또는 비휘발성 메모리(예컨대, RAM, ROM 등)나 다른 저장 장치 및 관련 저장 매체(하드 드라이버, 플로피 디스크, 광 저장체, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 생화학적 저장체 등)에 저장될 수 있다. 관련 데이터는 전송 환경(패킷, 직렬 데이터, 병렬 데이터, 전파된 신호(propagrated signal) 등의 형태로 된 물리 및/또는 논리 네트워크를 포함)를 통해 전달될 수 있고, 압축된 형태 즉, 암호화된 형태로 사용될 수 있다. 관련 데이터는 분산 환경에서 사용될 수 있으며 기계의 접속을 위해 원격으로 및/또는 국부적으로 저장될 수 있다.
본 발명의 원리를 실시예 중심으로 설명하였지만, 여기에 설명된 실시예는 본 발명의 원리를 벗어나지 않고서도 구조나 세부 구성이 수정될 수 있다는 점을 이해할 것이다. 또한, 앞의 설명들은 특정 실시예를 염두에 둔 것이지만, 다른 구성을 생각할 수도 있다. 특히, 본 명세서에서 "일실시예"와 같은 표현이 사용되었지만, 이것은 전체적으로 실시 가능성을 나타내는 것에 불과하고 본 발명을 특정 구성으로 제한하려는 것이 아니다. 여기에 사용한 용어들은 다른 실시 형태와 결합될 수 있는 동일한 실시예나 다른 실시예에도 관계된다.
결론적으로, 여기에 설명된 실시예에 대한 광범위한 순열의 관점에서 보면, 구체적인 설명과 관련 자료들은 예시적인 것에 지나지 않으므로, 본 발명의 범위를 제한할 목적으로 취급되어서는 안된다. 따라서, 특허청구범위에 기재된 발명은 해당 청구항의 범위와 기술적 사상 및 그 균등물 이내에 속하는 모든 수정예들을 포함한다.

Claims (25)

  1. 데이터 변환기로서,
    데이터를 수신하는 입력 포트와,
    상기 데이터를 제1 세그먼트와 제2 세그먼트로 나누고, 상기 제2 세그먼트는 최소한 하나의 그룹으로 나누는 분할기(divider)와,
    상기 제1 세그먼트에 있는 대응 비트에 따라서, 상기 그룹 중 최소한 하나의 그룹을 순열된 그룹으로 순열하는 순열 함수의 구현을 포함하는 순열기와,
    상기 제1 세그먼트와 최소한 상기 순열된 그룹을 변환된 데이터로 출력하는 출력 포트를 포함하는 데이터 변환기.
  2. 제1항에서,
    상기 분할기는 상기 제2 세그먼트에 있는 상기 그룹의 개수가 상기 제1 세그먼트의 비트 개수와 동일하게 되도록 상기 제2 세그먼트를 그룹으로 나누는 것을 특징으로 하는 데이터 변환기.
  3. 제1항에서,
    상기 분할기는 상기 제2 세그먼트를 그룹으로 나누고, 상기 그룹 각각은 미리 정해둔 크기인 것을 특징인 것으로 하는 데이터 변환기.
  4. 제1항에서,
    상기 순열기는 최소한 2개의 순열 함수의 구현을 포함하는 것을 특징으로 하는 데이터 변환기.
  5. 제4항에서,
    상기 순열 함수의 개수는 상기 제2 세그먼트에 있는 상기 그룹의 개수와 동일한 것을 특징으로 하는 데이터 변환기.
  6. 제5항에서,
    상기 순열기는 상기 제1 세그먼트에 있는 대응 비트에 따라 순열 함수들 중 하나를 이용하여 상기 그룹들 각각을 순열하도록 구성된 것을 특징으로 하는 데이터 변환기.
  7. 데이터를 수신하는 입력 포트와,
    상기 데이터를 제1 세그먼트와 제2 세그먼트로 분할하고, 상기 제2 세그먼트는 최소한 2개의 그룹으로 분할하는 분할기로서, 상기 그룹은 미리 정해진 크기를 가져서 상기 제2 세그먼트에 있는 그룹들의 개수가 상기 제1 세그먼트에 있는 비트의 개수와 동일하게 하는 분할기와,
    상기 제1 세그먼트에 있는 대응 비트에 따라서, 상기 그룹들 중 최소한 하나의 그룹을 순열 그룹으로 순열하는 순열 함수의 구현을 포함하는 순열기와,
    상기 제1 세그먼트와 최소한 상기 순열된 그룹을 변환된 데이터로 출력하는 출력 포트를 포함하는 데이터 변환기; 그리고,
    상기 변환된 데이터를 보호하기 위한 보안 알고리즘을 구현을 포함하는 데이터 보안 장치.
  8. 제7항에서,
    입력을 최소한 2개의 블록으로 분할하는 제2 분할기를 더 포함하고, 상기 데이터 변환기는 각각의 블록에 대해 별개로 동작하는 것을 특징으로 하는 데이터 보안 장치.
  9. 제8항에서,
    상기 순열기는 최소한 2개의 순열 함수(순열 함수의 개수는 상기 제2 세그먼트에 있는 상기 그룹의 개수와 동일함)의 구현을 포함하는 것을 특징으로 하는 데이터 보안 장치.
  10. 제7항에서,
    상기 순열기는 최소한 2개의 순열 함수의 구현을 포함하고, 상기 순열 함수의 개수는 상기 제2 세그먼트에 있는 그룹의 개수와 동일한 것을 특징으로 하는 데이터 보안 장치.
  11. 제10항에서,
    상기 순열기는 상기 제1 세그먼트에 있는 해당 비트에 따라서, 상기 순열 함수 중 하나를 이용하여 상기 그룹 각각을 순열하도록 구성된 것을 특징으로 하는 데이터 보안 장치.
  12. 데이터 변환 방법으로서,
    데이터를 수신하는 단계와,
    상기 데이터를 제1 세그먼트와 제2 세그먼트(상기 제1 세그먼트와 상기 제2 세그먼트 각각은 최소한 하나의 비트를 포함함)로 분할하는 단계와,
    상기 제2 세그먼트에 있는 비트를 최소한 하나의 그룹으로 조직하는 단계와,
    상기 그룹 각각을 상기 제1 세그먼트에 있는 비트와 연관시키는 단계와,
    상기 제1 세그먼트에 있는 상기 연관된 비트에 따라서, 상기 그룹 중 최소한 하나의 그룹에 대해 순열 함수를 적용하는 단계와,
    상기 제1 세그먼트와 최소한 상기 순열된 그룹으로부터 데이터 변환을 구성하는 단계를 포함하는 데이터 변환 방법.
  13. 제12항에서,
    상기 제2 세그먼트에 있는 비트를 조직하는 단계는 상기 제2 세그먼트에 있는 비트를 복수의 그룹으로 조직하는데, 상기 그룹의 개수를 상기 제1 세그먼트에 있는 비트의 개수와 동일하도록 조직하는 것을 특징으로 하는 데이터 변환 방법.
  14. 제12항에서,
    상기 비트를 조직하는 단계는 상기 제2 세그먼트에 있는 비트들을 최소한 2개의 그룹(각각의 그룹은 동일한 개수의 비트를 가짐)으로 조직하는 것을 포함하는 것을 특징으로 하는 데이터 변환 방법.
  15. 제14항에서,
    상기 비트를 조직하는 것은 상기 제2 세그먼트를 그룹들(각각의 그룹은 동일한 개수의 비트를 가짐)로 조직할 수 있도록 상기 데이터를 패딩하는 것을 포함하는 것을 특징으로 하는 데이터 변환 방법.
  16. 제12항에서,
    순열 함수를 정의하는 것을 더 포함하는 것을 특징으로 하는 데이터 변환 방법.
  17. 제16항에서,
    상기 순열 함수를 정의하는 것은, 복수의 순열 함수(순열 함수의 개수는 그룹의 개수와 동일함)를 정의하는 단계를 포함하는 것을 특징으로 하는 데이터 변환 방법.
  18. 제17항에서,
    상기 순열 함수를 적용하는 것은, 서로 다른 순열 함수를 상기 제1 세그먼트에 있는 대응 비트에 따라서 각각의 그룹에 적용하는 것을 포함하는 것을 특징으로 하는 데이터 변환 방법.
  19. 데이터 보안성을 향상시키는 방법으로서,
    데이터를 수신하는 단계와,
    상기 데이터를 제1 세그먼트와 제2 세그먼트(상기 제1 세그먼트와 상기 제2 세그먼트 각각은 최소한 하나의 비트를 포함함)로 분할하는 단계와,
    상기 제2 세그먼트에 있는 비트를 복수의 그룹(그룹의 개수는 상기 제1 세그먼트에 있는 비트의 개수와 동일함)으로 조직하는 단계와,
    상기 그룹 각각을 상기 제1 세그먼트에 있는 비트와 연관시키는 단계와,
    상기 제1 세그먼트에 있는 상기 연관된 비트에 따라서, 상기 그룹들 중 최소한 하나의 그룹에 대해 순열 함수를 적용하는 단계와,
    상기 제1 세그먼트와 최소한 상기 순열된 그룹으로부터 데이터 변환을 구성하는 단계와,
    상기 데이터 변환에 보안 알고리즘의 구현을 적용하여 데이터 변환을 보안화하는 단계를 포함하는 데이터 보안성 향상 방법.
  20. 제19항에서,
    상기 보안 알고리즘의 구현을 적용하는 단계는 데이터를 암호화할 키로 상기 데이터 변환을 이용하는 암호화 알고리즘의 구현의 적용을 포함하는 것을 특징으로 하는 데이터 보안성 향상 방법.
  21. 제20항에서,
    상기 암호화 알고리즘의 구현을 적용하는 단계는 데이터를 암호화하기 위한 키로서 데이터 변환을 이용하는 AES의 구현의 적용을 포함하는 것을 특징으로 하는 데이터 보안성 향상 방법.
  22. 제19항에서,
    상기 비트를 조직하는 단계는, 상기 제2 세그먼트에 있는 비트를 복수의 그룹(그룹의 개수는 상기 제1 세그먼트에 있는 비트의 개수와 동일하며, 각각의 그룹은 동일한 수의 비트를 가짐)으로 조직하는 단계를 포함하는 것을 특징으로 하는 데이터 보안성 향상 방법.
  23. 제19항에서,
    순열 함수를 정의하는 단계를 더 포함하는 것을 특징으로 하는 데이터 보안성 향상 방법.
  24. 제23항에서,
    상기 순열 함수를 정의하는 단계는, 복수의 순열 함수(순열 함수의 개수는 그룹의 개수와 동일함)를 정의하는 단계를 포함하는 것을 특징으로 하는 데이터 보안성 향상 방법.
  25. 제19항에서,
    입력을 최소한 2개의 블록으로 나누고, 각각의 블록을 별도로 변환하는 단계와,
    각각의 블록에 대한 데이터 변환의 결과를 상기 보안 알고리즘의 구현의 적용에 의해 보안화되는 단일 변환 데이터로 결합하는 단계를 더 포함하는 것을 특징으로 하는 데이터 보안성 향상 방법.
KR1020117029214A 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환 KR101248558B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US10/918,103 US7564970B2 (en) 2004-08-12 2004-08-12 Exponential data transform to enhance security
US10/918,718 2004-08-12
US10/918,717 2004-08-12
US10/918,717 US8077861B2 (en) 2004-08-12 2004-08-12 Permutation data transform to enhance security
US10/918,103 2004-08-12
US10/918,718 US7577250B2 (en) 2004-08-12 2004-08-12 Key derivation functions to enhance security
PCT/US2005/028316 WO2006023334A2 (en) 2004-08-12 2005-08-09 Permutation data transform to enhance security

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020077003490A Division KR101119933B1 (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020127033720A Division KR20130014623A (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환

Publications (2)

Publication Number Publication Date
KR20110137840A KR20110137840A (ko) 2011-12-23
KR101248558B1 true KR101248558B1 (ko) 2013-04-03

Family

ID=35968064

Family Applications (7)

Application Number Title Priority Date Filing Date
KR1020127019485A KR101313869B1 (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환
KR1020137000304A KR101328618B1 (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환
KR1020137018806A KR101366185B1 (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환
KR1020127033720A KR20130014623A (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환
KR1020077003490A KR101119933B1 (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환
KR1020117029214A KR101248558B1 (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환
KR1020117017382A KR101187854B1 (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환

Family Applications Before (5)

Application Number Title Priority Date Filing Date
KR1020127019485A KR101313869B1 (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환
KR1020137000304A KR101328618B1 (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환
KR1020137018806A KR101366185B1 (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환
KR1020127033720A KR20130014623A (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환
KR1020077003490A KR101119933B1 (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020117017382A KR101187854B1 (ko) 2004-08-12 2005-08-09 보안성을 향상시키는 순열 데이터 변환

Country Status (12)

Country Link
EP (6) EP2439872B1 (ko)
JP (5) JP4820821B2 (ko)
KR (7) KR101313869B1 (ko)
CN (2) CN102868518A (ko)
AU (3) AU2005277664B2 (ko)
BR (1) BRPI0514256A (ko)
CA (3) CA2576881C (ko)
IL (5) IL181206A (ko)
MA (1) MA28854B1 (ko)
MX (1) MX2007001672A (ko)
NZ (8) NZ553424A (ko)
WO (1) WO2006023334A2 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2460104A4 (en) 2009-07-27 2016-10-05 Ibm METHOD AND SYSTEM FOR TRANSFORMING LOGICAL DATA OBJECTS FOR STORAGE USE
US8295481B2 (en) 2009-08-31 2012-10-23 International Business Machines Corporation Virtualization of cryptographic keys
EP2487904A1 (en) 2011-02-10 2012-08-15 Thomson Licensing Method and device for excerpt licensing
EP2605566B1 (en) 2011-12-12 2019-06-12 Sony Corporation System for transmitting a data signal in a network, method, mobile transmitting device and network device
AU2013255471B2 (en) * 2012-05-03 2016-11-17 Telefonaktiebolaget L M Ericsson (Publ) Centralized key management in eMBMS
CN104982003B (zh) 2013-01-07 2017-05-31 恩德斯有限公司 秘密可再生性
KR101282653B1 (ko) * 2013-03-04 2013-07-12 소프트포럼 주식회사 데이터 치환 암호화 장치 및 방법
US10474652B2 (en) * 2013-03-14 2019-11-12 Inpixon Optimizing wide data-type storage and analysis of data in a column store database
JP2014192612A (ja) * 2013-03-26 2014-10-06 Toshiba Corp 生成装置、暗号化装置、復号装置、生成方法、暗号化方法、復号方法およびプログラム
JP6614632B2 (ja) * 2014-12-19 2019-12-04 インターナショナル・ビジネス・マシーンズ・コーポレーション ビットを選択する所定位置を変更することでハッシュ関数を1つ以上生成することが可能なハッシュ値を計算する方法、並びに、その為のコンピュータ及びコンピュータ・プログラム
WO2017065322A1 (ko) * 2015-10-12 2017-04-20 (주) 이스트몹 보안성이 강화된 p2p파일 전송방법 및 프로그램
CN106571925B (zh) * 2016-10-24 2020-07-10 北京云图科瑞科技有限公司 对区块链系统中的区块进行工作量证明的方法及装置
JP6441390B2 (ja) * 2017-01-26 2018-12-19 株式会社東芝 生成装置、暗号化装置、復号装置、生成方法、暗号化方法、復号方法およびプログラム
CN109962776B (zh) * 2017-12-25 2022-02-08 亚旭电脑股份有限公司 加密方法与解密方法
CN109412791B (zh) * 2018-11-29 2019-11-22 北京三快在线科技有限公司 密钥信息处理方法、装置、电子设备及计算机可读介质
DE102019212958B3 (de) 2019-08-28 2021-03-04 Volkswagen Aktiengesellschaft Verfahren und Vorrichtung zur Erzeugung von kryptographischen Schlüsseln nach einem Schlüsselableitungsmodell sowie Fahrzeug
US20240037249A1 (en) * 2020-07-23 2024-02-01 Usencryption Inc. Boolean function control gates for securely executing on a public computer code that operates on encrypted data
WO2023067952A1 (ja) * 2021-10-22 2023-04-27 ソニーセミコンダクタソリューションズ株式会社 情報処理装置、情報処理方法、記録媒体

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010038347A1 (en) 2000-01-03 2001-11-08 N. Caleb Avery Efficient and lossless conversion for transmission or storage of data
US20020118827A1 (en) 1997-09-17 2002-08-29 Luyster Frank C. Block cipher method

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4316055A (en) * 1976-12-30 1982-02-16 International Business Machines Corporation Stream/block cipher crytographic system
JPS6410750A (en) * 1987-07-02 1989-01-13 Mitsubishi Electric Corp Block encipherment device
JPH0227389A (ja) * 1988-07-15 1990-01-30 Sony Corp 暗号化方法及び該暗号方法を用いた暗号化装置/復号化装置
US4964164A (en) * 1989-08-07 1990-10-16 Algorithmic Research, Ltd. RSA computation method for efficient batch processing
JP2862141B2 (ja) * 1989-12-29 1999-02-24 富士通株式会社 慣用暗号を用いた識別番号ベース鍵管理装置
JPH06259012A (ja) * 1993-03-05 1994-09-16 Hitachi Ltd 階層型鍵管理による暗号方法及び情報通信システム
NZ336414A (en) * 1993-12-01 2000-01-28 Rpk Nz Ltd Method of combining serial keystream output to produce encrypted bit stream using pseudorandom permutation and replacing byte(s) of serial keystream
JP3627765B2 (ja) * 1995-06-15 2005-03-09 日本電信電話株式会社 スクランブルにより情報秘匿を行なう通信システムにおける送信装置
US5796839A (en) * 1995-10-16 1998-08-18 Sony Corporation Encryption method, encryption apparatus, recording method, decoding method, decoding apparatus and recording medium
JPH09149025A (ja) * 1995-11-24 1997-06-06 Sezon Joho Syst:Kk 暗号通信方法及び暗号通信システム
JPH10171350A (ja) * 1996-12-10 1998-06-26 Hitachi Ltd ハッシュ値生成方法および装置
EP0966810A2 (en) * 1997-03-10 1999-12-29 Guy L. Fielder Secure deterministic encryption key generator system and method
EP0966813A2 (en) * 1997-03-10 1999-12-29 Guy L. Fielder Bilateral authentication and encryption system
JPH10271104A (ja) * 1997-03-24 1998-10-09 Hitachi Inf Syst Ltd 暗号化方法及び復号化方法
JPH11122240A (ja) * 1997-10-17 1999-04-30 Fuji Xerox Co Ltd 復号装置および方法ならびにアクセス資格認証装置および方法
RU2141729C1 (ru) * 1998-01-19 1999-11-20 Государственное унитарное предприятие Специализированный центр программных систем "Спектр" Способ криптографического преобразования блоков двоичных данных
CA2282051A1 (en) * 1998-10-20 2000-04-20 Lucent Technologies, Inc. Efficient block cipher method
US7743412B1 (en) * 1999-02-26 2010-06-22 Intel Corporation Computer system identification
US6735313B1 (en) * 1999-05-07 2004-05-11 Lucent Technologies Inc. Cryptographic method and apparatus for restricting access to transmitted programming content using hash functions and program identifiers
EP1063811B1 (en) * 1999-06-22 2008-08-06 Hitachi, Ltd. Cryptographic apparatus and method
KR100748867B1 (ko) * 1999-09-03 2007-08-13 코닌클리케 필립스 일렉트로닉스 엔.브이. 기록된 공개 자료로부터 마스터 키의 복구
US20010031050A1 (en) * 2000-02-14 2001-10-18 Lateca Computer Inc. N.V. Key generator
JP2002185443A (ja) * 2000-12-11 2002-06-28 Hitachi Ltd 秘密鍵管理方法
US20030037237A1 (en) * 2001-04-09 2003-02-20 Jean-Paul Abgrall Systems and methods for computer device authentication
JP2005500740A (ja) * 2001-08-13 2005-01-06 ザ ボード オブ トラスティーズ オブ ザ リーランド スタンフォード ジュニア ユニバーシティ Idベース暗号化および関連する暗号手法のシステムおよび方法
JP2003143120A (ja) * 2001-11-07 2003-05-16 Matsushita Electric Ind Co Ltd データ攪拌回路とデータ攪拌方法
US7464265B2 (en) 2002-05-03 2008-12-09 Microsoft Corporation Methods for iteratively deriving security keys for communications sessions
US6834412B2 (en) * 2002-05-07 2004-12-28 D.P.L. Enterprises, Inc. Mobile air duct vacuum
JP2004072184A (ja) 2002-08-01 2004-03-04 Nippon Hoso Kyokai <Nhk> データ改竄防止装置およびそのプログラム
JP2005309148A (ja) 2004-04-22 2005-11-04 Hitachi Ltd データ変換装置およびデータ変換方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020118827A1 (en) 1997-09-17 2002-08-29 Luyster Frank C. Block cipher method
US20010038347A1 (en) 2000-01-03 2001-11-08 N. Caleb Avery Efficient and lossless conversion for transmission or storage of data

Also Published As

Publication number Publication date
IL211476A (en) 2012-10-31
JP2012023763A (ja) 2012-02-02
NZ574824A (en) 2010-06-25
KR101366185B1 (ko) 2014-02-24
KR101313869B1 (ko) 2013-10-01
JP4879951B2 (ja) 2012-02-22
CA2781070C (en) 2015-06-23
WO2006023334A2 (en) 2006-03-02
NZ597909A (en) 2012-07-27
CN102857337A (zh) 2013-01-02
CA2576881A1 (en) 2006-03-02
EP2629450A2 (en) 2013-08-21
AU2010200320B2 (en) 2012-12-20
EP1776794A4 (en) 2010-09-22
NZ585225A (en) 2011-09-30
EP2439872B1 (en) 2016-04-27
AU2010200320A1 (en) 2010-02-18
JP4820821B2 (ja) 2011-11-24
EP2487827A2 (en) 2012-08-15
CN102868518A (zh) 2013-01-09
MA28854B1 (fr) 2007-09-03
EP2439872A1 (en) 2012-04-11
AU2010200323A1 (en) 2010-02-18
JP5011264B2 (ja) 2012-08-29
CA2576881C (en) 2012-11-20
IL181206A0 (en) 2007-07-04
NZ603822A (en) 2013-07-26
WO2006023334A3 (en) 2006-06-01
EP2629449A2 (en) 2013-08-21
CA2780980C (en) 2014-12-02
JP2009071854A (ja) 2009-04-02
MX2007001672A (es) 2007-08-02
NZ601025A (en) 2013-04-26
KR20120098926A (ko) 2012-09-05
JP2009069844A (ja) 2009-04-02
KR101187854B1 (ko) 2012-10-08
IL211476A0 (en) 2011-05-31
CA2780980A1 (en) 2006-03-02
NZ592242A (en) 2012-03-30
KR20110089379A (ko) 2011-08-05
BRPI0514256A (pt) 2008-06-03
KR101328618B1 (ko) 2013-11-13
IL211473A0 (en) 2011-05-31
NZ574825A (en) 2010-06-25
JP2008510185A (ja) 2008-04-03
CA2781070A1 (en) 2006-03-02
KR101119933B1 (ko) 2012-03-15
KR20130014623A (ko) 2013-02-07
KR20070057797A (ko) 2007-06-07
IL181206A (en) 2011-11-30
KR20110137840A (ko) 2011-12-23
NZ553424A (en) 2009-03-31
JP5572610B2 (ja) 2014-08-13
JP2012023764A (ja) 2012-02-02
AU2010200323B2 (en) 2012-12-20
IL211475A0 (en) 2011-05-31
IL211473A (en) 2013-09-30
EP1776794A2 (en) 2007-04-25
AU2005277664A1 (en) 2006-03-02
KR20130018979A (ko) 2013-02-25
AU2005277664B2 (en) 2010-03-04
EP2487827A3 (en) 2013-03-27
KR20130089287A (ko) 2013-08-09
IL211475A (en) 2013-09-30
EP2439873A1 (en) 2012-04-11
IL211474A (en) 2013-09-30
JP5323908B2 (ja) 2013-10-23

Similar Documents

Publication Publication Date Title
KR101248558B1 (ko) 보안성을 향상시키는 순열 데이터 변환
US7564970B2 (en) Exponential data transform to enhance security
US8155310B2 (en) Key derivation functions to enhance security
US8077861B2 (en) Permutation data transform to enhance security
AU2012254921B2 (en) Permutation Data Transform to Enhance Security

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
A107 Divisional application of patent
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160309

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170315

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee