KR20030001888A - 키를 사용하지 않고 블록 정보만을 이용하는 암호알고리즘 설계 방법 - Google Patents

키를 사용하지 않고 블록 정보만을 이용하는 암호알고리즘 설계 방법 Download PDF

Info

Publication number
KR20030001888A
KR20030001888A KR1020010037748A KR20010037748A KR20030001888A KR 20030001888 A KR20030001888 A KR 20030001888A KR 1020010037748 A KR1020010037748 A KR 1020010037748A KR 20010037748 A KR20010037748 A KR 20010037748A KR 20030001888 A KR20030001888 A KR 20030001888A
Authority
KR
South Korea
Prior art keywords
bit string
round
input
value
function
Prior art date
Application number
KR1020010037748A
Other languages
English (en)
Inventor
박승배
Original Assignee
박승배
허기택
주낙근
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 박승배, 허기택, 주낙근 filed Critical 박승배
Priority to KR1020010037748A priority Critical patent/KR20030001888A/ko
Publication of KR20030001888A publication Critical patent/KR20030001888A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명의 암호 알고리즘에 의한 암호화 방법은 입력 비트 스트링을 제공받고, 상기 입력 비트 스트링을 대표하는 소정수의 비트들을 선택하여 선택 비트 스트링을 구성한다. 그리고 상기 선택 비트 스트링에 의해 알고리즘 수행 루틴을 달리하는 라운드 함수에 의해 상기 입력 비트 스트링을 연산한 결과가 다음 라운드 함수의 입력 값이 되는 과정을 일정 횟수 반복하는 과정을 기본으로 하며, 적용분야에 따라 최종 라운드 블록을 출력하거나 상기 라운드 함수를 수행한 결과 블록을 대표하는 소정수의 비트스트링을 선택하여 출력하는 등의 형태로 사용되어진다. 이와 같은 본 발명의 암호 알고리즘에 의한 암호화 방법에 의하면, 메시지 이외의 키 또는 다른 입력 값을 필요로 하지 않으며, 입력 값에 따라 알고리즘의 수행 루틴을 달리하며, 수행 루틴을 결정하기 위하여 블록으로부터 선택된 값을 사용함으로서 초기 입력 비트 스트링을 유추하기가 어려우며, 주어진 메시지나 블록의 대푯값을 선택하는 방법을 제공하며, 메시지 자체의 정보로부터 유도된 정보만을 이용하여 메시지를 암호화하는 새로운 암호 알고리즘 설계 방법을 제공하며, 해쉬 함수에 응용되는 경우 분석이 용이하고 고비도를 갖는 해쉬 함수 설계가 용이하다.

Description

키를 사용하지 않고 블록 정보만을 이용하는 암호 알고리즘 설계 방법{CIPHER ALGORITHM DESIGN METHOD USING BLOCK INFORMATION WITHOUT USING KEY}
본 발명은 암호 알고리즘 설계 방법에 관한 것으로, 구체적으로는 알고리즘의 수행시 주어진 블록에서 필요한 값을 선택하고, 선택된 값에 따라 알고리즘 수행 루틴을 달리함으로서 메시지 이외의 키 또는 다른 입력 값을 필요로 하지 않으며, 블록 값에 따라 알고리즘 수행 루틴이 다르게 하는 방법을 이용하여 메시지나블록의 대표 값을 선택함으로서 선택된 값으로 메시지나 블록을 유추하기 어렵고, 비도가 높은 암호 알고리즘 설계 방법에 관한 것이다.
컴퓨터 보급의 확대와 인터넷 사용자의 증가는 정보 보호의 중요성을 증대시키고 있다. 정보 보호 서비스를 제공하는 가장 일반적인 방법은 암호 시스템을 사용하는 것이다. 암호 시스템을 이용한 보안 방법에는 하드웨어적인 방법과 소프트웨어적인 방법 두 가지가 있다. 그러나 하드웨어적인 방법의 경우, 이용 대상에 따른 유연성이 떨어진다는 단점을 가지고 있으므로 일반 사용자들을 위한 시스템의 경우에는 소프트웨어적인 방법이 주로 사용되고 있다.
암호 시스템은 정보에 대한 다양한 공격으로부터 정보를 보호하기 위한 것이다. 공격의 유형은 여러 가지가 있는데, 대표적으로 방해(interruption), 가로채기(interception), 위조/변조(modification), 위장(fabrication) 등이 있다. 공격 방법은 서로 유기적인 관계를 가지고 있으므로, 정보를 안전하게 보호하기 위해서는 각각의 공격방법으로부터 안전한 메커니즘을 찾고 이들을 조합한 보안 기술을 이용하여 정보가 안전하도록 해야한다.
암호 알고리즘은 특정 내용을 정해진 사람만이 알 수 있도록 하기 위하여 개발되기 시작했다. 지금까지 암호 알고리즘은 많은 발전을 거듭하였고, 현재 DES(Data Encryption Standard), RSA(Rivest, Shamir, Adleman) 등의 보다 발전된 암호 알고리즘으로 변환되어 왔다.
암호 알고리즘은 암호화 알고리즘과 복호화 알고리즘으로 구성된다. 암호화 알고리즘은 암호화 키(encryption key)를 사용하며, 복호화 알고리즘은 복호화키(decryption key)를 사용한다. 암호화 및 복호화 알고리즘은 일종의 함수로써 각기 암호화(복호화) 키와 평문(암호문)을 입력으로 받아서 암호문(평문)을 생성한다.
암호 알고리즘의 종류는 크게 비밀키 암호(secret-key cryptography) 알고리즘과 공개키 암호(public-key cryptography) 알고리즘으로 구분되며, 특정 분야에 주로 사용되는 해쉬 알고리즘(hash algorithm)이 있다.
비밀키 암호 알고리즘은 암호화 키와 복호화 키가 동일하여 대칭키 암호 알고리즘(symmetric key encryption algorithm)이라고도 한다. 공개키 암호 알고리즘은 이들이 서로 달라 비대칭키 암호 알고리즘(asymmetric key encryption algorithm)이라고도 한다.
대칭키 암호 알고리즘은 암호화 단위에 의해 스트림 암호 알고리즘(stream encryption algorithm)과 블록 암호 알고리즘(block encryption algorithm)으로 구분된다. 스트림 암호 알고리즘은 비트 또는 바이트 단위로 암호화하고, 블록 암호 알고리즘은 블록 단위로 암호화한다.
지금까지 대칭키 블록 암호 알고리즘을 위한 많은 기본 구조들이 제안되었다. 그 중에서 파이스텔 네트웍(feistel network)은 가장 많이 사용되는 기본 구조이며, 지금까지 제안된 대부분의 대칭키 블록 암호 알고리즘은 이 파이스텔 네트웍에 기반하고 있다. 대칭 키 블록 암호 알고리즘에서 입력값은 키와 평문이며, 이들은 대칭 키 블록 암호 알고리즘의 고정된 루틴을 통하여 암호문으로 변환된다.
도 1은 대칭 키 블록 암호 알고리즘에 사용되는 전형적인 파이스텔 네트워크의 기본 구조를 보여주는 도면이다.
도면을 참조하여,K i(i=1,2,3,…)는 키 스케줄링 알고리즘에 의해 생성된 라운드 키(round key)이며,L 0R 0은 입력된 평문의 왼쪽 절반과 오른쪽 절반이다. 심벌는 배타적 논리합(exclusive OR) 연산을 의미한다. 대칭키 블록 암호 알고리즘의 동작 과정은 다음과 같다.
먼저, 키 스케줄링 알고리즘을 수행하여 라운드 키들K i(i=1,2,3,…)을 생성한다. 각 라운드에서는 알고리즘의 고정된 함수F에 의해 입력R i-1K i의 연산이 수행되고, 그 결과F(R i-1,K i)는L i-1과 배타적 논리합의 연산이 이루어진다.
그리고 최종 연산 결과L i-1 F(R i-1,K i)는 다음 라운드의 입력R i로 제공되며, 전 라운드의 입력R i-1은 다음 라운드의 입력L i로 제공된다. 이와 같은 대칭 키 블록 암호 알고리즘의 수행이 완료되어 최종 라운드에서 출력되는 한 쌍의R r,L r가 암호문이 된다.
이와 같이 대칭 키 블록 암호 알고리즘은 키와 평문이 주어지면 알고리즘에서 기술한 고정된 루틴(고정된 함수)을 통하여 암호문을 생성한다.
한편, 일반적으로 해쉬 함수는 긴 길이의 데이터를 정해진 길이의 데이터로 줄여주는 함수로서 압축 함수(compression function)이라고도 한다. 잘 알려진 바와 같이, 암호에서 사용하는 해쉬 함수는 이와 같은 성질 이외에 약한 충돌회피성(weakly collision-free), 강한 충돌 회피성(strongly collision-free) 그리고 단방향성(one way)등이 요구된다. 해쉬 함수의 가장 대표적인 사용 분야는 전자 서명(digital signature)과 메시지 인증 코드(MAC, Message Authentication Code) 생성이다.
현재까지 여러 종류의 해쉬 함수들이 제안되었다. 대표적인 것으로는 MD5, SHA-1, RIPEMD-160 등이 있다. 그러나 암호에서 해쉬 함수는 메시지 무결성이나 전자서명에 사용되므로 통상적으로 다른 암호 알고리즘과의 결합된 형태로 사용되고 있다. 즉 해쉬와 전자서명 알고리즘의 결합이나, 해쉬 함수와 비밀키 암호 알고리즘의 결합된 사용이 바로 그것이다.
도 2는 해쉬 함수의 전형적인 연산 구조를 보여주는 블록도이다.
도면을 참조하여, 해쉬 함수(F)의 입력 메시지는 전처리(preprocessing) 단계에서 다수개의 블록들 MB1, MB2,…,MBn로 나뉘어 진다. 이때, 필요에 따라 부가적인 비트나 블럭이 추가된다. 해쉬 함수(F)의 초기값(IV)은 미리 정의된 고정된 값이다. 해쉬값(hash value)(HV)을 생성하는 과정은 다음과 같다.
먼저, 전처리 과정에서 입력된 메시지를 다수개의 블록들 MB1, MB2,…,MBn로 나누고, 필요에 따라 부가적인 비트나 블럭을 추가한다. 첫 번째 라운드에서 해쉬 함수(F)에 초기값(IV)과 메시지의 첫 번째 블록(MB1)이 입력되어 연산된다. 첫 번째 라운드에서 연산 결과는 그 다음 메시지 블록(MB2)과 함께 다시 해쉬 함수(F)로 입력되어 연산된다. 이와 같은 연산 과정이 블록 수만큼 진행되어 최종 라운드의연산 결과가 해쉬값(HV)으로 출력된다. 해쉬값은 단축 메시지(message digest)라고도 한다.
이상에 살펴본 바와 같이, 종래의 암호 알고리즘은 입력 값이 주어지면 알고리즘의 고정된 루틴(함수)을 통하여 출력 값을 생성하고, 키와 초기 값과 같이 메시지 이외의 입력을 필요로 한다. 이와 같이, 암호 알고리즘에서 고정된 루틴(함수)을 사용하고, 입력 값을 다른 값으로 변환하는 과정 고정된 값들을 사용하는 것은 다양한 외부 공격에 취약점을 제공하는 원인이 되고 있는 것으로 알려지고 있다.
예를 들어, 기존의 해쉬 함수에서 고정된 루틴과 값의 사용은 해쉬 값의 크기를 결정지어 해쉬 값의 길이가 고정된 성질을 이용하는 생일공격(Birthday Attack)으로부터 안전하고, 충돌 회피성을 만족하는 해쉬 함수 설계가 어렵다.
만약, 입력 값에 따라 알고리즘의 수행 루틴을 달리하며, 입력 값을 다른 값으로 변환하기 위해 입력 값으로부터 임의의 값을 선택하여 사용하며, 메시지 이외의 다른 입력 값을 사용하지 않는다면 상술한 바와 같은 외부 공격에 강한 높은 비도를 확보할 수 있는 암호 알고리즘을 제공할 수 있을 것이다.
따라서, 본 발명의 목적은 상술한 제반 문제점을 해결하기 위해 제안된 것으로서 입력 값을 다른 값으로 변환하기 위해 입력 값으로부터 임의의 값을 선택하여 사용함으로서 입력 값에 따라 알고리즘의 수행 루틴을 달리하며, 메시지 이외의 입력 값을 필요로 하지 않는 다양한 분야에 적용 가능한 암호 알고리즘의 설계 방법을 제공하는데 있다.
도 1은 대칭 키 블록 암호 알고리즘에 사용되는 전형적인 파이스텔 네트워크의 기본 구조를 보여주는 도면;
도 2는 해쉬 함수의 전형적인 연산 구조를 보여주는 블록도; 그리고
도 3은 본 발명의 바람직한 실시예에 따른 암호 알고리즘의 동작 수순을 보여주는 플로우차트이다.
상술한 바와 같은 본 발명의 목적을 달성하기 위한 본 발명의 특징에 의하면, 암호 알고리즘 설계 방법은: 비트 스트링을 입력받는 단계; 상기 입력 비트 스트링으로부터 소정수의 비트들을 선택하여 선택 비트 스트링을 구성하는 단계; 상기 선택 비트 스트링에 의해 알고리즘 수행 루틴을 달리하는 라운드 함수에 의해 상기 입력 비트 스트링을 연산하는 단계를 포함한다.
본 발명의 바람직한 실시예에 있어서, 상기 선택 비트 스트링을 구성하는 단계, 상기 라운드 함수에 의해 상기 입력 비트 스트링을 연산하는 단계 및, 상기 라운드 함수에 의해 연산된 입력 비트 스트링을 출력하는 단계의 라운드 연산이 소정 횟수로 반복되고, 상기 라운드 연산의 반복 횟수는 블록과는 연산이 수행되지 않는 외부에서 입력되는 값 또는 고정된 값이다.
본 발명의 바람직한 실시예에 있어서, 상기 입력 비트 스트링은 N비트의 단위 블록이 n개 연접한 비트 스트링으로 구성되고, 상기 선택 비트 스트링은 입력 비트 스트링의 n개의 N 비트 블록에서 지정된 비트(들)를 선택하여 연접하여 구성된다.
본 발명의 바람직한 실시예에 있어서, 상기 라운드 함수는 복수개의 전단사 함수들의 집합으로 구성된 복수개의 함수 집합으로 구성되고, 상기 라운드 함수에서 상기 비트(들)들에 의해 특정되는 라운드 함수들로 상기 입력 비트 스트링의 단위 블록들을 연산하여 다음 라운드의 입력 비트 스트링으로 제공된다.
본 발명의 바람직한 실시예에 있어서, 상기 라운드 함수에 의해 연산된 입력 비트 스트링으로부터 소정수의 비트들을 출력 비트 스트링으로 선택하는 단계를 더 포함한다.
본 발명의 바람직한 실시예에 있어서, n개의 N 비트 블록이 M개인 경우에 상기 라운드 블록으로부터 선택된 비트 스트링과 선택된 비트 스트링에 의해 특정된 연산을 한 결과 라운드 블록으로부터 선택된 비트 스트링을 연산하여 새로운 값을 생성하는 단계를 라운드 수만큼 반복하고, 각각의 라운드 함수 결과 값을 연산하여 새로운 하나의 결과 값을 생성하는 과정을 M번 반복하여 생성된 M개의 결과를 연산하는 단계를 더 포함한다.
본 발명의 실시예는 여러 가지 형태로 변형될 수 있으며, 본 발명의 범위가 아래에서 상술하는 실시예로 인해 한정되어 지는 것으로 해석되어져서는 안 된다. 본 실시예는 당업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 명확하게 설명하기 위해서 제공되어지는 것이다.
(실시예)
이하, 본 발명에 따른 실시예를 첨부된 도면을 참조하여 상세히 설명한다.
도 3은 본 발명의 바람직한 실시예에 따른 암호 알고리즘의 동작 수순을 보여주는 플로우차트이다.
도면을 참조하여, 본 발명의 암호 알고리즘에 의한 암호화 과정은 먼저, 단계 S10에서 N비트(bit)의 단위 블록이 n개 연접한 비트 스트링(B0)을 입력받는다. 입력 비트 스트링(B0)은 하기 수학식 1과 같이 표시할 수 있다.
B0=B1 0∥B2 0∥…∥Bn 0
상기 수학식 1에서 윗첨자로 표시되는 심벌은 라운드 차수를 표시하는 것으로 예를 들어, 'B0'은 라운드 연산이 수행되지 않은 초기 입력 비트 스트링을 표시한다. 그리고 심벌'∥'은 연접을 의미한다.
이어지는 단계 S20은 라운드 연산이 i=1에서 R까지 반복 수행되는 루틴으로서 이하 설명될 단계 S21에서 단계 S27까지 처리 과정이 지정된 라운드 횟수(R) 만큼 반복된다. 라운드 횟수(R)는 반복 횟수는 블록과는 연산이 수행되지 않는 외부에서 입력되는 값 또는 고정된 값이다.
단계 S21에서 제1 선택함수(S 1)에 의해 (i-1)차 라운드 연산이 수행된 입력 비트 스트링(Bi-1)으로부터 임의 개수의 비트들을 추출하여 선택 비트 스트링(Xi-1)을 구성하며, 하기 수학식 2와 같이 표시할 수 있다.
Xi-1=X1 i-1∥X2 i-1∥…∥Xn i-1
본 발명의 바람직한 실시예에 있어서, 선택 비트 스트링(Xi-1)을 구성하는 방법은, 도 4를 참조하여, 입력 비트 스트링(Bi-1)의 각 단위 블록들(B1 i-1, B2 i-1,…, Bn i-1)에서 지정된 비트(또는 비트들)를 선택하여 구성할 수 있다. 예를 들어, 입력 비트 스트링(Bi-1)이 8비트의 단위 블록이 16개 연접한 것이라면, 8비트 단위 블록에서 각기 8번째 비트를 선택하여 16비트의 선택 비트 스트링(Xi-1)을 구성할 수 있다. 여기서 각 블럭들(B1 i-1, B2 i-1,…, Bn i-1)에서 선택되는 비트들(X1 i-1, X2 i-1, …,Xn i-1)은 1비트로 한정되는 것은 아니며 알고리즘의 특성에 따라 변경될 수 있다.
본 발명의 바람직한 실시예에 있어서, 선택 비트 스트링(Xi-1)을 구성하는 방법들로는 (B1 i-1||B2 i-1)(Bn-1 i-1||Bn i-1)에 의하여 16비트의 선택 비트 스트링을 구성할 수 있으며, 각각의 서브블록의 패리티 비트를 선택하여 16비트의 선택 비트스트링을 구성할 수 있다. 심벌는 배타적 논리합을 의미한다.
단계 S22는 (i-1)차의 입력 비트 스트링(Bi-1)의 각 블럭들(B1 i-1, B2 i-1,…, Bn i-1)에 대한 라운드 연산이 j=1에서 n까지 반복 수행되는 단계이다. 이 반복 연산은 단계 S23의 라운드 함수(F)에 의해 수행된다.
F={1≤j≤n| Fj} (j는 양의 정수)
F j={1≤k≤2m, m=|Xj i-1| | fk} (|Xj i-1|는 Xj i-1의 비트 사이즈)
상기 수학식 3은 라운드 함수(F)를 집합기호로 표시한 것으로, 라운드 함수(F)는 복수개의 전단사 함수들(f1, f2, f3,…,fk)을 갖는 함수 집합(F 1,F 2,F 3,…,F j)들로 구성된다. 라운드 함수(F)는 (i-1)차의 선택 비트 스트링(Xi-1)의 각 단위 비트들(X1 i-1, X2 i-1, …,Xn i-1)에 의해 복수개의 함수 집합들에서 하나의 함수로 특정되어진다.
그림으로 단계 S24에서는 (i-1)번째의 입력 비트 스트링(Bi-1)의 각블럭들(B1 i-1, B2 i-1,…, Bn i-1)과 이에 대응되는 선택 비트 스트링(Xi-1)의 각 단위 비트들(X1 i-1, X2 i-1, …,Xn i-1) 중에서 (j-1)번째에 해당되는 것들이 순차적으로 특정되는 라운드 함수(F j)의 인수로 전달되어 라운드 연산이 수행된다. 이를 수학식으로 표시하면 하기 수학식 4와 같다.
Cj i=F j(Cj-1 i-1, Xj i-1)
본 발명의 바람직한 실시예에 있어서, Fj는 Xj i-1에 의해 특정 서브블록이나 특정 비트들을 보수 취하는 함수를 선택적으로 포함하고, 특정 비트들의 쌍을 전이하는 함수를 선택적으로 포함하고, 블록이나 서브 블록을 좌순환이동이나 우순환이동을 하는 함수를 선택적으로 포함하고, 서브블록간의 배타적 논리곱이나 논리합 연산을 하는 함수를 선택적으로 포함하고, 블록이나 서브 블록에 대하여 방향을 고려한 S-XOR나 S-XNOR를 수행하는 함수를 선택적으로 포함하고, 서브블록간에 AND와 OR을 수행하는 함수를 선택적으로 포함한다.
S-XOR는 연산 블록이 b1b2…bs이고 방향이 우측인 경우, bs=bs b1연산을 수행하고, bt=bt bt+1연산을 t=s-1 에서 1 까지 반복 수행한다. 함수 S-XNOR는 상술한 S-XOR의 연산 과정에서 배타적 논리합 연산을 배타적 논리곱 연산으로 수행하는 것으로 반복 설명은 생략한다.
서브블록간의 배타적 논리곱이나 논리합 연산을 하는 함수의 예를 들어, Cj-1 i-1,가 '10001011'(이진수)이고, Xj i-1가 '0'(이진수)이라고 하고, Xj i-1에 의해 특정되어지는 라운드 함수(F j)가 Cj-1 i-1의 오른쪽 절반과 왼쪽 절반의 비트들을 서로 XOR연산하여 Cj-1 i-1의 오른쪽 절반의 비트를 새롭게 설정하는 함수라 하면,F j(10001011,0)의 연산 결과 Cj i-1는 '00111011'이 된다. 여기서, Xj i-1가 '1'(이진수)인 경우 Xj i-1에 의해 특정되어지는 라운드 함수(F j)가 Cj-1 i-1의 오른쪽 절반과 왼쪽 절반의 비트들을 서로 XOR연산하여 Cj-1 i-1의 왼쪽 절반의 비트를 새롭게 설정하는 함수라 하면,F j(10001011,0)의 연산 결과 Cj i-1은 '10000011'이 된다.
단계 S22에서 라운드 함수(F)에 의한 반복 연산이 완료되면, i번째 라운드 연산 결과의 입력 비트 스트링(Bi)은 단계 S26에서는 제2 선택 함수(S2)에 의해 |Y|비트의 출력 비트 스트링(Y i )이 선택되고, 단계 S27에서 선택된 출력 비트스트링(Yi)이 출력된다.
이상과 같이, 단계 S21에서 S27의 라운드 연산 과정이 R 라운드 반복되면 본 발명의 암호 알고리즘에 의한 암호화 과정이 완료된다. 단계 S26은 선택적으로 수행될 수 있다. 단계 S26가 생략된 경우 단계 S27에서의 최종 출력 비트 스트링은 BR이 된다.
본 발명의 암호 알고리즘은 해쉬 함수, 키 스케줄링 알고리즘, 발명자 정의 용어로 키와 다른 입력 값을 이용하지 않고 메시지 자체 정보만을 이용하는 메시지 자체의 암호화 등에 응용될 수 있다. 예를 들어, 메시지 자체를 암호화하는 경우에 단계 S24가 생략된 경우로서 암호화된 최종 출력 비트 스트링은 BR이 출력된다.
해쉬 함수에 응용되는 경우에는 n개의 N 비트 블록이 M개인 경우에 상기 암호 과정에서 Xi-1과 S2(Bi)를 연산하여 새로운 값을 생성하는 과정을 R 라운드 반복하여 생성된 R개의 값들을 연산하여 하나의 결과 값을 생성하고, 이와 같은 과정을 M개의 블록에 대하여 수행한 후 생성된 M개의 값들을 연산하여 생성된 하나의 값을 해쉬 값으로 한다.
본 발명의 바람직한 사용 예로서, Xi-1과 S2(Bi)의 연산은 두 비트 스트링에서 같은 위치에 있는 비트 값이 같으면 그 위치에 있는 비트 값을 선택하거나 비트 값이 다르면 그 위치에 있는 비트 값을 선택한다.
Y 값들을 Y1, Y2,…, YR으로 표현했을 때, Y 값들을 연산하는 예로는 (|Y1|+ |Y2|+…+|YR|)/R을 계산 한 후 Y 값들을 연접하고, 연접한 비트 스트링을 |Y1|+ |Y2|+…+|YR|)/R 크기로 나누어 생성한 비트 스트링들을 Z1||Z2||…||ZR이라고 했을 때, Z1 Z2 ZR결과를 M개의 블록 중에서 한 블록의 결과 값으로 하는 과정을 M회 반복한다. M번의 반복에 의해 생성된 값들을 A1,A2,…, AM이라고 했을 때, 상기 방법과 동일한 과정을 통하여 생성된 최종 결과 값을 해쉬 값으로 한다.
그리고 키 스케줄링 알고리즘에 응용되는 경우에는 최초 입력 비트 스트링(B0)은 키 값이 되고, 출력 비트 스트링 Yi는 라운드 키값이 된다.
상술한 바와 같은, 본 발명의 바람직한 실시예에 따른 암호 알고리즘 설계 방법을 첨부된 도면에 따라 설명하였지만, 이는 예를 들어 설명한 것에 불과하며 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능하다는 것을 이 분야의 통상적인 기술자들은 잘 이해할 수 있을 것이다.
이상과 같은 본 발명에 의하면, 입력 값에 따라 알고리즘의 수행 루틴을 달리하며, 입력 값을 다른 값으로 변환하기 위해 입력 값으로부터 임의의 값을 선택하여 사용하고, 메시지를 암호화하기 위하여 메시지로부터 유도된 값만을 이용하고블록과의 연산을 위하여 키와 다른 입력 값을 필요로 하지 않는 암호화 방법을 사용함으로서 키를 대표하는 라운드 키를 생성하며, 생일 공격으로부터 안전하고 충돌 회피성을 만족하는 해쉬 함수 설계가 가능하며, 자체 암호화 방법이 응용분야에 적용 가능한 암호 알고리즘을 제공할 수 있다.

Claims (5)

  1. 비트 스트링을 입력받는 단계;
    상기 입력 비트 스트링으로부터 소정수의 비트들을 선택하여 선택 비트 스트링을 구성하는 단계;
    상기 선택 비트 스트링에 의해 알고리즘 수행 루틴을 달리하는 라운드 함수에 의해 상기 입력 비트 스트링을 연산하여 다음 라운드의 입력 비트 스트링으로 주어지는 과정이 소정 횟수로 반복되고, 상기 라운드 연산의 반복 횟수는 블록과는 연산이 수행되지 않는 외부에서 입력되는 값 또는 고정된 값을 이용하며 최종 라운드 블록을 출력하는 암호 알고리즘 설계 방법.
  2. 제1 항에 있어서,
    상기 선택 비트 스트링을 구성하는 단계, 상기 라운드 함수에 의해 상기 입력 비트 스트링을 연산하는 단계 및, 상기 라운드 함수에 의해 연산된 입력 비트 스트링을 출력하는 단계의 라운드 연산이 소정 횟수로 반복되고, 상기 라운드 연산의 반복 횟수는 블록과는 연산이 수행되지 않는 외부에서 입력되는 값 또는 고정된 값을 이용하며, 각각의 라운드 함수 결과 값으로부터 선택된 비트스트링을 출력하는 단계가 추가되고 마지막 라운드 블록을 출력하는 부분은 제거된 암호 알고리즘 설계 방법.
  3. 제1 항 또는 제2 항에 있어서,
    상기 입력 비트 스트링은 N비트의 단위 블록이 n개 연접한 비트 스트링으로 구성되고, 상기 선택 비트 스트링은 입력 비트 스트링의 n개의 N 비트 블록에서 지정된 비트(들)를 선택하여 연접하여 구성하는 암호 알고리즘 설계 방법.
  4. 제1 또는 제2 항에 있어서,
    상기 라운드 함수는 복수개의 전단사 함수들의 집합으로 구성된 복수개의 함수 집합으로 구성되고,
    상기 라운드 함수에서 상기 선택 비트 스트링의 n개의 비트(들)들에 의해 특정되는 함수의 가능한 2n개의 라운드 함수로 상기 입력 비트 스트링을 연산하여 다음 라운드의 입력 비트 스트링으로 제공하는 암호 알고리즘 설계 방법.
  5. 제2 항 또는 제3 항에 있어서,
    n개의 N 비트 블록이 M개인 경우에 상기 암호 과정에서 Xi-1과 S2(Bi)를 연산하여 새로운 값을 생성하는 과정을 R 라운드 반복하여 생성된 R개의 값들을 연산하여 하나의 결과 값을 생성하고, 이와 같은 과정을 M개의 블록에 대하여 수행한 후 생성된 M개의 값들을 연산하여 생성된 하나의 값을 출력하는 암호 알고리즘 설계 방법.
KR1020010037748A 2001-06-28 2001-06-28 키를 사용하지 않고 블록 정보만을 이용하는 암호알고리즘 설계 방법 KR20030001888A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020010037748A KR20030001888A (ko) 2001-06-28 2001-06-28 키를 사용하지 않고 블록 정보만을 이용하는 암호알고리즘 설계 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020010037748A KR20030001888A (ko) 2001-06-28 2001-06-28 키를 사용하지 않고 블록 정보만을 이용하는 암호알고리즘 설계 방법

Publications (1)

Publication Number Publication Date
KR20030001888A true KR20030001888A (ko) 2003-01-08

Family

ID=27711973

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010037748A KR20030001888A (ko) 2001-06-28 2001-06-28 키를 사용하지 않고 블록 정보만을 이용하는 암호알고리즘 설계 방법

Country Status (1)

Country Link
KR (1) KR20030001888A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101112157B1 (ko) * 2010-01-25 2012-02-22 주식회사 인쿠시스 데이터 암호화 방법
KR20190111643A (ko) * 2018-03-23 2019-10-02 삼성에스디에스 주식회사 텍스트 데이터 복호화를 위한 데이터 처리 방법 및 그 데이터 처리 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724428A (en) * 1995-11-01 1998-03-03 Rsa Data Security, Inc. Block encryption algorithm with data-dependent rotations
KR19980027398A (ko) * 1996-10-16 1998-07-15 구자홍 확장된 페이스텔 네트워크의 암호화 방법
US5909494A (en) * 1997-02-14 1999-06-01 At&T Corp. System and method for constructing a cryptographic pseudo random bit generator

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724428A (en) * 1995-11-01 1998-03-03 Rsa Data Security, Inc. Block encryption algorithm with data-dependent rotations
KR19980027398A (ko) * 1996-10-16 1998-07-15 구자홍 확장된 페이스텔 네트워크의 암호화 방법
US5909494A (en) * 1997-02-14 1999-06-01 At&T Corp. System and method for constructing a cryptographic pseudo random bit generator

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101112157B1 (ko) * 2010-01-25 2012-02-22 주식회사 인쿠시스 데이터 암호화 방법
KR20190111643A (ko) * 2018-03-23 2019-10-02 삼성에스디에스 주식회사 텍스트 데이터 복호화를 위한 데이터 처리 방법 및 그 데이터 처리 장치

Similar Documents

Publication Publication Date Title
Alenezi et al. Symmetric encryption algorithms: Review and evaluation study
JP6519473B2 (ja) 認証暗号装置、認証暗号方法および認証暗号用プログラム
US8787563B2 (en) Data converter, data conversion method and program
KR100296958B1 (ko) 블록 데이터 암호화 장치
US20020048364A1 (en) Parallel block encryption method and modes for data confidentiality and integrity protection
US20020122554A1 (en) Device for and method of one-way cryptographic hashing
US20120314857A1 (en) Block encryption device, block decryption device, block encryption method, block decryption method and program
Yoshida et al. Analysis of a SHA-256 variant
EP2137856A1 (en) A simple and efficient one-pass authenticated encryyption scheme
WO2013065241A1 (ja) インクリメンタルmacタグ生成装置、方法及びプログラム並びにメッセージ認証装置
US11463235B2 (en) Encryption device, encryption method, program, decryption device, and decryption method
JP2008513811A (ja) 計算変換の方法及びシステム
Tiwari et al. A secure and efficient cryptographic hash function based on NewFORK-256
KR20050078271A (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
Teh et al. A Chaos‐Based Authenticated Cipher with Associated Data
CN102946315B (zh) 一种采用分组方式构造mac码的方法及系统
Sakib Analysis of Fundamental Algebraic Concepts and Information Security System
KR20030019365A (ko) 메시지 인증 코드에 대한 키 정수 치환 발생 방법 및 장치
KR20080044150A (ko) 블록암호 해쉬 운영모드의 압축함수 설계 장치 및 방법
WO2021171543A1 (ja) 認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法および記録媒体
JP2002510058A (ja) 2進データ・ブロックの暗号変換のための方法
KR20030001888A (ko) 키를 사용하지 않고 블록 정보만을 이용하는 암호알고리즘 설계 방법
Abad et al. Enhanced key generation algorithm of hashing message authentication code
Rohit et al. Practical Forgery attacks on Limdolen and HERN
Narayanaswamy et al. HIDE: Hybrid symmetric key algorithm for integrity check, dynamic key generation and encryption

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application