KR20050061544A - 이진 하드웨어에서 홀수 표수의 유한 필드를 사용하는암호화 - Google Patents

이진 하드웨어에서 홀수 표수의 유한 필드를 사용하는암호화 Download PDF

Info

Publication number
KR20050061544A
KR20050061544A KR1020057006616A KR20057006616A KR20050061544A KR 20050061544 A KR20050061544 A KR 20050061544A KR 1020057006616 A KR1020057006616 A KR 1020057006616A KR 20057006616 A KR20057006616 A KR 20057006616A KR 20050061544 A KR20050061544 A KR 20050061544A
Authority
KR
South Korea
Prior art keywords
bit
guard
register
data bits
field
Prior art date
Application number
KR1020057006616A
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 텔레폰악티에볼라겟엘엠에릭슨(펍)
Publication of KR20050061544A publication Critical patent/KR20050061544A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Error Detection And Correction (AREA)

Abstract

암호화 방법이 설명된다. 상기 방법은 홀-표수 유한 필드 GF(pk)의 필드 원소의 적어도 일부를 표시하는 이진 데이터를 레지스터에 저장하는 단계를 포함하고, p는 홀소수이고, 상기 필드 원소는 다항식-기저 표기법에 따라 k 계수를 포함하고, 이진 데이터는 데이터 비트의 다수 그룹을 포함하고, 여기서 데이터 비트의 각 그룹은 k 계수 중 연관된 하나를 표시한다. 상기 방법은 데이터 비트의 다수 그룹이 병렬로 처리되도록 암호화 알고리즘에 따라 이진 데이터를 처리하는 단계를 포함한다. 또한 상기한 방법을 실행하기 위하여, 메모리와, 메모리에 결합된 처리부를 포함하는 장치가 제공된다.

Description

이진 하드웨어에서 홀수 표수의 유한 필드를 사용하는 암호화{CRYPTOGRAPHY USING FINITE FIELDS OF ODD CHARACTERISTIC ON BINARY HARDWARE}
본 발명은 U.S. 특허 출원의 발명의 명칭이 "Efficient arithmetic in finite fields of odd characteristic on binary hardware", 인 Serial No. 10/271,730(Attroney Docket No. 040000-793), 및 U.S. 특허 출원의 발명의 명칭이 "Error correction using finite fields of odd characteristic on binary hardware"인 Serial No. 10/271,945(Attorney Docket No. 040001-178)에 관한 것인데, 여기에 첨부된 모든 제출 명세서는 전체에서 참조된다.
본 발명은 이진 하드웨어(binary hardware) 상에서 홀소수 표수(odd prime characteristic)의 유한 필드(finite field)에서의 계산을 효과적으로 실행하는 방법 및 장치에 관한 것이다. 특히, 본 발명은 암호법 및 에러 정정에서의 계산을 실행하기 위해 유용하지만, 그러한 이용으로만 제한되는 것은 아니다.
유한 필드의 기본 형태
유한 필드(갈로아(Galois) 필드라고도 함)는 유한 대수 구조(finite algebraic structure)로서, 2개의 잘 정의된 연산, 즉 “덧셈” 및 “곱셈”을 처리한다. R.Lidl 및 H.Niederriter에 의한 “Introduction to Finite Field and Their Applications, Cambridge University Press, Cambridge, Revised ed., 1994."에서 설명한 바와 같이, N이 소수(prime number)의 거듭제곱(power)일 경우에만, 즉 어떤 소수 p=2, 3, 5, ..에 대해 N=pn일 경우에만, N 원소를 갖는 유한 필드가 존재한다. 이러한 필드는 동형(isomorphism)에 이르는 유일한 것이고 보통 GF(pn)으로 표시한다. 소수 p에 대해, 그라운드 필드(ground field) GP(p)는 덧셈 및 곱셈 모듈로(modulo) p에서 단순히 정수(integer)이다. 일반적으로, F가 q=pk 원소의 필드이면(즉, F=GF(pk)), 확장 필드의 차수(l)가 정의될 수 있어서, F[t]/(f(t))로 표시되고, 여기서 f(t)는 차수 l의 다항식이고, F에 대해 기약이다. 이러한 확장 필드는 GF(p l k) 라고도 한다. 이것은 q l 원소의(유일한) 유한 필드를 준다. 다시 말해, 이것은 plk=pn 원소의 필드이다. 수 p는 필드의 표수(characteristic)라고 한다. 동일 크기의 두 필드가 동형이라는 잘 알려진 사실은 반드시 필드 사이의 맵핑(mapping)이 평범하다(trivial)는 의미는 아니다. 그러나 이러한 맵핑의 구조는 본 발명에 대해 필수적인 것은 아니고, 어떤 사건에서, 이 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위 내에 있고, 상기한“Introduction to Finite Fields and Their Applications"와 같은 텍스트북에서 논의되어 있다.
유한 필드를 나타내는 2가지의 주요한 방법이 있다. 한 표기법(representation)은 이 분야에서 통상의 지식을 가진 자에게 잘 알려져 있으며, 상기한 “Introduction to Finite Fields and Their Applications"에 상술된 바와 같은, 정규 기저 표기법(normal basis representation)이다. 정규 기저가 갖는 주된 장점은 원소에 그 자신을 곱하는 것, 즉 제곱형 연산(squaring-type operations)이 용이하다는 것이다. 정규 기저 표기법은 여기서 더 이상 논의하지 않는다. 정규 기저 표기법과 관련된 몇 가지 계산 형태에 대해서는 미국특허 제4,587,627호(Computational method and apparatus for finite field arithmetic), 미국특허 제4, 567,600호(Method and apparatus for maintaining the privacy of digital messages conveyed by pulbic transmission) 및 미국특허 제5,854,759호(Method and apparatus for efficient finite field basis conversion)에 논의되어 있으며, 이들 각각의 전체 내용은 참조되어 여기에 포함된다.
다른 표기법은 다항식 기저 표기법(polynomial basis representation)으로 알려져 있다. 이 표기법에서 GF(pk)의 필드 원소는 그 계수가 그라운드 필드 GF(p)의 필드 원소, 즉 집합(0, ..., p-1)에서 정수인, 최대한 차수 k-1의 다항식으로 생각할 수 있다. 그러므로 전형적인 원소, γ는 필드에서 어떤 정수 γi 에 대해 다음과 같이 표시될 수 있다.
(1)
여기서, 0≤γi≤p-1, t=는 형식 변수(formal variable)이다. 필드 원소 γ는 k-차원 벡터(γk-1, ..., γ1, γ0)로서 볼 수도 있고, 여기서 언급한 다항식 기저 표기법은 이러한 관점을 포함할 계획이다. 다항식 기저 표기법의 다른 형태는 필드 원소의 곱셈에 이용되는, 차수 k 및 GF(p)에 대해 기약(irreducible)인 다항식 h(t)를 선택하는 것이다. 이것에 대해서는 아래에서 더욱 상세히 논의할 것이다. 동일 크기의 임의의 두 필드가 동형이므로, 기약 h(t)가 선택된다는 것은 문제되지 않는다. 시스템의 관점으로부터, h(t)는 특정 용도에 대해 의견이 일치하는 시스템 파라미터이다.
상기한 바와 같이, 필드 F=GF(pk)에 대한 차수 l의 확장 필드 F[t]/(f(t)) 또는 GF(p l k)로서 표시할 수 있다. 확장 필드의 원소는 그 계수가 GF(pk)의 원소인, 최대한 차수 l-1의 다항식으로 간주될 수 있다. 다시 말해, 확장 필드의 원소는 다른 다항식을 필드 계수로 갖는 다항식으로 볼 수 있다. 확장 필드의 원소 γ는 다음과 같다.
(2)
여기서, 각 γj는 집합(0, ..., p-1)에서 계수를 가지는 최대한 차수 k-1의 다항식이다. 따라서 다항식 γj는 다음과 같다.
(3)
여기서, 형식 변수가 t인 확장-필드 다항식과의 혼동을 피하기 위해, 다른 형식 변수 u를 이러한 다항식을 위해 선택하였다. 다항식 기저 표기법을 사용하는 이러한 확장 필드 공식은 본 발명을 설명하기 위해 사용될 것이다.
GF(pk)에서 두 원소 α, β의 합은 해당 다항식(또는, 동등하게 벡터)을 단순히 더함으로써 정의된다.
(4)
여기서 각 (정수)계수 (αii)는 모듈로 p로 계산된다. 상기한 식(4)에서의 정의를 직접 사용하여 두 원소를 더하는 것의 복잡성(complexity)(모듈로-p 연산 수의 항목에서)은 k와 같다. 예를 들어, p=3인 유한 필드 GF(32)에 대해, 벡터 표기로 필드 원소 α=(2,1)은 다항식 α=2t+1로 쓸 수 있고, 벡터 표기로 필드 원소 β=(2,2)는 다항식 β+2t+1로 쓸 수 있다. 이러한 필드 원소의 합은 (α+β)=(2+2)t+(1+2)이고, 여기서 각 계수는 모듈로 3(mod 3)으로 구해진다. 따라서, 4 mod 3 과 3 mod 3 = 0이기 때문에 상기 합은 (α+β)=t 로 감소된다.
두 필드 원소의 곱은 그 곱 모듈로 h(t)를 형성함으로써 정의되고, 여기서 h(t)는 차수 k 및 GF(p)에 대해 기약인(즉, 인수분해 불가능) 다항식이다.
(5)
여기서, δi=∑jαjβi-j mod p 이다. 여기서“mod h(t)"는 표준 다항식 나눗셈을 사용하여, h(t)로 나누었을 때 나머지를 구하는 것을 의미한다. 이것은 h(t)보다 차수가 정확히 작은, 즉 상술한 k 보다 작은 결과를 나타낸다. 이러한 정의에 따라 두 원소의 곱셈의 복잡성은 분명히 k2의 차수이다. 이와는 달리, 본 기술 분야에서 통상의 지식을 가진 자들에게 알려져 있는 카라쓰바 알고리즘(Karatsuba algorithm)을 사용하여, 대략 k1.6 연산으로 곱셈이 (k에 점근적으로) 실행될 수 있으나, 이러한 알고리즘은 더 많은 계산의 실행을 포함한다. 그러므로 카라쓰바 알고리즘은, “§4.4.3 of D. Knuth, Seminumerical Algorithms, Vol. 2 of The ·Art of Computer Programming, 2nded, Addison-Wesley, Reading, MA, 1981.”에서 나타낸 바와 같이, 예를 들어 k>100과 같은 큰 k값에 대해서만 유리하다.
일례로서, 유한 필드 FG(32)의 필드 원소 α=(2,1) 및 β(2,2)와, 차수 k=2이고 GF(3)에 대해 기약인 다항식 h(t)를 곱하는 것이 선택되어야 하고, 이 때 다항식 2t+1 및 2t+2는 모듈로 h(t)로 곱해진다. 타당한 기약 다항식은 h(t)=t2+t+2 이다. 이 때, α·β=(4t2+6t+2) mod h(t)=4(t2+t+2)+2t-6=2t 이다(2 mod 3=2 및 6 mod 3=0 이므로). 따라서, α·β=2t 또는 벡터 표시로 (2,0) 이다.
확장 필드(합성 필드(composite field)라고도 함)에 대해, 덧셈 및 곱셈의 공식은 동일하다. 그러나, 모든 계수단위 연산(coefficient-wise operation)은, 다항식 계산을 포함하는 그라운드 필드에 대해 실행된다.
유한 필드에서의 뺄셈은 상기 필드 GF(p)에서 음(negative)의 원소 x를 p-x로 표기함으로써 간단하게 할 수 있다. 따라서, 음수를 구하기 위해 원소 x는 p-x로 대치될 수 있고, 정규 계수단위 덧셈은 뺄셈을 구하기 위해서 실행될 수 있다. 나눗셈(division)은 본 기술 분야에 알려진 역원(inverse)으로 곱함으로써 실행될 수 있다.
(종래에 이용된 유한 필드)
유한 필드의 사용은 많은 응용분야에 있어서 중심이 된다. 특히, 통신용으로 유한 필드는 매우 유용하다. 예를 들어, 유한 필드에 메시지를 끼워 넣음으로써, 전송 매체에 의해 나타나는 에러가 수신단에서 정정될 수 있도록 메시지를 송신할 수 있다. 이것은 에러 정정 코드(error correcting code) 이면에서의 원칙이다. 또한, 유한 필드는 암호화, 메시지 인증 및 디지털 서명 수단으로서 메시지에 대한 보호(기밀성(confidentiality), 무결성(integrity), 근원 인증(origin authentication) 및 부인 방지(non-repudiation))를 달성하기 위해 사용될 수 있다.
사용을 위해서는, 특히 이동전화기 또는 다른 휴대용 기기와 같은 가벼운 플랫폼(platform)에서 실행되는 경우, 유한 필드를 포함하는 이러한 코딩 및 암호화 연산이 가능한 효율적으로 되어야 한다. 예를 들어, 많은 암호화 방법이 다음 지수(exponentiation) 연산을 사용한다.
(6)
여기서, g는 유한 필드의 곱셈 그룹(multiplicative group)에서의 원소이고, x는 정수이고 “·”는 유한 필드의 곱을 나타낸다. expg(x) 기능을 사용하는 이유는, expg(x)가 그라운드 필드에서 단지 약 (log2 x)3 필드 곱으로 계산될 수 있으나, 어떠한 계수(즉, log2 x에서 다항식-시간) 알고리즘도 역변환(expg(x)로부터 x를 찾는 것)에 대해 존재하지 않기 때문이다. 후자는 이산 로그(discrete logarithm) 문제로서 알려져 있다. 다시 말해, expg(x)는 소위 일방향 기능(계산하기 쉬운 함수)에 대한 유력한 후보이나, 역변환이 어렵다. 이산 알고리즘 문제는 이 기술 분야에서 통상의 지식을 가진 자들에 잘 알려진 것으로서, 예를 들어, “Handbook of Applied Cryptography by A. Menezes, P. van Oorschot, and S. A. Vanstone, CRC Press, Boca Raton, Florida, 1997." 에 논의되어 있다.
그러나, 계산적으로 취약한 플랫폼 상에서, 심지어 (log2 x)3 곱셈은 계산적으로 과도하고, 현재 권고된 필드 크기(즉, 키 크기(key size))에 대해 그러한 계산은 많은 경우에 예를 들어 약 30초 정도 걸릴 것이다. 성능을 개선하기 위한 종래의 방법은 이진 유한 필드(표수 2의 필드)로 계산을 제한하는 것이다. 이진 유한 필드로 계산을 제한하는 것은 가장 유용한 하드웨어(예를 들어, CPU 등)가 실제로 이진법이기 때문에 성능이 개선된다. 그러므로, 필드 연산은 하드웨어에 의해 직접 효과적으로 지원받는 비트단위(bitwise) XOR 등과 같은 기초적인 이전 연산으로 구성될 수 있다.
또한, De Win 등의“E. De Win, A. Bosselaers, S. VAnderberghe, P De Gersem, and J. Vandewalle, A fast Software Implementation for Arithmetic Operations in GF(2n), Advances in Cryptology, Proceedings of Asiacrypt'96, LNCS 1163, Springer-Verlag, Berlin, 1996, pp. 65-76"에 공개된 바와 같이, 확장 차수가 합성수(composite number; non-prime)인 이진 확장 필드를 사용하는 계산을 실행하여 효율을 개선하기 위한 방법이 연구되었다. De Win 등의 방법에서는, k 비트량(즉, 워드 길이가 k 비트)에 대해 연산(정규 산술 및 비트-연산)을 실행할 수 있도록 표준 이진 하드웨어 구조가 가정된다. 짝수 표수 (이진) 필드에 대해(여기서 p=2), 나머지 모듈로 2를 형성하는 것은 단순한 비트 연산으로 할 수 있다는 것을 알게 되었다.
n이 소수(prime number)가 아닐 경우, 유한 필드 GF(2n)는 GF(2k)에 대한 차수 l의 “비단순(non-trivial)" 확장으로 간주된다. 여기서, n=lk 이고 l,k>1 이다. 따라서 필드에서의 원소는 다음과 같이 쓸 수 있다.
(7)
여기서, 각 γi는 GF(2k)의 원소이다. 다음 연산을 실행함으로써 이 표기법에서의 필드 원소 α와 β의 덧셈을 할 수 있다.
(8)
αi, βi가 GF(2k)의 원소이므로, 그 합인 αii는 αi 및 βi 사이에서 비트단위 XOR로서 계산될 수 있다. 따라서, k가 하드웨어 레지스터에 맞을 만큼 충분히 작다면(전형적으로 k≤32), k 덧셈은 하드웨어에서 단지 한번의 연산을 사용하여 병렬로 실행될 수 있고, 덧셈을 실행하는 속도로 k의 인수(factor)가 구해진다.
De Win 등의 방법을 사용하는 곱셈이 실행되어 GF(2k)의 곱셈 그룹이 항상 주기적(cyclic)임을 나타내고, 이것은 임의의 비영(non-zero) 원소, αj가 필드에서 어떤 정수 0≤x<2k-1에 대해 αj=gx로 쓰여질 수 있도록, 원소 g가 GF(2k)에 있다는 것을 의미한다(즉, x는 αj의 이산 로그이고 g는 생성자로 알려져 있음). 만일 k가 적당히 크면(예를 들어, k≤16), 생성자(generator) g는 포괄적인 검색에 의해 찾아질 수 있다. 또한, 이 경우(예를 들어, k≤16)에, 표, 모든 x에 대해 gx의 ANTILOG{x}가 형성될 수 있다(여기서 0≤x<2k-1). 또한, 모든 비영 αj에 대해 이산 알고리즘 DLOG{αj}에 대한 표도 형성될 수 있다. 즉, 모든 αj 및 x에 대해,
(9)
(10)
GF(pn)에서 α와 β의 곱은 다음 식에 따라 계산된다.
(11)
여기서, δi=∑jαjβi-j는 곱의 합으로서 계산되고, 모든 연산은 필드 GF(2k)에서 일어난다. gxgy=gx+y로 주어지면, 각 항 αjβi-j는 다음 식에 따라서 상술한 예비 계산 테이블에서 검색하는 3개의 테이블에 의해 계산될 수 있다.
(12)
필요한 메모리는 약 k·2k-2바이트 이고, 곱셈을 실행하기 위한 연산의 수는 차수 l2=(n/k)2 이다. 따라서 k2의 인수가 속도로서 구해진다. 상기 방법은 테이블의 예비계산을 필요로 하고, 이러한 테이블을 저장하기 위한 메모리를 필요로 한다. k가 적당하다면(예를 들어, k≤16), 차수 2k의 예비계산 연산을 사용하는 이러한 방법을 실현할 수 있다.
반면, 홀수 표수 p(여기서 p는 홀소수(odd prime))의 유한 필드에 대해, 상기 상황은 이진 유한 필드보다 더 복잡한데, 이것은 홀수-표수(odd-characteristic) 유한 필드에서 요구되는 기본 연산이 모듈로-2 연산(비트-연산)이 아니고 오히려 모듈로-p 연산이기 때문이다. De Win 등의 추가 방법은, 예를 들어 홀수 표수(p=3, 5, 7, ...)의 유한 필드에 적용할 수 없고, 홀수 표수의 유한 필드에 대한 유사한 방법이 출원인에게 알려진 것이 없다. 종래의 방법으로 홀수 표수 유한 필드 계산을 실행하는 것은 긴 나눗셈을 필요로 하는 모듈러 산술(modular arithmetic)을 포함한다. 대부분의 하드웨어는 모듈러 산술을 지원하고 있으나, 워드지향(word-oriented) 레벨이다. 따라서 이진 유한 필드를 포함하는 계산에 대한 상술한 최적화는 홀수 표수 유한 필드를 포함하는 계산에 대해서는 실현되지 않는다.
상기한 이유 때문에, 이진 유한 필드는 에러 정정 및 암호법에서 가장 넓게 사용되는 유한 필드이다. 그러나, 출원인은 이러한 이진 필드에 대한 계산의 제한이 단점을 가질 수 있다는 것을 알게 되었다. 예를 들어, 필드가 홀수인 표수를 가지는 경우보다 필드가 표수 2(이진 필드)를 가지면 상술한 expg(x) 함수를 역변환하는 알고리즘이 더욱 효율적으로 된다. 따라서 함수 expg(x)의 암호 강도(cryptographic strength)는 일반적인 홀수 표수 유한 필드보다 이진 필드에 대해 작게 되는 것을 기대할 수 있다. 실제로, 최근에 홀수 표수 및 합성 차수의 유한 필드를 사용하는 암호법을 실행하는 것이 다른 유한 필드를 포함하는 암호 방법에 비해 개선된 암호 보안을 제공할 수 있고, 암호 보안에서의 이득이 이러한 계산 비용을 보충할 수 있다는 것이 제안되었다(K. Rubin and A. Silverberg, "Supersingular Abelian Varieties in Cryptology", Crypto 2002, Lecture Notes in Computer Science, Vol. 2442, ed. M. Jung, Springer-Verlag, Berlin, pp. 336-353, 2002 참조). 또한, 상기 참조한 De Win 등의 논문에 설명된 최적화를 적용할 수 있는 합성 차수의 이진 필드의 경우에, 그러한 필드에 대한 타원곡선 암호시스템(cryptosystem)에 대한 공격이 최근에, N. P. Gaudry 등의 논문에 설명된 바와 같이, 발견되었다(N. P. Gaudry, F. Hess, and N. P. Smart "Constructive and Destructive Facets of Weil Descent on Ellipic Curves", Technical Report CSTR-00-016, Department of Computer Science, University of Bristol, Oct, 2000, and in N. P. Smart, "How secure are elliptic curves over composite extension field?", Technical Report CSTR-00-017, Department of Computer Science, University of Bristol, Nov. 2000. 참조). 따라서, 암호화에 대한 이러한 합성 차수의 이진 필드를 회피하는 것이 바람직하다. 이러한 공격은 유한 필드가 홀수 표수(차수가 비소수이더라도)이면 좀 덜 효과적이므로, 이 경우에 관련된 우려는 없다. 그러나, 상술한 바와 같이, 홀수 표수 유한 필드를 포함하는 종래의 계산 방법을 이용하는 것은 이진 유한 필드 구조를 사용하여 그 외에 획득되는 계산적인 최적화의 희생을 요구한다.
도 1은 본 발명의 전형적인 양태에 따라 홀-표수 유한 필드의 필드 원소를 포함하는 계산을 실행하는 시스템을 도시하는 블록도.
도 2A는 GF(310)의 예에 대한 본 발명의 전형적인 양태에 따라 단일-가드-비트 표기법으로 구성되는 데이터 저장 구조를 갖는 하드웨어 레지스터를 나타내는 개략도.
도 2B는 GF(75)의 예에 대한 본 발명의 전형적인 양태에 따라 단일-가드-비트 표기법으로 구성되는 데이터 저장 구조를 갖는 하드웨어 레지스터를 나타내는 또 다른 개략도.
도 2C는 GF(38)의 예에 대한 본 발명의 전형적인 양태에 따라 다중-가드-비트 표기법으로 구성되는 데이터 저장 구조를 갖는 하드웨어 레지스터를 나타내는 개략도.
도 3은 본 발명의 전형적인 양태에 따라 홀-표수 유한 필드의 필드 원소를 표시하는 이진 데이터를 처리하는 방법을 도시한 흐름도.
도 4는 본 발명의 전형적인 양태에 따라서, 도 3에 도시한 방법에 따라 p=2m-1에서 두 필드 원소의 합을 결정하기 위해 이진 데이터를 처리하는 방법을 도시한 흐름도.
도 5는 도 4에 도시한 방법에 따라 GF(310)에서 덧셈의 일례에 대한 레지스터 내용을 나타내는 개략도.
도 6은 본 발명의 전형적인 양태에 따라 p=2m-1에서 홀-표수 유한 필드의 필드 원소를 표시하는 계산을 실행하는 하드웨어 장치의 기능적 블록도.
도 7은 본 발명의 전형적인 양태에 따라 p=2m-1에서 홀-표수 유한 필드의 필드 원소를 표시하는 계산을 실행하는 하드웨어 장치의 또 다른 기능적 블록도.
도 8A는 본 발명의 전형적인 양태에 따라 도 7에 도시한 장치와 연계하여 사용하기 위한 전형적인 가드-비트 삽입 회로를 나타내는 개략도.
도 8B는 본 발명의 전형적인 양태에 따라 도 7에 도시한 장치와 연계하여 사용하기 위한 전형적인 가드-비트 제거 회로를 나타내는 개략도.
도 9는 본 발명의 전형적인 양태에 따라 원소들의 곱을 결정하기 위해 홀-표수 유한 필드의 필드 원소를 표시하는 이진 데이터를 처리하는 방법을 도시하는 흐름도.
도 10A는 본 발명의 전형적인 양태에 따라 도 9에 도시한 방법에서 사용하기 위한 DLOG 룩-업 테이블을 나타내는 개략도.
도 10B는 유한-필드 원소 a(t)와 도 10A에 도시한 이진 정보에 대응하는 해당 n 제곱 생성자를 반영하는 인덱싱 테이블.
도 11A는 본 발명의 전형적인 양태에 따라 도 9에 도시한 방법에서 사용하기 위한 ANTILOG 룩-업 테이블을 나타내는 개략도.
도 11B는 유한-필드 원소 a(t)와 도 10A에 도시한 이진 정보에 대응하는 해당 n 제곱 생성자를 반영하는 인덱싱 테이블.
도 12는 본 발명의 전형적인 양태에 따라 홀-표수 유한 필드의 필드 원소의 곱셈을 실행하는 하드웨어 장치를 도시하는 기능적 블록도.
도 13은 본 발명의 전형적인 양태에 따라 다중-가드-비트 표기법에서 레지스터에 저장된 이진 데이터를 압축하는 압축 연산을 나타내는 개략도.
도 14는 본 발명의 전형적인 양태에 따라서, 도 3에 도시한 방법에 따라 p=2m-1에서 두 필드의 합을 결정하기 위해 이진 데이터를 처리하는 방법을 도시하는 흐름도.
도 15는 도 14에 도시한 방법에 따라 GF(56)에서의 덧셈의 예에 대한 레지스터 내용을 나타내는 개략도.
도 16는 본 발명의 전형적인 양태에 따라 p=2m+1에서 홀-표수 유한 필드의 필드 원소를 포함하는 계산을 실행하기 위한 하드웨어 장치의 기능적 블록도.
도 17은 본 발명의 전형적인 양태에 따라 p=2m+1에서 홀-표수 유한 필드의 필드 원소를 포함하는 계산을 실행하기 위한 하드웨어 장치의 또 다른 기능적 블록도.
도 18은 본 발명의 전형적인 양태에 따라서, 도 3에 도시한 방법에 따라 p=2m-d 및 d≤(2m+1)/3에서 두 필드 원소의 합을 결정하기 위해 이진 데이터를 처리하는 방법을 도시하는 흐름도.
도 19은 본 발명의 전형적인 양태에 따라서, 도 3에 도시한 방법에 따라 p=2m-d 및 (2m+1)/3<d<2m에서 두 필드 원소의 합을 결정하기 위해 이진 데이터를 처리하는 방법을 도시하는 흐름도.
도 20은 본 발명의 전형적인 양태에 따라서, 도 3에 도시한 방법에 따라 p=2m+d 및 d≤p/6에서 두 필드 원소의 합을 결정하기 위해 이진 데이터를 처리하는 방법을 도시하는 흐름도.
도 21은 본 발명의 전형적인 양태에 따라, 도 3에 도시한 방법에 따라 p=2m+d 및 p/6<d<2m-1에서 두 필드 원소의 합을 결정하기 위해 이진 데이터를 처리하는 방법을 도시하는 흐름도.
도 22는 본 발명의 전형적인 양태에 따라, 에러 정정을 실행하는 시스템의 블록도.
도 23은 본 발명의 전형적인 양태에 따라, 에러 정정을 실행하는 방법을 나타내는 흐름도.
도 24A는 본 발명의 전형적인 양태에 따라, 암호화/해독을 실행하는 시스템을 나타내는 기능적 블록도.
도 24B는 본 발명에 따른 전형적인 암호화 방법을 나타내는 흐름도.
도 25는 본 발명에 따른 키 교환을 실행하는 전형적인 방법을 나타내는 흐름도.
도 26은 본 발명에 따른 공개키 암호화의 전형적인 방법을 나타내는 흐름도.
도 27은 본 발명에 따른 공개키 암호화의 전형적인 방법을 나타내는 흐름도.
도 28은 본 발명에 따른 공개키 암호화의 전형적인 방법을 나타내는 흐름도.
이용 가능한 하드웨어가 이진 특성을 갖더라도 비-이진(non-binary) 유한 필드에 대해 기본 유한 필드 연산(즉, 덧셈, 곱셈 등)을 포함하는 계산의 속도를 향상시킬 수 있고, 특별한 modulo-p 하드웨어 대한 요구를 감소시키는, 계산 방법이 필요하다는 것을 출원인은 알게 되었다. 또한, 종래 방법 보다 더욱 효율적으로 레지스터 공간을 이용하는 비-이진 유한 필드에 대한 계산 방법이 필요하다는 것도 출원인은 알게 되었다. 예를 들어, 32 비트 CPU를 사용하여 종래의 modulo-p 산술을 실행할 수 있으나, p가 작으면(예를 들어, p=3 또는 p=7), 포함되는 양(필드 원소 계수)이 단지 2 또는 3 유효 비트(significant bits)이므로 상기 연산을 위해 32 비트의 레지스터 공간을 바치는 것은 비능률적이다. 출원인은, 포함되는 수가 매우 작게 주어지는 상기 이용 가능한 레지스터 공간을 더욱 효과적으로 사용하는 것이 바람직하다고 알게 되었다. 본 발명은, 본 기술 분야에서 통상의 지식을 가진 자라면 첨부한 도면을 참조한 상세한 설명으로부터 명백히 알 수 있도록, 이러한 요구 및 다른 요구를 실현하고 장점을 제공한다.
본 명세서에서 사용된 용어 “포함하다(comprises)” 및 “포함하는(comprising)”은 설명되는 특징, 정수, 단계 및 구성요소의 존재를 명시하기 위한 것으로서, 이러한 용어의 사용은 하나 이상의 다른 특징, 정수, 단계, 구성요소 또는 그 그룹의 존재나 부가를 배제하는 것은 아니다.
본 발명의 한 전형적인 양태로서, 암호화 방법이 제공된다. 상기 방법은 홀-표수 유한 필드 GF(pk)의 필드 원소의 적어도 일부를 표시하는 이진 데이터를 레지스터에 저장하는 단계를 포함하고, p는 홀소수이고, 상기 필드 원소는 다항식-기저 표기법에 따라 k 계수를 포함하고, 이진 데이터는 데이터 비트의 다수 그룹을 포함하고, 여기서 데이터 비트의 각 그룹은 k 계수 중 연관된 하나를 표시한다. 상기 방법은 데이터 비트의 다수 그룹이 병렬로 처리되도록 암호화 알고리즘에 따라 이진 데이터를 처리하는 단계를 포함한다. 본 발명의 다른 양태로서 제공되는 암호화 장치는 키 소스와, 상기 키 소스와 결합하는 홀-표수 유한-필드 암호화부를 포함하고, 상기 홀-표수 유한-필드 암호화부는 상기한 방법의 단계를 실행하도록 구성된다. 상기 방법을 실행하는 컴퓨터를 프로그램 하도록 적응되는 컴퓨터 판독-가능 캐리어도 제공된다. 전형적인 형태의 컴퓨터-판독가능 캐리어는, 프로세서가 상기한 단계들을 실행하게 하는 적절한 컴퓨터 명령 집합을 포함하는, 고체상태 메모리(solid-state memory), 자기디스크(magnetic disk), 광디스크 또는 변조파(modulated wave)를 포함한다. 예를 들어, 변조파는, 네트워크 연결 또는 모뎀을 통해 다운로드(download)할 수 있는, 무선 변조파, 오디오 주파수 변조파, 광주파수 변조파 또는 변조 이진 비트 스트림(modulated binary bit stream)이 될 수 있다.
본 발명의 다른 전형적인 양태로서, 키 교환 방법이 제공된다. 상기 방법은 번호 xA(예를 들어, 랜덤 정수)를 생성하는 단계를 포함한다. 상기 방법은 또한 yA를 생성 및 송신하는 단계를 포함하며, 여기서 yA=gxA이고, g는 F의 원소 또는 F에 대한 타원 곡선 상의 점이고, F는 홀-표수 유한 필드 GF(pk) 또는 GF(pk)의 확장 필드이고, p는 홀소수이고, 여기서 g는 다수의 제1 기저 계수를 포함하고, 제1 기저 계수는 GF(p)의 원소이고, 여기서 g의 다수 제1 기저 계수 중 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹을 제1 레지스터에 저장하고 병렬로 처리하여 yA를 생성한다. 상기 방법은 또한 yB를 수신하는 단계를 포함하고, 여기서 yB=gxB이고, 여기서 yB는 다수 제2 기저 계수를 포함하고, 제2 기저 계수는 GF(p)의 원소이다. 상기 방법은 또한 yB의 다수 제2 기저 계수 중 적어도 일부를 표시하는 제2 데이터 비트의 다중 그룹을 제2 레지스터에 저장하는 단계와, 제2 데이터 비트의 다중 그룹을 병렬로 처리하여 K=(yB)xA를 계산하는 단계를 포함하여, 보안키를 생성한다. 상기 방법을 실행하기 위하여 구성된, 메모리와, 메모리에 결합된 처리부를 포함하는 암호화 장치가 제공된다. 또한 상기 방법을 실행하는 컴퓨터를 프로그램 하도록 적응된 컴퓨터 판독-가능 캐리어가 제공된다.
본 발명의 다른 전형적인 양태로서, 공개키 암호화 방법이 있다. 상기 방법은 제1 교신기와 관련된 공개키 yA를 구하는 단계를 포함하고, 여기서 yA=gxA 이고, 여기서 xA는 제1 교신기의 사설키이고, g는 유한 필드 F의 원소이거나 F에 대한 타원 곡선 상의 점이고, F는 홀-표수 유한 필드 GF(pk)이거나 GF(pk)의 확장 필드이고, p는 홀소수이며, 여기서 yA는 다수의 제1 기저 계수를 포함하고, 여기서 g는 다수의 제2 기저 계수를 포함하고, 제1 및 제2 기저 계수는 GF(p)의 원소이다. 또한 상기 방법은 번호 r을 생성하고 u=gr v=f-1(P)*(yA)r에서 쌍의 (u, v)량을 계산하는 단계를 포함하고, 여기서 P는 플레인텍스트 메시지 집합의 플레인텍스트 메시지를 표시하고, f는 F에 대한 벡터 공간의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 맵핑 함수이고, *는 상기 벡터 공간에서의 이진 연산을 표시하고, 여기서 yA의 다수의 제1 기저 계수의 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹은 제1 레지스터에 저장되고 병렬로 처리되어 v를 계산한다. 상기 방법은 쌍의 (u, v)량을 제1 교신기로 송신하는 단계를 더 포함하고, 여기서 상기 쌍의 양은 플레인텍스트 메시지의 암호화된 버전에 대응한다. 상기 방법을 실행하기 위하여 구성된, 메모리와, 메모리에 결합된 처리부를 포함하는 암호화 장치가 제공된다. 또한 상기 방법을 실행하는 컴퓨터를 프로그램 하도록 적응된 컴퓨터 판독-가능 캐리어가 제공된다.
여기서 사용된 것으로서, 용어 “다항식 기저 표기법에 따라(in accordance with a polynomial basis representation)"는, 예를 들어, 벡터 표기법을 포함하는 다항식 기저 표기법과 수학적으로 등가인 임의의 표기법을 포함시키려는 의도로 사용된다.
본 발명은 p가 홀소수(odd prime number)인 유한 필드 GF(p l k)(확장 필드) 원소를 포함하는 산술 및 논리 연산을 효과적으로 실행하는 방법을 제공한다. 아래에서 상세히 설명하는 바와 같이, 본 발명의 한 양태는 필드 GF(pk)의 원소를 표시하는 데이터가 이진 하드웨어에 어떻게 저장되고, 이 때 산술 연산이 어떻게 효과적으로 실행되는가에 맞추어져 있다. 여기서 언급하는 바와 같이, 유한 필드 GF(pk)는 표수 p가 홀소수인 홀수 표수 유한 필드를 의미하는 것으로 이해되어야 한다.
본 발명의 다양한 양태에 대해 다수의 바람직한 실시예를 통하여 아래에서 더욱 상세히 설명할 것이다. 본 발명을 용이하게 이해하기 위하여, 본 발명의 여러 실시예는 컴퓨터 시스템의 요소에 의해 실행되는 동작으로서 설명된다. 또한, 본 실시예 각각에서, 여러 동작은 특정 회로(예를 들어, 특정 기능을 실행하도록 서로 연결된 이산 논리 게이트)에 의해, 하나 이상의 프로세서에서 실행되는 프로그램 명령에 의해, 또는 상기 둘의 조합에 의해 실행될 수 있다. 또한, 본 발명은 여기서 설명하는 기술을 프로세서가 실행하게 하는 적절한 컴퓨터 명령 집합을 포함하는 고체상태 메모리(solid-state memory), 자기디스크(magnetic disk), 광디스크 또는 변조파(modulated wave)와 같은 컴퓨터 판독-가능 캐리어(computer-readable carrier)의 어떤 형태 내에서 추가적으로 완전히 구현되도록 고려할 수 있다. 예를 들어, 변조파는 네트워크 접속 또는 모뎀을 통해 다운로드(download)될 수 있는, 무선 주파수 변조파, 오디오 주파수 변조파, 광주파수 변조파 또는 변조 이진 비트스트림(bit stream)일 수도 있다. 따라서 본 발명의 다양한 양태는 많은 다른 형태로 구현될 수 있고, 그러한 모든 형태는 본 발명의 범위 내에 있도록 의도된다. 본 발명의 다양한 양태 각각에 대해, 어떠한 형태의 실시예는 설명된 동작을 실행하도록 “구성된 논리(logic configured to)”로서, 또는 이와는 달리, 설명된 동작을 실행 "하는 논리(logic that)”라고 한다.
GF(pk) 원소 그 자체를 포함하는 계산을 수반하는 본 발명의 양태에 대해 말하기 전에, 필드 GF(pk)에서의 산술 연산을 확장 필드 GF(p l k)에서의 산술 연산에 결부시키는 알고리즘에 대해 먼저 설명한다. 차수 l이고 GF(pk)에 대해 기약인 다항식 f(t)가 주어지고, 하이레벨에서 동작되는 GF(p l k)의 원소로서 α(=∑iαixi, αi in GF(pk)) 및 β(=∑iβixi, βi in GF(pk))가 주어지고, 덧셈용 알고리즘 SUM(α, β) 및 곱셈 PRODUCT(α, β)가 GF(p l k)에서 주어져서, 아래에 제공된다. 이러한 알고리즘에서 GF_p_k<op>(αi, βj) 표시는 필드 GF(pk)에서 필드 원소 αi, βj에 대한 연산 <op>(덧셈, 곱셈 등)를 실행하는 절차를 나타낸다.
먼저, SUM(α, β)로 표시되고, 확장 필드 GF(p l k)의 원소 α와 β의 덧셈을 필드 GF(pk)에서 실행되는 계산으로 결부시키는 덧셈 알고리즘이 다음과 같이 주어진다.
여기서, GF_p_k_ADD에 대해서는 아래에서 상세히 설명할 것이다.
또한, PRODUCT(α, β)로 표시되고, 확장 필드 GF(p l k)의 원소 α와 β의 곱셈을 필드 GF(pk)에서 실행되는 계산으로 결부시키는 곱셈 알고리즘을 설명한다. 여기서, DLOG 및 ANTILOG 테이블의 필수 초기화(necessary initialization)는 이미 실행된 것으로 가정한다. DLOG 및 ANTILOG 테이블의 형태에 대해 아래에서 설명한다. 또한, 전형적인 DLOG 및 ANTILOG 테이블을 후술하는 GF(32)에 대한 간단한 예시로서 도 10A 및 11A에 나타내었다.
여기서, GF_p_k_MUL 및 REDUCE(δ, f)(후자는 z(t) mod f(t)를 계산)에 대해서는 아래에서 상세히 설명한다.
상기한 곱셈 알고리즘은 단지 가능한 곱셈 알고리즘의 일례일 뿐임에 유의해야 한다. 큰 값의 l(예를 들어, l>100)에 대해서, 상기한 단순 PRODUCT 알고리즘 대신에 카라쓰바 방법을 사용하여 더 빠른 성능을 얻을 수도 있다. 카라쓰바 방법은 본 기술 분야에서 널리 알려져 있으며, 예를 들어 상기한“Seminumerical Algorithms"에 설명되어 있다.
마지막으로, 곱셈 알고리즘, PRODUCT(α, β)를 완료하기 위해 필수적인 약분 연산(reduction operation)이 아래에 REDUCE(δ, f)로서 표시한 잘 알려진 알고리즘과 함께 실행될 수 있다. 이러한 알고리즘은 후술할 필드 GF(pk)에서의 효율적인 산술에 대한 본 발명의 방법에도 유용하다. 계산 효율에 대해 f(t)는, f(t)가 단지 일부의 비영 계수(예를 들어, 3 비영 계수)를 갖는다는 것을 의미하는, “희박(sparse)"하도록 선택될 수 있다. 이 경우에, f(t)는 l과 0 사이의 일부 j에 대해 f(t)=fltl+fjtj+f0 으로 형성된다. 그러나 f(t)가 희박해지는 것은 일반적으로 필수적인 것은 아님에 유의해야 한다. 임의 값 l에 대해, 차수 l의 기약 다항식 f(t)는 본 기술 분야에 알려진 방법에 의해 쉽게 찾을 수 있다. 기약 다항식 f(t)를 결정하는 일반적인 방법은 일례로서 상기한 “Seminumerical Algorithms"에서 찾을 수 있다. 이러한 코멘트를 상기하면서, REDUCE(δ, f)로 표시한 약분 알고리즘은 다음과 같다.
상기 REDUCE 알고리즘은 상기와 같이 주어진 f(t)의 특수 형태에 대해 적응되는 정규 다항식 나눗셈 알고리즘(normal polynomial division algorithm)이다. tmp1 및 tmp2는, 주어진 표기법에 한번에 고정되기 때문에, 즉 한번에 f(t)가 정의되므로, 미리 계산될 수 있다는 것에 유의해야 한다. 함수 GF_p_k_SUB는 필드 GF(pk)에서 필드 뺄셈을 말하는 것이고, 함수 GF_p_k_INVERSE는 곱셈 역원 계산(multiplicative inverse computation)을 말하는 것이고, 이들 둘은 GF_p_k_ADD와 GF_p_k_MUL에 대해 주어진 알고리즘을 용이하게 실행하는 것으로서, 아래에서 설명할 것이다.
상기한 알고리즘을 실행하고, 본 발명의 다른 양태를 구현하는 전형적인 장치(100)에 대해, 도 1의 블록도를 참조하여 설명한다. 상기 장치(100)는 메모리(101)와, 메모리(101)에 결합된 처리부(105)로 이루어진다. 상기 장치(100)는 입출력 소자(103)도 포함한다. 처리부(105)는, 처리부 내에서 논리 회로(도시하지 않음)에 의해 제어되는, 다수의 레지스터(107-121)로 이루어진다. 처리부(105)는 도 1에서 화살표로 나타낸 전기적인 연결(예를 들어, 전기적인 버스)을 통해 입출력 소자(103) 및 메모리(101)와 통신할 수 있다. 처리부(105)는, 처리부(105) 밖에 있는 외부 레지스터(도시하지 않음)와 통신할 수도 있다.
처리부(105)로서는, 예를 들어, 개인용 컴퓨터에서 전형적으로 사용되는 펜티엄급(Pentium-class) 프로세서 또는 다른 CPU와 같은 어떤 종래 형태의 처리부나, 무선 전화기 도는 다른 휴대용 소자에 사용되는 특수 목적의 처리부를 사용할 수 있다. 개인용 컴퓨터에 사용되는 종래 프로세서는, 도 1에서 8 레지스터(107-121)(레지스터 a-h로도 표시)로 나타낸 바와 같이, 공통적으로 8개의 범용 레지스터를 가진다. 예를 들어, 레지스터 107은 8-비트 레지스터, 16-비트 레지스터, 32-비트 레지스터, 64-비트 레지스터 등으로 될 수 있다. 종래 개인용 컴퓨터용 현 세대의 프로세서는 공통적으로 32-비트 레지스터를 갖는다.
메모리(101)로서는, 예를 들어, 자기 디스크, CD ROM, 광자기 디스크, 플래시 메모리 또는 다른 종류의 메모리와 같은, 컴퓨터 프로그램을 저장할 수 있는 적당한 메모리를 사용할 수 있다. 컴퓨터 프로그램을 저장하는 것에 더하여, 메모리(101)는 처리부(105)에 의해 발생된 중간 또는 최종 계산 결과를 저장하는 데 사용될 수도 있고, 계산 중에 이용되는 룩-업 테이블(look-up table)을 저장하는 데 사용될 수도 있다.
입출력 소자(103)로서는, 예를 들어, 배선 모뎀(hard-wired modem) 또는 네트워크 인터페이스, 무선 모뎀, 제2 메모리, 아날로그-디지털/디지털-아날로그(AD/DA) 변환기, 또는 다른 비슷한 종류의 소자와 같은, 처리부(105)로부터 및/또는 처리부(105)로 데이터를 전달하는 적절한 소자를 사용할 수 있다. 필요할 경우, 결합된 입출력 소자를 대신해서 분리된 입력 및 출력 소자를 사용할 수도 있다. 또한, 입출력 소자(103)는 가드-비트 삽입(guard-bit insertion) 및 가드-비트 제거를 실행하도록 구성될 수도 있다. 가드-비트 삽입 및 가드-비트 제거는, 일례로서 도 8A 및 8B와 연관하여 나중에 설명한다.
한 양태에 있어서, 메모리(101)는 하나 이상의 컴퓨터 프로그램을 저장할 수 있고, 처리부(105)는 컴퓨터 프로그램(들)의 단계를 실행하기 위해 메모리(101)에 접속할 수 있다. 이러한 컴퓨터 프로그램은, 예를 들어, 상기한 알고리즘을 나타내는 프로그램과 아래에서 설명하는 바와 같은 본 발명의 다른 양태를 구현하는 프로그램을 포함할 수 있다.
또한, 단일 처리부(105)를 갖는 단일처리 시스템(single processing system)(100)을 도 1에 나타내고 있으나, 상기 처리 시스템(100)은 다중처리부(multiple processing unit)(105)를 포함할 수 있는 것으로 이해되어야 한다. 또한, 단일처리 시스템(100) 대신에 다중처리 시스템을 이용하여 본 발명을 구현할 수도 있다.
상세한 설명의 나머지 부분은, 하드웨어 레지스터에서 GF(pk)의 필드 원소를 나타내는 이진 데이터를 저장하고, GF(pk)의 필드 원소를 포함하는 산술 계산의 속도를 개선하는 점에서, 이러한 이진 데이터로 연산을 실행하는 본 발명에 따른 방법을 설명하는 데에 초점을 맞출 것이다. 이 점에 대해서, GF(pk)의 필드 원소를 덧셈 및 곱셈하기 위한 알고리즘 GF_p_k_ADD 및 GF_p_k_MUL이 설명될 것이다. 또한, 상기 방법을 구현하는 다른 장치도 설명될 것이다.
본 발명의 한 양태에 따르면, 도 1에 나타낸 상기 장치(100)는, 홀수 표수 유한 필드의 필드 원소를 포함하는 계산을 실행하는 종래의 방법에 비해 계산 효율을 개선하는 방식으로, 홀수 표수 유한 필드 GF(pk)의 필드 원소를 포함하는 계산을 실행하는 데 사용될 수 있다. 특히, 처리부(105)는, 도 1에 나타낸 레지스터(107)와 같은 레지스터에 홀수 표수 유한 필드 GF(pk)의 필드 원소의 적어도 일부를 나타내는 이진 데이터를 저장하도록 구성된다(예를 들어, 프로그램 된다). 여기서, P는 홀소수이고 필드 원소는 다항식 기저 표기법에 따른 k 계수를 포함한다. 처리부(105) 및 레지스터는 GF(pk)의 필드 원소의 적어도 일부에서 표시되는 이진 데이터를 저장하는 수단으로서 볼 수도 있다. 이진 데이터는 데이터 비트의 복수의 그룹으로 이루어지고, 여기서 데이터 비트의 각 그룹은 k 계수 중 관련된 하나를 표시한다. 따라서 홀수 표수 유한 필드 GF(pk)의 필드 원소의 다중(multiple) 계수를 나타내는 이진 데이터를 본 발명의 양태에 따른 단일 하드웨어 레지스터에 넣을 수 있다. 반면, 홀수 표수 유한 필드의 필드 원소를 포함하는 계산을 실행하기 위한 종래의 방법은 단지, 홀수 표수 유한 필드의 단일 계수를 표시하는 이진 데이터를 단일 하드웨어 레지스터에 둔다.
또한, 처리부(105)는 상기한 레지스터(107)의 콘텐츠에 대해 적어도 하나의 연산을 실행하도록 구성되어, 데이터 비트의 복수 그룹이 병렬로 처리되게 한다. 예를 들어 몇 가지만 열거하더라도, 하나 이상의 연산은 시프트 연산, 덧셈 연산, 이진 뺄셈 연산, 논리 AND 연산 및 NOT 연산(부논리)을 포함할 수 있다. 이 점에 있어서, 상기 처리부(105)는 데이터 비트의 복수 그룹이 병렬로 처리되도록 이진 데이터에 대해 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다. 따라서, 단일 하드웨어 레지스터에 GF(pk)의 필드 원소의 다중 계수를 표시하는 이진 데이터를 저장하고, 병렬로 데이터 비트의 복수 그룹을 처리함으로써, 본 발명에 따른 계산 속도는 홀수 표수 유한 필드의 필드 원소를 포함하는 계산에 대한 종래의 방법에 비해 매우 증대될 수 있다. 예를 들어, GF(pk)의 필드 원소의 모든 k 계수가, 도 1에 나타낸 레지스터(107)와 같이, 단일 하드웨어 레지스터에 표시되면, 필드 원소를 표시하는 이진 데이터를 처리하는 속도는 종래 방법에 대해 덧셈 k와 곱셈 k2의 인수(factor)만큼 증가될 수 있다.
GF(pk)의 필드 원소의 다중 계수는 본 발명에 따른 2개의 전형적인 방법을 사용하는 단일 하드웨어 레지스터에 저장될 수 있다. 여기서는 이러한 방법을 각각 단일-가드-비트 표기법(single-guard-bit representation) 및 다중-가드-비트 표기법(multiple-guard-bit representation)이라고 하고, 이들 각각은 아래에 설명하는 바와 같이 서로 다른 장점을 가지고 있다. 이러한 각각의 표기에 대한 설명에서, 하드웨어의 구조는 w-비트 워드에 대해 기본 산술 및 논리 연산을 실행할 수 있는 것으로, 즉 하드웨어 레지스터가 w≥k(m+1)에 대해 w-비트 레지스터로 된다고 가정하며, 여기서 전체 필드 원소를 표시하는 이진 데이터는 단일 레지스터에 저장될 것이다. 종래 관점에서, 이것은 하드웨어 구조가 (0 ... 2w-1)의 범위에서 이진 인코드 정수(binary encoded integers)에 대해 산술 및 논리 연산을 실행할 수 있다는 것을 의미한다. 원칙적으로, 큰 값의 w가 바람직한데, 이는 더 많은 정보가 연산당 처리될 수 있기 때문이다. 비트 위치는 우측에서 좌측으로 번호가 매겨지며, 여기서 최하위 비트(least significant bit)는 "0", 다음 비트는 “2” 등으로 표기하고, 최상위 비트(most significant bit)(워드 크기)는 “w-1"로 표기한다.
단일-가드-비트 표기법의 예를 32-비트 하드웨어 레지스터에 대해 도 2A 및 2B에 나타내었다. 도 2A는 GF(310)의 필드 원소 αi=(α9,i, ..., α1,i, α0,i)를 표시하는 이진 데이터를 저장하기 위한 데이터 저장 구조를 갖는 하드웨어 레지스터(200)의 개략도이다.
도 2A의 예에서, 비트 위치 201-r(비음영(unshaded) 비트 위치)의 10 그룹은 필드 계수 α9,i, ..., α1,i, α0,i를 표시하는 데이터 비트의 10 그룹을 저장하도록 할당된다. 2 비트 위치는 각 계수 αj,i를 나타내는 이진 데이터를 저장하기 위해 할당된다(αj,i ≤3<22이므로 충분함). 계수 α0,i를 표시하는 데이터 비트의 그룹은 비트 위치 0 및 1(오른쪽으로)에 저장된다. 계수 α1,i를 표시하는 데이터 비트의 다른 그룹은 비트 위치 3 및 4에 저장된다. 또한 10 비트 위치 203-r은 초기에 이진값 0으로 할당된“가드 비트(연한 음영 영역)”를 저장하도록 할당된다. 도 2A의 예에서, 비트 위치 2, 5, 8 등은 가드 비트로 할당된다. 가드 비트 위치(분리-비트(separating-bit) 위치라고도 함) 는 필드 계수를 표시하는 이진 데이터를 분리하게 하고 비트 위치 201-r의 직전 그룹으로부터 어떤 캐리 비트(carry bit)를 받아들이게 한다. 예를 들어, 산술 및 논리 연산이 실행될 때, 비트 위치 201-1의 그룹으로부터의 캐리 비트는 비트 위치 201-2의 인접 그룹으로 캐리가 넘어가는 것을 방지하고, 그 대신에, 가드-비트 위치 203-1로 캐리를 넘긴다. 또한, 도 2A의 예에서, 레지스터(200)에서 두 개의 최상위 비트 위치(205)는 사용되지 않는다(짙은 음영 영역). 일반적으로, 사용되지 않는 비트 위치는 최상위 비트 위치이다. 그러나 사용되지 않는 비트 위치를 최하위 비트 위치에 둘 수도 있다. 사용하지 않는 비트 위치가 최상위 비트 위치에 놓여 있다면, 어떤 특정 값을 사용되지 않는 비트 위치에 할당할 필요가 없다. 그렇지 않다면, 사용하지 않는 비트 위치는 초기에 영으로 할당되어야 한다.
GF(310)에 대한 도 2A의 예에서, 그라운드 필드는 GF(3)이고, 각 계수의 정수값과 해당 이진 데이터 사이에서 다음 맵핑을 적용할 수 있다(괄호 속의 값은 이진 데이터임): 0~(0,0); 1~(0,1); 2~(1,0); 3~(1,1), 여기서 3은 또한 0에 대응한다(3 mod 3=0 이므로). 따라서 본 발명의 한 양태에서, GF(p)에서 2개의 다른 수(이 예에서는 3 및 0, p=3)를 동일값(영)으로 표시하는 이중 표기법이 제공된다. GF(3k)에서, 2개의 이진 비트가 필드 원소의 각 계수를 나타내기 위해 사용된다. GF(pk)에 대해 일반적으로, 필드 원소의 계수를 나타내는 데 사용되는 비트 수는 p 값에 따른다. p가 p=2m-1로 주어지는 경우, m 이진 비트(가드 비트를 포함하지 않음)는 필드 원소의 각 계수를 표시하기 위해 사용된다.
단일-가드-비트 표기법의 다른 예를 도 2B에 나타내었다. 도 2B는 GF(75)의 필드 원소 αi=(α4,i, ..., α1,i, α0,i)를 저장하는 데이터 저장 구조를 갖는 하드웨어 레지스터(210)의 개략도이다. 도 2B의 예에서, 비트 위치 211-r(비음영 비트 위치)의 5 그룹은 필드 계수 α4,i, ..., α1,i, α0,i를 표시하는 이진 데이터를 저장하도록 할당된다. 이 예에서, p=7=2m-1이다. 그러므로, m=3, 3개의 비트(가드 비트를 포함하지 않음)는 각 계수 α0,i를 표시하는 이진 데이터를 저장하도록 할당된다. 계수 α1,i를 표시하는 이진 데이터는 비트 위치 4, 5 및 6 등에 저장된다.
GF(75)에 대한 도 2B의 예에서, 그라운드 필드는 GF(7)이고, 각 계수의 정수값과 해당 이진 데이터 사이에서 다음 맵핑을 적용할 수 있다(괄호 속의 값은 이진 데이터임): 0~(0,0,0); 1~(0,0,1); 2~(0,1,0); 3~(0,1,1); 4~(1,0,0); 5~(1, 0,1); 6~(1,1,0); 및 7~(1,1,1), 여기서 7은 또한 0에 대응한다(7 mod 7=0 이므로). 따라서 본 발명은 GF(p)에서 2개의 다른 수(이 예에서는 7 및 0, p=7)를 동일값(영)으로 표시하는 이중 표기법이 제공된다.
또한, 도 2B의 예에서, 5 비트 위치 213-r은 초기에 이진값 0으로 할당된“가드 비트(연한 음영 영역)”를 저장하도록 할당된다. 또한, 비트 위치 3, 7, 8, 11 등은 가드 비트로 할당된다. 또한, 도 2B의 예에서, 레지스터(210)에서 12 최상위 비트 위치(215)는 사용되지 않는다(짙은 음영 영역).
다중-가드-비트 표기법의 예를 도 2C에 나타내었다. 도 2C는 GF(78)의 필드 원소 αi=(α7,i, ..., α1,i, α0,i)를 저장하는 데이터 저장 구조를 갖는 하드웨어 레지스터(220)의 개략도이다. 도 2C의 예에서, 비트 위치 221-r(비음영 비트 위치)의 8 그룹은 필드 계수 α7,i, ..., α1,i, α0,i를 표시하는 이진 데이터를 저장하도록 할당되고, 비트 위치 221-r의 인접 그룹은 2 가드 비트 위치 213-r(연한 음영 비트 위치)의 그룹에 의해 분리된다. 이 예에서, p=3=2m-1이다. 그러므로, m=2, 2개의 비트(가드 비트를 포함하지 않음)는 각 계수 αj,i를 표시하는 이진 데이터를 저장하도록 할당된다. 계수 α0,i를 표시하는 이진 데이터는 비트 위치 0 및 1(오른쪽으로)에 저장된다. 계수α1,i를 표시하는 이진 데이터는 비트 위치 4, 5, 6 등에 저장된다. 비트 위치 223-r의 8 그룹은, 초기에 이진값 0으로 할당된 2 가드 비트 각각을 저장하도록 할당된다. 도 2C의 예에서, 비트 위치 2, 3, 6, 7, 8, 10, 11 등은 가드 비트에 대해 할당된다. 이러한 예에서 사용되지 않는 비트는 없다.
전형적으로, 단일 하드웨어 레지스터(107)에 GF(pk)의 전체 필드 원소를 표시하는 이진 데이터를 저장하는 것은 바람직하다. 그러나, 이진 표기법이 단일 레지스터의 저장 용량을 초과할만큼 필드 원소가 충분히 클 경우에, 레지스터(107)에 필드 원소의 적어도 일부를 표시하는 이진 데이터를 저장하는 것이 바람직하다. 상기한 산술 및 논리 연산은 GF(pk)의 단일 필드 원소를 표시하는 이진 데이터를 함께 저장하는 다중 레지스터에서의 연산과 통합하여 실행될 수 있다. 예를 들어, 2개의 레지스터가 GF(pk)의 단일 필드 원소를 표시하는 이진 데이터를 저장하기 위해 사용된다면, 좌측 레지스터에서의 최하위 비트가 우측 레지스터의 최상위 비트 쪽으로 시프트 되도록, 모든 이진 데이터에 대한 m 비트만큼의 우측 시프트가 2개의 레지스터와 통합하여 실행될 수 있다. (“우측(right-hand)” 및 “좌측(left-hand)"이라는 용어는, 레지스터에서 맨 왼쪽의 비트 위치(left-most-bit position)가 최상위 비트 위치에 해당한다는 의미에서, 단지 레지스터를 구별하기 위해 사용된다. 상기 용어는 하나의 레지스터가 반드시 다른 레지스터의 왼쪽에 물리적으로 위치한다는 것을 나타내기 위한 것이 아니다.) 그러나, 필드 원소를 표시하는 이진 데이터를 저장하기 위해 2개의 레지스터가 사용되는 경우, 사용되지 않는 여분의 비트가 우측 레지스터의 최상위 비트에 존재하면, 사용되지 않은 여분 비트에 대해 스킵하도록 우측-시프트 연산이 실행되어야 한다는 것에 유의해야 한다.
본 발명의 다른 양태에 따라, 도 1에 나타낸 시스템(100)은 도 3에 나타낸 흐름도에서의 단계를 실행하도록 구성될 수 있다. 도 3은 도 1에 나타낸 처리부(105)에 의해 실행될 수 있는 다수의 단계를 포함하는 방법(300)을 나타낸다. 도 3에 나타낸 단계 301에서와 같이, 처리부(105)는 제1 레지스터(예를 들어, 레지스터 109)에 GF(pk)의 제1 필드 원소를 표시하는 제1 이진 데이터를 저장한다(p는 홀소수). 여기서, 제1 이진 데이터는 제1 데이터 비트의 k 그룹을 포함하고, 제1 데이터 비트의 각 그룹은 제1 필드 원소의 k 계수 중 관련된 하나에 대응한다. 마찬가지로, 단계 303에서와 같이, 처리부(105)는 제2 레지스터(예를 들어, 레지스터 111)에 GF(pk)의 제2 필드 원소를 표시하는 제2 이진 데이터를 저장한다. 여기서, 제2 이진 데이터는 제2 데이터 비트의 k 그룹을 포함하고, 제2 데이터 비트의 각 그룹은 제2 필드 원소의 k 계수 중 관련된 하나에 대응한다. 또한, 단계 305에에서와 같이 처리부(105)는, 제1 데이터 비트의 k 그룹이 병렬로 처리되고 제2 데이터 비트의 k 그룹이 병렬로 처리되도록, 제1 레지스터의 콘텐츠와 제2 레지스터의 콘텐츠에 대해 적어도 하나의 연산을 실행함으로써 제3 이진 데이터를 생성한다. 예를 들어, 단지 몇 가지만 열거하면, 단계 305에서 언급한 연산 또는 연산들은 덧셈 연산, 뺄셈 연산, 시프트 연산, 논리 AND 연산 및 NOT 연산을 포함한다. 이러한 연산들의 조합이 실행될 수 있어서, 예를 들어 아래에서 상세히 설명하는 바와 같이, 제1 및 제2 필드 원소의 합과 동일한 제3 필드 원소 또는 제1 및 제2 필드 원소의 곱과 동일한 제3 필드 원소를 표시하는 제3 이진 데이터를 생성한다.
적어도 하나의 제1 가드 비트가 제1 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하고, 제1 데이터 비트의 각 그룹은 해당하는 적어도 하나의 제1 가드 비트에 의해 제1 데이터 비트의 인접 그룹으로부터 분리되도록, 제1 데이터 비트의 k 그룹을 제1 레지스터(109)에서 구성할 수 있다. 적어도 하나의 제2 가드 비트가 제2 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하고, 제2 데이터 비트의 각 그룹은 해당하는 적어도 하나의 제1 가드 비트에 의해 제2 데이터 비트의 인접 그룹으로부터 분리되도록, 제2 데이터 비트의 k 그룹을 제2 레지스터(111)에 구성할 수 있다. 또한, 적어도 하나의 제3 가드 비트가 제3 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하고, 제3 데이터 비트의 각 그룹은 해당하는 적어도 하나의 제3 가드 비트에 의해 제3 데이터 비트의 인접 그룹으로부터 분리되도록, 제3 이진 데이터는 제3 레지스터(예를 들어, 레지스터 113)에 저장되고 구성되는 제3 데이터 비트의 k 그룹을 포함할 수 있다. 이 점에 있어서, 제3 필드 원소는 다항식-기저 표기법에 따라 k 제3 계수를 포함하고, 제3 데이터 비트의 각 그룹은 k 제3 계수 중 관련된 하나를 표시한다. (상기한 설명에서, “제1”, “제2” 및 “제3”은 라벨로서 사용되었다.)
처리부(105) 및 제1 레지스터(예를 들어, 레지스터 109)는 GF(pk)의 제1 필드 원소를 표시하는 제1 이진 데이터를 저장하기 위한 수단으로 볼 수 있다. 처리부(105) 및 제2 레지스터(예를 들어, 레지스터 111)는 GF(pk)의 제2 필드 원소를 표시하는 제2 이진 데이터를 저장하기 위한 수단으로 볼 수 있다. 처리부(105) 및 제3 레지스터(예를 들어, 레지스터 113)는 GF(pk)의 제3 필드 원소를 표시하는 제3 이진 데이터를 저장하기 위한 수단으로 볼 수 있다. 처리부(105)는, 제1 데이터 비트의 k 그룹이 병렬로 처리되고 제2 데이터 비트의 k 그룹이 병렬로 처리되도록, 제1 이진 데이터 및 제2 이진 데이터에 대해 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다.
단계 307에서, 추가 데이터가 처리되어야 하는지의 여부를 결정한다. 추가 데이터가 처리되어야 한다면, 단계 301로 돌아가서 진행된다. 다른 계산 결과로서 단계 301 및/또는 303과 일치하는 방식으로 이미 저장된 이진 데이터를 처리하는 것이 추가적인 처리에 포함되면, 단계 301 및/또는 303은 적절히 스킵할 수 있다. 단계 307에서 추가 데이터를 처리하지 않는 것으로 결정되면, 알고리즘은 종료한다.
도 3에 나타낸 단계 305를 실행하는 전형적인 방법에 대해 설명한다. 단계 305는, 예를 들어, 아래에서 설명하는 알고리즘 GF_p_k_ADD 또는 알고리즘 GF_p_k_MUL을 사용하여 실행될 수 있다. GF_p_k_ADD 및 GF_p_k_MUL은 알고리즘 SUM(α, β), PRODUCT(α, β) 및 REDUCE(δ, f)에 대한 상기 설명에서 언급하였다. 아래에서 설명하는 바와 같이, GF_p_k_ADD 및 GF_p_k_MUL 모두에 대한 알고리즘의 특정 양태는 표수값 p의 함수 형태에 의존하고, 또한 단일 가드-비트 표기법 또는 다중 가드-비트 표기법 중 어느 것이 사용되었는지에 의존한다. 특히, 이러한 알고리즘의 특정 양태는 어떤 정수 m 및 어떤 정수 d에 대해 p=2m-1, p=2m+1, p=2m 중에서 어느 것으로 p를 썼는가에 의존한다. 정수 d는 d<2m-1이 되도록 선택된다. 그러나, d를 더 작게 선택하는 것은(예를 들어 d≤p/6) 아래에 설명하는 바와 같은 약간의 장점이 있다. 따라서 GF_p_k_ADD에 대한 전형적인 형태와 GF_p_k_MUL에 대한 전형적인 형태에 대해, 표수값 p의 함수 형태를 참조하고 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 어느 것이 사용되었는가를 참조하여, 아래에서 설명한다.
상기 코멘트의 관점에서, 주어진 홀소수 p를 하나의 함수 형태보다 많게 쓸 수 있는 경우에 GF_p_k_ADD의 형태 또는 GF_p_k_MUL의 형태 중 어느 것이 사용되어야 하는지에 대한 의문이 있다. 예를 들어, p=5는 m=2에 대해 p=2m+1로 쓸 수 있고, p=5는 m=3 및 d=3에 대해 p=2m-d로도 쓸 수 있다. 일반적으로, 다른 두 가지 함수 형태에 대한 방법보다 p=2m-1에 대한 방법을 이용하는 것이 바람직하다. 또한, d>1을 갖는 p=2m± d에 대한 방법보다 p=2m+1에 대한 방법을 사용하는 것이 바람직하다. 일반적으로, p=2m± d에 대해, d 홀수를 선택하는 것이 바람직하고 가능한 1에 가까울수록 바람직하다. p 값이 주어지면, 모든 m=1, 2, ..., (2log2(p))에 대해 시도하고, 각 m에 대해 작은 d를 찾을 때까지 p=2m± d를 만족하는 d를 선택함으로써, 양호한 (m,d) 쌍을 찾을 수 있다.
단일-가드 비트 표기법을 사용한 덧셈, p=2 m -1
p=2m-1인 경우 단일-가드-비트 표기법에 대한 GF_p_k_ADD에 대해 설명하고, 관련 모듈러 약분을 포함하는 GF(pk)에서의 두 필드 원소의 전가산(full addition)(즉, 각 필드 원소의 k 계수에 부수된 k 덧셈)이 적어도 w=k(m+1) 비트 워드 크기를 갖는 하드웨어 구조에서 작고 고정된 수의 연산(긴 나눗셈을 요구하는 모듈러 약분이 필요 없음)으로 실행될 수 있는 방법을 나타낸다. 예를 들어, 32-비트 구조에 대해, GF(310)에서 전가산은 단지 5 명령을 사용하여 실행될 수 있다.
단일-가드 비트 표기법에서, GF(pk)의 제1 필드 원소 αi=(αk-1,i, ..., α1,i, α0,i)를 표시하는 제1 이진 데이터는, 하나의 필드 계수를 표시하는 데이터 비트의 그룹이 다른 필드 계수를 표시하는 데이터 비트의 인접 그룹으로부터 한 비트 위치만큼 분리되도록, 비트 위치 0에서 m-1까지의 α0,i를 표시하는 이진 데이터, 비트 위치 m+1에서 2m까지의 α1,i를 표시하는 이진 데이터 등등을 저장함으로써, 제1 단일 하드웨어 레지스터(예를 들어 도 1의 레지스터 107)에 저장된다. 제2 필드 원소 β를 표시하는 제2 이진 데이터는 마찬가지로 제2 단일 하드웨어 레지스터(예를 들어, 레지스터 109)에 저장된다. 비트 위치 v(m+1)-1(여기서 v=1, 2, ..., k)은 계수 α0,i, α1,i 등을 표시하는 이진 데이터를 분리하도록 할당된다. 이러한 위치를 가드-비트 위치 또는 분리-비트 위치라고 하며, 초기에는 “0”값으로 할당된다. w=32 비트 구조에 대한 단일-가드-비트 표기법에 따라 이진 데이터를 저장하는 예를, 필드 GF(310) 및 GF(75)의 원소에 대해 이미 설명한 도 2A 및 2B에 각각 나타내었다. 예를 들어, GF(310)에 대한 도 2A에서, 2 비트 위치가 각 αj,i에 대해 예약된다(αj,i≤3<22이므로 충분함).
제1 및 제2 레지스터에 각각 저장된 GF(pk)의 제1 및 제2 필드 원소를 표시하는 제1 및 제2 이진 데이터로써, 제1 및 제2 필드 원소의 합을 결정하도록 연산을 실행할 수 있다. 제1 및 제2 레지스터의 콘텐츠는 각각 a 및 b라고 한다. j(m+1)-1(j=1, 2, ... k) 위치에서만 “1”비트이고 그 외에는 “0”인 이진량(binary quantity)으로 M2를 두고(즉, M2=2m+22m+1+...+2k(m+1)-1), M1=MOT(M2)(비트단위 부정)에 의해 주어지는 이진량으로 M1을 둔다. 제1 및 제2 필드 원소의 합은 식 13에 주어진 연산을 실행함으로써 결정될 수 있다.
(13)
여기서, “&”는 비트단위 논리 AND를 표시하고, “>>”는 우측 시프트를 표시하고, “+”는 캐리가 있는 덧셈을 표시하고, c는 제1 및 제2 필드 원소의 합과 동일한 제3 필드 원소를 표시하는 제3 이진 데이터로 이루어지는 레지스터 콘텐츠를 말한다. 식 13에 반영된 연산은 원하는 어떤 방법으로 실행될 수 있다. 예를 들어, 중간량(intermediate quantity) (a+b)는 주어진 레지스터에 저장될 수 있고, 연산 (a+b)가 한번만 실행되도록 상기 주어진 레지스터를 상기 양 c에 의해 주어진 최종 결과로써 덮어 쓸 수가 있다. 이진량 M1 및 M2는 마스크량으로서 생각할 수 있는데, 이것은 식 13에서와 같이 각 논리 AND 연산을 통해 상기 양 (a+b)와 결합되었을 때, 이진량 M1 및 M2가 상기 양 ((a+b)&M1) 및 ((a+b)&M2)에서의 특정 비트 위치에서 비트를 마스크-아웃(mask out)(영으로 설정)시키기 때문이다. 이진량 M1은 가드-비트 위치에 대응하는 상기 양 ((a+b)&M1)에서 비트를 마스크-아웃시킨다. 이진량 M2은 비-가드-비트(non-guard-bit) 위치에 대응하는 상기 양 ((a+b)&M2)에서 비트를 마스크-아웃시킨다.
위치 m, 2m+1 등에서 가드 비트로 식 13을 실행하는 경우, 어떤 αj,i(또는 βj,i)에 대응하는 m-비트 세그먼트(segment)로부터 αj+1,i(또는 βj+1,i)를 표시하는 세그먼트로 캐리 비트(carry bit)가 전달되지 않는다. 따라서, 필드-원소 합은 실제로, αi 및 βi 대해 성분 단위(component-wise), 모듈로 p로 계산된다. M1에 의한 마스크 연산은 상기 결과가 가드-비트 위치에서 영을 갖는 정확한 표기법을 갖도록 한다. 상기한 논의에서, M2가 먼저 결정된 후, M1이 M2의 항으로 정의된다. 그러나 제1 레지스터에 저장된 제1 가드 비트의 비트 위치에 대응하는 비트 위치에서 0의 값을 갖고 그 외에는 1의 값을 갖는 이진량으로 M1을 먼저 결정한 후, M2=NOT(M1)으로서 M2를 결정하여도 마찬가지로 된다.
p=2m-1인 경우 GF_p_k_ADD의 이러한 형태의 예를 도 4의 흐름도에 나타내었다. 도 4에 나타낸 연산은 도 1에 나타낸 시스템(100)과 같은 시스템에 의해 실행될 수 있다. 제1 레지스터(예를 들어, 도 1에 나타낸 레지스터 107)에 GF(pk)의 제1 필드 원소를 표시하는 제1 이진 데이터가 저장되고, 제2 레지스터(예를 들어, 레지스터 109)에 제2 필드 원소를 표시하는 제2 이진 데이터가 저장되도록, 도 3에서의 단계 301 및 303은 처리부(105)에서 이미 실행되었다고 가정한다. 도 4에 나타낸 단계는 도 3에 나타낸 단계 305의 전형적인 구현을 표시한다.
단계 401에 나타낸 바와 같이, 처리부(105)는 제1 레지스터(107)의 콘텐츠 a와 제2 레지스터(109)의 콘텐츠 b를 더한다. 상기 덧셈은 필요할 경우 주어진 다음의 최상위 비트에 캐리를 포함시킬 수 있다. 상기 덧셈의 결과는 다른 레지스터(111)에 저장될 수 있다. 단계 403에 나타낸 바와 같이, 처리부(105)는 레지스터(111)에 저장된 상기 양 (a+b)와 레지스터들 중 하나(예를 들어, 113)에 저장된 제1 소정 이진량 M1 사이에서 논리 AND 연산을 실행한다. 상기 양 M1은 제1 레지스터(107)에 저장된 제1 가드 비트의 비트 위치에 대응하는 비트 위치에서 0의 값을 가지고, 제1 레지스터에 저장된 제1 데이터 비트의 그룹의 비트 위치에 대응하는 비트 위치에서 1의 값을 가진다. 이러한 연산의 결과는 제1 중간 데이터 c1라고 말할 수 있고, 레지스터들 중 하나(예를 들어, 레지스터 115)에 저장된다.
단계 405에 나타낸 바와 같이, 처리부는 제1 레지스터(111)에 저장된 상기 양 (a+b)와, M2가 M2=NOT(M1)로 주어진 제2 소정 이진량 M2 사이에서 논리 AND 연산을 실행한다. NOT 연산은 비트단위 논리 연산이다. 이러한 연산의 결과는 레지스터들 중 하나(예를 들어, 레지스터 117)에 저장된다. 단계 405에도, 처리부(105)가 ((a+b)&M2)로 주어진 양에 대해 m 비트만큼 우측 시프트를 실행한다. 이러한 연산의 결과는 동일한 레지스터(117) 또는 다른 레지스터에 저장된다. 이러한 연산의 결과는 단계 405에 나타낸 바와 같이 제2 중간 데이터 c2라고 말할 수 있다. 단계 407에서, 처리부는 제1 중간 이진 데이터(c1)과 제2 중간 이진 데이터(c2) 사이에서 덧셈을 실행하여 제3 이진 데이터(c)를 생성하고, 이것은 레지스터들 중 하나(예를 들어, 레지스터 119)에 저장될 수 있다. 이러한 방법에 따라, 제2 이진 데이터(c)가 제1 필드 원소 및 제2 필드 원소의 합을 표시한다.
도 3 및 4에 따른 알고리즘은 설명을 쉽게 하기 위해 특정한 일련의 단계로서 설명하였다. 그러나 도시한 순서에 정확하게 도 3 및 4에 나타낸 단계를 실행할 필요는 없다. 본 기술 분야에 속한 사람이라면 상기 단계들의 순서를 변경할 수 있고 그 중 일부는 동시에 실행될 수 있다는 것을 알 수 있다. 예를 들어, 도 3의 단계 301 및 303은 동시에 실행될 수 있고, 도 4의 단계 403 및 405는 동시에 실행될 수 있다.
k=1에 대한 다음의 특별한 경우를 고려함으로써, 상기한 GF_p_k_ADD에 대한 전형적 형태의 양태에 대하여 추가적으로 이해할 수 있다. 상기 설명에서, 수 “0”은 2개의 표기법, 즉 0 그 자체와 p=2m-1를 가진다. 입력 및 출력 연산 중에 이러한 이중성(duality)을 고려할 필요가 있다. p=0 mod p가 주어지면, 이러한 이중 표기법에 대한 수학적 문제는 없다. 이러한 이중 표기법에서 정수는 다음 식에 따라 modulo p로 더할 수 있다.
(14)
여기서, div 2m은 제수(divisor)가 2m인 경우 몫의 바닥(floor)으로 복귀하는 함수를 말한다. 다르게 말하여, a와 b의 합(이중 표기법에서)은 a+b<2m 이면 a+b이고, 그 외에는 상기 합이 ((a+b) mod 2m)+1 이다. 따라서 이러한 두 가지 경우(상기 합이 2m보다 작은지 아닌지에 종속됨)는 상기 공식 (a+b) mod p = [(a+b) mod 2m]+[(a+b) div 2m]으로 함께 처리될 수 있다. 상기 모듈러 및 제수가 각각 2의 거듭제곱이므로, (a+b)≤2(2m-1)=2m+1-2 와 mod 및 div 연산이 비트 연산으로서 효과적으로 실행될 수 있다는 것을 알 수 있다. 따라서, (적어도) m+1 비트량에 대해 연산을 실행할 수 있는 하드웨어 구조가 주어지고, a 및 b에 대한 이중 표기법이 주어지면, 상기 양 (a+b) mod p (이중 표기법에서)는 식 15에 따라 결정될 수 있다.
(15)
a+b<2m+1-2 이므로, w가 레지스터 크기인 경우 w≥m+1이면 식 15를 실행한 결과가 오버플로우(overflow) 되지는 않는다. 따라서 p에 의한 하나의 덧셈 및 하나의 모듈러 약분(긴 나눗셈) 대신에, 상기 양 2m 및 2m-1이 고정되고 일정한 비트-마스크로 고려될 수 있는 경우에 5 단순 연산이 실행된다. 상기한 논의에서, 논의를 용이하게 하기 위해 k=1로 가정한다. 물론, 본 발명은 1 보다 큰 k 값을 사용하여 실행될 수 있다. 그럼에도 불구하고, k=1에 대한 논의를 통해, k가 1보다 큰 경우에 사용되는 본 발명에 따른GF_p_k_ADD의 형태와 이진량 M1 및 M2의 선택을 이해할 수 있다.
또한, 수 “0”이 0 그 자체와 p=2m-1로 표시되는 이중 표기법은, 상기한 방법에 따른 두 필드 원소의 합을 결정하는 것을 용이하게 한다. 상기한 바와 같이, p에 의한 하나의 덧셈 및 하나의 모듈러 약분(긴 나눗셈)을 사용하여 두 필드 원소의 합을 결정하는 대신에, 이중 표기법은 두 필드 원소를 표시하는 이진 데이터에 대한 5 단순 연산을 사용하도록 하여 그 합을 결정한다.
확장 필드 GF(p l k)에 관해, SUM(α, β) 및 PRODUCT(α, β)에 대한 논의에 대해 상술한 바와 같이, 각 확장 필드의 원소는 길이 l의 벡터(다항식)로 표시되고, 여기서 각 성분(계수)은 GF(pk)의 원소이고, 상술한 바와 같은 단일 가드-비트 표기법에 따라 저장될 수 있다. 확장 필드 GF(p l k)에서 두 원소를 더하는 것은, 종래의 방법을 사용할 때 요구되는 바와 같이, lk 연산 대신에 5l 연산을 사용하여 실행될 수 있다. 따라서, 상대적으로 작은 k 값에 대해서도, 계산 속도의 현저한 증가를 달성할 수 있다.
또한, 후술하는 바와 같이, 상기한 GF_p_k_ADD에 대한 전형적인 형태는 p=2m-1에 대한 다중-가드-비트 표기법에 따라 저장되는 이진 데이터에 적용할 수도 있다.
(실시예 1)
도 3 및 4에 나타낸 방법을 설명하는 수치의 예를 도 5에 나타내었다. 아래에 설명하는 연산은, 이미 설명한 도 1에 나타낸 시스템(100)과 같은 시스템을 사용하여 실행될 수 있다. 도 5는 도 3 및 4와 관련하여 상술한 바와 같은 연산을 실행하여 구한 레지스터 콘텐츠를 나타낸다. 도 5에서, 참조 번호 501-517은 32-비트 레지스터이고, 레지스터(501-517) 내에 저장된 이진 데이터는 단일 가드-비트 표기법에 따라 구성된다. 또한, 이 예에서 이진 데이터는 유한 필드 GF(310)의 필드 원소를 표시하고, 표수 p는 p=2m-1=3으로 주어진다. 따라서, M=2 이고, 2비트의 레지스터 공간이 유한 필드 원소의 각 계수에 대해 할당된다. 단일 가드 비트(연한 음영 비트 위치)는 유한 필드 원소의 인접 계수를 표시하는 인접 이진 데이터를 분리한다. 또한, 이 예에서, 각 레지스터(501-517)의 최상위 비트 위치에서 2개의 사용하지 않는 비트의 레지스터 공간(짙은 음영 비트 위치)이 있다.
이 예에서, 제1 필드 원소 (2,2,0,2,0,3,2,2,0,0)(벡터 표시)를 나타내는 제1 이진 데이터(a)와, 제2 필드 원소 (0,1,2,2,0,2,1,3,0,0)(벡터 표시)를 나타내는 제2 이진 데이터(b)가 제1 및 제2 레지스터(501, 503)에 각각 저장된다(단계 301, 303). 필드 원소의 각 계수는 그라운드 필드 GF(3)의 원소 자체이고, 각 계수는 다음과 같은 결합에 따른 이진 데이터에 의해 표시된다. 즉, 0~(0,0); 1~(0,1); 2~(1,0); 3~(1,1). 이중 표기법이 제공되고, 여기서는 GF(p)에서 두 개의 다른 수(이 예에서는 p=3의 경우 3 및 0)가 동일 값(0)을 표시한다. 따라서, 3에 대응하는, (1,1)로 주어진 이진 데이터는 0을 표시한다(3 mod 3=0 이므로). 레지스터 501 및 503에서의 각 가드-비트 위치는 초기에 영의 값으로 할당된다.
레지스터 501 및 503에 저장된 레지스터 콘텐츠 a 및 b는 덧셈을 통해 각각 더해진다(단계 401에 해당). 그 결과 (a+b)는 제3 레지스터(505)에 저장된다. 레지스터(505)의 콘텐츠 (a+b)는 레지스터(507)의 콘텐츠와 논리 AND 연산을 통해 결합되고, 여기서 상기 양 M1은 저장되고, 결과 c1=(a+b)&M1은 레지스터 509에 저장된다(단계 403에 해당). 또한, 상기 양 M2=NOT(M1)은 레지스터 511에 저장된다. 레지스터 505의 콘텐츠 (a+b)와 레지스터 511의 콘텐츠 M2는 논리 AND 연산을 통해 결합되고, 그 결과 (a+b)&M2는 레지스터 513에 저장된다(단계 405에 해당). 레지스터 513의 콘텐츠 (a+b)&M2는 m=2 비트만큼 우측 시프트 되고, 그 결과는 레지스터 513에 저장된다(단계 405에 해당). 레지스터 509의 콘텐츠(c1)와 레지스터 515의 콘텐츠(c2)는 덧셈을 통해 더해지고, 그 결과는 레지스터 517에 저장된다. 그 결과는 (2, 3, 2, 1, 0, 2, 3, 2, 0, 0)(벡터 표시)로 주어지고 예상한 바와 같이 (2, 0, 2, 1, 0, 2, 0, 2, 0, 0)과 동일하다.
상기한 예에서, 제1 이진 데이터, a와, 제2 이진 데이터, b를 더할 때 레지스터 505에 나타낸 바와 같이 3 가드-비트 위치(비트 위치 8, 14 및 20)로 캐리들이 생성된다. 상기 가드-비트 위치는 상기 캐리 비트가 데이터 비트의 인접 그룹의 값에 영향을 주는 것을 방지한다. 따라서, 이 예에서, 상기 가드-비트 위치(연한 음영 비트 위치)는 데이터 비트의 10 그룹에 대해 병렬로 연산을 실행하게 하고, 여기서 데이터 비트의 10 그룹은 10 필드 계수를 나타낸다.
상기한 연산의 설명을 편리하게 하기 위해, 도 5에 나타낸 여러 단계의 이진 결과가 개별적으로 식별되는 레지스터에 저장되는 것으로 설명한다. 그러나 본 기술 분야에 속하는 자라면, 미리 저장된 이진 데이터를 더 앞선 단계로부터 덮어 쓰는 방식으로 레지스터를 재사용함으로써 상기 여러 단계를 실행할 수 있다는 것을 알 수 있다. 예를 들어, 레지스터 509 및 515에 나타난 제1 및 제2 중간 이진 데이터(c1 및 c2)는, 미리 저장된 이진 a 및 b를 덮어 씀으로써 레지스터 501 및 503에 대신 저장될 수 있으므로 레지스터 공간을 더욱 효율적으로 이용할 수 있다. 이것으로 실시예 1의 논의를 완료한다.
p=2m-1의 경우에 홀수 표수 유한 필드의 필드 원소를 포함하는 계산과 관련된 본 발명의 다른 양태에서, 도 4에 나타낸 GF_p_k_ADD의 전형적인 형태에 대한 연산을 실행하기 위한 하드웨어 장치가 제공된다. 도 6은 이러한 전형적인 하드웨어 장치의 기능적 블록도이다. 특히, 도 6에 나타낸 장치(600)는, GF(pk)의 제1 필드 원소와 제2 필드 원소의 합을 표시할 수 있는, 도 4 및 6에서 c로 표시한 제3 이진 데이터를 생성하는 다른 방법을 제공한다. 도 6에서, 실선은 데이터의 흐름에 대한 전기적인 연결을 나타내고, 점선은 제어 신호의 흐름에 대한 전기적인 연결을 나타낸다. 교차하는 실선은 그 교차점에서 연결점(623)과 같이 흑점으로 표시되지 않은 경우에는 연결되지 않은 것이다. 여기서 상기 장치는 단일-가드-비트 표기법과 관련된 논의로서 설명되지만, 후술하는 바와 같이 상기 장치(600)는 다중-가드-비트 표기법에도 동일하게 적용할 수 있다.
상기 장치(600)는 제1 이진 데이터(레지스터 콘텐츠 "a") 및 제2 이진 데이터(레지스터 콘텐츠 "b")를 각각 유지하는 제1 레지스터(601) 및 제2 레지스터(603)를 포함한다. 제1 이진 데이터 및 제2 이진 데이터는 유한 필드 GF(pk)의 필드 원소를 표시한다. 여기서, 제1 및 제2 레지스터(601 및 603)에서의 제1 및 제2 이진 데이터는, 예를 들어 도 2A에 나타낸 바와 같이, 가드-비트 위치에서 영을 갖도록 미리 구성되어 있다. 상기 장치는 조합 논리 및 클럭 소자(클럭/논리)(605), 가산 게이트(+)(607)(가산기라고도 함), 레지스터 콘텐츠 a 와 b의 합을 유지하는 레지스터(609), 제1 논리 AND 게이트(&1)(611), 입력 m에 대해 제1 소정 이진량 M1을 발생 및 유지하는 마스크 레지스터(613), NOT 게이트(NOT)(615), 및 제2 논리 ADN 게이트(&2)(617)도 포함한다. 또한, 상기 장치(600)는 우측 시프트 게이트(>>) 및 결과 “c”를 유지하는 출력 레지스터(621)를 포함한다. 우측 시프트 게이트는 본 기술 분야에서는 잘 알려져 있으며, 이러한 게이트는 비트의 선택된 수만큼 오른쪽으로 상기 값을 시프트하고 해당 개수의 영을 최상위 비트 위치에 입력한다. 클럭/논리부(clock/logic unit)(605)는 다른 하드웨어 장치로 신호가 입력되도록 하는 출력단자(도시하지 않음)를 가져서, 상기 장치(600)에서의 계산이 완료되었을 때 다른 하드웨어 장치에서 계산이 시작되게 한다. 예를 들어, 다른 하드웨어 장치는 다른 장치(600) 또는 후술하는 도 12에 나타낸 곱셈 장치(1200)가 될 수 있다.
도 6에 나타낸 상기 장치(600)의 연산에 대해 설명한다. GF(pk)의 제1 필드 원소를 표시하는 제1 이진 데이터와 제2 필드 원소를 표시하는 제2 이진 데이터는 a 및 b로 명시된(labelled) 라인을 통해 제1 레지스터(601) 및 제2 레지스터(603)로 입력된다. 제1 및 제2 이진 데이터는 가드-비트 위치에서 미리 영으로 구성되어 있다고 가정한다(예를 들어, 도시하지 않은 프로세서에 의해). 상기 양 m을 표시하는 이진 데이터도 우측-시프트 게이트(>>)(619)에 주어진다. 마스크 레지스트(613)는 프로세서(도시하지 않음)로부터 제1 소정 이진량 M1(마스크량)을 받는다. 여기서 M1은 이전에 설명한 바와 같은 값의 양이다. 이와는 달리, 마스크 레지스터(613)는 상기 양 M을 표시하는 이진 데이터의 입력에 대해 상기 양 M1을 발생하는 회로를 포함할 수도 있다. 이러한 회로를 만드는 것은 본 기술 분야에 속하는 자가 이해할 수 있는 범위 내에 있다.
계산은 s로 명시된 입력 라인에서 시작 신호에 의해 개시된다. 제1 및 제2 이진 데이터, 상기 양 m을 표시하는 이진 데이터, 및 개시 신호가, 예를 들어 종래의 라우팅 회로(routing circuit)를 통해, 후술하는 도 12에 나타낸 곱셈 장치와 같은 프로세서(도시하지 않음) 또는 다른 하드웨어 장치(도시하지 않음)로부터 주어질 수 있다.
레지스터 601 및 603에서 제1 이진 데이터 및 제2 이진 데이터의 값이 안정적일 때, 신호(s1)는 레지스터 601 및 603에 그 값을 각각 고정시킨다(lock). 가산기(607)는 레지스터 601 및 603으로부터의 두 입력에 주어진 값들을 더한다. 가산기(607)의 출력이 안정적일 때, s2로 명시된 라인에서의 신호에 의해 레지스터 609에 가산기(607)로부터의 출력이 고정된다. 주어진 레지스터에서 주어진 값이 안정하게 되기 위해 필요한 시간은, 본 기술 분야에서 속한 자라면 회로 설계의 관점에서 통상적으로 결정할 수 있고, 잠금 신호(locking signal)(예를 들어 라인 s1 및 라인 s2에서)는 이 시간 후에 발생하도록 시간을 정할 수 있다. 이 점에서, 상기 레지스터 609는 도 4의 단계 401에 나타낸 양 a+b에 대응하게 표시되는 이진 데이터를 유지한다.
레지스터 609에서의 이진 데이터는 레지스터(609)로부터 AND 게이트(611)로 향한다. AND 게이트(611)는 레지스터(609)로부터의 이진 데이터와 마스크 레지스트(613)로부터의 마스크량 M1 사이에서 논리 AND를 실행한다. 이러한 논리 AND 연산의 결과는 도 4의 단계 403에 나타낸 양(c1)과 동등하다. 제1 AND 게이트(611)로부터의 출력은 제1 레지스터(601)의 입력으로 되돌려지고, s1로 명시된 라인에서의 다른 신호는 적절한 때에 해당 값을 제1 레지스터(601)에 고정시킨다. 이 점에 있어서, 라인 s1에 있는 신호는, 레지스터(609)로부터 출력되는 데이터를 라우팅하기 위해, 명시된 지점(623)에서 멀티플렉서 또는 스위치를 제공할 필요가 없도록, 적절히 시간을 정할 수 있는 것으로 볼 수 있다. 물론, 상기 장치(609)에는 필요에 따라 라우팅을 위해 상기 지점(623)에서 멀티플렉서 또는 스위치가 제공될 수도 있다.
바로 앞 단락에서 설명한 연산이 실행되면서, 다음 연산이 거의 동시에 실행된다. 레지스터(609)로부터의 출력은 제2 AND 게이트(617)로 향하고, 제1 소정 이진량(M1)은 논리 NOT 게이트(615)로 향한다. 논리 NOT 게이트(615)의 출력은 제2 AND 게이트(617)의 입력으로 향한다. 이러한 제2 AND 게이트(617)의 입력에서의 데이터는 논리 AND 연산을 통해 결합되어 우측-시프트 게이트(619)로 향한다. 상기 우측-시프트 게이트(619)는 m으로 명시된 라인에서의 입력에 따라 제2 AND 게이트(617)로부터 입력된 데이터에 대해 m 비트만큼 우측-시프트를 실행한다. 우측-시프트 게이트(619)의 출력은 제2 레지스터(603)의 입력으로 향한다. 제2 레지스터(603)에 입력되는, 이러한 그룹의 연산 결과는 도 4의 단계405에서 언급한 양(c2)에 대응한다.
제1 및 제2 레지스터(601 및 603)에 저장된 이진 데이터의 값이 안정적일 때, 신호 s1은 이러한 값으로서 제1 및 제2 레지스터(601 및 603)에 고정된다. 이 점에 있어서, 가산기(607)는 제1 및 제2 레지스터(601 및 603)로부터의 이진 데이터를 더하고, 그 출력을 레지스터(609)로 출력시킨다. 레지스터(609)에 저장된 이진 데이터는 출력 레지스터(621)로 향하고, 라인 s3에서의 신호는 상기 이진 데이터를 적절한 시간에 상기 레지스터(621)에 고정시킨다. 이러한 이진 데이터는 도 4의 단계 407에서 c로 표시한 제3 이진 데이터에 해당한다.
본 기술 분야에서 통상의 지식을 가진 자라면 상기 장치(600)의 많은 변형이 본 발명에 따라 가능하다는 것을 이해할 수 있을 것이다. 예를 들어, 각 내부 w-비트 레지스터(601, 603, 609, 613 및 621)는 다중 병렬(즉, 통합된(coordinated)) 레지스터로 대치할 수 있으며, 이들 중 적어도 하나는 필드 원소의 적어도 두 계수를 표시하는 이진 데이터를 유지한다. 또한, 도 6에 나타낸, 제1 AND 게이트(611), 가산기(607), 제2 AND 게이트(617), NOT 게이트(615) 및 우측-시프트 게이트(619)는 각각의 다중 병렬(즉, 통합된) 카피들(copies)로 대치할 수 있다.
도 6을 참조하여 설명한 바와 같은 상기 장치(600)에서, 제1 및 제2 이진 데이터는, 적절한 가드-비트 위치에서 미리 구성된 영의 값으로 제1 및 제2 레지스터(601 및 603) 각각에 입력된다. 제1 및 제2 이진 데이터는 프로세서(도시하지 않음)에 의해 이러한 구성, 예를 들어 적절한 경우 가드-비트 위치에서 영을 삽입하는 구성으로 제공될 수 있다. 따라서, 프로세서(도시하지 않음) 및 제1 레지스터(601)는 제1 이진 데이터를 저장하는 수단으로 볼 수 있고, 프로세서(도시하지 않음)와 제2 레지스터(603)는 제2 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한 레지스터(521) 및/또는 레지스터(609)는 제3 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 클럭/논리 소자(605)와 도 6에 나타낸 어떤 또는 모든 나머지 소자는 제1 이진 데이터 및 제2 이진 데이터에 대해 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다.
프로세서(도시하지 않음)에 따라 상기 장치(600)를 이용함으로써, 상기 장치(600)는 유한 필드 GF(pk)에 대한 p 및 k의 다양한 선택을 위해 필드 원소를 이용하는 데에 유연성을 갖게 된다(여기서 p는 p=2m-1의 형태). 특히, 상기 양 m은 변수이고, 우측-시프트 게이트(619)는 m의 입력값에 따라 응답한다. 또한, 마스크 레지스터(613)는 상기 양 m에 종속하는 제1 소정 이진량(M1)의 적절한 형태를 유지한다. 상기 양 M1은 상기 양 m이 한번에 선택된다는 점에서 미리 결정(predetermined)되고, 상기 양 M1의 형태는 상술한 바와 같이 직접 따른다.
본 발명의 다른 양태에서, 유한 필드 GF(pk)가 전적으로 선택되고 변경 없이 유지되는 상황에 대해, 도 7의 블록도에 나타낸 하드웨어 장치(700)와 같이 상기 장치(600)는 수정될 수 있다. 즉, 상기 표기법이 단일-가드-비트 표기법인지 다중-가드-비트 표기법인지의 선택뿐만 아니라, 상기 양 m, p 및 k도 고정되고, 상기 하드웨어 장치(700)는 이러한 선택에 전용으로 된다. 이러한 상황에서, 상기 하드웨어 장치(700)는 필드 원소를 표시하는 초기 이진 데이터를 수신할 수 있다. 여기서 초기 이진 데이터는 가드-비트 위치에서 영으로 구성되지 않는다. 오히려, 상기 하드웨어 장치(700) 자체가 상기 초기 이진 데이터를 적절한 가드-비트 위치에서 영으로 구성하여, 제1 가드-비트 위치에서 제1 및 제2 이진 데이터를 영으로 구성하는 프로세서를 필요로 하지 않고, 제1 및 제2 이진 데이터를 발생시킨다. 도 7에 나타낸 상기 하드웨어 장치(700)에 대해 설명한다.
도 7의 기능 블록도에 나타낸 상기 하드웨어 장치 700은 여러 공통 특징 및 연산 형태를 도 6에 나타낸 장치 600과 공유하고, 도 6과 도 7에서는 동일 구성요소 대해서는 동일 참조번호를 사용한다. 장치 600과 공통되는 장치 700의 양태에 대한 설명은 여기서 반복하지 않는다. 오히려, 장치 600과 다른 장치 700의 양태에 대해서 논의할 것이다.
상기 장치 700은 장치 600에서는 찾아볼 수 없는 몇 가지 특징을 가지고 있다. 특히, 상기 장치 700은 가드-비트-삽입 회로(701' 및 703')(GB 삽입)와 가드-비트-제거 회로(709')(GB 제거)를 가지고 있다. 이러한 회로를 전형적으로 실현한 것을 도 8A 및 8B에 나타내었다. 도 7에서와 같이, 가드-비트-삽입 회로(701' 및 703')는 하드웨어 장치(700)로의 입력에 기능적으로 배치되어 있고, 가드-비트-제거 회로(709')는 레지스터(709)와 출력 레지스터(721) 사이에 기능적으로 배치되어 있다. 가드-비트-삽입 회로(701' 및 703')는 GF(pk)의 제1 및 제2 필드 원소에 대응하는 초기 이진 데이터(a' 및 b')를 수신하여(가드 비트 없이), 적절한 가드 비트를 상기 데이터에 삽입하도록 동작한다. 다시 말해, 가드-비트-삽입 회로(701' 및 703')는 초기 이진 데이터(a' 및 b')를, 가드 비트를 갖는, 특히 가드-비트 위치에 영을 갖는 제1 이진 데이터 및 제2 이진 데이터로 변환한다. 가드-비트-제거 회로(709')는 반대 기능, 즉 계산 결과를 표시하고 가드 비트를 갖는 제3 이진 데이터(c)를 수신하고 그러한 가드 비트를 제거하여, 가드 비트가 없는, 계산 결과를 표시하는 최종 이진 데이터(c')를 형성한다.
상기 장치 700은 장치 600에 있는 어떤 특징이 결여되어 있는데, 이것은 그러한 특징이 장치 700에서는 필요하지 않기 때문이다. 특히, 상기 장치(700)는 우측-시프트 게이트(719)와 마스크 레지스터(713)로의 m량에 대한 입력 라인이 빠져 있다. 이러한 입력 라인은 m을 고정값으로 주는 데에 필수적인 것은 아니다. 오히려, 우측-시프트 게이트(719)는 m 값으로 한번에 초기화되어 적절한 우측 시프트를 실행한다. 마찬가지로, 마스크 레지스트(713)은 M1의 적절한 형태로 한번에 초기화 된다. 도 7에 도시하지 않은 이러한 초기화를 실행하기 위해 종래의 전기적 연결이 사용된다. 상기한 연산의 차이를 제외하고, 도 7에 나타낸 장치 700의 연산은 도 6에 나타낸 장치 600에 대해 설명한 것과 거의 유사하다.
상기한 바와 같이 상기 장치 700에서, 제1 레지스터(701)와 가드-비트 삽입 회로(700')은 제1 이진 데이터를 저장하는 수단으로 볼 수 있다. 제2 레지스터(703)와 가드-비트 삽입 회로(703')은 제2 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 레지스터(709)는 제3 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 클럭/논리 소자(705)와 도 7에 나타낸 어떤 또는 모든 나머지 소자들은 제1 이진 데이터와 제2 이진 데이터에 대한 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다.
도 7에서 언급한 가드-비트-삽입 회로(701' 및 703')과 가드-비트-제거 회로(709')에 대해서 도 8A 및 8B를 참조하여 더 상세하게 설명한다. 도 8A 및 8B에 나타낸 전형적인 회로는 필드 GF(78)에 대해 구성된 32-비트 레지스트 구성을 반영한다. 그러나, 도 8A 및 8B에 반영된 개념은 다른 크기의 레지스트와 다른 유한 필드 GF(pk)에도 일반적으로 적용할 수 있다. 도 8A는 전형적인 가드-비트-삽입 회로(800)를 나타낸 것으로서, 도 7에서 참조 번호 701' 및 703'으로 각각 표시한 가드-비트-삽입 회로(GB 삽입)에 대해 사용될 수 있다. 도 8A에 나타낸 바와 같이, 상기 회로(800)는 다수의 비트 위치(803)(예를 들어 32비트)를 갖는 제1 레지스터(801)를 포함한다. 상기 회로(800)는, GF(pk)의 필드 원소의 필드 계수를 표시하는 이진 데이터를 저장하기 위한 비트 위치의 다수 그룹(807)과 다수의 가드-비트 위치(809)(연한 음영 영역)를 갖는 레지스터(805)를 포함한다. 상기 회로(800)는, 이전 그룹의 3-비트 위치(807)의 최상위 비트 위치에 인접한 가드-비트 위치(809)를 부여하는 방식으로, 레지스터 801에서부터 레지스터 805로 데이터를 라우팅 하도록 구성된 다수의 전기 연결(811)도 포함한다. 가드-비트 위치(809)는 이러한 비트값에 대해 0을 제공하도록 전기적으로 접지되지만, 이러한 전기적 연결은 도 8A에 도시하지 않았다. 이러한 회로는, 예를 들어, 종래의 석판 기술(lithographic techniques)을 이용하여 형성할 수 있다.
이러한 방식에서, 레지스터(805)에서 각 3-비트 그룹(807)의 비트 위치는 GF(78)의 필드 원소의 계수를 표시하는 이진 데이터를 저장할 수 있고, 레지스터(805)에서 각 그룹(807)의 비트 위치는 단일 가드 비트(809)에 의해 인접 그룹(807)의 비트 위치로부터 분리된다. 따라서 가드-비트-삽입 회로(800)는, 필드 원소의 계수를 나타내는 데이터 비트 그룹 사이에 가드 비트를 삽입하는 방식으로, 필드 원소의 계수를 표시하는 초기 이진 데이터가 레지스터 801에서 레지스터 805로 병렬로 전달되게 한다.
마찬가지로, 전형적인 가드-비트-제거 회로(820)를 32-비트 GF(78)에 대해 도 8B에 나타내었다. 도 8B에 나타낸 바와 같이, 상기 가드-비트-제거 회로(820)는 도 8A에 나타낸 가드-비트-삽입 회로(800)의 거울상(mirror image)이다. 가드-비트-제거 회로(820)는 레지스터(825), 레지스터(821) 및 다수의 전기적 연결(831)로 이루어진다. 상기 레지스터(825)는 다수 그룹(827)의 비트 위치와 다수의 가드-비트 위치(829)를 포함하고, 각 가드-비트 위치는 주어진 그룹(827)의 비트 위치의 최상위 비트에 인접하게 위치하고 있다. 도 8B에 나타낸 바와 같이, 전기적 연결(831)은, 필드 계수를 표시하는 데이터 비트의 인접 그룹 사이에서 가드 비트를 제거하는 방식으로, 레지스터(825)에 저장된 필드 원소의 필드 계수를 표시하는 이진 데이터가 레지스터(821)로 전달되도록 구성된다. 이것으로 도 8A 및 8B에 대한 논의는 완료된다.
단일-가드-비트 표기법을 사용하는 곱셈
본 발명의 다른 양태에 따라, GF(pk)에서의 두 필드 원소 αi 및 βi(영이 아님)의 곱을 계산하기 위해, 단일-가드-비트 표기법에 대한 GF_p_k_MUL의 전형적인 형태가 설명된다. 한 필드 원소가 영인 경우는 중요하지 않으므로 설명할 필요가 없다. 이러한 논의는 기능적 형태 p=2m-1, p=2m+1, p=2m-d 및 p=2m+d로 쓰여진 p에 적용할 수 있다.
식 9-12에 관련하여 앞에서 논의한 바와 같이, 곱셈 그룹(multiplicative group)은 주기적이고, 그러므로 어떤 다른 비영(non-zero) 필드 원소가 어떤 정수 x<pk에 대해 gx로 쓰여질 수 있도록, 필드 원소 g를 찾을 수 있다. 따라서 해당 안티-로그 뿐만 아니라, 모든 필드 원소의 이산 로그가 한번에 사전-계산(pre-compute)될 수 있고, “룩-업(look-up)" 테이블은 두 필드 원소의 곱을 계산하기 위해 사용될 수 있다. 마찬가지로, 단일-가드-비트 표기법에 따라 어떤 αi를 표시하는 이진 데이터 "a"에 대한 본 발명과 관련하여(영값의 가드 비트가 비트 위치 v(m+1)-1에 위치하는 경우, 여기서 v=1, 2, ..., k 즉, 모든 연속하는 m번째 비트 위치), 다음 관계식을 적용할 수 있다.
(16)
(17)
여기서, gx=aj 되도록 0≤x<pk 이다. 따라서, 단일-가드-비트 표기법에서, GF(pk)의 필드 원소의 곱셈은 다음 관계식에 따라 성립될 수 있다.
(18)
여기서, "a"는 제1 필드 원소를 표시하는 단일-가드-비트 표기법에 따라 저장된 제1 이진 데이터(레지스터 콘텐츠)이고, "b"는 제2 필드 원소를 표시하는 단일-가드-비트 표기법에 따라 저장된 제2 이진 데이터(레지스터 콘텐츠)이고, "c"는 제1 및 제2 필드 원소의 곱과 동일한 제3 필드 원소를 표시하는 제3 이진 데이터(레지스터 콘텐츠)이다. 예를 들어, 앞에서 설명한 알고리즘 PRODUCT(α, β) 및 GF_p_k_MUL을 사용한 표시법으로, "a"는 GF(pk)의 필드 원소 αj를 표시할 수 있고, "b"는 GF(pk)의 필드 원소 βi-j를 표시할 수 있다. 따라서, 본 발명에 따른 단일-가드-비트 표기법에서 GF(pk)의 두 필드 원소의 곱은 3개의 룩-업 테이블과 모듈러 덧셈만을 사용하여 계산될 수 있다.
본 발명의 전형적인 양태에 따라, 도 1에 나타낸 상기 시스템(100)은 필드 원소의 곱셈에 대한 상기한 방법을 구현하도록 사용될 수 있다. 특히, 상기 시스템(100)은, 상기 프로세서(105)가 도 9에 나타낸 전형적인 일련의 단계를 실행하여 도 3의 단계 305에서 참조한 제3 이진 데이터를 발생하도록 구성될 수 있다. 도 3에 나타낸 단계 301 및 303은, GF(pk)의 제1 필드 원소를 표시하는 제1 이진 데이터가 제1 레지스터(예를 들어 도 1의 레지스터 107)에 저장되고 제2 필드 원소를 표시하는 제2 이진 데이터가 제2 레지스터(예를 들어, 레지스터 109)에 저장되도록, 상기 프로세서(105)에 의해 미리 실행된 것으로 가정한다. 도 9에 나타낸 단계는 도 3에 나타낸 단계 305의 전형적인 구현을 표시한다. 도 9의 흐름도에 나타낸 방법(900)에 대해 설명한다.
도 9는, 제1 및 제2 필드 원소의 곱을 표시하는 제3 이진 데이터를 발생하기 위해, 제1 및 제2 이진 데이터를 처리하는 처리부(105)에 의해 실행되는 단계를 나타내는 흐름도이다. 도 9의 단계 901에서와 같이, 상기 프로세서는 DLOG(a)와 DLOG(b) 양을 결정한다. 여기서, "a"는 제1 레지스터의 콘텐츠를 표시하고 "b"는 제2 레지스터의 콘텐츠를 표시한다. 단계 901에서, DLOG 연산은 GF(pk)의 비영(non-zero) 필드 원소의 이진 형태에서 이산 로그의 룩-업 테이블로부터의 룩-업 연산을 표시한다. 이산 로그의 룩-업 테이블은 도 1에 나타낸 메모리(101)에 저장될 수 있다. GF(pk)에 대한 DLOG 연산을 위한 간단한 룩-업 테이블의 일례를 도 10A에 나타내었다. 도 10A의 룩-업 테이블에 대해 아래에서 더 상세히 설명한다.
단계 903에서, 처리부(105)는 DLOG(a) 및 DLOG(b) 양의 덧셈을 실행하고 이 덧셈의 결과를 modulo(pk-1)로서 감소시킨다. 단계 905에서, 상기 처리부(105)는 ANTILOGDLOG(a)+DLOG(b))mod(pk-1)} 양을 결정한다. ANTILOG 연산은 안티-로그의 룩-업 테이블로부터의 룩-업 연산을 표시하고, 여기서 ANTILOG(x)=gx이고 g는 GF(pk)의 생성자이다. GF(pk)에 대한 ANTILOG 연산을 위한 간단한 룩-업 테이블의 일례를 도 11A에 나타내었다. 도 11A에서의 룩-업 테이블에 대해 아래에서 더 상세히 설명한다. 단계 905에서 설명한 연산의 결과는, 이 예에서 제1 및 제2 필드 원소의 곱인 제3 필드 원소를 표시하는, 도 3의 단계 305에서 참조한 제3 이진 데이터이다.
단일-가드-비트 표기법에 대해 상술한 이산 로그 및 안티-로그의 전형적인 룩-업 테이블에 대해 설명한다. 간단하게 하기 위하여, 이산 로그의 룩-업 테이블은 여기서 DLOG 테이블이라고 하고, 안티-로그의 룩-업 테이블은 여기서 ANTILOG 테이블이라고 한다.
한 예로써, DLOG 테이블은 GF(pk)의 필드 원소에 대응하는 이진 데이터에 의해 인덱싱(indexing) 되고, 여기서 이진 데이터는 메모리 어드레스로 볼 수 있다. 이러한 종류의 DLOG 테이블을 여기서는 “직접 어드레스(directly addressed)" DLOG 테이블이라고 하고, 메모리 어드레스로서 필드 원소에 대응하는 연속적인 이진 데이터를 사용한다. p=2m-1에 대해, 예를 들어, DLOG 테이블은 k(m+1)-비트 이진 스트링(string)에 의해 인덱싱(어드레싱) 된다. 이와는 달리, 각 필드 원소를 표시하는 이진 데이터의 최상위 가드 비트가 어드레싱에 사용되지 않는 경우(최상위 가드 비트는 테이블 룩-업에 필요가 없음), 상기 DLOG 테이블은 길이로 이진 스트링 k(m+1)-1 비트를 사용하여 인덱싱 될 수도 있다. 최상위 가드 비트가 어드레싱에 사용되지 않는다면, DLOG 테이블의 크기는 인수 2로 감소될 수 있다. 필드 원소를 표시하는 이진 데이터를 a(t)라고 하면(여기서 t는 다항식 기저 표기법에서의 다항식 변수), a(t)에 대응하는 어드레스에서 DLOG로부터의 해당 룩-업 값은 정수 "x"이다. 여기서 x=DLOGa(t) 이다. 필드 원소의 단일-가드-비트 표기법이 가드 비트가 모든 m번째 비트에 할당되어 가드-비트(모든 k 가드 비트에 대해)가 되도록 주어지는, p=2m-1에 대한 직접 어드레스 DLOG 테이블에서는, 룩-업 중에 실제로 사용되는 DLOG 테이블에서의 2km 관련 엔트리(entry)만 있다. 이러한 관련 엔트리들은 a(t) 양이 가드-비트 위치에서 영이 되는 것들이다. 이러한 DLOG 테이블 전체는, 길이로 이진 스트링 k(m+1) 비트를 사용하여 인덱싱 된 경우에는 2k(m+1)의 예약 메모리 위치(행)를 가지고, 또는 길이로 이진 스트링 k(m+1)-1 비트를 사용하여 인덱싱 된 경우에는 2k(m+1)-1의 행을 가진다. 다시 말해, 필드 원소 a(t)(메모리 어드레스)가 어떤 가드-위치에서 "1"을 가지는 직접 어드레스 DLOG 테이블에서의 행은 사용되지 않는다.
예를 들어, k=8 및 p=3(즉, m=2)이면, 각 필드의 원소는 24-비트 스트링(각 제3 비트 위치에 영을 가짐)으로 표시되고, 따라서 DLOG 테이블은 길이 8(2+1)=24의 스트링에 의해 인덱싱될 수 있다(8(log2(3)+1)과 동등함). 이 예에서, DLOG 테이블에서 224 예약 메모리 위치가 있지만, 룩-업이 필드 원소에 대응하는 어드레스, 즉 가드-비트 위치가 영인 스트링에 대해서만 처리되므로, 이들 모든 256에서 단지 하나만이 실제 액세스되는 데이터를 포함할 것이다. 상기 예에서, k=8 가드-비트 위치가 있고, 모든 28(=256)에서 단지 하나의 테이블 인덱스(index)가 실제 테이블 룩-업을 위해 사용된다. 그러나 보통의 k 및 m(예를 들어, k(m+1)<25)에 대해, 이러한 방식으로 룩-업 테이블을 실현하는 것은 많은 경우에 역시 편리하다.
상기한 바와 같이, 최상위 가드 비트는 직접 어드레스 DLOG 테이블을 인덱싱하는 데 필요하지 않고, 이러한 조사는 DLOG 테이블의 크기에서 인수 2를 절약하게 한다. 아래에서 설명하는 바와 같이, p=2m+1, P=2m-d 및 p=2m+d(d>1 및 d는 홀수) 형태의 p에 대해, 필드 원소의 각 계수는 p=2m-1에 대해서 m 비트 대신에, 이진 데이터(가드 비트 포함하지 않음)의 m+2, m+1 및 m+2 비트를 각각 사용하여 표시된다. 그러므로 p=2m-1과 다른 형태의 p에 대한 직접 어드레스 DLOG 테이블은 p=2m-1 형태의 p에 대한 직접 어드레스 DLOG 테이블보다 상당히 크다.
단일-가드-비트 표기법에 대한 상술한 개념을 나타내는 전형적인 DLOG 테이블(1000)을, GF(32)의 간단한 경우(여기서 m=2에 대해 p=2m-1)에 대해 도 10A에 나타내었다. 도 10A의 예는 생성자 g(t)=t 및 기약 다항식 p(t)=t2+t+2를 사용하는 GF(32)에 대해 구성된다. 이러한 DLOG 테이블은, 예를 들어, 8-비트, 16-비트, 32-비트 등의 구조로 실현될 수 있다. 앞서 설명한 바와 같이, 주어진 유한 필드 GF(pk)에 대한 적절한 생성자와 기약 다항식을 선택하는 것은 본 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에 있다.
도 10A에 나타낸 전형적인 DLOG 테이블(1000)은 이진 형태의 필드 원소 a(t)에 대응하는 메모리 어드레스(1001)와 이진 형태의 관련 정수 x에 대응하는 저장된 값(1003)을 포함한다. 또한, 상기 전형적인 DLOG 테이블(1000)은 2k(m+1)=26=64 행(엔트리들)(1005)을 포함한다. 도 10A의 예에서, 각 메모리 어드레스는 k(m+1)+2(2+1)=6-비트 스트링을 포함하고, 각 메모리 어드레스(1001)의 좌상 비트(left-most bit)는 해당 필드 원소의 최상위 가드 비트에 대응한다. 이러한 최상위 가드 비트는 필요할 경우 메모리 어드레스(1001)로부터 제거될 수 있어서, DLOG 테이블(1000)이 길이로 이진 스트링 k(m+1)-1 비트에 의해 인덱싱 되게 한다.
메모리 어드레스(1001)는 앞서 설명한 방식으로 필드 원소의 계수에 대응하는 데이터 비트 그룹을 포함한다. 각 메모리 어드레스(1001)는 다수의 가드 비트(1005)를 더 포함한다.
DLOG 테이블(1000)의 저장된 값(1003)은 도시할 목적으로 메모리 어드레스(1001)에 기능적으로 인접하도록 나타내었다. 저장된 값(1003) 각각은 상기한 정수(x)를 표시하는 이진 데이터를 포함한다. 도 10A에 나타낸 DLOG 테이블(1000)에서의 정보를 행으로 정렬하는 방식으로, 참조 정보(reference information)(1050)가 도 10B에 제공된다. 도 10B의 상기 참조 정보(1050)는 DLOG 테이블(1000) 부분이 아니고, DLOG 테이블(1000)에 나타낸 이진 정보와 다항식 형태로의 필드 원소 a(t)와 실제 정수값(x) 사이의 관계를 반영하는 것을 편리하게 하기 위한 것이다. "--"로 표시한 여러 블랭크 엔트리(blank entry)가 도 10B 및 또 10A 모두의 "x" 및 "a(t)" 열에 있다. 이러한 블랭크 엔트리는 원인은 두 가지이다. 먼저, 일부 블랭크 엔트리는, 본 기술 분야에서는 널리 알려진 바와 같이, 필드 원소 “0”(a(t)=0)에 대해 gx=0을 만족하는 정수(x)가 없다는 사실을 반영한다. 다른 블랭크 엔트리는 어떤 해당 가드-비트 위치에서 “1”을 갖는 메모리 어드레스(1001)에 대응한다. 상기한 바와 같이, 이러한 엔트리는 전형적인 DLOG 테이블(1000)에서는 사용되지 않는다.
상기한 직접 어드레싱의 예에서, DLOG 테이블(1000)은 상기한 2 종류의 블랭크 엔트리에 대응하는 룩-업 연산을 사용하지 않는 예약 메모리 위치를 가진다. 이러한 블랭크 엔트리의 대부분은 어떤 가드-비트 위치에서 “1”을 갖는 메모리 어드레스와 연관되어 있다. 그러나 컴팩트(compact) DLOG 테이블은 이러한 블랭크 엔트리 없이 실현할 수 있다. 예를 들어, 필드 원소를 연속적인 메모리 어드레스와 연관시키는 대신에, 가드-비트 위치에서 영(zero)만을 갖은 필드 원소를 표시하는 이진 데이터가 DLOG 테이블에 저장될 수 있다. x=DLOG(a(t))에 대한 해당 값은 DLOG 테이블에 저장될 수도 있다. 주어진 a(t) 엔트리를 룩-업하는 것을 해당 x 엔트리로 되돌리도록, 저장된 a(t) 엔트리와 x 엔트리는 서로 연관될 수 있다. 이러한 방법은 어드레스로서 a(t) 엔트리에 대응하는 연속적인 이진 데이터를 사용하는 것에 있어서의 단순성은 없지만, 작은 메모리 공간을 필요로 한다는 장점을 가지고 있다.
본 발명의 한 양태에서는, 이후에 설명하는 바와 같이, 룩-업을 상당히 복잡하게 하지 않고 컴팩트한 테이블을 구하기 위해 다중-가드-비트 표기법이 사용된다. 일반적으로, 이러한 컴팩트 DLOG 테이블은 2km+1 예약 메모리 위치(예를 들어, 행 당 2 엔트리를 갖는 2km 행으로 보임)로 구성되고, 이들 모두는 룩-업 연산을 위해 사용될 수 있다. 이와는 달리, 최상위 가드 비트가 제거된 경우, 이러한 컴팩트 DLOG 테이블은 2km 예약 메모리 위치를 실현할 수 있다. 비교해 보면, 직접 어드레스 DLOG 테이블은 2k(m+1) 예약 메모리 위치(또는 최상위 가드 비트가 제거된 경우 2k(m+1)-1 예약 메모리 위치)를 포함한다. 따라서 컴팩트 DLOG 테이블을 사용하는 것은 상대적으로 큰 필드 원소(예를 들어 가드 비트를 포함하는 25비트 이상의 이진 데이터에 의해 표시되는 필드 원소)를 포함하는 계산에 유용할 수 있다.
본 발명에 따른 ANTILOG 테이블의 전형적인 양태에 대해 설명한다. 본 발명에 따른 ANTILOG 테이블은 상기한 DLOG 테이블과 유사하다. 특히, ANTILOG 테이블도 x량 및 a(t)를 표시하는 이진 정보를 포함한다. 그러나 ANTILOG 테이블은 x=DLOG(a(t)) 양을 나타내는 이진 데이터에 의해 인덱싱(어드레싱) 된다. 따라서 주어진 x 값에 대응하는 메모리 어드레스에 대해, 룩-업량은 a(t)=ANTILOG(x) 이다. ANTILOG 테이블이 a(t)(DLOG 테이블에 대해) 대신에 x에 의해 인덱싱 되도록 주어지면, ANTILOG 테이블은 대응하는 DLOG 테이블보다 상당히 작다. 특히, ANTILOG 테이블은 p의 함수 형태와 상관없이 pk-1 예약 메모리 위치를 갖는다. pk 예약 메모리 위치 대신에 pk-1 예약 메모리 위치라는 사실은 필드 원소 a(t)=gx=0에 대응하는 정수 x가 없다는 사실에서부터 일어난다.
전형적인 ANTILOG 테이블로서, p=2m-1 및 m=2이고 단일-가드-비트 표기법에 대한 GF(32)의 간단한 경우에 대해 도 11A에 나타내었다. 도 11A의 예는 생성자 g(t)=t 및 기약 다항식 p(t)=t2+t+2를 사용하는 GF(32)에 대해 구성되었다. 이러한 ANTLOG 테이블은, 예를 들어, 8-비트, 16-비트, 32-비트 등의 구조로 실현될 수 있다. 도 11A에 나타낸 전형적인 ANTILOG 테이블(1100)은 이진 형태의 정수 x에 대응하는 메모리 어드레스(1101)와 이진 형태의 관련 필드 원소에 대응하는 저장된 값(1103)을 포함한다.
전형적인 ANTILOG 테이블(1100)의 메모리 어드레스(1101)를, 도시할 목적으로 저장된 값(1103)에 기능적으로 인접하도록 도 11A에 나타내었다. 저장된 값(1103) 각각은 상기한 방식으로 필드 원소의 계수를 표시하는 데이터 비트 그룹을 포함한다. 저장된 값(1103) 각각은 엔트리가 영인 다수의 가드 비트(1105)를 더 포함한다.
도 10B에 나타낸 것과 마찬가지의 방식으로, 도 11A에 나타낸 ANTILOG 테이블(1100)에서의 정보를 행을 통해 정렬하는 방식으로, 참조 정보(1150)가 도 11B에 제공된다. 도 11B의 상기 참조 정보(1150)는 ANTILOG 테이블(1100) 부분이 아니고, ANTILOG 테이블(1100)에 나타낸 이진 정보와 다항식 형태로의 필드 원소 a(t)와 실제 정수값(x) 사이의 관계를 반영하는 것을 편리하게 하기 위한 것이다.
상기한 바와 같이, 본 발명에 따른 DLOG 테이블과 ANTILOG 테이블은 어떤 적절한 하드웨어 구조를 사용하여 저장될 수 있다(예를 들어,8-비트, 16-비트, 32-비트, 등). 또한, 상기한 바와 같이, 직접 어드레스 DLOG 테이블은 메모리 어드레스로서 사용되는 필드 원소를 표시하는 연속적인 이진 데이터로써 실현될 수 있다. 이와는 달리, 컴팩트 DLOG 테이블은 상기한 바와 같은 직접 어드레싱을 사용하지 않고 실현될 수 있다. 이러한 컴팩트 DLOG 테이블은 메모리 공간을 덜 사용하나, 필드 원소를 표시하는 이진 데이터에 의해 직접 인덱싱을 할 수 없고, 컴팩트 DLOG 테이블에 대해서는 더 많은 시간을 소비하는 테이블 룩-업이 필요하다. 그러나, 아래에 설명하는 다중-가드-비트 표기법에서는, 직접 어드레싱을 허용하고 매우 작은 효율의 감소만으로 테이블 룩-업에 응할 수 있는 주목할 만한 DLOG 테이블을 제공할 수 있다(대략 인수 2k 더 작음).
p=2m-1에 대해단일-가드-비트 표기법에 대한 직접 어드레스 룩-업 테이블에 필요한 메모리는 다음과 같다. 직접 어드레스 DLOG 테이블에 대해, 각 행은 크기 k*log2(p)≒km 비트 정수(x)의 이진 형태를 포함하고 (최상위 가드 비트를 포함하지 않음), 상기 테이블은 필드 원소에 대응하는 (k-1)(m+1)+m=k(m+1)-1 비트의 이진 스트링에 의해 인덱싱 된다. 따라서 DLOG 테이블의 크기는 대략 km2k(m+1)-1이 된다. ANTILOG 테이블에 대해, 각 엔트리는 많아야 k(m+1)-비트 스트링을 포함하고, pk-1 엔트리가 있다. 따라서 크기는 k(m+1)(pk-1) 비트이고, 이것은 대략 k(m+1)2km 비트와 같다. 따라서 DLOG 테이블은 ANTILOG 테이블에 비해 대략 2k-1 인수만큼 크다.
대량 곱셈을 실행하는 비용을 희생하고 (단일-가드-비트 표기법 및 다중-가드-비트 표기법에 대해) 테이블 크기를 훨씬 더 감소시킬 수 있다. 예를 들어, 앞서 설명한 차수 k의 다항식을 곱하는 카라쓰바의 방법에서는 2개의 차수-k 다항식의 단일 곱셈을 3개의 곱셈(각각 차수 k/2의 다항식을 포함)으로 대치한다. 본 발명에 따른 상술한 전형적인 곱셈을 더 많은 테이블 룩-업과 결합하는 더 작은 크기의 테이블을 사용하도록 유사하게 수정할 수 있다는 것은, 본 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있을 것이다. 예를 들어, 상기한 본 발명에 따른 전형적인 곱셈을 실행하는 테이블 크기가 S라면, 3배 많은 테이블 룩-업과 결합하여 크기 S1/2의 테이블을 사용하는 상기 수정이 이루어질 수 있다. 테이블 룩업에서의 비용 증가에도 불구하고, 이러한 방법은 메모리-제한 환경에서 바람직할 수 있다.
GF_p_k_MUL과 해당 DLOG 및 ANTILOG에 관한 상기 논의의 관점에서, 본 발명에 따른 GF(pk)의 필드 원소의 곱셈을 실행하는 상기한 전형적인 방법은 종래의 방법과 현저히 다르다고 할 수 있다. 먼저, 표수 p=2인 유한 이진 필드에 대한 방법과 비교하여, 본 방법은 가드 비트를 이용하여 필드 원소를 다르게 표시하는 이진 데이터를 저장한다. 따라서 본 발명에 따른 DLOG 및 ANTILOG 테이블은 도 10A 및 11A에 나타낸 것과 같은 가드 비트를 가지고 있고, 반면 이진 유한 필드를 포함하는 종래 방법의 룩-업 테이블은 가드 비트를 가지고 있지 않다(또는 필요로 하지 않는다).
또한, 홀수 표수 유한 필드의 필드 원소의 곱셈에 대한 종래 방법과 비교하여, 본 방법은 현저히 적은 연산으로 곱셈 작업을 달성한다. 특히, SUM(α, β) 및 PRODUCT(α, β)에 관한 논의에서 상술한 확장 필드 GF(p l k)에서, 확장 필드의 각 원소는 길이 l의 벡터(다항식)로 표시되고, 여기서 각 성분(계수)은 단일-가드 비트 표기법에 따라 저장된다. 확장 필드에서 두 원소를 곱하는 것은 종래 방법을 사용할 경우 필요한 (lk)2 연산보다 대략 3l 2 연산을 필요로 한다. 따라서 상대적으로 작은 값의 k에 대해서도, 현저한 계산 속도의 증가를 달성할 수 있다.
홀 표수 유한 필드의 필드 원소의 곱셈과 관련된 본 발명의 다른 양태에서, 도 9에 나타낸 GF_p_k_MUL의 연산을 실행하기 위한 전용 하드웨어 장치가 제공될 수 있다. 도 12는 전형적인 이러한 하드웨어 장치를 나타내는 기능적 블록도이다. 특히, 도 12에 나타낸 전형적인 장치(1200)는 도 4에서 c로 표기한, GF(pk)의 제1 필드 원소와 제2 필드 원소의 곱을 표시할 수 있는 제3 이진 데이터를 생성하는 다른 방법을 제공한다. 도 12에서 실선은 데이터의 흐름에 대한 전기적 연결을 나타내고, 점선은 제어 신호의 흐름에 대한 전기적 연결을 나타낸다. 상기 장치(1200)는 단일-가드-비트 표기법에 따른 논의로서 설명되지만, 상기 장치(1200)는 후술하는 다중-가드-비트 표기법에도 마찬가지로 적용할 수 있다. 또한, 상기 장치(1200)는 표수값 p의 형태(즉, p=2m± 1 또는 P=2m± d)와는 독립적이다.
상기 장치(1200)는 제1 이진 데이터(레지스터 콘텐츠 "a")와 제2 이진 데이터(레지스터 콘텐츠 "b")를 각각 유지하는 제1 레지스터(1201) 및 제2 레지스터(1203)를 포함한다. 제1 이진 데이터 및 제2 이진 데이터는 유한 필드 GF(pk)의 필드 원소를 표시한다. 여기서, 제1 및 제2 레지스터(1201 및 1203)에서의 제1 및 제2 이진 데이터는 적절한 가드-비트 위치에서 영으로 이미 구성되었다고 가정한다. 그러나 도 7 및 8에 대해 설명한 바와 같은 가드-비트 삽입 및 제거 회로는, 가드 비트 없이 초기 이진 데이터가 상기 장치(1200)에 입력될 수 있기를 바란다면 포함시킬 수도 있다. 상기 장치(1200)는 조합 논리 및 클럭 소자(클럭/논리)(1205), 제1 멀티플렉서(MUX1)(1207), DLOG 룩-업 메모리(1209) 및 ANTILOG 룩-업 메모리(1211)도 포함한다. DLOG 및 ANTILOG 룩-업 메모리는, 예를 들어, 랜덤 액세스 메모리(RAM)나 플래시 메모리를 사용하여 실현할 수 있다. 상기 장치(1200)는 이진량 DLOG(a)를 유지하는 레지스터(1213), 이진량 DLOG(b)를 유지하는 레지스터(1215), 가산 게이트(+)(1217)(가산기라고도 함), 및 예를 들어 프로세서로부터 수신되는 이진 형태의 정수값 pk-1을 유지하는 레지스터(1219)도 포함한다. 이와는 달리, p 및 k에 대한 값의 입력에 대해 pk-1 값을 생성하는 레지스터(1219)와 함께 특정한 회로가 제공될 수도 있다. 이러한 특정한 회로의 구성은 본 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에 있다. 상기 장치(1200)는 레지스터(1219)에 의해 제공되는, pk-1로 나누어진 입력량의 나머지를 계산하는 모듈로 연산 회로(MOD)(1221)도 포함한다. 상기 회로(1221)은 본 기술 분야에 공지된 종래의 모듈러 연산 하드웨어로 될 수 있어서 더 이상의 설명은 필요하지 않을 것이다. 상기 장치(1200)는 제2 멀티플렉서(MUX2)(1223)와 상기 장치 내에서의 계산 결과인 제3 이진 데이터 "c"를 유지하는 출력 레지스터(1225)를 더 포함한다. 상기 클럭/논리부(1205)는 다른 하드웨어 장치로 신호를 입력시키는 출력 단자(도시하지 않음)를 가져서 상기 장치(1200)에서의 계산이 종료되었을 때 다른 하드웨어 장치에서의 계산을 개시시킨다. 예를 들어, 다른 하드웨어 장치는 도 6에 나타낸 바와 같은 다른 장치(1200) 또는 가산 장치(600)일 수 있다.
도 12에 나타낸 전형적인 장치(1200)의 연산에 대해 설명한다. 먼저, DLOG 룩-업 메모리(1209) 및 ANTILOG 룩-업 메모리(1211)는 적절한 이산 로그 및 안티-로그 데이터로써 한번에 초기화된다. 이것은 초기 프로그래밍 신호를 s로 명시된 라인을 통해 클럭/논리부(1205)에 제공하고, 동시에 이산 로그 및 안티-로그 데이터를 DLOG 룩-업 메모리(1209) 및 ANTILOG 룩-업 메모리(1211)에 eD1 및 eD2로 명시된 외부 데이터 버스를 통해 각각 제공함으로써 달성될 수 있다. 동시에, 어드레스 데이터가 MUX1(1207) 및 MUX2(1223)를 각각 거쳐서 외부 어드레스 버스(eA1 및 eA2)에 의해 DLOG 메모리(1209) 및 ANTILOG 메모리(1211)로 각각 제공된다. 상기한 바와 같이, 룩-업 메모리(1209 및 1211)는 예를 들어 RAM 또는 플래시 메모리로 실현할 수 있다. 이와는 달리, 상기 장치(1200)가 p 및 k의 특정값에 대해 전용이라면, 상기 룩-업 메모리(1209 및 1211)는 ROM을 사용하여 실현할 수 있고, 이산 로그 및 안티로그 데이터의 예비 계산이 한번에 실행될 수 있고 제조 단계에서 ROM에 로딩(loading) 될 수 있다.
룩-업 메모리(1209 및 1211)가 초기화되면, 제1 필드 원소를 표시하는 제1 이진 데이터와 제2 필드 원소를 표시하는 제2 이진 데이터가 a 및 b로 명시된 라인 상에서 제1 레지스터(1201) 및 제2 레지스터(1203)로 각각 입력될 수 있다. 제1 이진 데이터 및 제2 이진 데이터는 적절한 가드-비트 위치에서 영으로 미리 구성되어 있다고 가정한다. 이와는 달리, 가드-비트-삽입 회로는, 도 7 및 8에 대해 설명한 바와 같이, 제1 및 제2 레지스터(1201 및 1203)에 제1 이진 데이터 및 제2 이진 데이터를 각각 로딩하기 전에 적절한 가드 비트를 삽입하기 위해 이용될 수 있다. pk-1의 양을 표시하는 이진 데이터는 "pk-1"로 명시된 라인을 통해 레지스터(1219)로 입력된다. 예를 들어, 제1 이진 데이터와, 제2 이진 데이터와, 이산 로그 및 안티 로그 데이터와, p 및 k 양을 표시하는 이진 데이터가, 프로세서(도시하지 않음) 또는 하나 이상의 하드웨어 장치(도시하지 않음)로부터 제공될 수 있다. 예를 들어, 도 6 또는 7에서 나타낸 바와 같은 가산 장치(600)가 종래의 라우팅 회로를 통해 이러한 데이터(예를 들어, 제1 이진 e이터 및 제2 이진 데이터)의 적어도 일부를 제공하는 데 사용될 수 있다.
도 12에 나타낸 바와 같이 s로 명시한 라인을 통한 개시 신호에 의해 계산이 초기화된다. 상기 개시 신호는 프로세서(도시하지 않음) 또는 하나 이상의 하드웨어 장치(도시하지 않음)로부터 제공될 수 있다. 레지스터(1201 및 1203)에 있는 제1 이진 데이터 및 제2 이진 데이터의 값이 안정적이면, 신호(s1)는 제1 및 제2 레지스터(1201 및 1203)에 이러한 값을 각각 고정시킨다. 레지스터(1219)에서 pk-1 양을 표시하는 이진 데이터의 값이 안정적이면, 신호(s5)는 레지스터(1219)에 이들 값을 고정시킨다. 신호(s2)는 제1 레지스터(1201)의 콘텐츠(a)를 DLOG 메모리(1209)로 통과시키는MUX1(1207)로 입력되어 DLOG 메모리(1209)에 접속한다. DLOG 메모리로부터의 출력값이 안정적일 때, 상기 출력값은 신호(s4)에 의해 레지스터(1213)에 고정된다. 레지스터(1213)는 DLOG(a)의 값을 유지한다. 또 다른 신호(s2)가 제2 레지스터(1203)의 콘텐츠(b)를 DLOG 메모리(1209)로 통과시키는MUX1(1223)에 입력되어 DLOG 메모리(1209)에 접속한다. DLOG 메모리로부터의 출력값이 안정적일 때, 상기 출력값은 신호(s3)에 의해 레지스터(1215)에 고정된다. 레지스터(1213)는 DLOG(b) 값을 유지한다. 가산기(1217)는 레지스터(1213 및 1215)의 콘텐츠의 정수합(integer sum)을 계산하고 그 결과를 모듈로 연산 회로(MOD)(1221)로 보내어, 레지스터(1219)로부터 이용 가능한 pk-1 양으로 나누었을 때 입력되는 값의 나머지를 계산한다. MUX2로부터의 출력은 ANTILOG 메모리(1211)로 입력되어 ANTILOG 메모리(1211)에 접속된다. ANTILOG 메모리(1211)로부터의 출력값이 안정적일 때, 상기 출력값은 신호(s6)에 의해 레지스터(1225)에 고정된다. 상기 레지스터(1225)는, 레지스터 콘텐츠 c로서의 출력에 이용될 수 있는, 단일-가드-비트 표기법에서의 ANTILOG(DLOG(a)+DLOG(b)) mod (pk-1) 값을 유지한다. 그러나 필요에 따라 도 7 및 8에 나타낸 바와 같은 가드-비트-제거 회로가 ANTILOG 메모리(1211)와 레지스터(1225) 사이에 배치되어 계산 결과로부터 가드 비트를 제거할 수도 있다. 이것으로 도 12에 나타낸 전형적인 곱셈 장치(1200)의 설명이 완료된다.
상기한 장치(1200)에서, 제1 레지스터(1201) 및 프로세서(도시하지 않음)를 제1 이진 데이터를 저장하는 수단으로 볼 수 있다. 이와는 달리, 제1 레지스터(1201)와 가드-비트-삽입 회로(도시하지 않음)를 제1 이진 데이터를 저장하는 수단으로 볼 수 있다. 제2 레지스터(1203) 및 프로세서(도시하지 않음)를 제2 이진 데이터를 저장하는 수단으로 볼 수 있다. 이와는 달리, 제2 레지스터(1203)와 가드-비트-삽입 회로(도시하지 않음)를 제2 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 레지스터(1225)는 제3 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 클럭/논리 소자(1205)와 도 12에 나타낸 어떤 또는 모든 나머지 소자는 제1 이진 데이터 및 제2 이진 데이터에 대한 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다.
다중-가드-비트 표기법을 사용한 덧셈, p=2 m -1
p=2m-1의 경우에서 필드 원소의 덧셈과 관련된 본 발명의 전형적인 양태에 대해 다중-가드-비트 표기법으로 설명한다. 여기서 본 발명은 적어도 2km 비트량에 대해 동작하는 하드웨어 구조를 사용하여 실행된다고 가정한다(즉, 레지스트는 적어도 2km 비트 크기임). 다중-가드-비트 표기법에 따른 본 발명은, 예를 들어 앞서 설명한 도 1에 나타낸 시스템(100)을 사용하여 실현될 수 있다. 또한, 앞서 설명하였으며 도 6, 7, 8 및 12에 나타낸 전용 하드웨어 장치를, 다중-가드-비트 표기법에 따라 본 발명을 실현하기 위해 사용할 수도 있다. 이러한 장치에 대해서는 여기서 다시 설명하지 않는다. 그러나 다중-가드-비트 표기법을 대해 도 6, 7, 8 및 12에 나타낸 장치의 적절한 수정에 대해서는 필요할 때마다 아래에서 설명할 것이다.
다중-가드-비트 표기법에서 필드 원소 GF(pk)의 표기는 도 2C의 예와 관련된 논의에서 이미 설명하였다. 그 논의에서와 같이, 유한 필드의 원소는 이진 스트링으로 저장되지만, 필드 원소의 계수를 표시하는 인접 데이터 비트 그룹 사이에서 단지 하나의 가드-비트 위치를 갖는 대신에, 필드 원소의 필드 계수를 표시하는 이진 데이터가 저장되게 할당하는 비트 위치의 인접 그룹 사이에 다수의 가드 비트 위치(예를 들어 m 가드-비트 위치)가 제공된다. 예를 들어, GF(38)에 대해 도 2C에 나타낸 바와 같이, 비트 위치 221-r(비음영 비트 위치)의 8 그룹이 필드 계수 α7,i, ..., α1,i, α0,i를 표시하는 이진 데이터를 저장하도록 할당되고 비트 위치 221-r의 인접 그룹은 2 가드-비트 위치 213-r(연한 음영 비트 위치)의 그룹에 의해 분리된다. 사기 가드-비트 위치는 각각이 이진값 영을 포함하도록 초기화된다.
p=2m-1의 경우 필드 GF(pk)에 대해 GF_p_k_ADD의 전형적인 형태의 구현을 다중-가드-비트 표기법에 대해 설명한다. 다중-가드-비트 표기법에 따라 제1 및 제2 레지스터에 저장된 제1 및 제2 이진 데이터를 사용하여 두 필드 원소 αi 및 βi의 덧셈을 실행하기 위해, GF_p_k_ADD와 관련된 연산은 단일-가드-비트 표기법에 대한 것과 원칙적으로 동일하다. 필드 계수와 제1 및 제2 소정 이진량(M1 및 M2)의 형태를 표시하는 데이터 비트의 인접 그룹 사이에서의 가드-비트 위치의 수만이 변경된다. 다중 가드-비트 위치(예를 들어, "m" 가드-비트 위치)가 필드 계수와 관련된 데이터 비트의 인접 그룹 사이에서 구성되는 경우, 상기 방법은 도 4와 관련하여 앞서 설명한 바와 같이 진행한다. 즉, 제1 레지스터에서 제1 가드 비트의 비트 위치에 대응하는 비트 위치에서 영의 값과, 제1 레지스터에서 제1 데이터 비트 그룹의 비트 위치에 대응하는 비트 위치에서 2m-1의 양을 표시하는 이진값을 갖도록 M1이 할당된다. M2는 M2=NOT(M1)으로 주어진다. 이 때, 상기 단일-가드-비트 표기법에 대해 설명한 것과 유사한 방식으로, 식 19에서의 연산을 실행함으로써 GF(pk)의 제1 및 제2 필드 원소의 합을 표시하는 제3 이진 데이터를 생성할 수 있다.
(19)
여기서 a 및 b는 다중-가드-비트 표기법에 따라 제1 및 제2 이진 데이터가 저장되는 제1 및 제2 레지스터의 콘텐츠를 각각 표시하고, c는 다중-가드-비트 표기법에 따라 저장된 제3 이진 데이터를 유지하는 제3 레지스터의 콘텐츠 결과를 표시한다. 제1 및 제2 필드 원소의 합과 동일한 GF(pk)의 제3 필드 원소를 표시하는 제3 이진 데이터를 어떻게 정확하게 제공하게 되는지에 대한 설명은, 상기한 단일 가드-비트 표기법에 대한 설명과 동일하므로 여기서 반복하지는 않는다.
상기한 바와 같이, 도 6, 7에 나타낸 하드웨어 장치를 다중-가드-비트 표기법에 따라 본 발명을 구현하기 위해 사용할 수 있다. 여기에서는 도 6에 나타낸 장치(600)에 대한 수정이 필수적인 것은 아니다. 제1 및 제2 이진 데이터는 다중-가드-비트 표기법에 따라 제1 및 제2 레지스터(601 및 603)에 저장되고, 제1 및 제2 소정 이진량(M1 및 M2)은 상기와 같이 구성된다는 것만 알고 있으면 된다.
다중-가드-비트 표기법에 대해, 가드-비트-삽입 회로(701' 및 703')와 가드-비트 제거 회로(709')가 필드 원소의 계수를 표시하는 데이터 비트 그룹 사이에서, 단일 가드 비트 대신에 다중 가드 비트를 삽입하도록 구성되어야 한다는 점에서, 도 7에 나타낸 가산 장치(700)에 대한 수정이 필요하다. 이와 관련하여, 도 8A에 나타낸 전형적인 가드-비트-삽입 회로(800)가 전기적 연결(811)을 대신하도록 구성될 수 있는데, 여기서 전기적 연결(811) 없는 하나 이상의 가드-비트 위치(809)가 레지스터(805)에서의 인접 그룹의 비트 위치 사이에 삽입된다. 마찬가지로, 도 8B에 나타낸 전형적인 가드-비트-제거 회로(820)가 전기적 연결(831)을 대신하도록 구성될 수 있어서, 레지스터(825)에서의 인접 그룹의 비트 위치 사이의 하나 이상의 가드-비트 위치(809)를 제거한다. 이러한 다중-가드-비트 표기법에 대한 수정으로, 도 7에 나타낸 장치(700)의 연산은 앞서 설명한 바와 동일하게 된다.
다중-가드-비트 표기법을 사용하는 곱셈
필드 GF(pk)에 대한 GF_p_k_MUL의 전형적인 형태의 구현을 다중-가드-비트 표기법에 대해 설명한다. 이러한 논의는 p=2m± 1 및 p2m± d의 함수 형태로 주어진 p에 적용 가능하다. p의 함수 형태의 차이로 인해 발생하는 차이는, 필드 원소의 주어진 계수를 표시하는 이진 데이터를 저장하기 위해 사용되는 비트 수와, 필드 원소의 각 계수에 대한 ANTILOG 테이블에 얼마나 많은 비트가 할당되는가에만 관련되어 있다. 이러한 차이에 대해서는 아래에서 더욱 상세히 설명할 것이다. 당면한 논의는 필드 원소의 각 계수를 저장하기 위해 m 비트가 사용되는 p=2m-1의 경우로 진행되지만, 이러한 논의는 상기한 p의 다른 함수 형태에 대해서도 적용할 수 있다.
다중-가드-비트 표기법에 대한 GF_p_k_MUL의 제1 전형적 구현에서, DLOG 및 ANTILOG 테이블에 대해 할당되는 메모리 공간을 더욱 효율적으로 사용하기 위해 압축 함수(compression function)가 사용된다. 이러한 방법은, 단일-가드-비트 표기법에 대해 상술한 것과 어느 정도 유사한 방법으로 직접 어드레스 DLOG 및 ANTILOG 테이블을 사용하지만, 직접 어드레스 DLOG 및 ANTILOG 테이블의 형태는 다르다. 특히, DLOG 및 ANTILOG 테이블에 대해 할당되는 메모리 공간을 절약하기 위해, 상기 DLOG 및 ANTILOG는 가드 비트 없이 구성된다(이들을 약 km2km 바이트의 조합 크기로 만듦). 직접 어드레스 DLOG 테이블에 대해, 필드 원소에 대응하는 이진 데이터가 메모리 어드레스로 사용되는 경우, DLOG 테이블로부터 가드 비트를 제거하는 것은 연속적인 메모리 어드레스의 전체 개수가 감소된다는 것을 의미한다. 따라서 예약 메모리 위치의 수도 감소된다. 직접 어드레싱 되고 메모리 어드레스로서 정수 x=DLOG(a(t))를 표시하는 이진 데이터를 사용하는 ANTILOG 테이블에 대해, 가드 비트를 제거하는 것은 필드 원소 a(t)를 표시하는 이진 데이터를 저장하기 위해 사용되는 비트의 수를 감소시키므로, 필요한 메모리가 감소된다. 이러한 테이블을 이용하기 위해, 다중 가드 표기법으로 저장된 GF(pk)의 필드 원소를 표시하는 이진 데이터를, DLOG 테이블 룩-업을 실행하기 전에 압축한다. 또한, 결과적인 이진 데이터는, ANTILOG 테이블 룩-업을 실행한 후에 압축해제(decompress) 된다. 이에 대해 더욱 상세히 설명한다.
여기서는 필드 원소의 계수를 표시하는 데이터 비트의 인접 그룹 사이에 가드 비트를 갖는 다중-가드-비트 표기법에 따라 필드 원소가 저장된다고 가정한다. 그러나 본 방법은 데이터 비트의 인접 그룹 사이에서 m 가드 비트로 제한되는 것은 아니고, 데이터 비트의 인접 그룹 사이에서 m 가드 비트와 다른 다중 가드 비트에 대한 수정도 아래 논의로부터 명백하게 될 수 있다. t=INT(k/2)로 두고, 여기서 INT(k/2)는 가장 가까운 정수로 내림 처리(round down)한 k/2의 정수값이다. 다음과 같은 압축 함수(COMP)를 사용하여 다중-가드-비트 표기법으로 저장된, 레지스터 콘텐츠 a에 대해 압축이 실행될 수 있다.
(20)
여기서 M3은 2km-1 값을 표시하는 소정 이진량이므로 COMP(a)는 km 비트를 가진다. (상기 식 20에서 XOR을 비트단위 OR-연산으로 대치할 수 있다.) COMP 함수는 필드 계수를 표시하는 데이터 비트 그룹(즉, 관련, 정보-전달 데이터(information-carrying data))을 비트-위치 블록[2jm, ....,(2j+1)m-1, 여기서 j≥t]으로부터 예약 가드-비트-위치 블록[(2(j-t)+1)m, ..., (2(j-t)+2)m-1]으로 이동시킨다. 이것을 도 13에 예를 들어 나타내었는데, 상술한 레지스터 1301로부터의 비트 위치를 레지스터 1302의 비트 위치로 맵핑하는 것을 나타내고 있다. 여기서 레지스터 1301에서의 압축해제 데이터는 레지스터 1302로 압축된다. 비스듬한 점선(1303)은 그 원래 위치에 대해 시프트 된 비트-위치 블록의 맵핑을 나타낸다. 수직 점선(1304)은 그 원래 위치에 대해 시프트 되지 않은 비트 위치 블록의 맵핑을 나타낸다. t=4이고 m=2인(p=2m-1 이므로) GF(38)의 경우 대해 도 13에 나타낸 바와 같이, j=t=4에 대한 예로서, 비트 위치 16(즉, 2jm) 및 17(즉, (2j+1)m-1)에서의 데이터는 비트 위치 2(즉, (2(j-t)+1)m) 및 3(즉, (2(j-t)+2)m-1)로 맵핑된다. 다른 데이터 블록도 마찬가지로 맵핑 된다. 따라서 상기한 연산에서 손실되는, 필드 원소의 계수를 표시하는 데이터 비트 그룹은 없다. 직접 어드레스 DLOG 테이블은 고속 룩-업(fast look-up)을 위한 관련 필드 원소의 COMP 값에 메모리 어드레스가 대응하도록 구성될 수 있다. 직접 어드레스 ANTILOG 테이블은 필드 원소를 표시하는 이진 데이터의 COMP값을 저장한다. 또한, DLOG 및 ANTILOG 테이블에서의 모든 엔트리는 관련 (즉, 정보-전달) 데이터를 포함한다. 그러므로, DLOG 및 ANTILOG 테이블에서 비어 있거나 사용되지 않는 공간은 없다.
압축된 이진 데이터의 압축해제는 유사한 방식으로 압축해제 함수 (DECOMP)를 사용하여 실행할 수 있다. 비트 위치 2jm, 2jm+1, 2jm+2, ..., (2j+1)m-1(여기서 j=0, 1, ..., k-1)에서 1이고 그 외에는 0인 소정 이진량을 M4라고 한다. 이 때
(21)
이 되고, 여기서 다시 XOR은 비트단위 OR-연산과 (2t-1)m 비트만큼의 좌측 시프트를 표시하는 <<(2t-1)m으로 대치될 수 있다. 상기 마스크 M4는 가드-비트 위치가 0만을 포함하도록 확인할 것이다. ANTILOG 테이블을 사용하는 테이블 룩-업이 실행된 후에, 상기 값은 상기한 DECOMP 함수에 의해 압축해제 된다. 그러므로 GF(pk)의 제1 및 제2 필드 원소 αi 및 βi를 표시하는 a 및 b가, 다중-가드-비트 표기법에 따라 저장된 제1 및 제2 이진 데이터(제1 및 제2 레지스터의 레지스터 콘텐츠)이면, GF(pk)에서 αi 및βi의 전승산(full multiplication)은 식 22에서 주어진 연산을 실행함으로써 달성할 수 있다.
(22)
여기서 c는 제3 레지스터에 저장될 수 있고 제1 및 제2 필드 원소의 곱과 동일한 제3 필드 원소를 표시하는 제3 이진 데이터이다. 따라서 k2 곱셈을 병렬로 효과적으로 실행하기 위해, 9 고속 연산 및 1 모듈러 덧셈을 실행할 수 있다. 이러한 전형적인 방식으로 GF_p_k_MUL을 실행함으로써, 앞서 설명한 알고리즘 PRODUCT(α, β) 및 REDUCE(δ,f)를 통해 GF(p l k) 형태의 확장 필드에서 계산을 쉽게 할 수 있다.
다중-가드-비트 표기법에 대한 GF_p_k_MUL의 제2 전형적 실현에서는, 상기한 압축 및 압축해제 함수를 사용하지 않고 GF(pk)의 필드 원소를 곱할 수 있다. 이러한 전형적인 방법에서는, GF_p_k_MUL과 관련된 연산은 원칙적으로 도 9-12에 대해 앞서 설명한 단일-가드-비트 표기법에 대한 것과 동일하다. 주어진 레지스터에서 필드 계수를 표시하는 데이터 비트의 인접 그룹 사이에서의 가드-비트 위치의 개수와, DLOG 및 ANTILOG 테이블(1000 및 1100)의 형태만이 변경된다. 이 점에 있어서, 앞서 설명하고 예를 들어 도 2C에 나타낸 바와 같은 다중-가드-비트 표기법에 따라 필드 원소가 저장된다. 또한, DLOG 및 ANTILOG 테이블은 도 10A 및 11A에 나타낸 전형적인 테이블과 형태가 각각 유사하지만, 필드 계수를 표시하는 데이터 비트의 인접 그룹 사이에 하나 이상의 가드-비트가 제공되도록 수정된다. 예를 들어, 도 10A에 나타낸 전형적인 DLOG 테이블(1000)은, 데이터 비트(1007)의 인접 그룹 사이에서 하나 이상의 가드 비트(1009)(예를 들어, m 가드 비트)를 제공함으로써 다중-가드-비트 표기법을 위해 수정될 수 있다. 마찬가지로, 도 11A에 나타낸 전형적인 ANTILOG 테이블(1100)은, 데이터 비트(1107)의 인접 그룹 사이에서 하나 이상의 가드 비트(1109)(예를 들어, m 가드 비트)를 제공함으로써 다중-가드-비트 표기법을 위해 수정될 수 있다. 이러한 수정으로, 다중-가드-비트 표기법에서의 곱셈이 도 9-12를 참조하여 상기 설명한 것과 같은 방식으로 실행될 수 있다. 물론, 이러한 당면한 방법은, 압축 및 압축해제 함수를 이용하는 다중-가드-비트 표기법에 대한 GF_p_k_MUL의 형태와 관련하여 상술한 바와 같은 메모리 공간을 절약하는 이점은 가지지 않는다.
단일/다중 가드-비트 표기법을 사용하는 다른 계산, p=2m-1
단일 및/또는 다중 가드-비트 표기법을 사용하여 용이하게 실행될 수 있는 몇 가지 다른 연산에 대해 설명한다. 먼저, 다중-가드-비트 표기법을 사용하여 스칼라 곱셈(scalar multiplication)이 쉽게 실행될 수 있다. 스칼라 곱셈, 즉 그라운드 필드 GF(p)에서 어떤 γ를 GF(pk)의 원소 αi=(αk-1,i, ..., α1,i, α0,i)에 곱하는 것은, 테이블을 조금도 사용하지 않고서 다중-가드-비트 표기법으로 실행할 수 있다. 다음 양을 계산하는 것이 바람직하다.
(23)
앞서 언급한 Seminumerical Algorithms에서 설명한 바와 같이, p=2m-1에 대해, 두 이진량 u 및 v(둘 다 0, 1, ..., p의 범위에 있다고 가정)의 곱셈 모듈로 p는 다음 관계식에 따라 실행될 수 있다.
(24), (25)
u<2m 및 v<2m 이므로 uv<2m 임은 명백하다. 다중-가드-비트 표기법에 따라 제1 레지스터에 저장된 α를 표시하는 이진 데이터를 u라고 하고, 다중-가드-비트 표기법에 따라 제2 레지스터에 저장된 γ(GF(p)의 원소)를 표시하는 이진 데이터를 v라고 한다. 여기서 v는 우측-상위 비트 위치에서 γ량을 표시하는 이진 값을 가지고 그 외에는 영이다. 다시 말해, v는 벡터량을 표시하는 이진 데이터로 볼 수 있고, 상기 벡터량은 (0, 0, ...,γ)로 된다. 이 때, k 모듈러 곱셈은 다음 연산을 실행함으로서 병렬로 실행될 수 있다.
(26), (27)
여기서, M1은 비트 위치 2jm, (2j+1)m-1에서는 1을 갖는 소정 이진량이고 그 외에는 2m-1의 양을 표시하는 이진 값이고(t가 상기한 바와 같이 정의되는 경우 j=0, 1, ..., t), GF_p_k_ADD는 상기한 다중-가드-비트 표기법에 대한 전형적인 덧셈 알고리즘이다. 이 점에 있어서, 상기 식 26에서 u와 v의 곱셈은 공지 프로세서에 의해 관례적으로 실행되는 것과 같은 레지스터의 정규 곱셈이 될 수 있다(예를 들어, 정수 곱셈 또는 부동-소수점(floating-point) 곱셈). 이와는 달리, 식 26에서의 u와 v의 곱셈은 도 9를 참조하여 앞서 설명한 테이블 룩-업을 사용하여 실행할 수도 있다. 그러므로 이러한 표기법에서 콘볼루션(곱셈)은, 종래에 요구되는 2k 곱셈 및 모듈러 약분 연산이 아니고, 4+5=9의 단순한 연산으로 할 수 있다.
스칼라 곱셈의 특별한 경우는 더블링(doubling)이다. GF(pk)의 원소 αi가 주어진, 필드량 αii(2αi)는 다음 연산을 실행함으로써 결정될 수 있다.
(28), (29)
여기서 a는 단일-가드-비트 표기법 또는 다중-가드-비트 표기법에 따라 저장된 αi를 표시하는 이진 데이터이고, M1 및 M2는 적절하게 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나에 대해 상기한 바와 같이 정의된 소정 이진량(마스크량) 이다. 따라서 5개의 능률적인 연산을 사용하여 더블링을 달성할 수 있음을 알 수 있다.
실행 가능한 또 다른 계산은 동등성 검사(equality testing)이다. 예를 들어, GF(pk)의 필드 원소를 표시하는 이진 데이터 a가 영 원소를 표시하는지의 여부를 검사하는 것은, a=2a 인지를 체크하여 할 수 있다. 여기서 더블링은 바로 앞에서 설명한 바와 같이 실행된다. 표수 p가 홀수이므로, 2a의 양은 a=0이 아니라면 절대로 영이 되지 않는다. 원칙적으로, 단일 워드-연산(single word-operation)을 사용하여 a=0 인지의 여부를 직접 검사하는 것이 바람직할 수 있다. 그러나 그라운드 필드 GF(p)에서의 원소 0은 두 표기법(0 및 p)을 가지므로, 이진 데이터의 모든 비트가 동일하게 영이 아니더라도 이진 데이터 a가 0을 표시하는 것은 가능하다. 따라서 더블링 연산은 a의 양이 영과 같은지를 검사하는 편리한 방법을 제공한다. 이러한 방법은 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 모두에게 적용할 수 있다.
실행 가능한 또 다른 계산은 GF(pk)의 a 필드 원소의 덧셈 역원(additive inverse)을 결정하는 것, 즉 a가 주어지면 a+(-a)=0이 되는 "-a"를 결정하고자 하는 것이다. GF(pk)의 필드 원소를 표시하는 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나에 따라 저장된 제1 이진 데이터 a가 주어지면, 다음과 같이 필드 원소의 덧셈 역원을 표시하는 제2 이진 데이터 c를 결정할 수 있다. GF(pk)에서 (p, p, ..., p)의 양을 표시하는 이진 데이터를 z라고 한다. 즉 z는 적절한 위치에서 그 사이에 가드 비트를 갖는 데이터 비트의 k 그룹을 포함하고, 여기서 데이터 비트의 각 그룹은 p의 이진 등가(binary equivalent)를 유지한다. 이 때, c=-a는 단일 워드 연산을 실행함으로써 결정된다.
(30)
여기서 “-”는 워드 상의 정규 뺄셈 연산자이다. 이에 따라서 일반적인 동등성 검사, 즉 a=b인지를 결정하는 것은, a+(-b)=0인지의 여부를 검사함으로써, 즉 덧셈 역원에 대한 상기한 기술을 먼저 사용한 후 원소가 영이면 검사용 상기 방법을 사용함으로써 실행될 수 있다.
실행 가능한 또 다른 계산은 곱셈 역원(multiplicative inverse)이다. 크기 s의 승법군에서, 모든 x에 대해 x5=1은 참이다. 다시 말해, 필드에서의 어떤 x에 대해, x-1=xs-1이다. 유한 필드 GF(pk)에 대해, 승법군은 크기 s=pk-1을 갖는다. 그러므로, 필드 원소의 곱셈 역원은 다음 관계식에 따른 테이블 룩-업에 의해 실행될 수 있다.
(31)
여기서 제1 이진 데이터 a는 GF(pk)의 필드 원소를 표시하고, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법에 따라 저장된다. 제2 이진 데이터 a-1은 곱셉 역원 필드 원소를 표시한다. 단일-가드-비트 표기법에 대한 GF_p_k_MUL의 논의에 관해 상술한 것과 유사한 방식으로, 식 35에서의 상기 연산은 테이블 룩-업을 사용하여 단일-가드-비트 표기법을 직접 사용하여 실행될 수 있다. 다중-가드-비트 표기법에 대해, 식 35에서의 연산도 직접 실행될 수 있는데, 여기서 DLOG 룩-업 테이블은 메모리 어드레스에서의 다중 가드 비트로 구성되고, ANTILOG 테이블에 저장된 이진 데이터는 필드 원소를 표시하는 테이터 비트의 그룹 사이에 위치한 다중가드 비트로 구성된다. 이와는 달리, 식 35에서의 연산은, 앞서 설명한 바와 같이 압축 및 압축해제와 결합된 “압축(compressed)” DLOG 및 ANTILOG 룩-업 테이블을 사용하여 다중-가드-비트 표기법에 대해 실행될 수 있다. 즉, DLOG 테이블 룩-업을 실행하기에 앞서 상기한 COMP 함수를 이용하여 제1 이진 데이터를 압축할 수 있고, ANTILOG 테이블 룩-업이 실행된 후에 이진 데이터 결과에 대해 DECOMP 함수를 사용하여 압축해제 연산을 실행할 수 있다.
실행 가능한 또 다른 계산은 누승(exponentiation) 이다. 상기한 곱셈 역원을 일반화 하여, 다음 관계식에 따라 테이블 룩-업을 하여 n 제곱(n-th power)에 대한 필드 원소의 누승을 계산할 수 있다.
(32)
여기서 a는 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나에 따라 필드 계수를 표시하는 제1 이진 데이터이다. 상술한 것과 같은 방식으로, 식 36은 직접 또는 교대로 실행될 수 있고, DLOG 테이블 룩-업 전에 ANTILOG 테이블 룩-업에 뒤따라서, 필요에 따라 압축 및 압축해제 함수를 각각 사용하여 실행될 수 있다.
효율 증대의 평가
종래 방법에 비해 상기한 본 발명의 방법을 사용하여 얻을 수 있는 효율 증대의 평가에 대해, 전형적인 암호법의 응용과 관련하여 설명한다. 암호 보안(cryptographic security)의 관점에서, 암호화 구조(encryption schemes)를 충분히 복잡하게 하여 상당히 안전하게 되도록 약 2160 크기의 유한 필드에 대해 타원곡선(앞서 언급한 Handbook of Applied Cryptography 참조)을 사용하여 암호화를 실행하는 것이 현재 권장되고 있다. 따라서 본 발명에 따라 p=3인 경우에, 101(즉, 3101≒2160) 보다 큰 차수의 GF(3)의 확장을 사용하는 것이 필수적으로 된다. 본 발명에 따라 p=7인 경우에, 확장 차수는 적어도 57을 요구한다. 즉, 필수적인 복잡성은, 예를 들어 GF(3102) 또는 GF(760)에서 계산을 실행함으로써 달성될 수 있을 것이다.
GF(3102) 또는 GF(760)에서 직접 계산을 실행하는 것보다, 본 발명에서는 적절한 확장 필드 GF(p l k)에서 계산을 실행하여 필수적인 복잡성을 달성하게 한다. 예를 들어, p=3에 대하여, 필수적 복잡성은 확장 필드 GF(p l k)에서의 계산을 실행하여 구할 수 있고, 여기서 l=17이고 k=6이다(102=6·17 이므로). 마찬가지로, p=7에 대해, 필수적 복잡성은 확장 필드 GF(7 l k)에서의 계산을 실행하여 구할 수 있고, 여기서 l=12이고 k=5이다(60=5·12 이므로). 상기한 바와 같이, 이러한 계산은, 당면한 예에서 GF(p5) 또는 GF(75)로 각각 될 수 있는, 기저 필드 GF(p l k)에서의 산술 연산을 실행하는 것을 요구한다. 또한, GF(36)에서의 계산은 종래의 32-비트 구조로 단일-가드-비트 표기법을 사용하여 실행될 수 있음에 유의해야 한다. 또한, GF(75)에서의 계산은 32-비트 구조로 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나를 사용하여 실행될 수 있다. 앞서 설명한 바와 같이, 알고리즘 SUM(α,β) 및 PRODUCT(α,β)을 확장 필드 GF(p l k)에서의 계산과 필드 GF(pk)에서의 계산이 연관되도록 사용할 수 있다. GF_p_k_ADD 및 GF_p_k_MUL의 여러 실현을 포함하는, GF(pk)에서의 다양한 종류의 계산에 대해 앞에서 상세히 설명하였다.
l=17 및 k=6인 GF(p l k)와 l=17 및 k=6인 GF(p l k)의 특정 유한 필드를 포함하는 계산에 대해 종래 방법과 비교하여 본 발명에 따른 단일-가드-비트 표기법 및 다중-가드-비트에 대한 계산 효율의 요약표를 나타내었다. 특히, 아래의 표는, DLOG 및 ANTILOG 룩-업 테이블의 대략적인 조합 크기(바이트)와, 각 필드에서 덧셈 및 곱셈을 실행할 필요가 있는 연산의 수를 나타낸다. 다중-가드-비트 표기법을 사용하는 곱셈을 실행하는 데 필요한 연산의 수는 상기한 압축 및 압축해제 연산을 이용하는 것을 포함한다.
필드 k l 단일-가드-비트 표기법 다중-가드-비트 표기법 종래의 방법
테이블 크기 덧셈에 대한 연산 곱셈에 대한 연산 테이블 크기 덧셈에 대한 연산 곱셈에 대한 연산 테이블 크기 덧셈에 대한 연산 곱셈에 대한 연산
GF(3lk) 6 17 219 85 578 213 85 2890 - 102 10400
GF(7lk) 5 12 221 60 288 216 60 1440 - 60 3600
상기 표로부터 명백하듯이, 상기한 본 발명의 방법을 사용하는 곱셈에 대해서, 종래 방법보다 효율에서의 큰 이득을 달성할 수 있다. 덧셈에 대해 필요한 상기 표시된 연산의 수와 관련하여, 본 발명에 따른 단일-가드-비트 표기법 및 다중-가드-비트 표기법에 이용되는 연산의 종류는 주로 높은 효율의 단순한 비트 연산인 반면, 종래 방법과 관련된 연산의 종류는 매우 느린 모듈러 덧셈 연산이라는 점에 주목할 필요가 있다. 따라서 GF(pk)에서 덧셈을 실행하는 종래의 방법에 비해 상기한 본 발명의 방법을 사용하는 덧셈이, 효율에서 현저한 이득도 달성할 수 있다는 것이 명백하다. 따라서 본 발명을 사용하여 달성한 이득은, 처음 보기에는, 제안한 상기 표보다 더욱 더 현저하다. 이러한 동일한 조사는 본 발명에 따른 필드 원소의 곱셈에 대해서도 마찬가지이다.
단일-가드-비트 표기법인지 다중-가드-비트 표기법인지를 결정하는 것과 관련된 검토에 대해 설명한다. 메모리 소비가 문제되지 않는 경우, 계산 성능을 더 좋기 때문에 단일-가드-비트 표기법이 바람직하다. 가까운 장래의 응용에 따라, 덧셈 연산이 우세한 연산일 경우, 가능한 k를 크게 할 수 있기 때문에 단일-가드-비트 사용되어야 한다. 또한, DLOG 및 ANTILOG 룩-업 테이블의 크기가 2k이므로, 덧셈이 곱셈보다 우세하게 사용되는 경우, DLOG 및 ANTILOG 룩-업 테이블을 전체적으로 피하고 필드 원소를 곱하는 종래 방법을 단순히 사용하는 것이 현실적일 수 있다.
한편, 곱셈이 우세한 연산인 경우, DLOG 및 ANTILOG 룩-업 테이블의 크기를 최소화하는 다중-가드-비트 표기법이 더 바람직하다. 상기한 논의의 관점에서, 단일-가드-비트 표기법 및 다중-가드-비트 표기법은, 어떤 의미에서, DLOG 및 ANTILOG 룩-업 테이블의 컴팩트성, 테이블 룩-업의 용이성 및 병렬화의 정도(즉, 단일 기계(single-machine) 레지스터에서 표시할 수 있는 필드-원소 계수의 수) 사이의 트레이드-오프(trade-off)의 고려를 포함하는, 스케일의 반대편 끝을 표시하는 것을 알 수 있다. w가 하드웨어 구조의 (고정된) 워드이고(즉, w가 레지스터 크기), m이 p=2m-1에 대한 그라운드 필드 GF(p)에서의 비트 수이면, 단일-가드-비트 표기법의 일부 속성은 다음과 같이 요약될 수 있다. GR(pk)의 k=w/(m+1) 계수를 표시하는 이진 데이터는(상기 계수가 GF(p)의 원소임) 한 워드, 즉 단일 하드웨어 레지스터에 맞출 수 있다. 이진 데이터의 이러한 패킹(packing)은 확실하게 k<w/m을 만족하는 것에 대해 최적이다. DLOG 테이블 룩-업 전에는 압축이 필요 없고, (명백하게 최적인) ANTILOG 테이블 룩-업에 뒤따른 압축해제가 필요 없다. 단일-가드-비트 표기법에 대한 룩-업 테이블은 다중 가드 비트 표기법에 대한 룩-업 테이블보다 약 2k 배만큼 크다. 즉, 단일-가드-비트 표기법에 대한 룩-업 테이블은 필드의 모든 원소를 저장하기 위해 필요한 절대 최소 크기보다 더 크다.
다중-가드-비트 표기법의 일부 속성은 다음과 같이 요약될 수 있다. (GF(p))의 원소인) GF(pk)의 k=w/(2m) 계수를 표시하는 이진 데이터는 하나의 워드, 즉 단일 하드웨어 레지스터에 맞추어 질수 있다. DLOG 및 ANTILOG 룩-업 테이블에 요구되는 메모리 공간을 절약하기 위해, 필요에 따라, 테이블 룩-업과 관련된 압축 및 압축해제 연산에 작은 양의 계산을 전담시킬 수 있고 또한 전담시켜야 한다. 압축 및 압축해제 연산을 이용함으로써, DLOG 및 ANTILOG 테이블은 그 크기에서 반드시 최적이다.
p=2m+1 및 p=2m± d 형태의 p로의 확장
상기한 논의에서, 홀소수 표수의 유한 필드에서의 계산을 p=2m-1 형태의 p에 대해 설명하였다. 상기한 방법의 확장을 홀소수 표수의 유한 필드의 계산에 대해 설명한다. 여기서 p는 p=2m+1 및 p=2m± d 형태이고 d는 작다. 원칙적으로, d<2m의 경우에서 어떤 d값이 사용될 수 있으나, 더 작은 d가 바람직하다는 것을 알 수 있을 것이다. 원칙적으로, 아래에서 설명하는 바와 같이, d=1의 경우만큼 효율적으로 판명된, d≤(2m+1)/3인 p=2m-1과 d≤p/6인 p=2m± d 일 때, 특별한 최적화를 이용할 수 있다. p=2m-1의 경우에 비해 이러한 확장은, 필요한 메모리 및 계산 오버헤드(overhead)에서의 작은 증가만이 필요하다. p=2m-1에 대해 상기한 처리는 p=3, 7, 31 등을 허용하는 반면, p=2m+1 및 p=2m± d로의 확장은 소수 p=5, 11, 13, 17 등을 이용하게 한다. 상기한 것보다 d가 작은 경우에 본 발명이 가장 유리하다고 언급하였지만, 원칙적으로 모든 소수가 인정된다. 또한, 워드 크기 및 하드웨어 메모리는 얼마나 큰 값의 p를 이용할 수 있는가에 대해 실제적인 약간의 제한을 둔다. 앞서 설명한 바와 같이, 하나의 함수 형태 이상의 항으로 홀수 표수 소수 p를 쓸 수 있는 경우, 다른 두 함수 형태에 대한 방법 보다 p=2m-1에 대한 방법을 사용하는 것이 일반적으로 바람직하다. 또한, d>1인 경우 p=2m± d에 대한 방법보다 p=2m+1에 대한 방법을 사용하는 것이 바람직하다.
다음 조사는 p=2m± d 뿐만 아니라 p=2m+1 형태의 p로의 확장을 이해하는 것과 관련되어 있다. 약간 다른 표기를 사용하여 상기 제안한 바와 같이(식 15 참조) p=2m-1일 때 어떤 값의 약분 e modulo p를 다음 관계식에 따라 실행할 수 있다.
(33)
상기한 바와 같이, 이것은 e로부터 p의 정수배를 빼는 것이다. 따라서 상기 결과는 수학적으로 정확하고, 유일한 문제는 “실제적인(practical)”인 것으로서, 즉 상기 결과가 정수 modulo p의 종래 표기법인 집합 0,1, ...,p-1에 항상 속하지 않는다는 것이다. 이것은 다음 조사에 의해 해결되었다. 정수 modulo p의 표기법은 영이 두 가지 표기법, 0과 p를 갖는 더 큰 집합 Sp=0, 1, ..., p로 확장될 수 있다. 이 때, f 및 g가 Sp의 원소이면, 식 3은 이중 표기법에서 (f+g) mod (p)로 정확하게 계산된다. 여기서 e는 f와 g의 합이다. 이러한 조사는 이제 일반화될 것이다. p=2m+1이라고 한다(여기서 d는 음수이지만, |d|<2 이다). 이 때, 어떤 정수 e에 대해, 다음 관계식이 정수 r에 대해 적용된다.
(34), (35)
즉, 상기 결과는 p의 정수배에 이르기까지, e mod(p)와 같다. 그러므로 식 34 및 35에서 실행되는 것은 p의 배수에 의한 뺄셈이다. c-pk의 양이 집합 0, 1, ...,p-1에 실제 있도록 완전한 약분 mod p를 얻기 위해, 식 34 및 35에서의 관계식은 k=e div p=e div(2m+d)를 사용해야 한다. 그러나, 본 발명은 e-pk가 집합 0, 1, ...,p-1에 있는 것이 보장되지 않도록 k=e div 2m에서 근사법을 이용한다. d=-1인 경우에 대해(p=2m-1에 해당), 예를 들어, 상기 약간 더 큰 집합 Sp를 이용하는 것은, e=f+g의 결정에서 상기 집합 Sp에 대해 닫힌 상태로 되는 덧셈과 결합하여 모듈러 약분 연산을 하게 한다.
홀수 |d|>1 에 대한 p=2m+1 및 p=2m± d 경우에 알고리즘 GF_p_k_ADD 및 FG_p_k_MUL이 생성에 대하여, 허용된 GF(pk) 필드 원소의 계수값에 해당하는 적당한 표기 집합 Sp를 결정하는 것과 연관하여 아래에서 설명한다. 상기 Sp 집합은 p의 함수 형태와 m 및 d에 의존함을 알 수 있다. 여기서 p=2m± d. 상기와 유사하게, 이러한 집합들은 p=2m+1의 경우 Sp+, p=2m+d의 경우 Sp+d, p=2m-d의 경우 Sp-d로 표시될 것이다. 상기한 바와 같이, GF(pk)의 필드 원소의 계수 그 자체는 GF(p)의 원소이다. c량의 모듈러 약분이 c에서 p의 배수를 뺀 것인 한, 모듈러 약분에 따른 덧셈 하에서 닫힌 상태이면 더욱 일반적인 집합 Sp를 허용하는 데에 수학적으로 문제가 없음에 유의해야 한다.
p=2m+d에서 GF(pk)에서의 덧셈 및 곱셈
p=2m+1의 경우에 대한 GF_p_k_ADD 및 GF_p_k_MUL의 다음 설명에서, p ≥5가 되도록 m≥2라고 가정한다. 이것은 p=2m-1(즉, p=22-1)인 경우의 덧셈 및 곱셈에 대해 앞서 설명한 방법을 사용하여, p=3인 경우를 어드레싱 하는 것이 바람직하기 때문이다. Sp+가 Sp+=0, 1, ..., 2p-2로 주어진다. (따라서, p=2m+1에 대해 본 발명은 0, 1, ..., p-2 값이 두 가지 표기법을 갖도록 되는 반면, p=2m-1의 경우 0값만이 하나 이상의 표기법을 갖는다.) 이 때, GF(pk)의 필드 원소의 각 계수는 Sp+의 원소이다. 2p-2=2m+1이므로, m+3 비트(가드 비트를 포함하지 않음)가 GF(pk)의 필드 원소의 계수를 표시하는 데 사용되고, 이것은 p=2m-1에 대한 상기 방법을 이용하는 집합 Sp=0, 1, ..., p에서 계수를 표시하기 위해 필요한 것보다 하나 이상인 비트이다.
p=2m+1의 경우에 대해, GF(pk)의 필드 원소를 표시하는 이진 데이터는, p=2m+1에 대해, m+2 비트(가드 비트를 포함하지 않음)가 필드 원소의 계수를 표시하는 데이터 비트의 각 그룹에 대해 할당되는 것을 제외하고, 상기한 바와 같이, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나에 따라 하드웨어 레지스터에 저장될 수 있다. 예를 들어, 단일-가드-비트 표기법에서, GF(pk)의 제1 필드 원소 αi를 표시하는 제1 이진 데이터는 다음과 같이 저장될 수 있다. 여기서, 제1 이진 데이터는 제1 데이터 비트의 k 그룹을 포함한다. (m+3)k를 최대한의 하드웨어 워드 크기(레지스터 크기)로 가정한다. αi를 GF(pk)의 제1 필드 원소로 두며, 여기서 αi=(αk-1,i, ..., α0,i)이고 각 αj,i는 Sp+에 속한다. α0,i를 표시하는 제1 데이터 비트의 그룹은 비트 위치 0, 1, ... m+1로 제1 레지스터에 저장된다. 영 값을 갖는 제1 가드 비트는 비트 위치 m+2(가드-비트 위치)로 제1 레지스터에 저장된다. α1,i를 표시하는 제1 데이터 비트의 다른 그룹은 비트 위치 m+3, ... 2m+4 등으로 제1 레지스터에 저장된다. 따라서 v=1, 2, ...에서 모든 비트 위치 v(m+3)-1에, 즉 모든 연속적인 (m+3)번째 비트 위치에, 하나의 제1 가드 비트가 있다. 다시 말해, 제1 데이터 비트의 각 그룹의 최상위 비트에 인접한 위치에 하나의 제1 가드 비트가 있다. GF(pk)의 제2 필드 원소를 표시하는 제2 데이터 비트의 k 그룹을 포함하는 제2 이진 데이터는, 제2 데이터 비트의 각 그룹의 최상위 비트에 인접한 하나의 제2 가드 비트와 함께 제2 레지스터에 마찬가지로 저장될 수 있다. (여기서, “제1” 및 “제2”는 단순히 제1 필드 원소와 제2 필드 원소에 각각 대응하는 속성을 구분하기 위해 사용된다.) 이러한 방식으로 GF(pk)의 제1 및 제2 필드 원소를 표시하는 이진 데이터를 제1 및 제2 하드웨어 레지스터에 저장함으로써, 필드 계수를 표시하는 데이터 비트의 한 그룹으로부터 다른 필드 계수를 표시하는 데이터 비트의 인접 그룹으로 캐리가 전달되지 않을 것이다. 다중-가드-비트 표기법에 따라 필드 원소를 표시하는 이진 데이터를 저장하는 방법은, 필드 계수를 표시하는 데이터 비트의 인접 그룹 사이에 하나 이상의 가드-비트 위치가 제공된다는 차이만 있을 뿐, 전적으로 유사하다.
p=2m+1에서 GF_p_k_ADD의 전형적인 형태에 대해 도 14의 흐름도를 참조하여 설명한다. 도 14에 나타낸 연산은 도 1에 나타낸 시스템(100)과 같은 시스템에 의해 실행할 수 있다. 또한, 바로 전에 설명한 바와 같은 방식으로, GF(pk)의 제1 필드 원소를 표시하는 제1 이진 데이터가 제1 레지스터(예를 들어, 도 1의 레지스터 107)에 저장되고, 제2 필드 원소를 표시하는 제2 이진 데이터가 제2 레지스터(예를 들어, 레지스터 109)에 저장되도록, 도 3에 나타낸 단계 301 및 303가 프로세서(105)에 의해 미리 실행되었다고 가정한다. 제1 및 제2 이진 데이터는 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나에 따라 저장될 수 있다. 즉 상기 방법은 양쪽 경우에 동일하다. 이 때, 도 14에 나타낸 단계는 도 3에 나타낸 단계 305의 전형적인 구현을 표시한다.
단계 1401에서와 같이, 처리부(105)는 덧셈(즉, 필요할 경우, 다음 최상위 비트에 캐리를 갖는 덧셈)을 사용하여 제1 레지스터(107)의 콘텐츠 a와 제2 레지스터(109)의 콘텐츠 b를 더한다. 덧셈의 결과는 도 1에 나타낸 바와 같은 또 다른 레지스터(111)에 저장될 수 있다. 단계 1403에서와 같이, 처리부(105)는 레지스터(111)에 저장된 (a+b) 양과 f;지스터들(예를 들어, 레지스터 113) 중 하나에 저장된 제1 소정 이진량 M1 사이에서 논리 AND 연산을 실행한다. 상기 M1 양은 제1 레지스터(107)에 저장된 제1 가드 비트의 비트 위치에 대응하는 비트 위치에서 영 값을 가지며, 제1 레지스터에 저장된 제1 데이터 비트의 각 그룹의 비트 위치에 대응하는 비트 위치에서 2m-1의 양을 표시하는 이진값을 갖는다. 예를 들어, p=5인 경우(즉, p=2m+1에서 m=2), 제1 소정 이진량 M1은 영의 비트값에 의해 분리되는 연속적인 이진 스트링(0, 0, 1, 1)을 포함하는데, 이것은 이진값으로 (0, 0, 1, 1)로 주어지는, 2m-1=3이기 때문이다. M1의 양에 대한 상기한 정의는, p=2m+1인 경우에 대해 단일-가드-비트 표기법 뿐만 아니라 다중-가드-비트 표기법에도 적용할 수 있다. 단계 1403에 나타낸 연산의 결과는, 제1 중간 데이터(c1)라고 할 수 있으며, 레지스터들(예를 들어, 레지스터 115) 중 하나에 저장된다.
단계 1405에서와 같이, 처리부(105)는 레지스터(111)에 저장된 (a+b) 양과 제2 소정 이진량(M2)(여기서 M2는 M2=NOT(M1)으로 주어짐) 사이에서 논리 AND 연산을 실행한다. NOT 연산은 비트단위 논리 부정(bitwise logical negation)이다. 이러한 연산의 결과는 레지스터들(예를 들어, 레지스터 117) 중 하나에 저장된다. 또한 단계 1405에서와 같이, 처리부(105)는 ((a+b)&M2) 양에 대해 m 비트만큼 우측 시프트를 실행한다. 이러한 연산의 결과는 동일 레지스터(117) 또는 다른 레지스터에 저장될 수 있다. 단계 1407에서, 처리부(105)는 제3 소정 이진량(P1)에서 ((a+b)&M2)>>m을 뺀다. P1의 양은 제1 레지스터에 저장된 제1 가드 비트의 비트 위치에 대응하는 비트 위치에서 영 값을 가지고, 제1 레지스터에서 제1 데이터 비트의 각 그룹의 비트 위치에 대응하는 비트 위치에서 2m+1(=p)의 양을 표시하는 이진 값을 가진다. 예를 들어, p=5(즉, m=2)에서 제3 소정 이진량(P1)은 영의 비트값(가드-비트 위치에 해당)으로 분리되는 연속적인 이진 스트링 (0, 1, 0, 1)을 포함하는데, 이것은 이진값으로 (0, 1, 0, 1)로 주어지는 2m+1=5 이기 때문이다. 단계 1409에 나타낸 연산의 결과는 제2 중간 이진 데이터(c2)라고 할 수 있고, 레지스터들(예를 들어, 레지스터 119) 중 하나에 저장된다. 단계 1409에서 프로세서는 제1 중간 이진 데이터(c1)과 제2 중간 이진 데이터(c2) 사이에서 덧셈을 실행하여, c로 표시되고 레지스터들(예를 들어, 레지스터 121) 중 하나에 저장될 수 있는, 제3 이진 데이터를 생성한다. 이러한 방법에 따라, 제3 이진 데이터(c)는 제1 필드 원소와 제2 필드 원소의 합을 표시한다.
도 3 및 14에 따른 알고리즘은 설명을 용이하게 하기 위해 특정한 일련의 단계의 관점으로 설명되었다. 그러나 상기한 것과 틀림없는 순서로, 도 3 및 14에 나타낸 단계를 실행할 필요는 없다. 본 기술 분야에서 통상의 지식을 가진 자라면 상기 단계의 순서는 변경될 수 있고 상기 단계들 중 일부는 동시에 실행될 수 있다는 것을 알 수 있을 것이다. 예를 들어, 도 3에 나타낸 단계 301 및 303은 동시에 실행될 수 있고, 도 4에 나타낸 단계 1403 및 1405는 동시에 실행될 수 있다.
여러 가지 연산이 실행되는 절차에 상관없이, 다음 관계식에 따라 c(제3 이진 데이터)의 양을 결정하는 것만이 필수적이다.
(36)
여기서, a는 제1 필드 원소를 표시하는 제1 이진 데이터이고, b는 제2 필드 원소를 표시하는 제2 이진 데이터이고, +는 덧셈을 표시하고, M1, M2 및 P1은 상기한 바와 같이 정의된다. 이 점에 있어서, 결과적인 양 c의 데이터 비트(cj)의 각 그룹이 Sp+의 원소인 값을 표시하고, 이러한 각 cj가 cj=(aj+bj) mod(p)(p의 단일 배수에 이르기까지)로 주어진다는 것을, 본 기술 분야에서 통상의 지식을 가진 자라면 알 수 있을 것이다. 여기서 상기 a 및 b의 양에 대한 첨자 j는 각 필드 원소의 관련 계수를 표시하는 데이터 비트의 해당 그룹을 가리킨다.
따라서, p=2m+1의 경우 GF(pk)에서 필드 원소의 덧셈은 6개의 단순 명령(p=2m-1에 대한 5개의 단순 명령과 비교)을 사용하여 실행될 수 있다. 식 36에서 덧셈량으로서 제2 항 (P1-(c'&M2)>>m))을 사용하는 것은, 원칙적으로 ((a+b) div 2m) modulo p의 양을 빼는 것과 같으므로, 식 36을 식 33과 일치하게 만든다. 그러나 p-q의 양의 덧셈으로서 q 양의 뺄셈을 실행하는 것은 장점이 있다. 특히, 종래의 방법으로 뺄셈이 실행되면, 즉 (P1-((a+b)&M2)>>m))을 더하는 것보다 ((a+b) div 2m)를 뺌으로써, 덧셈 캐리에 마주치지 않더라도 음의 “빌려오기(borrows)"와 마주칠 가능성이 있다. 반대로, 덧셈량 (P1-((a+b)&M2)>>m))을 사용함으로써, 그러한 음의 빌려오기를 피할 수 있다.
식 36에서 주어진 방법이 정확한 덧셈 결과를 생성하는 것을 증명하기 위해, aj 및 bj ∈ Sp+이면, 식 36에서 c 양의 어떤 cj가 0≤cj≤2m-1+p=2p-2를 만족한다는 것(0≤(aj+bj) div 2m≤4<p 이므로)을 알게 된다. 따라서 식 36에서 양 c의 각 cj는 요구되는 바와 같이 Sp의 원소이다. 상기한 바와 같이, 식 36에서의 약분은 p의 배수인 cj로부터 ((cj div 2m)-1)p를 뺀다. 따라서 각 cj는 집합 Sp+에 실제로 있고, 이와 같이, p의 (단일) 배수에 이르기까지, (aj+bj) mod p 의 나머지와 같다.
상기한 바와 같이, 본 발명에 따른 다중-가드-비트 표기법에서의 p=2m+1에 대한 GF(pk)의 두 필드 원소의 덧셈(GF_p_k_ADD) 처리는 실질적으로 단일-가드-비트 표기법과 동일하다. 제1 및 제2 필드 원소를 각각 표시하는 제1 및 제2 이진 데이터는, 각 필드 원소의 계수를 표시하는 데이터 비트의 인접 그룹 사이에 위치한 다중 가드 비트와 함께 저장된다는 것에만 유의할 필요가 있다. 또한, M1, M2 및 P1의 양들을 결정하는 상기 주어진 규정(prescriptions)들은 다중-가드-비트 표기법에 대해 수정이 필요 없다. 물론, 그러한 규정을 다중-가드-비트 표기법에 적용하는 것은, 단일-가드-비트 표기법에 대해 발생되는 것과는 서로 다른 값의 M1, M2 및 P1의 양을 생성할 것이다.
(실시예 2)
p=2m+1에 대해 도 14에 나타낸 방법을 예시하는 수치적인 일례에 대해 도 15를 참조하여 설명한다. 도 15는 단일-가드-비트 표기법에 따라 전형적인 레지스터 콘텐츠가 저장되어 있는 레지스터들(1501-1521)의 집합을 개략적으로 나타낸다. 각 레지스터(1501-1521)은 32-비트 구조에 따라 이 실시예에서 32 비트 위치를 포함한다. 이러한 특정 예에서,GF(56)의 필드 원소를 표시하는 이진 데이터를 사용하여 계산이 실행되고, 여기서 p=2m+1=5이고 m=2이다. 따라서 m+2=4 비트가 필드 원소(가드 비트를 포함하지 않음)의 각 계수에 대해 할당되고, 인접 4-비트 그룹은 단일 가드-비트 위치(연한 음영 영역)에 의해 분리된다. 또한, 이 예에서는 각 레지스터의 최상위 비트에서 두 개의 사용하지 않는 비트 위치(짙은 음영 영역)가 있다. 예를 들어, 도 1에 나타낸 처리 시스템(100)과 같은 처리 시스템을 사용하여, 아래 설명하는 계산이 실행된다.
이 예에서, 주어진 필드 원소의 각 계수는 필드 GF(5)의 원소 그 자체이다. GF(5)에서의 계수 값은 다음 결합에 따른 이진 데이터에 대응한다. 즉, 0~(0,0,0,0); 1~(0,0,0,1); 2~(0,0,1,0); 3~(0,0,1,1); 4~(0,1,0,0). 또한, 다음 덧셈 결합을 갖는 이중 표기법이 있는데, 여기서 GF(p)에서 2 개의 서로 다른 수가 동일 값으로 표시된다. 즉, 0에 대응하는 5~(0,1,0,1); 1에 대응하는 6~(0,1,1,0); 2에 대응하는 7~(0,1,1,1); 3에 대응하는 8~(1,0,0,0) 이다.
시작으로서, (0,3,1,6,3,0)과 같이 벡터 표시로 주어진 제1 필드 원소를 표시하는 제1 이진 데이터가 제1 레지스터(1501)에 저장된다. 또한, (0,7,1,4,4,0)과 같이 벡터 표시로 주어진 제2 필드 원소를 표시하는 제2 이진 데이터가 제2 레지스터(1503)에 저장된다. 레지스터(1501 및 1503)에서의 각 가드-비트 위치는 초기에 영 값으로 할당된다. 레지스터(1501 및 1503)의 콘텐츠는 덧셈을 통해 더해지고 그 결과 (a+b)는 레지스터(1505)에 저장된다(도 14의 단계 1401에 해당). 레지스터(1505)의 콘텐츠 (a+b)는 논리 AND 연산을 통해 레지스터(1507)에 저장된 제1 이진량(M1)과 결합되고, 그 결과 ((a+b)&M1)는 레지스터(1509)에 저장된다(도 14의 단계 1403에 해당). 이 예에서, 이진값으로 (0,0,1,1)로 주어지는, 2m-1=3 이므로, 제1 소정 이진량(M1)은 영의 비트 값(가드-비트 위치에 해당)에 의해 분리되는 연속적인 이진 스트링 (0,0,1,1)을 포함한다.
이 때, 제2 소정 이진량 M2=NOT(M1)이 형성되어 레지스터(1511)에 저장되고, 레지스터(1511)의 콘텐츠(M2)는 논리 AND 연산을 통해 레지스터(1505)의 콘텐츠 (a+b)와 결합되고, 그 결과인 (c1=((a+b)&M2))는 레지스터(1513)에 저장된다(도 14에서의 단계 1405에 해당). 제2 소정 이진량(P1)은 레지스터(1515)에 저장되고, 여기서 P1은 각각이 영의 비트 값(가드-비트 위치에 해당)에 의해 분리되는, 인접 4-비트 그룹에 위치한 2m+1 양의 반복된 이진 등가(repeated binary equivalent)를 표시한다. 이 예에서, 이진값으로 (0,1,0,1)로 주어지는, 2m+1=5 이므로, 제3 소정 이진량(P1)은 영의 비트 값(가드-비트 위치에 해당)에 의해 분리되는 연속적인 이진 스트링 (0,1,0,1)을 포함한다. 레지스터(1513)의 콘텐츠 ((a+b)&M2)는 m비트(즉 2비트)만큼 우측 시프트 되고, 그 결과인 (((a+b)&M2)>>2)는 레지스터(1517)에 저장된다(도 14에서의 단계 1405에 해당). 레지스터(1515)의 콘텐츠(P1)로부터 레지스터(1517)의 콘텐츠 (((a+b)&M2)>>2)를 빼서, 그 결과인 (c2=P1-(((a+b)&M2)>>2))는 레지스터(1519)에 저장된다(도 14에서의 단계 1407에 해당). 마지막으로, 레지스터(1509)의 콘텐츠(c)는 덧셈을 사용하여 레지스터(1519)의 콘텐츠(c2)에 더해지고, 그 결과인 제3 이진 데이터(c=c1+c2)는 레지스터(1521)에 저장된다. 레지스터(1521)에 저장된 결과적인 제3 이진 데이터는, (5,5,7,5,7,5)와 같이 벡터 표시로 주어진 필드 원소에 대응하고, 이것은 기대한 결과이다. 필요에 따라, 이러한 결과는, 예를 들어 결과 (0,0,2,0,2,0)을 제공하는, 출력 연산에 앞서 modulo 5(이 예에서 mod(p)임)로 감소될 수 있다. 이것으로 실시예 2의 논의를 완료한다.
p=2m+1의 경우 홀표수 유한 필드의 필드 원소를 포함하는 계산과 관계된 본 발명의 다른 양태에서, 도 14에 나타낸 GF_p_k_ADD의 전형적인 형태에 대한 연산을 실행하는 하드웨어 장치가 제공될 수 있다. 도 16은 이러한 전형적인 하드웨어 장치의 기능적 블록도이다. 특히, 도 16에 나타낸 장치(1600)는, 도 14 및 16에서 c로 표시하고 GF(pk)의 제1 필드 원소 및 제2 필드 원소의 합을 표시할 수 있는 제3 이진 데이터를 발생하는 다른 방법을 제공한다.
상기 장치(1600)은 단일-가드-비트 표기법 및 다중-가드-비트 표기법 둘 다에 적용할 수 있다.
도 16의 기능적 블록도에 나타낸 상기 하드웨어 장치(1600)는, 여러 가지 공통적인 특징과 연산 형태를 도 6에 나타낸 장치(600)와 공유하며, 도 6 및 도 16에서 동일한 특징은 동일한 참조 번호를 부여한다. 상기 장치 600과 공통되는 상기 장치 1600의 양태에 대한 논의는 여기서 중복하지 않을 것이다. 상기 장치 600과는 다른 상기 장치 1600의 양태에 대해 논의할 것이다.
상기 장치 1600은 상기 장치 600에서는 찾아볼 수 없는 몇 가지 특징을 가지고 있다. 특히, 상기 장치(1600)는, 제3 소정 이진량(P1)을 유지하는 추가적인 레지스터(1625)와, 상기 레지스터(1625)의 콘텐츠(P1)에서 우측-시프트 레지스터(1619)로부터의 출력을 빼는 감산 게이트(1627)를 가지고 있다.
감산 게이트(1627)로부터의 출력은 지시한 바와 같이 레지스터(1603)로 피드백(feed back) 된다. 반대로, 도 6에 도시한 바와 같이, 상기 장치(600)는 레지스터 1625와 유사한 레지스터를 가지고 있지 않으며, 감산 게이트 1627과 유사한 감산 게이트를 가지고 있지 않다. 오히려, 도 6에 도시한 장치(600)에 대해서, 우측-시프트 게이트(619)로부터의 출력은 도시한 레지스터(603)로 직접 들어간다. 도 16B에 도시한 방식으로 레지스터(1625) 및 감산 게이트(1627)를 제공함으로써, 상기 장치(1600)는 도 14에 도시한 단계 1407에 해당하는 방식으로 데이터를 처리할 수 있게 한다. 다른 점에서, 상기 장치(1600)는 도 6에 도시한 상기 장치(600)와 같이 동작하고, 도 1600에서의 양태와 같은 추가적인 논의는 필요하지 않다.
상기한 바와 같이 상기 장치(1600)에서는, 제1 레지스터(1601) 및 프로세서(도시하지 않음)가 도 6과 관련하여 설명한 바와 같이 제1 이진 데이터를 저장하는 수단으로 볼 수 있다. 제2 레지스터(1603) 및 프로세서(도시하지 않음)는 제2 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 레지스터(1621) 및/또한 레지스터(1609)는 제3 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 클럭/논리 소자(1605)와 도 16에 도시한 어떤 또는 모든 나머지 소자들은 제1 이진 데이터 및 제2 이진 데이터에 대해 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다.
본 발명의 다른 전형적인 양태에서, p=2m+1에 대해 사용하는 덧셈 장치(1600)는, 유한 필드 GF(pk)에 전용으로 선택되고 변경되지 않게 유지되는 상태를 위해, 도 17의 블록도에 도시한 하드웨어 장치(1700)에 대해 나타낸 바와 같이 수정될 수 있다. 즉, 단일-가드-비트 표기법인지 다중-가드-비트 표기법인지의 선택뿐만 아니라, m, p 및 k의 양도 고정되고, 상기 하드웨어 장치(1700)는 이러한 선택에 대해 전용으로 된다. 이러한 상태에서, 상기 하드웨어 장치(1700)는 필드 원소를 표시하는 초기 이진 데이터를 수신할 수 있고 여기서 초기 이진 데이터는 가드-비트 위치에서 영을 갖도록 구성되지 않는다. 오히려, 상기 하드웨어 장치(1700) 자체는, 가드-비트 위치에서 영을 갖는 제1 및 제2 이진 데이터를 구성하기 위해, 적절한 가드-비트 위치에서 영을 갖는 초기 이진 데이터를 구성하여 프로세서가 필요 없이 제1 및 제2 이진 데이터를 발생한다. 도 17에 도시한 하드웨어 장치(1700)에 대해 설명한다.
도 17의 기능적 블록도에 도시한 상기 하드웨어 장치(1700)는, 여러 가지 공통적인 특징과 연산 형태를 도 16에 도시한 장치(600)와 공유하며, 도 16 및 도 17에서 동일한 특징은 동일한 참조 번호를 부여한다. 상기 장치 1600과 공통되는 상기 장치 1700의 양태에 대한 논의는 여기서 중복하지 않을 것이다. 오히려, 상기 장치 1600과는 다른 상기 장치 1700의 양태에 대해 논의할 것이다.
상기 장치 1700은 상기 장치 1600에서 찾아볼 수 없는 몇 가지 특징을 가지고 있다. 특히, 상기 장치(1700)는 가드-비트-삽입 회로(1701' 및 1703)(GB 삽입)과 가드-비트-제거 회로(1709')(GB 제거)를 가지고 있다. 가드-비트-삽입 및 가드-비트-제거 회로(1701', 1703' 및 1709')는, 예를 들어 이미 설명한 도 8A 및 8B의 예에서 나타낸 것과 유사한 회로를 사용하여 실행할 수 있다. 도 17에 나타낸 바와 같이, 가드-비트-삽입 회로(1701' 및 1703')는 하드웨어 장치(1700)에 대한 입력에 기능적으로 설치되고, 가드-비트-제거 회로(1709')는 레지스터(1709) 및 출력 레지스터(1721) 사이에 기능적으로 배치된다. 가드-비트-삽입 회로(1701' 및 1703')는 GF(pk)의 제1 및 제2 필드 원소에 해당하는 초기 이진 데이터 a' 및 b'(가드 비트 포함하지 않음)를 수신하고, 적절한 가드 비트를 그 데이터에 삽입하도록 동작한다. 다시 말해, 가드-비트-삽입 회로(1701' 및 1703')는 초기 이진 데이터 a' 및 b'를, 가드 비트를 갖는, 특히 가드-비트 위치에서 영을 갖는, 제1 이진 데이터 및 제2 이진 데이터로 변환한다. 가드-비트-제거 회로(1709')는 반대 기능, 즉 계산 결과를 표시하고 가드 비트를 갖는 제3 이진 데이터 c를 수신하고, 이러한 가드 비트를 제거하는 기능을 가지며, 따라서 가드 비트 없이, 계산 결과를 표시하는 최종 이진 데이터 c'를 형성한다.
상기 장치 1700에서는 필요 없는, 장치 1600에 있는 특정한 특징이 장치 1700에서는 빠져 있다. 특히, 상기 장치(1700)는 m의 양에 대한 우측-시프트 게이트(1719) 및 마스크 레지스터(1713)으로의 입력 라인이 빠져 있다. 이러한 입력 라인은 m이 고정된 경우에는 불필요하다. 오히려, 우측-시프트 게이트(1719)는 m 값으로 한번에 초기화 되어 적절한 우측 시프트를 실행한다. 마찬가지로, 마스크 레지스터(1713) 및 레지스터(1725)는, 단일-가드-비트 표기법이 사용되었는지 다중-가드-비트 표기법이 사용되었는지에 따라 M1 및 P1의 적절한 형태로 한번에 초기화 된다. 종래의 전기 접속은 이러한 초기화를 실행하기 위해 사용될 수 있고 도 17에는 나타내지 않았다. 상기한 동작적인 구별과는 다른 관점에서, 도 17에 도시한 장치(1700)의 동작은 도 16에 도시한 장치(1600)에 대한 설명과 거의 유사하므로, 더 이상의 논의는 필요 없다.
상기한 장치(1700)에서, 제1 레지스터(1701) 및 가드-비트 삽입 회로(1701')는 제1 이진 데이터를 저장하는 수단으로 볼 수 있다. 제2 이진 레지스터(1703) 및 가드 비트 삽입 회로(1703')은 제2 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 레지스터(1709)는 제3 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 클럭/논리 소자(1705) 및 도 7에 도시한 어떤 또는 모든 나머지 소자들은 제1 이진 데이터 및 제2 이진 데이터에 대해 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다.
p=2m+1의 경우 GF(pk)에서 필드 원소의 곱셈은, 단일-가드-비트 표기법 및 다중-가드-비트 표기법 둘 다에 대해서 p=2m-1에 대한 도 9-12를 참조하여 앞서 설명한 GF_p_k_MUL의 전형적인 형태를 사용하여 실행할 수 있다. p=2m-1의 경우에 대한 m 비트에 반대로, p=2m+1에 대한 GF(pk)의 필드 원소의 계수를 표시하는 데이터 비트의 각 그룹을 저장하도록 m+2 비트(가드 비트를 포함하지 않음)가 할당되는 것만을 알아야 할 필요가 있다. 물론, 이러한 차이는 DLOG 및 ANTILOG 테이블의 형태에도 적용할 수 있어야 한다. 압축 함수(COMP) 및 압축해제 함수(DECOMP)가 다중-가드-비트 표기법을 사용하는 경우, 이러한 함수는 m 비트보다 m+2 비트를 필드 원소를 표시하는 데이터 비트의 각 그룹에 저장하도록 할당된다는 것도 고려해야 한다.
p=2m± d의 경우 GF(pk)에서 덧셈 및 곱셈
본 발명의 다른 양태에서, p=2m-1 및 p=2m+1에 대한 GF(pk)에서의 계산을 실행하는 상기한 처리는 p=2m± d 형태의 p로 확장될 수 있다. 여기서, d>1이고 d는 홀수라고 가정한다. 또한 m 및 d는 결과인 p가 홀소수가 되도록 선택한다. 주어진 소수를 m 및 d의 서로 다른 선택에 대해 p=2m-1 및 p=2m+1 둘 다로서 쓸 수 있는 경우, d의 최소값을 허용하는 형태를 사용하는 것이 바람직하다. 예를 들어, p=11을 p=23+3(m=3, d=3) 및 p=24-5(m=4, d=5) 둘 다로서 쓸 수 있다. m=3 및 d=3에서 p=23+3을 선택하여 사용하는 것이 바람직하다. GF(pk)에서 덧셈 및 곱셈을 실행하는 방법, 즉 p=2m± d에 대해GF_p_k_ADD 및 GF_p_k_MUL을 실행하는 방법을 설명한다.
p=2m± d의 경우에, GF(pk)의 필드 원소를 표시하는 이진 데이터는, p=2m-d에 대해, 필드 원소의 계수를 표시하는 데이터 비트의 각 그룹에 대해 m+1 비트(가드비트를 포함하지 않음)를 할당하는 것과, p=2m+d에 대해, 필드 원소의 계수를 표시하는 데이터 비트의 각 그룹에 대해 m+2 비트(가드 비트를 포함하지 않음)를 할당하는 것을 제외하고, 앞서 설명한 바와 같이, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나에 따라 하드웨어 레지스터에 저장될 수 있다. 예를 들어, p=2m-1에 대한 단일-가드-비트 표기법에서, GF(pk)의 제1 필드 원소 αi를 표시하는 제1 이진 데이터는 다음과 같이 저장될 수 있다. 여기서, 제1 이진 데이터는 제1 데이터 비트의 k 그룹을 포함한다. (m+2)k를 최대한의 하드웨어 워드 크기(레지스터 크기)로 가정한다. αi를 GF(pk)의 제1 필드 원소로 두며, 여기서 αi=(αk-1,i, ..., α0,i)이고 각 αj,i는 Sp(아래에서 설명하는 바와 같이, p의 형태에 따라 특정한 Sp-d 또는 Sp+d로 됨)에 속한다. α0,i를 표시하는 제1 데이터 비트의 그룹은 비트 위치 0, 1, ... m로 제1 레지스터에 저장된다. 영 값을 갖는 제1 가드 비트는 비트 위치 m+1(가드-비트 위치)로 제1 레지스터에 저장된다. α1,i를 표시하는 제1 데이터 비트의 다른 그룹은 비트 위치 m+2, ... 2m+2 등으로 제1 레지스터에 저장된다. 따라서 v=1, 2, ...에서 모든 비트 위치 v(m+2)-1에, 즉 모든 연속적인 (m+1)번째 비트 위치에, 하나의 제1 가드 비트가 있다. 다시 말해, 제1 데이터 비트의 각 그룹의 최상위 비트에 인접한 위치에 하나의 제1 가드 비트가 있다. GF(pk)의 제2 필드 원소를 표시하는 제2 데이터 비트의 k 그룹을 포함하는 제2 이진 데이터는, 제2 데이터 비트의 각 그룹의 최상위 비트에 인접한 하나의 제2 가드 비트와 함께 제2 레지스터에 마찬가지로 저장될 수 있다. (여기서, “제1” 및 “제2”는 단순히 제1 필드 원소와 제2 필드 원소에 각각 대응하는 속성을 구분하기 위해 사용된다.) 이러한 방식으로 GF(pk)의 제1 및 제2 필드 원소를 표시하는 이진 데이터를 제1 및 제2 하드웨어 레지스터에 저장함으로써, 필드 계수를 표시하는 데이터 비트의 한 그룹으로부터 다른 필드 계수를 표시하는 데이터 비트의 인접 그룹으로 캐리가 전달되지 않을 것이다. 다중-가드-비트 표기법에 따라 필드 원소를 표시하는 이진 데이터를 저장하는 방법은, 필드 계수를 표시하는 데이터 비트의 인접 그룹 사이에 하나 이상의 가드-비트 위치가 제공된다는 차이만 있을 뿐, 전적으로 유사하다.
p=2m-1인 경우 GF(pk)에서의 덧셈(즉, GF_p_k_ADD의 실행)에 대해 도 18 및 19를 참조하여 설명한다. p=2m-d인 경우는 p=2m-1에 대한 방법을 확장하여 처리할 수 있다. d>1 및 d는 홀수라고 가정한다. 명백하게 1<d<2m-1로 가정할 수 있는데, 그 외의 p가 5보다 정확하게 작게 되기 때문이다. 덧셈을 실행하는 2가지 전형적인 방법(GF_p_k_ADD를 실행하는 2가지 전형적인 형태)이 d 값의 두 상황(regimes), 즉 1) d≤(2m+1)/3, 및 2) (2m+1)/3<d<2m-1에 따라 사용될 수 있다.
먼저, p=2m-d의 경우에 대해 d≤(2m+1)/3에서 GF_p_k_ADD를 실행하는 전형적인 방법(1800)을 도 18을 참조하여 설명한다. 이러한 설명은 단일-가드-비트 표기법 및 다중-가드-비트 표기법 모두에 적용할 수 있다. 집합 Sp-d를 0, 1, ..., 2m+d-1로 두고, GF(pk)의 필드 계수 각각을 집합 Sp-d의 원소로 둔다. 물론, Sp-d에서 언급한 각 정수는, 앞서 설명한 바와 같이, 필드 원소의 해당 계수를 저장하기 위해 사용되는 등가 이진 스트링을 갖는다. 도 18에 나타낸 연산은 도 1에 나타낸 시스템(100)과 같은 시스템에 의해 실행할 수 있다. 또한, 도 3에 나타낸 단계 301 및 303은, 앞서 설명한 것과 같은 방식으로, GF(pk)의 제1 필드 원소를 표시하는 제1 이진 데이터가 제1 레지스터(예를 들어 도 1의 레지스터 107)에 저장되고 제2 필드 원소를 표시하는 제2 이진 데이터가 제2 레지스터(예를 들어, 레지스터 109)에 저장되도록, 프로세서(105)에 의해 이미 실행되었다고 가정한다. 제1 및 제2 이진 데이터는 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나에 따라 저장될 수 있다. 즉 상기 방법은 어느 경우에나 동일하다. 도 18에 도시한 단계는 도 3에 나타낸 단계 305의 전형적인 실현을 표시한다.
단계 1801, 1803 및 1807은 p=2m-1의 경우 도 4에 나타낸 단계 401, 403 및 407과 동일하다. 또한, 도 18에 도시한 방법에 대한 소정 이진량(M1 및 M2)을 결정하는 처리도 도 4에 대한 것과 동일하다. 물론, M1 및 M2의 정확한 형태는, 앞서 설명한 바와 같이, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 어느 것이 사용되었는가에 따른다. 또한, m 비트가 각 계수를 표시하기 위해 사용되는 p=2m-1의 경우와 달리, m+1 비트가 p=2m-1에 대해 각 계수를 표시하도록 사용된다. 따라서 마스크 M1 및 M2는 p=2m-1의 경우와 비교한 이러한 고려의 관점에서 수정된다. 그러나 영/비-영 비트가 가드/비-가드 비트 위치에 상대적으로 위치하는 관점에서 이러한 양에 대한 정의(처리(prescription))는 p의 각 함수 형태에 대해 동일하다. 이러한 차이는 설명되었으므로, 단계 1801, 1803 및 1807에서 더 이상의 설명은 필요 없다.
단계 1805에서 c2량이 ((a+b)&M2)>>m 대신에 c2=d*((a+b)&M2)>>m으로 주어지는 것을 제외하고, 단계 1805는 도 4에 나타낸 단계 405와 유사하다. 즉, 단계 1805에서 c2량은 도 4에 나타낸 단계 405에서 존재하지 않는 "d"의 곱셈 인수이다. d에 의한 곱셈 *은 공지의 프로세서로 통상 실행되는 곱셈이다(예를 들어 정규 정수 곱셈 또는 부동-소수점 곱셈). d량을 표시하는 이진 데이터는 다른 곳에 영을 갖는 레지스터의 최우측 비트 위치에 저장된다. 다시 말해, d를 필드 원소와 관련된 데이터 비트의 그룹에 대응하는 계수를 갖는 벡터량으로 보면, 상기 벡터량은 (0,0,0,...,d)로 될 것이다. 따라서 도 18에 도시한 방법(1800)을 실행하는 것은, GF(pk)의 제1 및 제2 필드 원소의 합을 표시하는 제3 이진 데이터 c를 제공한다.
물론, 도 18에 나타낸 연산을 실행하는 순서는, 앞서 설명한 바와 같이, 도 18에 도시한 순서로부터 바꿀 수 있다. c량이 다음 관계식에 따라 결정되는 한, 다른 순서가 사용될 수 있다.
(37)
여기서, a, b, c, M1 및 M2는 상기한 바와 같다. 식 37은 d=1의 경우에 대해 식 13으로 감소된다.
집합 Sp-d가 식 37에 나타낸 연산(모듈러 약분에 따른 덧셈) 하에서 닫힌 상태임을 알 수 있다. 여기서 a 및 b 각각은 데이터 비트 aj 및 bj의 k 그룹을 각각 포함하고, j=0, ..., k-1이고, 각 aj 및 bj는 상기한 Sp-d=0, 1, ...., 2m+d-1의 원소에 대응하는 데이터 비트의 그룹을 표시한다. 이 때, GF(pk)의 제1 및 제2 필드 원소의 개별적인 계수 각각과 관련하여, aj+bj≤2m+1+2d-2 임을 알 수 있다(이 식은 aj+bj에 의해 표시되는 정수 값의 비교를 반영하기 위한 것임). h(x)=(x mod 2m)+d(x div 2m)(상기 식 43에 해당)d 의해 정의되는 함수는 t2m, (t+1)2m-1 형태의 각 간격으로 국부적으로 단조 증가하는 “톱니파(sawtooth)” 함수이다. 또한, y<2m 및 z<z'(여기서 z 및 z'은 양의 정수)에 대해, h(z2m+y)<h(z'2m+y) 이다. 0≤(aj+bj)≤2m+1+2d-2에 대해, (aj+bj)div 2m)≤2이다( 이 식은 aj+bj에 의해 표시되는 정수값의 비교를 반영하기 위한 것이다). 따라서, h(aj+bj)≤2m+d-1 를 구하는 것은, 상기한 간격에서 모든 aj+bj에 대해, h(2m+1-1)(어떤 “톱니파”의 최고 “피크”) 와 h(2m+1+2d-2)(h로의 가능한 최대 입력에 대한 것임)가 둘 다 2m+d-1에 의해 상기로부터 제한되는 것을 구하는 것으로 충분하다. 이러한 두 점에서의 h를 평가하는 것은 상기 제한 d≤2m+1/3에 의해 h(2m+1-1)= 2m+d-1과 h(2m+1+2d-2)=4d-2≤2m+d-1을 준다. 따라서 Sp-4는 식 36에 대해 닫힌 상태로 된다. 이상으로 도 18을 참조한 d≤2m+1/3 및 p=2m-d의 경우에 대한 논의는 완료된다.
p=2m-d의 경우에 (2m+1)/3<d≤2m-1에서 GF_p_k_ADD를 실행하는 전형적인 장치(1900)에 대해 도 19를 참조하여 설명한다. 이러한 설명은 단일-가드-비트 표기법 및 다중-가드-비트 표기법 모두에 적용할 수 있다. d가 (2m+1)/3<d≤2m-1로 주어진 범위에 있을 때, 상기 약분 연산 하에서 닫혀 있는 합당한 크기의 집합 Sp를 찾는 것은 어려울 수 있다. 이 점에 있어서, 합당한 크기(resonable size)라는 것은, 도 18에 설명한 방법을 사용하여 원하는 정도의 병렬화(parallelization) 및 계산 효율을 달성할 수 있도록, GF(pk)의 필드 원소의 적어도 두 필드 계수가 단일 하드웨어 레지스터에 표시될 수 있거나 GF(pk)의 필드 원소의 충분한 수의 계수가 단일 하드웨어 레지스터에 표시될 수 있을 만큼, 집합 Sp가 충분히 작다는 것을 의미한다. 합당한 크기의 이러한 집합 Sp를 찾을 수 있는 경우, d가 (2m+1)/3<d≤2m-1로 주어질 때 도 18에 도시한 방법도 사용할 수 있다.
합당한 크기의 집합 Sp가 (2m+1)/3<d≤2m-1로 주어진 d에 대해 이용할 수 없을 경우, 도 19에 도시한 GF_p_k_ADD에 대한 전형적인 방법을 GF(pk)에서의 덧셈을 실행하는 데 사용할 수 있다. 이러한 상황에서, 집합 Sp는 간단히 Sp=0, 1, ...,2m-1로 주어지는 집합으로 둔다(즉 독립적인 d). GF(pk)에서의 덧셈은 도 19에 반영된 바와 같은 약간 수정된 모듈러 약분 알고리즘에 따라 실행된다. 특히, 편의를 위해 c=a+b로서 단계 1901을 쓰고, 표기 "c"는 단계 1903 및 1905에서 이용되고, c량의 재할당이 단계 1907에서 발생되는 것을 제외하고, 도 19에 나타낸 단계 1901, 1903, 1905 및 1907은 도 18에 나타낸 단계 1801, 1803, 1805 및 1807과 각각 동일하다. 또한, 도 19에 나타낸 M1 및 M2를 결정하는 처리는 도 18에 나타낸 것과 동일하다(물론, M1 및 M2의 형태는 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 어느 것이 사용되었는가에 따름). 따라서 단계 1901, 1903, 1905 및 1907에 대한 더 이상의 논의는 필요 없다.
도 19에 도시한 방법 1900은 단계 1909와 관련하여 도 18에 도시한 방법 1800과 비교하여 수정된다. 단계 1909는 정수값을 표시하는 (결과 c의) 어떤 cj가 2m 보다 크거나 같은지를 결정하는 판정 단계이다. 답이 “예”일 경우, 현재의 c를 사용하여 단계 1903, 1905 및 1907을 반복한다. 다시 말해, 도 19에 도시한 방법(1900)은 식 38 및 39로 주어진 연산을 실행한다.
(38), (39)
여기서 cj≥2m은 정수값을 표시하는 데이터 비트의 그룹 cj가 2m 보다 큰 지를 결정하는 것에 대한 약칭임을 알 수 있다. 따라서 상기 식 38 및 39에 반영한 바와 같이, 모듈러 약분은 각 cj<2m이 될 때까지 실행되고, 이것은 결과 c의 각 cj는 집합 Sp에 있다는 것을 보장한다. 따라서, 상기 방법은 효과면에서 GF(pk)의 필드 원소의 각 계수로부터 다수의 p의 배수를 빼는 것을 포함한다. 여기서 각 계수는 집합 Sp의 원소이다. p<2m 및 c>0 이므로, 결과 c의 각 cj는, p의 배수에 이르기까지, (aj+bj) mod p의 실제로 정확한 표기이다. 물론, 모듈러 약분은 더 많은 시간이 걸릴 수 있고, 상기 식 39에 의해 표시되는 약분이 얼마나 많이 실행되는가 하는 한 가지 문제가 있다. 상기한 방법 하에서, 상기 약분은 최대 두 번 실행됨을 알 수 있다. 특히, 식 38에서 cj가 적어도 cj≥2m 이 된다고 가정한다(다른 경우는 볼 것이 없음). aj 및 bj 가 Sp의 원소인 계수를 표시하므로, cj≥2m+1-2은 참이 된다. 식 39에서 상기 약분에 대한 각각의 실행은 p의 배수를 빼는 것, 즉 t-p이다. 여기서 t≥1이다. 이 때, cj-2p≤2m+1-2-(2m-d)=2d-2<2m이므로, 최대한 2개의 모듈러 약분이 필요하다는 것을 알 수 있다.
식 39에서 cj≥2m 인지를 어떻게 결정하는지를 보여주는 것이 남아 있다. 이러한 검사는 다음과 같이 병렬로 모든 cj에 대해 실행할 수 있다. c=(ck-1, ..., c0)가 식 39에서의 약분에 따른 이진 결과를 유지한다고 가정한다. 식 39에서의 상기 약분은, cj≥2m이 되도록 0≤j≤k-1인 j가 있다면, 다시 실행할 필요가 있다. 상기 정의된 소정 이진량(마스크량)과 같은 M2로써, 검사 (cj&M2)≠0를 실행하는 것은 cj 중 적어도 하나가 cj≥2m를 만족하는 경우에만 참이 된다. 일부의 다른 cj<2m이 있더라도, 상기 약분은 그 성분에 대한 아무런 영향을 주지 않기 때문에(cj div 2m=0이고 거기서 빼는 p의 배수가 없기 때문), 그러한 성분에 대한 약분을 실행하는 것은 아무런 지장이 없다. 이것으로 도 19를 참조한 (2m+1)/3<d≤2m-1 및 p=2m-d 경우에 대한 논의를 완료한다.
p=2m+d인 경우에 대한 GF(pk)에서의 덧셈(즉, GF_p_k_ADD의 실행)에 대하여 도 20 및 21을 참조하여 설명한다. p=2m+d인 경우는 p=2m+1에 대한 방법을 확장하여 처리할 수 있다. d>1이고 d는 홀수라고 가정한다. 덧셈을 실행하는 2개의 전형적인 방법(GF_p_k_ADD를 실행하는 두 개의 전형적인 형태)이 다음 d 값에 대한 두 개의 상황, 즉 1) d≤p/6과 2) p/6<d<2m-1 에 따라 사용될 수 있다(d≥p=2m-1의 경우는 p=2m± d'으로 p를 단순히 재기입하여, 앞서 설명한 방법에 의해 처리할 수 있다. 여기서 m' 및 d'은 적절히 선택된다.)
먼저, p=2m +d의 경우 d≤p/6에서 GF_p_k_ADD를 실행하는 전형적인 방법(200)을 도 20을 참조하여 설명한다. 이러한 설명은 단일-가드-비트 표기법 및 다중-가드-비트 표기법 모두에 적용할 수 있다. 여기서, 집합 Sp+d는 0, 1, ..., 2p-(d+1)로 주어지고, GF(pk)의 필드 원소의 각 계수는, 가드 비트를 포함하지 않는, 각 계수에 대해 요구되는 저장 비트가 m+2인, 집합 Sp+d의 원소이다. 도 18에 나타낸 연산은 도 1에 나타낸 시스템(100)과 같은 시스템에 의해 실행될 수 있다. 또한, 도 3에 나타낸 단계 301 및 303은, 앞서 설명한 것과 같은 방식으로, GF(pk)의 제1 필드 원소를 표시하는 제1 이진 데이터가 제1 레지스터(예를 들어 도 1의 레지스터 107)에 저장되고 제2 필드 원소를 표시하는 제2 이진 데이터가 제2 레지스터(예를 들어, 레지스터 109)에 저장되도록, 프로세서(105)에 의해 이미 실행되었다고 가정한다. 제1 및 제2 이진 데이터는 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나에 따라 저장될 수 있다. 즉 상기 방법은 어느 경우에나 동일하다. 도 20에 도시한 단계는 도 3에 나타낸 단계 305의 전형적인 실현을 표시한다.
단계 2001, 2003, 2005 및 2009는 p=2m+1의 경우 도 14에 나타낸 단계 1401, 1403, 1405 및 1409과 동일하다. 또한, 소정 이진량(M1 및 M2)을 결정하는 처리도 도 20에 대한 것과 도 4에 대한 것이 동일하다( 물론, M1 및 M2의 정확한 형태는, 앞서 설명한 바와 같이, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 어느 것이 사용되었는가에 따른다.) 상기한 바와 같이, 가드 비트를 포함하지 않는, 필드 원소의 각 계수를 저장하기 위해 m+2 비트가 할당된다. 따라서, 이러한 단계에 대한 더 이상의 논의는 필요 없다. 단계 2007에서 c2량이 P1-((a+b)&M2)>>m 대신에 c2=P1-d*((a+b)&M2)>>m으로 주어지는 것을 제외하고, 단계 2007은 도 14에 나타낸 단계 1407과 유사하다. 여기서 *는 상기한 곱셈이다(예를 들어 정규 정수 곱셈 또는 부동-소수점 곱셈). 즉, 단계 2007에서의 c2량은 도 14에 나타낸 단계 1407에는 없는 "d"의 곱셈 인수를 가진다. 또한 도 20의 단계 2007에서 P1은, 도 14의 단계 1407과 같이, 2m+1보다 2m+d를 표시하는 이진 값을 포함한다. 따라서 도 20에 도시한 방법(2000)을 실행하는 것은 GF(pk)의 제1 및 제2 필드 원소의 합을 표시하는 제3 이진 데이터 c를 제공한다.
물론, 도 20에 나타낸 연산을 실행하는 순서는, 앞서 설명한 바와 같이, 도 18에 도시한 순서로부터 바꿀 수 있다. c량이 아래의 식 40에 나타낸 바와 같이 결정되는 한, 다른 방법이 사용될 수 있다. 여기서 a, b, c, M1, M2 및 P1은 도 14에서 이미 설명한 바와 같다.
(40)
이것은 d=1의 경우에 대해 식 36으로 감소된다. 이것으로 도 20을 참조한 d≤p/6 및 p=2m+d의 경우에 대한 논의는 완료된다. 본 기술 분야에서 통상의 지식을 가진 자라면, 상기한 바와 같이, p=2m-d, d>1의 경우와 유사한 방법을 사용하여 상기한 약분에 대해 Sp+d가 실제 닫히는 것을 증명할 수 있을 것이다.
p=2m+d의 경우에 p/6<d≤2m-1에서 GF_p_k_ADD를 실행하는 전형적인 장치(2100)에 대해 도 21를 참조하여 설명한다. 이러한 설명은 단일-가드-비트 표기법 및 다중-가드-비트 표기법 모두에 적용할 수 있다. p=2m-d인 경우에 대해 설명한 바와 같이, d가 p/6<d≤2m-1로 주어진 범위에 있을 때, 상기 약분 연산 하에서 닫혀 있는 합당한 크기의 집합 Sp를 찾는 것은 어려울 수 있다. 그러나 합당한 크기의 이러한 집합 Sp를 찾을 수 있는 경우, d가 p/6<d≤2m-1로 주어질 때 도 20에 도시한 방법도 사용할 수 있다.
합당한 크기의 집합 Sp가 p/6<d≤2m-1로 주어진 d에 대해 이용할 수 없을 경우, p=2m-d의 경우에 대한 식 39에서 실행된 것과 유사하게 약분을 반복적으로 실행함으로써, 도 21에 도시한 GF_p_k_ADD에 대한 전형적인 방법을 GF(pk)에서의 덧셈을 실행하는 데 사용할 수 있다. 그러나 2m보다 이미 더 작은 계수가 이러한 약분에 의해 더 커질 수 없다는 것은 명백하지 않다. 사실, 이것은 실제의 경우이다. h'(0)=p>0이라는 것을 알고, 약분 함수 h'(z)=(z mod 2m)+p-d(z div 2m)를 고려한다. 또한, 간격 p, p+1, ..., 2m+1-1에서, 함수 h'은 고정점, 즉 상기 간격에서 모든 z에 대해 h'(z)=z를 갖는다. 그러므로 반복된 약분의 방법은 약간이 수정이 필요하다. 이러한 상황에서, 집합 Sp는 Sp=0, 1, ...,2m+1-1로 주어지도록 대치된다(즉 독립적인 d). 이제, 가드-비트를 포함하지 않는, 각 계수의 저장을 위해 m+1 비트가 필요하다. GF(pk)에서의 덧셈은 도 21에 반영된 바와 같은 약간 수정된 모듈러 약분 알고리즘에 따라 실행될 수 있다. 특히, c=a+b를 사용하여 단계 2101을 쓰고, 표기 "c"는 단계 2103-2107에서 이용되고, c량의 재할당이 단계 2109에서 발생되는 것을 제외하고, 도 20에 나타낸 단계 2101, 2103, 2905, 2107 및 2109는 도 21에 나타낸 단계 2101, 2103, 2105, 2107 및 2109와 각각 동일하다는 것을 알 수 있다. 또한, 도 21에 나타낸 M1, M2 및 P1의 양을 결정하는 처리는 도 20에 나타낸 것과 동일하다(물론, M1, M2 및 P1의 정확한 형태는 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 어느 것이 사용되었는가에 따름). 따라서 단계 2101, 2103, 2105, 2107 및 2109에 대한 더 이상의 논의는 필요 없다.
그러나 도 21에 도시한 방법 2100은 단계 2111과 관련하여 도 20에 도시한 방법 1800과 비교하여 수정된다. 도 19를 참조하여 설명한 것과 마찬가지로, 단계 2111은 정수값을 표시하는 (결과 c의) 어떤 cj가 2m+1 보다 큰지를 결정하는 판정 단계이다. 답이 “예”일 경우, 단계 2103, 2105, 2107 및 2109를 반복한다. 다시 말해, 도 21에 도시한 방법(2100)은 식 41 및 42로 주어진 연산을 실행한다.
(41), (42)
여기서 cj≥2m+1은 정수값을 표시하는 데이터 비트의 그룹 cj가 2m+1 보다 큰 지를 결정하는 것에 대한 약칭임을 알 수 있다. 따라서 상기 식 42에 표시한 루프(loop)의 실행은 식 39 및 도 19를 참조하여 설명한 것과 유사하다. 차이는 이전 경우에서는 (c & M2)가 영인지 아닌지를 체크함으로서 검사가 실행될 수 있다는 것이다. 현재의 경우에는 (c & M7)이 영인지 아닌지를 체크함으로서 검사가 실행될 수 있고, 여기서 M7은, 비트 m과 일반적으로 M2의 어떤 주어진 세그먼트의 최하위 비-영 비트가 영으로 리세트되는 것을 제외하고는, M2와 같은 새로운 이진량이다. (예를 들어, 도 15의 d에서 도시한 M2량은 참조번호 1511로 가리킨 바와 같은 (1,1,0,0)의 반복적인 발생인 반면, 상기한 M7량은, 적절한 위치에 가드 비트를 가지고, 현재 경우의 검사에 대해 (1,0,0,0)의 반복적인 발생에 의해 주어질 것이다.) 본 기술 분야에서 통상의 지식을 가진 자라면, Sp의 상기한 선택 및 식 42에서의 검사 조건을 사용하여 c의 모든 성분을 2m+1보다 작게 하면서 결국 상기 약분을 끝낼 수 있다는 것을, 용이하게 알 수 있을 것이다. 이것으로 도 21을 참조한 p/6<d<2m-1 및 p=2m+d 경우에 대한 논의를 완료한다.
도 18-21에 관련된 상기 논의에서, 여기서 나타낸 방법은 단일-가드-비트 표기법 및 다중-가드-비트 표기법 둘 다를 적용할 수 있다는 것에 유의해야 한다. 다중-가드-비트 표기법이 사용되는 경우, 제1 및 제2 필드 원소를 표시하는 제1 및 제2 이진 데이터 각각은, 단일-가드-비트 표기법에 대한 경우에서의 단일 가드 비트보다, 각 필드 원소의 계수를 표시하는 데이터 비트의 인접 그룹 사이에 위치하는 다중 가드 비트로 저장된다는 것을 아는 것만이 필수적이다. 또한, M1, M2 및 P1의 양을 결정하는 처리는 다중-가드-비트 표기법에 대한 수정을 필요로 하지 않는다. 물론, 다중-가드-비트 표기법에 대해 이러한 처리를 적용하는 것은, 단일-가드-비트 표기법에 대해 생성될 수 있는 것과는 다른 값의 M1, M2 및 P1의 양을 생성할 것이다. 또한, GF(pk)에서의 덧셈에 대해 분리된 설명이, p를 p=2m-d 및 p=2m+d로 쓸 수 있는 경우에 대해 제공되어, p=2m-d 및 p=2m+d의 경우에 대한 상기한 방법은, d가 3보다 크거나 같고 2m-1보다 작은 홀의 정수이고, m은 3보다 크거나 같은 정수이고, 어떤 정수 N에 대해 p≠2N± 1인 경우에 주로 적용될 수 있다는 것을 알게 될 것이다.
p=2m-d 및 p=2m+d인 경우 GF(pk)에서의 필드 원소의 곱셈은, 단일-가드-비트 표기법 및 다중-가드-비트 표기법 둘 다에 대하여 p=2m-d에 대한 도 9-12를 참조하여 이미 설명한 GF_p_k_MUL의 전형적인 형태를 사용하여 실행할 수 있다. m+1 비트(가드 비트를 포함하지 않음)가, p=2m-d의 경우에 대한 m 비트에 반대로, p=2m-d에 대한 GF(pk)의 필드 원소의 계수를 표시하는 데이터 비트의 각 그룹을 저장하도록 할당된다는 것만을 알 필요가 있다. 물론, 이러한 차이는 DLOG 및 ANTILOG 테이블의 형태에도 적용되어야 한다. 다중-가드-비트 표기법으로 압축 함수(COMP) 및 압축해제 함수(DECOMP)를 이용할 수 있는 경우, 이러한 함수들은, 필드 계수를 표시하는 데이터 비트의 각 그룹을 저장하도록 m 비트 보다 m+1 비트를 할당하도록 고려되어야 한다.
p=2m-d의 경우에 대해, 스칼라 곱셈(식 23), 더블링(식 29-29), 덧셈 역원의 결정(식 30), 곱셈 역원의 결정(식 31) 및 지수(식 32)를 포함하는 다른 여러 가지 연산이 본 발명에 따라 실행될 수 있다. 상기한 논의의 관점에서, 본 기술 분야에서 통상의 지식을 가진 자에게는, 상기한 방법을 사용하여 p=2m+1, p=2m-d, p=2m+d의 경우에 대해 이러한 연산들도 실행될 수 있다는 것은 명백하다. 또한, 도6-8, 12, 16 및 17을 참조하여 설명한 바와 같은 하드웨어 장치를 p=2m-d 및 p=2m+d의 경우에 대해 이용할 수 있다는 것도 명백하다. 도 12에 도시한 상기 곱셈 장치(1200)는, 실제로 p=2m-d 및 p=2m+d에서의 사용을 위해 수정이 필요 없다.
p=2m-d (d>1)의 경우에 적응하도록 도 6의 하드웨어 장치를 수정하기 위해, 주어진 d량에 의해 곱셈(통상의 곱셈)을 실행하는 승산 회로(multiplier circuit)를 우측-시프트 게이트(619)와 입력 연결 레지스터(603) 사이에, 즉 도 6에서 “**”로 표시한 위치에 삽입한다. 도 7에 대해, 동종의 승산 회로를 우측-시프트 게이트(719)와 입력 연결 레지스터(703) 사이에, 즉 도 7에서 “**”로 표시한 위치에 삽입한다. 전적으로 유사하게, p=2m+d, d>1의 일반적인 경우에 대해 수정하기 위해, 도 16 및 17에 도시한 장치를, 도면에서 “**”로 표시한 위치에 있는 동종의 승산 회로로써 각각 수정할 수 있다.
p=2m+d에 대한 상기한 효율 개선과 마찬가지로, p=2m+1, p=2m-d 및 p=2m+d에 대핸 방법에서도 효율 개선을 기대할 수 있다. 예를 들어, k=3에 대한 덧셈에서, 여기서 설명된 본 방법은 종래 방법(본 발명에서와 같이 병렬화를 포함하지 않음)보다 약 8배 더 빠르게 될 것이다. k=8 및 k=10에 대해, 여기서 설명한 본 방법은 종래 방법보다 약 15배 빠르게 될 것이다.
비-소수 모듈러(non-prime moduli)의 병렬 덧셈
본 기술 분야에서는 명백하듯이, k 병렬 덧셈 모듈로 p=2m± d, d≥1를 설명하는 어떠한 경우에도, p가 소수라는 사실을 실제로 이용하였다. 유한 필드에서의 곱셈에 대해서는 소수 p를 사용하는 것이 중요한 반면(그렇지 않은 경우, 상기 그룹은 비주기적이고 생성자/로그 테이블을 찾을 수 없음), 덧셈 연산은 p가 소수가 아니더라도 잘 정의되고 전적으로 유사하다. 따라서 본 발명의 다른 양태에서, GF_p_k_ADD에 대해 상기한 전형적인 방법은, 2의 거듭제곱과 밀접한 어떤 p(소수 또는 소수 아님)에 대해, 즉 p=2m ± d에 대해, k 병렬 덧셈 모듈로 p를 실행하도록 사용될 수 있다. 전적으로 유사하게, 상기한 방법은 d의 앞에 있는 부호와 d의 크기에 따라 서로 다른 p의 함수 형태에 대해 사용될 수 있다.
암호화 및 에러 정정을 포함하는 다른 양태
본 발명의 다른 양태에서, 상기한 방법은 에러 정정 장치와 에러 정정 방법에 사용될 수 있다. 에러 정정 코드의 목적은 전송 중에 에러에 의해 메시지가 방해를 받더라도 수신기가 원래 메시지를 재생할 수 있도록 하는 것이다. 이것은 메시지에 리던던시(redundancy)를 도입하여 실행한다. 본 기술 분야에 널리 알려진 바와 같이, 다수의 체크 방정식(check equation)이 에러-정정 코드에 이용된다. 메시지가 수신되었을 때, 수신기는 이러한 방정식에 따라 수신된 데이터를 체크하여 에러가 발생되었는지를 판정하고, 만일 그럴 경우, 에러를 판정할 수 있다. 에러-정정 코드를 정의하는 이러한 방정식에 따라, 때때로 다중 에러를 정정할 수 있다.
많은 경우에 코드/방정식은 유한 필드 산술을 사용하여 구성될 수 있다. 상기 코드는 형태 g=g0, g1,..., gN-1의 N-벌(tuples)(또는 벡터)로 구성될 것이며, 여기서 각 gi는 어떤 q에 대한 GF(q)에서의 원소이다. 모든 가능한 g 중에서 상대적으로 작은 집합이 유효 코드 워드(valid code word)로 될 수 있다. 즉, 모든 g가 허용된다면, 에러가 발생했는지의 여부를 말하는 것은 불가능하다.
통상, 각 메시지는 이러한 N-벌에 맵핑되어 전송된다. 한정된 수의 gi가 못쓰게 되면, 수신기는 g를 복구하여 원래 메시지를 구한다. 이러한 코드의 예로서는 Reed-Solomon 코드, BCH 코드 및 Goppa 코드 등이 본 기술 분야에 알려져 있으며, 이에 대해서는 “The Theory of Error Correcting Code by F.j. MaxWilliams and N.J.A. Sloane, Elsevier Science B.V., Amsterdam, 1977”에 기술되어 있다. 상기한 바와 같이, 이러한 코드는 우한 필드에 대한 산술 연산에 이용될 수 있다. 그러나, 이러한 코드의 종래 실행에서는, GF(pk)의 단일 계수가 하드웨어 레지스터에서 동작하는 비능률적인 종래의 방식으로 이진 유한 필드 또는 홀-표수 유한 필드 중 하나를 이용한다. 반면, 본 발명에서는, 단일 하드웨어 레지스터에 홀-표수 유한 필드의 다중 계수를 표시하는 이진 데이터를 저장하고, 병렬로 상기 다중 계수를 표시하는 이진 데이터를 처리함으로써, 유한 필드의 계수를 표시하는 데이터가 병렬로 높은 효율로 처리되는, 홀-표수 유한 필드를 포함하는 에러 정정을 실행하는 방법을 제공한다.
앞서 언급한 “The Theory of Error Correcting Code"에 설명된 바와 같이, BCH 코드를 디코딩하는 종래 방법에 대해 다음에 설명한다. 필드 F=GF(q)는 q=pn 원소의 필드이고, w는 q modulo N의 곱셈 차수를 표시한다(즉, w는 qy=1 mod N이 되게 하는 최소 y이다.) GF(qN)에서의 원소 α를 일의 원시 N-차 루트(primitive N-th root of unity)로 둔다. 즉, N은 이 필드에서 αN=1에 대한 최소 정수이다. 원시 BCH 코드에 해당하는, N=qw-1일 때와, Reed-Solomon 코드에 해당하는 N=q-1일 때, 중요한 특수 경우가 발생한다. 해당 BCH 코드는, 행렬-벡터 방정식 HgT=0을 만족하는 GF(q)에서의 성분을 갖는 모든 N-차원 벡터 g=(g0, g1,..., gN-1)로 구성될 것이다.
(43)
여기서 T는 전치를 표시하고 D는 1과 N-1 사이의 어떤 값이라고 가정한다. 이러한 설명은 좁은 의미의 BCH 코드에 관련되는 것으로, 가장 일반적인 형태는 아니다.
본 발명의 양태에서, 전형적인 에러-정정 장치(2200)가 도 22의 블록도에 도시한 바와 같이 제공된다. 상기 장치(2200)는, 에러 정정 코드의 허용된 코드 워드를 표시하고자 하는 신호를 수신하는 입력 소자(2201)(예를 들어, 입출력 소자일 수도 있음)와, 에러 정정을 위해 프로그램 된 처리부(2203)를 포함한다. 상기 장치(2200)는, 처리부(2203)에 의해 액세스될 수 있고(예를 들어, 처리부가 여기서 설명된 방법의 단계를 실행할 수 있도록 하는 컴퓨터 프로그램을 가져오기 위한 것임), 프로세서에 의해 제공되는 이진 데이터(예를 들어 계산 결과)를 저장할 수 있는 메모리도 포함한다. 상기 신호는 이진 데이터이거나, 입출력부(2201)에서 이진 데이터로 변환되는(예를 들어 맵핑 소자에 의한 맵핑) 아날로그 신호일 수 있다. 여기서 사용된 “허용된 코드 워드를 표시하고자 하는 이진 데이터”라는 말은 이러한 가능성 둘 다를 포함시키고자 하는 것이다.
처리부(2203)는 여기서 설명한 방법을 실행하는, 어떤 적절한 처리부로 될 수 있고, 입출력부(22)는 입출력 데이터에 대한 어떤 적절한 인터페이스 또는 소자로 될 수 있다. 예를 들어, 처리부(2203)는 종래 컴퓨터의 처리부일 수 있고, 입출력 소자(2201)는 종래의 모뎀일 수 있다. 다른 예로서, 처리부(2203)는 이동전화기 또는 개인 휴대 단말과 같은 휴대형 소자의 처리부일 수 있고, 입출력 소자(2201)는 무선 송수신기일 수 있다. 다른 예로서, 처리부(2203)는 컴팩트 디스크(CD) 플레이어 또는 디지털 비디오 디스크(DVD) 플레이어의 처리부일 수 있고, 입출력 소자는 CD 또는 DVD에 의해 변조되는 레이저 빔으로부터 신호를 수신하고 해당 전기 신호를 출력하는 광신호 수신기일 수 있다.
처리부는 이진 데이터에서 에러를 정정하도록 프로그램 되고, 여기서 허용된 코드 워드는 GF(p l k)의 N-벌의 필드 원소이다. 유한 필드 GF(p l k)는 기저 필드 GF(pk)의 확장 필드이고, 여기서 p는 홀소수이고 GF(pk)의 필드 원소는 k 기저 계수를 포함한다. 이진 데이터의 일부는 데이터 비트의 k 그룹을 포함하고 GF(pk)의 필드 원소를 표시하며, 여기서 필드 GF(pk)는 다항식 기저 표기법에 따라 k 기저 계수를 가지며, 데이터 비트의 각 그룹은 k 기저 계수 중 해당하는 하나를 표시한다. 상기 이진 데이터의 일부는 레지스터에 저장되고, 처리부는, 예를 들어 앞서 설명한 산술 연산을 사용하여, 데이터 비트의 k 그룹이 병렬로 처리되도록 상기 이진 데이터의 일부를 처리한다. 이에 대해서는 아래에서 더욱 상세히 설명한다.
특히, 에러-정정 장치(2200)는, 도 23에 도시한 전형적인 방법(2300)을 사용하여 본 발명에 따른 에러 정정을 위해 프로그램 될 수 있다. 예를 들어, 상기 방법(2300)은, 앞서 설명한 본 발명의 계산 방법을 식 50을 참조하여 상기 설명한 에러 정정에 대한 행렬 공식에 적용하는, BCH 코드를 디코딩하기 위해 실행될 수 있다. 상기 방법(2300)은 허용된 코드 워드를 표시하고자 하는 수신된 이진 데이터 g'=(g'0, g'1,..., g'N-1)에서 d/2 에러(때로는 더 많은 에러)를 정정할 수 있다.
먼저, 도 23의 단계 2301에서와 같이, 에러-정정 장치는 에러 정정 코드의 허용된 코드 워드를 표시하기 위한 이진 데이터를 수신하고, 여기서 허용된 코드 워드는 GF(p l k)의 N-벌의 필드 원소이고, p는 홀소수 이다. 다시 말해, 각 허용된 코드 워드는 GF(p l k)의 N 필드로 구성된다. 이진 데이터는 직접 수신될 수 있거나 상기한 바와 같이 아날로그 신호로부터 변환될 수도 있다. 또한, GF(p l k)의 각 필드 원소는 다항식 기저 표기법에 따라 l 주계수(primary coefficient)를 포함하는 것으로 볼 수 있으며, 여기서 각 주계수는 k 기저 계수를 갖는 GF(pk)의 필드 원소이다. 허용된 코드 워드를 표시하기 위한 이진 데이터는 데이터 비트의 N 컬렉션(collections)을 포함하는 것으로 볼 수 있으며, 여기서 데이터 비트의 각 컬렉션은 데이터 비트의 l 세그먼트를 포함하고, 데이터 비트의 각 세그먼트는 l 주계수 중 해당하는 하나를 표시한다. 또한, 데이터 비트의 각 세그먼트는 데이터 비트의 k 그룹을 포함하는 것으로 볼 수 있고, 여기서 데이터 비트의 각 그룹은 k 기저 계수 중 해당하는 하나를 표시한다.
단계 2303에 나타낸 바와 같이, 에러-정정 장치(2200)은 수신된 이진 데이터를 근거로 한 신드롬(syndrome)을 계산하고, 여기서 이진 데이터의 주어진 부분(예를 들어 l 주계수 중 하나에 대응하는, 주어진 데이터 비트의 세그먼트)은 레지스터에 저장되고, 여기서 이진 데이터의 상기 주어진 부분의 데이터 비트의 k 그룹은 병렬로 처리된다. 특히, 식 43을 참조하여 상기한 매트릭스 공식의 예에 대해(BCH 코드 관련), 다음과 같이 신드롬이 계산될 수 있다. 송신된 이진 데이터 g=(g0, g1,..., gN-1)(또는 이러한 이진 데이터에 대응하는 송신된 신호)는 이진 데이터 g'=(g'0, g'1,..., g'N-1)으로 수신된다. 이진 데이터 g'에서의 에러 위치를, g'j≠gj에 대해 그 인덱스 j로 두고, 에러값을 g'j=gj+ej를 만족ㅎ라는 GF(p l k)에서의 (비-영)값 ej로 둔다. 마지막으로, 편의를 위해 ηjj로 두며 여기서 αj는 α의 j제곱이다(필드에서 계산됨). 상기한 행렬 43과 관련하여, 신드롬 S는 다음 관계식에 따라 계산될 수 있다.
(44)
여기서 S=(S1, S2,..., Sd-1) 이다. g'에서의 성분 g'j는 GF(p l k)에서의 원소이고, 신드롬 엔트리 Si는 GF(p Nl k)의 원소이며, 여기서 GF(p Nl k)는 GF(p l k)의 확장 필드이다. 식 44에 따라 신드롬 S를 계산하는 경우에, 필드 GF(pk)에서 산술 연산이 실행되어야 한다. 상기한 바와 같이, 데이터 비트의 l 세그먼트 각각은 데이터 비트의 k 그룹을 포함하고, 데이터 비트의 각 그룹은 k 기저 계수 중 해당하는 하나를 표시한다. 단계 2303에서 반영된 바와 같이, 앞서 설명한 어떤 다른 필요한 연산뿐만 아니라, 예를 들어 GF_p_k_ADD 및 GF_p_k_MUL의 전형적인 실행을 사용하여, 레지스터에 저장된 데이터 비트의 k 그룹이 병렬로 처리되도록, 신드롬이 계산된다.
다음으로, 단계 2305에 나타낸 바와 같이, 신드롬 S가 0과 같은지의 여부, 즉 S=0=(0, 0,..., 0)인지의 여부를 결정한다. S=0이면 에러가 발생하지 않고, 절차는 단계 2309로 건너 띄고, 여기서 처리될 데이터가 더 있는지의 여부를 판정한다. S≠0이면 절차는 단계 2307로 진행하고 여기서 에러가 검출된다.
단계 2307에 나타낸 바와 같이, 에러-정정 장치는 신드롬을 근거로 이진 데이터의 에러-포함 부분(error-containing portion)(예를 들어, 데이터 비트의 에러-포함 세그먼트)에서 에러를 검출하고, 이진 데이터의 에러-포함 부분의 데이터 비트의 k 그룹을 병렬로 처리하여 이진 데이터의 에러-포함 부분에서의 에러를 정정한다. 이러한 처리는 이진 데이터의 모든 에러-포함 부분에 대해 반복된다. 예를 들어, BCH 코드와 관련된 식 44의 행렬 공식과 관련하여, r 에러가 발생하는 것으로 가정하면, 아래의 식 45가 각 j에 대해 만족되어야 하고, 여기서 0≤j≤d-1 이다. GF(p l k)에서 일부 ei(에러값)에 대해
(45)
이고, ηik는 집합 η0, ..., ηn-1(에러 위치)에 속한다.
또한, 이러한 예에 따라 에러값을 결정하는 경우에, 다음 식의 시스템이 τi값에 대해 유일한 해를 갖고 이러한 τi가 결정되어야 하도록 최대수 r이 결정되어야 한다(여기서 r은 g'에서 손상된 인덱스의 수).
(46)
여기서 0≤j≤r-1 이다. 이것은, 예를 들어 본 기술 분야에 공지되어 있으며 앞서 언급한 “The Theory Of Error Correcting Codes"에 설명된, Berlekamp-Massey 알고리즘을 사용하여 달성할 수 있다. 이 때, 차수 r의 에러-로케이터(error-locator)가 성립될 수 있고, 이것은 아래의 식 47과 같은 형태를 갖는다.
(47)
여기서 에러 위치를 결정하는 τ0=1 이다. 식 47에 의해, 주어진 j(0≤j≤r-1)는 s(ηj -1)=0의 경우에만 에러 위치이고, 이것은 다항식에 대한 Horner의 평가 규칙에 의해 차례로 각 s(x)를 평가함으로써 결정될 수 있으며, Horner의 평가 규칙(evaluation rule)은 본 기술 분야에 공지된 것으로서, 예를 들어, 상기한 "Semiumerical Algorithms, Vol. 2 of The Art of Computer Programming”에 설명되어 있다. 이러한 각 계산은 GF(p l k)에서 차수 r의 덧셈 및 곱셈을 포함하며, 이것은 상기한 바와 같이 본 발명에 따라 SUM(α,β), PRODUCT(α,β), GF_p_k_ADD 및 GF_p_k_MUL에 대한 전형적인 방법을 사용하여 실행할 수 있다.
이 때, 상기한 바와 같이 찾아진 ηj를 식 45에 의해 정의된 방정식에 도입하여 에러값 ei를 찾고 그것을 푼다. 에러가 발생하지 않는 위치 j에 대해, 값 ej는 ej=0으로 정의된다. 다음으로, 관계식 g=g'-e에 따라 에러가 정정되고, 여기서 e=(e0, e1, ..., eN-1)이다. 즉, 0과 N-1 사이의 각 j에 대해, gj=g'j-ej에 따라 gj량이 결정된다. 이후의 단계는 GF(p l k)에서 N 뺄셈을 실행함으로써 달성된다. 이 점에서, 단계 2307은 BCH 코드를 포함하는 에러 정정이 전형적인 처리에 대해 완료된다.
도 23에 나타낸 단계 2309에서와 같이, 처리될 데이터가 더 있는가를 판정한다. 즉 허용된 코드 워드를 표시하기 위한 이진 데이터가 더 수신되고 처리되어야 하는지의 여부를 판정한다. 처리되어야 할 데이터가 더 있다면, 절차는 단계 2301로 되돌아간다. 처리될 데이터가 더 없다면 절차는 종료한다.
본 발명의 다른 양태에서, GF_p_k_ADD, GF_p_k_MUL 및 지수에 대한 전형적인 방법을 포함하되 이에 한정되지 않는 상기한 본 발명의 산술 방법은, 예를 들어 타원 곡선을 이용하는 암호법 및 키 교환(key exchange)에서 암호법으로 사용될 수 있다. 타원 곡선을 사용하는 암호법은 본 기술 분야에 널리 알려져 있다. 예를 들어, 타원 곡선에 플레인텍스트(plaintext)를 암호화하는 방법이, 예를 들어 미국 특허 제6,307,935호(Method and apparatus for fast elliptic encryption with direct embedding)에 설명되어 있으며, 그 전체 내용은 여기서 참조되어 포함된다. 또한, 타원 곡선을 사용할 수 있는 키 일치(key agreement) 및 전달(transport) 프로토콜에 대해 미국 특허 제6,122,736호(Key agreement and transport protocol with implicit signatures)에 설명되어 있으며, 그 전체 내용은 여기서 참조되어 포함된다. 또한, 타원 곡선을 사용할 수 있는 공개키(public key) 프로토콜에 대해 미국 특허 제5,933,504호(Strengthened public key protocol)에 설명되어 있으며, 그 전체 내용은 여기서 참조되어 포함된다. 또한 타원 곡선을 포함하는 키 교환을 실행하는 방법에 대해 미국 특허 제5,159,632호(Method and apparatus for public key exchange in a cryptographic system)에 설명되어 있으며, 그 전체 내용은 여기서 참조되어 포함된다. 그러나 미국 특허 제6,307,935, 6,122736, 5,933,504 및 5,159,632호는, 여기서 알게 되는 바와 같은, 단일 레지스터에 다중 필드-원소 계수를 표시하는 이진 데이터를 저장하고 병렬로 그러한 이진 데이터를 처리하는 것에 대해서는 기재되어 있지 않다.
타원 곡선의 몇 가지 양태에 대해 설명한다. 유한 필드 F와 F에서의 두 원소 α 및 β에 대해서, F에 대한 타원 곡선이 다음 식을 만족하는 FxF에서 점(x,y)의 집합에서 (비공식적으로) 고려될 수 있다.
(48)
또한, 개념적으로 y축에서 “무한대로”높아지는 것으로 생각되는, 무한에서의 점 O가 있다. 이러한 점들은 그룹“덧셈”연산 하에서 아벨 그룹(abelian group)을 형성하며,ⓧ로 표시한다. 이러한 그룹 덧셈 연산은, 본 기술 분야에 공지된 바와 같이, 받침 필드(underlying field) F에서 산술 연산의 관점으로 정의된다. 따라서 본 발명에 따라, 받침 필드는 홀-표수 유한 필드 GF(pk)(또는 그 확장)로 되도록 선택될 수 있으며, GF_p_k_ADD 및 GF_p_k_MUL 및 지수를 포함하나 제한되지는 않는 상기한 전형적인 산술 방법은, 홀-표수 유한 필드 GF(pk)에 대한 타원-곡선 그룹을 실행하는 암호법의 계산에서 계산 효율을 증대시키는 데 사용될 수 있다.
예를 들어, g가 이러한 타원 곡선 상의 점이라면, g는 ⓧ 연산 하에서 x배인 자신과 결합되어, 다음과 같이 제공된다.
(49)
식 49의 연산은 일종의 지수와 같이 생각할 수 있으며, 여기서 z=gx 이다. 나머지 설명에서, g에 대해 x배로 동작하는 그 자신을 갖은 그룹 연산의 합성을 포괄적으로 gx로 표시한다. 상기 관계로부터, 이러한 연산이 유한 필드 곱셈, 또는 타원 곡선 점 덧셈(elliptic curve point addition)이면 항상 명백할 것이다. 따라서 타원 곡선의 경우, 이것은 앞서 언급된 이산 로그 문제의 특수한 경우를 발생시킨다. 현재의 기술에 의하면 이산 로그의 타원 곡선 버전을 다른 설정보다 더 풀기 어렵게 할 수 있는 것을 제시하고 있으므로, 암호법에 대해 특히 흥미를 끌고 있다.
본 발명의 양태에 따라, 도 24A에 도시한 전형적인 암호화 시스템과 같이, 암호화 시스템에서 사용되는 키 소스와 결합되는 키 소스 및 홀-표수 유한 필드 암호화부를 포함하는 암호화 장치가 제공된다. 상기 암호화 장치는 필드 GF(pk)(p는 홀소수)를 포함하는 암호화 계산을 실행하도록 구성되고, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 이용할 수 있다. 본 발명에 따른 전형적인 암호화 시스템에 대해 도 24A를 참조하여 설명한다.
도 24A는 암호화 시스템(2400)을 도시하는 기능적 블록도로서, 상기 암호화 시스템(2400)은 제1 암호화 장치(2401), 제2 암호화 장치(2403), 불안전 채널(insecure channel)(2417)에 대한 사이퍼텍스트(ciphertext)를 송신 및 수신하는 제1 송수신기(2405), 및 불안전 채널(2417)에 대한 사이퍼텍스트를 송신 및 수신하는 제2 송수신기(2407)를 포함한다. 도청기(eavesdropper)(2419)가 상기 불안정 채널(2417)에 대한 통신을 감시할 수 있다고 가정한다. 제1 암호화 장치(2401)는 제1 키 소스(2409)와, 메시지를 암호화 및 해독하는 제1 홀-표수 유한-필드 암호화부(2411)(이하, 제1 FFCU라고 함)를 포함한다. 예를 들어, 통상적인 컴퓨터 또는 이동전화기와 같은 휴대형 소자의 하나 이상의 처리부를 사용하여, 제1 키 소스(2409)와 제1 FFCU(2411) 둘 중 하나 또는 둘 다가 실현될 수 있다. 또한, 제1 암호화 장치(2401)는 FFCU(2411)에 의해 액세스될 수 있고(여기서 설명된 암호화 방법의 단계들을 FFCU(2411)가 실행할 수 있게 하는 컴퓨터 프로그램을 가져오기 위한 것임), FFCU(2411)에 의해 제공되는 이진 데이터(예를 들어 계산 결과)를 저장할 수 있는 메모리도 포함할 수 있다.
제2 암호화 장치(2403)는 제2 키 소스(2413)와, 메시지를 암호화 및 해독하는 제2 홀-표수 유한-필드 암호화부(2415)(이하, 제2 FFCU라고 함)를 포함한다(여기서, “제1” 및 “제2”는 제1 암호화 장치(2401)와 제2 암호화 장치(2403)의 구분을 위해서만 사용된다).
예를 들어, 통상적인 컴퓨터 또는 이동전화기와 같은 휴대형 소자의 하나 이상의 처리부를 사용하여, 제2 키 소스(2413)와 제2 FFCU(2415) 둘 중 하나 또는 둘 다가 실현될 수 있다. 또한, 제2 암호화 장치(2403)는 FFCU(2415)에 의해 액세스될 수 있고(여기서 설명된 암호화 방법의 단계들을 FFCU(2415)가 실행할 수 있게 하는 컴퓨터 프로그램을 가져오기 위한 것임), FFCU(2415)에 의해 제공되는 이진 데이터(예를 들어 계산 결과)를 저장할 수 있는 메모리도 포함할 수 있다. 또한, 제1 및 제2 키 소스(2409 및 2413)는 난수 발생기(random number generator)를 포함할 수도 있다.
상기한 바와 같이, 제1 암호화 장치(2401)는 제1 키 소스(2409)와 상기 키 소스와 결합되는 제1 홀-표수 유한-필드 암호화부(FFCU)(2411)를 포함한다. 본 발명의 한 양태에서, FFCU(2411)(또는 FFCU 2415)는 도 24B의 흐름도에 도시한 전형적인 암호화 방법(2450)의 단계를 실행하도록 구성될 수 있다. 상기 방법(2450)은 홀-표수 유한 필드 GF(pk)의 필드 원소의 적어도 일부를 표시하는 이진 데이터를 레지스터(예를 들어, FFCU 2411을 실현하기 위해 사용되는 처리부의 내부 레지스터)에 저장하고, 여기서 p는 홀소수이다(단계 2451). 필드 원소는 다항식-기저 표기법에 따라 k 계수를 포함하고, 이진 데이터는 데이터 비트의 다수 그룹을 포함하며, 여기서 데이터 비트의 각 그룹은 k 계수 중 관련된 하나를 표시한다. 상기 방법은 다수 그룹이 데이터 비트가 병렬로 처리되도록 암호화 알고리즘에 따라 이진 데이터를 처리하는 것을 포함한다(단계 2453).
도 24A에 도시한 암호화 시스템(2400)의 전형적인 연산과, 도 24B에 도시된 전형적인 암호화 방법(2450)과 관련하여, 추가적으로 상세히 설명한다. 이러한 설명은 메시지가 제1 암호화 장치(2401)로부터 송신되고 제2 암호화 장치(2403)에 의해 수신되는 경우에 맞추어질 것이나, 상기 설명은 메시지가 제2 암호화 장치(2403)에서 시작되고 제1 암호화 장치(2401)에 의해 수신되는 상황에도 동일하게 적용할 수 있다.
제1 교신기(converser) 및 제2 교신기 각각은 보안키(secure key)를 가진다. 한 양태에서, 본 발명에 따른 키 교환에 의해 보안키가 생성될 수 있다. 이 점에 있어서, 상기한 이진 데이터는 키 데이터가 될 수 있고, 상기한 암호화 알고리즘은 도 25를 참조하여 아래에서 설명하는 바와 같은 키 교환 알고리즘이 될 수 있다. 그러므로 보안키는 불안전 채널(2417)을 통해 교환될 수 있다. 이와는 달리, 전형적인 다른 양태에서, 교신기 각각은 쌍의 공개키/사설키(public key/private key)를 가질 수 있고, 여기서 각 교신기의 공개키는 공공 채널(public channel)에 대해 다른 교신기를 이용할 수 있게 한다. 이와 관련하여 상기한 이진 데이터는 메시지 데이터로 될 수 있고, 상기한 암호화 알고리즘은, 도 26을 참조하여 아래에 설명하는 바와 같이, 메시지 데이터를 암호화/해독하는데 사용되는 공개키 암호화 알고리즘이 될 수 있다.
도 24A에 도시한 바와 같이, 키 교환 또는 공개키에 의해 생성된 보안키는 키 소스(2409)로부터 제1 암호화 장치(2401)의 제1 FFCU(2411)로 제공될 수 있다. 플레인텍스트(P)가 제1 FFCU(2411)에 제공되고, 적절한 암호화 알고리즘을 사용하여 상기 플레인텍스트는 제1 FFCU(2411)에 의해 암호화되어, 사이퍼텍스트(C)를 생성한다. 암호화 알고리즘은 제1 및 제2 교신기에 의해 미리 일치되고, 키 소스(2409)로부터의 키는 상기 암호화 알고리즘에 대해 적절히 구성될 수 있다. 보안키를 생성하기 위해 본 발명에 따른 키 교환이 사용되면, 플레인텍스트를 암호화하기 위해 사용되는 암호화 알고리즘은, 예를 들어, DES 또는 RSA와 같은 적절한 암호화 알고리즘이 될 수 있다. 쌍의 공개/사설키가 사용되면, 플레인텍스트를 암호화하기 위한 암호화 알고리즘은, 도 26, 27 및 28을 참조하여 아래에서 설명하는 바와 같이 공개-키 암호화 또는 도 24B에 도시한 방법(2450)에 따라 실현될 수 있는 적절한 암호화 알고리즘이 될 수 있다.
불안전 채널(2417)을 통해 사이퍼텍스트(C)를 송수신기92407)로 송신하는 송수신기(2405)(예를 들어, 네트워크 인터페이스, 모뎀 또는 무선 송신/수신기)에 사이퍼텍스트(C)가 제공된다.
상기 사이퍼텍스트는 제2 암호화 장치(2403)의 제2 FFCU(2415)로 제공된다. 제1 및 제2 교신기에 의해 일치된 암호화 알고리즘에 대응하는 해독 알고리즘에 따라, 제2 FFCU(2415)는 상기 사이퍼텍스트를 해독한다. 상기 해독 알고리즘은 해독과 관련된 키 소스(2413)로부터의 키를 이용한다. 상기 키는, 예를 들어, 키 교환을 사용하여 생성되는 키이거나, 암호화에 사용된 공개키에 대응하는 사설키 이다. 도 24A 및 23B와 관련된 본 발명에 따른 추가의 전형적인 양태에 대해 설명한다.
본 발명의 한 양태에서, 레지스터에 저장된 이진 데이터는 모든 k 계수 필드 원소를 표시한다. 또한, 적어도 하나의 가드 비트가 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하고, 데이터 비트의 각 그룹은 해당하는 적어도 하나의 가드 비트에 의해 데이터 비트의 인접 그룹으로부터 분리되도록, 데이터 비트의 다수 그룹을 레지스터에 저장할 수 있다. 하나의 가드 비트(단일-가드-비트 표기법) 또는 다중 가드 비트(다중-가드-비트 표기법)는 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치할 수 있다. 영의 초기값이 적어도 하나의 가드 비트 각각에 할당될 수 있다.
본 발명의 한 양태에서, 암호화 장치(2401)( 및/또는 2403)는, 홀-표수 유한 필드 GF(pk)를 포함하는 계산을 사용하여, 암호화 방법(2450)의 일례로서, 키 교환을 실행할 수 있다. 이러한 키 교환은 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 사용하여 실행할 수 있다. 예를 들어 암호화 시스템(2400)을 사용하여 실행되는, 본 발명에 따른 키 교환의 전형적인 방법에 대해 도 24A 및 25를 참조하여 설명한다.
제1 암호화 장치(2401)를 갖는 제1 교신기와 제2 암호화 장치(2403)를 갖는 제2 교신기는 도청기가 그 송신을 해독할 수 없도록 불안전 채널(2417)을 통해 안전하게 통신하기를 원한다. 따라서 제1 및 제2 교신기는 먼저 인증(authentication) 등과 같이 암호화용 키에 대해 일치해야 한다. 이러한 키는, 본 발명에 따라 GF(pk)에 대한 유한-필드에 대해 적응되는 Diffie-Hellman 키 교환을 사용하여 생성할 수 있다. 종래의 Diffie-Hellman 키 교환은 미국 특허 제4,200,770(Cryptographic apparatus and method)에 설명되어 있고, 그 전체 내용은 여기서 참조되어 포함된다. 또한, 상기한 바와 같이, 타원 곡선에 대한 종래의 키 교환은, 이미 여기에 포함시킨 미국 특허 제5,159,632에 설명되어 있다.
제1 및 제2 교신기는 g량에 대해 일치하고, 여기서 g는 유한 필드의 원소 또는 F에 대한 타원 곡선 상의 점이고, F는 홀-표수 유한 필드 GF(pk) 또는 GF(pk)의 확장 필드이고, p는 홀소수이다. 실제로, g는 계산을 실행하는 그룹, 즉 지수 연산을 갖는 그룹을 생성한다. 예를 들어, F에 대한 타원 곡선 상이 한 점으로서 g가 선택되면, 상기 그룹은 F에 대해 정의된 타원 곡선 그룹으로 볼 수 있다. g가 F의 원소로서 선택되면, 상기 그룹은 유한 필드 F에 대한 종래의 곱셈 그룹으로 볼 수 있다. 어느 하나의 경우에, g량은 최소 정수 x(여기서 gx=1)가 충분한 보안성을 제공하도록 충분히 크게 되도록 선택되어야 한다(“1”은 그룹에서 항등원(identity element)임). 예를 들어, 이러한 정수 x의 이진 표기법은, 현 세대 프로세서의 계산 용량이 관점에서 적어도 160 비트 크기로 되어야 한다. 이러한 최소 정수(x)는 |G|로 표기할 수 있다(그룹의 크기). 이와 관련하여 충분한 보안성이란 이산 대수 문제가 다루기 어렵다는 점(즉, 계산적으로 실행 불가능함)에서 지수가 안전하다는 것을 의미한다.
키를 생성하기 위해, 제1 교신기와 결합된 제1 암호화부(2401)의 키 소스(2409)에 의해 번호 xA가 생성되어(단계 2501), 제1 FFCU(2411)에 제공된다. 본 기술 분야에서 통상적으로 알려진 바와 같이, 번호 xA는, 예를 들어, 랜덤하게 또는 의사 랜덤하게(pseudorandomly) 생성된 정수가 될 수 있다. 번호 xA는 다른 교신기와 공유하기 위한 것이 아니고, 이 점에 있어서, 비밀 번호로 고려될 수 있다. 이러한 배경에서 정수는 부동 소수점(floating-point decimal)으로 저장된 정수 뿐만 아니라, 정수로서 저장된 정수 둘 다를 포함하고자 하는 것으로 이해될 수 있다. 제1 FFCU(2411)는 yA를 생성하고 불안전 채널(2417)을 통해 제2 교신기와 결합된 제2 암호화부(2403)로 보낸다(여기서 yA=gxA(단계 2503)). 상기한 바와 같이, g는 유한 필드 F의 원소 또는 F에 대한 타원 곡선 상의 점이 될 수 있고, F는 홀-표수 유한 필드 GF(pk) 또는 GF(pk)의 확장 필드이고, p는 홀소수이다. g량은 다수의 제1 기저 계수를 포함하고, 여기서 제1 기저 계수는 GF(p)의 원소이다. 예를 들어, g가 GF(·pk)의 원소로 선택되면, g는 GF(p)의 원소인 k 제1 기저 계수를 포함한다. g가 확장 필드 GF(p l k)의 원소로서 선택되면, g는 GF(p)의 원소인 k 제1 기저 계수를 포함한다. g가 GF(pk)에 대한 타원 곡선 상의 점으로 선택되면, g는 GF(p)의 원소인 2·k 제1 기저 계수를 포함하는데, 이것은 g가 둘 다 GF(pk)의 원소인 쌍의 양(pair of quantities)에 의해 표시되기 때문이다. 마찬가지로, g가 GF(p l k)에 대한 타원 곡선 상의 점으로 선택되면, g는 GF(p)의 원소인 2·l·k 기저 계수를 포함한다.
제1 레지스터에 g의 다수 제1 기저 계수 중 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹을 저장하고, yA를 생성하기 위해 제1 데이터 비트의 다중 그룹을 병렬로 처리함으로써, 제1 FFCU(2411)은 yA의 계산을 실행한다(단계 2503). 제1 데이터 비트의 각 그룹의 최상위 비트에 인접하게 적어도 하나의 제1 가드 비트가 위치하고, 제1 데이터 비트의 각 그룹이 해당되는 적어도 하나의 제1 가드 비트에 의해 제1 데이터 비트의 인접 그룹으로부터 분리되도록, 제1 데이터 비트의 다중 그룹이 제1 레지스터에 저장될 수 있다. 제1 가드 비트는 제1 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치될 수 있거나(즉, 단일-가드-비트 표기법), 또는 다중 제1 가드 비트는 제1 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치될 수 있다(즉, 다중-가드-비트 표기법). 초기값 영은 각각의 제1 가드 비트에 할당된다. 제1 데이터 비트의 다중 그룹이 앞서 설명한 방식으로 병렬로 처리되도록, 식 32에서 언급한 지수 함수를 사용하여, yA의 계산이 실행될 수 있다. 식 32는 p=2m-1 형태의 p와 관련하여 설명하였지만, 앞서 설명한 바와 같이, 식 32는 p=2m+1 및 p=2m± d 형태의 p에 대해서도 적용할 수 있다. 하드웨어 레지스터 크기와 g가 포함하는 제1 기저 계수의 수에 따라, 단일 레지스터에서 g의 모든 기저 계수를 표시하는 제1 데이터 비트의 다중 그룹을 저장할 수 있다.
마찬가지로, 번호 xB(예를 들어, 랜덤 또는 의사 랜덤하게 발생된 정수)가, 제2 교신기와 결합된 제2 암호화부(2403)의 제2 키 소스(2413)에 의해 독립적으로 발생되어, 제2 FFCU(2415)로 제공된다. 번호 xB는 다른 교신기와 공유하기 위한 것이 아니고, 이 점에 있어서, 비밀 번호로 고려될 수 있다. 제2 FFCU(2415)는 yB를 계산하고 yB=gxB를 불안전 채널(2417)을 통해 제1 암호화부(2401)로 보낸다. 데이터 비트의 다중 그룹이 앞서 설명한 방식으로 병렬로 처리되도록, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나에서 g의 다수 제1 기저 계수 중 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹을 레지스터에 저장하고, 식 32에서 언급한 지수 함수를 사용함으로써, 제2 FFCU(2415)는 yB의 계산을 실행할 수 있다.
제1 FFCU(2411)는 yB량을 수신하고, 여기서 yB는 다수 제2 기저 계수를 포함하고, 제2 기저 계수는 GF(p)의 원소이다(단계 2505). 상기 FFCU(2411)는 yB의 다수 제2 기저 계수 중 적어도 일부를 표시하는 제2 데이터 비트의 다중 그룹을 제2 레지스터에 저장하고, 제2 데이터 비트의 다중 그룹을 병렬로 처리함으로써 K=(yB)xA를 계산한다(단계 2507). 제2 FFCU(2415)는 K=(yB)xA에 따라 동일한 값 K를 계산한다. 이러한 계산은 식 32에서 언급한 지수 함수를 사용해서도 실행될 수 있고, 여기서 yB 및 yA의 기저 계수(GF(p)의 원소)를 표시하는 데이터 비트의 다중 그룹은 병렬로 각각 처리된다. 상기한 가정 하에서, 제1 및 제2 교신기만이 K를 계산하고, 제1 및 제2 교신기는 키로서 K(또는, 그 함수)를 사용할 수 있다. 타원곡선이나 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 사용하는 GF(pk)에 대해 정의된 다른 그룹에 대해, 상기한 Diffie-Hellman 키 교환을 적응시킴으로써, 본 발명은 종래 방법에 비해 계산 효율을 증가시켜 주고, 이것은 종래 방법에 비해 증가된 속도를 나타내거나, 동일한 계산 노력에 대해 증가된 보안성을 나타낼 수 있다.
상기한 키 교환 알고리즘에 따라 보안키 K를 생성하여, 제1 및 제2 교신기는 상기 키를 제1 및 제2 FFCU(2411 및 2415)와 각각 결합하여 이용함으로써 교환된 메시지를 암호화 및 해독한다. 이와 관련된 암호화/해독 알고리즘은, 예를 들어 본 기술 분야에 공지된 RSA 또는 DES와 같은 종래의 암호화 방법이나 어떤 다른 적절한 암호화 알고리즘이 될 수 있다.
제1 암호화 장치(2401) 및 제2 암호화 장치(2403)는 유한-필드 암호화부 및 키 소스를 포함하는 것으로 각각 설명되었다. 제1 암호화 장치(2401)의 제1 유한-필드 암호화부(2411)와 제1 키 소스(2409)는 메모리와, 메모리에 결합된 처리부를 사용하여 실현할 수 있다. 다시 말해, 제1 암호화 장치(2410)는 메모리와, 메모리와 결합된 처리부를 포함할 수 있고, 여기서 처리부는 제1 암호화부에 대한 상기한 단계를 실행하도록 구성될 수 있다. 마찬가지로, 제2 암호화 장치는 메모리와, 메모리와 결합된 처리부를 포함할 수 있고, 여기서 제2 암호화 장치의 처리부는 제2 암호화부에 대한 상기한 단계를 실행하도록 구성될 수 있다.
물론, 앞서 설명한 본 발명의 전형적인 양태는, 필드 원소의 일부 또는 전체 필드 원소를 단일 레지스터에 저장하는(또는 F에 대한 타원 곡선 상의 점을 표시하는 일부 또는 전체량을 단일 레지스터에 저장), 단일 또는 다중 가드 비트를 이용하는 것을 포함하되 이에 제한되지 않아서, 도 25에 도시한 전형적인 방법(2500)에 p의 다양한 함수 형태에 대한 선택 등을 적용시킬 수 있다.
본 발명의 다른 양태에서, 암호화 방법(2450)의 다른 예로서 공개키 암호화 방법이 제공된다. 본 발명에 따른 공개키 암호화(2600)의 전형적인 방법에 대해 도 24A 및 26을 참조하여 설명한다. 상기 전형적인 방법(2600)은 본 발명에 따른 ElGamal 공개키 암호화 및 해독의 적응에 대응한다. 도 24A에 도시한 각 암호화 장치(2401 및 2403)는 메모리와, 메모리에 결합된 처리부를 사용하여 실현할 수 있고, 여기서 각 처리부는 해당 암호화 장치와 관련된 단계를 실행한다.
상기 전형적인 방법(2600)에서, 제2 교신기는 제1 교신기와 관련된 공개키 yA를 구하고, 여기서 yA=gxA 이고 xA는 제1 교신기의 사설키이다(단계 2601). 예를 들어, 제2 교신기는 제1 교신기의 공개키와 g량을 포함하는 송신을 수신하거나, 제2 교신기는 제1 교신기의 공개키와 정보가 공개된 목록(directory)으로부터의 g량을 룩-업 할 수 있다. g량은 유한 필드 F의 원소이거나 F에 대한 타원 곡선 상의 점이고, 여기서 F는 홀-표수 유한 필드 GF(pk)이거나 GF(pk)의 확장 필드이고, p는 홀소수이다. 사용될 F에 대한, 또한 타원 곡선이 사용되는지 제1 교신기가 공개키 yA와 g량에 따른 목록에서 이러한 정보를 공개할 수 있는지에 대한 특정 선택에 대해, 제1 및 제2 교신기가 미리 일치할 수 있다. 상기 yA량은 다수 제1 기저 계수를 포함하고 g량은 다수 제2 기저 계수를 포함하고, 제1 및 제2 기저 계수는 GF(p)의 원소이다. 제1 교신기는 제1 암호화 장치(2401)를 사용하여 공개키 yA=gxA를 생성한다. 본 기술 분야에서 통상적으로 이해될 수 있는 사항들로서, 제1 교신기의 사설키 xA는 랜덤 또는 의사 랜덤하게 생성된 정수로 될 수 있고, 다른 교신기와 공유하고자 하는 것은 아니다. 이 점에 있어서, 제1 교신기와 관련된 상기 FFCU(2411)는 g의 계수를 표시하는 데이터 비트의 다중 그룹을 레지스터에 저장할 수 있고, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법과 결합되어 식 32에서 언급한 지수 연산을 사용하여 병렬로 데이터 비트의 다중 그룹을 처리하여 yA를 생성할 수 있다. 상기한 바와 같이, 제1 교신기의 공개키 yA는 목록에서 공개될 수 있으나, 제1 교신기가 xA량(사설키)을 비밀로 유지하게 할 작정이다.
제2 교신기는 번호 r을 생성하고(예를 들어 키 소스(2413)에 포함될 수 있는 난수 발생기 또는 의사 난수 발생기를 사용), FFCU(2415)(예를 들어 처리부)을 사용하여 쌍의 (u, v)=(gr, f-1(P)*(yA)r)량을 계산하고, 여기서 P는 플레인텍스트 메시지 집합의 플레인텍스트 메시지를 표시하고, f는 플레인텍스트 메시지 집합에 F에 대한 벡터 공간의 적어도 일부를 맵핑하는 맵핑 함수이고, *는 F에 대한 벡터 공간에서의 적절한 이진 연산을 표시한다(단계 2603). 맵핑 함수 f, F에 대한 벡터 공간 및 연산 *와 관련된 추가적인 설명에 대해, 도 27(g가 f의 원소인 경우) 및 도 28(g가 F에 대한 타원 곡선 상의 점인 경우)을 참조하여 아래에서 설명한다.
본 기술 분야에서 통상 이해될 수 있는 사항으로서, 번호 r은 랜덤 또는 의사 랜덤하게 발생된 정수로 될 수 있다. 번호 r은 다른 교신기와 공유하기 위한 것이 아니고, 이 점에 있어서, 비밀 번호로 고려될 수 있다. v량을 계산하기 위해, yA의 다수 제1 기저 계수의 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹이 제1 레지스터에 저장되어 병렬로 처리된다. 적어도 하나의 제1 가드 비트가 제1 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하고, 해당하는 적어도 하나의 제1 가드 비트에 의해 제1 데이터 비트의 인접 그룹으로부터 제1 데이터 비트의 각 그룹이 분리되도록, 제1 데이터 비트의 다중 그룹이 제1 레지스트에 저장될 수 있다. 다시 말해, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나가 사용될 수 있다. 영의 초기값이 각각의 제1 가드 비트에 할당될 수 있다. g가 F의 원소로 선택된 경우, yA의 지수는 앞서 설명한 식 32에 따라 실행될 수 있다. g가 F에 대한 타원 곡선 상의 점으로 선택된 경우, (yA)r과 관련된 지수와 gxA는 r-폴드(또는 xA-폴드) 타원-곡선 점 덧셈(r-fold elliptic-curve point addition)으로 표기된다.
제1 및 제2 교신기는 그들간의 통신에서 사용될 플레인텍스트 메시지의 집합에 대해 미리 일치한다. 함수 f는 F에 대한 벡터 공간의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 맵핑 함수이고, 제1 및 제2 교신기는 맵핑 함수 f에 대해 미리 일치한다. 예를 들어, 플레인텍스트 메시지 집합은 워드, 문장 및/또는 개별 문자로 구성될 수 있고, 각 플레인텍스트 메시지는 정수로 인코딩 될 수 있다.
g량은 암호화 계산이 실행되는 그룹을 생성할 것이고, 상기 그룹의 특성은 g의 선택에 따른다. 또한, g(또는 그룹)의 선택은 F에 대한 벡터 공간의 차원에도 영향을 준다는 것은, 본 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있을 것이다. 또한, 상기 그룹의 특성은 단계 2603에서 지수가 어떻게 실행되는지에 영향을 주고, 이진 연산 *의 선택에 영향을 준다. 예를 들어, g에 의해 발생된 그룹은 유한 필드 F로 될 수 있고, 이 경우에 벡터 공간은 F에 대응하는 1차원 벡터 공간으로 되고, 연산 *는 F에서의 곱셈이 된다. 이와는 달리, g에 의해 발생된 그룹은 유한 필드 F의 서브그룹이 될 수 있고, 이 경우에 벡터 공간은 F에 대응하는 1차원 벡터 공간으로 되고, *는 다시 F에서의 곱셈이 된다. 또 다르게는, g에 의해 발생된 그룹이 F에 대한 타원 곡선 그룹이 될 수 있고, 연산 *는 도 28을 참조하여 상세하게 설명하는 바와 같이, FxF에서 타원-곡선 점 덧셈 또는 성분단위(component-wise) 곱셈이 될 수 있다. 후자의 경우에, F에 대한 벡터 공간은 2가지 선택권에 따라 선택될 수 있다. 첫 번째 선택에서, F에 대한 상기 벡터 공간은 FxF에 대응하는 2차원 벡터 공간으로 될 수 있고, 여기서 "x"는 데카르트 곱(cartesian product)을 표기한다. 두 번째 선택에서, 상기 벡터 공간은, 본 기술 분야에 공지된 타원 곡선 그룹과 관련하여 투영 좌표(projective coordinate)가 사용되는 F에 대해 3차원 벡터 공간으로 될 수 있다. g에 의해 생성된 상기 그룹이 상기한 어떤 벡터 공간보다 작게 될 수 있을 정도까지, f는 F에 대한 벡터 공간의 일부만을 플레인텍스트 메시지 집합에 맵핑하는 데 충분할 수 있다.
그러므로 g에 의해 생성된 그룹의 크기가 플레인텍스트 메시지 집합과 같거나 더 크게 되도록 g량을 선택해야 한다. 또한, 공개적으로 이용할 수 있다고 가정하는 g량 및 yA는, yA 및 g로부터 xA를 결정하는 것이 계산적으로 불가능하게 되도록 선택되는 것으로 가정한다. 보안성과 g에 의해 생성된 그룹의 크기 사이의 관계를 포함하는 다른 고려는, 종래에 공개된 ElGamal 공개키 암호시스템의 속성의 관점에서 이 기술 분야에서는 명백한 것으로서, 예를 들어 앞서 언급한 Handbook of Applied Cryptography에 설명되어 있다. 예를 들어, 종래의 ElGamal 공개키 암호시스템에 이용되는 그룹의 크기를 선택하는 방법은 본 기술 분야에 공지되어 있다. 이와는 달리, 생성자의 주어진 선택을 근거로 그룹의 크기를 근사화하는 방법도 본 기술 분야에 공지되어 있다. 이러한 양태는 본 발명에 따른 상기한 방법(2600)에도 적용할 수 있다.
맵핑 함수(f)는, g에 의해 생성된 그룹의 각 원소가 서로 다른 플레인텍스트 메시지에 대응하도록 선택되어야 한다. 다시 말해, 맵핑 함수(f)는 유일하게 필연적인 것으로 될 수 있다. 이와는 달리, g에 의해 생성된 그룹이 플레인텍스트 메시지 집합보다 크면, p에 의해 생성된 그룹의 하나 이상의 원소가 동일한 플레인텍스트 메시지와 결합하도록, 맵핑 함수(f)가 선택될 수 있다. 플레인텍스트 메시지가 정수로 인코딩 되는 경우, f가 g에 의해 생성된 그룹으로부터 정수 집합 0, 1, 2, ...,Q-1로의 거의 단사 맵핑(단사 사상: injective mapping)이 되도록, 상기 맵핑 함수(f)가 선택될 수 있다. 여기서 Q≒|G|(|G|는 그룹의 크기) 이다. 예를 들어, 이것은 필수적으로 항등 사상(identity mapping)이 될 수 있다. 주어진 맵핑 함수(f)를 선택하는 것은, 상기로부터 알게 된 내용의 관점에서, 본 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위 내에 있다.
제2 교신기는 불안전 채널(2417)을 통해 제1 교신기로 쌍의 (u, v)량을 보낸다(단계 2605). 쌍의 상기 (u, v)량은 플레인텍스트 메시지의 암호화된 버전에 대응한다.
또한, g의 다수 제2 기저 계수의 적어도 일부를 표시하는 제2 데이터 비트의 다중 그룹을 제2 레지스터에 저장하고, 제2 데이터 비트의 다중 그룹을 병렬로 처리함으로써, u량의 계산이 제2 교신기에 의해 실행될 수 있다. 이와 관련하여, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나가 사용될 수 있다. gxA의 계산(u를 계산하기 위함)은 식 32에 따라 지수를 사용하거나 또는 g에 대한 선택에 따라 xA-폴드 타원-곡선 점 덧셈을 사용하여 실행될 수 있다. g, u 및 v 량은 유한 필드 F의 원소로 될 수 있고, 여기서 F는 GF(pk)로서 또는 GF(pk)의 확장 필드로서 선택될 수 있다. 이와는 달리, g, u 및 v 량은 F에 대한 타원 곡선 상의 점으로 될 수도 있다.
제1 교신기는 수신된 쌍의 (u, v)량을 해독할 수 있으므로, P=f(u-xA*v)를 계산함으로써(여기서 u-xA*v=v/uxA), 플레인텍스트 메시지(P)를 복구시키며, 여기서 “/”는 연산 *의 역을 표시한다(단계 2607). 식 32의 지수 함수에 따라 또는 적절한 xA-폴드 타원-곡선 점 덧셈에 따라, uxA량이 제1 FFCU(2411)에 의해 계산될 수 있다. 키 교환과 관련하여 상기한 바와 같이, 이러한 계산은 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 사용하여 실행될 수 있다. xA를 알고 있는 제1 교신기만이 이러한 메시지를 해독할 수 있다고 가정한다. 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 사용하여 ElGamal 공개키 암호화의 상기한 적응을 실행함으로써, 본 발명은 종래의 방법에 비해 증가된 계산 효율을 제공하고, 이것은 종래에 비해 증가된 속도 또는 동일한 계산 노력에 대해 증가된 보안성 중 하나로서 나타날 것이다.
물론, 필드 원소의 일부 또는 전체 필드 원소를 단일 레지스터에 저장하는(또는 F에 대한 타원 곡선 상의 점을 표시하는 일부 또는 전체 양을 저장하는), 단일 또는 다중 가드 비트의 이용, p의 다양한 함수 형태에 대한 선택 등을 포함하되 이것으로 제한되지는 않는, 앞서 설명한 본 발명의 전형적인 양태는 도 26에 도시한 전형적인 방법(2600)에 적용할 수 있다.
상기 방법(2600)의 전형적인 실현에 대해 도 27(g가 F의 원인 경우) 및 도 28(g가 F에 대한 타원 곡선 상의 점인 경우)을 참조하여 설명한다. 도 27은 공개키 암호화의 전형적인 방법(2700)에 대한 흐름도이다. 상기 전형적인 방법(2700)에서, 제2 교신기는 제1 교신기와 관련된 공개키 yA를 구하고, 여기서 yA=gxA이고 xA는 제1 교신기의 사설키이다(단계 2701). 예를 들어, 제2 교신기는 제1 교신기의 공개키 및 g량을 포함하는 송신을 수신할 수 있거나, 제2 교신기는 이러한 정보가 공개되는 목록으로부터 제1 교신기의 공개키 및 g량을 룩-업 할 수 있다. g량은 유한 필드 F의 원소이고, 여기서 F는 홀-표수 유한 필드 GF(pk)이거나 GF(pk)의 확장 필드이고, p는 홀소수이다. 제1 및 제2 교신기는 미리 사용되는 F에 대한 특별한 선택에 대해 일치할 수 있거나, 제1 교신기는 공개키 및 g량에 따라 목록에서 이러한 정보를 공개할 수 있다. yA량은 다수 제1 기저 계수를 포함하고, g량은 다수 제2 기저 계수를 포함하고, 제1 및 제2 기저 계수는 GF(p)의 원소이다. 제1 교신기는 제1 암호화 장치(2401)를 사용하여 공개키 yA=gxA를 생성할 수 있다. 제1 교신기의 사설키 xA는, 본 기술 분야에서 통상적으로 이해할 수 있는 사항으로서, 랜덤 또는 의사 랜덤하게 발생된 정수로 될 수 있고, 다른 교신기와의 공유를 위한 것이 아니다. 이와 관련하여, 제1 교신기와 관련된 상기 FFCU(2411)는 g의 계수를 표시하는 데이터 비트의 다중 그룹을 레지스터에 저장할 수 있고, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법과 결합되어 식 32에서 언급한 지수 연산을 사용하여 병렬로 데이터 비트의 다중 그룹을 처리하여 yA를 생성할 수 있다. 상기한 바와 같이, 제1 교신기의 공개키 yA는 목록에서 공개될 수 있으나, 제1 교신기가 xA량(사설키)을 비밀로 유지하게 할 작정이다.
제2 교신기는 번호 r을 생성하고(예를 들어 키 소스(2413)에 포함될 수 있는 난수 발생기 또는 의사 난수 발생기를 사용), FFCU(2415)(예를 들어 처리부)을 사용하여 쌍의 (u, v)=(gr, f-1(P)*(yA)r)량을 계산하고, 여기서 *는 F에서의 곱셈을 표시하고 P는 플레인텍스트 메시지 집합의 플레인텍스트 메시지를 표시한다(단계 2703). 본 기술 분야에서 통상 이해될 수 있는 사항으로서, 번호 r은 랜덤 또는 의사 랜덤하게 발생된 정수로 될 수 있다. 번호 r은 다른 교신기와 공유하기 위한 것이 아니고, 이 점에 있어서, 비밀 번호로 고려될 수 있다. v량을 계산하기 위해, yA의 다수 제1 기저 계수의 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹이 제1 레지스터에 저장되어 병렬로 처리된다. 적어도 하나의 제1 가드 비트가 제1 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하고, 해당하는 적어도 하나의 제1 가드 비트에 의해 제1 데이터 비트의 인접 그룹으로부터 제1 데이터 비트의 각 그룹이 분리되도록, 제1 데이터 비트의 다중 그룹이 제1 레지스트에 저장될 수 있다. 다시 말해, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나가 사용될 수 있다. 영의 초기값이 각각의 제1 가드 비트에 할당될 수 있다. 또한, yA의 지수는 앞서 설명한 식 32에 따라 실행될 수 있다.
제1 및 제2 교신기는 그들간의 통신에서 사용될 플레인텍스트 메시지의 집합에 대해 미리 일치한다. 함수 f는 F의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 맵핑 함수이고, 제1 및 제2 교신기는 맵핑 함수(f)에 대해 미리 일치한다. 예를 들어, 플레인텍스트 메시지 집합은 워드, 문장 및/또는 개별 문자로 구성될 수 있고, 각 플레인텍스트 메시지는 정수로 인코딩 될 수 있다. g량은 암호화 계산이 실행되는 그룹을 생성할 것이다. 이러한 그룹은 유한 필드 F의 곱셈 그룹이나, g의 선택에 따르는 곱셈 그룹의 서브그룹이 될 수 있다. g에 의해 생성된 상기 그룹이 상기한 어떤 벡터 공간보다 작게 될 수 있을 정도까지, f는 F에 대한 벡터 공간의 일부만을 플레인텍스트 메시지 집합에 맵핑하는 데 충분할 수 있다.
그러므로 g에 의해 생성된 그룹의 크기가 플레인텍스트 메시지 집합과 같거나 더 크게 되도록 g량을 선택해야 한다. 또한, 공개적으로 이용할 수 있다고 가정하는 g 및 yA 양은, yA 및 g로부터 xA를 결정하는 것이 계산적으로 불가능하게 되도록 선택되는 것으로 가정한다. 보안성과 g에 의해 생성된 그룹의 크기 사이의 관계를 포함하는 다른 고려는, 종래에 공개된 ElGamal 공개키 암호시스템의 속성의 관점에서 이 기술 분야에서는 명백한 것으로서, 예를 들어 앞서 언급한 Handbook of Applied Cryptography에 설명되어 있다. 예를 들어, 종래의 ElGamal 공개키 암호시스템에 이용되는 그룹의 크기를 선택하는 방법은 본 기술 분야에 공지되어 있다. 이와는 달리, 생성자의 주어진 선택을 근거로 그룹의 크기를 근사화하는 방법도 본 기술 분야에 공지되어 있다. 이러한 양태는 본 발명에 따른 상기한 방법(2600)에도 적용할 수 있다.
맵핑 함수(f)는, g에 의해 생성된 그룹의 각 원소가 서로 다른 플레인텍스트 메시지에 대응하도록 선택되어야 한다. 다시 말해, 맵핑 함수(f)는 유일하게 필연적인 것으로 될 수 있다. 이와는 달리, g에 의해 생성된 그룹이 플레인텍스트 메시지 집합보다 크면, p에 의해 생성된 그룹의 하나 이상의 원소가 동일한 플레인텍스트 메시지와 결합하도록, 맵핑 함수(f)가 선택될 수 있다. 플레인텍스트 메시지가 정수로 인코딩 되는 경우, f가 g에 의해 생성된 그룹으로부터 정수 집합 0, 1, 2, ...,Q-1로의 거의 단사 맵핑(injective mapping)이 되도록, 상기 맵핑 함수(f)가 선택될 수 있다. 여기서 Q≒|G|(|G|는 그룹의 크기) 이다. 예를 들어, 이것은 필수적으로 항등 사상(identity mapping)이 될 수 있다. 주어진 맵핑 함수(f)를 선택하는 것은, 상기로부터 알게 된 내용의 관점에서, 본 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위 내에 있다.
제2 교신기는 불안전 채널(2417)을 통해 제1 교신기로 쌍의 (u, v)량을 보낸다(단계 2705). 상기 쌍의 (u, v)량은 플레인텍스트 메시지의 암호화된 버전에 대응한다.
또한, g의 다수 제2 기저 계수의 적어도 일부를 표시하는 제2 데이터 비트의 다중 그룹을 제2 레지스터에 저장하고, 제2 데이터 비트의 다중 그룹을 병렬로 처리함으로써, u량의 계산이 제2 교신기에 의해 실행될 수 있다. 이와 관련하여, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나가 사용될 수 있고, g의 지수(u를 계산하기 위함)가 상기한 식 32를 사용하여 실행될 수 있다. g, u 및 v 량은 유한 필드 F의 원소로 될 수 있고, 여기서 F는 GF(pk)로서 또는 GF(pk)의 확장 필드로서 선택될 수 있다.
제1 교신기는 수신된 쌍의 (u, v)량을 해독할 수 있으므로, P=f(u-xA*v)를 계산함으로써(여기서 u-xA*v=v/uxA), 플레인텍스트 메시지(P)를 복구시키며, 여기서 “/”는 F에서의 나눗셈을 표시한다(단계 2707). F에서 나눗셈을 실행하는 것은 본 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에 있으므로, 더 이상의 논의는 필요 없다. 키 교환과 관련하여 상기한 바와 같이, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 사용하여, 식 32의 지수 함수를 적용시킴으로써 uxA량이 제1 FFCU(2411)에 의해 계산될 수 있다. xA를 알고 있는 제1 교신기만이 이러한 메시지를 해독할 수 있다고 가정한다. 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 사용하여, GF(pk)에 대해 정의된 그룹 또는 필드 자체에 대해 상기한 ElGamal 공개키 암호화의 적응을 실행함으로써, 본 발명은 종래의 방법에 비해 증가된 계산 효율을 제공하고, 이것은 종래에 비해 증가된 속도 또는 동일한 계산 노력에 대해 증가된 보안성 중 하나로서 나타날 것이다.
물론, 필드 원소의 일부 또는 전체 필드 원소를 단일 레지스터에 저장하는(또는 GF(pk)에 대한 타원 곡선 상의 점을 표시하는 일부 또는 전체 양을 저장하는), 단일 또는 다중 가드 비트의 이용, p의 다양한 함수 형태에 대한 선택 등을 포함하되 이것으로 제한되지는 않는, 앞서 설명한 본 발명의 전형적인 양태는 도 27에 도시한 전형적인 방법(2700)에 적용할 수 있다.
상기한 공개키 암호화 방법(2700)은 F에 대한 타원 곡선을 사용하여 실행하기 위해 본 발명에 따라 수정될 수도 있으며, 여기서 F는 상기한 바와 같다. 공개키 암호화의 전형적인 방법(2800)에 대해 도 28을 참조하여 설명한다. 실제로, 이러한 처리는 도 27과 관련하여 설명된 것과 전적으로 유사하므로, 여기서는 논의를 생략하고, 고려할 필요가 있는 그 차이점에 대해 주로 설명한다. 제1 및 제2 교신기는 타원 곡선 그룹에 대해 일치되었다고 가정하거나, 사용될 그룹에 대한 기술(description)은 교신기 사이에 전송된다고 가정한다. 이것은, 예를 들어, 실제 메시지에 대한 프리앰블(preamble)로서 실행될 수 있다. 상기 방법(2800)에서, g가 F에 대한 타원 곡선 상의 점이라는 것을 제외하고, 단계 2801은 앞서 설명한 단계 2701과 전적으로 유사하다. 따라서 전형적인 방법(2800)에서, 제2 교신기는 제1 교신기와 관련된 공개키 yA를 구하고, 여기서 yA는 gxA이고 xA는 제1 교신기의 사설키이다(단계 2801). g량은 유한 필드 F에 대한 타원 곡선 상의 점이고, 여기서 F는 홀-표수 유한 필드 GF(pk) 또는 GF(pk)의 확장 필드이고, p는 홀소수이다. yA량은 다수 제1 기저 계수를 포함하고, g량은 다수 제2 기저 계수를 포함하며, 제1 및 제2 기저 계수는 GF(p)의 원소이다.
제2 교신기는 번호 r을 생성하고(예를 들어 키 소스(2413)에 포함될 수 있는 난수 발생기 또는 의사 난수 발생기를 사용), FFCU(2415)(예를 들어 처리부)을 사용하여 쌍의 (u, v)=(gr, f-1(P)*(yA)r)량을 계산하고, 여기서 P는 플레인텍스트 메시지 집합의 플레인텍스트 메시지를 표시하고, *는 타원-곡선 점 덧셈 또는 FxF에서의 성분 단위 곱셈을 표시하고, r은 상기한 바와 같이 발생될 수 있다(단계 2803). 함수 f는 FxF의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 맵핑 함수이고, 여기서 yA의 다수 제1 데이터 기저 계수의 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹은 제1 레지스터에 저장되고 병렬로 처리되어 v를 계산한다. u 및 v의 계산에 관련된 추가적인 양태에 대해 아래에서 설명한다.
단계 2805에 나타낸 바와 같이, 제2 교신기는 쌍의 (u, v)량을 제1 교신기로 보내고, 상기 쌍의 양은 플레인텍스트 메시지의 암호화된 버전에 대응한다. 단계 2807에 나타낸 바와 같이, 제1 교신기는 수신된 쌍의 (u, v)량을 해독할 수 있으므로, P=f(u-xA*v)를 계산함으로써(여기서 u-xA*v=v/uxA), 플레인텍스트 메시지(P)를 복구시키며, 여기서 “/”는 연산 *의 역을 표시한다(단계 2707). 연산 “/”와 관련하여 추가적으로 아래에서 상세히 설명한다. 키 교환과 관련하여 상기한 바와 같이, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 사용하여, 식 32의 지수 함수를 적용시킴으로써 uxA량이 제1 FFCU(2411)에 의해 계산될 수 있다. xA를 알고 있는 제1 교신기만이 이러한 메시지를 해독할 수 있다고 가정한다. 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 사용하여, F에 대한 타원 곡선에 대해 상기한 ElGamal 공개키 암호화의 적응을 실행함으로써, 본 발명은 종래의 방법에 비해 증가된 계산 효율을 제공하고, 이것은 종래에 비해 증가된 속도 또는 동일한 계산 노력에 대해 증가된 보안성 중 하나로서 나타날 것이다.
제1 교신기에 의해 쌍의 u 및 v량의 계산과 관련되고 제1 교신기에 의해 쌍의 u 및 v량으로부터 플레인텍스트 메시지(P)를 복구하는 것과 관련된 추가적인 양태에 대하여 설명한다. 표기의 관점에서, 식 49와 연관하여 이미 언급한 바와 같이, (yA)τ, gτ 등과 관련된 지수는 이제부터 r-폴드(또는 xA-폴드) 타원-곡선 점 덧셈을 나타낸다. 따라서 u량을 계산하는 것은 도 27에 관련하여 설명한 방법과 전적으로 유사하고, u는 이제부터 타원-곡선 점으로 된다.
v에 대해서, 연산 * 및 맵핑 함수 f에 대해 고려될 수 있는 두 가지 경우에 대해 설명한다. 두 경우 중 어느 하나에서, 제2 교신기는 f-1(P)*(yA)τ 형태의 값을 계산할 필요가 있고, 여기서(yA)τ는 타원 곡선 상의 점, 즉 FxF에서 (x,y)-좌표쌍이고, x는 데카르트 곱, 즉 F로부터의 원소 쌍을 표시한다. 따라서, f-1은 2차원값으로 구성될 수 있는 값을 생성할 필요가 있다. f-1이 타원 곡선 상의 점이 되는 것을 보장하도록 f가 선택될 수 있는 제1 경우에, *는 단순히 보통 타원-곡선 점 덧셈 연산으로 될 수 있다. 이 경우에서의 제1 교신기에 대해, “/”연산은 점 뺄셈(point subtraction)이다(본 기술 분야에 널리 알려진 덧셈의 역원). 제1 경우에 대해, f 맵핑은 몇 가지 방법으로 실행될 수 있고, 그 예는 다음과 같다. 플레인텍스트 메시지 공간은 lk log2(p)보다 작은 길이의 이진 스트링으로 구성된다고 가정하고, 여기서 l, k, p는 필드 F를 정의하는 값이다. 이것은 일반성의 손상 없이 가정될 수 있음에 유의해야 하는데, 이것은 크기가 긴 메시지를 이러한 길이 제한을 만족하는 더 작은 블록으로 자를 수 있고, 각 블록을 개별적으로 처리할 수 있기 때문이다. 필드 F의 기저 계수 집합으로서 자연적인 방법으로 P를 해석할 수 있다. P는 이러한 기저 계수의 집합과 관련된 원소를 유일하게 결정하지 않는데, 이것은 일부 비트가 불특정으로 남기 때문이다. (불특정 비트의 실제 위치는 사전에 또는 교신기간의 통신 후에 일치될 수 있다.) 불특정 비트에 대해 랜덤값(R)이 할당될 수 있고, F에서 x=x(P,R) 값을 구할 수 있다. 이러한 x값은 식 48의 오른쪽으로서 구해진다. 본 기술 분야에 널리 알려진 바와 같이, 식 48의 동등성을 만족하는 왼쪽 y-값이 존재할 확률은 1/2이고, 존재할 경우, 매칭(matching) y값을 찾는 것은 공지의 방법으로 실행할 수 있다. 매칭 y값이 존재하지 않는 경우, 새로운 랜덤 R 등에 대해 처리를 반복한다. 많은 수의 연속적인 시도에 대해 상기 처리가 반복적으로 실패할 확률은 작다. 상기 방법은 f-1이 제2 교신기에 의해 어떻게 계산될 수 있는가를 설명한다. 타원 곡선 점의 y축을 단순히 버림으로써 또한 랜덤하게 선택된 R-비트에 대응하는 비트-위치를 버림으로써, 제1 교신기는 f를 계산한다.
상기한 절차는 타원 곡선 점으로서 메시지를 끼워 넣는 방법의 일례로서의 구실만을 하고, f를 정의하는 다른 방법도 가능하다. 이러한 방법에 관해, 식 48을 만족하는, 타원 곡선 상의 점을 상기 맵핑이 항상 생성하는 것을 보장하는 것은 일반적으로 약간 복잡할 수 있다. 이것으로 단계 2803 및 2807과 관련된 맵핑 함수(f) 및 연산“*”의 선택에 대한 제1 전형적 경우와 관련된 논의를 종결한다.
맵핑 함수(f) 및 연산“*”의 선택에 대한 제2 전형적 경우에서, 단계 2803 및 2807에서의 계산을 실행하여 타원 곡선 상의 점을 생성하는 것은 필요하지 않다. 따라서 상기한 제2 경우를 포함하는 방법은 더욱 관심의 대상이 될 수 있다. 제2 경우에 대한 하나의 전형적인 방법을 설명한다. 제2 경우에 있어서, FxF에서의 임의값의 적어도 일부를 플레인텍스트 공간에 맵핑하는 맵핑으로 되도록 f를 선택한다. 즉, 48을 만족할 필요가 없는, 약간의 임의 (x, y) 좌표쌍을 생성한다. 이것은 유일한 해독이 거의 항상 보장되도록 실행된다(따라서 필드 F는 일반적으로 적어도 플레인텍스트 공간 크기의 제곱근(square root)만큼 크게 될 필요가 있다). 이러한 f를 찾는 것은 용이하고, 본 기술 분야에 널리 알려져 있다. 예를 들어, 이진 스트링으로 인코딩 된, 기저 계수의 집합으로서 P를 해석함으로써, f는 반드시 항등 사상(identity mapping)이 될 수 있다. 제2 경우에, 조합 연산 *은 F에서의 좌표-단위 곱셈(coordinate-wise multiplication)으로 정의될 수 있다, 즉, (a, b)*(x, y)=(ax, by)이다. 제2 교신기(본 전형적인 설명에서 수신기)에 대해, 연산“/”는 F에서의 좌표단위 나눗셈으로서 대응하여 정의된다(“*”의 역 연산). 타원 곡선 연산보다 좌표-단위 곱셈 및 나눗셈을 사용하는 방법은 Menezes-Vanstone 방법으로서 문헌에 공지되어 있으며, 상기한 바와 같이 본 발명에 적용할 수 있다.
맵핑 함수(f)의 선택에 대한 2가지 경우와 관련된 상기한 방법 둘 다에서, 기저 계수를 표시하는 데이터 비트의 병렬 처리 다중 그룹이 앞서 설명한 바와 같이 생성된다.
도 27 및 28과 관련된 본 발명에 따른 3가지 상기 방법(F에 대한 수정된 ElGamal, E에 플레인텍스트를 끼워 넣어서 F에 대한 타원 곡선 E에 대한 수정된 ElGAmal, E에 플레인텍스트를 끼워 넣지 않고서 F에 대한 타원 곡선 E에 대한 수정된 ElGamal) 모두에서, 함수(f)는 F에 대한 1차원 벡터 공간(즉, F) 또는 2차원 벡터 공간(즉, FxF)의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 것으로 볼 수 있음을 알 수 있다.
다른 전형적인 양태에서, F에 대한 2차원 벡터 공간(즉, FxF)의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 것을 대신하여, F에 대한 3차원 벡터 공간의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 맵핑 함수(f)를 선택할 수 있도록, 상기 방법(2800)은 수정될 수 있다. 이러한 양태에서, 3차원 벡터 공간에서의 투영 좌표가 타원 곡선 방법과 연관되어 사용된다. 상기 방법의 다른 양태는 상기 전형적인 방법(2800)에 대한 도 28에 설명한 것과 동일하다. 투영 좌표는 본 기술 분야에 널리 알려져 있는 것이므로, 이러한 양태에 따라 상기 방법(2800)을 수정하는 것에 대한 논의는 더 이상 필요하지 않다.
본 발명의 다른 양태에서, 암호화, 해독 및/또는 인증(authentication)은 교신기 중 하나에 의해 선택된 보안키를 사용하여 실행될 수 있고, 도 24A에 도시한 안전 채널(2421)과 같은 안전 채널을 통해 교환될 수 있다. 예를 들어, 제1 교신기 또는 제2 교신기 중 하나가 제1 키 소스(2409) 또는 제2 키 소스(2413)를 사용하여 보안키를 생성할 수 있다. 이러한 보안키는 안전 채널(2412)을 통해 교환될 수 있다(예를 들어, 쿠리어(courier)를 사용). 암호화 및 해독은 도 24A에 도시한 FFCU(2411 및 2415)를 사용하여 실행될 수 있다. 이와 관련하여, 24B에서 언급한 암호화 알고리즘이 방법(2450)에 따라 실행할 수 있는 적절한 암호화 알고리즘으로 될 수 있어서, 암호화된 정보는 불안전 채널(2417)을 통해 전송될 수 있다. 다른 예로서, 어떤 종래의 암호화 알고리즘을 사용하여 정보가 암호화될 수 있고, 도 24B에서 언급한 암호화 알고리즘은, 안전 채널(2412)을 통해 교환되는 보안키를 근거로 할 수 있고 상기 방법(2450)에 따라 실행될 수 있는, 어떤 적절한 인증 알고리즘으로 될 수 있다. 상기 방법(2450)에 따라 적절한 인증 알고리즘을 실행하는 것은, 여기서 알려주는 내용의 관점에서, 본 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에 있다.
본 발명의 다른 양태에서, 유한 필드 F에 대한 본 발명의 방법을 사용하여 ElGamal 공개키 암호화를 변형할 수 있고, 여기서 F는 도 24A에 도시한 암호화 시스템(2400)을 사용하여 디지털 사인(digital signatures)을 제공하는 유한 필드 GF(pk) 또는 GF(pk)의 확장 필드이다(p는 홀소수)이다. 예를 들어, 기저 DSA(디지털 사인 알고리즘)을 근거로 한 이러한 변형에 대해 설명한다. 다른 변형도 또한 존재한다.
다시 한번, F에 대해 정의된 그룹, g량(예를 들어, F의 원소 또는 F에 대한 타원 곡선 상의 점), 및 맵핑 함수(f)가, 도 26에서 본 발명에 따라 GF(pk)에 대한 ElGamal 공개키의 전형적인 실현과 관련하여 설명한 바와 같이, 제1 및 제2 교신기에 의해 일치된다. 또한, 제1 교신기는 상기한 사설키(xA)와 공개키(yA)를 생성한다. 메시지(P)(예를 들어, 플레인텍스트 또는 정수로 인코딩된 사이퍼텍스트)를 사인(sign)하기 위해, 제1 교신기는 다음과 같이 진행된다. 제1 교신기는, 예를 들어, 키 소스(2409)에 결합될 수 있는 난수 발생기 또는 의사 난수 발생기를 사용하여, 번호 r(예를 들어, 랜덤 또는 의사 랜덤하게 생성된 정수)을 생성하고, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나와 연계하여 지수 함수(32)를 적용함으로써 제1 FFCU(2411)을 사용하여 a=gr을 계산한다. 상기 번호 r은 다른 교신기와 공유하기 위한 것이 아니며, 이 점에 있어서, 비밀 번호로 고려할 수 있다. 제1 교신기는 다음 식에 대한 해를 계산한다.
(50)
여기서 *는 식 50을 만족하는 b량을 찾기 위한 보통의 곱셈이다. xA로 알려진, 제1 교신기만이 이와 같이 할 수 있다고 가정한다. 메시지 P에 대한 사인(signature)은 쌍(a, b)로 정의된다.
제1 교신기는, 상기한 암호화 방법 중 하나를 적용함으로써 제1 FFCU(2411)을 사용하여 플레인텍스트 메시지 P를 사인할 수 있으므로, 사인(a, b)를 생성하고 불안전 채널(2417)을 통해 제2 교신기로 P 및 쌍(a, b)를 송신한다.
쌍 (a, b)가 제1 교신기의 P에 대한 유효 사인을 표시한다는 것을 증명하기 위해, 제2 교신기는 다음의 u 및 v량을 계산한다.
(51)
(52)
여기서 b-1은 b의 곱셈 역원이고 *는 곱셈(통상의 곱셈)을 표시한다. yA의 계수를 표시하는 제1 데이터 비트의 다수 그룹을 제1 레지스터에 저장하고, g의 표기의 계수를 표시하는 제2 데이터 비트의 다수 그룹을 제2 레지스터에 저장하고, 제1 데이터 비트의 다수 그룹을 병렬로 처리하고, 제2 데이터 비트의 다수 그룹을 병렬로 처리하는, 본 발명의 방법과 연계하여 지수 함수(32)를 적용함으로써, 제2 교신기는 제2 FFCU(2415)를 사용하여 gu(yA)v를 계산한다. 제2 교신기는 gu(yA)v=a인 경우에만 사인을 유효한 것으로 받아들인다. 따라서 본 발명에 따른 필드 GF(pk)를 포함하는 계산 방법은, 디지털 사인에 적용할 수 있고, 해당 계산은 GF(pk)를 포함하는 종래 방법보다 매우 빠르거나, 동일한 계산 노력으로 위조 사인(forged signature)에 대해 현저히 높은 보안성을 제공하도록 실행될 수 있다.
본 발명에 따라 F에 대한 타원 곡선을 사용하는 것은 디지털 사인에 대해 가능한 설정이다. 타원 곡선의 경우에, 디지털 사인의 상기한 실현과 비교하여 고려될 필요가 있는 차이는, 공개키 암호화의 실현에서의 차이와 전적으로 유사하며, 여기서 g는 유한 필드 F의 원소이고(도 27), g는 F에 대한 타원 곡선 상의 점이다(도 28). 따라서 본 발명에 따라 디지털 사인과 연계된 타원 곡선을 사용하는 것에 대해 더 이상의 논의는 필요하지 않다.
본 발명의 다른 양태에서, 앞서 설명한 계산 방법을 사용하여 필드 GF(pt)에서의 계산을 실행하는 의사 난수 발생기를 제공할 수 있다(p는 홀소수). 의사 난수 발생기는 결정론적으로(deterministically) 짧은 랜덤 시드(random seed)를 랜덤하게 나타나는 긴 스트링으로 확장시킨다. 많은 종래의 구조가 본 기술 분야에 알려져 있으며, 이러한 구조는 예를 들어 유한 필드 또는 타원 곡선을 기초로 할 수 있다. 상기한 본 발명의 계산 방법은 그러한 구조를 적용할 수 있다.
예를 들어, F=GF(pn)를, 어떤 t=n/w에 대해 GF(pt)의 확장 필드로서 정의되는 유한 필드라고 한다. 여기서 w는 정수이다. F의 곱셈 그룹의 충분히 큰 서브그룹을 생성하는 F의 필드 원소를 g라고 한다. 또한, ElGamal 공개키 암호화에 대한 본 발명의 적용과 관련하여 상기한 바와 같은 함수를 f라고 한다. 마지막으로, 본 기술 분야에서 널리 알려진 트레이스-맵핑(trace-mapping)을 Tr이라고 하고, 이것은 다음 식에 따라 GF(pt)의 원소에 F의 원소를 맵핑한다. F에서의 임의의 x에 대해,
(53)
마지막으로, 함수 I(x)를 I(x)=gx로서 정의한다.
랜덤 시드(s)(이진 인코딩된 정수)가 입력되면, 생성자는 다음과 같이 정의된다. x0=I(s)로 두고, i=0, 1, 2, ..., T에 대해 xi+1=I(f(xi))로 둔다. T가 작을수록 보안성이 높아지지만, 원칙적으로 T는 매우 크게, 예를 들어 필드 크기의 제곱근에 비교할 수 있을 만큼의 크기로 할 수 있다. 또한, 의사 난수 발생기의 출력은 Tr(x0), Tr(x1), Tr(x2),...의 연결로 정의한다. 이러한 방법은 GF(pt)의 의사 랜덤 원소로 구성되는 출력을 제공한다. 출력으로서 이진 스트링이 요구되면, 적절한 변환 함수가 출력에 적용될 수 있다. 그룹에서의 이산 로그 문제가 처리가 어렵다는 가정 하에서(즉, 계산적으로 불가능), 상기한 의사 난수 발생기는 안전하다. 상기한 바와 같이, 의사 난수 발생기는, 덧셈, 뺄셈, 곱셈 및 지수를 포함하는, GF(pt)에서의 여러 가지 연산을 이용하고, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 근거로 한 상기한 본 발명의 방법은 필수적인 계산을 효율적으로 실행하는 데 이용될 수 있다.
여기서 설명한 실시예들은 단지 예시를 위한 것일 뿐, 어떤 방식으로도 제한하는 것으로 고려되어서는 안 된다. 본 발명의 범위는 앞서 설명한 것보다는 첨부한 청구범위에 의해 주어지며, 청구범위 내에 있는 모든 변형 및 등가물은 여기에 포함되는 것으로 해석된다.
본 출원은 미국특허출원 “Efficient arithmetic in finite fields of odd characteristic on binary hardware", 일련번호 10/271,730(Attorney Docket No. 040000-793), 및 미국특허출원 "Error correction using finite fields of odd characteristic on binary hardware", 일련번호 No. 10/271,945(Attorney Docket No. 040001-178)과 관련된 것으로서, 둘 다 동일자로 출원되었으며, 그 공개된 내용은 전체적으로 참조되어 본 명세서에 포함된다.

Claims (53)

  1. 암호화 장치에 있어서,
    키 소스; 및
    상기 키 소스와 결합하는 홀-표수 유한-필드 암호화부를 포함하며,
    상기 홀-표수 유한-필드 암호화부는
    홀-표수 유한 필드 GF(pk)의 필드 원소의 적어도 일부를 표시하는 이진 데이터를 레지스터에 저장하고, p는 홀소수이고, 상기 필드 원소는 다항식-기저 표기법에 따라 k 계수를 포함하고, 이진 데이터는 데이터 비트의 다수 그룹을 포함하고, 데이터 비트의 각 그룹은 k 계수 중 연관된 하나를 표시하며,
    데이터 비트의 다수 그룹이 병렬로 처리되도록 암호화 알고리즘에 따라 이진 데이터를 처리하는 것을 특징으로 하는 암호화 장치.
  2. 제1항에서,
    상기 레지스터에 저장된 이진 데이터는 필드 원소의 모든 k 계수를 표시하는 것을 특징으로 하는 암호화 장치.
  3. 제1항에서,
    상기 암호화 알고리즘은 키-교환 알고리즘 및 공개키 암호화 알고리즘 중 하나인 것을 특징으로 하는 암호화 장치.
  4. 제1항에서,
    적어도 하나의 가드 비트가 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하도록, 데이터 비트의 다수 그룹들이 레지스터에 저장되고, 데이터 비트의 각 그룹은 해당하는 적어도 하나의 가드 비트에 의해 데이터 비트의 인접 그룹으로부터 분리되는 것을 특징으로 하는 암호화 장치.
  5. 제4항에서,
    적어도 하나의 가드 비트 각각에는 영(0)의 초기값이 할당되는 것을 특징으로 하는 암호화 장치.
  6. 제4항에서,
    하나의 가드 비트가 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하는 것을 특징으로 하는 암호화 장치.
  7. 제4항에서,
    다중 가드 비트가 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하는 것을 특징으로 하는 암호화 장치.
  8. 암호화 방법에 있어서,
    홀-표수 유한 필드 GF(pk)의 필드 원소의 적어도 일부를 표시하는 이진 데이터를 레지스터에 저장하는 단계, 여기서 p는 홀소수이고, 상기 필드 원소는 다항식-기저 표기법에 따라 k 계수를 포함하고, 이진 데이터는 데이터 비트의 다수 그룹을 포함하고, 여기서 데이터 비트의 각 그룹은 k 계수 중 연관된 하나를 표시함; 및
    데이터 비트의 다수 그룹이 병렬로 처리되도록 암호화 알고리즘에 따라 이진 데이터를 처리하는 단계를 포함하는 것을 특징으로 하는 암호화 방법.
  9. 제8항에서,
    상기 레지스터에 저장된 이진 데이터는 필드 원소의 모든 k 계수를 표시하는 것을 특징으로 하는 암호화 방법.
  10. 제8항에서,
    상기 암호화 알고리즘은 키-교환 알고리즘 및 공개키 암호화 알고리즘 중 하나인 것을 특징으로 하는 암호화 방법.
  11. 제8항에서,
    적어도 하나의 가드 비트가 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하도록, 데이터 비트의 다수 그룹들을 레지스터에 저장하는 단계를 포함하고, 데이터 비트의 각 그룹은 해당하는 적어도 하나의 가드 비트에 의해 데이터 비트의 인접 그룹으로부터 분리되는 것을 특징으로 하는 암호화 방법.
  12. 제11항에서,
    적어도 하나의 가드 비트 각각에 영(0)의 초기값을 할당하는 단계를 포함하는 것을 특징으로 하는 암호화 방법.
  13. 제11항에서,
    하나의 가드 비트가 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하는 것을 특징으로 하는 암호화 방법.
  14. 제11항에서,
    다중 가드 비트가 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하는 것을 특징으로 하는 암호화 방법.
  15. 암호화 장치에 있어서,
    메모리; 및
    상기 메모리와 결합된 처리부를 포함하며,
    상기 처리부는
    번호 xA를 생성하고,
    yA를 생성 및 송신하고, 여기서 yA=gxA이고, g는 F의 원소 또는 F에 대한 타원 곡선 상의 점이고, F는 홀-표수 유한 필드 GF(pk) 또는 GF(pk)의 확장 필드이고, p는 홀소수이고, 여기서 g는 다수의 제1 기저 계수를 포함하고, 제1 기저 계수는 GF(p)의 원소이고, 여기서 g의 다수 제1 기저 계수 중 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹을 제1 레지스터에 저장하고 병렬로 처리하여 yA를 생성하고,
    yB를 수신하고, 여기서 yB=gxB이고, 여기서 yB는 다수 제2 기저 계수를 포함하고, 제2 기저 계수는 GF(p)의 원소이고,
    yB의 다수 제2 기저 계수 중 적어도 일부를 표시하는 제2 데이터 비트의 다중 그룹을 제2 레지스터에 저장하고,
    제2 데이터 비트의 다중 그룹을 병렬로 처리하여 K=(yB)xA를 계산하도록,
    구성되어, 상기 처리부는 보안키를 생성하는 것을 특징으로 하는 암호화 장치.
  16. 제15항에서,
    상기 번호 xA는 랜덤 또는 의사 랜덤하게 발생된 정수인 것을 특징으로 하는 암호화 장치.
  17. 제15항에서,
    적어도 하나의 제1 가드 비트가 제1 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하도록, 제1 데이터 비트의 다수 그룹들이 제1 레지스터에 저장되고, 제1 데이터 비트의 각 그룹은 해당하는 적어도 하나의 제1 가드 비트에 의해 제1 데이터 비트의 인접 그룹으로부터 분리되는 것을 특징으로 하는 암호화 장치.
  18. 제17항에서,
    적어도 하나의 제1 가드 비트 각각에는 영(0)의 초기값이 할당되는 것을 특징으로 하는 암호화 장치.
  19. 제15항에서,
    g와 yB는 F의 원소인 것을 특징으로 하는 암호화 장치.
  20. 제15항에서,
    g와 yB는 F에 대한 타원 곡선 상의 점인 것을 특징으로 하는 암호화 장치.
  21. 키 교환 방법에 있어서,
    번호 xA를 생성하는 단계;
    yA를 생성 및 송신하는 단계, 여기서 yA=gxA이고, g는 F의 원소 또는 F에 대한 타원 곡선 상의 점이고, F는 홀-표수 유한 필드 GF(pk) 또는 GF(pk)의 확장 필드이고, p는 홀소수이고, 여기서 g는 다수의 제1 기저 계수를 포함하고, 제1 기저 계수는 GF(p)의 원소이고, 여기서 g의 다수 제1 기저 계수 중 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹을 제1 레지스터에 저장하고 병렬로 처리하여 yA를 생성함;
    yB를 수신하는 단계, 여기서 yB=gxB이고, 여기서 yB는 다수 제2 기저 계수를 포함하고, 제2 기저 계수는 GF(p)의 원소임;
    yB의 다수 제2 기저 계수 중 적어도 일부를 표시하는 제2 데이터 비트의 다중 그룹을 제2 레지스터에 저장하는 단계; 및
    제2 데이터 비트의 다중 그룹을 병렬로 처리하여 K=(yB)xA를 계산하는 단계를 포함하여,
    보안키를 생성하는 것을 특징으로 하는 키 교환 방법.
  22. 제21항에서,
    상기 번호 xA는 랜덤 또는 의사 랜덤하게 발생된 정수인 것을 특징으로 하는 키 교환 방법.
  23. 제21항에서,
    적어도 하나의 제1 가드 비트가 제1 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하도록, 제1 데이터 비트의 다수 그룹들이 제1 레지스터에 저장되고, 제1 데이터 비트의 각 그룹은 해당하는 적어도 하나의 제1 가드 비트에 의해 제1 데이터 비트의 인접 그룹으로부터 분리되는 것을 특징으로 하는 키 교환 방법.
  24. 제23항에서,
    적어도 하나의 제1 가드 비트 각각에는 영(0)의 초기값이 할당되는 것을 특징으로 하는 키 교환 방법.
  25. 제21항에서,
    g와 yB는 F의 원소인 것을 특징으로 하는 키 교환 방법.
  26. 제21항에서,
    g와 yB는 F에 대한 타원 곡선 상의 점인 것을 특징으로 하는 키 교환방법.
  27. 다수의 단계를 실행하기 위해 컴퓨터를 프로그램 하도록 적응되는 컴퓨터-판독가능 캐리어에 있어서, 상기 다수의 단계들은
    번호 xA를 생성하는 단계;
    yA를 생성 및 송신하는 단계, 여기서 yA=gxA이고, g는 F의 원소 또는 F에 대한 타원 곡선 상의 점이고, F는 홀-표수 유한 필드 GF(pk) 또는 GF(pk)의 확장 필드이고, p는 홀소수이고, 여기서 g는 다수의 제1 기저 계수를 포함하고, 제1 기저 계수는 GF(p)의 원소이고, 여기서 g의 다수 제1 기저 계수 중 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹을 제1 레지스터에 저장하고 병렬로 처리함;
    yB를 수신하는 단계, 여기서 yB=gxB이고, 여기서 yB는 다수 제2 기저 계수를 포함하고, 제2 기저 계수는 GF(p)의 원소임;
    yB의 다수 제2 기저 계수 중 적어도 일부를 표시하는 제2 데이터 비트의 다중 그룹을 제2 레지스터에 저장하는 단계; 및
    제2 데이터 비트의 다중 그룹을 병렬로 처리하여 K=(yB)xA를 계산하는 단계를 포함하여,
    보안키를 생성하는 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
  28. 제27항에서,
    상기 번호 xA는 랜덤 또는 의사 랜덤하게 발생된 정수인 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
  29. 제27항에서,
    적어도 하나의 제1 가드 비트가 제1 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하도록, 제1 데이터 비트의 다수 그룹들이 제1 레지스터에 저장되고, 제1 데이터 비트의 각 그룹은 해당하는 적어도 하나의 제1 가드 비트에 의해 제1 데이터 비트의 인접 그룹으로부터 분리되는 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
  30. 제29항에서,
    적어도 하나의 제1 가드 비트 각각에는 영(0)의 초기값이 할당되는 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
  31. 제27항에서,
    g와 yB는 F의 원소인 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
  32. 제27항에서,
    g와 yB는 F에 대한 타원 곡선 상의 점인 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
  33. 암호화 장치에 있어서,
    메모리; 및
    상기 메모리에 결합된 처리부를 포함하며,
    상기 처리부는
    제1 교신기와 관련된 공개키 yA를 구하고, 여기서 yA=gxA 이고, 여기서 xA는 제1 교신기의 사설키이고, g는 유한 필드 F의 원소이거나 F에 대한 타원 곡선 상의 점이고, F는 홀-표수 유한 필드 GF(pk)이거나 GF(pk)의 확장 필드이고, p는 홀소수이며, 여기서 yA는 다수의 제1 기저 계수를 포함하고, 여기서 g는 다수의 제2 기저 계수를 포함하고, 제1 및 제2 기저 계수는 GF(p)의 원소이며,
    번호 r을 생성하고 u=gr v=f-1(P)*(yA)r에서 쌍의 (u, v)량을 계산하고, 여기서 P는 플레인텍스트 메시지 집합의 플레인텍스트 메시지를 표시하고, f는 F에 대한 벡터 공간의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 맵핑 함수이고, *는 상기 벡터 공간에서의 이진 연산을 표시하고, 여기서 yA의 다수의 제1 기저 계수의 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹은 제1 레지스터에 저장되고 병렬로 처리되어 v를 계산하고,
    쌍의 (u, v)량을 제1 교신기로 송신하고, 여기서 상기 쌍의 양은 플레인텍스트 메시지의 암호화된 버전에 대응하도록,
    구성되는 것을 특징으로 하는 암호화 장치.
  34. 제33항에서,
    상기 번호 r은 랜덤 또는 의사 랜덤하게 발생된 정수인 것을 특징으로 하는 암호화 장치.
  35. 제33항에서,
    적어도 하나의 제1 가드 비트가 제1 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하도록, 제1 데이터 비트의 다수 그룹들이 제1 레지스터에 저장되고, 제1 데이터 비트의 각 그룹은 해당하는 적어도 하나의 제1 가드 비트에 의해 제1 데이터 비트의 인접 그룹으로부터 분리되는 것을 특징으로 하는 암호화 장치.
  36. 제35항에서,
    적어도 하나의 제1 가드 비트 각각에는 영(0)의 초기값이 할당되는 것을 특징으로 하는 암호화 장치.
  37. 제33항에서,
    g, u, v는 F의 원소이고, *는 F에서의 곱셈을 표시하고, f는 F의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 것을 특징으로 하는 암호화 장치.
  38. 제33항에서,
    g, u, v는 F에 대한 타원 곡선 상의 점이고, *는 FxF에서 타원-곡선 점 덧셈 또는 성분-단위 곱셈을 표시하고, f는 FxF의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 것을 특징으로 하는 암호화 장치.
  39. 제33항에서,
    g의 다수 제2 기저 계수의 적어도 일부를 표시하는 제2 데이터 비트의 다중 그룹이 제2 레지스터에 저장되고 병렬로 처리되어, u를 계산하는 것을 특징으로 하는 암호화 장치.
  40. 공개키 암호화 방법에 있어서,
    제1 교신기와 관련된 공개키 yA를 구하는 단계, 여기서 yA=gxA 이고, 여기서 xA는 제1 교신기의 사설키이고, g는 유한 필드 F의 원소이거나 F에 대한 타원 곡선 상의 점이고, F는 홀-표수 유한 필드 GF(pk)이거나 GF(pk)의 확장 필드이고, p는 홀소수이며, 여기서 yA는 다수의 제1 기저 계수를 포함하고, 여기서 g는 다수의 제2 기저 계수를 포함하고, 제1 및 제2 기저 계수는 GF(p)의 원소임;
    번호 r을 생성하고 u=gr v=f-1(P)*(yA)r에서 쌍의 (u, v)량을 계산하는 단계, 여기서 P는 플레인텍스트 메시지 집합의 플레인텍스트 메시지를 표시하고, f는 F에 대한 벡터 공간의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 맵핑 함수이고, *는 상기 벡터 공간에서의 이진 연산을 표시하고, 여기서 yA의 다수의 제1 기저 계수의 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹은 제1 레지스터에 저장되고 병렬로 처리되어 v를 계산함; 및
    쌍의 (u, v)량을 제1 교신기로 송신하는 단계, 여기서 상기 쌍의 양은 플레인텍스트 메시지의 암호화된 버전에 대응함;
    를 포함하는 것을 특징으로 하는 암호화 방법.
  41. 제40항에서,
    상기 번호 r은 랜덤 또는 의사 랜덤하게 발생된 정수인 것을 특징으로 하는 암호화 방법.
  42. 제40항에서,
    적어도 하나의 제1 가드 비트가 제1 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하도록, 제1 데이터 비트의 다수 그룹들이 제1 레지스터에 저장되고, 제1 데이터 비트의 각 그룹은 해당하는 적어도 하나의 제1 가드 비트에 의해 제1 데이터 비트의 인접 그룹으로부터 분리되는 것을 특징으로 하는 암호화 방법.
  43. 제42항에서,
    적어도 하나의 제1 가드 비트 각각에는 영(0)의 초기값이 할당되는 것을 특징으로 하는 암호화 방법.
  44. 제40항에서,
    g, u, v는 F의 원소이고, *는 F에서의 곱셈을 표시하고, f는 F의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 것을 특징으로 하는 암호화 방법.
  45. 제40항에서,
    g, u, v는 F에 대한 타원 곡선 상의 점이고, *는 FxF에서 타원-곡선 점 덧셈 또는 성분-단위 곱셈을 표시하고, f는 FxF의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 것을 특징으로 하는 암호화 방법.
  46. 제40항에서,
    g의 다수 제2 기저 계수의 적어도 일부를 표시하는 제2 데이터 비트의 다중 그룹이 제2 레지스터에 저장되고 병렬로 처리되어, u를 계산하는 것을 특징으로 하는 암호화 방법.
  47. 다수의 단계를 실행하기 위해 컴퓨터를 프로그램 하도록 적응되는 컴퓨터-판독가능 캐리어에 있어서, 상기 다수의 단계들은
    제1 교신기와 관련된 공개키 yA를 구하는 단계, 여기서 yA=gxA 이고, 여기서 xA는 제1 교신기의 사설키이고, g는 유한 필드 F의 원소이거나 F에 대한 타원 곡선 상의 점이고, F는 홀-표수 유한 필드 GF(pk)이거나 GF(pk)의 확장 필드이고, p는 홀소수이며, 여기서 yA는 다수의 제1 기저 계수를 포함하고, 여기서 g는 다수의 제2 기저 계수를 포함하고, 제1 및 제2 기저 계수는 GF(p)의 원소임;
    번호 r을 생성하고 u=gr v=f-1(P)*(yA)r에서 쌍의 (u, v)량을 계산하는 단계, 여기서 P는 플레인텍스트 메시지 집합의 플레인텍스트 메시지를 표시하고, f는 F에 대한 벡터 공간의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 맵핑 함수이고, *는 상기 벡터 공간에서의 이진 연산을 표시하고, 여기서 yA의 다수의 제1 기저 계수의 적어도 일부를 표시하는 제1 데이터 비트의 다중 그룹은 제1 레지스터에 저장되고 병렬로 처리되어 v를 계산함; 및
    쌍의 (u, v)량을 제1 교신기로 송신하는 단계, 여기서 상기 쌍의 양은 플레인텍스트 메시지의 암호화된 버전에 대응함;
    를 포함하는 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
  48. 제47항에서,
    상기 번호 r은 랜덤 또는 의사 랜덤하게 발생된 정수인 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
  49. 제47항에서, 상기 컴퓨터-판독가능 캐리어는 컴퓨터를 프로그램 하도록 적응되어,
    적어도 하나의 제1 가드 비트가 제1 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하도록, 제1 데이터 비트의 다수 그룹들이 제1 레지스터에 저장되고, 제1 데이터 비트의 각 그룹은 해당하는 적어도 하나의 제1 가드 비트에 의해 제1 데이터 비트의 인접 그룹으로부터 분리되게 하는 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
  50. 제49항에서, 상기 컴퓨터-판독가능 캐리어는 컴퓨터를 프로그램 하도록 적응되어,
    적어도 하나의 제1 가드 비트 각각에 영(0)의 초기값이 할당되게 하는 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
  51. 제47항에서,
    g, u, v는 F의 원소이고, *는 F에서의 곱셈을 표시하고, f는 F의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
  52. 제47항에서,
    g, u, v는 F에 대한 타원 곡선 상의 점이고, *는 FxF에서 타원-곡선 점 덧셈 또는 성분-단위 곱셈을 표시하고, f는 FxF의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
  53. 제47항에서,
    g의 다수 제2 기저 계수의 적어도 일부를 표시하는 제2 데이터 비트의 다중 그룹이 제2 레지스터에 저장되고 병렬로 처리되어, u를 계산하는 것을 특징으로 하는 컴퓨터-판독가능 캐리어.
KR1020057006616A 2002-10-17 2003-10-07 이진 하드웨어에서 홀수 표수의 유한 필드를 사용하는암호화 KR20050061544A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/271,730 US7197527B2 (en) 2002-10-17 2002-10-17 Efficient arithmetic in finite fields of odd characteristic on binary hardware
US10/271,730 2002-10-17

Publications (1)

Publication Number Publication Date
KR20050061544A true KR20050061544A (ko) 2005-06-22

Family

ID=32092513

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057006616A KR20050061544A (ko) 2002-10-17 2003-10-07 이진 하드웨어에서 홀수 표수의 유한 필드를 사용하는암호화

Country Status (5)

Country Link
US (1) US7197527B2 (ko)
EP (1) EP1552642A1 (ko)
KR (1) KR20050061544A (ko)
AU (1) AU2003267914A1 (ko)
WO (1) WO2004036822A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101252318B1 (ko) * 2005-05-12 2013-04-08 인사이드 씨큐어 랜덤화된 모듈러 다항식 약분 방법 및 그 방법을 위한하드웨어

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040158597A1 (en) * 2001-04-05 2004-08-12 Ye Ding Feng Method and apparatus for constructing efficient elliptic curve cryptosystems
US7289945B2 (en) * 2002-10-28 2007-10-30 Intel Corporation Analyzing interconnect structures
KR100486726B1 (ko) * 2002-11-09 2005-05-03 삼성전자주식회사 유한 체에서의 기저 변환 방법 및 기저 변환 장치
US8526601B2 (en) * 2004-04-05 2013-09-03 Advanced Micro Devices, Inc. Method of improving operational speed of encryption engine
US7668895B2 (en) * 2004-12-01 2010-02-23 Integrated System Solution Corp. Galois field computation
CA2594670C (en) * 2005-01-21 2014-12-23 Certicom Corp. Elliptic curve random number generation
DE102005028662B4 (de) * 2005-03-04 2022-06-02 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Verfahren und Vorrichtung zum Berechnen einer Polynom-Multiplikation, insbesondere für die elliptische Kurven-Kryptographie
US7443094B2 (en) * 2005-03-31 2008-10-28 Dowa Electronics Materials Co., Ltd. Phosphor and manufacturing method of the same, and light emitting device using the phosphor
JP4555145B2 (ja) * 2005-04-28 2010-09-29 富士通株式会社 バッチスケジューリングプログラム、バッチスケジューリング方法およびバッチスケジューリング装置
FR2887048A1 (fr) * 2005-06-14 2006-12-15 France Telecom Procede et dispositif pour engendrer une suite pseudo-aleatoire
DE102006013989A1 (de) * 2006-03-22 2007-09-27 IHP GmbH - Innovations for High Performance Microelectronics/Institut für innovative Mikroelektronik Verfahren zur Reduktion eines Polynoms in einem binären finiten Feld
US7991162B2 (en) * 2007-09-14 2011-08-02 University Of Ottawa Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields
CN101925942B (zh) * 2008-02-20 2013-11-27 三菱电机株式会社 验证装置
WO2010112739A1 (fr) * 2009-03-31 2010-10-07 France Telecom Procede pour effectuer une tache cryptographique dans un composant electronique
US8615649B2 (en) * 2010-09-21 2013-12-24 International Business Machines Corporation Use of a private key to encrypt and decrypt a message
US20120140921A1 (en) * 2010-12-01 2012-06-07 King Fahd University Of Petroleum And Minerals Rsa-analogous xz-elliptic curve cryptography system and method
EP2718844B1 (en) 2011-06-06 2019-08-07 Certicom Corp. Squaring binary finite field elements
CN104011732B (zh) * 2011-12-30 2018-06-15 英特尔公司 双合成域高级加密标准存储器加密引擎
US8943511B2 (en) * 2012-05-31 2015-01-27 Nec Corporation Parallel allocation optimization device, parallel allocation optimization method, and computer-readable recording medium
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
US10075289B2 (en) 2015-11-05 2018-09-11 Microsoft Technology Licensing, Llc Homomorphic encryption with optimized parameter selection
US10153894B2 (en) 2015-11-05 2018-12-11 Microsoft Technology Licensing, Llc Homomorphic encryption with optimized encoding
US9900147B2 (en) * 2015-12-18 2018-02-20 Microsoft Technology Licensing, Llc Homomorphic encryption with optimized homomorphic operations
US10296709B2 (en) 2016-06-10 2019-05-21 Microsoft Technology Licensing, Llc Privacy-preserving genomic prediction
US11165578B1 (en) * 2018-08-16 2021-11-02 Pqsecure Technologies, Llc Efficient architecture and method for arithmetic computations in post-quantum cryptography

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4354228A (en) * 1979-12-20 1982-10-12 International Business Machines Corporation Flexible processor on a single semiconductor substrate using a plurality of arrays
EP0080528A1 (en) 1981-11-30 1983-06-08 Omnet Associates Computational method and apparatus for finite field arithmetic
EP0085130A1 (en) 1982-02-02 1983-08-10 Omnet Associates Method and apparatus for maintaining the privacy of digital messages conveyed by public transmission
US4875211A (en) 1986-12-10 1989-10-17 Matsushita Electric Industrial Co., Ltd. Galois field arithmetic logic unit
US4891781A (en) * 1987-03-04 1990-01-02 Cylink Corporation Modulo arithmetic processor chip
JP3328093B2 (ja) * 1994-07-12 2002-09-24 三菱電機株式会社 エラー訂正装置
GB9707861D0 (en) * 1997-04-18 1997-06-04 Certicom Corp Arithmetic processor
US5854759A (en) 1997-05-05 1998-12-29 Rsa Data Security, Inc. Methods and apparatus for efficient finite field basis conversion
US20040158597A1 (en) * 2001-04-05 2004-08-12 Ye Ding Feng Method and apparatus for constructing efficient elliptic curve cryptosystems
US6912240B2 (en) * 2001-11-26 2005-06-28 Time Domain Corporation Method and apparatus for generating a large number of codes having desirable correlation properties

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101252318B1 (ko) * 2005-05-12 2013-04-08 인사이드 씨큐어 랜덤화된 모듈러 다항식 약분 방법 및 그 방법을 위한하드웨어

Also Published As

Publication number Publication date
WO2004036822A1 (en) 2004-04-29
US20040078407A1 (en) 2004-04-22
US7197527B2 (en) 2007-03-27
EP1552642A1 (en) 2005-07-13
AU2003267914A1 (en) 2004-05-04

Similar Documents

Publication Publication Date Title
KR20050061544A (ko) 이진 하드웨어에서 홀수 표수의 유한 필드를 사용하는암호화
EP1552382B1 (en) Efficient arithmetic in finite fields of odd characteristic on binary hardware
Costello et al. Efficient algorithms for supersingular isogeny Diffie-Hellman
US6618483B1 (en) Elliptic curve encryption systems
EP2279579B1 (en) A closed galois field cryptographic system
EP0963635B1 (en) Cyclotomic polynomial construction of discrete logarithm cryptosystems over finite fields
Eisenbarth et al. MicroEliece: McEliece for embedded devices
US6266688B1 (en) Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
US7243292B1 (en) Error correction using finite fields of odd characteristics on binary hardware
US20220407719A1 (en) Methods and systems for encrypting rational numbers and adding randomness to rsa cryptosystems using p-adic numbers
Massolino et al. Optimized and scalable co-processor for McEliece with binary Goppa codes
EP0952697A2 (en) Elliptic curve encryption method and system
Chou et al. Elliptic curve cryptography and its applications to mobile devices
JPH11109859A (ja) 擬似乱数発生方法および装置
US20040174995A1 (en) Cryptosystems
Gómez-Torrecillas et al. Skew differential Goppa codes and their application to Mceliece cryptosystem
Rodriguez-Henriquez New algorithms and architectures for arithmetic in GF (2 (m)) suitable for elliptic curve cryptography
US20240163074A1 (en) Circuit for a Combined Key Value-Dependent Exchange and Randomization of Two Values
US20240163085A1 (en) Method for Combined Key Value-Dependent Exchange and Randomization of Two Input Values
US8340281B2 (en) Efficient method and apparatus for modular inverses
Kultinov Software Implementations and Applications of Elliptic Curve Cryptography
CA2640641C (en) Public key cryptography utilizing elliptic curves
CA2711188C (en) Public key cryptography utilizing elliptic curves
ES2948323A1 (es) Procedimiento y dispositivo de cifrado/descifrado post-cuántico usando códigos lineales
Abdulrahman Efficient arithmetic for the implementation of elliptic curve cryptography

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid