KR20020050680A - 행열 다항식 환 과 체를 기반으로 한 공개키 암호시스템 - Google Patents
행열 다항식 환 과 체를 기반으로 한 공개키 암호시스템 Download PDFInfo
- Publication number
- KR20020050680A KR20020050680A KR1020000079957A KR20000079957A KR20020050680A KR 20020050680 A KR20020050680 A KR 20020050680A KR 1020000079957 A KR1020000079957 A KR 1020000079957A KR 20000079957 A KR20000079957 A KR 20000079957A KR 20020050680 A KR20020050680 A KR 20020050680A
- Authority
- KR
- South Korea
- Prior art keywords
- polynomial
- public key
- vecdeg
- col
- matrix
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3093—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Facsimile Transmission Control (AREA)
- Storage Device Security (AREA)
Abstract
다항식의 환과 체의 연산을 행열에 적용시킨 본 암호는 확률론적 공개키 암호이다. 본 암호가 사용하고 있는 암호화 및 복호화 방법은 다항식의 차수를 바탕으로 하고 있는데 기존의 암호에서는 찾아 볼 수 없는 성질중의 하나이다. 본 암호의 특징은 매우 빠른 암호화, 복호화, 전자서명에 있다.
Description
기존의 암호 중에서 다항식 환 및 체 에서의 연산을 이용하여 암호를 만들려고 많은 시도는 있어왔으나 다른 암호에 배해 속도가 효율적이지 못해 실용성에 한계를 가져왔다.
본 발명은 새로운 일방향 함수를 발견하고, 이 함수를 이용하여 새로운 확률론적 공개키 암호시스템을 만들었다.
다항식 환과 체의 복합적인 연산으로 이루어진 복합 다항식을 행열의 구성원소로 삼아 , 비교적 적은 연산으로 암호화/복호화 수행 방법을 개발하여 기존의 공개키 암호의 단점인 암호화/복호화 속도의 느린 점을 극복하였다.
문자 데이터는 물론 음성데이터조차 실시간으로 송수신 할 수 있는 매우 빠른 암호화, 복호화, 전자서명 가능한 공개키 암호시스템 개발 및 pager등에서 매우 빠른 key 생성기능을 이용한 안전한 정보교환 및 매우 빠른 실시간 전자서명 지원 시스템 개발.
공개키 암호시스템이란 두 사람이 안전한 통신을 하기위해 별도의 비밀키를교환하기 위한 통로가 필요없는 암호시스템이다.
가장 널리 쓰이고 있는 공개키 암호시스템인 RSA암호시스템은 정수의 소인수분해문제의 어려움에 근거하고 있는데 안전성은 보장받고 있으나 key생성 시간 , key-size , 암호화, 복호화 시간 등 여러 측면에서 매우 비효율적이어서 그 응용에는 한계가 있다. 또 다른 시스템으로는 1985년 key-size측면에서는 매우 우수한 타원곡선 암호시스템(ECC)가 제안되어 현재 사용중이나 이 시스템 또한 구현이 어렵고 속도가 느리다는 단점을 지니고 있으며 key생성시간이 오래 걸린다는 단점을 지니고 있다. 그러나 1996년 비정역 다항식 환에서의 다항식의 연산을 이용한 공개키 암호 시스템인 NTRU 가 제안되었다. 이 시스템은 이전의 공개키 암호시스템보다 속도 및 key 생성시간이 매우 짧다. 그리고 구현이 용이해서 참 효율적인 연산처리가 가능하다. 그러나 항상 복호화가 성공적이지는 않으며 전자서명 방법이 비효율적이라는 단점을 지니고 있다. 여기서 제안하고자 하는 암호시스템은 암호화, 복호화 원리관점에서만은 NTRU와 유사하지만 암호의 핵심인 trap-door 일방향 함수는 전혀 다르다. 본 발명의 장점은 암호화, 복호화, message 인증 및 서명법 등에서는 매우 효율적이라는 점이다.
현존하는 공개키로 전자서명을 수행하고자 할 때 동시 접속자가 적을 때는 별 문제없이 수행되지만 동시접속자가 많은 서버인 경우는 부하가 걸린다. 하지만 본 암호를 이용하여 PKI를 구축시 기존의 암호시스템인 RSA를 사용시 보다 100배이상 빠를 것으로 생각된다. 매우 빠르고 효율적인 암호화/복화화 및 전자서명을 지원하는 본 암호시스템을 이용하여 온라인 뱅킹과 같은 전자상거래 사이트 뿐만 아니라 인터넷 폰등의 안전한 통신에도 크게 기여 할 수 있다. 그리고 경제적인 측면에서 , 기존의 암호로는 핸드폰 등에 보안 적용에 비효율 적이다. 그러나 본 암호 사용시 충분히 경제적으로 무선통신보안을 할 수 있을 것이다.
A . 복합 다항식의 계수에 차수 바탕으로 한 크기 mechonism을 적용한 공개키 암호시스템.
본문에서 사용될 문자들에 대한 정의는 다음과 같다.
Z [x] : 정수를 걔수로 가지는 다항식.
p는 소수(prime number).
irred는 환 FF = Z [x]/<p>에서의 랜덤하게 선택된 기약다항식.
환 F = Z [x]/<p,irred>.
환 S = F [x]/<p, Q > : 복합 다항식을 원소로 가지는 환
환 SS = (Z [x]/<p, P 1,>)/< p,Q>
복합 다항식 행열 : 행의 수가 정수 row 값을 가지고 열의 수가 정수 col값을 가지며 각 (i,j) 원소는 환 S 의 원소로 가지는 행열.
먼저 F 의 원소 에 대해 deg(f) = MAX{ i | a i ≠0,i=0,1,2,...,N-1 } 로 정의하자.
그리고, F 의 원소f 0,f 1,f 2,...,f N -1에 대해 , 각f i 를x i 의 계수로 가지는 차수가 N -1 인 복합 다항식f를 만들자. 이f를f= (f 0,f 1,f 2,...,f N -1) 로 표현하자.즉,을 의미한다.
만일f가 복합 다항식이라면 maxdeg(f) =
MAX { deg(f 0), deg(f 1), deg(f 2),..., deg(f N -1) } 로 정의하고
mindeg(f) = MIN { deg(f 0), deg(f 1), deg(f 2),..., deg(f N -1) }
f가 복합다항식 원소f i 들을 가지는 1×ro w 벡터라면 ,
f= (f 0,f 1,...,f ro w -1) 에 대해 vecdeg(f) = MAX{ maxdeg (f i )| i = 0,1,2,..., row-1 }
로 정의한다. 1×col벡터들에 대해서도 동일하게 정의한다.
f가 복합다항식 원소f i,j 들을 (i,j) 원소로 가지는ro w ×col,col×col행열이라면 matdeg(f) = MAX{ maxdeg (f i.j )| i,j = 0,1,2,... , row-1,col-1 }
로 정의한다. 이때 행열의 행열값을 det(f) 로 표현하기로 한다.
[1]. Key 생성하기
아래에서 P 1∈ F 이고C는ro w ×col행열이며,f는col×col행열이다.
그리고,M은 1×col벡터이고R은 1×ro w 벡터이다.
Step 1> 먼저 사용할p소수를 결정하자.그리고 아래의 차수 및 기타 조건을만족하도록 각 정수 matdeg,maxdeg,deg값들도 결정하자. 각 정수가 클수록 암호시스템은 더 안전해지나 복호화 속도가 감소한다.
1.1> 본 암호시스템이 지원하기를 원하는 복잡도인 pow를 결정한다.참고로 pow 값이 64이면 264정도의 복잡도를 가진다.
1.2> 본 암호시스템에서 사용할 행열의 사이즈인 자연수 row , col를 결정한다.
1.3> non-zero 복합 다항식 행열C에 대해 matdeg(C) 를 결정한다.
1.3>p (mat deg( f )+1)* N * col > 2 po w 를 만족하도록 하는 두 자연수 matdeg( f ),N을 결정한다.
1.4> matdeg(f) < deg( P 1)이고를 만족하는 deg( P 1)을 결정한다.
1.5> deg( P 1)+matdeg(f) ≤ deg(irre d ) 를 만족하도록 deg(irre d )을 결정한다. deg(irre d )값은 주어진 식을 만족하는 범위 내에서 작을수록 암호화 및 복호화가 빠르다.
1.6> vecdeg(M) < deg( P 1) 이고p ( vec deg( M )+1)* N * col > 2 po w 이도록 vecdeg(M) 을 선택한다.--> 일반적으로 vecdeg(M) = deg( P 1)-1 이도록 vecdeg(M)을 선택한다.
1.7> vecdeg(R) + deg( P 1) + matdeg(C) < deg(irre d ) 와 p( vec deg( R )+1)* N * ro w > 2 po w 를 만족하도록 vecdeg(R)을 결정한다. --> 일반적으로 vecdeg(R) + deg( P 1) + matdeg(C) = deg(irre d )-1 이도록 maxdeg(R)를 선택한다.
Step 2> 다항식 Q 를 차수가 N 이고 환 FF 안에서 기약 다항식 , 또는x N -c모양의 다항식으로 선택한다.x N -c모양의 다항식으로 선택시 암호화 및 복호화 속도가 우수하다.
Step 3> 위에서 결정된 deg(irred)를 차수로 가지는 기약 다항식을 선택하여 다항식의 체 F = Z [x]/<p,irre d > 라 구성하자. 그리고 다항식의 환 S = F [x]/<p, Q > 도 구성하자.이때 수학적으로 all one polynomial 등과 같이 체에서 매우 빠른 다항식 곱셈을 지원하는 기약다항식을 선택하는 것이 좋다.
Step 4> 위 차수조건을 만족하고 환 FF 안에서 기약인 다항식 P 1을 gcd(irred , P 1)= 1 과 gcd( P 1, Q ) = 1을 만족하는 범위내에서 랜덤하게 선택한다.
Step 5> 환 S 안에서 다항식f i,j = (f i,j, 0,f i,j, 1,f i,j, 2,...,f i,j , N -1)를 가능한 mindeg(f i,j ) = maxdeg(f i,j )=matdeg(f) 이도록 랜덤하게 선택하자.( 단,0≤i<col,0≤j<col). 이렇게 만들어진f i,j 값을 원소로 가지는 복합 다항식 행열을f라 합니다. 환 s 안에서 * 에 대한 행열 f 의 역행열과 환 SS = (Z[x]/<p, P 1>)/<p, Q > 에서 일반적인 복합 다항식의 곱셈 연산에 대한f의 역행열 둘다 존재할 때 까지 랜덤한f를 선택하기를 반복하자. 각각의 두 역원을이라 하자.
Step 6> 위 차수조건 maxdeg(C i,j ) ≤matdeg(C)를 만족하는 랜덤한 복합 다항식C i,j 를 원소로 가지는ro w ×col행열
를 구성한다
(단 ,C i,j = (c i,j, 0,c i,j, 1,...,c i,j , N -1)이고0≤i<ro w ),0≤j<col)
그리고ro w ×col행열
를 구성하자.
Step 7> 공개키 H = P * F Q 를 만들자.
< 단 , 복합 다항식 H i,j = (h 0,h 1,...,h N -1) >
그리고 만약 row=col인 경우는 , H 의 각 원소를 환 S = F[x]/<p, Q >안에서 연산했을 때 , 역행열을 가지는지 조사하자. 역행열이 존재치 않으면 Step 4부터 다시 수행하자. H 의 역행열은 gcd(det( H ) , Q ) = 1 일때만 존재한다.
공개키 : N ,p,irre d , Q , H , vecdeg(M) , vecdeg(R)
비밀키 : P 1,C,f,, F Q
[2] 암호화 하기
보내고자 하는 메시지를M= (M 0,M 1,...,M col -1)으로 표현한다.( 단, 복합 다항식M i= (m i ,0, m i ,1,...,m i,N -1) 의 maxdeg(M i )는 위 차수조건 vecdeg(M) 값과 같거나 작도록 한다.) 그리고 각 메시지 암호화시마다 랜덤하게 선택되는 non-zero vectorR= (R 0,R 1,...,R ro w -1)을 생성하자. (단,복합 다항식R i= (r i ,0,r i, 1,...,r i,N -1) 의 maxdeg(R i )는 의 차수조건 vecdeg(R) 값과 같거나 작도록 한다. ) 그리고 나서 다음과 같은 연산으로 암호화를 수행한다.
M+R* H ≡ E 가 암호화된 결과.(단 , * 는 행열의 곱셈연산 )
E =( E 0, E 1,..., E col -1) ( 단 , E i= (e i ,0,e i, 1,...,e i,N -1) )
이 값을 메시지 수신자에게 보낸다.
[4] 복호화 하기
메시지 Receiver 는 E 값으로부터 자신의 비밀키들을 이용하여 다음과 같이 원래 메시지M을 구할 수 있다.
1. E *fMod Q = A = ( A 0, A 1,..., A col -1)
(단 ,복합 다항식A i= ( a i ,0, a i ,1,..., a i,N -1) ( 단 Mod 는 환 S = F [x]/<p,Q> 안에서의 나누기 연산이다. )
2. A imod P 1= ( a i, 0mod P 1, a i ,1mod P 1,..., a i , N -1mod P 1)=AA
( 단,i ∈{ 0, 1, 2 , 3 , 4 , ... , col-1 } )
3. AA *≡MM을 얻는다.( 단 * 는 환 SS = (Z[x]/<p, P 1>)/<p, Q > 안에서의 연산이다. )
이때 수신자는MM=M임을 확인 할 수 있다.
[5] 전자서명방법
일반적으로 vecdeg(M) = deg( P 1)-1 , vecdeg(R)=deg(irre d )-1-deg( P 1)-matdeg(C) 이도록 선택한다. 일반적으로 전자서명 성립 확률은
( 메시지M경우의 수 ×R의 경우의 수 )/ ( 암호화된 메시지 공간 ) =
이다. 특수한 경우로 matdeg(C) = 0 ,ro w =col으로 잡으면 전자서명이 될 확률은이므로 거의 100% 라고 할 수 있다.
다음은 전자서명 수행 절차이다.
다음의 가정아래 전자서명법을 설명하고자 한다.
가정 1 : deg(irre d A) = deg(irre d B ) , deg( Q A ) = deg( Q B ) .
가정 2 : A , B 는 동일한 해쉬함수를 사용한다. 그리고 송신자 A 가 보내고자 하는 메시지 m을 해쉬 했을 때 나온 값을 여기서는 편의상M이라 하기로 한다.
참고로 현실적으로 가정 2는 대부분 참이므로 별 문제가 되지 않는다. 그러나 가정 1은 틀린 경우가 많다. 가정 1이 만족되지 않는 경우의 전자서명방법은 아래 방법을 약간 변형한 사소한 기술에 지나지 않으므로 생략하기로 한다.
Step 1: A가 B에게 messageM에 전자서명을 하여 보내고자 한다고 하자. 먼저 B의 vecdeg(M B ) ,vecdeg(R B )값을 읽는다. 이때 messageM=h(m)에 전자서명한 문서를 복합 다항식 1 ×col벡터로 표현하자. 그 벡터를M A 라 하자.
Step 2 : vecdeg(RR A ) 값이 vecdeg(R B )이고 랜덤 복합 다항식으로 이루어진 1 ×ro w 행열 벡터RR A 을 생성한다. 그리고 나서 먼저 A는 B의 공개키 H B 를 사용하여 수신자 B 의 다항식 환 안에서의 연산으로 다음과 같이 암호화 한다.
E B (M A ) ≡M A +RR A * H B Mod Q B
Step 3 : E B (M A ) 값으로부터 A 자신의 공개키 및 비밀키를 이용하여 먼저 복호화 과정을 통하여M을 구한다.
E B (M A ) ≡M+R* H A 을 만족시키는M과R은 거의 항상 존재하므로 다음과 같이M과R을 구한다. 그리고 A 는 자신의 환에서를 구한 후 아래와 같은 방법으로R을 구한다.
( E B (M A ) -M) *≡R
Step 4 : 이렇게 구해진M과R로부터 얻어진 vecdeg(M) 과 vecdeg(R) 값이 A 의 공개키 값 vecdeg(M A ) 과 vecdeg(R A ) 이하인지를 각각 체크한다.
매우 높은 확률로 이 조건은 만족되므로 별 문제가 되지 않는다. 참고로 이 조건을 만족하지 않는M과R이 생성될 확률은 거의 10 -10이하이다.
만약 만족하지 않으면 Step 1에서 h(m) = M 값의 끝 5비트를 변경하여 이 값으로부터 새로 벡터M A 를 구성한 후 만족될 때 까지 Step2 -Step 4를 반복한다.무한 루프로 빠질 확률은 거의 0이므로 걱정할 사항은 없다.
Step 5 :M과R을 B에게 보낸다.
Step 6 . B는M과R을 받은 후 A가 보낸지 확인하기 위해 먼저 받은M과R의 vecdeg(M) , vecdeg(R)값이 송신자 A 의 공개키 값 vecdeg(M A ) 과 vecdeg(R A ) 이하인지를 각각 체크한다. 만족시키는지 확인한다. 만약 만족시키지 않으면 서명을 거부한다. 이를 만족시키면 공개키 H A 를 이용하여 E B (M A )을 계산한다.
E B (M A ) ≡M+R* H A
Step 7 . 그리고 E B (M A ) 를 B의 비밀키f B 를 이용하여 원래 전자서명된 문서M A 를 위 복호화 과정을 통해 구한다.
B .복합 다항식의 차수를 바탕으로 한 크기 mechonism을 적용한 공개키 암호시스템.
본문에서 사용될 문자들에 대한 정의는 다음과 같다.
Z [x] : 정수를 계수로 가지는 다항식.
p는 소수(prime number).
irre d 는 환 FF = Z [x]/<p>에서의 랜덤하게 선택된 기약다항식.
환 F = Z [x]/<p,irre d >.
환 S = F[x]/<p, Q > : 복합 다항식을 원소로 가지는 환
환 SS = (F[x]/<p, P 1>)
복합 다항식 행열 : 행의 수가 정수 row 값을 가지고 열의 수가 정수 col값을 가지며 각 (i,j) 원소는 환 S 의 원소로 가지는 행열.
먼저 F 의 원소에 대해 deg(f) = MAX{ i | a i ≠0,i=0,1,2,...,N-1 } 로 정의하자.
그리고, F 의 원소f 0,f 1,f 2,...,f N -1에 대해 , 각f i 를x i 의 계수로 가지는 차수가 N -1 인 복합 다항식f를 만들자. 이f를
f= (f 0,f 1,f 2,...,f N -1) 로 표현하자. 즉,f=f 0+f 1*x+f 2*x 2+...+f N -1*x N -1을 의미한다.
만일 f 가 복합 다항식이라면
len (f) = MAX {i+1 |f i ≠0,i=0.1.2.,,,.N-1 },
deg(f) = MAX {i |f i ≠0,i=0.1.2.,,,.N-1 }로 정의하기로 한다.
f 가 복합다항식 원소f i 들을 가지는 1 ×row벡터라면 ,
f= (f 0,f 1,...,f ro w -1) 에 대해 vecdeg(f) = MAX{len (f i )+1| i = 0,1,2,... , row-1 }
로 정의한다. 1 ×col벡터들에 대해서도 동일하게 정의한다.
f가 복합다항식 원소f i,j 들을 (i,j) 원소로 가지는ro w ×col,col×col행열이라면 matdeg(f) = MAX{ len (f i.j )+1 |0≤i<ro w ,0≤j<col} 로 정의한다. matmindeg(f) = MIN { len (f i.j )+1 |0≤i<ro w ,0≤j<col} 로 정의한다.그리고 정방행열의 행열값을 det(f)로 표현하기로 한다.
[1] Key 생성하기
f, C 는 복합다항식을 구성원소로 구성된 행열이다.M,R 은 벡터이다.
Step 1> 먼저 사용할 p 소수를 결정하자.그리고 아래의 차수 및 기타 조건을 만족하도록 각 정수 len 및 deg 값들도 결정하자. 각 정수가 클수록 암호시스템은 더 안전해지나 복호화 속도가 감소한다.
1.1> 본 암호시스템이 지원하기를 원하는 복잡도인 pow를 결정한다.참고로 pow 값이 64이면 264정도의 복잡도를 가진다.
1.2> 본 암호시스템에서 사용할 행열의 사이즈인 자연수 row , col를 결정한다.
1.3> non-zero 행열C의 원소C i,j 들에 대한 matdeg(C)를 결정한다.
1.3>를 만족하도록 하는 두 자연수 matdeg (f), deg(irred) 를 결정한다.
1.4> matdeg(f) < deg( P 1)이고를 만족하는 deg( P 1)을 결정한다.
1.5> deg( P 1)+matdeg(f) < N 을 만족하는 자연수 N을 결정한다.N 의 값은 주어진 조건을 만족하는 범위 내에서 작을수록 암호화 및 복호화가 빠르다.따라서 일반적으로 deg( P 1)+matdeg(f) = N - 1 인 N을 선택한다.
1.6> vecdeg(M) < deg( P 1) 이고이도록 vecdeg(M)을 선택한다.--> 일반적으로 vecdeg(M) = deg( P 1)-1 이도록 vecdeg(M)을 선택한다.
1.7> vecdeg(R) + deg( P 1) + matdeg(C) < N 과를 만족하도록 vecdeg(R)을 결정한다. --> 일반적으로 vecdeg(R) + deg( P 1) + matdeg(C) = N-1 이도록 vecdeg(R)를 선택한다.
Step 2> 다항식 Q 를 차수가 N 이고 환 FF 안에서 기약 다항식 , 또는모양의 다항식으로 선택한다.모양의 다항식으로 선택 시 암호화 및 복호화 속도가 우수하다.
Step 3> 위에서 결정된 deg(irred)를 차수로 가지는 기약 다항식을 선택하여 다항식의 체 F = Z [x]/<p,irre d > 라 구성하자. 그리고 다항식의 환 S = F[x]/<p, Q > 도 구성하자.이때 수학적으로 all one polynomial 등과 같이 체에서 매우 빠른 다항식 곱셈을 지원하는 기약다항식을 선택하는 것이 좋다.
Step 4> 위 차수 조건을 만족하는 환 S 안에서의 기약 다항식인 P 1을 gcd( P 1, Q ) = 1 이도록 랜덤하게 선택한다. 그리고, 환 S 안에서 다항식로 구성된 행열f를 가능한 matdeg(f) = matmindeg(f)를 만족하는 범위에서 랜덤하게 선택하자.( 단, 0≤i<ro w , 0≤j<col). 환 S 안에서 * 에 대한 행열f의 역원과 환 SS = (Z[x]/<p,irre d >)/< p, P 1> 에서 일반적인 복합 다항식의 곱셈 연산에 대한f의 역원 둘다 존재할 때 까지 랜덤한f를 선택하기를 반복하자.
즉 , gcd( det(f) , P 1) = 1 이고 gcd( det(f) , Q ) = 1 이어야 한다.
각각의 두 역원을이라 하자.
Step 5> 위 차수조건 deg(C i,j ) ≤ matdeg(C)를 만족하는 랜덤한 non-zero 복합 다항식C i,j 를 원소로 가지는 row ×col 행열
을 구성하자.
Step 6>
Step 7> 공개키 H = P * F Q 를 만들자.
< 단 , 복합 다항식>
그리고 row=col 인 경우는 , H 의 각 원소를 환 S = F [x]/<p, Q > 안에서 연산 했을 때 , 역행열을 가지는지 조사하자. 역행열이 존재치 않으면 Step 4> 부터 다시 수행하자. H 의 역행열은 gcd(deg( H ) , Q ) = 1 일때만 존재한다.
공개키 : N ,p,irre d , Q , H , len(M) , len(R)
비밀키 : P 1,C,f,, F Q
[2] 암호화 하기
보내고자 하는 메시지를으로 표현한다.
(단 , 복합 다항식 1 ×N벡터이고). 그리고 각 메시지 암호화시마다 랜덤하게 선택되는 non-zero vector을 생성하자.
(단,복합 다항식 1 ×N벡터이고).
암호화는 다음과 같다.
M+R* H ≡ E 가 암호화된 결과.(단 , * 는 행열의 곱셈연산 )
(단,)
이 값을 메시지 수신자에게 보낸다.
[4] 복호화 하기
메시지 Receiver 는E값으로부터 자신의 비밀키들을 이용하여 다음과 같이 원래 메시지 M 을 구할 수 있다.
1.
(단 , 복합 다항식( 단,이고 Mod는 환 S = F [x]/<p, Q > 안에서의 나누기 연산이다. )
2.
( Mod 는 복합 다항식 환 S 안에서 나누기 연산이다. )
3.을 얻는다.( 단 * 는 환안에서의 행열 곱셈 연산이다. )
이때 수신자는MM=M임을 확인 할 수 있다.
[5] 전자서명방법
일반적으로 vecdeg(M) = deg( P 1)-1 , vecdeg(R)=N-1-deg( P 1)-matdeg(C)이도록 선택한다. 일반적으로 전자서명 성립 확률은
( 메시지M경우의 수 ×R의 경우의 수 )/ ( 암호화된 메시지 공간 ) =이다. 특수한 경우로 matdeg(C) = 0 ,ro w =col으로 잡으면 전자서명이 될 확률은이므로 거의 100% 라고 할 수 있다.
다음의 가정아래 전자서명법을 설명하고자 한다.
가정 1 : deg(irre d A ) = deg(irre d B ) , deg( Q A ) = deg( Q B ) .
가정 2 : A , B 는 동일한 해쉬함수를 사용한다. 그리고 송신자 A 가 보내고자 하는 메시지 m을 해쉬 했을 때 나온 값을 여기서는 편의상 M 이라 하기로 한다.
참고로 현실적으로 가정 2는 대부분 참이므로 별 문제가 되자 않는다. 그러나 가정 1은 틀린 경우가 많다. 가정 1이 만족되지 않는 경우의 전자서명방법은 아래 방법을 약간 변형한 사소한 기술에 지나지 않으므로 생략하기로 한다.
Step 1: A가 B에게 messageM에 전자서명을 하여 보내고자 한다고 하자. 먼저 B의 vecdeg(M B ) , vecdeg(R B ) 값을 읽는다. 이때 messageM=h(m)에 전자서명한 문서를 복합 다항식 1 ×col벡터로 표현하자. 그 벡터를M A 라 하자.
Step 2 : vecdeg(RR A ) 값이 vecdeg(R B )이고 랜덤 복합 다항식으로 이루어진 1 ×ro w 행열 벡터RR A 을 생성한다. 그리고 나서 먼저 A는 B의 공개키 H B 를 사용하여 수신자 B 의 다항식 환 안에서의 연산으로 다음과 같이 암호화 한다.
Step 3 : E B (M A ) 값으로부터 A 자신의 공개키 및 비밀키를 이용하여 먼저 복호화 과정을 통하여M을 구한다.
E B (M A ) ≡M+R* H A 을 만족시키는M과R은 거의 항상 존재하므로 다음과 같이M과R을 구한다. 그리고 A 는 자신의 환에서를 구한 후 아래와 같은 방법으로R을 구한다.
Step 4 : 이렇게 구해진M과R로부터 얻어진 vecdeg(M) 과 vecdeg(R) 값이 A 의 공개키 값 vecdeg(M A ) 과 vecdeg(R A ) 이하인지를 각각 체크한다.
매우 높은 확률로 이 조건은 만족되므로 별 문제가 되지 않는다. 참고로 이 조건을 만족하지 않는M과R이 생성될 확률은 거의 10 -10이하이다.
만약 만족하지 않으면 Step 1에서 h(m) = M 값의 끝 5비트를 변경하여 이 값으로부터 새로 벡터M A 를 구성한 후 만족될 때 까지 Step2 -Step 4를 반복한다.무한 루프로 빠질 확률은 거의 0이므로 걱정할 사항은 없다.
Step 5 :M과R을 B에게 보낸다.
Step 6 . B는M과R을 받은 후 A가 보낸지 확인하기 위해 먼저 받은M과R의 vecdeg(M) , vecdeg(R)값이 송신자 A 의 공개키 값 vecdeg(M A ) 과vecdeg(R A ) 이하인지를 각각 체크한다.만족시키는지 확인한다.
만약 만족시키지 않으면 서명을 거부한다. 이를 만족시키면 공개키 H A 를 이용하여 E B (M A ) 을 계산한다.
Step 7 . 그리고 E B (M A ) 를 B의 비밀키f B 를 이용하여 원래 전자서명된 문서M A 를 위 복호화 과정을 통해 구한다.
기존의 암호시스템의 암호화 및 복호화 속도의 한계를 극복하여 매우 빠른 PKI 구축에 사용되어 질 수 있다. 그리고 매우 빠른 키 생성시간은 one time password로 응용될 수 있다.
그리고 다항식을 이용한 공개키 암호시스템은 매우 작은 수를 사용할 수 있으므로 메모리 효율적인 스마트 카드등에 응용되어 질 수 있을 것이다.
Claims (3)
- A . 복합 다항식의 계수에 차수 바탕으로 한 크기 mechonism을 적용한 공개키 암호시스템.[1] Key 생성하기부터 ~ [4] 복호화 하기 까지 과정.
- B .복합 다항식의 차수를 바탕으로 한 크기 mechonism을 적용한 공개키 암호시스템.[1] Key 생성하기부터 ~ [4] 복호화 하기 까지 과정.
- [청구항 1] 과 [청구항 2] 의 암호시스템을 이용한 전자서명 방법A 의 [5]항과 B 의 [5] 항의 전자 서명방법은 기본 바탕이 같다. 그러므로 하나로 묶어 청구한다.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020000079957A KR20020050680A (ko) | 2000-12-21 | 2000-12-21 | 행열 다항식 환 과 체를 기반으로 한 공개키 암호시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020000079957A KR20020050680A (ko) | 2000-12-21 | 2000-12-21 | 행열 다항식 환 과 체를 기반으로 한 공개키 암호시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20020050680A true KR20020050680A (ko) | 2002-06-27 |
Family
ID=27684396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020000079957A KR20020050680A (ko) | 2000-12-21 | 2000-12-21 | 행열 다항식 환 과 체를 기반으로 한 공개키 암호시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20020050680A (ko) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62132451A (ja) * | 1985-12-05 | 1987-06-15 | Toshiba Corp | 公開鍵暗号方式 |
US5054066A (en) * | 1988-11-16 | 1991-10-01 | Grumman Corporation | Error correcting public key cryptographic method and program |
JPH0946333A (ja) * | 1995-07-27 | 1997-02-14 | Cp 8 Transac | 暗号通信法 |
KR19990070921A (ko) * | 1998-02-26 | 1999-09-15 | 구자홍 | 행렬그룹 공개키와 그 생성방법 |
-
2000
- 2000-12-21 KR KR1020000079957A patent/KR20020050680A/ko not_active Application Discontinuation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62132451A (ja) * | 1985-12-05 | 1987-06-15 | Toshiba Corp | 公開鍵暗号方式 |
US5054066A (en) * | 1988-11-16 | 1991-10-01 | Grumman Corporation | Error correcting public key cryptographic method and program |
JPH0946333A (ja) * | 1995-07-27 | 1997-02-14 | Cp 8 Transac | 暗号通信法 |
KR19990070921A (ko) * | 1998-02-26 | 1999-09-15 | 구자홍 | 행렬그룹 공개키와 그 생성방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6415032B1 (en) | Encryption technique using stream cipher and block cipher | |
US5365589A (en) | Method and apparatus for encryption, decryption and authentication using dynamical systems | |
AU2004218638B2 (en) | Use of isogenies for design of cryptosystems | |
US20110307698A1 (en) | Masking the output of random number generators in key generation protocols | |
JP2000516733A (ja) | 公開鍵暗号システム方法および装置 | |
US8180048B2 (en) | Method and system for computational transformation | |
KR20110129961A (ko) | 네트워트에서 통신을 안전하게 하기 위한 방법, 통신 디바이스, 네트워크 및 이를 위한 컴퓨터 프로그램 | |
Hodowu et al. | An enhancement of data security in cloud computing with an implementation of a two-level cryptographic technique, using AES and ECC algorithm | |
US7760872B2 (en) | Public key cryptographic methods and systems | |
CA2742530C (en) | Masking the output of random number generators in key generation protocols | |
US20060251248A1 (en) | Public key cryptographic methods and systems with preprocessing | |
Schaefer | An introduction to cryptography and Cryptanalysis | |
Pon et al. | Dynamic reblocking RSA-based multisignatures scheme for computer and communication networks | |
Anand et al. | Real-time symmetric cryptography using quaternion julia set | |
US7756269B2 (en) | Cryptosystem for communication networks | |
Rivest et al. | 9. A Method for Obtaining Digital Signatures and | |
KR20020050680A (ko) | 행열 다항식 환 과 체를 기반으로 한 공개키 암호시스템 | |
Mohapatra | Signcryption schemes with forward secrecy based on elliptic curve cryptography | |
JP3706398B2 (ja) | 楕円曲線による署名、認証及び秘密通信方式 | |
US20040151307A1 (en) | Tractable rational map public-key system | |
KR20020051597A (ko) | 비대칭키 암호 알고리즘을 이용한 데이터 암호화 시스템및 그 방법 | |
Patel et al. | A critical analysis on encryption techniques used for data security in cloud computing and IOT (internet of things) based smart cloud storage system: a survey | |
KR20020003059A (ko) | 정수 또는 다항식 행열을 이용한 공개키 암호시스템 | |
JP3894919B2 (ja) | 電子署名方法とそのプログラム及び装置 | |
Giri et al. | End-to-End Encryption Techniques |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |