KR19990070921A - 행렬그룹 공개키와 그 생성방법 - Google Patents

행렬그룹 공개키와 그 생성방법 Download PDF

Info

Publication number
KR19990070921A
KR19990070921A KR1019980006062A KR19980006062A KR19990070921A KR 19990070921 A KR19990070921 A KR 19990070921A KR 1019980006062 A KR1019980006062 A KR 1019980006062A KR 19980006062 A KR19980006062 A KR 19980006062A KR 19990070921 A KR19990070921 A KR 19990070921A
Authority
KR
South Korea
Prior art keywords
matrix
equation
prime
code
prime number
Prior art date
Application number
KR1019980006062A
Other languages
English (en)
Other versions
KR100326226B1 (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
Application filed by 구자홍, 엘지전자 주식회사 filed Critical 구자홍
Priority to KR1019980006062A priority Critical patent/KR100326226B1/ko
Publication of KR19990070921A publication Critical patent/KR19990070921A/ko
Application granted granted Critical
Publication of KR100326226B1 publication Critical patent/KR100326226B1/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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Mathematics (AREA)
  • Signal Processing (AREA)
  • Mathematical Optimization (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 비교적 작은 수의 연산만으로 메시지의 공개키 암호화와 그 암호화된 메시지의 복호화를 가능하게 함과 서명 및 검증을 고속화하기에 적합한 행렬그룹 공개키에 관한 것이다.
행렬그룹 공개키는 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 생성되며 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬과, 생성자 행렬의 모듈러 승산 횟수를 지정하는 비밀키로 구성된다.

Description

행렬그룹 공개키와 그 생성방법 (Matrix Group Public Key and Method Generating thereof)
본 발명은 공개키 암호화 시스템에 사용되는 공개키를 생성하는 방법에 관한 것으로, 특히 행렬 형태의 공개키를 생성하는 방법에 관한 것이다. 또한, 본 발명은 행렬 공개키를 이용하여 메시지를 암호화하는 암호화 방법에 관한 것이다. 나아가, 본 발명은 행렬 공개키를 이용하여 메시지를 서명된 메시지화 하는 서명방법에 관한 것이다. 더 나아가, 본 발명은 서명된 메시지를 검증하는 서명 검증 방법에 관한 것이다.
통상의 공개키 암호화 시스템은 전자 서명, 암호화, 키 분배, 사용자 인증, 메시지 인증 등의 용도로 널리 사용되고 있다. 이러한 공개키 암호화 시스템에 사용되는 공개키 암호화 알고리즘으로는 소인수분해문제(Integer Factorization Problem; IFP)의 어려움에 기반한 RSA(Riest Shamir Adleman)와, 이산대수문제(Discrete Logarithm Problem; DLP)의 어려움에 기반한 엘가맬(ElGamal) 및 디지탈 서명 알고리즘(Digital Signature Algorithm; 이하, DSA라 한다) 등이 있다. 여기서, DSA는 현재 미국의 표준 전자서명 알고리즘으로 이용되고 있다.
그런데, 이들 알고리즘들은 512 비트, 1024 비트, 2048 비트 등 매우 큰 수를 이용하여 연산해야 하므로 16비트, 32비트 등의 작은 숫자 단위로 연산되는 연산 장치 예컨데, 중앙처리장치(CPU)에서 이들을 구현하는 것은 매우 복잡하고 구현 속도도 느리게 되는 근본적인 단점이 있다.
따라서, 본 발명의 목적은 비교적 작은 수의 연산만으로 메시지의 공개키 암호를 가능하게 하는 행렬그룹 공개키와 그 생성방법을 제공함에 있다.
본 발명의 다른 목적은 행렬그룹을 이용하여 메시지를 빠르게 암호화/복호화 할 수 있는 공개키 암호화 및 복호화 방법을 제공함에 있다.
본 발명의 또 다른 목적은 행렬그룹을 이용하여 메시지의 서명/검증을 빠르게 수행할 할 수 있는 서명방법을 제공함에 있다.
본 발명의 또 다른 목적은 행렬그룹을 이용하여 비밀키 분배를 빠르게 할 수 있는 키 분배방법을 제공함에 있다.
도1 은 본 발명의 실시 예에 따른 행렬그룹 공개키 생성방법을 설명하는 흐름도.
도2 는 본 발명의 실시 예에 따른 DSA 방식의 서명방법을 설명하는 흐름도.
도3 은 본 발명의 다른 실시 예에 따른 DSA 방식의 서명방법을 설명하는 흐름도.
도4 는 본 발명의 실시 예에 따른 엘가맬 방식 암호화 방법을 설명하는 흐름도.
도5 는 본 발명의 다른 실시 예에 따른 엘가맬 방식 암호화 방법을 설명하는 흐름도.
도6 은 본 발명의 실시 예에 따른 디피-헬만 방식의 비밀키 분배방법을 설명하는 흐름도.
상기 목적을 달성하기 위하여, 본 발명에 따른 행렬그룹 공개키는 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 생성되며 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬과, 생성자 행렬의 모듈러 승산 횟수를 지정하는 비밀키를 구비한다.
본 발명에 따른 행렬그룹 공개키 생성방법은 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와, 생성자 행렬과 비밀키를 이용하여 공개키를 마련하는 단계를 포함한다.
본 발명에 따른 DSA 서명방법은 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와, 1 보다 크고 제2 소수 보다 작은 정수를 선택하는 단계와, 정수, 생성자 행렬 및 해쉬함수를 이용하여 다음의 수학식 1 과 같이 연산하여 제1 서명코드를 생성하는 단계와, 비밀키, 메시지, 제1 서명코드 및 정수를 이용하여 다음의 수학식 2 와 같이 연산하여 제2 서명코드를 생성하는 단계와, 제1 및 제2 서명코드를 메시지와 함께 전송하는 단계를 포함한다.
수학식 1
여기서, r 은 제1 서명코드, h는 해쉬함수, k 는 정수, G 는 생성자 행렬, 그리고 p 는 제3 소수 이다.
수학식 2
여기서, s 는 제2 서명코드, x 는 비밀키, m 은 메시지, h 는 해쉬함수, 그리고 q 는 제2 소수 이다.
본 발명에 따른 DSA 서명방법은 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와, 1 보다 크고 제2 소수 보다 작은 정수를 선택하는 단계와, 정수, 생성자 행렬 및 수치변환함수를 이용하여 다음의 수학식 3 과 같이 연산하여 제1 서명코드를 생성하는 단계와, 비밀키, 메시지, 제1 서명코드 및 정수를 이용하여 다음의 수학식 4 같이 연산하여 제2 서명코드를 생성하는 단계와, 제1 및 제2 서명코드를 메시지와 함께 전송하는 단계를 포함한다.
수학식 3
여기서, γ 은 제1 서명코드, f는 수치변환함수, k 는 정수, G 는 생성자 행렬, q는 제2 소수, 그리고 p 는 제3 소수 이다.
수학식 4
여기서, s 은 제2 서명코드, x 는 비밀키, m 은 메시지, h 는 해쉬함수, 그리고 q 는 제2 소수 이다.
본 발명에 따른 DSA 서명 검증 방법은 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와, 생성자 행렬과 비밀키를 이용하여 공개키를 마련하는 단계와, 메시지와 함께 제1 및 제2 서명코드를 수신하는 단계와, 생성자 행렬, 공개키, 메시지, 제1 및 제2 서명코드, 그리고 해쉬함수를 이용한 연산결과가 수학식 5 와 같이 제1 서명코드와 일치하는가의 여부에 따라 서명의 유효성을 판단하는 단계를 포함한다.
수학식 5
여기서, r 은 제1 서명코드, h 는 해쉬함수, G 는 생성자 행렬, s 은 제2 서명코드, m 은 메시지, n 은 제1 소수, 그리고 p 는 제3 소수 이다.
본 발명에 따른 DSA 서명 검증 방법은 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와, 생성자 행렬과 비밀키를 이용하여 행렬그룹 공개키를 마련하는 단계와, 메시지와 함께 제1 및 제2 서명코드를 수신하는 단계와, 생성자 행렬, 행렬그룹 공개키, 메시지, 제1 및 제2 서명코드, 그리고 수치변환함수를 이용한 연산결과가 수학식 6 과 같이 제1 서명코드와 일치하는가의 여부에 따라 서명의 유효성을 판단하는 단계를 포함한다.
수학식 6
여기서, r 은 제1 서명코드, f 는 수치변환함수, G 는 생성자 행렬, s 은 제2 서명코드, m 은 메시지, Y 는 행렬그룹 공개키, n 은 제1 소수, q 는 제2 소수, 그리고 p 는 제3 소수 이다.
본 발명에 따른 엘가맬 방식 암호화 방법은 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와, 생성자 행렬과 비밀키를 이용하여 행렬그룹 공개키를 마련하는 단계와, 1 보다 크고 제2 소수 보다 작은 정수를 선택하는 단계와, 정수, 생성자 행렬 및 제3 소수를 이용하여 다음의 수학식 7 과 같이 연산하여 제1 코드를 생성하는 단계와, 메시지를 행렬그룹 공개키, 정수 및 제3 소수를 이용하여 다음의 수학식 8 과 같이 연산하여 제2 코드를 생성하는 단계와, 제1 및 제2 서명코드를 암호문으로 하여 전송하는 단계를 포함한다.
수학식 7
여기서, r 은 제1 코드, k 는 정수, G 는 생성자 행렬, 그리고 p 는 제3 소수 이다.
수학식 8
여기서, s 은 제2 코드, Y 는 행렬그룹 공개키, M 은 메시지, 그리고 p 는 제3 소수 이다.
본 발명에 따른 엘가맬 방식 암호화 방법은 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와, 생성자 행렬과 비밀키를 이용하여 행렬그룹 공개키를 마련하는 단계와, 1 보다 크고 제2 소수 보다 작은 정수를 선택하는 단계와, 정수, 생성자 행렬 및 제3 소수를 이용하여 다음의 수학식 9 와 같이 연산하여 제1 코드를 생성하는 단계와, 메시지를 행렬그룹 공개키, 정수 및 제3 소수를 이용하여 다음의 수학식 10 과 같이 연산하여 제2 코드를 생성하는 단계와, 제1 및 제2 서명코드를 암호문으로 하여 전송하는 단계를 포함한다.
수학식 9
여기서, r 은 제1 코드, k 는 정수, G 는 생성자 행렬, 그리고 p 는 제3 소수 이다.
수학식 10
여기서, s 은 제2 코드, Y 는 행렬그룹 공개키, M 은 메시지, 그리고 p 는 제3 소수 이다.
본 발명에 따른 엘가맬방식 복호화 방법은 비밀키를 마련하는 단계와, 제1 코드 및 제2 코드로 구성되어진 암호문을 수신하는 단계와, 제1 코드와 비밀키를 이용하여 수학식 11 과 같이 연산하여 행렬그룹 공개키가 임의의 정수회 만큼 모듈러 승산되어진 모듈러 승산값을 산출하는 단계와, 제2 코드와 모듈러 승산값을 수학식 12 와 같이 연산하여 메시지를 복원하는 단계를 포함한다.
수학식 11
여기서, Y 는 행렬그룹 공개키, k 는 임의의 정수, r 은 제1 코드, 그리고 p 는 소수 이다.
수학식 12
여기서, M 은 메시지, s 은 제2 코드, k 는 임의의 정수, 그리고 p 는 소수 이다.
본 발명에 따른 엘가맬방식 복호화 방법은 비밀키를 마련하는 단계와, 제1 코드 및 제2 코드로 구성되어진 암호문을 수신하는 단계와, 제1 코드와 비밀키를 이용하여 수학식 13 과 같이 연산하여 행렬그룹 공개키가 임의의 정수회 만큼 모듈러 승산되어진 모듈러 승산값을 산출하는 단계와, 제2 코드와 모듈러 승산값을 수학식 14 와 같이 연산하여 메시지를 복원하는 단계를 포함한다.
수학식 13
여기서, Y 는 행렬그룹 공개키, k 는 임의의 정수, r 은 제1 코드, 그리고 p 는 소수 이다.
수학식 14
여기서, M 은 메시지, s 은 제2 코드, k 는 임의의 정수, 그리고 p 는 소수 이다.
본 발명에 따른 디피-헬만방식 키분배 방법은 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와, 제1 사용자로 하여금, 1 보다 크고 제2 소수 보다 작은 제1 정수를 선택하게 하고, 생성자 행렬을 수학식 15 와 같이 제1 정수회 만큼 제3 소수로 모듈러 승산하여 제1 사용자에 의해 사용될 제1 키코드를 생성하게 하고, 그 제1 키코드를 제2 사용자에게 전송하게 하고, 제2 사용자로부터의 제2 키코드를 수학식 16 과 같이 상기 제1 정수회 만큼 상기 제3 소수로 모듈러승산함으써 비밀키를 생성하는 단계와, 제2 사용자로 하여금, 1 보다 크고 제2 소수 보다 작은 제2 정수를 선택하게 하고, 생성자 행렬을 수학식 17 와 같이 제2 정수회 만큼 제3 소수로 모듈러 승산하여 자신이 사용할 제2 키코드를 생성하게 하고, 그 제2 키코드를 제1 사용자에게 전송하게 하고, 제1 사용자로부터의 제1 키코드를 수학식 18 과 같이 제2 정수회 만큼 상기 제3 소수로 모듈러승산함으로써 비밀키를 생성하는 단계를 포함한다.
수학식 15
여기서, Ka는 제1 키코드, G 는 생성자 행렬, 그리고 p 는 제3 소수 이다.
수학식 16
여기서, K 는 비밀키, Kb은 제2 키코드, a 는 제1 정수, 그리고 p 는 제3 소수 이다.
수학식 17
여기서, Kb는 제2 키코드, G 는 생성자 행렬, 그리고 p 는 제3 소수 이다.
수학식 18
여기서, K 는 비밀키, Ka은 제1 키코드, b 는 제2 정수, 그리고 p 는 제3 소수 이다.
상기 목적들 외에 본 발명의 다른 목적 및 이점들은 첨부 도면을 참조한 본 발명의 바람직한 실시예에 대한 설명을 통하여 명백하게 드러나게 될 것이다.
이하, 본 발명의 바람직한 실시예를 도 1 내지 도 6을 참조하여 상세하게 설명하기로 한다.
우선, 본 발명의 실시예에 대한 상세한 설명에 앞서 행렬그룹이론과 행렬그룹에서의 이산대수문제를 설명하기로 한다. 이들을 설명을 위해, 임의의 n×n 가역 행렬 A이 있다고 가정하자. 이 가역행렬 A의 행렬요소 aij는 mod p(여기서, p는 소수) 연산되어 0과 p-1 사이의 값만을 가지게 된다. 이러한 행렬요소들을 가지는 가역행렬들의 모듈러 곱셈이 정의된다면, 그 행렬들의 집합은 그룹의 특성을 가지게 된다. 이렇게 모듈러 행렬곱셈이 가능한 가역행렬들의 집합을 행렬그룹이라 할 수 있다.
이와 같은 행렬그룹에서의 이산대수문제에 있어서, 임의의 두 행렬 Y와 G에 대하여 Y = Gxmod p를 만족하는 어떤 정수 x가 존재한다고 할 때 x를 산출해내는 것은 어려운 문제이다. 행렬그룹에서의 이산대수문제는 기본 연산으로 행렬연산을 사용한다는 것만 다를 뿐 유한 필드에서의 이산대수 문제와 근본적으로 같다.
이러한 행렬그룹에서의 이산대수 문제를 DSA, 엘가말(ElGamal), 디피-헬만(Diffie-Hellman; DH)과 같은 공개키 암호 시스템으로 사용하기 위해서는 사용하는 그룹의 차원(Order)이 얼마나 되느냐가 매우 중요한 문제이다. 그룹의 차원은 이러한 암호화 시스템의 보안성을 결정하는 중요한 요소가 되기 때문이다. 만일, 정수 n이 소수이고 모듈러 정수 p가 소수라면 n×n 의 가역 행렬의 총 개수는 다음 수학식1 과 같이 나타낼 수 있다.
이러한 가역행렬을 모두 사용하는 것은 아니고 소수 차원(Prime Order)를 갖는 서브그룹(Subgroup)을 사용하게 된다. 만일이 소수가 되도록 소수 p를 선정했다면 차원이 q인 서브그룹을 만들 수 있다. 이러한 서브그룹의 생성자(Generator)를 만들기 위해서는 임의의 가역행렬 A을 선정한 후 다음 수학식 2와 같이 계산한다.
여기서, 계산된 가역행렬 G가 단위행렬 I가 아니면 G는 차원이 q인 서브그룹의 생성자가 된다. 지금까지 생성한 n, p, q, G는 시스템 파라메터가 되며 특정 사용자를 위해서만 사용될 수도 있고 하나의 사용자 그룹에서 공유할 수도 있다. 또한, 특정한 사용자의 비밀키/공개키 쌍을 생성하기 위해서는 1보다 크고 q보다 작은 임의의 정수 x를 선정한 후 Y = Gxmod p를 계산하면 정수 x는 비밀키가 되고 행렬 Y는 공개키가 된다.
도 1은 본 발명의 실시 예에 따른 행렬그룹의 공개키 생성방법을 설명하는 흐름도로써, 통상의 컴퓨터에 의해 수행될 수 있다.
행렬그룹 공개키 생성방법에서는, 첫번째로 행렬의 크기를 임의의 작은 소수 n(예컨데, n = 2,3,5,7,11,13,17,…)로 그리고 모듈러 연산에 사용되는 모듈러 값 p의 비트수|p|(예를 들면, |P| = 16,32,48,64,128,160,256,…, 16의 배수)를 순차적으로 선정한다 (제10 및 제12 단계). 이들 임의의 작은 소수(n)과 모듈러 값의 비트수(|p|)는 공개키의 크기(즉, n2|p|), 서브그룹의 차원의 크기(즉, (n-1)|p|) 등을 결정하므로 적절한 값으로 선정되어야 한다. 공개키의 크기가 너무 크지 않고 아울러 서브그룹의 차원은 DSA와 비교할 때 160 비트 이상이 되게끔 임의의 작은 소수와 모듈러 값의 비트수는 적절하게 선정되어야만 한다.
이어서, 모듈러 값의 비트수 |p|를 가지는 소수들중 어느 하나를 모듈러 값(P)로 선정한다 (제14 단계). 이 모듈러 값(P)을 이용한 일정한 연산의 결과,가 소수인가를 판단한다 (제16 단계). 다시 말하여, 제14 및 제16 단계에 의하여이 소수임과 아울러 비트수 |p|의 소수가 되는 모듈러 값(P)이 선정되게 된다. 이 p를 성공적으로 선정하였다면 서브그룹의 차원은 q가 된다. 이후의 모든 모듈러 행렬 곱셈은 mod p로 계산되게 된다. 이 서브그룹의 차원(q)는 공개키의 크기와 함께 행렬의 크기(n)와 모듈러 값의 비트수(|p|)에 따라 다음의 표와 같이 변하게 된다.
n |p| 키 크기 차원
11 16 1936 160
13 16 2704 192
7 32 1568 192
11 32 3872 320
5 64 1600 256
7 64 3136 384
3 128 1152 256
5 128 3200 512
2 160 640 160
3 160 1440 320
2 256 1024 256
다음으로, 상기한 수학식 1을 이용하여 n×n 의 가역 행렬의 총 개수를 산출함과 아울러 가능한 가역행렬들을 모델링 한다 (제18 단계). 이 모델링된 가역행렬들중 임의의 가역행렬(A)를 선택한다 (제20 단계). 또한, 그 선택된 가역행렬(A)을 수학식 2에 적용하여 서브그룹 생성자(G)를 생성하고 그 서브그룹 생성자(G)가 단위행렬(I)인가를 검사한다 (제22 단계). 이때, 서브그룹 생성자(G)가 단위그룹(I)이면 다시 제20 단계로 되돌아간다. 즉, 제20 및 제22 단계에 의하여 단위행렬(I)이 아닌 서브그룹 생성자(G)가 생성되게 된다. 이 서브그룹 생성자(G)는 차원이 q인 서브그룹의 생성자가 된다.
나아가, 1보다 크고 q보다 작은 임의의 정수 x를 비밀키로 선택하고 (제24 단계), 그 선택된 비밀키(x)와 서브그룹 생성자(G)를 다음의 수학식 3과 같이 연산함으로써 공개키(Y)를 산출한다 (제26 단계).
이렇게 생성된 비밀키(x)와 공개키(Y)는 시스템 파라메터로 사용되는 행렬의 크기(n), 모듈러 값(p), 서브그룹의 차수(q) 및 서브그룹 생성자(G)와 함께 암호화 시스템에 제공되게 된다 (제28 단계).
도 2는 본 발명의 실시 예에 따른 DSA 방식의 서명방법의 알고리즘을 도시한 것으로, 컴퓨터시스템에 의해 수행될 수도 있다.
도2 의 DSA 방식의 서명방법에 따르면, 1 보다 크고 q 보다 작은 임의의 정수 k(즉, 1〈k〈p)가 선정되게 된다(제30 단계). 이어서, 메시지 m과 임의의 정수 k, 비밀키 x를 이용하여 다음 수학식 4와 같이 제1 서명(r)과 제2 서명(s)이 산출되게 된다.
여기서, h는 해쉬함수이다. 이렇게 산출되어진 제1 서명(r)과 제2 서명(s)는 정수이며 메시지(m)의 서명으로 메시지(m)와 함께 전송되게 된다(제34 단계).
이와 같이 형성되어진 서명(r, s)는 공개키(Y)를 이용한 다음의 수학식 5와 같이 연산됨으로써 검증될 수 있다. 수학식 5의 결과가 제1 서명(r)과 동일하게 될 때 서명(r, s)이 유효한 것으로 인정받게 된다.
이와 같이, 도2 에서는 제1 서명(r)을 계산하기 위하여 해쉬함수(h)를 이용한다. 다시 말하여, Gkmod p를 계산한 후 각 행렬 요소들을 비트 스트림으로 바꾸어 연결시킨 후, 해쉬함수(h)에 입력시켜 그 출력을 제1 서명(r)으로 하는 것이다. 이때, 해쉬함수(h)는 차원(q)와 같은 비트 크기의 출력을 내는 해쉬함수를 사용하는 것이 좋다.
여기서, n=7, |p|=32 인 경우 공개키, 비밀키 쌍을 생성하고 DSA 방식으로 서명, 검증하는 예를 들면 다음과 같다.
1) n = 7
2) |p|= 32
3) p = 4084977553 (32 비트 소수)
4) q = 4646629514344304288525904227759919224140297130393222736343 (192비트 차원, 소수)
5) 임의의 초기 가역 행렬 A
2829319603 445155932 2651651368 3071598818 1309661338 3569379477 2106182355
4169913729 2811228547 3391652299 2656476317 2326591268 69439971 1172636566
376186954 773649037 1608631475 2331956377 1324327471 92212820 3284459326
1921666466 172797669 1136040094 3927132002 963398674 2807645477 567720747
659779668 2512253473 2735787160 403437654 2262782670 171283774 1653880723
1271316717 832091586 2082287009 798295701 1144637178 356147985 95627409
2152648697 3817390954 3293697671 167322535 2124789845 2457276253 2632423334
6) 생성자 행렬 G
128843880 1456346123 2244252909 2470562402 1419994277 3495505469 1286689401
3123453394 2121191624 3432425563 1647163255 3266691555 2696937872 410735503
1235150081 222430731 879716486 2967077012 1106473989 2473283115 2771899786
2671960541 2076648080 2712703259 2560667084 1362856502 3040782120 1256572970
117872654 1112059085 1041543881 1885614151 3148025349 4039554986 117318625
1569975334 1032874469 1313325361 2515483826 2794190818 1157829098 3374504930
2978241295 2926973240 3678977202 624544441 3594749463 969956611 2877030389
7) 비밀키 x = 6473ed02767afbe92fc2e58b9f48223721cd4d3c11fd4492 (191 비트)
8)공개키 Y = Gxmod p (1568 비트)
1065125527 3763756606 1577907730 3093513053 2504089847 2008804572 896167810
3057936112 2890381516 2114332026 3379136446 3686400092 2792437858 423675884
3376118412 165689068 133986599 2426870603 3185439728 67209336 600125962
6151972 3806741850 2883847840 3120648696 4074052475 3592288801 317241614
1630068233 1012489182 1610352665 2248604036 3011897838 1839781797 1367162631
2393328202 157258706 714818867 1777791078 1521297530 510222122 4044543115
2051015362 1680631910 2963208290 750635698 3635121608 717239827 3970402867
9) 서명
h(m) = ca769daaf80d7ccc75a5fbad11e1cd7e6747305b (160 비트)
r = 18e5de1b52c37a5b73e02a0a97d5147343b964c0 (157 비트)
s = 5f35a626988969f8aa57d80a6f3a167780fc25f935662711 (191 비트)
10) 검증
r = 18e5de1b52c37a5b73e02a0a97d5147343b964c0 (157 비트)
여기서, x, h(m), r, s 등은 16진수로 나타낸 것이다. 메시지 m의 해쉬값이 h(m) 이라 할 때 이것의 서명값은 (r, s)이며 이것은 10)의 검증과정에서 같은 r값을 주었기 때문에 메시지는 유효한 것으로 검증됨을 알 수 있다.
도3 은 본 발명의 다른 실시 예에 따른 DSA 방식의 서명방법을 도시하는 흐름도이다. 도3 의 DSA 방식의 서명방법은 도2 에서의 DSA 방식의 서명방법과 그 수순은 동일하나 해쉬함수(h)를 사용하는 제32 단계 대신 어떤 수치변환함수, 즉 행렬을 입력으로하고 이것을 큰 숫자로 변환시키는 함수(f)를 사용하는 제36 단계를 포함한다. 제36 단계 에서는 Gkmod p를 계산하여 이를 함수 f를 통과시켜 큰 숫자로 만든 후, 이를 다시 mod q 계산하여 q 보다 작은 숫자로 만드는 것이다. 이러한 연산과정은 수식으로 표현하면 다음의 수학식 6과 같이 된다.
이와 같이 형성되어진 서명(r, s)는 공개키(Y)를 이용한 다음의 수학식 7과 같이 연산됨으로써 검증될 수 있다. 수학식 7의 결과가 제1 서명(r)과 동일하게 될 때 서명(r, s)이 유효한 것으로 인정받게 된다.
도 4는 본 발명의 실시 예에 따른 엘가맬 방식의 암호화 방법을 도시하는 흐름도로써, 통상의 컴퓨터에 의해 수행될 수 있다.
도4 의 암호화 방법에 따르면, 1 보다 크고 q 보다 작은 임의의 정수 k(즉, 1〈k〈q)가 선정되게 된다(제40 단계). 이어서, 메시지 m과 임의의 정수 k를 이용하여 다음 수학식 8과 같이 제1 암호(r)과 제2 암호(s)가 산출되게 된다(제42 단계).
이렇게 산출되어진 제1 암호(r)와 제2 암호(s)는 행렬이며 암호메시지로써 전송되게 된다(제44 단계).
이와 같이 (r, s)로 구성어진 암호메시지는 다음의 수학식 9에 따라 연산됨으로써 메시지(M)가 행렬의 형태로 복호되게 된다. 이 때 -x는 mod q 에 대하여 미리 계산해 놓을 수 있다.
도5 는 본 발명의 다른 실시 예에 따른 엘가맬 방식의 암호화 방법을 도시하는 흐름도이다. 도5 의 엘가맬 방식의 암호화 방법은 도4 에서의 엘가맬 방식의 서명방법과 그 수순은 동일하나 곱셈을 이용하는 제42 단계 대신 덧셈을 이용하는 제46 단계를 포함한다. 이 제46 단계는 복호화시 역행렬을 계산하고 행렬곱셈할 필요가 없이 단순히 행렬을 빼주면 되도록하여 보다 빠른 계산이 가능하도록 한다. 다시 말하여, 제46 단계는 다음의 수학식 10과 같은 연산에 의하여 제1 암호(r)와 제2 암호(s)를 발생하게 된다. 이렇게 생성되어진 (r, s)는 암호메시지로서 전송되게 된다.
이와 같이 수학식 10에 의해 생성되어진 제1 암호(r)와 제2 암호(s)로 구성된 암호메시지는 다음의 수학식 11에 따라 연산됨으로써 메시지(M)가 행렬의 형태로 복호되게 된다.
이와 같은 행렬그룹 공개키 암호화 시스템의 보안성은 통상 사용하는 서브그룹의 차원 q 의 크기에 의존한다고 볼 수 있다. 이산대수 문제를 풀기 위해 제안되어 있는 NFS(Number Feild Seive) 등의 방법은 행렬그룹의 경우에 적용하기 어려우며 폴라드(Pollard)의 르호(Rho) 방법은 사용하는 서브그룹의 차원 q의 제곱근에 비례하는 계산량을 필요로 한다. DSA의 경우 높은 보안성을 확보하기 위해 160 비트 차원의 서브그룹을 사용하고 있는데 본 발명의 시스템에서도 이 이상의 차원을 갖는 서브그룹을 이용하기 때문에 보안성은 충분하다고 볼 수 있다.
도 6은 본 발명의 실시 예에 따른 디피-헬만 방식의 키 분배 방법을 도시한 흐름도이다. 도 6에서 제50 내지 도54 단계는 제1 사용자(U1)의 비밀키(K) 생성과정을 그리고 제56 단계 내지 제60 단계는 제2 사용자(U2)의 비밀키(K) 생성과정을 간략하게 설명한다. 도6 에서의 디피-헬만 방식의 키 분배방법은 두 사용자(U1,U2)가 이산대수문제를 이용한 간단한 프로토콜을 통해 똑같은 공동의 비밀키(K)를 비밀스럽게 공유하고자 하는 프로토콜로써, 행렬그룹을 이용해서도 같은 프로토콜을 구현할 수 있다. 여기서, 두 사용자(U1,U2)는 시스템 파라메터(n, p, q, G)를 공유하게 된다.
제1 사용자(U1)는 1보다 크고 q보다 작은 임의의 정수 a를 선정하고(제50 단계), 그 선정된 임의의 정수(a)를 이용하여 수학식 3에 적용하여 U1의 임시공개키(Ka= Gamod p)를 산출하게 된다(제52 단계). 이렇게 산출되어진 U1의 임시공개키(Ka)는 제2 사용자에게 전송되게 된다. 비슷하게, 제2 사용자(U2)도 1보다 크고 q보다 작은 임의의 정수(b)를 선정하고(제56 단계), 그 선정된 임의의 정수(b)를 이용하여 수학식 3에 적용하여 U2의 임시공개키(Kb= Gbmod p)를 산출하게 된다(제58 단계). 이렇게 산출되어진 U2의 임시공개키(Kb)는 제1 사용자에게 전송되게 된다.
제1 사용자(U1)는 제2 사용자(U2)로부터 전송받은 U2의 임시 공개키(Kb)를 자신만이 알고 있는 상기 임의의 정수(a)로 지수 연산함으로써 공동의 비밀키()를 산출하게 된다(제54 단계). 또한, 제2 사용자(U2)는 제1 사용자(U1)로부터의 전송받은 U1의 임시공개키(Ka)를 자신만이 알고 있는 상기 임의의 정수(b)로 지수 연산함으로써 공동의 비밀키()를 산출하게 된다 (제60 단계).
이와 같이, 두 사용자(U1,U2)는 동일한 비밀키(K)를 생성하여 공유할 수 있게 된다.
이상 설명한 바와 같이, 본 발명에 따른 행렬 그룹 공개키 암호화 장치는 행렬그룹을 이용하므로써, 비교적 작은 수의 연산만으로도 공개키 암호를 구현함과 아울러 병렬처리 연산이 가능하다. 이에 따라, 공개키 암호를 구현하는 소프트웨어 및 하드웨어를 간단히 할 수 있을 뿐만 아니라 보다 빠른속도로 공개키 암호를 구현할 수 있다. 더불어, 서브그룹의 차원 q를 DSA 에서의 160 비트 이상으로 충분히 크게 할 경우 공개키 암호의 보완성은 충분히 높은 효과가 있다.
이상과 같이 상술한 내용을 통해 당업자라면 본 발명의 기술사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다. 따라서, 본 발명의 기술적 범위는 명세서의 상세한 설명에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의하여 정하여져야만 한다.

Claims (17)

  1. 모두에게 공개하는 공개키와 개인이 비밀스럽게 보관하는 비밀키로 이루어진 한쌍의 키를 이용하는 공개키 암호화 시스템에 있어서,
    임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 생성되며 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬과,
    상기 생성자 행렬의 모듈러 승산 횟수를 지정하는 비밀키를 구비하는 것을 특징으로 하는 행렬그룹 공개키.
  2. 제 1 항에 있어서,
    상기 모듈러 행렬곱은,
    상기 임의의 두행렬이 곱셈되고, 그 곱셈된 행렬의 각 요소들이 어떤 제3 소수에 의해 모듈러 연산되는 것을 특징으로 하는 행렬그룹 공개키.
  3. 제 1 항에 있어서,
    상기 생성자 행렬은,
    모듈러 연산의 값의 크기를 선정하고, 다음의 수학식1을 만족하는 모듈러 연산의 값의 크기의 범위내의 임의의 제3 소수를 선정하고, 상기 제1 및 제3 소수를 이용한 수학식 2에 의해 상기 정방행렬들의 총수를 계산하고, 상기 정방행렬들중 정방행렬의 총수/제2 소수의 값에 의한 차수연산과 제3 소수에 의한 모듈러 연산되더라도 단위행렬이 되지 않는 임의의 한 행렬을 선택함에 의해 생성되는 것을 특징으로 하는 행렬그룹 공개키.
    수학식 1
    q=(pn-1)/(p-1),
    여기서, n, q 및 p 는 제1 내지 제3 소수 이다.
    수학식 2
    N=(pn-1)(pn-p)(pn-p2)....(pn-pn-1)
    여기서, N 은 정방행렬의 총수 이다.
  4. 제 1 항에 있어서,
    상기 비밀키가 1 보다 크고 제2 소수 보다 작은 정수인 것을 특징으로 하는 행렬그룹 공개키.
  5. 모두에게 공개하는 공개키와 개인이 비밀스럽게 보관하는 비밀키로 이루어진 한쌍의 키를 이용하는 공개키 암호화 시스템에 있어서,
    임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와,
    상기 생성자 행렬과 상기 비밀키를 이용하여 공개키를 마련하는 단계를 포함하는 것을 특징으로 하는 행렬그룹 공개키 생성방법.
  6. 제 5 항에 있어서,
    상기 모듈러 행렬곱은,
    상기 임의의 두행렬이 곱셈되고, 그 곱셈된 행렬의 각 요소들이 임의의 제3 소수에 의해 모듈러 연산되는 것을 특징으로 하는 행렬그룹 공개키 생성방법.
  7. 제 5 항에 있어서,
    상기 생성자 행렬을 생성하는 단계는,
    모듈러 연산의 값의 크기를 선정하는 과정과,
    다음의 수학식 3을 만족하는 모듈러 연산의 값의 크기의 범위내의 임의의 제3 소수를 선정하는 과정과,
    상기 제1 및 제3 소수를 이용한 수학식 4에 의해 상기 정방행렬들의 총수를 계산하는 과정과,
    상기 정방행렬들중 정방행렬의 총수/제2 소수의 값에 의한 차수연산과 제3 소수에 의한 모듈러 연산되더라도 단위행렬이 되지 않는 임의의 한 행렬을 생성자 행렬로 설정하는 과정을 포함하는 것을 특징으로 하는 행렬그룹 공개키 생성방법.
    수학식 3
    q=(pn-1)/(p-1),
    여기서, n, q 및 p 는 제1 내지 제3 소수 이다.
    수학식 4
    N=(pn-1)(pn-p)(pn-p2)....(pn-pn-1)
    여기서, N 은 장방행렬의 총수 이다.
  8. 제 5 항에 있어서,
    상기 공개키를 마련하는 단계는,
    1 보다 크고 제2 소수 보다 작은 어떤 임의의 정수를 상기 비밀키로 선정하는 단계와,
    상기 생성자 행렬을 상기 임의의 정수회 모듈러 승산하여 공개키를 생성하는 단계를 포함하는 것을 특징으로 하는 행렬그룹 공개키 생성방법.
  9. 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와,
    1 보다 크고 제2 소수 보다 작은 정수를 선택하는 단계와,
    상기 정수, 상기 생성자 행렬 및 해쉬함수를 이용하여 다음의 수학식 5 와 같이 연산하여 제1 서명코드를 생성하는 단계와,
    비밀키, 메시지, 상기 제1 서명코드 및 상기 정수를 이용하여 다음의 수학식 6 과 같이 연산하여 제2 서명코드를 생성하는 단계와,
    상기 제1 및 제2 서명코드를 상기 메시지와 함께 전송하는 단계를 포함하는 것을 특징으로 하는 DSA 서명 방법.
    수학식 5
    여기서, r 은 제1 서명코드, h는 해쉬함수, k 는 정수, G 는 생성자 행렬, 그리고 p 는 제3 소수 이다.
    수학식 6
    여기서, s 은 제2 서명코드, x 는 비밀키, m 은 메시지, h 는 해쉬함수, 그리고 q 는 제2 소수 이다.
  10. 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와,
    1 보다 크고 제2 소수 보다 작은 정수를 선택하는 단계와,
    상기 정수, 상기 생성자 행렬 및 수치변환함수를 이용하여 다음의 수학식 7 와 같이 연산하여 제1 서명코드를 생성하는 단계와,
    비밀키, 메시지, 상기 제1 서명코드 및 상기 정수를 이용하여 다음의 수학식 8 같이 연산하여 제2 서명코드를 생성하는 단계와,
    상기 제1 및 제2 서명코드를 상기 메시지와 함께 전송하는 단계를 포함하는 것을 특징으로 하는 DSA 서명 방법.
    수학식 7
    여기서, γ 은 제1 서명코드, f는 수치변환함수, k 는 정수, G 는 생성자 행렬, q는 제2 소수, 그리고 p 는 제3 소수 이다.
    수학식 8
    여기서, s 은 제2 서명코드, x 는 비밀키, m 은 메시지, h 는 해쉬함수, 그리고 q 는 제2 소수 이다.
  11. 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와,
    상기 생성자 행렬과 상기 비밀키를 이용하여 공개키를 마련하는 단계와,
    메시지와 함께 제1 및 제2 서명코드를 수신하는 단계와,
    상기 생성자 행렬, 상기 공개키, 상기 메시지, 상기 제1 및 제2 서명코드, 그리고 해쉬함수를 이용한 연산결과가 수학식 9 와 같이 제1 서명코드와 일치하는가의 여부에 따라 서명의 유효성을 판단하는 단계를 포함하는 것을 특징으로 하는 DSA 서명 검증 방법.
    수학식 9
    여기서, r 은 제1 서명코드, h 는 해쉬함수, G 는 생성자 행렬, s 은 제2 서명코드, m 은 메시지, n 은 제1 소수, 그리고 p 는 제3 소수 이다.
  12. 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와,
    상기 생성자 행렬과 상기 비밀키를 이용하여 행렬그룹 공개키를 마련하는 단계와,
    메시지와 함께 제1 및 제2 서명코드를 수신하는 단계와,
    상기 생성자 행렬, 상기 행렬그룹 공개키, 상기 메시지, 상기 제1 및 제2 서명코드, 그리고 수치변환함수를 이용한 연산결과가 수학식 10 와 같이 제1 서명코드와 일치하는가의 여부에 따라 서명의 유효성을 판단하는 단계를 포함하는 것을 특징으로 하는 DSA 서명 검증 방법.
    수학식 10
    여기서, r 은 제1 서명코드, f 는 수치변환함수, G 는 생성자 행렬, s 은 제2 서명코드, m 은 메시지, Y 는 행렬그룹 공개키, n 은 제1 소수, q 는 제2 소수, 그리고 p 는 제3 소수 이다.
  13. 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와,
    상기 생성자 행렬과 상기 비밀키를 이용하여 행렬그룹 공개키를 마련하는 단계와,
    1 보다 크고 제2 소수 보다 작은 정수를 선택하는 단계와,
    상기 정수, 상기 생성자 행렬 및 제3 소수를 이용하여 다음의 수학식 11 과 같이 연산하여 제1 코드를 생성하는 단계와,
    메시지를 상기 행렬그룹 공개키, 상기 정수 및 상기 제3 소수를 이용하여 다음의 수학식 12 과 같이 연산하여 제2 코드를 생성하는 단계와,
    상기 제1 및 제2 서명코드를 암호문으로 하여 전송하는 단계를 포함하는 것을 특징으로 하는 엘가맬 방식 암호화 방법.
    수학식 11
    여기서, r 은 제1 코드, k 는 정수, G 는 생성자 행렬, 그리고 p 는 제3 소수 이다.
    수학식 12
    여기서, s 은 제2 코드, Y 는 행렬그룹 공개키, M 은 메시지, 그리고 p 는 제3 소수 이다.
  14. 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와,
    상기 생성자 행렬과 상기 비밀키를 이용하여 행렬그룹 공개키를 마련하는 단계와,
    1 보다 크고 제2 소수 보다 작은 정수를 선택하는 단계와,
    상기 정수, 상기 생성자 행렬 및 제3 소수를 이용하여 다음의 수학식 13 과 같이 연산하여 제1 코드를 생성하는 단계와,
    메시지를 상기 행렬그룹 공개키, 상기 정수 및 상기 제3 소수를 이용하여 다음의 수학식 14 와 같이 연산하여 제2 코드를 생성하는 단계와,
    상기 제1 및 제2 서명코드를 암호문으로 하여 전송하는 단계를 포함하는 것을 특징으로 하는 엘가맬 방식 암호화 방법.
    수학식 13
    여기서, r 은 제1 코드, k 는 정수, G 는 생성자 행렬, 그리고 p 는 제3 소수 이다.
    수학식 14
    여기서, s 은 제2 코드, Y 는 행렬그룹 공개키, M 은 메시지, 그리고 p 는 제3 소수 이다.
  15. 비밀키를 마련하는 단계와,
    제1 코드 및 제2 코드로 구성되어진 암호문을 수신하는 단계와,
    상기 제1 코드와 비밀키를 이용하여 수학식 15 과 같이 연산하여 행렬그룹 공개키가 임의의 정수회 만큼 모듈러 승산되어진 모듈러 승산값을 산출하는 단계와,
    상기 제2 코드와 상기 모듈러 승산값을 수학식 16 와 같이 연산하여 메시지를 복원하는 단계를 포함하는 것을 특징으로 하는 엘가맬방식 복호화 방법.
    수학식 15
    여기서, Y 는 행렬그룹 공개키, k 는 임의의 정수, r 은 제1 코드, 그리고 p 는 소수 이다.
    수학식 16
    여기서, M 은 메시지, s 은 제2 코드, k 는 임의의 정수, 그리고 p 는 소수 이다.
  16. 비밀키를 마련하는 단계와,
    제1 코드 및 제2 코드로 구성되어진 암호문을 수신하는 단계와,
    상기 제1 코드와 비밀키를 이용하여 수학식 17 과 같이 연산하여 행렬그룹 공개키가 임의의 정수회 만큼 모듈러 승산되어진 모듈러 승산값을 산출하는 단계와,
    상기 제2 코드와 상기 모듈러 승산값을 수학식 18 과 같이 연산하여 메시지를 복원하는 단계를 포함하는 것을 특징으로 하는 엘가맬방식 복호화 방법.
    수학식 17
    여기서, Y 는 행렬그룹 공개키, k 는 임의의 정수, r 은 제1 코드, 그리고 p 는 소수 이다.
    수학식 18
    여기서, M 은 메시지, s 은 제2 코드, k 는 임의의 정수, 그리고 p 는 소수 이다.
  17. 임의의 제1 소수의 크기를 가지는 정방행렬들의 집합과 이들 행렬들 사이의 모듈러 행렬곱이 정의되는 행렬그룹을 이용하여 차수가 임의의 제2 소수가 되는 서브그룹의 생성자 행렬을 생성하는 단계와,
    제1 사용자로 하여금, 1 보다 크고 제2 소수 보다 작은 제1 정수를 선택하게 하고, 상기 생성자 행렬을 수학식 19 와 같이 제1 정수회 만큼 제3 소수로 모듈러 승산하여 제1 사용자에 의해 사용될 제1 키코드를 생성하게 하고, 그 제1 키코드를 제2 사용자에게 전송하게 하고, 상기 제2 사용자로부터의 제2 키코드를 수학식 20 과 같이 상기 제1 정수회 만큼 상기 제3 소수로 모듈러승산함으써 비밀키를 생성하는 단계와,
    제2 사용자로 하여금, 1 보다 크고 제2 소수 보다 작은 제2 정수를 선택하게 하고, 상기 생성자 행렬을 수학식 21 와 같이 제2 정수회 만큼 제3 소수로 모듈러 승산하여 자신이 사용할 상기 제2 키코드를 생성하게 하고, 그 제2 키코드를 상기 제1 사용자에게 전송하게 하고, 상기 제1 사용자로부터의 상기 제1 키코드를 수학식 22 와 같이 상기 제2 정수회 만큼 상기 제3 소수로 모듈러승산함으써 비밀키를 생성하는 단계를 포함하는 것을 특징으로 하는 디피-헬만 방식 키분배 방법.
    수학식 19
    여기서, Ka는 제1 키코드, G 는 생성자 행렬, 그리고 p 는 제3 소수 이다.
    수학식 20
    여기서, K 는 비밀키, Kb은 제2 키코드, a 는 제1 정수, 그리고 p 는 제3 소수 이다.
    수학식 21
    여기서, Kb는 제2 키코드, G 는 생성자 행렬, 그리고 p 는 제3 소수 이다.
    수학식 22
    여기서, K 는 비밀키, Ka은 제1 키코드, b 는 제2 정수, 그리고 p 는 제3 소수 이다.
KR1019980006062A 1998-02-26 1998-02-26 행렬그룹공개키생성방법 KR100326226B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980006062A KR100326226B1 (ko) 1998-02-26 1998-02-26 행렬그룹공개키생성방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980006062A KR100326226B1 (ko) 1998-02-26 1998-02-26 행렬그룹공개키생성방법

Publications (2)

Publication Number Publication Date
KR19990070921A true KR19990070921A (ko) 1999-09-15
KR100326226B1 KR100326226B1 (ko) 2002-08-08

Family

ID=37478288

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980006062A KR100326226B1 (ko) 1998-02-26 1998-02-26 행렬그룹공개키생성방법

Country Status (1)

Country Link
KR (1) KR100326226B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020003059A (ko) * 2000-07-01 2002-01-10 배민관 정수 또는 다항식 행열을 이용한 공개키 암호시스템
KR100323799B1 (ko) * 1999-11-18 2002-02-19 안병엽 안전성이 증명가능한 타원곡선 공개키 암호화 시스템
KR20020050680A (ko) * 2000-12-21 2002-06-27 배기봉 행열 다항식 환 과 체를 기반으로 한 공개키 암호시스템
KR100638265B1 (ko) * 2000-04-28 2006-10-24 이순조 인터넷에서 전자 문서 교환을 위한 보안 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100323799B1 (ko) * 1999-11-18 2002-02-19 안병엽 안전성이 증명가능한 타원곡선 공개키 암호화 시스템
KR100638265B1 (ko) * 2000-04-28 2006-10-24 이순조 인터넷에서 전자 문서 교환을 위한 보안 방법
KR20020003059A (ko) * 2000-07-01 2002-01-10 배민관 정수 또는 다항식 행열을 이용한 공개키 암호시스템
KR20020050680A (ko) * 2000-12-21 2002-06-27 배기봉 행열 다항식 환 과 체를 기반으로 한 공개키 암호시스템

Also Published As

Publication number Publication date
KR100326226B1 (ko) 2002-08-08

Similar Documents

Publication Publication Date Title
US5581616A (en) Method and apparatus for digital signature authentication
US5159632A (en) Method and apparatus for public key exchange in a cryptographic system
JP3862500B2 (ja) 直接埋め込み方式による高速楕円曲線暗号化の方法と装置
Caelli et al. PKI, elliptic curve cryptography, and digital signatures
RU2376651C2 (ru) Использование изогений для разработки криптосистем
EP1467512B1 (en) Encryption process employing chaotic maps and digital signature process
US8184803B2 (en) Hash functions using elliptic curve cryptography
JP4137385B2 (ja) 公開鍵および秘密鍵による暗号化方法
Boruah et al. Implementation of ElGamal Elliptic Curve Cryptography over prime field using C
US6480606B1 (en) Elliptic curve encryption method and system
JPH1173105A (ja) 2重ベクトル加算装置、2重ベクトル2倍装置、2重ベクトル整数倍装置、公開鍵配送システム、エルガマル型暗号システム及びエルガマル型署名システム
Kute et al. A software comparison of RSA and ECC
Mohapatra Public key cryptography
KR100326226B1 (ko) 행렬그룹공개키생성방법
Rawat et al. Computation and communication efficient Chinese remainder theorem based multi-party key generation using modified RSA
CN109756335A (zh) 一种阶为梅森素数的有限域乘法群的公钥加密解密方法
Manajaih Modular arithmetic in RSA cryptography
Shams et al. Cryptosystem an Implementation of RSA using Verilog
JP2003507761A (ja) 擬似乱数の形成方法および電子署名方法
CN1258051A (zh) 一种公开密钥加密体制和装置
KR20010000048A (ko) m진법 방식을 이용한 타원곡선상 다중 점의 상수고속연산 방법
Shepherd et al. The quadratic residue cipher and some notes on implementation
Jnr et al. A Comparative Study of RSA and ELGAMAL Cryptosystems
Ngendahimana et al. RSA Cryptosystem Speed Security Enhancement (Hybrid and Parallel Domain Approach)
KR100406138B1 (ko) 엔티알유 암/복호화 장치

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
FPAY Annual fee payment

Payment date: 20051201

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee