KR20050061544A - Cryptography using finite fields of odd characteristic on binary hardware - Google Patents
Cryptography using finite fields of odd characteristic on binary hardware Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus 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
Description
본 발명은 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)에 관한 것인데, 여기에 첨부된 모든 제출 명세서는 전체에서 참조된다. The present invention is U.S. Serial No. entitled "Efficient arithmetic in finite fields of odd characteristic on binary hardware", of the invention of the patent application. 10 / 271,730 (Attroney Docket No. 040000-793), and U.S. Serial No., entitled "Error correction using finite fields of odd characteristic on binary hardware", of the invention of the patent application. 10 / 271,945 (Attorney Docket No. 040001-178), all of which are hereby incorporated by reference in their entirety.
본 발명은 이진 하드웨어(binary hardware) 상에서 홀소수 표수(odd prime characteristic)의 유한 필드(finite field)에서의 계산을 효과적으로 실행하는 방법 및 장치에 관한 것이다. 특히, 본 발명은 암호법 및 에러 정정에서의 계산을 실행하기 위해 유용하지만, 그러한 이용으로만 제한되는 것은 아니다.The present invention relates to a method and apparatus for efficiently performing calculations in a finite field of odd prime characteristic on binary hardware. In particular, the present invention is useful for performing calculations in cryptography and error correction, but is not limited to such use.
유한 필드의 기본 형태Basic form of 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"와 같은 텍스트북에서 논의되어 있다.Finite fields (also known as Galois fields) are finite algebraic structures that handle two well-defined operations: add and multiply. As described by R. Lidl and H. Niederriter in “ Introduction to Finite Field and Their Applications , Cambridge University Press, Cambridge, Revised ed., 1994.” N is the power of prime number. only, i.e. only some few p = 2, 3, 5, one for .. N = p n, there is a finite field with N elements. this field will only reach the same type (isomorphism) typically GF ( p n ) For prime numbers p, the ground field GP (p) is simply an integer in the add and multiply modulo p. In general, F is a q = p k element. If the field of (i.e., F = GF (p k )), the order of the extended field l can be defined, whereby F (t) / (f (t)), where f (t) is the order It is a polynomial of l and is a contract for F. This extended field is also called GF (p l k ), which gives (the only) finite field of q l elements, that is, it is p lk = p n elements. The number p is called the characteristic of the field The well-known fact that two equally sized fields are homogeneous does not necessarily mean that the mapping between fields is trivial, but such mapping The structure of is not essential to the present invention and, in some cases, is within the comprehension of one of ordinary skill in the art and is discussed in a textbook such as “ Introduction to Finite Fields and Their Applications ” above. .
유한 필드를 나타내는 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)에 논의되어 있으며, 이들 각각의 전체 내용은 참조되어 여기에 포함된다.There are two main ways of representing finite fields. One representation is well known to those of ordinary skill in the art and is a normal basis representation, as detailed above in “ Introduction to Finite Fields and Their Applications. ” The main advantage is that it is easy to multiply elements by themselves, that is, squaring-type operations, which are not discussed further here. Patent 4,587,627 (Computational method and apparatus for finite field arithmetic), U.S. Patent 4,567,600 (Method and apparatus for maintaining the privacy of digital messages conveyed by pulbic transmission) and U.S. Patent 5,854,759 (Method and apparatus for efficient finite field basis conversion, the entire contents of each of which are incorporated herein by reference.
다른 표기법은 다항식 기저 표기법(polynomial basis representation)으로 알려져 있다. 이 표기법에서 GF(pk)의 필드 원소는 그 계수가 그라운드 필드 GF(p)의 필드 원소, 즉 집합(0, ..., p-1)에서 정수인, 최대한 차수 k-1의 다항식으로 생각할 수 있다. 그러므로 전형적인 원소, γ는 필드에서 어떤 정수 γi 에 대해 다음과 같이 표시될 수 있다.Another notation is known as polynomial basis representation. In this notation, the field element of GF (p k ) can be thought of as a polynomial of order k-1, whose coefficient is the field element of ground field GF (p), that is, an integer in the set (0, ..., p-1). Can be. Therefore, the typical element, γ can be expressed as follows for any integer γ i in the field.
(1) (One)
여기서, 0≤γi≤p-1, t=는 형식 변수(formal variable)이다. 필드 원소 γ는 k-차원 벡터(γk-1, ..., γ1, γ0)로서 볼 수도 있고, 여기서 언급한 다항식 기저 표기법은 이러한 관점을 포함할 계획이다. 다항식 기저 표기법의 다른 형태는 필드 원소의 곱셈에 이용되는, 차수 k 및 GF(p)에 대해 기약(irreducible)인 다항식 h(t)를 선택하는 것이다. 이것에 대해서는 아래에서 더욱 상세히 논의할 것이다. 동일 크기의 임의의 두 필드가 동형이므로, 기약 h(t)가 선택된다는 것은 문제되지 않는다. 시스템의 관점으로부터, h(t)는 특정 용도에 대해 의견이 일치하는 시스템 파라미터이다.Here, 0 ≦ γ i ≦ p-1, t = is a formal variable. The field element γ can also be viewed as a k- dimensional vector (γ k-1 ,..., Γ 1 , γ 0 ), and the polynomial basis notation mentioned here is planned to include this view. Another form of polynomial basis notation is to select a polynomial h (t) that is irreducible for orders k and GF (p), used for multiplication of field elements. This will be discussed in more detail below. Since any two fields of the same size are homogeneous, it does not matter that the contract h (t) is selected. From the system's point of view, h (t) is a system parameter that agrees on a particular application.
상기한 바와 같이, 필드 F=GF(pk)에 대한 차수 l의 확장 필드 F[t]/(f(t)) 또는 GF(p l k)로서 표시할 수 있다. 확장 필드의 원소는 그 계수가 GF(pk)의 원소인, 최대한 차수 l-1의 다항식으로 간주될 수 있다. 다시 말해, 확장 필드의 원소는 다른 다항식을 필드 계수로 갖는 다항식으로 볼 수 있다. 확장 필드의 원소 γ는 다음과 같다.As described above, it can be expressed as an extension field F [t] / (f (t)) or GF (p l k ) of order l with respect to field F = GF (p k ). The elements of the extended field can be considered as polynomials of degree l −1, whose coefficients are elements of GF (p k ). In other words, the elements of an extended field can be viewed as polynomials with other polynomials as field coefficients. The element γ of the extended field is as follows.
(2) (2)
여기서, 각 γj는 집합(0, ..., p-1)에서 계수를 가지는 최대한 차수 k-1의 다항식이다. 따라서 다항식 γj는 다음과 같다.Here, each gamma j is a polynomial of maximum order k-1 having coefficients in the set (0, ..., p-1). Thus, polynomial γ j is
(3) (3)
여기서, 형식 변수가 t인 확장-필드 다항식과의 혼동을 피하기 위해, 다른 형식 변수 u를 이러한 다항식을 위해 선택하였다. 다항식 기저 표기법을 사용하는 이러한 확장 필드 공식은 본 발명을 설명하기 위해 사용될 것이다.Here, to avoid confusion with an extension-field polynomial where the formal variable is t, another formal variable u was chosen for this polynomial. This extended field formula using polynomial base notation will be used to illustrate the present invention.
GF(pk)에서 두 원소 α, β의 합은 해당 다항식(또는, 동등하게 벡터)을 단순히 더함으로써 정의된다.The sum of two elements α, β in GF (p k ) is defined by simply adding the corresponding polynomial (or equivalent vector).
(4) (4)
여기서 각 (정수)계수 (αi+βi)는 모듈로 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 로 감소된다.Where each (integer) coefficient (α i + β i ) is calculated modulo p. The complexity (in terms of modulo-p operations) of adding two elements directly using the definition in equation (4) above is equal to k. For example, for a finite field GF (3 2 ) with p = 3, the field element α = (2,1) can be written by the polynomial α = 2t + 1 in vector notation, and the field element β = ( 2,2) can be written as polynomial β + 2t + 1. The sum of these field elements is (α + β) = (2 + 2) t + (1 + 2), where each coefficient is found as modulo 3 (mod 3). Therefore, the sum is reduced to (α + β) = t since 4 mod 3 and 3 mod 3 = 0.
두 필드 원소의 곱은 그 곱 모듈로 h(t)를 형성함으로써 정의되고, 여기서 h(t)는 차수 k 및 GF(p)에 대해 기약인(즉, 인수분해 불가능) 다항식이다. The product of two field elements is defined by forming h (t) with the product modulus, where h (t) is a polynomial that is shorthand (ie, non-factorial) with respect to order k and GF (p).
(5) (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값에 대해서만 유리하다.Where δ i = ∑ j α j β ij mod p. “Mod h (t)” here means using standard polynomial division to find the remainder when dividing by h (t), which results in orders of magnitude less than h (t), that is, less than k described above. According to this definition, the complexity of multiplying two elements is clearly on the order of k 2. In contrast, using the Karatsuba algorithm, known to those of ordinary skill in the art, approximately k 1.6. Although multiplication may be performed by arithmetic (asymptotically to k), such an algorithm involves the execution of more computations, and therefore the Karatsuba algorithm is described as “ §4.4.3 of D. Knuth, Seminumerical Algorithms , Vol. 2 of as it is shown in the · Art of Computer Programming, 2 nd ed, Addison-Wesley, Reading, MA, 1981. ", for example, is advantageous only for large k value as k> 100.
일례로서, 유한 필드 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) 이다.As an example, multiplying the field elements α = (2,1) and β (2,2) of the finite field FG (3 2 ) by the polynomial h (t), which is the order k = 2 and the shorthand for GF (3), Should be chosen, where polynomials 2t + 1 and 2t + 2 are modulated by modulo h (t). A valid contract polynomial is h (t) = t 2 + t + 2. At this time, α · β = (4t 2 + 6t + 2) mod h (t) = 4 (t 2 + t + 2) + 2t-6 = 2t (2 mod 3 = 2 and 6 mod 3 = 0 ). Therefore, α · β = 2t or (2,0) in the vector display.
확장 필드(합성 필드(composite field)라고도 함)에 대해, 덧셈 및 곱셈의 공식은 동일하다. 그러나, 모든 계수단위 연산(coefficient-wise operation)은, 다항식 계산을 포함하는 그라운드 필드에 대해 실행된다. For extended fields (also called composite fields), the formulas for addition and multiplication are the same. However, all coefficient-wise operations are performed on ground fields that contain polynomial calculations.
유한 필드에서의 뺄셈은 상기 필드 GF(p)에서 음(negative)의 원소 x를 p-x로 표기함으로써 간단하게 할 수 있다. 따라서, 음수를 구하기 위해 원소 x는 p-x로 대치될 수 있고, 정규 계수단위 덧셈은 뺄셈을 구하기 위해서 실행될 수 있다. 나눗셈(division)은 본 기술 분야에 알려진 역원(inverse)으로 곱함으로써 실행될 수 있다.Subtraction in the finite field can be simplified by noting the negative element x in p-x in the field GF (p). Thus, the element x can be replaced by p-x to find the negative number, and the normal coefficient unit addition can be performed to find the subtraction. Division can be performed by multiplying by an inverse known in the art.
(종래에 이용된 유한 필드)(Finite fields used in the past)
유한 필드의 사용은 많은 응용분야에 있어서 중심이 된다. 특히, 통신용으로 유한 필드는 매우 유용하다. 예를 들어, 유한 필드에 메시지를 끼워 넣음으로써, 전송 매체에 의해 나타나는 에러가 수신단에서 정정될 수 있도록 메시지를 송신할 수 있다. 이것은 에러 정정 코드(error correcting code) 이면에서의 원칙이다. 또한, 유한 필드는 암호화, 메시지 인증 및 디지털 서명 수단으로서 메시지에 대한 보호(기밀성(confidentiality), 무결성(integrity), 근원 인증(origin authentication) 및 부인 방지(non-repudiation))를 달성하기 위해 사용될 수 있다.The use of finite fields is central to many applications. In particular, finite fields are very useful for communication. For example, by embedding a message in a finite field, the message can be transmitted so that an error represented by the transmission medium can be corrected at the receiving end. This is the principle behind the error correcting code. In addition, finite fields can be used to achieve protection (confidentiality, integrity, origin authentication, and non-repudiation) for messages as encryption, message authentication, and digital signature means. have.
사용을 위해서는, 특히 이동전화기 또는 다른 휴대용 기기와 같은 가벼운 플랫폼(platform)에서 실행되는 경우, 유한 필드를 포함하는 이러한 코딩 및 암호화 연산이 가능한 효율적으로 되어야 한다. 예를 들어, 많은 암호화 방법이 다음 지수(exponentiation) 연산을 사용한다. For use, such coding and encryption operations involving finite fields must be as efficient as possible, especially when running on light platforms such as mobile phones or other portable devices. For example, many encryption methods use the following exponentiation operation.
(6) (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." 에 논의되어 있다.Where g is an element in a multiplicative group of finite fields, x is an integer and “·” represents the product of a finite field. The reason for using the exp g (x) function is that exp g (x) can be calculated as only about (log 2 x) 3 field products in the ground field, but any coefficient (ie polynomial-time at log 2 x) This is because no algorithm exists for the inverse transform (finding x from exp g (x)). The latter is known as a discrete logarithm problem. In other words, exp g (x) is a potent candidate for so-called one-way functions (functions that are easy to calculate), but it is difficult to inverse transform. Discrete algorithm problems are well known to those of ordinary skill in the art, for example, “ Handbook of Applied Cryptography by A. Menezes, P. van Oorschot, and SA Vanstone, CRC Press, Boca Raton, Florida, 1997. "
그러나, 계산적으로 취약한 플랫폼 상에서, 심지어 (log2 x)3 곱셈은 계산적으로 과도하고, 현재 권고된 필드 크기(즉, 키 크기(key size))에 대해 그러한 계산은 많은 경우에 예를 들어 약 30초 정도 걸릴 것이다. 성능을 개선하기 위한 종래의 방법은 이진 유한 필드(표수 2의 필드)로 계산을 제한하는 것이다. 이진 유한 필드로 계산을 제한하는 것은 가장 유용한 하드웨어(예를 들어, CPU 등)가 실제로 이진법이기 때문에 성능이 개선된다. 그러므로, 필드 연산은 하드웨어에 의해 직접 효과적으로 지원받는 비트단위(bitwise) XOR 등과 같은 기초적인 이전 연산으로 구성될 수 있다.However, on computationally vulnerable platforms, even (log 2 x) 3 multiplications are computationally excessive, and for many of the currently recommended field sizes (i.e. key size) such calculations are in many cases for example about 30 It will take about a second. The conventional method for improving performance is to limit the calculation to binary finite fields (fields of 2). Limiting computation to binary finite fields improves performance because the most useful hardware (eg CPUs) is actually binary. Therefore, field operations may consist of basic previous operations, such as bitwise XOR, which are effectively supported directly by hardware.
또한, 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를 형성하는 것은 단순한 비트 연산으로 할 수 있다는 것을 알게 되었다.In addition, De Win et al. 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. As disclosed in " 65-76 ", a method for improving efficiency by performing calculations using binary extension fields of composite number (non-prime) has been studied. A standard binary hardware structure is assumed to allow for operations (normal arithmetic and bit-operation) on k bits (ie k bits in word length), where p = 2 for even odd (binary) fields. We have found that forming two with the rest of the module can be done with simple bit operations.
n이 소수(prime number)가 아닐 경우, 유한 필드 GF(2n)는 GF(2k)에 대한 차수 l의 “비단순(non-trivial)" 확장으로 간주된다. 여기서, n=lk 이고 l,k>1 이다. 따라서 필드에서의 원소는 다음과 같이 쓸 수 있다.If n is not a prime number, the finite field GF (2n) is considered to be a “non-trivial” extension of order l over GF (2 k ), where n = l k and l , k> 1, so an element in a field can be written as
(7) (7)
여기서, 각 γi는 GF(2k)의 원소이다. 다음 연산을 실행함으로써 이 표기법에서의 필드 원소 α와 β의 덧셈을 할 수 있다.Here, each γ i is an element of GF (2 k ). The following elements can be used to add the field elements α and β in this notation.
(8) (8)
αi, βi가 GF(2k)의 원소이므로, 그 합인 αi+βi는 αi 및 βi 사이에서 비트단위 XOR로서 계산될 수 있다. 따라서, k가 하드웨어 레지스터에 맞을 만큼 충분히 작다면(전형적으로 k≤32), k 덧셈은 하드웨어에서 단지 한번의 연산을 사용하여 병렬로 실행될 수 있고, 덧셈을 실행하는 속도로 k의 인수(factor)가 구해진다.Since α i and β i are elements of GF (2k), the sum α i + β i can be calculated as bitwise XOR between α i and β i . Thus, if k is small enough to fit into a hardware register (typically k≤32), then k addition can be executed in parallel using only one operation in hardware, and the factor of k at the speed of performing the addition. Is obtained.
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에 대해,Multiplication using De Win et al. Is performed to indicate that the multiplication group of GF (2 k ) is always cyclic, which means that any non-zero element, α j is any integer 0≤x in the field. This means that element g is in GF (2 k ) so that it can be written as α j = g x for <2 k −1 (ie, x is the discrete logarithm of α j and g is known as the generator). If k is moderately large (e.g. k < = 16), then generator g can be found by a comprehensive search. Also in this case (eg k ≦ 16), ANTILOG {x} of g x can be formed for the table, all x (where 0 ≦ x <2 k −1). In addition, a table for the discrete algorithm DLOG {α j } can be formed for all non-zero α j . That is, for all α j and x,
(9) (9)
및And
(10) 10
GF(pn)에서 α와 β의 곱은 다음 식에 따라 계산된다.The product of α and β in GF (p n ) is calculated according to the following equation.
(11) (11)
여기서, δi=∑jαjβi-j는 곱의 합으로서 계산되고, 모든 연산은 필드 GF(2k)에서 일어난다. gxgy=gx+y로 주어지면, 각 항 αjβi-j는 다음 식에 따라서 상술한 예비 계산 테이블에서 검색하는 3개의 테이블에 의해 계산될 수 있다.Here, δ i = ∑ j α j β ij is calculated as the sum of the products, and all operations take place in the field GF (2 k ). Given by g x g y = g x + y , each term α j β ij can be calculated by three tables searching in the preliminary calculation table described above according to the following equation.
(12) (12)
필요한 메모리는 약 k·2k-2바이트 이고, 곱셈을 실행하기 위한 연산의 수는 차수 l2=(n/k)2 이다. 따라서 k2의 인수가 속도로서 구해진다. 상기 방법은 테이블의 예비계산을 필요로 하고, 이러한 테이블을 저장하기 위한 메모리를 필요로 한다. k가 적당하다면(예를 들어, k≤16), 차수 2k의 예비계산 연산을 사용하는 이러한 방법을 실현할 수 있다.The required memory is about k · 2 k-2 bytes, and the number of operations to perform multiplication is order l 2 = (n / k) 2 . Therefore, the factor of k 2 is obtained as the speed. The method requires precomputation of the tables and memory for storing these tables. If k is moderate (e.g., k≤16), it is possible to realize such a method of using a pre-calculated operation of order 2 k.
반면, 홀수 표수 p(여기서 p는 홀소수(odd prime))의 유한 필드에 대해, 상기 상황은 이진 유한 필드보다 더 복잡한데, 이것은 홀수-표수(odd-characteristic) 유한 필드에서 요구되는 기본 연산이 모듈로-2 연산(비트-연산)이 아니고 오히려 모듈로-p 연산이기 때문이다. De Win 등의 추가 방법은, 예를 들어 홀수 표수(p=3, 5, 7, ...)의 유한 필드에 적용할 수 없고, 홀수 표수의 유한 필드에 대한 유사한 방법이 출원인에게 알려진 것이 없다. 종래의 방법으로 홀수 표수 유한 필드 계산을 실행하는 것은 긴 나눗셈을 필요로 하는 모듈러 산술(modular arithmetic)을 포함한다. 대부분의 하드웨어는 모듈러 산술을 지원하고 있으나, 워드지향(word-oriented) 레벨이다. 따라서 이진 유한 필드를 포함하는 계산에 대한 상술한 최적화는 홀수 표수 유한 필드를 포함하는 계산에 대해서는 실현되지 않는다.On the other hand, for a finite field of odd odd number p (where p is odd prime), the situation is more complicated than binary finite fields, which is the basic operation required for odd-characteristic finite fields. This is not a modulo-2 operation (bit-operation), but rather a modulo-p operation. Additional methods such as De Win are not applicable, for example, to finite fields of odd numbers (p = 3, 5, 7, ...), and similar methods for finite fields of odd numbers are not known to the applicant. . Performing odd-numbered finite field calculations in a conventional manner involves modular arithmetic, which requires long division. Most hardware supports modular arithmetic, but at the word-oriented level. Thus, the above optimization for calculations involving binary finite fields is not realized for calculations involving odd-numbered finite fields.
상기한 이유 때문에, 이진 유한 필드는 에러 정정 및 암호법에서 가장 넓게 사용되는 유한 필드이다. 그러나, 출원인은 이러한 이진 필드에 대한 계산의 제한이 단점을 가질 수 있다는 것을 알게 되었다. 예를 들어, 필드가 홀수인 표수를 가지는 경우보다 필드가 표수 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. 참조). 따라서, 암호화에 대한 이러한 합성 차수의 이진 필드를 회피하는 것이 바람직하다. 이러한 공격은 유한 필드가 홀수 표수(차수가 비소수이더라도)이면 좀 덜 효과적이므로, 이 경우에 관련된 우려는 없다. 그러나, 상술한 바와 같이, 홀수 표수 유한 필드를 포함하는 종래의 계산 방법을 이용하는 것은 이진 유한 필드 구조를 사용하여 그 외에 획득되는 계산적인 최적화의 희생을 요구한다.For the reasons mentioned above, binary finite fields are the most widely used finite fields in error correction and cryptography. However, Applicants have found that the limitation of calculations for such binary fields can have disadvantages. For example, if the field has the number 2 (binary field) than if the field has the odd number, the algorithm for inverting the above-described exp g (x) function is more efficient. Therefore, it can be expected that the cryptographic strength of the function exp g (x) is smaller for binary fields than for ordinary odd-number finite fields. Indeed, the implementation of cryptography recently using finite fields of odd odd and composite orders can provide improved cryptographic security over cryptographic methods involving other finite fields, and the benefit from cryptographic security is such computational cost. It has been suggested that it can be supplemented (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). In addition, in the case of binary fields of synthetic order to which the optimization described in the above-mentioned paper by De Win et al. Can be applied, attacks on elliptic curve cryptosystems on such fields have recently been described by NP Gaudry et al. As described in (NP Gaudry, F. Hess, and NP 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 NP Smart, "How secure are elliptic curves over composite extension field?", Technical Report CSTR-00-017, Department of Computer Science, University of Bristol, Nov. 2000.). Thus, it is desirable to avoid these synthetic order binary fields for encryption. This attack is less effective if the finite field is an odd number (even if it is non-decimal), so there is no concern in this case. However, as mentioned above, using conventional calculation methods that include odd-numbered finite fields requires the sacrifice of computational optimizations that are otherwise obtained using binary finite field structures.
도 1은 본 발명의 전형적인 양태에 따라 홀-표수 유한 필드의 필드 원소를 포함하는 계산을 실행하는 시스템을 도시하는 블록도.1 is a block diagram illustrating a system for performing a calculation including field elements of an odd-number finite field in accordance with an exemplary aspect of the present invention.
도 2A는 GF(310)의 예에 대한 본 발명의 전형적인 양태에 따라 단일-가드-비트 표기법으로 구성되는 데이터 저장 구조를 갖는 하드웨어 레지스터를 나타내는 개략도.2A is a schematic diagram illustrating a hardware register having a data storage structure configured in single-guard-bit notation in accordance with an exemplary aspect of the invention for an example of GF 3 10 .
도 2B는 GF(75)의 예에 대한 본 발명의 전형적인 양태에 따라 단일-가드-비트 표기법으로 구성되는 데이터 저장 구조를 갖는 하드웨어 레지스터를 나타내는 또 다른 개략도.2B is another schematic diagram illustrating a hardware register having a data storage structure configured in single-guard-bit notation in accordance with an exemplary aspect of the invention for an example of GF 7 5 .
도 2C는 GF(38)의 예에 대한 본 발명의 전형적인 양태에 따라 다중-가드-비트 표기법으로 구성되는 데이터 저장 구조를 갖는 하드웨어 레지스터를 나타내는 개략도.2C is a schematic diagram illustrating a hardware register having a data storage structure configured in multi-guard-bit notation in accordance with an exemplary aspect of the present invention for an example of GF 3 8 .
도 3은 본 발명의 전형적인 양태에 따라 홀-표수 유한 필드의 필드 원소를 표시하는 이진 데이터를 처리하는 방법을 도시한 흐름도.3 is a flow diagram illustrating a method of processing binary data representing field elements of an odd-number finite field in accordance with an exemplary aspect of the present invention.
도 4는 본 발명의 전형적인 양태에 따라서, 도 3에 도시한 방법에 따라 p=2m-1에서 두 필드 원소의 합을 결정하기 위해 이진 데이터를 처리하는 방법을 도시한 흐름도.4 is a flow diagram illustrating a method of processing binary data to determine the sum of two field elements at p = 2 m −1 in accordance with the method shown in FIG. 3, in accordance with an exemplary aspect of the present invention.
도 5는 도 4에 도시한 방법에 따라 GF(310)에서 덧셈의 일례에 대한 레지스터 내용을 나타내는 개략도.FIG. 5 is a schematic diagram showing register contents for an example of addition in GF 3 10 according to the method shown in FIG. 4; FIG.
도 6은 본 발명의 전형적인 양태에 따라 p=2m-1에서 홀-표수 유한 필드의 필드 원소를 표시하는 계산을 실행하는 하드웨어 장치의 기능적 블록도.FIG. 6 is a functional block diagram of a hardware device for performing calculations representing field elements of odd-number finite fields at p = 2 m −1 in accordance with an exemplary aspect of the present invention. FIG.
도 7은 본 발명의 전형적인 양태에 따라 p=2m-1에서 홀-표수 유한 필드의 필드 원소를 표시하는 계산을 실행하는 하드웨어 장치의 또 다른 기능적 블록도.FIG. 7 is another functional block diagram of a hardware device for performing calculations representing field elements of odd-number finite fields at p = 2 m −1 in accordance with an exemplary aspect of the present invention. FIG.
도 8A는 본 발명의 전형적인 양태에 따라 도 7에 도시한 장치와 연계하여 사용하기 위한 전형적인 가드-비트 삽입 회로를 나타내는 개략도.8A is a schematic diagram illustrating an exemplary guard-bit insertion circuit for use in conjunction with the device shown in FIG. 7 in accordance with an exemplary aspect of the present invention.
도 8B는 본 발명의 전형적인 양태에 따라 도 7에 도시한 장치와 연계하여 사용하기 위한 전형적인 가드-비트 제거 회로를 나타내는 개략도.8B is a schematic diagram illustrating an exemplary guard-bit cancellation circuit for use in conjunction with the apparatus shown in FIG. 7 in accordance with an exemplary aspect of the present invention.
도 9는 본 발명의 전형적인 양태에 따라 원소들의 곱을 결정하기 위해 홀-표수 유한 필드의 필드 원소를 표시하는 이진 데이터를 처리하는 방법을 도시하는 흐름도.9 is a flow diagram illustrating a method of processing binary data representing field elements of an odd-number finite field to determine a product of elements in accordance with an exemplary aspect of the present invention.
도 10A는 본 발명의 전형적인 양태에 따라 도 9에 도시한 방법에서 사용하기 위한 DLOG 룩-업 테이블을 나타내는 개략도.10A is a schematic diagram illustrating a DLOG look-up table for use in the method shown in FIG. 9 in accordance with an exemplary aspect of the present invention.
도 10B는 유한-필드 원소 a(t)와 도 10A에 도시한 이진 정보에 대응하는 해당 n 제곱 생성자를 반영하는 인덱싱 테이블. FIG. 10B is an indexing table reflecting the finite-field element a (t) and the corresponding n-squared generator corresponding to the binary information shown in FIG. 10A.
도 11A는 본 발명의 전형적인 양태에 따라 도 9에 도시한 방법에서 사용하기 위한 ANTILOG 룩-업 테이블을 나타내는 개략도.FIG. 11A is a schematic diagram illustrating an ANTILOG look-up table for use in the method shown in FIG. 9 in accordance with an exemplary aspect of the present invention. FIG.
도 11B는 유한-필드 원소 a(t)와 도 10A에 도시한 이진 정보에 대응하는 해당 n 제곱 생성자를 반영하는 인덱싱 테이블. FIG. 11B is an indexing table reflecting a finite-field element a (t) and a corresponding n-squared generator corresponding to the binary information shown in FIG. 10A. FIG.
도 12는 본 발명의 전형적인 양태에 따라 홀-표수 유한 필드의 필드 원소의 곱셈을 실행하는 하드웨어 장치를 도시하는 기능적 블록도.12 is a functional block diagram illustrating a hardware device for performing multiplication of field elements of an odd-number finite field in accordance with an exemplary aspect of the present invention.
도 13은 본 발명의 전형적인 양태에 따라 다중-가드-비트 표기법에서 레지스터에 저장된 이진 데이터를 압축하는 압축 연산을 나타내는 개략도.13 is a schematic diagram illustrating a compression operation to compress binary data stored in registers in multi-guard-bit notation in accordance with an exemplary aspect of the present invention.
도 14는 본 발명의 전형적인 양태에 따라서, 도 3에 도시한 방법에 따라 p=2m-1에서 두 필드의 합을 결정하기 위해 이진 데이터를 처리하는 방법을 도시하는 흐름도.FIG. 14 is a flow diagram illustrating a method of processing binary data to determine a sum of two fields at p = 2 m −1 in accordance with the method shown in FIG. 3, in accordance with an exemplary aspect of the present invention. FIG.
도 15는 도 14에 도시한 방법에 따라 GF(56)에서의 덧셈의 예에 대한 레지스터 내용을 나타내는 개략도.FIG. 15 is a schematic diagram showing register contents for an example of addition in GF 5 6 in accordance with the method shown in FIG. 14; FIG.
도 16는 본 발명의 전형적인 양태에 따라 p=2m+1에서 홀-표수 유한 필드의 필드 원소를 포함하는 계산을 실행하기 위한 하드웨어 장치의 기능적 블록도.FIG. 16 is a functional block diagram of a hardware device for performing a calculation including field elements of odd-number finite fields at p = 2 m + 1 in accordance with an exemplary aspect of the present invention. FIG.
도 17은 본 발명의 전형적인 양태에 따라 p=2m+1에서 홀-표수 유한 필드의 필드 원소를 포함하는 계산을 실행하기 위한 하드웨어 장치의 또 다른 기능적 블록도.FIG. 17 is another functional block diagram of a hardware device for performing a calculation including field elements of odd-number finite fields at p = 2 m + 1 in accordance with an exemplary aspect of the present invention. FIG.
도 18은 본 발명의 전형적인 양태에 따라서, 도 3에 도시한 방법에 따라 p=2m-d 및 d≤(2m+1)/3에서 두 필드 원소의 합을 결정하기 위해 이진 데이터를 처리하는 방법을 도시하는 흐름도.18 processes binary data to determine the sum of two field elements at p = 2 m −d and d ≦ (2 m +1) / 3 according to the method shown in FIG. 3, in accordance with an exemplary embodiment of the present invention. Flowchart showing how to do it.
도 19은 본 발명의 전형적인 양태에 따라서, 도 3에 도시한 방법에 따라 p=2m-d 및 (2m+1)/3<d<2m에서 두 필드 원소의 합을 결정하기 위해 이진 데이터를 처리하는 방법을 도시하는 흐름도.19 is binary to determine the sum of two field elements at p = 2 m −d and (2 m +1) / 3 <d <2 m in accordance with the method shown in FIG. 3, according to an exemplary embodiment of the present invention. Flowchart showing how to process data.
도 20은 본 발명의 전형적인 양태에 따라서, 도 3에 도시한 방법에 따라 p=2m+d 및 d≤p/6에서 두 필드 원소의 합을 결정하기 위해 이진 데이터를 처리하는 방법을 도시하는 흐름도.20 illustrates a method of processing binary data to determine the sum of two field elements at p = 2 m + d and d ≦ p / 6 according to the method shown in FIG. 3, in accordance with an exemplary embodiment of the present invention. Flowchart.
도 21은 본 발명의 전형적인 양태에 따라, 도 3에 도시한 방법에 따라 p=2m+d 및 p/6<d<2m-1에서 두 필드 원소의 합을 결정하기 위해 이진 데이터를 처리하는 방법을 도시하는 흐름도.21 processes binary data to determine the sum of two field elements at p = 2 m + d and p / 6 <d <2 m −1 according to the method shown in FIG. 3, in accordance with an exemplary embodiment of the present invention. Flowchart showing how to do it.
도 22는 본 발명의 전형적인 양태에 따라, 에러 정정을 실행하는 시스템의 블록도.22 is a block diagram of a system for performing error correction, in accordance with an exemplary aspect of the present invention.
도 23은 본 발명의 전형적인 양태에 따라, 에러 정정을 실행하는 방법을 나타내는 흐름도.23 is a flowchart illustrating a method of performing error correction, in accordance with an exemplary aspect of the present invention.
도 24A는 본 발명의 전형적인 양태에 따라, 암호화/해독을 실행하는 시스템을 나타내는 기능적 블록도.24A is a functional block diagram illustrating a system for performing encryption / decryption, in accordance with an exemplary aspect of the present invention.
도 24B는 본 발명에 따른 전형적인 암호화 방법을 나타내는 흐름도.24B is a flow diagram illustrating an exemplary encryption method in accordance with the present invention.
도 25는 본 발명에 따른 키 교환을 실행하는 전형적인 방법을 나타내는 흐름도.25 is a flow diagram illustrating an exemplary method of performing a key exchange in accordance with the present invention.
도 26은 본 발명에 따른 공개키 암호화의 전형적인 방법을 나타내는 흐름도.Figure 26 is a flow diagram illustrating an exemplary method of public key cryptography in accordance with the present invention.
도 27은 본 발명에 따른 공개키 암호화의 전형적인 방법을 나타내는 흐름도.Figure 27 is a flow diagram illustrating an exemplary method of public key cryptography in accordance with the present invention.
도 28은 본 발명에 따른 공개키 암호화의 전형적인 방법을 나타내는 흐름도.Figure 28 is a flow diagram illustrating an exemplary method of public key cryptography in accordance with the present invention.
이용 가능한 하드웨어가 이진 특성을 갖더라도 비-이진(non-binary) 유한 필드에 대해 기본 유한 필드 연산(즉, 덧셈, 곱셈 등)을 포함하는 계산의 속도를 향상시킬 수 있고, 특별한 modulo-p 하드웨어 대한 요구를 감소시키는, 계산 방법이 필요하다는 것을 출원인은 알게 되었다. 또한, 종래 방법 보다 더욱 효율적으로 레지스터 공간을 이용하는 비-이진 유한 필드에 대한 계산 방법이 필요하다는 것도 출원인은 알게 되었다. 예를 들어, 32 비트 CPU를 사용하여 종래의 modulo-p 산술을 실행할 수 있으나, p가 작으면(예를 들어, p=3 또는 p=7), 포함되는 양(필드 원소 계수)이 단지 2 또는 3 유효 비트(significant bits)이므로 상기 연산을 위해 32 비트의 레지스터 공간을 바치는 것은 비능률적이다. 출원인은, 포함되는 수가 매우 작게 주어지는 상기 이용 가능한 레지스터 공간을 더욱 효과적으로 사용하는 것이 바람직하다고 알게 되었다. 본 발명은, 본 기술 분야에서 통상의 지식을 가진 자라면 첨부한 도면을 참조한 상세한 설명으로부터 명백히 알 수 있도록, 이러한 요구 및 다른 요구를 실현하고 장점을 제공한다. Although the available hardware has binary characteristics, it can speed up computations involving basic finite field operations (ie, addition, multiplication, etc.) for non-binary finite fields, and special modulo-p hardware. Applicants have found that there is a need for a calculation method that reduces the need for this. Applicants have also found that there is a need for computational methods for non-binary finite fields that utilize register space more efficiently than conventional methods. For example, a 32-bit CPU can be used to perform conventional modulo-p arithmetic, but if p is small (e.g. p = 3 or p = 7), the amount involved (field element count) is only 2 Or 3 significant bits, so it is inefficient to devote 32 bits of register space for the operation. Applicants have found that it is desirable to use the available register space more effectively given the very small number involved. The present invention realizes and provides these and other needs, as will become apparent to those skilled in the art from the detailed description with reference to the accompanying drawings.
본 명세서에서 사용된 용어 “포함하다(comprises)” 및 “포함하는(comprising)”은 설명되는 특징, 정수, 단계 및 구성요소의 존재를 명시하기 위한 것으로서, 이러한 용어의 사용은 하나 이상의 다른 특징, 정수, 단계, 구성요소 또는 그 그룹의 존재나 부가를 배제하는 것은 아니다.As used herein, the terms “comprises” and “comprising” are intended to specify the presence of the described features, integers, steps, and components, the use of which is one or more other features, It is not intended to exclude the presence or addition of integers, steps, components, or groups thereof.
본 발명의 한 전형적인 양태로서, 암호화 방법이 제공된다. 상기 방법은 홀-표수 유한 필드 GF(pk)의 필드 원소의 적어도 일부를 표시하는 이진 데이터를 레지스터에 저장하는 단계를 포함하고, p는 홀소수이고, 상기 필드 원소는 다항식-기저 표기법에 따라 k 계수를 포함하고, 이진 데이터는 데이터 비트의 다수 그룹을 포함하고, 여기서 데이터 비트의 각 그룹은 k 계수 중 연관된 하나를 표시한다. 상기 방법은 데이터 비트의 다수 그룹이 병렬로 처리되도록 암호화 알고리즘에 따라 이진 데이터를 처리하는 단계를 포함한다. 본 발명의 다른 양태로서 제공되는 암호화 장치는 키 소스와, 상기 키 소스와 결합하는 홀-표수 유한-필드 암호화부를 포함하고, 상기 홀-표수 유한-필드 암호화부는 상기한 방법의 단계를 실행하도록 구성된다. 상기 방법을 실행하는 컴퓨터를 프로그램 하도록 적응되는 컴퓨터 판독-가능 캐리어도 제공된다. 전형적인 형태의 컴퓨터-판독가능 캐리어는, 프로세서가 상기한 단계들을 실행하게 하는 적절한 컴퓨터 명령 집합을 포함하는, 고체상태 메모리(solid-state memory), 자기디스크(magnetic disk), 광디스크 또는 변조파(modulated wave)를 포함한다. 예를 들어, 변조파는, 네트워크 연결 또는 모뎀을 통해 다운로드(download)할 수 있는, 무선 변조파, 오디오 주파수 변조파, 광주파수 변조파 또는 변조 이진 비트 스트림(modulated binary bit stream)이 될 수 있다.In one typical aspect of the present invention, an encryption method is provided. The method includes storing binary data representing at least a portion of the field elements of the odd-number finite field GF (p k ) in a register, where p is an odd number and the field elements are in accordance with polynomial-based notation. k coefficients, wherein the binary data includes multiple groups of data bits, where each group of data bits represents an associated one of the k coefficients. The method includes processing binary data in accordance with an encryption algorithm such that multiple groups of data bits are processed in parallel. An encryption apparatus provided as another aspect of the present invention includes a key source and a hole-number finite-field encryption unit coupled with the key source, wherein the hole-number finite-field encryption unit is configured to execute the steps of the above method. do. A computer readable carrier is also provided that is adapted to program a computer that executes the method. Typical forms of computer-readable carriers include solid-state memory, magnetic disks, optical disks, or modulated waves, including a suitable set of computer instructions that cause a processor to perform the above steps. wave). For example, the modulated wave can be a radio modulated wave, an audio frequency modulated wave, a wide frequency modulated wave, or a modulated binary bit stream, which can be downloaded via a network connection or a modem.
본 발명의 다른 전형적인 양태로서, 키 교환 방법이 제공된다. 상기 방법은 번호 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를 계산하는 단계를 포함하여, 보안키를 생성한다. 상기 방법을 실행하기 위하여 구성된, 메모리와, 메모리에 결합된 처리부를 포함하는 암호화 장치가 제공된다. 또한 상기 방법을 실행하는 컴퓨터를 프로그램 하도록 적응된 컴퓨터 판독-가능 캐리어가 제공된다.In another exemplary aspect of the present invention, a key exchange method is provided. The method includes generating a number xA (eg, a random integer). The method also includes generating and transmitting yA, where yA = g xA , g is an element on F or an point on an elliptic curve for F, and F is an odd-number finite field GF (p k ) or GF is an extended field of (p k ), p is an odd number, where g includes a plurality of first basis coefficients, and the first basis coefficient is an element of GF (p), where of g many first basis coefficients A multiple group of first data bits representing at least a portion is stored in a first register and processed in parallel to produce yA. The method also includes receiving yB, where yB = g xB , where yB comprises a plurality of second basis coefficients, the second basis coefficients being an element of GF (p). The method also includes storing multiple groups of second data bits indicative of at least some of the plurality of second basis coefficients of yB in a second register, and processing the multiple groups of second data bits in parallel such that K = (yB ), including the step of calculating xA, to generate the secret key. There is provided an encryption device, comprising a memory, configured to execute the method, and a processing unit coupled to the memory. Also provided is a computer readable carrier adapted to program a computer executing the method.
본 발명의 다른 전형적인 양태로서, 공개키 암호화 방법이 있다. 상기 방법은 제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 교신기로 송신하는 단계를 더 포함하고, 여기서 상기 쌍의 양은 플레인텍스트 메시지의 암호화된 버전에 대응한다. 상기 방법을 실행하기 위하여 구성된, 메모리와, 메모리에 결합된 처리부를 포함하는 암호화 장치가 제공된다. 또한 상기 방법을 실행하는 컴퓨터를 프로그램 하도록 적응된 컴퓨터 판독-가능 캐리어가 제공된다.Another typical aspect of the invention is a public key encryption method. The method includes obtaining a public key yA associated with the first communicator, where yA = g xA , where xA is the private key of the first communicator and g is an element of the finite field F or an elliptic curve for F Is a point in phase, F is an odd-number finite field GF (p k ) or an extended field of GF (p k ), p is an odd number, where yA includes a plurality of first basis coefficients, where g is a plurality of And a second basis coefficient, wherein the first and second basis coefficients are elements of GF (p). The method also generates the number r and u = g r and calculating the amount of pairs (u, v) in v = f −1 (P) * (yA) r , where P represents a plaintext message in a set of plaintext messages, and f is for F A mapping function that maps at least a portion of vector space to a set of plaintext messages, where * indicates a binary operation in the vector space, where a first data bit representing at least a portion of the plurality of first basis coefficients of yA Multiple groups are stored in a first register and processed in parallel to calculate v. The method further includes transmitting the (u, v) amounts of the pair to the first communicator, where the amount of the pair corresponds to an encrypted version of the plaintext message. There is provided an encryption device, comprising a memory, configured to execute the method, and a processing unit coupled to the memory. Also provided is a computer readable carrier adapted to program a computer executing the method.
여기서 사용된 것으로서, 용어 “다항식 기저 표기법에 따라(in accordance with a polynomial basis representation)"는, 예를 들어, 벡터 표기법을 포함하는 다항식 기저 표기법과 수학적으로 등가인 임의의 표기법을 포함시키려는 의도로 사용된다. As used herein, the term “in accordance with a polynomial basis representation” is intended to include any notation that is mathematically equivalent to, for example, polynomial basis notation, including vector notation. do.
본 발명은 p가 홀소수(odd prime number)인 유한 필드 GF(p l k)(확장 필드) 원소를 포함하는 산술 및 논리 연산을 효과적으로 실행하는 방법을 제공한다. 아래에서 상세히 설명하는 바와 같이, 본 발명의 한 양태는 필드 GF(pk)의 원소를 표시하는 데이터가 이진 하드웨어에 어떻게 저장되고, 이 때 산술 연산이 어떻게 효과적으로 실행되는가에 맞추어져 있다. 여기서 언급하는 바와 같이, 유한 필드 GF(pk)는 표수 p가 홀소수인 홀수 표수 유한 필드를 의미하는 것으로 이해되어야 한다.The present invention provides a method for effectively performing arithmetic and logical operations comprising finite field GF (p l k ) (extended field) elements where p is an odd prime number. As will be described in detail below, one aspect of the present invention is tailored to how data representing elements of field GF (p k ) is stored in binary hardware and how arithmetic operations are performed effectively. As mentioned herein, the finite field GF (p k ) should be understood to mean an odd odd number finite field where the odd number p is odd.
본 발명의 다양한 양태에 대해 다수의 바람직한 실시예를 통하여 아래에서 더욱 상세히 설명할 것이다. 본 발명을 용이하게 이해하기 위하여, 본 발명의 여러 실시예는 컴퓨터 시스템의 요소에 의해 실행되는 동작으로서 설명된다. 또한, 본 실시예 각각에서, 여러 동작은 특정 회로(예를 들어, 특정 기능을 실행하도록 서로 연결된 이산 논리 게이트)에 의해, 하나 이상의 프로세서에서 실행되는 프로그램 명령에 의해, 또는 상기 둘의 조합에 의해 실행될 수 있다. 또한, 본 발명은 여기서 설명하는 기술을 프로세서가 실행하게 하는 적절한 컴퓨터 명령 집합을 포함하는 고체상태 메모리(solid-state memory), 자기디스크(magnetic disk), 광디스크 또는 변조파(modulated wave)와 같은 컴퓨터 판독-가능 캐리어(computer-readable carrier)의 어떤 형태 내에서 추가적으로 완전히 구현되도록 고려할 수 있다. 예를 들어, 변조파는 네트워크 접속 또는 모뎀을 통해 다운로드(download)될 수 있는, 무선 주파수 변조파, 오디오 주파수 변조파, 광주파수 변조파 또는 변조 이진 비트스트림(bit stream)일 수도 있다. 따라서 본 발명의 다양한 양태는 많은 다른 형태로 구현될 수 있고, 그러한 모든 형태는 본 발명의 범위 내에 있도록 의도된다. 본 발명의 다양한 양태 각각에 대해, 어떠한 형태의 실시예는 설명된 동작을 실행하도록 “구성된 논리(logic configured to)”로서, 또는 이와는 달리, 설명된 동작을 실행 "하는 논리(logic that)”라고 한다.Various aspects of the invention will be described in greater detail below through numerous preferred embodiments. In order to facilitate understanding of the present invention, various embodiments of the present invention are described as operations executed by elements of a computer system. Further, in each of the present embodiments, the various operations may be performed by specific circuitry (e.g., discrete logic gates connected to each other to execute a particular function), by program instructions executed on one or more processors, or by a combination of the two. Can be executed. The invention also provides a computer, such as a solid-state memory, a magnetic disk, an optical disk, or a modulated wave, which includes a suitable set of computer instructions to allow a processor to execute the techniques described herein. It is contemplated to be additionally fully implemented within any form of computer-readable carrier. For example, the modulated wave may be a radio frequency modulated wave, an audio frequency modulated wave, an optical frequency modulated wave, or a modulated binary bit stream, which may be downloaded via a network connection or a modem. Accordingly, various aspects of the invention may be embodied in many different forms, all such forms being intended to be within the scope of the invention. For each of the various aspects of the invention, some form of embodiment is referred to as “logic configured to” to perform the described operation, or alternatively “logic that” to perform the described operation. do.
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>(덧셈, 곱셈 등)를 실행하는 절차를 나타낸다.GF (p k) before speaking about an aspect of the invention involving the calculation including the element itself, to an arithmetic operation in the field GF (p k) coupled to the arithmetic operations in the extension field GF (p l k) The algorithm is described first. Given the order l and the polynomial f (t), which is the contract for GF (p k ), is the element of GF (p l k ) operated at high level, and α (= ∑ i α i x i , α i in GF ( p k )) and β (= ∑ i β i x i , β i in GF (p k )), and the addition algorithms SUM (α, β) and multiplication PRODUCT (α, β) yield GF (p l k ), provided below. In this algorithm, the expression GF_p_k <op> (α i , β j ) represents a procedure for performing an operation <op> (addition, multiplication, etc.) on the field elements α i and β j in the field GF (p k ).
먼저, SUM(α, β)로 표시되고, 확장 필드 GF(p l k)의 원소 α와 β의 덧셈을 필드 GF(pk)에서 실행되는 계산으로 결부시키는 덧셈 알고리즘이 다음과 같이 주어진다.First, an addition algorithm, denoted as SUM (α, β), which combines the addition of the elements α and β of the extended field GF (p l k ) to the calculation performed in the field GF (p k ) is given as follows.
여기서, GF_p_k_ADD에 대해서는 아래에서 상세히 설명할 것이다.Here, GF_p_k_ADD will be described in detail below.
또한, PRODUCT(α, β)로 표시되고, 확장 필드 GF(p l k)의 원소 α와 β의 곱셈을 필드 GF(pk)에서 실행되는 계산으로 결부시키는 곱셈 알고리즘을 설명한다. 여기서, DLOG 및 ANTILOG 테이블의 필수 초기화(necessary initialization)는 이미 실행된 것으로 가정한다. DLOG 및 ANTILOG 테이블의 형태에 대해 아래에서 설명한다. 또한, 전형적인 DLOG 및 ANTILOG 테이블을 후술하는 GF(32)에 대한 간단한 예시로서 도 10A 및 11A에 나타내었다.In addition, a multiplication algorithm, represented by PRODUCT (α, β), which combines the multiplication of the elements α and β in the extended field GF (p l k ) by the calculation performed in the field GF (p k ), will be described. Here, it is assumed that necessary initialization of the DLOG and ANTILOG tables has already been executed. The form of the DLOG and ANTILOG tables is described below. In addition, typical DLOG and ANTILOG tables are shown in FIGS. 10A and 11A as simple examples for the GF 3 2 described below.
여기서, GF_p_k_MUL 및 REDUCE(δ, f)(후자는 z(t) mod f(t)를 계산)에 대해서는 아래에서 상세히 설명한다.Here, GF_p_k_MUL and REDUCE (δ, f) (the latter calculates z (t) mod f (t)) will be described in detail below.
상기한 곱셈 알고리즘은 단지 가능한 곱셈 알고리즘의 일례일 뿐임에 유의해야 한다. 큰 값의 l(예를 들어, l>100)에 대해서, 상기한 단순 PRODUCT 알고리즘 대신에 카라쓰바 방법을 사용하여 더 빠른 성능을 얻을 수도 있다. 카라쓰바 방법은 본 기술 분야에서 널리 알려져 있으며, 예를 들어 상기한“Seminumerical Algorithms"에 설명되어 있다.It should be noted that the multiplication algorithm described above is merely one example of a possible multiplication algorithm. For large values of l (e.g., l > 100), the Karatsuba method may be used instead of the simple PRODUCT algorithm described above to achieve faster performance. The Karatsuba method is well known in the art and is described, for example, in “ Seminumerical Algorithms ” described above.
마지막으로, 곱셈 알고리즘, 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)로 표시한 약분 알고리즘은 다음과 같다.Finally, the reduction operation necessary to complete the multiplication algorithm, PRODUCT (α, β), can be executed in conjunction with the well-known algorithm indicated below as REDUCE (δ, f). This algorithm is also useful in the method of the present invention for efficient arithmetic in field GF (p k ) which will be described later. For computational efficiency f (t) may be chosen to “sparse,” meaning that f (t) has only some non-zero coefficient (eg, 3 non-zero coefficient). F (t) is formed by f (t) = f l t l + f j t j + f 0 for some j between l and 0. However, it is generally necessary to make f (t) lean. It should be noted that for any value l , the contract polynomial f (t) of order l can be easily found by methods known in the art A general method of determining the contract polynomial f (t) is for example described above. One can be found in “ Seminumerical Algorithms ”. Recalling these comments, the abbreviation algorithm indicated by REDUCE (δ, f) is as follows.
상기 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에 대해 주어진 알고리즘을 용이하게 실행하는 것으로서, 아래에서 설명할 것이다.The REDUCE algorithm is a normal polynomial division algorithm that is adapted for the special form of f (t) given above. It should be noted that tmp1 and tmp2 can be precomputed because they are fixed at a time in a given notation, i.e. f (t) is defined at one time. The function GF_p_k_SUB refers to field subtraction in the field GF (p k ), the function GF_p_k_INVERSE refers to multiplicative inverse computation, both of which facilitate the given algorithm for GF_p_k_ADD and GF_p_k_MUL, I will explain.
상기한 알고리즘을 실행하고, 본 발명의 다른 양태를 구현하는 전형적인 장치(100)에 대해, 도 1의 블록도를 참조하여 설명한다. 상기 장치(100)는 메모리(101)와, 메모리(101)에 결합된 처리부(105)로 이루어진다. 상기 장치(100)는 입출력 소자(103)도 포함한다. 처리부(105)는, 처리부 내에서 논리 회로(도시하지 않음)에 의해 제어되는, 다수의 레지스터(107-121)로 이루어진다. 처리부(105)는 도 1에서 화살표로 나타낸 전기적인 연결(예를 들어, 전기적인 버스)을 통해 입출력 소자(103) 및 메모리(101)와 통신할 수 있다. 처리부(105)는, 처리부(105) 밖에 있는 외부 레지스터(도시하지 않음)와 통신할 수도 있다. An exemplary apparatus 100 for implementing the above algorithms and implementing other aspects of the present invention is described with reference to the block diagram of FIG. The apparatus 100 includes a memory 101 and a processing unit 105 coupled to the memory 101. The apparatus 100 also includes an input / output element 103. The processing unit 105 is composed of a plurality of registers 107-121 controlled by a logic circuit (not shown) in the processing unit. The processor 105 may communicate with the input / output device 103 and the memory 101 through an electrical connection (eg, an electric bus) indicated by an arrow in FIG. 1. The processing unit 105 may communicate with an external register (not shown) outside the processing unit 105.
처리부(105)로서는, 예를 들어, 개인용 컴퓨터에서 전형적으로 사용되는 펜티엄급(Pentium-class) 프로세서 또는 다른 CPU와 같은 어떤 종래 형태의 처리부나, 무선 전화기 도는 다른 휴대용 소자에 사용되는 특수 목적의 처리부를 사용할 수 있다. 개인용 컴퓨터에 사용되는 종래 프로세서는, 도 1에서 8 레지스터(107-121)(레지스터 a-h로도 표시)로 나타낸 바와 같이, 공통적으로 8개의 범용 레지스터를 가진다. 예를 들어, 레지스터 107은 8-비트 레지스터, 16-비트 레지스터, 32-비트 레지스터, 64-비트 레지스터 등으로 될 수 있다. 종래 개인용 컴퓨터용 현 세대의 프로세서는 공통적으로 32-비트 레지스터를 갖는다.As processing unit 105, for example, any conventional type of processing unit such as a Pentium-class processor or other CPU typically used in personal computers, or special purpose processing unit used in a cordless phone or other portable element. Can be used. Conventional processors used in personal computers commonly have eight general purpose registers, as shown by eight registers 107-121 (also denoted by registers a-h) in FIG. For example, register 107 may be an 8-bit register, a 16-bit register, a 32-bit register, a 64-bit register, or the like. The current generation of processors for conventional personal computers commonly have 32-bit registers.
메모리(101)로서는, 예를 들어, 자기 디스크, CD ROM, 광자기 디스크, 플래시 메모리 또는 다른 종류의 메모리와 같은, 컴퓨터 프로그램을 저장할 수 있는 적당한 메모리를 사용할 수 있다. 컴퓨터 프로그램을 저장하는 것에 더하여, 메모리(101)는 처리부(105)에 의해 발생된 중간 또는 최종 계산 결과를 저장하는 데 사용될 수도 있고, 계산 중에 이용되는 룩-업 테이블(look-up table)을 저장하는 데 사용될 수도 있다.As the memory 101, a suitable memory capable of storing a computer program, for example, a magnetic disk, a CD ROM, a magneto-optical disk, a flash memory or another kind of memory can be used. In addition to storing computer programs, the memory 101 may be used to store intermediate or final calculation results generated by the processing unit 105 and store look-up tables used during calculations. It can also be used to.
입출력 소자(103)로서는, 예를 들어, 배선 모뎀(hard-wired modem) 또는 네트워크 인터페이스, 무선 모뎀, 제2 메모리, 아날로그-디지털/디지털-아날로그(AD/DA) 변환기, 또는 다른 비슷한 종류의 소자와 같은, 처리부(105)로부터 및/또는 처리부(105)로 데이터를 전달하는 적절한 소자를 사용할 수 있다. 필요할 경우, 결합된 입출력 소자를 대신해서 분리된 입력 및 출력 소자를 사용할 수도 있다. 또한, 입출력 소자(103)는 가드-비트 삽입(guard-bit insertion) 및 가드-비트 제거를 실행하도록 구성될 수도 있다. 가드-비트 삽입 및 가드-비트 제거는, 일례로서 도 8A 및 8B와 연관하여 나중에 설명한다.As the input / output element 103, for example, a hard-wired modem or network interface, a wireless modem, a second memory, an analog-to-digital-to-analog (AD / DA) converter, or another similar kind of element. Appropriate elements for transferring data from and / or to the processing unit 105, such as, may be used. If necessary, separate input and output devices can be used instead of combined input and output devices. The input / output element 103 may also be configured to perform guard-bit insertion and guard-bit removal. Guard-bit insertion and guard-bit removal are described later in connection with FIGS. 8A and 8B as an example.
한 양태에 있어서, 메모리(101)는 하나 이상의 컴퓨터 프로그램을 저장할 수 있고, 처리부(105)는 컴퓨터 프로그램(들)의 단계를 실행하기 위해 메모리(101)에 접속할 수 있다. 이러한 컴퓨터 프로그램은, 예를 들어, 상기한 알고리즘을 나타내는 프로그램과 아래에서 설명하는 바와 같은 본 발명의 다른 양태를 구현하는 프로그램을 포함할 수 있다.In one aspect, the memory 101 may store one or more computer programs, and the processing unit 105 may connect to the memory 101 to execute the steps of the computer program (s). Such a computer program may include, for example, a program representing the algorithm described above and a program implementing other aspects of the present invention as described below.
또한, 단일 처리부(105)를 갖는 단일처리 시스템(single processing system)(100)을 도 1에 나타내고 있으나, 상기 처리 시스템(100)은 다중처리부(multiple processing unit)(105)를 포함할 수 있는 것으로 이해되어야 한다. 또한, 단일처리 시스템(100) 대신에 다중처리 시스템을 이용하여 본 발명을 구현할 수도 있다.In addition, although a single processing system 100 having a single processing unit 105 is shown in FIG. 1, the processing system 100 may include a multiple processing unit 105. It must be understood. In addition, the present invention may be implemented using a multiprocessing system instead of the single processing system 100.
상세한 설명의 나머지 부분은, 하드웨어 레지스터에서 GF(pk)의 필드 원소를 나타내는 이진 데이터를 저장하고, GF(pk)의 필드 원소를 포함하는 산술 계산의 속도를 개선하는 점에서, 이러한 이진 데이터로 연산을 실행하는 본 발명에 따른 방법을 설명하는 데에 초점을 맞출 것이다. 이 점에 대해서, GF(pk)의 필드 원소를 덧셈 및 곱셈하기 위한 알고리즘 GF_p_k_ADD 및 GF_p_k_MUL이 설명될 것이다. 또한, 상기 방법을 구현하는 다른 장치도 설명될 것이다.The remainder of the detailed description, in that for storing binary data representing a field element of GF (p k) in the hardware registers, improve the speed of the arithmetic operations including a field element of GF (p k), such binary data It will be focused on describing the method according to the invention for performing the operation with. In this regard, algorithms GF_p_k_ADD and GF_p_k_MUL for adding and multiplying the field elements of GF (p k ) will be described. Also, other apparatus for implementing the method will be described.
본 발명의 한 양태에 따르면, 도 1에 나타낸 상기 장치(100)는, 홀수 표수 유한 필드의 필드 원소를 포함하는 계산을 실행하는 종래의 방법에 비해 계산 효율을 개선하는 방식으로, 홀수 표수 유한 필드 GF(pk)의 필드 원소를 포함하는 계산을 실행하는 데 사용될 수 있다. 특히, 처리부(105)는, 도 1에 나타낸 레지스터(107)와 같은 레지스터에 홀수 표수 유한 필드 GF(pk)의 필드 원소의 적어도 일부를 나타내는 이진 데이터를 저장하도록 구성된다(예를 들어, 프로그램 된다). 여기서, P는 홀소수이고 필드 원소는 다항식 기저 표기법에 따른 k 계수를 포함한다. 처리부(105) 및 레지스터는 GF(pk)의 필드 원소의 적어도 일부에서 표시되는 이진 데이터를 저장하는 수단으로서 볼 수도 있다. 이진 데이터는 데이터 비트의 복수의 그룹으로 이루어지고, 여기서 데이터 비트의 각 그룹은 k 계수 중 관련된 하나를 표시한다. 따라서 홀수 표수 유한 필드 GF(pk)의 필드 원소의 다중(multiple) 계수를 나타내는 이진 데이터를 본 발명의 양태에 따른 단일 하드웨어 레지스터에 넣을 수 있다. 반면, 홀수 표수 유한 필드의 필드 원소를 포함하는 계산을 실행하기 위한 종래의 방법은 단지, 홀수 표수 유한 필드의 단일 계수를 표시하는 이진 데이터를 단일 하드웨어 레지스터에 둔다.According to one aspect of the present invention, the apparatus 100 shown in FIG. 1 has an odd number finite field in a manner that improves the computational efficiency as compared to conventional methods of performing calculations involving field elements of odd number finite fields. Can be used to perform calculations involving field elements of GF (p k ). In particular, the processing unit 105 is configured to store binary data representing at least a part of the field elements of the odd number finite field GF (p k ) in a register such as the register 107 shown in FIG. 1 (eg, a program). do). Where P is an odd number and the field element contains the k coefficient according to polynomial basis notation. The processing unit 105 and the register may also be viewed as a means for storing binary data displayed in at least part of the field elements of the GF (p k ). Binary data consists of a plurality of groups of data bits, where each group of data bits represents an associated one of the k coefficients. Thus, binary data representing multiple coefficients of field elements of odd odd finite field GF (p k ) can be put into a single hardware register in accordance with aspects of the present invention. In contrast, conventional methods for performing calculations involving field elements of odd odd finite fields only place binary data indicative of a single coefficient of odd odd finite fields in a single hardware register.
또한, 처리부(105)는 상기한 레지스터(107)의 콘텐츠에 대해 적어도 하나의 연산을 실행하도록 구성되어, 데이터 비트의 복수 그룹이 병렬로 처리되게 한다. 예를 들어 몇 가지만 열거하더라도, 하나 이상의 연산은 시프트 연산, 덧셈 연산, 이진 뺄셈 연산, 논리 AND 연산 및 NOT 연산(부논리)을 포함할 수 있다. 이 점에 있어서, 상기 처리부(105)는 데이터 비트의 복수 그룹이 병렬로 처리되도록 이진 데이터에 대해 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다. 따라서, 단일 하드웨어 레지스터에 GF(pk)의 필드 원소의 다중 계수를 표시하는 이진 데이터를 저장하고, 병렬로 데이터 비트의 복수 그룹을 처리함으로써, 본 발명에 따른 계산 속도는 홀수 표수 유한 필드의 필드 원소를 포함하는 계산에 대한 종래의 방법에 비해 매우 증대될 수 있다. 예를 들어, GF(pk)의 필드 원소의 모든 k 계수가, 도 1에 나타낸 레지스터(107)와 같이, 단일 하드웨어 레지스터에 표시되면, 필드 원소를 표시하는 이진 데이터를 처리하는 속도는 종래 방법에 대해 덧셈 k와 곱셈 k2의 인수(factor)만큼 증가될 수 있다.Further, the processing unit 105 is configured to execute at least one operation on the contents of the register 107 described above, so that a plurality of groups of data bits are processed in parallel. For example, even if only a few are listed, one or more operations may include shift operations, addition operations, binary subtraction operations, logical AND operations, and NOT operations (negative logic). In this regard, the processing unit 105 may be viewed as a means for executing at least one operation on binary data such that multiple groups of data bits are processed in parallel. Thus, by storing binary data representing multiple coefficients of the field elements of GF (p k ) in a single hardware register, and processing multiple groups of data bits in parallel, the computational speed in accordance with the present invention is achieved in fields of odd odd finite fields. This can be greatly increased compared to conventional methods for calculations involving elements. For example, if all k coefficients of the field elements of GF (p k ) are represented in a single hardware register, such as the register 107 shown in FIG. 1, the speed of processing binary data representing the field elements is a conventional method. Can be increased by a factor of addition k and multiplication k 2 .
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"로 표기한다.Multiple coefficients of the field elements of GF (p k ) can be stored in a single hardware register using two typical methods in accordance with the present invention. These methods are referred to herein as single-guard-bit representations and multiple-guard-bit representations, respectively, each of which has different advantages as described below. Have. In the description of each of these notations, the structure of the hardware is capable of performing basic arithmetic and logical operations on the w-bit word, i.e. the hardware register becomes a w-bit register for w≥k (m + 1). Assume, where binary data representing the entire field element will be stored in a single register. In the conventional sense, this means that the hardware structure can perform arithmetic and logical operations on binary encoded integers in the range of (0 ... 2 w -1). In principle, a large value of w is preferred because more information can be processed per operation. Bit positions are numbered from right to left, where the least significant bit is denoted by "0", the next bit is denoted by "2", and the most significant bit (word size) is "w". -1 ".
단일-가드-비트 표기법의 예를 32-비트 하드웨어 레지스터에 대해 도 2A 및 2B에 나타내었다. 도 2A는 GF(310)의 필드 원소 αi=(α9,i, ..., α1,i, α0,i)를 표시하는 이진 데이터를 저장하기 위한 데이터 저장 구조를 갖는 하드웨어 레지스터(200)의 개략도이다.An example of single-guard-bit notation is shown in Figures 2A and 2B for a 32-bit hardware register. 2A shows a hardware register having a data storage structure for storing binary data representing the field elements α i = (α 9, i ,..., Α 1, i , α 0, i ) of GF (3 10 ). Schematic diagram of 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)는 사용되지 않는다(짙은 음영 영역). 일반적으로, 사용되지 않는 비트 위치는 최상위 비트 위치이다. 그러나 사용되지 않는 비트 위치를 최하위 비트 위치에 둘 수도 있다. 사용하지 않는 비트 위치가 최상위 비트 위치에 놓여 있다면, 어떤 특정 값을 사용되지 않는 비트 위치에 할당할 필요가 없다. 그렇지 않다면, 사용하지 않는 비트 위치는 초기에 영으로 할당되어야 한다.In the example of FIG. 2A, ten groups of bit positions 201-r (unshaded bit positions) represent the data bits representing the field coefficients α 9, i , ..., α 1, i , α 0, i . 10 groups are allocated to store. Two bit positions are allocated to store binary data representing each coefficient α j, i (suffice since α j, i ≦ 3 <2 2 ). Groups of data bits representing the coefficients α 0, i are stored in bit positions 0 and 1 (to the right). Another group of data bits representing the coefficients α 1, i are stored in bit positions 3 and 4. The 10 bit position 203-r is also assigned to store the “guard bit (light shaded area)” initially assigned a binary value of zero. In the example of FIG. 2A, bit positions 2, 5, 8, and the like are assigned guard bits. The guard bit position (also known as the separating-bit position) allows to separate binary data representing the field coefficients and to accept any carry bit from the immediately preceding group of bit positions 201-r. For example, when an arithmetic and logical operation is performed, a carry bit from the group of bit positions 201-1 prevents carry over to an adjacent group of bit positions 201-2, and instead, guard-bit position 203 Pass carry by -1 Also, in the example of FIG. 2A, the two most significant bit positions 205 in the register 200 are not used (dark shaded areas). In general, the unused bit position is the most significant bit position. However, unused bit positions can also be placed in the least significant bit positions. If the unused bit position is at the most significant bit position, there is no need to assign any particular value to the unused bit position. Otherwise, unused bit positions must be initially assigned to zero.
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 이진 비트(가드 비트를 포함하지 않음)는 필드 원소의 각 계수를 표시하기 위해 사용된다.In the example of FIG. 2A for GF (3 10 ), the ground field is GF (3), and the following mapping can be applied between the integer value of each coefficient and the corresponding binary data (the values in parentheses are binary data): 0-(0,0); 1 to (0, 1); 2 ~ (1,0); 3 ~ (1,1), where 3 also corresponds to 0 (since 3 mod 3 = 0). Thus, in one aspect of the present invention, a dual notation is provided in which two different numbers in GF (p) (3 and 0, p = 3 in this example) are represented by the same value (zero). In GF ( 3k ) two binary bits are used to represent each coefficient of the field element. For GF (p k ), in general, the number of bits used to represent the coefficient of the field element depends on the p value. If p is given by p = 2 m −1, then m binary bits (not including guard bits) are used to indicate each coefficient of the field element.
단일-가드-비트 표기법의 다른 예를 도 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 등에 저장된다.Another example of single-guard-bit notation is shown in FIG. 2B. 2B is a schematic diagram of a hardware register 210 having a data storage structure for storing field elements α i = (α 4, i ,..., Α 1, i , α 0, i ) of GF (7 5 ). . In the example of FIG. 2B, five groups of bit positions 211-r (non-shaded bit positions) are assigned to store binary data representing the field coefficients α 4, i , ..., α 1, i , α 0, i do. In this example, p = 7 = 2 m −1. Therefore, m = 3, three bits (not including guard bits) are allocated to store binary data representing each coefficient α 0, i . Binary data representing coefficients α 1, i are stored in bit positions 4, 5, 6 and the like.
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)를 동일값(영)으로 표시하는 이중 표기법이 제공된다.In the example of FIG. 2B for GF (7 5 ), the ground field is GF (7), and the following mapping can be applied between the integer value of each coefficient and the corresponding binary data (the values in parentheses are binary data): 0 to (0,0,0); 1 to (0,0,1); 2 ~ (0,1,0); 3 to (0, 1, 1); 4 to (1,0,0); 5 to (1, 0, 1); 6 to (1, 1, 0); And 7 ~ (1,1,1), where 7 also corresponds to 0 (since 7 mod 7 = 0). Thus, the present invention provides a dual notation for representing two different numbers (7 and 0 in this example, p = 7) in GF (p) with the same value (zero).
또한, 도 2B의 예에서, 5 비트 위치 213-r은 초기에 이진값 0으로 할당된“가드 비트(연한 음영 영역)”를 저장하도록 할당된다. 또한, 비트 위치 3, 7, 8, 11 등은 가드 비트로 할당된다. 또한, 도 2B의 예에서, 레지스터(210)에서 12 최상위 비트 위치(215)는 사용되지 않는다(짙은 음영 영역).In addition, in the example of FIG. 2B, the 5-bit position 213-r is allocated to store the "guard bit (light shaded area)" initially assigned a binary value of zero. In addition, bit positions 3, 7, 8, 11, and the like are allocated as guard bits. Also, in the example of FIG. 2B, the 12 most significant bit positions 215 in the register 210 are not used (dark shaded areas).
다중-가드-비트 표기법의 예를 도 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 등은 가드 비트에 대해 할당된다. 이러한 예에서 사용되지 않는 비트는 없다.An example of multi-guard-bit notation is shown in FIG. 2C. 2C is a schematic diagram of a hardware register 220 having a data storage structure for storing field elements α i = (α 7, i ,..., Α 1, i , α 0, i ) of GF (7 8 ). . In the example of FIG. 2C, eight groups of bit positions 221-r (non-shaded bit positions) are assigned to store binary data representing the field coefficients α 7, i , ..., α 1, i , α 0, i Adjacent groups of bit positions 221-r are separated by groups of two guard bit positions 213-r (light shaded bit positions). In this example, p = 3 = 2 m −1. Therefore, m = 2, two bits (not including guard bits) are allocated to store binary data indicative of each coefficient α j, i . Binary data representing the coefficients α 0, i are stored in bit positions 0 and 1 (to the right). Binary data representing coefficients α 1, i are stored in bit positions 4, 5, 6 and the like. Eight groups of bit positions 223-r are allocated to store each of the two guard bits, initially assigned a binary value of zero. In the example of FIG. 2C, bit positions 2, 3, 6, 7, 8, 10, 11, and the like are allocated for the guard bits. There is no unused bit in this example.
전형적으로, 단일 하드웨어 레지스터(107)에 GF(pk)의 전체 필드 원소를 표시하는 이진 데이터를 저장하는 것은 바람직하다. 그러나, 이진 표기법이 단일 레지스터의 저장 용량을 초과할만큼 필드 원소가 충분히 클 경우에, 레지스터(107)에 필드 원소의 적어도 일부를 표시하는 이진 데이터를 저장하는 것이 바람직하다. 상기한 산술 및 논리 연산은 GF(pk)의 단일 필드 원소를 표시하는 이진 데이터를 함께 저장하는 다중 레지스터에서의 연산과 통합하여 실행될 수 있다. 예를 들어, 2개의 레지스터가 GF(pk)의 단일 필드 원소를 표시하는 이진 데이터를 저장하기 위해 사용된다면, 좌측 레지스터에서의 최하위 비트가 우측 레지스터의 최상위 비트 쪽으로 시프트 되도록, 모든 이진 데이터에 대한 m 비트만큼의 우측 시프트가 2개의 레지스터와 통합하여 실행될 수 있다. (“우측(right-hand)” 및 “좌측(left-hand)"이라는 용어는, 레지스터에서 맨 왼쪽의 비트 위치(left-most-bit position)가 최상위 비트 위치에 해당한다는 의미에서, 단지 레지스터를 구별하기 위해 사용된다. 상기 용어는 하나의 레지스터가 반드시 다른 레지스터의 왼쪽에 물리적으로 위치한다는 것을 나타내기 위한 것이 아니다.) 그러나, 필드 원소를 표시하는 이진 데이터를 저장하기 위해 2개의 레지스터가 사용되는 경우, 사용되지 않는 여분의 비트가 우측 레지스터의 최상위 비트에 존재하면, 사용되지 않은 여분 비트에 대해 스킵하도록 우측-시프트 연산이 실행되어야 한다는 것에 유의해야 한다.Typically, it is desirable to store binary data representing the entire field element of GF (p k ) in a single hardware register 107. However, if the field element is large enough that the binary notation exceeds the storage capacity of a single register, it is desirable to store binary data representing at least a portion of the field element in register 107. The arithmetic and logical operations described above can be implemented in combination with operations in multiple registers that together store binary data representing a single field element of GF (p k ). For example, if two registers are used to store binary data representing a single field element of GF (p k ), then for all binary data, the least significant bit in the left register is shifted toward the most significant bit of the right register. The right shift by m bits can be performed in combination with the two registers. (The terms "right-hand" and "left-hand" refer only to registers in the sense that the left-most-bit position in the register corresponds to the most significant bit position. The term is not intended to indicate that one register is physically located to the left of the other register.) However, two registers are used to store binary data representing field elements. It should be noted that if an unused extra bit is present in the most significant bit of the right register, a right-shift operation must be performed to skip over the unused extra bit.
본 발명의 다른 양태에 따라, 도 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 이진 데이터를 생성한다.According to another aspect of the present invention, the system 100 shown in FIG. 1 may be configured to perform the steps in the flowchart shown in FIG. 3. 3 shows a method 300 that includes a number of steps that may be executed by the processing unit 105 shown in FIG. 1. As in step 301 shown in FIG. 3, the processing unit 105 stores the first binary data indicating the first field element of the GF (p k ) in the first register (for example, the register 109). Odd number). Here, the first binary data includes k groups of first data bits, each group of first data bits corresponding to an associated one of k coefficients of the first field element. Similarly, as in step 303, processor 105 stores second binary data representing a second field element of GF (p k ) in a second register (e.g., register 111). Here, the second binary data includes k groups of second data bits, each group of second data bits corresponding to an associated one of the k coefficients of the second field element. In addition, as in step 305, the processing unit 105 performs the content of the first register and the content of the second register such that k groups of the first data bits are processed in parallel and k groups of the second data bits are processed in parallel. Generate third binary data by executing at least one operation on the. For example, to list just a few, the operations or operations mentioned in step 305 include addition operations, subtraction operations, shift operations, logical AND operations, and NOT operations. Combinations of these operations may be performed such that, for example, a third field element equal to the sum of the first and second field elements or a third field equal to the product of the first and second field elements, as described in detail below. Generate third binary data representing the element.
적어도 하나의 제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”은 라벨로서 사용되었다.) At least one first guard bit is located adjacent to the most significant bit of each group of first data bits, and each group of first data bits is from an adjacent group of first data bits by corresponding at least one first guard bit. To be separated, a k group of first data bits may be configured in the first register 109. At least one second guard bit is located adjacent to the most significant bit of each group of second data bits, and each group of second data bits is from an adjacent group of second data bits by the corresponding at least one first guard bit. To be separated, a k group of second data bits may be configured in the second register 111. In addition, at least one third guard bit is located adjacent to the most significant bit of each group of third data bits, and each group of third data bits is adjacent to the third data bit by at least one third guard bit corresponding thereto. To be separated from the group, the third binary data may comprise a k group of third data bits stored and organized in a third register (eg, register 113). In this regard, the third field element includes k third coefficients according to polynomial-based notation, with each group of third data bits representing an associated one of the k third coefficients. (In the description above, “first”, “second” and “third” are used as labels.)
처리부(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 이진 데이터에 대해 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다.The processor 105 and the first register (eg, register 109) can be viewed as a means for storing first binary data representing the first field element of GF (p k ). The processing unit 105 and the second register (eg, register 111) can be viewed as a means for storing second binary data representing the second field element of GF (p k ). The processing unit 105 and the third register (eg, the register 113) may be viewed as a means for storing third binary data representing the third field element of the GF (p k ). The processing unit 105 means for executing at least one operation on the first binary data and the second binary data such that k groups of first data bits are processed in parallel and k groups of second data bits are processed in parallel. Can be seen.
단계 307에서, 추가 데이터가 처리되어야 하는지의 여부를 결정한다. 추가 데이터가 처리되어야 한다면, 단계 301로 돌아가서 진행된다. 다른 계산 결과로서 단계 301 및/또는 303과 일치하는 방식으로 이미 저장된 이진 데이터를 처리하는 것이 추가적인 처리에 포함되면, 단계 301 및/또는 303은 적절히 스킵할 수 있다. 단계 307에서 추가 데이터를 처리하지 않는 것으로 결정되면, 알고리즘은 종료한다.In step 307, it is determined whether additional data should be processed. If additional data should be processed, the process returns to step 301. If further processing involves processing binary data already stored in a manner consistent with steps 301 and / or 303 as a result of another calculation, steps 301 and / or 303 may be skipped as appropriate. If it is determined in step 307 not to process additional data, the algorithm ends.
도 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의 함수 형태를 참조하고 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 어느 것이 사용되었는가를 참조하여, 아래에서 설명한다.An exemplary method of performing step 305 shown in FIG. 3 is described. Step 305 may be executed using, for example, algorithm GF_p_k_ADD or algorithm GF_p_k_MUL described below. GF_p_k_ADD and GF_p_k_MUL were mentioned in the above descriptions for the algorithms SUM (α, β), PRODUCT (α, β) and REDUCE (δ, f). As described below, the particular aspect of the algorithm for both GF_p_k_ADD and GF_p_k_MUL depends on the functional form of the arithmetic value p, and also on whether a single guard-bit notation or multiple guard-bit notation is used. In particular, certain aspects of this algorithm depend on which integer m is written, p = 2 m −1, p = 2 m +1, p = 2 m for which integer d. The integer d is chosen such that d <2 m −1. However, selecting d smaller (e.g. d < p / 6) has some advantages, as described below. Thus, for the typical form for GF_p_k_ADD and for the typical form for GF_p_k_MUL, reference is made to the functional form of the surface value p and described below with reference to whether single-guard-bit notation or multi-guard-bit notation is used. .
상기 코멘트의 관점에서, 주어진 홀소수 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) 쌍을 찾을 수 있다.In view of the comments above, there is a question as to whether the form of GF_p_k_ADD or the form of GF_p_k_MUL should be used when a given odd decimal number p can be written more than one function form. For example, p = 5 can be written as p = 2 m + 1 for m = 2 and p = 5 can also be written as p = 2 m -d for m = 3 and d = 3. In general, it is preferable to use the method for p = 2 m −1 rather than for the other two functional forms. It is also preferable to use the method for p = 2 m + 1 rather than the method for p = 2 m ± d with d> 1. In general, for p = 2 m ± d, it is preferable to select the odd number d, and the closer to 1 as possible, the better. Given a p value, try for all m = 1, 2, ..., (2log2 (p)), and choose d that satisfies p = 2 m ± d until we find a small d for each m By doing so, good (m, d) pairs can be found.
단일-가드 비트 표기법을 사용한 덧셈, p=2 m -1 Addition using single-guard bit notation, 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 명령을 사용하여 실행될 수 있다.If p = 2 m -1, describe GF_p_k_ADD for single-guard-bit notation, and add the full addition of the two field elements in GF (pk) containing the relevant modular abbreviations (ie, each field element). K addition to the k coefficient of s) can be implemented with a small, fixed number of operations (no need for modular division requiring long division) in a hardware structure with at least w = k (m + 1) bitword size Indicates. For example, for a 32-bit structure, full addition in GF 3 10 can be performed using only 5 instructions.
단일-가드 비트 표기법에서, 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이므로 충분함).In single-guard bit notation, the first binary data representing the first field element α i = (α k-1, i , ..., α 1, i , α 0, i ) of GF (p k ) is Binary data representing α 0, i from bit positions 0 to m-1 such that a group of data bits representing one field coefficient is separated by one bit position from an adjacent group of data bits representing another field coefficient , Binary data representing α 1, i from bit positions m + 1 to 2m, and so forth, are stored in a first single hardware register (e.g., register 107 in FIG. 1). Second binary data representing the second field element β is likewise stored in a second single hardware register (eg, register 109). Bit positions v (m + 1) -1 (where v = 1, 2, ..., k) are allocated to separate binary data representing coefficients α 0, i , α 1, i and the like. This position is called the guard-bit position or split-bit position and is initially assigned a value of "0". An example of storing binary data according to the single-guard-bit notation for the w = 32-bit structure is shown in Figures 2A and 2B, which have already been described for the elements of fields GF (3 10 ) and GF (7 5 ), respectively. For example, in FIG. 2A for GF 3 10 , a 2-bit position is reserved for each α j, i (suffice since α j, i ≦ 3 <2 2 ).
제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에 주어진 연산을 실행함으로써 결정될 수 있다.As first and second binary data representing the first and second field elements of GF (p k ) stored in the first and second registers, respectively, the operation can be performed to determine the sum of the first and second field elements. have. The contents of the first and second registers are referred to as a and b, respectively. With M2 as a binary quantity of "1" bits only at position j (m + 1) -1 (j = 1, 2, ... k) and elsewhere "0" (that is, M2 = 2 m +2 2m + 1 + ... + 2 k (m + 1) -1 ), M1 = MOT (M2) (bitwise negation) Let M1 be the binary amount given. The sum of the first and second field elements can be determined by performing the operation given in equation (13).
(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)에서 비트를 마스크-아웃시킨다.Where "&" represents a bitwise logical AND, ">>" represents a right shift, "+" represents a carry-added, and c is equal to the sum of the first and second field elements. The register content is composed of third binary data representing a third field element. The operation reflected in equation 13 can be executed in any way desired. For example, an intermediate quantity (a + b) can be stored in a given register and the given register can be overwritten with the final result given by the quantity c such that the operation (a + b) is executed only once. have. Binary amounts M1 and M2 can be thought of as mask amounts, which, when combined with the amount (a + b) through each logical AND operation, as in Equation 13, result in binary amounts M1 and M2 being the amount ((a + b). This is because the bits are masked out (set to zero) at specific bit positions in " & M1) and ((a + b) & M2). Binary amount M1 masks out a bit at the amount ((a + b) & M1) corresponding to the guard-bit position. Binary amount M2 masks out a bit at the amount ((a + b) & M2) corresponding to a non-guard-bit position.
위치 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를 결정하여도 마찬가지로 된다.When Equation 13 is executed with guard bits at positions m, 2m + 1, etc. , α j + 1, i (or β j + ) from the m-bit segment corresponding to any α j, i (or β j, i ). Carry bit is not transmitted to the segment indicating 1, i ). Thus, the field-element sum is actually calculated in component-wise, modulo p, for α i and β i . Mask operation by M1 ensures that the result has the correct notation with zero at the guard-bit position. In the above discussion, M2 is first determined and then M1 is defined as the term of M2. However, M1 is first determined as a binary amount having a value of 0 at the bit position corresponding to the bit position of the first guard bit stored in the first register and a value of 1 otherwise, and then M2 is determined as M2 = NOT (M1). The same may be done.
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의 전형적인 구현을 표시한다.An example of this form of GF_p_k_ADD when p = 2 m −1 is shown in the flowchart of FIG. 4. The operation shown in FIG. 4 may be executed by a system such as system 100 shown in FIG. First binary data representing the first field element of GF (p k ) is stored in a first register (e.g., register 107 shown in FIG. 1), and a second register (e.g., register 109) is stored in the first register (e.g., register 107 shown in FIG. It is assumed that the steps 301 and 303 in FIG. 3 have already been executed in the processing unit 105 so that the second binary data representing the two field elements is stored. The steps shown in FIG. 4 indicate a typical implementation of step 305 shown in FIG.
단계 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)에 저장된다.As shown in step 401, the processing unit 105 adds the content a of the first register 107 and the content b of the second register 109. The addition can include a carry in the next most significant bit given if necessary. The result of the addition may be stored in another register 111. As shown in step 403, the processing unit 105 performs a logical AND operation between the amount (a + b) stored in the register 111 and the first predetermined binary amount M1 stored in one of the registers (e.g., 113). Run The quantity M1 has a value of 0 at a bit position corresponding to the bit position of the first guard bit stored in the first register 107 and corresponds to the bit position of the group of the first data bit stored in the first register. Has a value of 1. The result of this operation may be referred to as the first intermediate data c1 and is stored in one of the registers (eg, register 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 필드 원소의 합을 표시한다.As shown in step 405, the processing unit executes a logical AND operation between the amount (a + b) stored in the first register 111 and the second predetermined binary amount M2 where M2 is given by M2 = NOT (M1). . The NOT operation is a bitwise logical operation. The result of this operation is stored in one of the registers (eg, register 117). Also in step 405, the processing unit 105 performs a right shift by m bits for the amount given by ((a + b) & M2). The result of this operation is stored in the same register 117 or another register. The result of this operation may be said to be the second intermediate data c2 as shown in step 405. In step 407, the processing unit adds between the first intermediate binary data c1 and the second intermediate binary data c2 to generate the third binary data c, which is one of the registers (eg, Register 119). According to this method, the second binary data c represents the sum of the first field element and the second field element.
도 3 및 4에 따른 알고리즘은 설명을 쉽게 하기 위해 특정한 일련의 단계로서 설명하였다. 그러나 도시한 순서에 정확하게 도 3 및 4에 나타낸 단계를 실행할 필요는 없다. 본 기술 분야에 속한 사람이라면 상기 단계들의 순서를 변경할 수 있고 그 중 일부는 동시에 실행될 수 있다는 것을 알 수 있다. 예를 들어, 도 3의 단계 301 및 303은 동시에 실행될 수 있고, 도 4의 단계 403 및 405는 동시에 실행될 수 있다.The algorithm according to FIGS. 3 and 4 has been described as a specific series of steps for ease of explanation. However, it is not necessary to carry out the steps shown in Figs. 3 and 4 in the order shown. One of ordinary skill in the art appreciates that the order of the steps can be changed and some of which can be executed concurrently. For example, steps 301 and 303 of FIG. 3 may be executed simultaneously, and steps 403 and 405 of FIG. 4 may be executed simultaneously.
k=1에 대한 다음의 특별한 경우를 고려함으로써, 상기한 GF_p_k_ADD에 대한 전형적 형태의 양태에 대하여 추가적으로 이해할 수 있다. 상기 설명에서, 수 “0”은 2개의 표기법, 즉 0 그 자체와 p=2m-1를 가진다. 입력 및 출력 연산 중에 이러한 이중성(duality)을 고려할 필요가 있다. p=0 mod p가 주어지면, 이러한 이중 표기법에 대한 수학적 문제는 없다. 이러한 이중 표기법에서 정수는 다음 식에 따라 modulo p로 더할 수 있다.By considering the following special case for k = 1, one can further understand the aspects of the typical form for GF_p_k_ADD described above. In the above description, the number “0” has two notations, 0 itself and p = 2 m −1. It is necessary to take this duality into account during input and output operations. Given p = 0 mod p, there is no mathematical problem with this double notation. In this double notation, integers can be added to modulo p by
(14) (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에 따라 결정될 수 있다.Here, div 2 m is a function of returning to the floor of the quotient when the divisor is 2 m . In other words, the sum of a and b (in dual notation) is a + b if a + b <2 m, otherwise the sum is ((a + b) mod 2 m ) +1. Thus, in these two cases (depending on whether the sum is less than 2 m or not), the formula (a + b) mod p = [(a + b) mod 2 m ] + [(a + b) div 2 m ] Together. Since the modular and divisors are each powers of two, it can be seen that (a + b) ≦ 2 (2 m −1) = 2 m + 1 −2 and the mod and div operations can be effectively executed as bit operations. Thus, given a hardware structure capable of performing operations on (at least) m + 1 bits, and given a double notation for a and b, the amount (a + b) mod p (in dual notation) is Can be determined according to 15.
(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의 선택을 이해할 수 있다.Since a + b <2 m + 1 −2, when w is a register size, if w≥m + 1, the result of executing Expression 15 does not overflow. Thus, instead of one addition and one modular abbreviation (long division) by p, five simple operations are performed if the amounts 2 m and 2 m-1 are fixed and can be considered constant bit-masks. In the discussion above, we assume k = 1 to facilitate the discussion. Of course, the invention can be practiced using k values greater than one. Nevertheless, a discussion of k = 1 can understand the form of GF_p_k_ADD and the choice of binary amounts M1 and M2 according to the invention used when k is greater than one.
또한, 수 “0”이 0 그 자체와 p=2m-1로 표시되는 이중 표기법은, 상기한 방법에 따른 두 필드 원소의 합을 결정하는 것을 용이하게 한다. 상기한 바와 같이, p에 의한 하나의 덧셈 및 하나의 모듈러 약분(긴 나눗셈)을 사용하여 두 필드 원소의 합을 결정하는 대신에, 이중 표기법은 두 필드 원소를 표시하는 이진 데이터에 대한 5 단순 연산을 사용하도록 하여 그 합을 결정한다.In addition, the dual notation in which the number “0” is represented by 0 itself and p = 2 m −1 facilitates determining the sum of two field elements according to the above-described method. As mentioned above, instead of determining the sum of two field elements using one addition and one modular short (long division) by p, double notation uses five simple operations on binary data representing two field elements. Use to determine the sum.
확장 필드 GF(p l k)에 관해, SUM(α, β) 및 PRODUCT(α, β)에 대한 논의에 대해 상술한 바와 같이, 각 확장 필드의 원소는 길이 l의 벡터(다항식)로 표시되고, 여기서 각 성분(계수)은 GF(pk)의 원소이고, 상술한 바와 같은 단일 가드-비트 표기법에 따라 저장될 수 있다. 확장 필드 GF(p l k)에서 두 원소를 더하는 것은, 종래의 방법을 사용할 때 요구되는 바와 같이, lk 연산 대신에 5l 연산을 사용하여 실행될 수 있다. 따라서, 상대적으로 작은 k 값에 대해서도, 계산 속도의 현저한 증가를 달성할 수 있다.Regarding the extension field GF (p l k ), as described above for the discussion of SUM (α, β) and PRODUCT (α, β), the elements of each extension field are represented by a vector of length l (polynomial) Where each component (coefficient) is an element of GF (p k ) and can be stored according to a single guard-bit notation as described above. Adding two elements in the extended field GF (p l k ) may be performed using a 5 l operation instead of an l k operation, as required when using conventional methods. Therefore, even with a relatively small k value, a significant increase in the calculation speed can be achieved.
또한, 후술하는 바와 같이, 상기한 GF_p_k_ADD에 대한 전형적인 형태는 p=2m-1에 대한 다중-가드-비트 표기법에 따라 저장되는 이진 데이터에 적용할 수도 있다.Further, as described below, the typical form for GF_p_k_ADD described above may also apply to binary data stored according to the multi-guard-bit notation for p = 2 m −1.
(실시예 1)(Example 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개의 사용하지 않는 비트의 레지스터 공간(짙은 음영 비트 위치)이 있다.An example of numerical values describing the method shown in FIGS. 3 and 4 is shown in FIG. 5. The operation described below can be executed using a system such as the system 100 shown in FIG. 1 already described. FIG. 5 shows the register contents obtained by performing the operation as described above with respect to FIGS. 3 and 4. In Fig. 5, reference numerals 501-517 are 32-bit registers, and the binary data stored in registers 501-517 are organized according to a single guard-bit notation. Further, in this example, the binary data represents the field element of the finite field GF (3 10 ), and the surface number p is given by p = 2 m −1 = 3. Thus, M = 2 and a 2-bit register space is allocated for each coefficient of finite field element. A single guard bit (light shaded bit position) separates adjacent binary data representing the adjacent coefficients of finite field elements. Also in this example, there is a register space (dark shaded bit position) of two unused bits in the most significant bit position of each register 501-517.
이 예에서, 제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에서의 각 가드-비트 위치는 초기에 영의 값으로 할당된다.In this example, the first binary data a representing the first field element (2,2,0,2,0,3,2,2,0,0) (vector display) and the second field element (0) Second binary data b representing, 1,2,2,0,2,1,3,0,0 (vector display) is stored in the first and second registers 501 and 503, respectively (step 301, 303). Each coefficient of the field element is an element of the ground field GF (3) itself, and each coefficient is represented by binary data according to the following combination. That is, 0 to (0,0); 1 to (0, 1); 2 ~ (1,0); 3 ~ (1,1). Double notation is provided, where two different numbers in GF (p) (3 and 0 in this example p = 3) represent the same value (0). Thus, the binary data given by (1,1), corresponding to 3, represents 0 (since 3 mod 3 = 0). Each guard-bit position in registers 501 and 503 is initially assigned a zero value.
레지스터 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)과 동일하다.Register contents a and b stored in registers 501 and 503 are added via addition (corresponding to step 401), respectively. As a result, (a + b) is stored in the third register 505. The content (a + b) of the register 505 is combined with a logical AND operation with the content of the register 507, where the amount M1 is stored, and the result c1 = (a + b) & M1 is stored in the register 509 (Corresponds to step 403). The amount M2 = NOT (M1) is also stored in register 511. The content (a + b) of register 505 and the content M2 of register 511 are combined through a logical AND operation, so that (a + b) & M2 is stored in register 513 (corresponding to step 405). The content (a + b) & M2 of register 513 is shifted right by m = 2 bits, and the result is stored in register 513 (corresponding to step 405). The content c1 of register 509 and the content c2 of register 515 are added by addition, and the result is stored in register 517. The result is given by (2, 3, 2, 1, 0, 2, 3, 2, 0, 0) (vector display) and as expected, (2, 0, 2, 1, 0, 2, 0, 2, 0, 0).
상기한 예에서, 제1 이진 데이터, a와, 제2 이진 데이터, b를 더할 때 레지스터 505에 나타낸 바와 같이 3 가드-비트 위치(비트 위치 8, 14 및 20)로 캐리들이 생성된다. 상기 가드-비트 위치는 상기 캐리 비트가 데이터 비트의 인접 그룹의 값에 영향을 주는 것을 방지한다. 따라서, 이 예에서, 상기 가드-비트 위치(연한 음영 비트 위치)는 데이터 비트의 10 그룹에 대해 병렬로 연산을 실행하게 하고, 여기서 데이터 비트의 10 그룹은 10 필드 계수를 나타낸다.In the above example, the carry is generated in three guard-bit positions (bit positions 8, 14 and 20) as shown in register 505 when adding the first binary data, a, the second binary data, b. The guard-bit position prevents the carry bit from affecting the value of an adjacent group of data bits. Thus, in this example, the guard-bit position (light shaded bit position) causes the operation to be performed in parallel on ten groups of data bits, where ten groups of data bits represent ten field coefficients.
상기한 연산의 설명을 편리하게 하기 위해, 도 5에 나타낸 여러 단계의 이진 결과가 개별적으로 식별되는 레지스터에 저장되는 것으로 설명한다. 그러나 본 기술 분야에 속하는 자라면, 미리 저장된 이진 데이터를 더 앞선 단계로부터 덮어 쓰는 방식으로 레지스터를 재사용함으로써 상기 여러 단계를 실행할 수 있다는 것을 알 수 있다. 예를 들어, 레지스터 509 및 515에 나타난 제1 및 제2 중간 이진 데이터(c1 및 c2)는, 미리 저장된 이진 a 및 b를 덮어 씀으로써 레지스터 501 및 503에 대신 저장될 수 있으므로 레지스터 공간을 더욱 효율적으로 이용할 수 있다. 이것으로 실시예 1의 논의를 완료한다.In order to facilitate the explanation of the above operation, it is described that the binary results of the various steps shown in FIG. 5 are stored in registers which are individually identified. However, one of ordinary skill in the art appreciates that the various steps can be performed by reusing registers in a manner that overwrites previously stored binary data from earlier steps. For example, the first and second intermediate binary data c1 and c2 shown in registers 509 and 515 can be stored instead in registers 501 and 503 by overwriting the previously stored binary a and b, thus making the register space more efficient. Can be used as This completes the discussion of Example 1.
p=2m-1의 경우에 홀수 표수 유한 필드의 필드 원소를 포함하는 계산과 관련된 본 발명의 다른 양태에서, 도 4에 나타낸 GF_p_k_ADD의 전형적인 형태에 대한 연산을 실행하기 위한 하드웨어 장치가 제공된다. 도 6은 이러한 전형적인 하드웨어 장치의 기능적 블록도이다. 특히, 도 6에 나타낸 장치(600)는, GF(pk)의 제1 필드 원소와 제2 필드 원소의 합을 표시할 수 있는, 도 4 및 6에서 c로 표시한 제3 이진 데이터를 생성하는 다른 방법을 제공한다. 도 6에서, 실선은 데이터의 흐름에 대한 전기적인 연결을 나타내고, 점선은 제어 신호의 흐름에 대한 전기적인 연결을 나타낸다. 교차하는 실선은 그 교차점에서 연결점(623)과 같이 흑점으로 표시되지 않은 경우에는 연결되지 않은 것이다. 여기서 상기 장치는 단일-가드-비트 표기법과 관련된 논의로서 설명되지만, 후술하는 바와 같이 상기 장치(600)는 다중-가드-비트 표기법에도 동일하게 적용할 수 있다.In another aspect of the invention relating to calculations involving field elements of odd odd finite fields in the case of p = 2 m −1, a hardware apparatus is provided for performing operations on the typical form of GF_p_k_ADD shown in FIG. 4. 6 is a functional block diagram of such a typical hardware device. In particular, the apparatus 600 shown in FIG. 6 generates the third binary data indicated by c in FIGS. 4 and 6, which can display the sum of the first field element and the second field element of GF (pk). Provide another way. In FIG. 6, the solid line represents the electrical connection to the flow of data, and the dotted line represents the electrical connection to the flow of the control signal. Intersecting solid lines are not connected unless they are marked with black spots such as connection point 623 at the intersection. Although the apparatus is described herein as a discussion relating to single-guard-bit notation, the apparatus 600 is equally applicable to multi-guard-bit notation as described below.
상기 장치(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)가 될 수 있다.The device 600 includes a first register 601 and a second register 603 that hold first binary data (register content "a") and second binary data (register content "b"), respectively. The first binary data and the second binary data represent field elements of the finite field GF (p k ). Here, the first and second binary data in the first and second registers 601 and 603 are preconfigured to have zero at the guard-bit position, for example, as shown in FIG. 2A. The device comprises a combinational logic and clock element (clock / logic) 605, an add gate (+) 607 (also called an adder), a register 609 that holds the sum of register contents a and b, a first logic AND Gate (& 1) 611, mask register 613 for generating and maintaining a first predetermined binary amount M1 for input m, NOT gate (NOT) 615, and second logic ADN gate (& 2) 617. Also includes. The device 600 also includes an output register 621 that holds the right shift gate >> and the result “c”. Right shift gates are well known in the art, and such gates shift the value to the right by a selected number of bits and input that number of zeros into the most significant bit position. The clock / logic unit 605 has an output terminal (not shown) that allows a signal to be input to another hardware device, so that the calculation is completed by the other hardware device when the calculation in the device 600 is completed. Let this begin. For example, another hardware device may be another device 600 or multiplier device 1200 shown in FIG. 12 described below.
도 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을 발생하는 회로를 포함할 수도 있다. 이러한 회로를 만드는 것은 본 기술 분야에 속하는 자가 이해할 수 있는 범위 내에 있다.The operation of the apparatus 600 shown in FIG. 6 will be described. The first binary data representing the first field element of GF (pk) and the second binary data representing the second field element are the first register 601 and the second register via the lines labeled a and b. 603 is entered. It is assumed that the first and second binary data are preconfigured at zero in the guard-bit position (eg by a processor not shown). Binary data representing the amount m is also given to the right-shift gate (>>) 619. The mask resist 613 receives a first predetermined binary amount M1 (mask amount) from a processor (not shown). Where M1 is the amount of values as previously described. Alternatively, the mask register 613 may include circuitry for generating the quantity M1 for an input of binary data representing the quantity M. Making such a circuit is within the scope of those skilled in the art.
계산은 s로 명시된 입력 라인에서 시작 신호에 의해 개시된다. 제1 및 제2 이진 데이터, 상기 양 m을 표시하는 이진 데이터, 및 개시 신호가, 예를 들어 종래의 라우팅 회로(routing circuit)를 통해, 후술하는 도 12에 나타낸 곱셈 장치와 같은 프로세서(도시하지 않음) 또는 다른 하드웨어 장치(도시하지 않음)로부터 주어질 수 있다.The calculation is initiated by the start signal at the input line specified by s. First and second binary data, binary data indicative of the amount m, and a start signal, for example, through a conventional routing circuit, such as a multiplication apparatus shown in FIG. 12 described below (not shown) Or other hardware device (not shown).
레지스터 601 및 603에서 제1 이진 데이터 및 제2 이진 데이터의 값이 안정적일 때, 신호(s1)는 레지스터 601 및 603에 그 값을 각각 고정시킨다(lock). 가산기(607)는 레지스터 601 및 603으로부터의 두 입력에 주어진 값들을 더한다. 가산기(607)의 출력이 안정적일 때, s2로 명시된 라인에서의 신호에 의해 레지스터 609에 가산기(607)로부터의 출력이 고정된다. 주어진 레지스터에서 주어진 값이 안정하게 되기 위해 필요한 시간은, 본 기술 분야에서 속한 자라면 회로 설계의 관점에서 통상적으로 결정할 수 있고, 잠금 신호(locking signal)(예를 들어 라인 s1 및 라인 s2에서)는 이 시간 후에 발생하도록 시간을 정할 수 있다. 이 점에서, 상기 레지스터 609는 도 4의 단계 401에 나타낸 양 a+b에 대응하게 표시되는 이진 데이터를 유지한다.When the values of the first binary data and the second binary data in registers 601 and 603 are stable, the signal s1 locks the values in registers 601 and 603, respectively. Adder 607 adds the given values to the two inputs from registers 601 and 603. When the output of adder 607 is stable, the output from adder 607 is fixed in register 609 by the signal at the line designated by s2. The time required for a given value to stabilize in a given register can typically be determined from a circuit design perspective by one of ordinary skill in the art, and the locking signal (e.g., on lines s1 and s2) You can schedule the time to occur after this time. In this regard, the register 609 holds binary data displayed corresponding to the amount a + b shown in step 401 of FIG.
레지스터 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)에서 멀티플렉서 또는 스위치가 제공될 수도 있다.Binary data in register 609 is directed from register 609 to AND gate 611. The AND gate 611 performs a logical AND between the binary data from the register 609 and the mask amount M1 from the mask resist 613. The result of this logical AND operation is equivalent to the amount c1 shown in step 403 of FIG. The output from the first AND gate 611 is returned to the input of the first register 601 and another signal on the line designated s1 locks the value to the first register 601 as appropriate. In this regard, the signal at line s1 can be viewed as being timed properly so that it is not necessary to provide a multiplexer or switch at the specified point 623 to route the data output from the register 609. have. Of course, the device 609 may be provided with a multiplexer or switch at the point 623 for routing as needed.
바로 앞 단락에서 설명한 연산이 실행되면서, 다음 연산이 거의 동시에 실행된다. 레지스터(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)에 대응한다.As the operation described in the previous paragraph is executed, the next operation is executed at about the same time. The output from the register 609 is directed to the second AND gate 617 and the first predetermined binary amount M1 is directed to the logical NOT gate 615. The output of the logical NOT gate 615 is directed to the input of the second AND gate 617. Data at the input of this second AND gate 617 is combined through a logical AND operation to the right-shift gate 619. The right-shift gate 619 performs right-shift by m bits on data input from the second AND gate 617 in accordance with the input at the line designated m. The output of the right-shift gate 619 is directed to the input of the second register 603. The result of this group of operations, input into the second register 603, corresponds to the amount c2 mentioned in step 405 of FIG.
제1 및 제2 레지스터(601 및 603)에 저장된 이진 데이터의 값이 안정적일 때, 신호 s1은 이러한 값으로서 제1 및 제2 레지스터(601 및 603)에 고정된다. 이 점에 있어서, 가산기(607)는 제1 및 제2 레지스터(601 및 603)로부터의 이진 데이터를 더하고, 그 출력을 레지스터(609)로 출력시킨다. 레지스터(609)에 저장된 이진 데이터는 출력 레지스터(621)로 향하고, 라인 s3에서의 신호는 상기 이진 데이터를 적절한 시간에 상기 레지스터(621)에 고정시킨다. 이러한 이진 데이터는 도 4의 단계 407에서 c로 표시한 제3 이진 데이터에 해당한다.When the value of the binary data stored in the first and second registers 601 and 603 is stable, the signal s1 is fixed to the first and second registers 601 and 603 as this value. In this regard, the adder 607 adds binary data from the first and second registers 601 and 603 and outputs its output to the register 609. Binary data stored in register 609 is directed to output register 621, and the signal at line s3 locks the binary data to register 621 at the appropriate time. This binary data corresponds to the third binary data indicated by c in step 407 of FIG.
본 기술 분야에서 통상의 지식을 가진 자라면 상기 장치(600)의 많은 변형이 본 발명에 따라 가능하다는 것을 이해할 수 있을 것이다. 예를 들어, 각 내부 w-비트 레지스터(601, 603, 609, 613 및 621)는 다중 병렬(즉, 통합된(coordinated)) 레지스터로 대치할 수 있으며, 이들 중 적어도 하나는 필드 원소의 적어도 두 계수를 표시하는 이진 데이터를 유지한다. 또한, 도 6에 나타낸, 제1 AND 게이트(611), 가산기(607), 제2 AND 게이트(617), NOT 게이트(615) 및 우측-시프트 게이트(619)는 각각의 다중 병렬(즉, 통합된) 카피들(copies)로 대치할 수 있다.Those skilled in the art will appreciate that many variations of the device 600 are possible in accordance with the present invention. For example, each internal w-bit register 601, 603, 609, 613, and 621 can be replaced by multiple parallel (ie, coordinated) registers, at least one of which is at least two of the field elements. Maintain binary data representing coefficients. In addition, the first AND gate 611, the adder 607, the second AND gate 617, the NOT gate 615, and the right-shift gate 619, shown in FIG. 6, are each multiple parallel (ie, integrated). Can be replaced with copies.
도 6을 참조하여 설명한 바와 같은 상기 장치(600)에서, 제1 및 제2 이진 데이터는, 적절한 가드-비트 위치에서 미리 구성된 영의 값으로 제1 및 제2 레지스터(601 및 603) 각각에 입력된다. 제1 및 제2 이진 데이터는 프로세서(도시하지 않음)에 의해 이러한 구성, 예를 들어 적절한 경우 가드-비트 위치에서 영을 삽입하는 구성으로 제공될 수 있다. 따라서, 프로세서(도시하지 않음) 및 제1 레지스터(601)는 제1 이진 데이터를 저장하는 수단으로 볼 수 있고, 프로세서(도시하지 않음)와 제2 레지스터(603)는 제2 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한 레지스터(521) 및/또는 레지스터(609)는 제3 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 클럭/논리 소자(605)와 도 6에 나타낸 어떤 또는 모든 나머지 소자는 제1 이진 데이터 및 제2 이진 데이터에 대해 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다.In the apparatus 600 as described with reference to FIG. 6, the first and second binary data is input to the first and second registers 601 and 603, respectively, with a preconfigured zero value at the appropriate guard-bit position. do. The first and second binary data may be provided in such a configuration by the processor (not shown), for example, by inserting zeros at guard-bit positions where appropriate. Accordingly, the processor (not shown) and the first register 601 may be viewed as a means for storing first binary data, and the processor (not shown) and the second register 603 may store second binary data. It can be seen as a means. Register 521 and / or register 609 may also be viewed as a means for storing third binary data. In addition, the clock / logical element 605 and any or all of the remaining elements shown in FIG. 6 may be viewed as means for performing at least one operation on the first binary data and the second binary data.
프로세서(도시하지 않음)에 따라 상기 장치(600)를 이용함으로써, 상기 장치(600)는 유한 필드 GF(pk)에 대한 p 및 k의 다양한 선택을 위해 필드 원소를 이용하는 데에 유연성을 갖게 된다(여기서 p는 p=2m-1의 형태). 특히, 상기 양 m은 변수이고, 우측-시프트 게이트(619)는 m의 입력값에 따라 응답한다. 또한, 마스크 레지스터(613)는 상기 양 m에 종속하는 제1 소정 이진량(M1)의 적절한 형태를 유지한다. 상기 양 M1은 상기 양 m이 한번에 선택된다는 점에서 미리 결정(predetermined)되고, 상기 양 M1의 형태는 상술한 바와 같이 직접 따른다.By using the device 600 in accordance with a processor (not shown), the device 600 is flexible in using field elements for various choices of p and k for finite field GF (p k ). Where p is in the form of p = 2 m −1. In particular, the amount m is a variable and the right-shift gate 619 responds according to the input value of m. Further, the mask register 613 maintains an appropriate form of the first predetermined binary amount M1 depending on the amount m. The amount M1 is predetermined in that the amount m is selected at once, and the shape of the amount M1 follows directly as described above.
본 발명의 다른 양태에서, 유한 필드 GF(pk)가 전적으로 선택되고 변경 없이 유지되는 상황에 대해, 도 7의 블록도에 나타낸 하드웨어 장치(700)와 같이 상기 장치(600)는 수정될 수 있다. 즉, 상기 표기법이 단일-가드-비트 표기법인지 다중-가드-비트 표기법인지의 선택뿐만 아니라, 상기 양 m, p 및 k도 고정되고, 상기 하드웨어 장치(700)는 이러한 선택에 전용으로 된다. 이러한 상황에서, 상기 하드웨어 장치(700)는 필드 원소를 표시하는 초기 이진 데이터를 수신할 수 있다. 여기서 초기 이진 데이터는 가드-비트 위치에서 영으로 구성되지 않는다. 오히려, 상기 하드웨어 장치(700) 자체가 상기 초기 이진 데이터를 적절한 가드-비트 위치에서 영으로 구성하여, 제1 가드-비트 위치에서 제1 및 제2 이진 데이터를 영으로 구성하는 프로세서를 필요로 하지 않고, 제1 및 제2 이진 데이터를 발생시킨다. 도 7에 나타낸 상기 하드웨어 장치(700)에 대해 설명한다.In another aspect of the invention, for situations where finite field GF (p k ) is wholly selected and remains unchanged, the device 600 may be modified, such as the hardware device 700 shown in the block diagram of FIG. . That is, as well as the selection of whether the notation is single-guard-bit notation or multi-guard-bit notation, the amounts m, p, and k are also fixed, and the hardware device 700 is dedicated to this selection. In such a situation, the hardware device 700 may receive initial binary data representing field elements. The initial binary data here is not composed of zeros in the guard-bit position. Rather, the hardware device 700 itself does not require a processor to configure the initial binary data to zero at the appropriate guard-bit position, thus to configure the first and second binary data to zero at the first guard-bit position. And generates first and second binary data. The hardware device 700 shown in FIG. 7 will be described.
도 7의 기능 블록도에 나타낸 상기 하드웨어 장치 700은 여러 공통 특징 및 연산 형태를 도 6에 나타낸 장치 600과 공유하고, 도 6과 도 7에서는 동일 구성요소 대해서는 동일 참조번호를 사용한다. 장치 600과 공통되는 장치 700의 양태에 대한 설명은 여기서 반복하지 않는다. 오히려, 장치 600과 다른 장치 700의 양태에 대해서 논의할 것이다.The hardware device 700 shown in the functional block diagram of FIG. 7 shares various common features and operation forms with the device 600 shown in FIG. 6, and the same reference numerals are used for the same elements in FIGS. 6 and 7. Descriptions of aspects of device 700 that are common to device 600 are not repeated herein. Rather, aspects of device 600 and other device 700 will be discussed.
상기 장치 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')를 형성한다.The device 700 has several features not found in the device 600. In particular, the device 700 has guard-bit-insertion circuits 701 'and 703' (GB insertion) and guard-bit-removal circuit 709 '(GB removal). A typical implementation of this circuit is shown in FIGS. 8A and 8B. As in FIG. 7, the guard-bit-insertion circuits 701 ′ and 703 ′ are functionally disposed at the input to the hardware device 700, and the guard-bit-removal circuit 709 ′ is coupled with the register 709. Functionally disposed between the output registers 721. The guard-bit-insertion circuits 701 'and 703' receive initial binary data a 'and b' corresponding to the first and second field elements of GF (p k ) (without guard bits), so that Operate to insert guard bits into the data. In other words, the guard-bit-insertion circuits 701 'and 703' store the initial binary data a 'and b' with first and second binary data with guard bits, in particular zero with guard-bit positions. Convert to binary data. The guard-bit-rejection circuit 709 'displays the calculation function without the guard bit by receiving the opposite function, i.e., receiving the third binary data c with the guard bit and removing the guard bit. To form the final binary data c '.
상기 장치 700은 장치 600에 있는 어떤 특징이 결여되어 있는데, 이것은 그러한 특징이 장치 700에서는 필요하지 않기 때문이다. 특히, 상기 장치(700)는 우측-시프트 게이트(719)와 마스크 레지스터(713)로의 m량에 대한 입력 라인이 빠져 있다. 이러한 입력 라인은 m을 고정값으로 주는 데에 필수적인 것은 아니다. 오히려, 우측-시프트 게이트(719)는 m 값으로 한번에 초기화되어 적절한 우측 시프트를 실행한다. 마찬가지로, 마스크 레지스트(713)은 M1의 적절한 형태로 한번에 초기화 된다. 도 7에 도시하지 않은 이러한 초기화를 실행하기 위해 종래의 전기적 연결이 사용된다. 상기한 연산의 차이를 제외하고, 도 7에 나타낸 장치 700의 연산은 도 6에 나타낸 장치 600에 대해 설명한 것과 거의 유사하다.The device 700 lacks certain features present in the device 600 because such features are not needed in the device 700. In particular, the device 700 is missing an input line for the amount of m to the right-shift gate 719 and the mask register 713. This input line is not necessary to give m a fixed value. Rather, the right-shift gate 719 is initialized at one time to the m value to perform the appropriate right shift. Similarly, the mask resist 713 is initialized at one time with the appropriate form of M1. Conventional electrical connections are used to perform this initialization, not shown in FIG. Except for the difference in the above operations, the operation of the device 700 shown in FIG. 7 is almost similar to that described for the device 600 shown in FIG. 6.
상기한 바와 같이 상기 장치 700에서, 제1 레지스터(701)와 가드-비트 삽입 회로(700')은 제1 이진 데이터를 저장하는 수단으로 볼 수 있다. 제2 레지스터(703)와 가드-비트 삽입 회로(703')은 제2 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 레지스터(709)는 제3 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 클럭/논리 소자(705)와 도 7에 나타낸 어떤 또는 모든 나머지 소자들은 제1 이진 데이터와 제2 이진 데이터에 대한 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다.As described above, in the apparatus 700, the first register 701 and the guard-bit insertion circuit 700 ′ may be regarded as a means for storing the first binary data. The second register 703 and the guard-bit insertion circuit 703 'can be viewed as a means for storing the second binary data. In addition, the register 709 can be viewed as a means for storing third binary data. In addition, the clock / logical element 705 and any or all of the remaining elements shown in FIG. 7 may be viewed as means for performing at least one operation on the first binary data and the second binary data.
도 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)을 이용하여 형성할 수 있다.The guard-bit-insertion circuits 701 'and 703' and the guard-bit-removal circuit 709 'mentioned in FIG. 7 will be described in more detail with reference to FIGS. 8A and 8B. The typical circuit shown in FIGS. 8A and 8B reflects a 32-bit resist configuration configured for field GF 7 8 . However, the concept reflected in FIGS. 8A and 8B is generally applicable to other sizes of resist and other finite field GF (p k ). FIG. 8A shows a typical guard-bit-insertion circuit 800, which may be used for the guard-bit-insertion circuit (GB insert), denoted by reference numerals 701 'and 703', respectively, in FIG. As shown in FIG. 8A, the circuit 800 includes a first register 801 having a plurality of bit positions 803 (eg, 32 bits). The circuit 800 has a plurality of groups 807 of bit positions and a plurality of guard-bit positions 809 (light shaded areas) for storing binary data indicating field coefficients of field elements of GF (pk). Having a register 805. The circuit 800 is configured to route data from registers 801 to register 805 in a manner that imparts a guard-bit position 809 adjacent to the most significant bit position of the 3-bit position 807 of the previous group. It also includes a connection 811. Guard-bit position 809 is electrically grounded to provide zero for this bit value, but this electrical connection is not shown in FIG. 8A. Such a circuit can be formed using, for example, conventional lithographic techniques.
이러한 방식에서, 레지스터(805)에서 각 3-비트 그룹(807)의 비트 위치는 GF(78)의 필드 원소의 계수를 표시하는 이진 데이터를 저장할 수 있고, 레지스터(805)에서 각 그룹(807)의 비트 위치는 단일 가드 비트(809)에 의해 인접 그룹(807)의 비트 위치로부터 분리된다. 따라서 가드-비트-삽입 회로(800)는, 필드 원소의 계수를 나타내는 데이터 비트 그룹 사이에 가드 비트를 삽입하는 방식으로, 필드 원소의 계수를 표시하는 초기 이진 데이터가 레지스터 801에서 레지스터 805로 병렬로 전달되게 한다.In this manner, the bit position of each 3-bit group 807 in register 805 can store binary data representing the coefficients of the field elements of GF 7 8 , and each group 807 in register 805. ) Is separated from the bit position of the adjacent group 807 by a single guard bit 809. Thus, the guard-bit-insertion circuit 800 inserts the guard bits between groups of data bits representing the coefficients of the field elements so that the initial binary data representing the coefficients of the field elements is in parallel from register 801 to register 805. To be delivered.
마찬가지로, 전형적인 가드-비트-제거 회로(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에 대한 논의는 완료된다.Likewise, a typical guard-bit-removal circuit 820 is shown in FIG. 8B for a 32-bit GF 7 8 . As shown in FIG. 8B, the guard-bit-removal circuit 820 is a mirror image of the guard-bit-insertion circuit 800 shown in FIG. 8A. The guard-bit-removal circuit 820 consists of a resistor 825, a resistor 821, and a number of electrical connections 831. The register 825 includes the bit positions of the plurality of groups 827 and the plurality of guard-bit positions 829, each guard-bit position located adjacent to the most significant bit of the bit positions of a given group 827. . As shown in FIG. 8B, electrical connection 831 is a binary data representing field coefficients of field elements stored in register 825 in such a way as to remove guard bits between adjacent groups of data bits representing field coefficients. Is configured to be passed to register 821. This completes the discussion of FIGS. 8A and 8B.
단일-가드-비트 표기법을 사용하는 곱셈Multiplication using single-guard-bit notation
본 발명의 다른 양태에 따라, GF(pk)에서의 두 필드 원소 αi 및 βi(영이 아님)의 곱을 계산하기 위해, 단일-가드-비트 표기법에 대한 GF_p_k_MUL의 전형적인 형태가 설명된다. 한 필드 원소가 영인 경우는 중요하지 않으므로 설명할 필요가 없다. 이러한 논의는 기능적 형태 p=2m-1, p=2m+1, p=2m-d 및 p=2m+d로 쓰여진 p에 적용할 수 있다.According to another aspect of the present invention, the typical form of GF_p_k_MUL for single-guard-bit notation is described to calculate the product of two field elements α i and β i (not zero) in GF (p k ). The case where one field element is zero is not important and need not be explained. This discussion is applicable to p written in functional forms p = 2 m −1, p = 2 m +1, p = 2 m −d and p = 2 m + d.
식 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번째 비트 위치), 다음 관계식을 적용할 수 있다.As discussed earlier in relation to Equations 9-12, multiplicative groups are periodic, so that any other non-zero field element can be written as g x for any integer x <p k . You can find element g. Thus, not only the corresponding anti-log, but also the discrete log of all field elements can be pre-computed at once, and a "look-up" table can be used to calculate the product of two field elements. Similarly, in connection with the present invention for binary data " a " representing any α i according to single-guard-bit notation (when a guard bit of zero value is located at bit position v (m + 1) -1, Where v = 1, 2, ..., k, i.e., all consecutive m-th bit positions), the following relation can be applied.
(16) (16)
(17) (17)
여기서, gx=aj 되도록 0≤x<pk 이다. 따라서, 단일-가드-비트 표기법에서, GF(pk)의 필드 원소의 곱셈은 다음 관계식에 따라 성립될 수 있다.Here, 0 ≦ x <p k such that g x = a j . Thus, in single-guard-bit notation, the multiplication of the field elements of GF (p k ) can be established according to the following relationship.
(18) (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개의 룩-업 테이블과 모듈러 덧셈만을 사용하여 계산될 수 있다.Here, "a" is the first binary data (register content) stored according to the single-guard-bit notation representing the first field element, and "b" is the single-guard-bit notation representing the second field element. Second binary data (register content) stored accordingly, " c " is third binary data (register content) indicating a third field element equal to the product of the first and second field elements. For example, by using the algorithms PRODUCT (α, β) and GF_p_k_MUL described earlier notation, "a" is a field element α j can be displayed, "b" is GF (p k) of GF (p k) of The field element β ij can be displayed. Thus, in the single-guard-bit notation according to the present invention, the product of two field elements of GF (p k ) can be calculated using only three look-up tables and modular addition.
본 발명의 전형적인 양태에 따라, 도 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)에 대해 설명한다.According to a typical aspect of the present invention, the system 100 shown in FIG. 1 can be used to implement the above method for multiplication of field elements. In particular, the system 100 may be configured such that the processor 105 executes the typical series of steps shown in FIG. 9 to generate third binary data referenced in step 305 of FIG. 3. Steps 301 and 303 shown in FIG. 3 are performed by storing first binary data representing a first field element of GF (pk) in a first register (e.g., register 107 of FIG. 1) and indicating a second field element. Assume that the second binary data has been executed in advance by the processor 105 such that the second binary data is stored in a second register (eg, register 109). The steps shown in FIG. 9 indicate a typical implementation of step 305 shown in FIG. The method 900 shown in the flow chart of FIG. 9 is described.
도 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의 룩-업 테이블에 대해 아래에서 더 상세히 설명한다.9 is a flowchart showing the steps performed by the processing unit 105 for processing the first and second binary data to generate third binary data indicating the product of the first and second field elements. As in step 901 of FIG. 9, the processor determines the amounts of DLOG (a) and DLOG (b). Here, "a" indicates the contents of the first register and "b" indicates the contents of the second register. In step 901, the DLOG operation indicates a look-up operation from the look-up table of the discrete log in binary form of the non-zero field element of GF (p k ). The look-up table of the discrete log may be stored in the memory 101 shown in FIG. An example of a simple look-up table for the DLOG operation on GF (p k ) is shown in FIG. 10A. The look-up table of FIG. 10A is described in more detail below.
단계 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 이진 데이터이다.In step 903, the processing unit 105 executes addition of the amounts of DLOG (a) and DLOG (b) and reduces the result of this addition as modulo (p k −1). In step 905, the processing unit 105 determines the amount ANTILOGDLOG (a) + DLOG (b)) mod (p k -1)}. The ANTILOG operation indicates the lookup operation from the anti-log look-up table, where ANTILOG (x) = g x and g is the constructor of GF (p k ). An example of a simple look-up table for the ANTILOG operation on GF (p k ) is shown in FIG. 11A. The look-up table in FIG. 11A is described in more detail below. The result of the operation described in step 905 is the third binary data referred to in step 305 of FIG. 3 to indicate the third field element, which in this example is the product of the first and second field elements.
단일-가드-비트 표기법에 대해 상술한 이산 로그 및 안티-로그의 전형적인 룩-업 테이블에 대해 설명한다. 간단하게 하기 위하여, 이산 로그의 룩-업 테이블은 여기서 DLOG 테이블이라고 하고, 안티-로그의 룩-업 테이블은 여기서 ANTILOG 테이블이라고 한다.A typical look-up table of discrete log and anti-log described above for single-guard-bit notation is described. For simplicity, the lookup table of the discrete log is referred to herein as the DLOG table, and the lookup table of the anti-log is referred to herein as the ANTILOG table.
한 예로써, 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 테이블에서의 행은 사용되지 않는다.As an example, the DLOG table is indexed by binary data corresponding to field elements of GF (pk), where the binary data can be viewed as a memory address. This kind of DLOG table is referred to herein as a "directly addressed" DLOG table, and uses contiguous binary data corresponding to field elements as memory addresses. For p = 2m-1, for example, the DLOG table. Is indexed (addressed) by a k (m + 1) -bit binary string, whereas the highest guard bit of the binary data representing each field element is not used for addressing (the highest guard bit is a table). The DLOG table may be indexed using a binary string k (m + 1) -1 bits in length, if the top guard bit is not used for addressing, the size of the DLOG table is an argument. Can be reduced to 2. If the binary data representing a field element is a (t) (where t is a polynomial variable in polynomial basis notation), then the DLO at the address corresponding to a (t) The corresponding look-up value from G is the integer "x", where x = DLOGa (t) The single-guard-bit notation of a field element allows the guard bit to be assigned to every mth bit so that the guard-bit (all k In the direct address DLOG table for p = 2 m -1, for the guard bits), there are only 2 km related entries in the DLOG table actually used during the lookup. t) The quantities are zero in the guard-bit position, and the entirety of these DLOG tables is 2 k (m + 1) reserved memory locations (if indexed using binary string k (m + 1) bits in length ) . Rows) or 2 k (m + 1) -1 rows, if indexed using the binary string k (m + 1) -1 bits in length, that is, the field element a (t) ( Rows in direct address DLOG tables with memory addresses ("1") at any guard-position are not used. Do not.
예를 들어, 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)에 대해, 이러한 방식으로 룩-업 테이블을 실현하는 것은 많은 경우에 역시 편리하다.For example, if k = 8 and p = 3 (ie m = 2), the elements of each field are represented as 24-bit strings (with zeros in each third bit position), so the DLOG table is 8 Indexed by a string of (2 + 1) = 24 (equivalent to 8 (log 2 (3) +1)). In this example, there are 2 24 reserved memory locations in the DLOG table, but since the look-up is only handled for the address corresponding to the field element, i.e. the string whose guard-bit position is zero, only one in all 256 is actually accessed data. It will include. In the example above, there are k = 8 guard-bit positions, and at all 28 (= 256) only one table index is used for the actual table look-up. However, for ordinary k and m (eg k (m + 1) <25), it is also convenient in many cases to realize the look-up table in this way.
상기한 바와 같이, 최상위 가드 비트는 직접 어드레스 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 테이블보다 상당히 크다.As noted above, the most significant guard bit is not needed to index the address DLOG table directly, and this investigation saves factor 2 in the size of the DLOG table. As explained below, for p in the form p = 2 m +1, P = 2 m -d and p = 2 m + d where d> 1 and d are odd, each coefficient of the field element is p = Instead of m bits for 2 m −1, they are indicated using m + 2, m + 1 and m + 2 bits of binary data (not including guard bits), respectively. Therefore directly address DLOG table for p = 2 m -1 and other forms of p is considerably greater than the direct address DLOG table for p = 2 m -1 in the form of p.
단일-가드-비트 표기법에 대한 상술한 개념을 나타내는 전형적인 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)에 대한 적절한 생성자와 기약 다항식을 선택하는 것은 본 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에 있다.A typical DLOG table 1000 representing the above concept of single-guard-bit notation is shown in FIG. 10A for the simple case of GF (3 2 ) where p = 2 m −1 for m = 2. . The example of FIG. 10A is constructed for GF (3 2 ) using the constructor g (t) = t and the contract polynomial p (t) = t 2 + t + 2. Such a DLOG table can be realized in, for example, an 8-bit, 16-bit, 32-bit, or the like structure. As described above, selecting the appropriate constructor and contract polynomial for a given finite field GF (p k ) is within the scope of those skilled in the art.
도 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 비트에 의해 인덱싱 되게 한다.The typical DLOG table 1000 shown in FIG. 10A includes a memory address 1001 corresponding to field element a (t) in binary form and a stored value 1003 corresponding to an associated integer x in binary form. The typical DLOG table 1000 also includes 2 k (m + 1) = 2 6 = 64 rows (entries) 1005. In the example of FIG. 10A, each memory address comprises a k (m + 1) +2 (2 + 1) = 6-bit string, and the left-most bit of each memory address 1001 is a corresponding field. Corresponds to the most significant guard bit of the element. This most significant guard bit can be removed from memory address 1001 if necessary, causing DLOG table 1000 to be indexed by the binary string k (m + 1) -1 bits in length.
메모리 어드레스(1001)는 앞서 설명한 방식으로 필드 원소의 계수에 대응하는 데이터 비트 그룹을 포함한다. 각 메모리 어드레스(1001)는 다수의 가드 비트(1005)를 더 포함한다.The memory address 1001 includes a group of data bits corresponding to the coefficients of the field elements in the manner described above. Each memory address 1001 further includes a plurality of guard bits 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)에서는 사용되지 않는다.The stored value 1003 of the DLOG table 1000 is shown to be functionally adjacent to the memory address 1001 for illustration purposes. Each stored value 1003 contains binary data representing the integer x described above. Reference information 1050 is provided in FIG. 10B in a manner that sorts the information in the DLOG table 1000 shown in FIG. 10A in rows. The reference information 1050 of FIG. 10B is not a part of the DLOG table 1000, but represents the relationship between the binary information shown in the DLOG table 1000 and the field element a (t) in the form of polynomial and the actual integer value (x). It is to make it convenient to reflect. Several blank entries marked with "-" are in the "x" and "a (t)" columns of both Figures 10B and 10A. This blank entry has two causes. First, some blank entries reflect the fact that there is no integer x that satisfies g x = 0 for the field element “0” (a (t) = 0), as is well known in the art. Another blank entry corresponds to memory address 1001 having a "1" at any corresponding guard-bit position. As noted above, such an entry is not used in a typical DLOG table 1000.
상기한 직접 어드레싱의 예에서, DLOG 테이블(1000)은 상기한 2 종류의 블랭크 엔트리에 대응하는 룩-업 연산을 사용하지 않는 예약 메모리 위치를 가진다. 이러한 블랭크 엔트리의 대부분은 어떤 가드-비트 위치에서 “1”을 갖는 메모리 어드레스와 연관되어 있다. 그러나 컴팩트(compact) DLOG 테이블은 이러한 블랭크 엔트리 없이 실현할 수 있다. 예를 들어, 필드 원소를 연속적인 메모리 어드레스와 연관시키는 대신에, 가드-비트 위치에서 영(zero)만을 갖은 필드 원소를 표시하는 이진 데이터가 DLOG 테이블에 저장될 수 있다. x=DLOG(a(t))에 대한 해당 값은 DLOG 테이블에 저장될 수도 있다. 주어진 a(t) 엔트리를 룩-업하는 것을 해당 x 엔트리로 되돌리도록, 저장된 a(t) 엔트리와 x 엔트리는 서로 연관될 수 있다. 이러한 방법은 어드레스로서 a(t) 엔트리에 대응하는 연속적인 이진 데이터를 사용하는 것에 있어서의 단순성은 없지만, 작은 메모리 공간을 필요로 한다는 장점을 가지고 있다. In the example of direct addressing described above, the DLOG table 1000 has a reserved memory location that does not use look-up operations corresponding to the two kinds of blank entries described above. Most of these blank entries are associated with memory addresses with a "1" at some guard-bit position. However, compact DLOG tables can be realized without such blank entries. For example, instead of associating field elements with contiguous memory addresses, binary data representing field elements having only zeros at guard-bit locations may be stored in the DLOG table. The corresponding value for x = DLOG (a (t)) may be stored in the DLOG table. Stored a (t) entries and x entries can be associated with each other to return the look-up of a given a (t) entry to its corresponding x entry. This method does not have the simplicity of using contiguous binary data corresponding to a (t) entries as addresses, but has the advantage of requiring a small memory space.
본 발명의 한 양태에서는, 이후에 설명하는 바와 같이, 룩-업을 상당히 복잡하게 하지 않고 컴팩트한 테이블을 구하기 위해 다중-가드-비트 표기법이 사용된다. 일반적으로, 이러한 컴팩트 DLOG 테이블은 2km+1 예약 메모리 위치(예를 들어, 행 당 2 엔트리를 갖는 2km 행으로 보임)로 구성되고, 이들 모두는 룩-업 연산을 위해 사용될 수 있다. 이와는 달리, 최상위 가드 비트가 제거된 경우, 이러한 컴팩트 DLOG 테이블은 2km 예약 메모리 위치를 실현할 수 있다. 비교해 보면, 직접 어드레스 DLOG 테이블은 2k(m+1) 예약 메모리 위치(또는 최상위 가드 비트가 제거된 경우 2k(m+1)-1 예약 메모리 위치)를 포함한다. 따라서 컴팩트 DLOG 테이블을 사용하는 것은 상대적으로 큰 필드 원소(예를 들어 가드 비트를 포함하는 25비트 이상의 이진 데이터에 의해 표시되는 필드 원소)를 포함하는 계산에 유용할 수 있다.In one aspect of the present invention, as described below, multi-guard-bit notation is used to obtain a compact table without significantly complicating the look-up. In general, such a compact DLOG table consists of 2 km + 1 reserved memory locations (eg, 2 km rows with 2 entries per row), all of which can be used for look-up operations. Alternatively, if the most significant guard bit is removed, such a compact DLOG table can realize a 2 km reserved memory location. In comparison, the direct address DLOG table contains 2 k (m + 1) reserved memory locations (or 2 k (m + 1) -1 reserved memory locations if the most significant guard bit is removed). Thus, using a compact DLOG table can be useful for calculations involving relatively large field elements (e.g., field elements represented by more than 25 bits of binary data including guard bits).
본 발명에 따른 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가 없다는 사실에서부터 일어난다.A typical aspect of the ANTILOG table according to the present invention is described. The ANTILOG table according to the present invention is similar to the above-described DLOG table. In particular, the ANTILOG table also contains binary information indicating the amount of x and a (t). However, the ANTILOG table is indexed (addressed) by binary data representing the amount x = DLOG (a (t)). Thus, for the memory address corresponding to the given x value, the look-up amount is a (t) = ANTILOG (x). Given that the ANTILOG table is indexed by x instead of a (t) (for DLOG tables), the ANTILOG table is considerably smaller than the corresponding DLOG table. In particular, the ANTILOG table has a p k -1 reserved memory location, regardless of the function form of p. p k reserved memory locations instead of the fact that the p k -1 reserved memory locations takes place from the fact that there is no integer x corresponding to the field elements a (t) = g x = 0.
전형적인 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)을 포함한다.As a typical ANTILOG table, p = 2 m −1 and m = 2 and a simple case of GF (3 2 ) for single-guard-bit notation is shown in FIG. 11A. The example of FIG. 11A was constructed for GF (3 2 ) using the generator g (t) = t and the contract polynomial p (t) = t 2 + t + 2. Such an ANTLOG table can be realized in, for example, an 8-bit, 16-bit, 32-bit, or the like structure. The typical ANTILOG table 1100 shown in FIG. 11A includes a memory address 1101 corresponding to an integer x in binary form and a stored value 1103 corresponding to an associated field element in binary form.
전형적인 ANTILOG 테이블(1100)의 메모리 어드레스(1101)를, 도시할 목적으로 저장된 값(1103)에 기능적으로 인접하도록 도 11A에 나타내었다. 저장된 값(1103) 각각은 상기한 방식으로 필드 원소의 계수를 표시하는 데이터 비트 그룹을 포함한다. 저장된 값(1103) 각각은 엔트리가 영인 다수의 가드 비트(1105)를 더 포함한다.The memory address 1101 of the typical ANTILOG table 1100 is shown in FIG. 11A to be functionally adjacent to the stored value 1103 for purposes of illustration. Each stored value 1103 includes a group of data bits representing the coefficients of the field elements in the manner described above. Each stored value 1103 further includes a number of guard bits 1105 with an entry of zero.
도 10B에 나타낸 것과 마찬가지의 방식으로, 도 11A에 나타낸 ANTILOG 테이블(1100)에서의 정보를 행을 통해 정렬하는 방식으로, 참조 정보(1150)가 도 11B에 제공된다. 도 11B의 상기 참조 정보(1150)는 ANTILOG 테이블(1100) 부분이 아니고, ANTILOG 테이블(1100)에 나타낸 이진 정보와 다항식 형태로의 필드 원소 a(t)와 실제 정수값(x) 사이의 관계를 반영하는 것을 편리하게 하기 위한 것이다.In a manner similar to that shown in FIG. 10B, reference information 1150 is provided in FIG. 11B in a manner that sorts the information in the ANTILOG table 1100 shown in FIG. 11A through the rows. The reference information 1150 of FIG. 11B is not a portion of the ANTILOG table 1100, but represents the relationship between the binary information shown in the ANTILOG table 1100 and the field element a (t) in polynomial form and the actual integer value x. It is to make it convenient to reflect.
상기한 바와 같이, 본 발명에 따른 DLOG 테이블과 ANTILOG 테이블은 어떤 적절한 하드웨어 구조를 사용하여 저장될 수 있다(예를 들어,8-비트, 16-비트, 32-비트, 등). 또한, 상기한 바와 같이, 직접 어드레스 DLOG 테이블은 메모리 어드레스로서 사용되는 필드 원소를 표시하는 연속적인 이진 데이터로써 실현될 수 있다. 이와는 달리, 컴팩트 DLOG 테이블은 상기한 바와 같은 직접 어드레싱을 사용하지 않고 실현될 수 있다. 이러한 컴팩트 DLOG 테이블은 메모리 공간을 덜 사용하나, 필드 원소를 표시하는 이진 데이터에 의해 직접 인덱싱을 할 수 없고, 컴팩트 DLOG 테이블에 대해서는 더 많은 시간을 소비하는 테이블 룩-업이 필요하다. 그러나, 아래에 설명하는 다중-가드-비트 표기법에서는, 직접 어드레싱을 허용하고 매우 작은 효율의 감소만으로 테이블 룩-업에 응할 수 있는 주목할 만한 DLOG 테이블을 제공할 수 있다(대략 인수 2k 더 작음).As noted above, the DLOG and ANTILOG tables according to the present invention may be stored using any suitable hardware structure (eg, 8-bit, 16-bit, 32-bit, etc.). Further, as described above, the direct address DLOG table can be realized as continuous binary data indicating field elements used as memory addresses. Alternatively, the compact DLOG table can be realized without using direct addressing as described above. These compact DLOG tables use less memory space, but cannot be directly indexed by binary data representing field elements, and require more time-consuming table look-ups for compact DLOG tables. However, the multi-guard-bit notation described below can provide a notable DLOG table that allows for direct addressing and can respond to table look-ups with only a very small reduction in efficiency (approximately a factor of 2 k smaller). .
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 인수만큼 크다.The memory required for the direct address look-up table for single-guard-bit notation for p = 2 m −1 is: For a direct address DLOG table, each row contains a binary form of size k * log 2 (p) ≒ km bit integer (x) (not including the highest guard bit), and the table corresponds to a field element ( k-1) (m + 1) + m = k (m + 1) -1 Indexed by a binary string. Thus, the size of the DLOG table is approximately km2 k (m + 1) -1 . For the ANTILOG table, each entry contains at most a k (m + 1) -bit string and there is a p k-1 entry. Thus the magnitude is k (m + 1) (p k −1) bits, which is approximately equal to k (m + 1) 2 km bits. Therefore, the DLOG table is approximately 2 k-1 larger than the ANTILOG table.
대량 곱셈을 실행하는 비용을 희생하고 (단일-가드-비트 표기법 및 다중-가드-비트 표기법에 대해) 테이블 크기를 훨씬 더 감소시킬 수 있다. 예를 들어, 앞서 설명한 차수 k의 다항식을 곱하는 카라쓰바의 방법에서는 2개의 차수-k 다항식의 단일 곱셈을 3개의 곱셈(각각 차수 k/2의 다항식을 포함)으로 대치한다. 본 발명에 따른 상술한 전형적인 곱셈을 더 많은 테이블 룩-업과 결합하는 더 작은 크기의 테이블을 사용하도록 유사하게 수정할 수 있다는 것은, 본 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있을 것이다. 예를 들어, 상기한 본 발명에 따른 전형적인 곱셈을 실행하는 테이블 크기가 S라면, 3배 많은 테이블 룩-업과 결합하여 크기 S1/2의 테이블을 사용하는 상기 수정이 이루어질 수 있다. 테이블 룩업에서의 비용 증가에도 불구하고, 이러한 방법은 메모리-제한 환경에서 바람직할 수 있다.It is possible to reduce the table size even further (for single-guard-bit notation and multi-guard-bit notation) at the expense of performing the bulk multiplication. For example, Karatsuba's method of multiplying polynomials of order k described above replaces a single multiplication of two order-k polynomials with three multiplications (each containing polynomials of degree k / 2). It will be understood by one of ordinary skill in the art that the above-described typical multiplication according to the present invention can be similarly modified to use a smaller size table that combines with more table look-ups. For example, if the table size for performing typical multiplication according to the invention described above is S, the above modification using a table of size S 1/2 may be made in combination with three times as many table look-ups. Despite the cost increase in table lookup, this method may be desirable in a memory-limited environment.
GF_p_k_MUL과 해당 DLOG 및 ANTILOG에 관한 상기 논의의 관점에서, 본 발명에 따른 GF(pk)의 필드 원소의 곱셈을 실행하는 상기한 전형적인 방법은 종래의 방법과 현저히 다르다고 할 수 있다. 먼저, 표수 p=2인 유한 이진 필드에 대한 방법과 비교하여, 본 방법은 가드 비트를 이용하여 필드 원소를 다르게 표시하는 이진 데이터를 저장한다. 따라서 본 발명에 따른 DLOG 및 ANTILOG 테이블은 도 10A 및 11A에 나타낸 것과 같은 가드 비트를 가지고 있고, 반면 이진 유한 필드를 포함하는 종래 방법의 룩-업 테이블은 가드 비트를 가지고 있지 않다(또는 필요로 하지 않는다).In view of the above discussion regarding GF_p_k_MUL and the corresponding DLOG and ANTILOG, it can be said that the above-described typical method of performing the multiplication of the field elements of GF (p k ) according to the present invention is significantly different from the conventional method. First, compared to the method for a finite binary field having a surface p = 2, the method stores binary data representing field elements differently using guard bits. Thus, the DLOG and ANTILOG tables according to the present invention have guard bits as shown in FIGS. 10A and 11A, whereas the look-up table of the conventional method including binary finite fields does not have (or need) guard bits. Do).
또한, 홀수 표수 유한 필드의 필드 원소의 곱셈에 대한 종래 방법과 비교하여, 본 방법은 현저히 적은 연산으로 곱셈 작업을 달성한다. 특히, SUM(α, β) 및 PRODUCT(α, β)에 관한 논의에서 상술한 확장 필드 GF(p l k)에서, 확장 필드의 각 원소는 길이 l의 벡터(다항식)로 표시되고, 여기서 각 성분(계수)은 단일-가드 비트 표기법에 따라 저장된다. 확장 필드에서 두 원소를 곱하는 것은 종래 방법을 사용할 경우 필요한 (lk)2 연산보다 대략 3l 2 연산을 필요로 한다. 따라서 상대적으로 작은 값의 k에 대해서도, 현저한 계산 속도의 증가를 달성할 수 있다.In addition, compared to the conventional method for the multiplication of field elements of odd-numbered finite fields, the method achieves multiplication operations with significantly fewer operations. In particular, in the extended field GF (p l k ) described above in the discussion of SUM (α, β) and PRODUCT (α, β), each element of the extended field is represented by a vector of length l (polynomial), where The components (coefficients) are stored according to single-guard bit notation. Multiplying two elements in an extended field requires approximately 3 l 2 operations rather than the ( l k) 2 operations required by conventional methods. Thus, even with a relatively small value k, a significant increase in the calculation speed can be achieved.
홀 표수 유한 필드의 필드 원소의 곱셈과 관련된 본 발명의 다른 양태에서, 도 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)와는 독립적이다.In another aspect of the present invention relating to the multiplication of field elements of odd-number finite fields, a dedicated hardware device for performing the operation of GF_p_k_MUL shown in FIG. 9 may be provided. 12 is a functional block diagram illustrating such a hardware device. In particular, the exemplary apparatus 1200 shown in FIG. 12 is another method of generating third binary data capable of displaying the product of the first and second field elements of GF (p k ), denoted c in FIG. 4. To provide. In FIG. 12, the solid line represents the electrical connection to the flow of data, and the dotted line represents the electrical connection to the flow of the control signal. Although the device 1200 is described as a discussion according to single-guard-bit notation, the device 1200 can be similarly applied to the multi-guard-bit notation described below. The device 1200 is also independent of the form of surface value p (ie, p = 2 m ± 1 or P = 2 m ± 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)일 수 있다.The device 1200 includes a first register 1201 and a second register 1203 that hold first binary data (register content "a") and second binary data (register content "b"), respectively. The first binary data and the second binary data represent field elements of the finite field GF (p k ). Here, assume that the first and second binary data in the first and second registers 1201 and 1203 are already configured to zero at the appropriate guard-bit position. However, guard-bit insertion and removal circuits as described with respect to FIGS. 7 and 8 may be included if desired, so that initial binary data can be entered into the device 1200 without guard bits. The apparatus 1200 also includes a combinational logic and clock element (clock / logic) 1205, a first multiplexer (MUX1) 1207, a DLOG look-up memory 1209, and an ANTILOG look-up memory 1211. . DLOG and ANTILOG look-up memories can be realized using, for example, random access memory (RAM) or flash memory. The device 1200 includes a register 1213 holding a binary amount DLOG (a), a register 1215 holding a binary amount DLOG (b), an add gate (+) 1217 (also called an adder), and examples It also includes a register 1219 that holds an integer value p k -1 in binary form, for example, received from the processor. Alternatively, specific circuitry may be provided with register 1219 that generates a p k- 1 value for input of values for p and k. The configuration of this particular circuit is within the scope of one of ordinary skill in the art. The device 1200 also includes a modulo arithmetic circuit (MOD) 1221 that calculates the remainder of the input amount divided by p k -1, provided by the register 1219. The circuit 1221 can be conventional modular computing hardware known in the art so no further explanation is required. The device 1200 further includes a second multiplexer (MUX2) 1223 and an output register 1225 that holds the third binary data “c” that is the result of the calculations within the device. The clock / logic unit 1205 has an output terminal (not shown) for inputting a signal to another hardware device to start the calculation in another hardware device when the calculation in the device 1200 is finished. For example, another hardware device may be another device 1200 or adder device 600 as shown in FIG.
도 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) 될 수 있다.The operation of the typical device 1200 shown in FIG. 12 will be described. First, DLOG look-up memory 1209 and ANTILOG look-up memory 1211 are initialized at one time with the appropriate discrete log and anti-log data. This provides an initial programming signal to the clock / logic unit 1205 via a line designated as s, while simultaneously providing discrete log and anti-log data to the DLOG look-up memory 1209 and ANTILOG look-up memory 1211. And via an external data bus specified as eD2, respectively. At the same time, address data is provided to the DLOG memory 1209 and the ANTILOG memory 1211 by the external address buses eA1 and eA2 via MUX1 1207 and MUX2 1223, respectively. As mentioned above, the look-up memories 1209 and 1211 can be realized with, for example, RAM or flash memory. Alternatively, if the device 1200 is dedicated to specific values of p and k, the look-up memories 1209 and 1211 can be realized using ROM, and preliminary calculation of discrete log and antilog data is performed at one time. It can be executed and loaded into the ROM at the manufacturing stage.
룩-업 메모리(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 이진 데이터)의 적어도 일부를 제공하는 데 사용될 수 있다.When the look-up memories 1209 and 1211 are initialized, the first register 1201 is on the line designated as a and b by the first binary data representing the first field element and the second binary data representing the second field element. And second registers 1203, respectively. It is assumed that the first binary data and the second binary data are preconfigured to zero at the appropriate guard-bit position. In contrast, the guard-bit-insertion circuitry, as described with respect to FIGS. 7 and 8, may have appropriate guard bits before loading the first and second binary data into the first and second registers 1201 and 1203, respectively. It can be used to insert. Binary data representing the amount of p k -1 is input to register 1219 via a line specified by "p k -1". For example, the first binary data, the second binary data, the discrete log and anti-log data, and the binary data indicating the p and k amounts are a processor (not shown) or one or more hardware devices (not shown). Can be provided. For example, an adder 600 as shown in FIG. 6 or 7 may be used to provide at least some of this data (eg, first binary data and second binary data) via conventional routing circuitry. Can be.
도 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)의 설명이 완료된다.As shown in Fig. 12, the calculation is initialized by the start signal through the line designated by s. The initiation signal may be provided from a processor (not shown) or one or more hardware devices (not shown). If the values of the first binary data and the second binary data in the registers 1201 and 1203 are stable, the signal s1 fixes these values in the first and second registers 1201 and 1203, respectively. If the values of the binary data representing the p k -1 amounts in the register 1219 are stable, then the signal s5 fixes these values in the register 1219. Signal s2 is input to MUX1 1207 which passes the content a of first register 1201 to DLOG memory 1209 and connects to DLOG memory 1209. When the output value from the DLOG memory is stable, the output value is fixed to the register 1213 by the signal s4. The register 1213 holds the value of DLOG (a). Another signal s2 is input to MUX1 1223 which passes the content b of second register 1203 to DLOG memory 1209 and connects to DLOG memory 1209. When the output value from the DLOG memory is stable, the output value is fixed to the register 1215 by the signal s3. The register 1213 holds the DLOG (b) value. Adder 1217 calculates an integer sum of the contents of registers 1213 and 1215 and sends the result to modulo arithmetic circuit (MOD) 1221, which is available from register 1219 p k -1. Calculates the remainder of the value entered when divided by a quantity. The output from MUX2 is input to ANTILOG memory 1211 and connected to ANTILOG memory 1211. When the output value from the ANTILOG memory 1211 is stable, the output value is fixed to the register 1225 by the signal s6. The register 1225 maintains the value ANTILOG (DLOG (a) + DLOG (b)) mod (p k −1) in single-guard-bit notation, which may be used for output as register content c. However, if necessary, a guard-bit-removal circuit as shown in FIGS. 7 and 8 may be disposed between the ANTILOG memory 1211 and the register 1225 to remove the guard bit from the calculation result. This completes the description of the typical multiplication apparatus 1200 shown in FIG.
상기한 장치(1200)에서, 제1 레지스터(1201) 및 프로세서(도시하지 않음)를 제1 이진 데이터를 저장하는 수단으로 볼 수 있다. 이와는 달리, 제1 레지스터(1201)와 가드-비트-삽입 회로(도시하지 않음)를 제1 이진 데이터를 저장하는 수단으로 볼 수 있다. 제2 레지스터(1203) 및 프로세서(도시하지 않음)를 제2 이진 데이터를 저장하는 수단으로 볼 수 있다. 이와는 달리, 제2 레지스터(1203)와 가드-비트-삽입 회로(도시하지 않음)를 제2 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 레지스터(1225)는 제3 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 클럭/논리 소자(1205)와 도 12에 나타낸 어떤 또는 모든 나머지 소자는 제1 이진 데이터 및 제2 이진 데이터에 대한 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다.In the device 1200 described above, the first register 1201 and a processor (not shown) can be viewed as a means for storing first binary data. Alternatively, the first register 1201 and the guard-bit-insert circuit (not shown) can be viewed as a means for storing the first binary data. The second register 1203 and the processor (not shown) can be viewed as a means for storing the second binary data. Alternatively, the second register 1203 and the guard-bit-insert circuit (not shown) can be seen as a means for storing the second binary data. In addition, register 1225 can be viewed as a means for storing third binary data. In addition, the clock / logical element 1205 and any or all of the remaining elements shown in FIG. 12 may be viewed as means for performing at least one operation on the first binary data and the second binary data.
다중-가드-비트 표기법을 사용한 덧셈, p=2 m -1 Addition using multi-guard-bit notation, p = 2 m -1
p=2m-1의 경우에서 필드 원소의 덧셈과 관련된 본 발명의 전형적인 양태에 대해 다중-가드-비트 표기법으로 설명한다. 여기서 본 발명은 적어도 2km 비트량에 대해 동작하는 하드웨어 구조를 사용하여 실행된다고 가정한다(즉, 레지스트는 적어도 2km 비트 크기임). 다중-가드-비트 표기법에 따른 본 발명은, 예를 들어 앞서 설명한 도 1에 나타낸 시스템(100)을 사용하여 실현될 수 있다. 또한, 앞서 설명하였으며 도 6, 7, 8 및 12에 나타낸 전용 하드웨어 장치를, 다중-가드-비트 표기법에 따라 본 발명을 실현하기 위해 사용할 수도 있다. 이러한 장치에 대해서는 여기서 다시 설명하지 않는다. 그러나 다중-가드-비트 표기법을 대해 도 6, 7, 8 및 12에 나타낸 장치의 적절한 수정에 대해서는 필요할 때마다 아래에서 설명할 것이다.A typical aspect of the invention relating to the addition of field elements in the case of p = 2 m −1 is described in multi-guard-bit notation. It is assumed here that the present invention is implemented using a hardware structure that operates for at least 2km bits (ie, the resist is at least 2km bits in size). The invention according to the multi-guard-bit notation can be realized, for example, using the system 100 shown in FIG. 1 described above. In addition, the dedicated hardware devices described above and shown in Figures 6, 7, 8, and 12 may be used to implement the present invention in accordance with multi-guard-bit notation. Such devices are not described again here. However, appropriate modifications to the apparatus shown in Figures 6, 7, 8, and 12 for multi-guard-bit notation will be described below whenever necessary.
다중-가드-비트 표기법에서 필드 원소 GF(pk)의 표기는 도 2C의 예와 관련된 논의에서 이미 설명하였다. 그 논의에서와 같이, 유한 필드의 원소는 이진 스트링으로 저장되지만, 필드 원소의 계수를 표시하는 인접 데이터 비트 그룹 사이에서 단지 하나의 가드-비트 위치를 갖는 대신에, 필드 원소의 필드 계수를 표시하는 이진 데이터가 저장되게 할당하는 비트 위치의 인접 그룹 사이에 다수의 가드 비트 위치(예를 들어 m 가드-비트 위치)가 제공된다. 예를 들어, GF(38)에 대해 도 2C에 나타낸 바와 같이, 비트 위치 221-r(비음영 비트 위치)의 8 그룹이 필드 계수 α7,i, ..., α1,i, α0,i를 표시하는 이진 데이터를 저장하도록 할당되고 비트 위치 221-r의 인접 그룹은 2 가드-비트 위치 213-r(연한 음영 비트 위치)의 그룹에 의해 분리된다. 사기 가드-비트 위치는 각각이 이진값 영을 포함하도록 초기화된다.The notation of field element GF (p k ) in multi-guard-bit notation has already been described in the discussion relating to the example of FIG. 2C. As in that discussion, the elements of a finite field are stored as binary strings, but instead of having only one guard-bit position between adjacent groups of data bits representing the coefficients of the field elements, they represent the field coefficients of the field elements. Multiple guard bit positions (eg m guard-bit positions) are provided between adjacent groups of bit positions that allocate binary data to be stored. For example, as shown in FIG. 2C for GF (3 8 ), eight groups of bit positions 221-r (non-shaded bit positions) are the field coefficients α 7, i , ..., α 1, i , α Allocated to store binary data representing 0, i and adjacent groups of bit positions 221-r are separated by groups of two guard-bit positions 213-r (light shaded bit positions). Fraud guard-bit positions are initialized such that each contains a binary value of zero.
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 이진 데이터를 생성할 수 있다.For p = 2 m −1 a typical form of implementation of GF_p_k_ADD for field GF (p k ) describes multi-guard-bit notation. In order to perform the addition of the two field elements α i and β i using the first and second binary data stored in the first and second registers according to the multi-guard-bit notation, the operation associated with GF_p_k_ADD is performed in a single-guard- It is in principle the same as for bit notation. Only the number of guard-bit positions between the adjacent group of data bits indicating the field coefficient and the form of the first and second predetermined binary amounts M1 and M2 is changed. If multiple guard-bit positions (eg, "m" guard-bit positions) are configured between adjacent groups of data bits associated with field coefficients, the method proceeds as described above with respect to FIG. That is, a value of zero at a bit position corresponding to the bit position of the first guard bit in the first register and an amount of 2 m −1 at the bit position corresponding to the bit position of the first group of data bits in the first register M1 is assigned to have a binary value. M2 is given by M2 = NOT (M1). At this time, in a manner similar to that described for the single-guard-bit notation, the third binary data representing the sum of the first and second field elements of GF (p k ) is generated by performing the operation in Equation 19. can do.
(19) (19)
여기서 a 및 b는 다중-가드-비트 표기법에 따라 제1 및 제2 이진 데이터가 저장되는 제1 및 제2 레지스터의 콘텐츠를 각각 표시하고, c는 다중-가드-비트 표기법에 따라 저장된 제3 이진 데이터를 유지하는 제3 레지스터의 콘텐츠 결과를 표시한다. 제1 및 제2 필드 원소의 합과 동일한 GF(pk)의 제3 필드 원소를 표시하는 제3 이진 데이터를 어떻게 정확하게 제공하게 되는지에 대한 설명은, 상기한 단일 가드-비트 표기법에 대한 설명과 동일하므로 여기서 반복하지는 않는다.Where a and b indicate the contents of the first and second registers, respectively, in which the first and second binary data are stored according to the multi-guard-bit notation, and c is the third binary stored according to the multi-guard-bit notation. Display the result of the contents of the third register holding the data. A description of how to correctly provide third binary data representing a third field element of GF (p k ) equal to the sum of the first and second field elements is described in the above description of the single guard-bit notation and The same thing is not repeated here.
상기한 바와 같이, 도 6, 7에 나타낸 하드웨어 장치를 다중-가드-비트 표기법에 따라 본 발명을 구현하기 위해 사용할 수 있다. 여기에서는 도 6에 나타낸 장치(600)에 대한 수정이 필수적인 것은 아니다. 제1 및 제2 이진 데이터는 다중-가드-비트 표기법에 따라 제1 및 제2 레지스터(601 및 603)에 저장되고, 제1 및 제2 소정 이진량(M1 및 M2)은 상기와 같이 구성된다는 것만 알고 있으면 된다.As mentioned above, the hardware devices shown in Figs. 6 and 7 can be used to implement the present invention in accordance with multi-guard-bit notation. It is not necessary to modify the device 600 shown in FIG. 6 here. The first and second binary data are stored in the first and second registers 601 and 603 according to the multi-guard-bit notation, and the first and second predetermined binary amounts M1 and M2 are configured as described above. You just need to know.
다중-가드-비트 표기법에 대해, 가드-비트-삽입 회로(701' 및 703')와 가드-비트 제거 회로(709')가 필드 원소의 계수를 표시하는 데이터 비트 그룹 사이에서, 단일 가드 비트 대신에 다중 가드 비트를 삽입하도록 구성되어야 한다는 점에서, 도 7에 나타낸 가산 장치(700)에 대한 수정이 필요하다. 이와 관련하여, 도 8A에 나타낸 전형적인 가드-비트-삽입 회로(800)가 전기적 연결(811)을 대신하도록 구성될 수 있는데, 여기서 전기적 연결(811) 없는 하나 이상의 가드-비트 위치(809)가 레지스터(805)에서의 인접 그룹의 비트 위치 사이에 삽입된다. 마찬가지로, 도 8B에 나타낸 전형적인 가드-비트-제거 회로(820)가 전기적 연결(831)을 대신하도록 구성될 수 있어서, 레지스터(825)에서의 인접 그룹의 비트 위치 사이의 하나 이상의 가드-비트 위치(809)를 제거한다. 이러한 다중-가드-비트 표기법에 대한 수정으로, 도 7에 나타낸 장치(700)의 연산은 앞서 설명한 바와 동일하게 된다.For multi-guard-bit notation, the guard-bit-insertion circuits 701 'and 703' and the guard-bit removal circuit 709 'replace a single guard bit between groups of data bits that represent the coefficients of the field elements. A modification to the addition device 700 shown in FIG. 7 is needed, in that it must be configured to insert multiple guard bits into the. In this regard, the typical guard-bit-insertion circuit 800 shown in FIG. 8A can be configured to replace the electrical connection 811, where one or more guard-bit positions 809 without the electrical connection 811 are registered. It is inserted between bit positions of the adjacent group at 805. Likewise, the typical guard-bit-removal circuit 820 shown in FIG. 8B can be configured to replace the electrical connection 831, so that one or more guard-bit positions (between adjacent bit positions in the register 825) ( 809) is removed. With this modification to the multi-guard-bit notation, the operation of the apparatus 700 shown in FIG. 7 becomes the same as described above.
다중-가드-비트 표기법을 사용하는 곱셈 Multiplication using multi-guard-bit notation
필드 GF(pk)에 대한 GF_p_k_MUL의 전형적인 형태의 구현을 다중-가드-비트 표기법에 대해 설명한다. 이러한 논의는 p=2m± 1 및 p2m± d의 함수 형태로 주어진 p에 적용 가능하다. p의 함수 형태의 차이로 인해 발생하는 차이는, 필드 원소의 주어진 계수를 표시하는 이진 데이터를 저장하기 위해 사용되는 비트 수와, 필드 원소의 각 계수에 대한 ANTILOG 테이블에 얼마나 많은 비트가 할당되는가에만 관련되어 있다. 이러한 차이에 대해서는 아래에서 더욱 상세히 설명할 것이다. 당면한 논의는 필드 원소의 각 계수를 저장하기 위해 m 비트가 사용되는 p=2m-1의 경우로 진행되지만, 이러한 논의는 상기한 p의 다른 함수 형태에 대해서도 적용할 수 있다.A typical form of implementation of GF_p_k_MUL for field GF (p k ) describes multi-guard-bit notation. This discussion is applicable to p given as a function of p = 2 m ± 1 and p2 m ± d. The difference caused by the difference in function form of p depends only on the number of bits used to store the binary data representing the given coefficients of the field elements and how many bits are allocated in the ANTILOG table for each coefficient of the field elements. Related. This difference will be explained in more detail below. The current discussion proceeds to the case of p = 2 m −1 where m bits are used to store each coefficient of the field element, but this discussion is also applicable to the other functional forms of p described above.
다중-가드-비트 표기법에 대한 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) 된다. 이에 대해 더욱 상세히 설명한다.In a first typical implementation of GF_p_k_MUL for multi-guard-bit notation, a compression function is used to more efficiently use the memory space allocated for the DLOG and ANTILOG tables. This method uses direct address DLOG and ANTILOG tables in a somewhat similar manner as described above for single-guard-bit notation, but the form of direct address DLOG and ANTILOG tables is different. In particular, to save the memory space allocated for the DLOG and ANTILOG tables, the DLOG and ANTILOG are configured without guard bits (making them a combined size of about km2 km bytes). For the direct address DLOG table, if the binary data corresponding to the field element is used as the memory address, removing the guard bits from the DLOG table means that the total number of consecutive memory addresses is reduced. Thus, the number of reserved memory locations is reduced. For ANTILOG tables that are directly addressed and use binary data representing the integer x = DLOG (a (t)) as a memory address, removing the guard bit is for storing binary data representing the field element a (t). By reducing the number of bits used, the required memory is reduced. To use this table, binary data representing the field elements of GF (p k ) stored in multiple guard notation is compressed before performing a DLOG table lookup. The resulting binary data is also decompressed after performing the ANTILOG table look-up. This will be described in more detail.
여기서는 필드 원소의 계수를 표시하는 데이터 비트의 인접 그룹 사이에 가드 비트를 갖는 다중-가드-비트 표기법에 따라 필드 원소가 저장된다고 가정한다. 그러나 본 방법은 데이터 비트의 인접 그룹 사이에서 m 가드 비트로 제한되는 것은 아니고, 데이터 비트의 인접 그룹 사이에서 m 가드 비트와 다른 다중 가드 비트에 대한 수정도 아래 논의로부터 명백하게 될 수 있다. t=INT(k/2)로 두고, 여기서 INT(k/2)는 가장 가까운 정수로 내림 처리(round down)한 k/2의 정수값이다. 다음과 같은 압축 함수(COMP)를 사용하여 다중-가드-비트 표기법으로 저장된, 레지스터 콘텐츠 a에 대해 압축이 실행될 수 있다.It is assumed herein that field elements are stored according to a multi-guard-bit notation with guard bits between adjacent groups of data bits representing coefficients of field elements. However, the method is not limited to m guard bits between adjacent groups of data bits, and modifications to m guard bits and other multiple guard bits between adjacent groups of data bits may also be apparent from the discussion below. Let t = INT (k / 2), where INT (k / 2) is an integer value of k / 2 rounded down to the nearest integer. Compression can be performed on register content a, stored in multi-guard-bit notation using the following compression function (COMP).
(20) 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 테이블에서 비어 있거나 사용되지 않는 공간은 없다.Since M3 is a predetermined binary amount representing a value of 2 km −1, COMP (a) has a km bit. (In Equation 20, XOR can be replaced by a bitwise OR-operation.) The COMP function performs a bit-position on a group of data bits representing field coefficients (i.e., related information-carrying data). Reserved guard-bit-position block [(2 (jt) +1) m, ..., (2 (jt) from block [2jm, ...., (2j + 1) m-1, where j≥t] ) +2) m-1]. This is illustrated by way of example in FIG. 13, which shows mapping the bit positions from the register 1301 to the bit positions of the register 1302. Here the decompressed data in register 1301 is compressed into register 1302. Slanted dashed line 1303 indicates the mapping of the shifted bit-position block to its original position. Vertical dashed line 1304 represents the mapping of the unshifted bit position block to its original position. As shown in FIG. 13 for the case of GF (3 8 ) where t = 4 and m = 2 (since p = 2 m −1), as an example for j = t = 4, bit position 16 (ie 2jm) And data at 17 (ie, (2j + 1) m-1) is in bit positions 2 (ie (2 (jt) +1) m) and 3 (ie (2 (jt) +2) m-1 ). Other data blocks are mapped as well. Thus, there is no group of data bits representing the coefficients of the field elements that are lost in the above operations. The direct address DLOG table may be configured such that the memory address corresponds to the COMP value of the relevant field element for fast look-up. The direct address ANTILOG table stores the COMP value of binary data representing field elements. In addition, every entry in the DLOG and ANTILOG tables contains relevant (ie information-passing) data. Therefore, there is no empty or unused space in the DLOG and ANTILOG tables.
압축된 이진 데이터의 압축해제는 유사한 방식으로 압축해제 함수 (DECOMP)를 사용하여 실행할 수 있다. 비트 위치 2jm, 2jm+1, 2jm+2, ..., (2j+1)m-1(여기서 j=0, 1, ..., k-1)에서 1이고 그 외에는 0인 소정 이진량을 M4라고 한다. 이 때Decompression of compressed binary data can be performed using the decompression function (DECOMP) in a similar manner. A predetermined binary amount of 1 in bit position 2jm, 2jm + 1, 2jm + 2, ..., (2j + 1) m-1 (where j = 0, 1, ..., k-1) and 0 otherwise Is called M4. At this time
(21) (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에서 주어진 연산을 실행함으로써 달성할 수 있다.Where again the XOR may be replaced with << (2t-1) m indicating a bitwise OR-operation and left shift by (2t-1) m bits. The mask M4 will confirm that the guard-bit position contains only zeros. After a table look-up using the ANTILOG table is performed, the value is decompressed by the DECOMP function described above. Therefore, a and b representing the first and second field elements α i and β i of GF (p k ) are stored according to the first and second binary data (first and second registers) stored according to the multi-guard-bit notation. Register content), the full multiplication of α i and β i in GF (p k ) can be achieved by performing the operation given in equation (22).
(22) (22)
여기서 c는 제3 레지스터에 저장될 수 있고 제1 및 제2 필드 원소의 곱과 동일한 제3 필드 원소를 표시하는 제3 이진 데이터이다. 따라서 k2 곱셈을 병렬로 효과적으로 실행하기 위해, 9 고속 연산 및 1 모듈러 덧셈을 실행할 수 있다. 이러한 전형적인 방식으로 GF_p_k_MUL을 실행함으로써, 앞서 설명한 알고리즘 PRODUCT(α, β) 및 REDUCE(δ,f)를 통해 GF(p l k) 형태의 확장 필드에서 계산을 쉽게 할 수 있다.Where c is third binary data that may be stored in a third register and represent a third field element that is equal to the product of the first and second field elements. Thus, in order to effectively execute k 2 multiplication in parallel, 9 high speed operations and 1 modular addition can be performed. By executing GF_p_k_MUL in this typical manner, the algorithms PRODUCT (α, β) and REDUCE (δ, f) described above make it easy to compute in an extended field in the form of 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의 형태와 관련하여 상술한 바와 같은 메모리 공간을 절약하는 이점은 가지지 않는다.In a second typical implementation of GF_p_k_MUL for multi-guard-bit notation, one can multiply the field elements of GF (p k ) without using the above compression and decompression functions. In this typical method, the operation associated with GF_p_k_MUL is in principle identical to that for the single-guard-bit notation described above with respect to FIGS. 9-12. Only the number of guard-bit positions between adjacent groups of data bits representing field coefficients in a given register and the shape of the DLOG and ANTILOG tables 1000 and 1100 are changed. In this regard, field elements are stored according to the multi-guard-bit notation described above and shown, for example, in FIG. 2C. The DLOG and ANTILOG tables are also similar in shape to the typical tables shown in Figs. 10A and 11A, respectively, but are modified to provide one or more guard-bits between adjacent groups of data bits representing field coefficients. For example, the typical DLOG table 1000 shown in FIG. 10A is a multi-guard-bit by providing one or more guard bits 1009 (eg, m guard bits) between adjacent groups of data bits 1007. Can be modified for notation. Likewise, the typical ANTILOG table 1100 shown in FIG. 11A uses a multi-guard-bit notation by providing one or more guard bits 1109 (eg, m guard bits) between adjacent groups of data bits 1107. Can be modified. With this modification, multiplication in multi-guard-bit notation can be performed in the same manner as described above with reference to FIGS. 9-12. Of course, this present method does not have the advantage of saving memory space as described above with respect to the form of GF_p_k_MUL for multi-guard-bit notation using compression and decompression functions.
단일/다중 가드-비트 표기법을 사용하는 다른 계산, p=2m-1Another calculation using single / multiple guard-bit notation, p = 2 m -1
단일 및/또는 다중 가드-비트 표기법을 사용하여 용이하게 실행될 수 있는 몇 가지 다른 연산에 대해 설명한다. 먼저, 다중-가드-비트 표기법을 사용하여 스칼라 곱셈(scalar multiplication)이 쉽게 실행될 수 있다. 스칼라 곱셈, 즉 그라운드 필드 GF(p)에서 어떤 γ를 GF(pk)의 원소 αi=(αk-1,i, ..., α1,i, α0,i)에 곱하는 것은, 테이블을 조금도 사용하지 않고서 다중-가드-비트 표기법으로 실행할 수 있다. 다음 양을 계산하는 것이 바람직하다.Several other operations that are easily implemented using single and / or multiple guard-bit notations are described. First, scalar multiplication can be easily performed using multi-guard-bit notation. Scalar multiplication, i.e. multiplying some γ by GF (p k ) by element α i = (α k-1, i , ..., α 1, i , α 0, i ) in ground field GF (p), You can run it in multi-guard-bit notation without using any tables. It is desirable to calculate the next amount.
(23) (23)
앞서 언급한 Seminumerical Algorithms에서 설명한 바와 같이, p=2m-1에 대해, 두 이진량 u 및 v(둘 다 0, 1, ..., p의 범위에 있다고 가정)의 곱셈 모듈로 p는 다음 관계식에 따라 실행될 수 있다.As described in Seminumerical Algorithms mentioned earlier, for p = 2 m -1, the multiplication modulo p of two binary quantities u and v (assuming both are in the range 0, 1, ..., p) is Can be executed according to a relational expression.
(24), (25) 24, 25
u<2m 및 v<2m 이므로 uv<2m 임은 명백하다. 다중-가드-비트 표기법에 따라 제1 레지스터에 저장된 α를 표시하는 이진 데이터를 u라고 하고, 다중-가드-비트 표기법에 따라 제2 레지스터에 저장된 γ(GF(p)의 원소)를 표시하는 이진 데이터를 v라고 한다. 여기서 v는 우측-상위 비트 위치에서 γ량을 표시하는 이진 값을 가지고 그 외에는 영이다. 다시 말해, v는 벡터량을 표시하는 이진 데이터로 볼 수 있고, 상기 벡터량은 (0, 0, ...,γ)로 된다. 이 때, k 모듈러 곱셈은 다음 연산을 실행함으로서 병렬로 실행될 수 있다.It is clear that uv <2 m since u <2 m and v <2 m . Binary data representing α stored in the first register according to the multi-guard-bit notation is u, and binary representing γ (element of GF (p)) stored in the second register according to the multi-guard-bit notation. The data is called v. Where v has a binary value indicating the amount of γ at the right-upper bit position and zero otherwise. In other words, v can be viewed as binary data indicating the vector amount, and the vector amount is (0, 0, ..., γ). At this time, k modular multiplication can be executed in parallel by executing the following operation.
(26), (27) 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의 단순한 연산으로 할 수 있다.Here, M1 is a predetermined binary amount having a bit position 2jm, 1 at (2j + 1) m-1, and a binary value indicating an amount of 2 m −1 otherwise (j = when t is defined as described above). 0, 1, ..., t), GF_p_k_ADD is a typical addition algorithm for the multi-guard-bit notation described above. In this regard, the multiplication of u and v in Equation 26 may be a normal multiplication of a register, such as is conventionally performed by a known processor (eg, integer multiplication or floating-point). multiplication). Alternatively, the multiplication of u and v in Equation 26 may be performed using the table look-up described above with reference to FIG. 9. Therefore, in this notation convolution (multiplication) is not a conventional 2k multiplication and modular abbreviation operation, but can be a simple operation of 4 + 5 = 9.
스칼라 곱셈의 특별한 경우는 더블링(doubling)이다. GF(pk)의 원소 αi가 주어진, 필드량 αi+αi(2αi)는 다음 연산을 실행함으로써 결정될 수 있다.A special case of scalar multiplication is doubling. Given the element α i of GF (p k ), the field amount α i + α i (2α i ) can be determined by executing the following operation.
(28), (29) 28, 29
여기서 a는 단일-가드-비트 표기법 또는 다중-가드-비트 표기법에 따라 저장된 αi를 표시하는 이진 데이터이고, M1 및 M2는 적절하게 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나에 대해 상기한 바와 같이 정의된 소정 이진량(마스크량) 이다. 따라서 5개의 능률적인 연산을 사용하여 더블링을 달성할 수 있음을 알 수 있다.Where a is binary data representing α i stored according to single-guard-bit notation or multi-guard-bit notation, and M1 and M2 are suitably in either single-guard-bit notation or multi-guard-bit notation. It is a predetermined binary amount (mask amount) defined as above. Thus, it can be seen that doubling can be achieved using five efficient operations.
실행 가능한 또 다른 계산은 동등성 검사(equality testing)이다. 예를 들어, GF(pk)의 필드 원소를 표시하는 이진 데이터 a가 영 원소를 표시하는지의 여부를 검사하는 것은, a=2a 인지를 체크하여 할 수 있다. 여기서 더블링은 바로 앞에서 설명한 바와 같이 실행된다. 표수 p가 홀수이므로, 2a의 양은 a=0이 아니라면 절대로 영이 되지 않는다. 원칙적으로, 단일 워드-연산(single word-operation)을 사용하여 a=0 인지의 여부를 직접 검사하는 것이 바람직할 수 있다. 그러나 그라운드 필드 GF(p)에서의 원소 0은 두 표기법(0 및 p)을 가지므로, 이진 데이터의 모든 비트가 동일하게 영이 아니더라도 이진 데이터 a가 0을 표시하는 것은 가능하다. 따라서 더블링 연산은 a의 양이 영과 같은지를 검사하는 편리한 방법을 제공한다. 이러한 방법은 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 모두에게 적용할 수 있다.Another feasible calculation is equality testing. For example, checking whether or not the binary data a representing the field element of GF (p k ) represents the zero element can be performed by checking whether a = 2a. Here the doubling is performed as just described. Since the number p is odd, the amount of 2a is never zero unless a = 0. In principle, it may be desirable to directly check whether a = 0 using single word-operation. However, since element 0 in ground field GF (p) has two notations (0 and p), it is possible for binary data a to represent 0 even if all bits of binary data are not equally zero. Thus, the doubling operation provides a convenient way to check if the amount of a is equal to zero. This method can be applied to both single-guard-bit notation or multi-guard-bit notation.
실행 가능한 또 다른 계산은 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는 단일 워드 연산을 실행함으로써 결정된다.Another feasible calculation is to determine the additive inverse of the a field element of GF (p k ), that is, to determine "-a" where a + (-a) = 0, given a. . Given the first binary data a stored according to either single-guard-bit notation or multi-guard-bit notation for indicating the field element of GF (p k ), 2 binary data c can be determined. Binary data indicating the amount of (p, p, ..., p) in GF (p k ) is called z. That is, z contains k groups of data bits with guard bits between them at appropriate locations, where each group of data bits maintains a binary equivalent of p. At this time, c = -a is determined by executing a single word operation.
(30) (30)
여기서 “-”는 워드 상의 정규 뺄셈 연산자이다. 이에 따라서 일반적인 동등성 검사, 즉 a=b인지를 결정하는 것은, a+(-b)=0인지의 여부를 검사함으로써, 즉 덧셈 역원에 대한 상기한 기술을 먼저 사용한 후 원소가 영이면 검사용 상기 방법을 사용함으로써 실행될 수 있다.Where "-" is a regular subtraction operator on words. Thus, the general equivalence test, i.e., determining whether a = b is performed by checking whether a + (-b) = 0, i.e., using the above technique for the addition inverse first, and then if the element is zero then the method for inspection This can be done by using
실행 가능한 또 다른 계산은 곱셈 역원(multiplicative inverse)이다. 크기 s의 승법군에서, 모든 x에 대해 x5=1은 참이다. 다시 말해, 필드에서의 어떤 x에 대해, x-1=xs-1이다. 유한 필드 GF(pk)에 대해, 승법군은 크기 s=pk-1을 갖는다. 그러므로, 필드 원소의 곱셈 역원은 다음 관계식에 따른 테이블 룩-업에 의해 실행될 수 있다.Another feasible calculation is a multiplicative inverse. In the multiplicative group of size s, x 5 = 1 is true for all x. In other words, for any x in the field, x -1 = x s-1 . For the finite field GF (p k ), the multiplication group has a size s = p k −1. Therefore, the multiplication inverse of the field elements can be performed by a table look-up according to the following relation.
(31) (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 함수를 사용하여 압축해제 연산을 실행할 수 있다.Wherein the first binary data a represents a field element of GF (p k ) and is stored according to single-guard-bit notation or multi-guard-bit notation. Second binary data a -1 indicates a multiply inverse field element. In a manner similar to that described above with respect to the discussion of GF_p_k_MUL for single-guard-bit notation, the operation in equation 35 can be performed directly using single-guard-bit notation using a table look-up. For multi-guard-bit notation, the operation in equation 35 can also be performed directly, where the DLOG look-up table consists of multiple guard bits at the memory address, and the binary data stored in the ANTILOG table represents data representing field elements. It consists of multiple guard bits located between groups of bits. Alternatively, the operation in equation 35 can be performed for multi-guard-bit notation using “compressed” DLOG and ANTILOG look-up tables combined with compression and decompression as described above. That is, the first binary data can be compressed using the above COMP function before executing the DLOG table look-up, and decompressed using the DECOMP function on the binary data result after the ANTILOG table look-up is executed. You can execute the operation.
실행 가능한 또 다른 계산은 누승(exponentiation) 이다. 상기한 곱셈 역원을 일반화 하여, 다음 관계식에 따라 테이블 룩-업을 하여 n 제곱(n-th power)에 대한 필드 원소의 누승을 계산할 수 있다.Another computation that can be done is exponentiation. By generalizing the multiplication inverse, the table look-up can be performed according to the following relationship to calculate the power of the field element with respect to n-th power.
(32) (32)
여기서 a는 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나에 따라 필드 계수를 표시하는 제1 이진 데이터이다. 상술한 것과 같은 방식으로, 식 36은 직접 또는 교대로 실행될 수 있고, DLOG 테이블 룩-업 전에 ANTILOG 테이블 룩-업에 뒤따라서, 필요에 따라 압축 및 압축해제 함수를 각각 사용하여 실행될 수 있다.Where a is first binary data representing a field coefficient in accordance with either single-guard-bit notation or multiple-guard-bit notation. In the same manner as described above, equation 36 may be executed directly or alternately, followed by ANTILOG table look-up before the DLOG table look-up, and may be executed using the compression and decompression functions, respectively, as needed.
효율 증대의 평가Evaluation of efficiency increase
종래 방법에 비해 상기한 본 발명의 방법을 사용하여 얻을 수 있는 효율 증대의 평가에 대해, 전형적인 암호법의 응용과 관련하여 설명한다. 암호 보안(cryptographic security)의 관점에서, 암호화 구조(encryption schemes)를 충분히 복잡하게 하여 상당히 안전하게 되도록 약 2160 크기의 유한 필드에 대해 타원곡선(앞서 언급한 Handbook of Applied Cryptography 참조)을 사용하여 암호화를 실행하는 것이 현재 권장되고 있다. 따라서 본 발명에 따라 p=3인 경우에, 101(즉, 3101≒2160) 보다 큰 차수의 GF(3)의 확장을 사용하는 것이 필수적으로 된다. 본 발명에 따라 p=7인 경우에, 확장 차수는 적어도 57을 요구한다. 즉, 필수적인 복잡성은, 예를 들어 GF(3102) 또는 GF(760)에서 계산을 실행함으로써 달성될 수 있을 것이다.The evaluation of efficiency gains obtained by using the method of the present invention as compared with the conventional method will be described in connection with the application of typical cryptography. In terms of cryptographic security, encryption can be implemented using an elliptic curve (see Handbook of Applied Cryptography, mentioned above) for a finite field of size 2 160, to make the encryption schemes sufficiently complex and fairly secure. It is currently recommended to do so. Thus, in the case of p = 3 in accordance with the present invention, it is necessary to use an extension of GF (3) of order greater than 101 (ie, 3 101 ≒ 2 160 ). In the case of p = 7 according to the invention, the extension order requires at least 57. In other words, the necessary complexity may be achieved, for example, by executing the calculation in GF 3 102 or GF 7 60 .
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)에서의 다양한 종류의 계산에 대해 앞에서 상세히 설명하였다.Rather than performing the calculations directly in GF 3 102 or GF 7 60 , the present invention allows calculations to be performed in the appropriate extension field GF (p l k ) to achieve the necessary complexity. For example, for p = 3, the necessary complexity can be found by performing calculations in the extended field GF (p l k ), where l = 17 and k = 6 (since 102 = 6 · 17). Similarly, for p = 7, the required complexity can be found by performing calculations in the extended field GF (7 l k ), where l = 12 and k = 5 (since 60 = 5 · 12). As noted above, this calculation requires performing an arithmetic operation on the base field GF (p l k ), which in the present example can be GF (p 5 ) or GF (7 5 ), respectively. It should also be noted that the calculation in GF (3 6 ) can be performed using single-guard-bit notation in a conventional 32-bit structure. In addition, the calculation in GF 7 5 can be performed using either single-guard-bit notation or multi-guard-bit notation in a 32-bit structure. As described above, the algorithms SUM (α, β) and PRODUCT (α, β) can be used to associate the calculation in the extended field GF (p l k ) with the calculation in the field GF (p k ). Various kinds of calculations in GF (p k ), including various implementations of GF_p_k_ADD and GF_p_k_MUL, have been described in detail above.
l=17 및 k=6인 GF(p l k)와 l=17 및 k=6인 GF(p l k)의 특정 유한 필드를 포함하는 계산에 대해 종래 방법과 비교하여 본 발명에 따른 단일-가드-비트 표기법 및 다중-가드-비트에 대한 계산 효율의 요약표를 나타내었다. 특히, 아래의 표는, DLOG 및 ANTILOG 룩-업 테이블의 대략적인 조합 크기(바이트)와, 각 필드에서 덧셈 및 곱셈을 실행할 필요가 있는 연산의 수를 나타낸다. 다중-가드-비트 표기법을 사용하는 곱셈을 실행하는 데 필요한 연산의 수는 상기한 압축 및 압축해제 연산을 이용하는 것을 포함한다. l = 17 and k = 6 is a single according to the invention as compared with the conventional method for the calculation, including the specific finite fields of GF (p l k) with l = 17 and k = 6 in GF (p l k) - A summary table of the computational efficiency for guard-bit notation and multi-guard-bit is shown. In particular, the table below shows the approximate combined size (in bytes) of the DLOG and ANTILOG look-up tables and the number of operations that need to perform addition and multiplication in each field. The number of operations required to perform multiplication using multi-guard-bit notation includes using the above compression and decompression operations.
상기 표로부터 명백하듯이, 상기한 본 발명의 방법을 사용하는 곱셈에 대해서, 종래 방법보다 효율에서의 큰 이득을 달성할 수 있다. 덧셈에 대해 필요한 상기 표시된 연산의 수와 관련하여, 본 발명에 따른 단일-가드-비트 표기법 및 다중-가드-비트 표기법에 이용되는 연산의 종류는 주로 높은 효율의 단순한 비트 연산인 반면, 종래 방법과 관련된 연산의 종류는 매우 느린 모듈러 덧셈 연산이라는 점에 주목할 필요가 있다. 따라서 GF(pk)에서 덧셈을 실행하는 종래의 방법에 비해 상기한 본 발명의 방법을 사용하는 덧셈이, 효율에서 현저한 이득도 달성할 수 있다는 것이 명백하다. 따라서 본 발명을 사용하여 달성한 이득은, 처음 보기에는, 제안한 상기 표보다 더욱 더 현저하다. 이러한 동일한 조사는 본 발명에 따른 필드 원소의 곱셈에 대해서도 마찬가지이다.As is clear from the above table, for the multiplication using the above-described method of the present invention, a greater gain in efficiency than the conventional method can be achieved. Regarding the number of operations indicated above for addition, the kind of operations used in single-guard-bit notation and multi-guard-bit notation according to the present invention are mainly simple bit operations of high efficiency, whereas It is worth noting that the kind of operation involved is a very slow modular add operation. Thus, it is apparent that the addition using the method of the present invention as described above can achieve a significant gain in efficiency as compared to the conventional method of performing addition in GF (p k ). Thus, the gains achieved using the present invention are, at first glance, even more pronounced than the above proposed table. This same investigation also applies to the multiplication of the field elements according to the invention.
단일-가드-비트 표기법인지 다중-가드-비트 표기법인지를 결정하는 것과 관련된 검토에 대해 설명한다. 메모리 소비가 문제되지 않는 경우, 계산 성능을 더 좋기 때문에 단일-가드-비트 표기법이 바람직하다. 가까운 장래의 응용에 따라, 덧셈 연산이 우세한 연산일 경우, 가능한 k를 크게 할 수 있기 때문에 단일-가드-비트 사용되어야 한다. 또한, DLOG 및 ANTILOG 룩-업 테이블의 크기가 2k이므로, 덧셈이 곱셈보다 우세하게 사용되는 경우, DLOG 및 ANTILOG 룩-업 테이블을 전체적으로 피하고 필드 원소를 곱하는 종래 방법을 단순히 사용하는 것이 현실적일 수 있다.A review relating to determining whether single-guard-bit notation or multi-guard-bit notation is described. If memory consumption is not a concern, single-guard-bit notation is preferred because of better computational performance. In the near future, if the addition operation is the dominant operation, a single guard-bit should be used because it can make k as large as possible. Also, DLOG and ANTILOG look-because the 2 k the size of the up-table, the addition in this case is used predominately than multiplication, DLOG and ANTILOG look-number to be practical simply to use the conventional method to avoid up table as a whole, which is multiplied by the field element have.
한편, 곱셈이 우세한 연산인 경우, 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 배만큼 크다. 즉, 단일-가드-비트 표기법에 대한 룩-업 테이블은 필드의 모든 원소를 저장하기 위해 필요한 절대 최소 크기보다 더 크다.On the other hand, if multiplication is the dominant operation, multi-guard-bit notation that minimizes the size of the DLOG and ANTILOG look-up tables is more desirable. In view of the above discussion, single-guard-bit notation and multi-guard-bit notation, in some sense, the compactness of DLOG and ANTILOG look-up tables, ease of table look-up and degree of parallelism (ie, It can be seen that the opposite end of the scale is indicated, including consideration of trade-off between the number of field-element coefficients that can be represented in a single-machine register. If w is a (fixed) word of the hardware structure (ie w is a register size) and m is the number of bits in the ground field GF (p) for p = 2 m −1, then part of the single-guard-bit notation The attributes can be summarized as follows: Binary data representing the k = w / (m + 1) coefficients of GR (p k ) (the coefficients are elements of GF (p)) can fit into one word, a single hardware register. This packing of binary data is optimally suitably for satisfying k <w / m. No compression is required before the DLOG table lookup, and there is no need for decompression following the (obviously optimal) ANTILOG table lookup. The look-up table for single-guard-bit notation is about 2 k times larger than the look-up table for multiple guard bit notation. That is, the look-up table for single-guard-bit notation is larger than the absolute minimum size needed to store all the elements of the field.
다중-가드-비트 표기법의 일부 속성은 다음과 같이 요약될 수 있다. (GF(p))의 원소인) GF(pk)의 k=w/(2m) 계수를 표시하는 이진 데이터는 하나의 워드, 즉 단일 하드웨어 레지스터에 맞추어 질수 있다. DLOG 및 ANTILOG 룩-업 테이블에 요구되는 메모리 공간을 절약하기 위해, 필요에 따라, 테이블 룩-업과 관련된 압축 및 압축해제 연산에 작은 양의 계산을 전담시킬 수 있고 또한 전담시켜야 한다. 압축 및 압축해제 연산을 이용함으로써, DLOG 및 ANTILOG 테이블은 그 크기에서 반드시 최적이다.Some attributes of the multi-guard-bit notation can be summarized as follows. Binary data representing the k = w / (2m) coefficients of GF (p k ), which is an element of GF (p), can fit into one word, a single hardware register. In order to save the memory space required for the DLOG and ANTILOG look-up tables, a small amount of computation can and should be dedicated to the compression and decompression operations associated with the table look-up as needed. By using compression and decompression operations, the DLOG and ANTILOG tables are necessarily optimal in size.
p=2m+1 및 p=2m± d 형태의 p로의 확장Expansion to p in the form p = 2 m +1 and p = 2 m ± d
상기한 논의에서, 홀소수 표수의 유한 필드에서의 계산을 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에 대한 방법을 사용하는 것이 바람직하다.In the above discussion, the calculation in finite fields of odd-numbered surface numbers has been described for p in the form p = 2 m −1. An extension of the above method is explained for the calculation of finite fields of odd-numbered tables. Where p is in the form p = 2 m +1 and p = 2 m ± d and d is small. In principle, any d value may be used in the case of d <2 m , but it will be appreciated that smaller d is preferred. In principle, as described below, p = 2 m −1 with d ≦ (2 m + 1) / 3 and p = 2 m ± with d ≦ p / 6, which proved to be as efficient as for d = 1. When d, special optimizations are available. Compared to the case of p = 2 m −1, this extension requires only a small increase in the required memory and computational overhead. The above treatment for p = 2m-1 allows p = 3, 7, 31, etc., while the expansion to p = 2 m +1 and p = 2 m ± d is a prime p = 5, 11, 13, 17 Use the back. Although it is mentioned that the present invention is most advantageous when d is smaller than the above, in principle all prime numbers are accepted. In addition, the word size and hardware memory place some practical limitations on how large a value of p can be used. As described above, when odd odd prime numbers p can be written in terms of more than one function form, it is generally preferable to use the method for p = 2 m −1 rather than the method for the other two function forms. In addition, when d> 1, it is preferable to use the method for p = 2m + 1 rather than the method for p = 2 m ± d.
다음 조사는 p=2m± d 뿐만 아니라 p=2m+1 형태의 p로의 확장을 이해하는 것과 관련되어 있다. 약간 다른 표기를 사용하여 상기 제안한 바와 같이(식 15 참조) p=2m-1일 때 어떤 값의 약분 e modulo p를 다음 관계식에 따라 실행할 수 있다.The following investigation involves understanding the expansion of p = 2 m + 1 to p as well as p = 2 m ± d. Using a slightly different notation, as suggested above (see Eq. 15), when p = 2 m −1, the fraction e modulo p of a value can be executed according to the following equation.
(33)(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에 대해 적용된다.As mentioned above, this is subtracting the integral multiple of p from e. Thus the result is mathematically correct and the only problem is that it is "practical", ie the result does not always belong to the set 0,1, ..., p-1, the conventional notation of integer modulo p. . This was solved by the following investigation. The notation of the integer modulo p can be extended to a larger set Sp = 0, 1, ..., p with two notations of zero, 0 and p. At this time, if f and g are elements of Sp, Equation 3 is correctly calculated as (f + g) mod (p) in double notation. Where e is the sum of f and g. This investigation will now be generalized. Let p = 2 m +1 (where d is negative but | d | <2). At this time, for some constant e, the following relation applies to the constant r.
(34), (35) (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에 대해 닫힌 상태로 되는 덧셈과 결합하여 모듈러 약분 연산을 하게 한다.In other words, the result is equal to e mod (p), up to an integer multiple of p. So what is done in equations 34 and 35 is the subtraction by a multiple of p. In order to get the complete approximate mod p so that the amount of c-pk is actually in the set 0, 1, ..., p-1, the relation in equations 34 and 35 is k = e div p = e div (2 m + d ) Should be used. However, the present invention uses an approximation at k = e div 2 m so that e-pk is not guaranteed to be in set 0, 1, ..., p-1. For the case of d = -1 (corresponding to p = 2 m −1), for example, using the slightly larger set Sp would be closed for the set Sp in the determination of e = f + g. Combined with addition, it allows for modular abbreviations.
홀수 |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를 허용하는 데에 수학적으로 문제가 없음에 유의해야 한다.For p = 2 m +1 and p = 2 m ± d for odd | d |> 1, the algorithms GF_p_k_ADD and FG_p_k_MUL for the generation are appropriate sets of notations corresponding to the coefficient values of the allowed GF (p k ) field elements It is described below in connection with determining Sp. It can be seen that the Sp set depends on the functional form of p and m and d. Where p = 2 m ± d. Similar to the above, these sets will be displayed in the case of p = 2 for m +1 + Sp, Sp for p = 2 m + d + d , p = 2 m -d Sp -d. As described above, the coefficient itself of the field element of GF (p k ) is an element of GF (p). It should be noted that there is no mathematical problem to allow a more general set Sp if the c amount of modular abbreviation is closed under addition according to the modular abbreviation, so long as c minus a multiple of p.
p=2m+d에서 GF(pk)에서의 덧셈 및 곱셈Addition and multiplication in GF (p k ) at p = 2 m + d
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에서 계수를 표시하기 위해 필요한 것보다 하나 이상인 비트이다.In the following description of GF_p_k_ADD and GF_p_k_MUL for the case of p = 2 m + 1, it is assumed that m ≧ 2 such that p ≧ 5. This is because it is preferable to address the case of p = 3 using the method described above for addition and multiplication in the case of p = 2 m −1 (that is, p = 2 2 −1). Sp + is given by Sp + = 0, 1, ..., 2p-2. (So, for p = 2 m +1, the present invention results in 0, 1, ..., p-2 values having two notations, whereas for p = 2 m -1, only zero values have more than one notation. In this case, each coefficient of the field element of GF (p k ) is an element of Sp + . Since 2p-2 = 2 m + 1 , m + 3 bits (not including guard bits) are used to represent the coefficients of the field elements of GF (p k ), which is the method for p = 2 m −1. At set Sp = 0, 1, ..., p is one or more bits than necessary to represent the coefficients.
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 하드웨어 레지스터에 저장함으로써, 필드 계수를 표시하는 데이터 비트의 한 그룹으로부터 다른 필드 계수를 표시하는 데이터 비트의 인접 그룹으로 캐리가 전달되지 않을 것이다. 다중-가드-비트 표기법에 따라 필드 원소를 표시하는 이진 데이터를 저장하는 방법은, 필드 계수를 표시하는 데이터 비트의 인접 그룹 사이에 하나 이상의 가드-비트 위치가 제공된다는 차이만 있을 뿐, 전적으로 유사하다.For p = 2 m +1, the binary data representing the field element of GF (p k ) is that for p = 2 m +1, m + 2 bits (not including guard bits) are field elements. As described above, it may be stored in a hardware register in accordance with either a single-guard-bit notation or a multi-guard-bit notation, except that it is allocated for each group of data bits representing the coefficient of. For example, in single-guard-bit notation, the first binary data representing the first field element α i of GF (p k ) may be stored as follows. Here, the first binary data includes k groups of first data bits. Assume (m + 3) k as the maximum hardware word size (register size). Let α i be the first field element of GF (p k ), where α i = (α k-1, i ,..., α 0, i ) and each α j, i belongs to Sp + . The group of first data bits representing a 0, i is stored in the first register at bit positions 0, 1, ... m + 1. The first guard bit with a zero value is stored in the first register at bit position m + 2 (guard-bit position). Another group of first data bits representing α 1, i is stored in the first register at bit positions m + 3, ... 2m + 4, and so forth. Thus, at v = 1, 2, ... there is one first guard bit at every bit position v (m + 3) -1, ie at every successive (m + 3) th bit position. In other words, there is one first guard bit at a position adjacent to the most significant bit of each group of first data bits. The second binary data comprising a k group of second data bits representing a second field element of GF (p k ) is generated with one second guard bit adjacent to the most significant bit of each group of second data bits. It can be stored in two registers as well. (Here, “first” and “second” are simply used to distinguish between attributes corresponding to the first field element and the second field element, respectively.) In this way, the first and second of GF (p k ) By storing binary data indicative of field elements in the first and second hardware registers, carry will not be transferred from one group of data bits indicative of field coefficients to an adjacent group of data bits indicative of other field coefficients. The method of storing binary data representing field elements in accordance with multi-guard-bit notation is entirely similar except that one or more guard-bit positions are provided between adjacent groups of data bits representing field coefficients. .
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의 전형적인 구현을 표시한다.A typical form of GF_p_k_ADD at p = 2 m + 1 will be described with reference to the flowchart of FIG. The operation shown in FIG. 14 can be executed by a system such as the system 100 shown in FIG. Further, in the manner as described before, first binary data representing the first field element of GF (p k ) is stored in a first register (eg, register 107 of FIG. 1), and the second field element Assume that the steps 301 and 303 shown in FIG. 3 have been executed in advance by the processor 105 so that the second binary data indicating is stored in a second register (e.g., register 109). The first and second binary data may be stored according to either single-guard-bit notation or multi-guard-bit notation. The method is the same in both cases. At this point, the steps shown in FIG. 14 indicate a typical implementation of step 305 shown in FIG.
단계 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) 중 하나에 저장된다.As in step 1401, the processing unit 105 uses addition (i.e., add carry with the next most significant bit if necessary) to remove the content a of the first register 107 and the content b of the second register 109. Add. The result of the addition may be stored in another register 111 as shown in FIG. As in step 1403, the processing unit 105 performs a logical AND operation between the amount of (a + b) stored in the register 111 and the first predetermined binary amount M1 stored in one of the registers (e.g., register 113). Run The M1 quantity has a zero value at a bit position corresponding to the bit position of the first guard bit stored in the first register 107 and at a bit position corresponding to the bit position of each group of first data bits stored in the first register. It has a binary value representing the amount of 2 m -1. For example, when p = 5 (ie, p = 2 m + 1 to m = 2), the first predetermined binary amount M1 is a continuous binary string (0, 0, 1, 1) separated by zero bit values. 1), since 2 m -1 = 3, given as binary values (0, 0, 1, 1). The above definition of the amount of M1 is applicable to multi-guard-bit notation as well as single-guard-bit notation for the case where p = 2 m +1. The result of the operation shown in step 1403 may be referred to as first intermediate data c1 and is stored in one of the registers (eg, register 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 필드 원소의 합을 표시한다.As in step 1405, the processing unit 105 performs a logical AND operation between the amount of (a + b) stored in the register 111 and the second predetermined binary amount M2 (where M2 is given as M2 = NOT (M1)). Run The NOT operation is bitwise logical negation. The result of this operation is stored in one of the registers (eg, register 117). In addition, as in step 1405, the processing unit 105 performs a right shift by m bits for the amount of ((a + b) & M2). The result of such an operation may be stored in the same register 117 or another register. In step 1407, the processing unit 105 subtracts ((a + b) & M2) >> m from the third predetermined binary amount P1. The amount of P1 has a zero value at the bit position corresponding to the bit position of the first guard bit stored in the first register, and 2 m +1 at the bit position corresponding to the bit position of each group of first data bits in the first register. It has a binary value indicating the amount of (= p). For example, at p = 5 (i.e. m = 2), the third predetermined binary amount P1 is a continuous binary string (0, 1, 0, divided into zero bit values (corresponding to the guard-bit position). 1), since 2 m + 1 = 5 given as (0, 1, 0, 1) as a binary value. The result of the operation shown in step 1409 may be referred to as second intermediate binary data c2 and is stored in one of the registers (eg, register 119). In step 1409 the processor performs an addition between the first intermediate binary data c1 and the second intermediate binary data c2, which may be marked c and stored in one of the registers (eg, register 121). Generate the third binary data. According to this method, the third binary data c represents the sum of the first field element and the second field element.
도 3 및 14에 따른 알고리즘은 설명을 용이하게 하기 위해 특정한 일련의 단계의 관점으로 설명되었다. 그러나 상기한 것과 틀림없는 순서로, 도 3 및 14에 나타낸 단계를 실행할 필요는 없다. 본 기술 분야에서 통상의 지식을 가진 자라면 상기 단계의 순서는 변경될 수 있고 상기 단계들 중 일부는 동시에 실행될 수 있다는 것을 알 수 있을 것이다. 예를 들어, 도 3에 나타낸 단계 301 및 303은 동시에 실행될 수 있고, 도 4에 나타낸 단계 1403 및 1405는 동시에 실행될 수 있다.The algorithm according to FIGS. 3 and 14 has been described in terms of specific sequences of steps to facilitate explanation. However, it is not necessary to carry out the steps shown in Figs. Those skilled in the art will appreciate that the order of the steps can be changed and some of the steps can be executed simultaneously. For example, steps 301 and 303 shown in FIG. 3 may be executed simultaneously, and steps 1403 and 1405 shown in FIG. 4 may be executed simultaneously.
여러 가지 연산이 실행되는 절차에 상관없이, 다음 관계식에 따라 c(제3 이진 데이터)의 양을 결정하는 것만이 필수적이다. Regardless of the procedure in which the various operations are performed, it is only necessary to determine the amount of c (third binary data) according to the following relationship.
(36) (36)
여기서, a는 제1 필드 원소를 표시하는 제1 이진 데이터이고, b는 제2 필드 원소를 표시하는 제2 이진 데이터이고, +는 덧셈을 표시하고, M1, M2 및 P1은 상기한 바와 같이 정의된다. 이 점에 있어서, 결과적인 양 c의 데이터 비트(cj)의 각 그룹이 Sp+의 원소인 값을 표시하고, 이러한 각 cj가 cj=(aj+bj) mod(p)(p의 단일 배수에 이르기까지)로 주어진다는 것을, 본 기술 분야에서 통상의 지식을 가진 자라면 알 수 있을 것이다. 여기서 상기 a 및 b의 양에 대한 첨자 j는 각 필드 원소의 관련 계수를 표시하는 데이터 비트의 해당 그룹을 가리킨다.Where a is first binary data representing a first field element, b is second binary data representing a second field element, + represents addition, and M1, M2 and P1 are defined as described above. do. In this respect, each group of data bits c j of the resultant amount c represents a value that is an element of Sp + , and each such c j is c j = (a j + b j ) mod (p) ( will be appreciated by those skilled in the art. Where the subscript j for the amounts of a and b indicates the corresponding group of data bits representing the relevant coefficients of each field element.
따라서, 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))을 사용함으로써, 그러한 음의 빌려오기를 피할 수 있다.Thus, for p = 2 m +1 the addition of field elements in GF (p k ) can be performed using six simple instructions (compare with five simple instructions for p = 2 m −1). Using the second term (P1- (c '& M2) >> m)) as the addition in Eq 36 is, in principle, equivalent to subtracting the amount of ((a + b) div 2 m ) modulo p, Make 36 match Eq 33 However, it is advantageous to perform q subtraction as positive qq addition. In particular, if subtraction is performed in a conventional manner, i.e. by subtracting ((a + b) div 2 m ) rather than adding (P1-((a + b) & M2) >> m)), it faces the addition carry. It is possible to encounter negative “borrows” even if you do not. On the contrary, by using the addition amount (P1-((a + b) & M2) >> m)), such negative borrowing can be avoided. have.
식 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 의 나머지와 같다.To prove that the method given in Eq 36 produces the correct addition result, if a j and b j ∈ Sp +, then any c j of c quantity in Eq 36 is 0≤c j ≤2 m -1 + p = 2p We know that -2 is satisfied (because 0≤ (a j + b j ) div 2 m ≤4 <p). Thus, each c j of both c in equation 36 is an element of Sp as required. As mentioned above, the drug in Eq 36 subtracts ((c j div 2 m ) -1) p from c j , which is a multiple of p. Thus each c j is actually in the set Sp + and thus is equal to the remainder of (a j + b j ) mod p, up to the (single) multiple of p.
상기한 바와 같이, 본 발명에 따른 다중-가드-비트 표기법에서의 p=2m+1에 대한 GF(pk)의 두 필드 원소의 덧셈(GF_p_k_ADD) 처리는 실질적으로 단일-가드-비트 표기법과 동일하다. 제1 및 제2 필드 원소를 각각 표시하는 제1 및 제2 이진 데이터는, 각 필드 원소의 계수를 표시하는 데이터 비트의 인접 그룹 사이에 위치한 다중 가드 비트와 함께 저장된다는 것에만 유의할 필요가 있다. 또한, M1, M2 및 P1의 양들을 결정하는 상기 주어진 규정(prescriptions)들은 다중-가드-비트 표기법에 대해 수정이 필요 없다. 물론, 그러한 규정을 다중-가드-비트 표기법에 적용하는 것은, 단일-가드-비트 표기법에 대해 발생되는 것과는 서로 다른 값의 M1, M2 및 P1의 양을 생성할 것이다.As noted above, the addition (GF_p_k_ADD) of two field elements of GF (p k ) to p = 2 m +1 in the multi-guard-bit notation according to the present invention is substantially equivalent to the single-guard-bit notation. same. It should be noted only that the first and second binary data representing the first and second field elements, respectively, are stored with multiple guard bits located between adjacent groups of data bits representing the coefficients of each field element. Also, the above given prescriptions for determining amounts of M1, M2 and P1 need not be modified for multi-guard-bit notation. Of course, applying such a definition to multi-guard-bit notation will produce amounts of M1, M2 and P1 of different values than those generated for single-guard-bit notation.
(실시예 2)(Example 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)과 같은 처리 시스템을 사용하여, 아래 설명하는 계산이 실행된다.A numerical example illustrating the method shown in FIG. 14 for p = 2 m + 1 will be described with reference to FIG. 15. 15 schematically illustrates a set of registers 1501-1521 in which typical register contents are stored, in accordance with single-guard-bit notation. Each register 1501-1521 contains 32 bit positions in this embodiment according to a 32-bit structure. In this particular example, the calculation is performed using binary data representing the field elements of GF (5 6 ), where p = 2 m + 1 = 5 and m = 2. Thus m + 2 = 4 bits are allocated for each coefficient of field element (not including guard bits), and adjacent 4-bit groups are separated by a single guard-bit position (light shaded area). In this example, there are also two unused bit positions (dark shaded areas) in the most significant bit of each register. For example, using a processing system such as the processing system 100 shown in FIG. 1, the calculation described below is performed.
이 예에서, 주어진 필드 원소의 각 계수는 필드 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) 이다.In this example, each coefficient of a given field element is the element of field GF (5) itself. The coefficient value in GF (5) corresponds to binary data according to the next combination. That is, 0 to (0, 0, 0, 0); 1 to (0,0,0,1); 2 ~ (0,0,1,0); 3 to (0,0,1,1); 4 to (0,1,0,0). There is also a dual notation with the following addition combination, where two different numbers in GF (p) are represented by the same value. That is, 5 to (0, 1, 0, 1) corresponding to 0; 6 to (0, 1, 1, 0) corresponding to 1; 7 to (0, 1, 1, 1) corresponding to 2; 8 corresponding to three (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)을 포함한다.As a start, first binary data representing a first field element given by a vector representation such as (0,3,1,6,3,0) is stored in the first register 1501. In addition, second binary data representing the second field element given by the vector representation such as (0,7,1,4,4,0) is stored in the second register 1503. Each guard-bit position in registers 1501 and 1503 is initially assigned a zero value. The contents of registers 1501 and 1503 are added by addition and the result (a + b) is stored in register 1505 (corresponding to step 1401 of FIG. 14). The content (a + b) of the register 1505 is combined with the first binary amount M1 stored in the register 1507 through a logical AND operation, so that ((a + b) & M1) is stored in the register 1509. Stored (corresponding to step 1403 of FIG. 14). In this example, since 2 m −1 = 3, which is given as a binary value as (0,0,1,1), the first predetermined binary amount M1 is represented by a zero bit value (corresponding to the guard-bit position). Contiguous binary strings (0,0,1,1) are included.
이 때, 제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의 논의를 완료한다.At this time, a second predetermined binary amount M2 = NOT (M1) is formed and stored in the register 1511, and the content M2 of the register 1511 is the content (a + b) of the register 1505 through a logical AND operation. ), And the resultant (c1 = ((a + b) & M2)) is stored in the register 1513 (corresponding to step 1405 in FIG. 14). The second predetermined binary amount P1 is stored in register 1515, where P1 is 2 m +1 located in adjacent 4-bit groups, each separated by a zero bit value (corresponding to the guard-bit position). Represents a positive repeated binary equivalent. In this example, since 2 m + 1 = 5, which is given as a binary value as (0,1,0,1), the third predetermined binary amount P1 is represented by a zero bit value (corresponding to the guard-bit position). It contains separate consecutive binary strings (0,1,0,1). The contents ((a + b) & M2) of the register 1513 are shifted right by m bits (i.e., 2 bits), and the resulting (((a + b) & M2) >> 2 is stored in the register 1517. (Corresponding to step 1405 in FIG. 14). The content (((a + b) & M2) >> 2) of the register 1517 is subtracted from the content P1 of the register 1515, resulting in (c2 = P1-(((a + b) &M2)> 2)) is stored in register 1519 (corresponding to step 1407 in FIG. 14). Finally, the content c of the register 1509 is added to the content c2 of the register 1519 using addition, and the resulting third binary data c = c1 + c2 is added to the register 1521. Stored. The resulting third binary data stored in register 1521 corresponds to the field element given by the vector representation, such as (5,5,7,5,7,5), which is the expected result. If desired, this result can be reduced to modulo 5 (which is mod (p) in this example) prior to the output operation, for example giving the result (0,0,2,0,2,0). . This completes the discussion of Example 2.
p=2m+1의 경우 홀표수 유한 필드의 필드 원소를 포함하는 계산과 관계된 본 발명의 다른 양태에서, 도 14에 나타낸 GF_p_k_ADD의 전형적인 형태에 대한 연산을 실행하는 하드웨어 장치가 제공될 수 있다. 도 16은 이러한 전형적인 하드웨어 장치의 기능적 블록도이다. 특히, 도 16에 나타낸 장치(1600)는, 도 14 및 16에서 c로 표시하고 GF(pk)의 제1 필드 원소 및 제2 필드 원소의 합을 표시할 수 있는 제3 이진 데이터를 발생하는 다른 방법을 제공한다.In another aspect of the invention relating to calculations involving field elements of odd-numbered finite fields in the case of p = 2 m + 1, a hardware device may be provided that performs operations on the typical form of GF_p_k_ADD shown in FIG. 16 is a functional block diagram of such a typical hardware device. In particular, the device 1600 shown in FIG. 16 generates third binary data, denoted by c in FIGS. 14 and 16 and capable of displaying the sum of the first field element and the second field element of GF (p k ). Provide another way.
상기 장치(1600)은 단일-가드-비트 표기법 및 다중-가드-비트 표기법 둘 다에 적용할 수 있다.The device 1600 can apply to both single-guard-bit notation and multi-guard-bit notation.
도 16의 기능적 블록도에 나타낸 상기 하드웨어 장치(1600)는, 여러 가지 공통적인 특징과 연산 형태를 도 6에 나타낸 장치(600)와 공유하며, 도 6 및 도 16에서 동일한 특징은 동일한 참조 번호를 부여한다. 상기 장치 600과 공통되는 상기 장치 1600의 양태에 대한 논의는 여기서 중복하지 않을 것이다. 상기 장치 600과는 다른 상기 장치 1600의 양태에 대해 논의할 것이다.The hardware device 1600 shown in the functional block diagram of FIG. 16 shares various common features and operational forms with the device 600 shown in FIG. 6, wherein the same features in FIGS. 6 and 16 refer to the same reference numerals. Grant. The discussion of aspects of the device 1600 that are common to the device 600 will not overlap here. Aspects of the device 1600 that differ from the device 600 will be discussed.
상기 장치 1600은 상기 장치 600에서는 찾아볼 수 없는 몇 가지 특징을 가지고 있다. 특히, 상기 장치(1600)는, 제3 소정 이진량(P1)을 유지하는 추가적인 레지스터(1625)와, 상기 레지스터(1625)의 콘텐츠(P1)에서 우측-시프트 레지스터(1619)로부터의 출력을 빼는 감산 게이트(1627)를 가지고 있다.The device 1600 has several features not found in the device 600. In particular, the device 1600 further subtracts an output from the right-shift register 1619 from the additional register 1625 holding a third predetermined binary amount P1 and the content P1 of the register 1625. It has a subtraction gate 1627.
감산 게이트(1627)로부터의 출력은 지시한 바와 같이 레지스터(1603)로 피드백(feed back) 된다. 반대로, 도 6에 도시한 바와 같이, 상기 장치(600)는 레지스터 1625와 유사한 레지스터를 가지고 있지 않으며, 감산 게이트 1627과 유사한 감산 게이트를 가지고 있지 않다. 오히려, 도 6에 도시한 장치(600)에 대해서, 우측-시프트 게이트(619)로부터의 출력은 도시한 레지스터(603)로 직접 들어간다. 도 16B에 도시한 방식으로 레지스터(1625) 및 감산 게이트(1627)를 제공함으로써, 상기 장치(1600)는 도 14에 도시한 단계 1407에 해당하는 방식으로 데이터를 처리할 수 있게 한다. 다른 점에서, 상기 장치(1600)는 도 6에 도시한 상기 장치(600)와 같이 동작하고, 도 1600에서의 양태와 같은 추가적인 논의는 필요하지 않다.The output from the subtraction gate 1627 is fed back to the register 1603 as indicated. In contrast, as shown in FIG. 6, the device 600 does not have a register similar to register 1625 and does not have a subtract gate similar to subtract gate 1627. Rather, for the device 600 shown in FIG. 6, the output from the right-shift gate 619 goes directly into the register 603 shown. By providing a register 1625 and a subtracting gate 1627 in the manner shown in FIG. 16B, the apparatus 1600 enables processing of data in a manner corresponding to step 1407 shown in FIG. In other respects, the device 1600 operates like the device 600 shown in FIG. 6, and no further discussion such as the aspect in FIG. 1600 is necessary.
상기한 바와 같이 상기 장치(1600)에서는, 제1 레지스터(1601) 및 프로세서(도시하지 않음)가 도 6과 관련하여 설명한 바와 같이 제1 이진 데이터를 저장하는 수단으로 볼 수 있다. 제2 레지스터(1603) 및 프로세서(도시하지 않음)는 제2 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 레지스터(1621) 및/또한 레지스터(1609)는 제3 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 클럭/논리 소자(1605)와 도 16에 도시한 어떤 또는 모든 나머지 소자들은 제1 이진 데이터 및 제2 이진 데이터에 대해 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다.As described above, in the apparatus 1600, the first register 1601 and a processor (not shown) may be regarded as a means for storing the first binary data as described with reference to FIG. The second register 1603 and a processor (not shown) can be viewed as a means for storing second binary data. In addition, register 1621 and / or register 1609 may be viewed as a means for storing third binary data. In addition, the clock / logical element 1605 and any or all of the remaining elements shown in FIG. 16 may be viewed as means for performing at least one operation on the first binary data and the second binary data.
본 발명의 다른 전형적인 양태에서, p=2m+1에 대해 사용하는 덧셈 장치(1600)는, 유한 필드 GF(pk)에 전용으로 선택되고 변경되지 않게 유지되는 상태를 위해, 도 17의 블록도에 도시한 하드웨어 장치(1700)에 대해 나타낸 바와 같이 수정될 수 있다. 즉, 단일-가드-비트 표기법인지 다중-가드-비트 표기법인지의 선택뿐만 아니라, m, p 및 k의 양도 고정되고, 상기 하드웨어 장치(1700)는 이러한 선택에 대해 전용으로 된다. 이러한 상태에서, 상기 하드웨어 장치(1700)는 필드 원소를 표시하는 초기 이진 데이터를 수신할 수 있고 여기서 초기 이진 데이터는 가드-비트 위치에서 영을 갖도록 구성되지 않는다. 오히려, 상기 하드웨어 장치(1700) 자체는, 가드-비트 위치에서 영을 갖는 제1 및 제2 이진 데이터를 구성하기 위해, 적절한 가드-비트 위치에서 영을 갖는 초기 이진 데이터를 구성하여 프로세서가 필요 없이 제1 및 제2 이진 데이터를 발생한다. 도 17에 도시한 하드웨어 장치(1700)에 대해 설명한다.In another exemplary embodiment of the present invention, the addition apparatus 1600 used for p = 2 m + 1 is selected from the block of FIG. 17 for a state dedicated to the finite field GF (p k ) and kept unchanged. It may be modified as shown for the hardware device 1700 shown in FIG. That is, the amount of m, p, and k is fixed as well as the choice of single-guard-bit notation or multi-guard-bit notation, and the hardware device 1700 is dedicated to this choice. In this state, the hardware device 1700 may receive initial binary data indicative of field elements, where the initial binary data is not configured to have zero at the guard-bit position. Rather, the hardware device 1700 itself configures the initial binary data with zeros at the appropriate guard-bit position without the processor to construct the first and second binary data with zeros at the guard-bit position. Generate first and second binary data. The hardware device 1700 shown in FIG. 17 will be described.
도 17의 기능적 블록도에 도시한 상기 하드웨어 장치(1700)는, 여러 가지 공통적인 특징과 연산 형태를 도 16에 도시한 장치(600)와 공유하며, 도 16 및 도 17에서 동일한 특징은 동일한 참조 번호를 부여한다. 상기 장치 1600과 공통되는 상기 장치 1700의 양태에 대한 논의는 여기서 중복하지 않을 것이다. 오히려, 상기 장치 1600과는 다른 상기 장치 1700의 양태에 대해 논의할 것이다.The hardware device 1700 shown in the functional block diagram of FIG. 17 shares many common features and operational forms with the device 600 shown in FIG. 16, the same features being referred to in FIGS. 16 and 17 by the same reference. Give a number. The discussion of aspects of the device 1700 that are common to the device 1600 will not overlap here. Rather, we will discuss aspects of the device 1700 that are different from the device 1600.
상기 장치 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'를 형성한다.The device 1700 has several features not found in the device 1600. In particular, the device 1700 has guard-bit-insertion circuits 1701 'and 1703 (GB insertion) and guard-bit-removal circuit 1709' (GB removal). The guard-bit-insertion and guard-bit-removal circuits 1701 ′, 1703 ′, and 1709 ′ may be implemented using circuits similar to those shown, for example, in the examples of FIGS. 8A and 8B already described. As shown in FIG. 17, the guard-bit-insertion circuits 1701 ′ and 1703 ′ are functionally installed at the input to the hardware device 1700, and the guard-bit-rejection circuit 1709 ′ is provided with a register 1709. And between the output register 1721. Guard-bit-insertion circuits 1701 'and 1703' receive initial binary data a 'and b' (not including guard bits) corresponding to the first and second field elements of GF (p k ), and Operate to insert guard bits into that data. In other words, the guard-bit-insertion circuits 1701 ′ and 1703 ′ have initial binary data a ′ and b ′ for the first binary data and the second binary with guard bits, in particular with zero at the guard-bit position. Convert to data. The guard-bit-rejection circuit 1709 'has the opposite function, i.e., the function of receiving the third binary data c indicating the calculation result and having the guard bit, and removing this guard bit, and thus without the guard bit, the calculation result. To form the final binary data c ′.
상기 장치 1700에서는 필요 없는, 장치 1600에 있는 특정한 특징이 장치 1700에서는 빠져 있다. 특히, 상기 장치(1700)는 m의 양에 대한 우측-시프트 게이트(1719) 및 마스크 레지스터(1713)으로의 입력 라인이 빠져 있다. 이러한 입력 라인은 m이 고정된 경우에는 불필요하다. 오히려, 우측-시프트 게이트(1719)는 m 값으로 한번에 초기화 되어 적절한 우측 시프트를 실행한다. 마찬가지로, 마스크 레지스터(1713) 및 레지스터(1725)는, 단일-가드-비트 표기법이 사용되었는지 다중-가드-비트 표기법이 사용되었는지에 따라 M1 및 P1의 적절한 형태로 한번에 초기화 된다. 종래의 전기 접속은 이러한 초기화를 실행하기 위해 사용될 수 있고 도 17에는 나타내지 않았다. 상기한 동작적인 구별과는 다른 관점에서, 도 17에 도시한 장치(1700)의 동작은 도 16에 도시한 장치(1600)에 대한 설명과 거의 유사하므로, 더 이상의 논의는 필요 없다.Certain features in device 1600 that are not needed in device 1700 are missing in device 1700. In particular, the device 1700 is missing the input line to the right-shift gate 1719 and mask register 1713 for the amount of m. This input line is not necessary if m is fixed. Rather, right-shift gate 1719 is initialized to the m value at one time to perform the appropriate right shift. Similarly, mask registers 1713 and registers 1725 are initialized at one time in the appropriate form of M1 and P1 depending on whether single-guard-bit notation or multi-guard-bit notation is used. Conventional electrical connections can be used to perform this initialization and are not shown in FIG. In terms of the differentiation from the above operational distinction, the operation of the device 1700 shown in FIG. 17 is almost similar to the description of the device 1600 shown in FIG. 16, so no further discussion is required.
상기한 장치(1700)에서, 제1 레지스터(1701) 및 가드-비트 삽입 회로(1701')는 제1 이진 데이터를 저장하는 수단으로 볼 수 있다. 제2 이진 레지스터(1703) 및 가드 비트 삽입 회로(1703')은 제2 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 레지스터(1709)는 제3 이진 데이터를 저장하는 수단으로 볼 수 있다. 또한, 클럭/논리 소자(1705) 및 도 7에 도시한 어떤 또는 모든 나머지 소자들은 제1 이진 데이터 및 제2 이진 데이터에 대해 적어도 하나의 연산을 실행하는 수단으로 볼 수 있다.In the device 1700 described above, the first register 1701 and the guard-bit insertion circuit 1701 ′ can be viewed as a means for storing first binary data. The second binary register 1703 and the guard bit insertion circuit 1703 'can be viewed as a means for storing the second binary data. In addition, the register 1709 can be viewed as a means for storing third binary data. In addition, the clock / logical element 1705 and any or all of the remaining elements shown in FIG. 7 may be viewed as means for performing at least one operation on the first binary data and the second binary data.
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 비트를 필드 원소를 표시하는 데이터 비트의 각 그룹에 저장하도록 할당된다는 것도 고려해야 한다.In the case of p = 2 m +1 multiplication of field elements in GF (p k) are one-to Figure 9-12 on for both bit notation p = 2 m -1 - guard-bit notation and multiple-guard This can be done using the typical form of GF_p_k_MUL described above with reference. In contrast to the m bits for the case of p = 2 m −1, m + 2 bits (guard) to store each group of data bits representing the coefficients of the field elements of GF (p k ) for p = 2 m +1. It is only necessary to know that no bits are allocated). Of course, this difference should be applicable to the form of DLOG and ANTILOG tables. If the compression function (COMP) and the decompression function (DECOMP) use multi-guard-bit notation, these functions are allocated to store m + 2 bits rather than m bits in each group of data bits representing field elements. Consideration should also be given.
p=2m± d의 경우 GF(pk)에서 덧셈 및 곱셈Addition and multiplication in GF (p k ) for p = 2 m ± d
본 발명의 다른 양태에서, 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을 실행하는 방법을 설명한다.In another aspect of the invention, the above-described treatment of performing calculations in GF (p k ) for p = 2 m −1 and p = 2 m +1 may be extended to p in the form p = 2 m ± d have. Here, suppose d> 1 and d is odd. M and d are chosen so that the resulting p is odd. If a given prime can be written as both p = 2 m −1 and p = 2 m +1 for different choices of m and d, it is preferable to use a form that allows a minimum value of d. For example, p = 11 p = 2 3 +3 (m = 3, d = 3) and p = 2 4 -5 (m = 4, d = 5) can be written as both. It is preferable to select and use p = 2 3 + 3 at m = 3 and d = 3. How to perform addition and multiplication in GF (p k ), that is, how to execute GF_p_k_ADD and GF_p_k_MUL for p = 2 m ± d.
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 하드웨어 레지스터에 저장함으로써, 필드 계수를 표시하는 데이터 비트의 한 그룹으로부터 다른 필드 계수를 표시하는 데이터 비트의 인접 그룹으로 캐리가 전달되지 않을 것이다. 다중-가드-비트 표기법에 따라 필드 원소를 표시하는 이진 데이터를 저장하는 방법은, 필드 계수를 표시하는 데이터 비트의 인접 그룹 사이에 하나 이상의 가드-비트 위치가 제공된다는 차이만 있을 뿐, 전적으로 유사하다.For p = 2 m ± d, binary data representing the field element of GF (p k ) is given by m + for each group of data bits representing the coefficient of the field element for p = 2 m −d. Allocating 1 bit (not including guard bits), and for p = 2 m + d, m + 2 bits (without guard bits) for each group of data bits representing the coefficient of the field element Except for allocating a, as described above, it may be stored in a hardware register according to one of single-guard-bit notation or multiple-guard-bit notation. For example, in the single-guard-bit notation for p = 2 m −1, the first binary data representing the first field element α i of GF (p k ) may be stored as follows. Here, the first binary data includes k groups of first data bits. Assume (m + 2) k as the maximum hardware word size (register size). Let α i be the first field element of GF (p k ), where α i = (α k-1, i , ..., α 0, i ) and each α j, i is Sp (described below) As such, depending on the form of p, the specific Sp -d or Sp + d ). The group of first data bits representing a 0, i is stored in the first register at bit positions 0, 1, ... m. The first guard bit with a zero value is stored in the first register at bit position m + 1 (guard-bit position). Another group of first data bits representing α 1, i is stored in the first register at bit positions m + 2, ... 2m + 2, and the like. Thus at v = 1, 2, ... there is one first guard bit at every bit position v (m + 2) -1, ie at every successive (m + 1) th bit position. In other words, there is one first guard bit at a position adjacent to the most significant bit of each group of first data bits. The second binary data comprising a k group of second data bits representing a second field element of GF (p k ) is generated with one second guard bit adjacent to the most significant bit of each group of second data bits. It can be stored in two registers as well. (Here, “first” and “second” are simply used to distinguish between attributes corresponding to the first field element and the second field element, respectively.) In this way, the first and second of GF (p k ) By storing binary data indicative of field elements in the first and second hardware registers, carry will not be transferred from one group of data bits indicative of field coefficients to an adjacent group of data bits indicative of other field coefficients. The method of storing binary data representing field elements in accordance with multi-guard-bit notation is entirely similar except that one or more guard-bit positions are provided between adjacent groups of data bits representing field coefficients. .
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에 따라 사용될 수 있다.When p = 2 m −1, addition (ie, execution of GF_p_k_ADD) in GF (p k ) will be described with reference to FIGS. 18 and 19. In the case of p = 2 m −d, the method for p = 2 m −1 may be extended. Assume d> 1 and d are odd. Obviously 1 <d <2 m -1 can be assumed, because other p is exactly smaller than 5. Two typical ways of performing addition (two typical forms of executing GF_p_k_ADD) are two regimes of d values, namely 1) d≤ (2 m +1) / 3, and 2) (2 m +1 ) / 3 <d <2 m −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의 전형적인 실현을 표시한다.First, an exemplary method 1800 of executing GF_p_k_ADD at d ≦ (2 m +1) / 3 for the case of p = 2 m −d will be described with reference to FIG. 18. This description is applicable to both single-guard-bit notation and multi-guard-bit notation. Set Sp -d to 0, 1, ..., 2 m + d-1, and place each field coefficient of GF (p k ) as an element of set Sp -d . Of course, each integer mentioned in Sp- d has an equivalent binary string that is used to store the corresponding coefficient of the field element, as described above. The operation shown in FIG. 18 can be executed by a system such as the system 100 shown in FIG. In addition, in steps 301 and 303 illustrated in FIG. 3, in the same manner as described above, the first binary data representing the first field element of the GF (p k ) is stored in the first register (for example, the register 107 of FIG. 1). Assume that the second binary data stored at and representing the second field element has already been executed by the processor 105 such that the second binary data is stored in the second register (eg, register 109). The first and second binary data may be stored according to either single-guard-bit notation or multi-guard-bit notation. In other words, the method is the same in either case. The steps shown in FIG. 18 indicate a typical implementation of step 305 shown in FIG.
단계 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에서 더 이상의 설명은 필요 없다.Steps 1801, 1803 and 1807 are the same as steps 401, 403 and 407 shown in FIG. 4 for p = 2 m −1. The processing for determining the predetermined binary amounts M1 and M2 for the method shown in FIG. 18 is also the same as that for FIG. Of course, the exact form of M1 and M2 depends on whether single-guard-bit notation or multi-guard-bit notation has been used, as described above. Also, unlike the case of p = 2 m −1, where m bits are used to represent each coefficient, the m + 1 bits are used to represent each coefficient for p = 2 m −1. The masks M1 and M2 are thus modified in view of this consideration compared to the case of p = 2 m −1. However, the definition (prescription) of this quantity is the same for each function form of p in terms of where the zero / non-zero bits are located relative to the guard / non-guard bit position. Since this difference has been described, no further explanation is needed at steps 1801, 1803, and 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를 제공한다.In step 1805, step 1805 is similar to step 405 shown in FIG. 4, except that c2 amount is given by c2 = d * ((a + b) & M2) >> m instead of ((a + b) & M2) >> m. Do. That is, the amount c2 in step 1805 is a multiplication factor of "d" which does not exist in step 405 shown in FIG. Multiplication * by d is a multiplication normally performed with known processors (for example, normal integer multiplication or floating-point multiplication). Binary data representing the amount of d is stored in the rightmost bit position of a register with a zero elsewhere. In other words, if d is regarded as a vector quantity having a coefficient corresponding to a group of data bits associated with a field element, the vector quantity will be (0,0,0, ..., d). Thus, implementing the method 1800 shown in FIG. 18 provides third binary data c representing the sum of the first and second field elements of GF (p k ).
물론, 도 18에 나타낸 연산을 실행하는 순서는, 앞서 설명한 바와 같이, 도 18에 도시한 순서로부터 바꿀 수 있다. c량이 다음 관계식에 따라 결정되는 한, 다른 순서가 사용될 수 있다.Of course, the order of performing the calculation shown in FIG. 18 can be changed from the order shown in FIG. 18 as described above. Other orders may be used as long as c is determined by the following relationship.
(37) (37)
여기서, a, b, c, M1 및 M2는 상기한 바와 같다. 식 37은 d=1의 경우에 대해 식 13으로 감소된다.Here, a, b, c, M1 and M2 are as described above. Equation 37 is reduced to equation 13 for the case of d = 1.
집합 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의 경우에 대한 논의는 완료된다.It can be seen that the set Sp -d is closed under the operation shown in (37). Wherein a and b each include k groups of data bits a j and b j , respectively, j = 0, ..., k-1, and each a j and b j are Sp -d = 0, 1 described above. Display the group of data bits corresponding to the elements of ..., ..., 2m + d-1. In this case, with respect to each of the individual coefficients of the first and second field elements of GF (p k ), it can be seen that a j + b j ≤2 m + 1 + 2d-2 (this equation is a j + b j To reflect a comparison of integer values represented by. h (x) = (x mod 2 m ) + d (x div 2 m ) (corresponding to Equation 43 above) The function defined by d is localized at each interval of the form t2 m , (t + 1) 2 m -1. Monotonically increasing "sawtooth" function. Further, for y <2 m and z <z ', where z and z' are positive integers, h (z2 m + y) <h (z'2 m + y). For 0≤ (a j + b j ) ≤2 m + 1 + 2d-2, (a j + b j ) div 2 m ) ≤2 (This expression is equivalent to the integer value represented by a j + b j To reflect the comparison). Thus, finding h (a j + b j ) ≤ 2 m + d-1, for all a j + b j in the above intervals, h (2 m + 1 -1) (the highest of any "saw tooth" It is sufficient to find that both "peak") and h (2 m + 1 + 2d-2) (for the maximum possible input to h) are both limited above by 2 m + d-1. Evaluating h at these two points, the above limitation d≤2 m by +1/3 h (2 m + 1 -1 ) = 2 m + d-1 and h (2 m + 1 + 2d -2) = 4d-2≤2 m + d-1. Thus, Sp -4 is closed for Eq 36. For a discussion of the d≤2 m +1/3 and p = 2 m -d above with reference to FIG. 18 is completed.
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에 도시한 방법도 사용할 수 있다.An exemplary apparatus 1900 for executing GF_p_k_ADD at (2 m +1) / 3 <d ≦ 2 m −1 in the case of p = 2 m −d will be described with reference to FIG. 19. This description is applicable to both single-guard-bit notation and multi-guard-bit notation. When d is in the range given by (2 m + 1) / 3 <d ≦ 2 m −1, it may be difficult to find a set Sp of reasonable size that is closed under the above arithmetic operation. In this regard, a reasonable size means that at least two fields of field elements of GF (p k ) can be achieved using the method described in FIG. 18 to achieve the desired degree of parallelization and computational efficiency. This means that the set Sp is small enough that the coefficient can be represented in a single hardware register or that a sufficient number of coefficients of the field elements of GF (p k ) can be represented in a single hardware register. If such a set Sp of reasonable size can be found, the method shown in Fig. 18 may also be used when d is given by (2 m +1) / 3 <d ≦ 2 m −1.
합당한 크기의 집합 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에 대한 더 이상의 논의는 필요 없다.If a reasonable size set Sp is not available for d given as (2 m +1) / 3 <d ≦ 2 m −1, the typical method for GF_p_k_ADD shown in FIG. 19 is added in GF (p k ). Can be used to run In this situation, the set Sp is simply set to the set given by Sp = 0, 1, ..., 2 m −1 (ie independent d). Addition in GF (p k ) is performed according to a slightly modified modular abbreviation algorithm as reflected in FIG. 19. In particular, for convenience, write step 1901 as c = a + b, and the notation “c” is used in steps 1903 and 1905, and step 1901 shown in FIG. 19, except that reassignment of the amount of c occurs in step 1907. , 1903, 1905, and 1907 are the same as steps 1801, 1803, 1805, and 1807, respectively, shown in FIG. Further, the processing for determining M1 and M2 shown in FIG. 19 is the same as that shown in FIG. 18 (of course, the form of M1 and M2 depends on whether single-guard-bit notation or multi-guard-bit notation is used. ). Thus, no further discussion of steps 1901, 1903, 1905, and 1907 is necessary.
도 19에 도시한 방법 1900은 단계 1909와 관련하여 도 18에 도시한 방법 1800과 비교하여 수정된다. 단계 1909는 정수값을 표시하는 (결과 c의) 어떤 cj가 2m 보다 크거나 같은지를 결정하는 판정 단계이다. 답이 “예”일 경우, 현재의 c를 사용하여 단계 1903, 1905 및 1907을 반복한다. 다시 말해, 도 19에 도시한 방법(1900)은 식 38 및 39로 주어진 연산을 실행한다.The method 1900 shown in FIG. 19 is modified relative to the method 1800 shown in FIG. 18 with respect to step 1909. Step 1909 is a decision step of determining which c j (of result c), which represents an integer value, is greater than or equal to 2 m . If the answer is yes, repeat steps 1903, 1905, and 1907 using the current c. In other words, the method 1900 shown in FIG. 19 performs the operation given by equations 38 and 39.
(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개의 모듈러 약분이 필요하다는 것을 알 수 있다.It can be seen that c j ≥ 2 m is an abbreviation for determining whether the group c j of the data bits representing the integer value is larger than 2 m . Thus, as reflected in equations 38 and 39 above, the modular abbreviation is executed until each c j <2 m , which ensures that each c j of the result c is in the set Sp. Thus, the method involves subtracting multiples of p from each coefficient of the field elements of GF (p k ) in effect. Where each coefficient is an element of the set Sp. Since p <2 m and c> 0, each c j of the result c is (a j + b j ) mod p's actual notation, up to a multiple of p. Of course, modular medicine can take more time, and there is one problem: how much of the medicine represented by equation 39 is executed. Under the above method, it can be seen that the medicine is executed up to two times. In particular, it is assumed in equation 38 that c j is at least c j ≧ 2 m (otherwise nothing to see). Since a j and b j represent coefficients that are elements of Sp, c j ≥ 2 m + 1 -2 is true. In Eq 39, each run on the drug is a multiple of p, i.e., tp. Where t≥1. At this time, since c j −2p ≦ 2 m + 1-2- (2 m −d) = 2d-2 <2 m , it can be seen that up to two modular drugs are required.
식 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 경우에 대한 논의를 완료한다.It remains to show how to determine if c j ≧ 2 m in equation 39. These checks can be run for all c j in parallel as follows: Suppose c = (c k-1 , ..., c 0 ) maintains the binary result according to the fraction in equation 39. The above formula in Equation 39 needs to be executed again if j having 0 ≦ j ≦ k−1 such that c j ≧ 2 m . As M2 as defined above predetermined binary quantity (mask quantity), test (c & M2 j) Running ≠ 0 is true only if at least one of c j satisfy c j ≥2 m. Even if there are some other c j <2 m , the drug does not have any effect on that component (because c j div 2 m = 0 and there is no multiple of p subtracted there), so the medicine for that component is executed. There is nothing to do. This as referred to Fig. 19 (2 m +1) / 3 <d≤2 m -1 and p = 2 m -d completes the discussion of the case.
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'은 적절히 선택된다.)Addition in GF (p k ) (that is, execution of GF_p_k_ADD) for the case where p = 2 m + d will be described with reference to FIGS. 20 and 21. In the case of p = 2 m + d, the method for p = 2 m +1 can be extended. Assume d> 1 and d is odd. Two typical ways of performing addition (two typical forms of executing GF_p_k_ADD) are in two situations for the following d values: 1) d≤p / 6 and 2) p / 6 <d <2 m -1 may be used in accordance with (in the case of d≥p = 2 m -1 it is p = 2 m ± d 'simply by filling the material into p, can be treated by the method described above, where m' and d 'are appropriately selected do.)
먼저, 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의 전형적인 실현을 표시한다.First, a typical method 200 for executing GF_p_k_ADD at d ≦ p / 6 for p = 2 m + d will be described with reference to FIG. 20. This description is applicable to both single-guard-bit notation and multi-guard-bit notation. Here, the set Sp + d is given by 0, 1, ..., 2p- (d + 1), and each coefficient of the field element of GF (p k ) is for each coefficient not including the guard bit. The required storage bit is an element of the set Sp + d , where m + 2. The operation shown in FIG. 18 may be executed by a system such as system 100 shown in FIG. In addition, in steps 301 and 303 illustrated in FIG. 3, in the same manner as described above, the first binary data representing the first field element of the GF (p k ) is stored in the first register (for example, the register 107 of FIG. 1). Assume that the second binary data stored at and representing the second field element has already been executed by the processor 105 such that the second binary data is stored in the second register (eg, register 109). The first and second binary data may be stored according to either single-guard-bit notation or multi-guard-bit notation. In other words, the method is the same in either case. The steps shown in FIG. 20 indicate a typical implementation of step 305 shown in FIG.
단계 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를 제공한다.Steps 2001, 2003, 2005 and 2009 are the same as steps 1401, 1403, 1405 and 1409 shown in FIG. 14 for p = 2 m + 1. Further, the processing for determining the predetermined binary amounts M1 and M2 is also the same as that for FIG. 20 and for FIG. 4 (of course, the exact form of M1 and M2 is, as described above, single-guard-bit notation or It depends on which of the multi-guard-bit notations was used.) As described above, m + 2 bits are allocated to store each coefficient of the field element, which does not include guard bits. Thus, no further discussion of this step is necessary. In step 2007, except that c2 amount is given by c2 = P1-d * ((a + b) & M2) >> m instead of P1-((a + b) & M2) >> m, step 2007 is shown in FIG. Similar to step 1407. Where * is the above multiplication (e.g., normal integer multiplication or floating-point multiplication). That is, the amount c2 in step 2007 has a multiplication factor of "d" which is not present in step 1407 shown in FIG. In addition, P1 is, as shown in step 1407 of Figure 14. In step 2007 of FIG. 20, include a binary value representing the 2 m + d than 2 m +1. Thus, implementing the method 2000 shown in FIG. 20 provides third binary data c representing the sum of the first and second field elements of GF (p k ).
물론, 도 20에 나타낸 연산을 실행하는 순서는, 앞서 설명한 바와 같이, 도 18에 도시한 순서로부터 바꿀 수 있다. c량이 아래의 식 40에 나타낸 바와 같이 결정되는 한, 다른 방법이 사용될 수 있다. 여기서 a, b, c, M1, M2 및 P1은 도 14에서 이미 설명한 바와 같다.Of course, the order of performing the calculation shown in FIG. 20 can be changed from the order shown in FIG. 18 as described above. Other methods can be used as long as the amount of c is determined as shown in Equation 40 below. Here, a, b, c, M1, M2 and P1 are the same as already described with reference to FIG. 14.
(40) 40
이것은 d=1의 경우에 대해 식 36으로 감소된다. 이것으로 도 20을 참조한 d≤p/6 및 p=2m+d의 경우에 대한 논의는 완료된다. 본 기술 분야에서 통상의 지식을 가진 자라면, 상기한 바와 같이, p=2m-d, d>1의 경우와 유사한 방법을 사용하여 상기한 약분에 대해 Sp+d가 실제 닫히는 것을 증명할 수 있을 것이다.This is reduced to equation 36 for the case of d = 1. This completes the discussion of the case of d ≦ p / 6 and p = 2 m + d with reference to FIG. 20. One of ordinary skill in the art, as described above, can demonstrate that Sp + d is actually closed for the above drug using a method similar to the case of p = 2 m -d, d> 1. will be.
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에 도시한 방법도 사용할 수 있다.A typical apparatus 2100 for executing GF_p_k_ADD at p / 6 <d ≦ 2 m −1 in the case of p = 2 m + d will be described with reference to FIG. 21. This description is applicable to both single-guard-bit notation and multi-guard-bit notation. As described for the case where p = 2 m −d, when d is in the range given by p / 6 <d ≦ 2 m −1, it may be difficult to find a reasonable size set Sp that is closed under the above arithmetic operation. . However, to find such a set Sp of reasonable size, may also be used when d is given by p / 6 <d≤2 m -1 the method shown in Fig.
합당한 크기의 집합 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에 대한 더 이상의 논의는 필요 없다.If a reasonable sized set Sp is not available for d given p / 6 <d ≦ 2 m −1, then by repeating the medicament similar to that performed in equation 39 for the case of p = 2 m −d The typical method for GF_p_k_ADD shown in FIG. 21 can be used to perform addition in GF (p k ). However, it is not clear that coefficients already smaller than 2 m cannot be made larger by this medicine. In fact, this is the real case. Knowing that h '(0) = p> 0, consider the weak function h' (z) = (z mod 2 m ) + pd (z div 2 m ). Further, at intervals p, p + 1, ..., 2 m + 1 -1, the function h 'has a fixed point, i.e. h' (z) = z for all z in that interval. Therefore, the method of repeated medicine needs some modification. In this situation, the set Sp is replaced to give Sp = 0, 1, ..., 2 m + 1 −1 (ie independent d). Now, m + 1 bits are needed for the storage of each coefficient, which does not include guard-bits. Addition in GF (p k ) may be performed according to a slightly modified modular abbreviation algorithm as reflected in FIG. 21. Specifically, step 2101 is written using c = a + b, and the notation “c” is used in steps 2103-2107, and step 2101 shown in Fig. 20, except that reassignment of the amount of c occurs in step 2109, It can be seen that 2103, 2905, 2107 and 2109 are the same as steps 2101, 2103, 2105, 2107 and 2109 respectively shown in FIG. Also, the process of determining the amounts of M1, M2 and P1 shown in FIG. 21 is the same as that shown in FIG. 20 (of course, the exact form of M1, M2 and P1 is single-guard-bit notation or multi-guard-bit notation. Whichever was used). Thus, no further discussion of steps 2101, 2103, 2105, 2107 and 2109 is necessary.
그러나 도 21에 도시한 방법 2100은 단계 2111과 관련하여 도 20에 도시한 방법 1800과 비교하여 수정된다. 도 19를 참조하여 설명한 것과 마찬가지로, 단계 2111은 정수값을 표시하는 (결과 c의) 어떤 cj가 2m+1 보다 큰지를 결정하는 판정 단계이다. 답이 “예”일 경우, 단계 2103, 2105, 2107 및 2109를 반복한다. 다시 말해, 도 21에 도시한 방법(2100)은 식 41 및 42로 주어진 연산을 실행한다.However, the method 2100 shown in FIG. 21 is modified relative to the method 1800 shown in FIG. 20 with respect to step 2111. As described with reference to FIG. 19, step 2111 is a determination step of determining which c j (of result c) indicating an integer value is greater than 2 m + 1 . If the answer is yes, repeat steps 2103, 2105, 2107, and 2109. In other words, the method 2100 shown in FIG. 21 performs the operation given by equations 41 and 42.
(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 경우에 대한 논의를 완료한다.It can be seen that c j ≥ 2 m + 1 is an abbreviation for determining whether a group c j of data bits representing an integer value is larger than 2 m + 1 . Therefore, the execution of the loop represented by Equation 42 is similar to that described with reference to Equation 39 and FIG. 19. The difference is that in the previous case the check can be executed by checking whether (c & M2) is zero or not. In the present case the check can be performed by checking whether (c & M7) is zero or not, where M7 is except that bit m and generally the least significant non-zero bit of any given segment of M2 are reset to zero. Then, it is new binary amount like M2. (For example, the amount of M2 shown in d of FIG. 15 is a repetitive occurrence of (1,1,0,0) as indicated by reference numeral 1511, while the amount of M7 described above provides a guard bit at an appropriate position. Will be given by the repeated occurrence of (1,0,0,0) for the test of the present case.) Those of ordinary skill in the art will appreciate the above selection of Sp and the test in equation 42. It will be readily appreciated that the condition can be used to make all the components of c smaller than 2 m + 1 and eventually end the drug. This completes the discussion of the p / 6 <d <2 m −1 and p = 2 m + d cases with reference to FIG. 21.
도 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인 경우에 주로 적용될 수 있다는 것을 알게 될 것이다.In the discussion above with respect to FIGS. 18-21, it should be noted that the method shown herein may apply both single-guard-bit notation and multi-guard-bit notation. When multi-guard-bit notation is used, each of the first and second binary data representing the first and second field elements is each field element, rather than a single guard bit in the case for the single-guard-bit notation. It is only essential to know that it is stored as multiple guard bits located between adjacent groups of data bits that represent the coefficient of. Also, the process of determining the amounts of M1, M2 and P1 does not require modification to the multi-guard-bit notation. Of course, applying this process for multi-guard-bit notation will produce amounts of M1, M2, and P1 that are different from those that can be generated for single-guard-bit notation. In addition, separate descriptions for addition in GF (p k ) are provided for the case where p can be written as p = 2 m -d and p = 2 m + d, so that p = 2 m -d and p The above method for the case of = 2 m + d, where d is an integer greater than or equal to 3 and less than 2 m −1, m is an integer greater than or equal to 3 and p ≠ 2 N for any integer N It will be appreciated that it can be applied mainly in the case of ± 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 비트를 할당하도록 고려되어야 한다.Multiplication of the field elements in GF (p k ) for p = 2 m −d and p = 2 m + d yields p = 2 m − for both single-guard-bit notation and multi-guard-bit notation. This can be done using the typical form of GF_p_k_MUL already described with reference to Figures 9-12 for d. m + 1 bits (not including guard bits), p = 2 to m bits for the case of m -d contrary, p = 2 to display a coefficient of a field element of GF (p k) for the m -d It is only necessary to know that it is allocated to store each group of data bits. Of course, this difference should also apply to the form of the DLOG and ANTILOG tables. Where compression and decompression functions (COMP) and decompression functions (DECOMP) are available in multi-guard-bit notation, these functions use m + 1 bits rather than m bits to store each group of data bits representing field coefficients. Should be considered for assignment.
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에서의 사용을 위해 수정이 필요 없다.For p = 2 m -d, scalar multiplication (Eq. 23), doubling (Eq. 29-29), addition inversion (Eq. 30), multiplication inverse (Eq. 31) and exponent (Eq. 32) Various other operations may be performed in accordance with the present invention. In view of the foregoing discussion, one of ordinary skill in the art, using the above-described method, is able to make such a case for p = 2 m +1, p = 2 m -d, p = 2 m + d. It is clear that operations can also be executed. It is also clear that a hardware device as described with reference to Figures 6-8, 12, 16 and 17 can be used for the case of p = 2 m -d and p = 2 m + d. The multiplication apparatus 1200 shown in FIG. 12 does not actually need modification for use at p = 2 m −d and p = 2 m + d.
p=2m-d (d>1)의 경우에 적응하도록 도 6의 하드웨어 장치를 수정하기 위해, 주어진 d량에 의해 곱셈(통상의 곱셈)을 실행하는 승산 회로(multiplier circuit)를 우측-시프트 게이트(619)와 입력 연결 레지스터(603) 사이에, 즉 도 6에서 “**”로 표시한 위치에 삽입한다. 도 7에 대해, 동종의 승산 회로를 우측-시프트 게이트(719)와 입력 연결 레지스터(703) 사이에, 즉 도 7에서 “**”로 표시한 위치에 삽입한다. 전적으로 유사하게, p=2m+d, d>1의 일반적인 경우에 대해 수정하기 위해, 도 16 및 17에 도시한 장치를, 도면에서 “**”로 표시한 위치에 있는 동종의 승산 회로로써 각각 수정할 수 있다.To modify the hardware device of FIG. 6 to adapt to the case of p = 2 m -d (d> 1), right-shift a multiplier circuit that performs multiplication (normal multiplication) by a given amount of d. It is inserted between the gate 619 and the input connection register 603, that is, at the position indicated by "**" in FIG. For Fig. 7, a homogeneous multiplication circuit is inserted between the right-shift gate 719 and the input connection register 703, i.e. at the position indicated by " ** " Totally similarly, in order to correct for the general case of p = 2 m + d, d> 1, the device shown in Figs. 16 and 17 is shown as a homogeneous multiplication circuit at the position indicated by “**” in the figure. You can modify each one.
p=2m+d에 대한 상기한 효율 개선과 마찬가지로, p=2m+1, p=2m-d 및 p=2m+d에 대핸 방법에서도 효율 개선을 기대할 수 있다. 예를 들어, k=3에 대한 덧셈에서, 여기서 설명된 본 방법은 종래 방법(본 발명에서와 같이 병렬화를 포함하지 않음)보다 약 8배 더 빠르게 될 것이다. k=8 및 k=10에 대해, 여기서 설명한 본 방법은 종래 방법보다 약 15배 빠르게 될 것이다.p = 2 as with the above-mentioned efficiency for m + d, can be expected to improve the efficiency in the way daehaen p = 2 m +1, p = 2 m -d , and p = 2 m + d. For example, in addition to k = 3, the method described herein will be about 8 times faster than the conventional method (which does not include parallelism as in the present invention). For k = 8 and k = 10, the method described herein will be about 15 times faster than the conventional method.
비-소수 모듈러(non-prime moduli)의 병렬 덧셈Parallel addition of 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의 함수 형태에 대해 사용될 수 있다.As is evident in the art, the fact that p is a prime number is actually used in any case where p = 2 m ± d, d ≧ 1 with the k parallel addition module. While it is important to use decimal p for multiplication in finite fields (otherwise, the group is aperiodic and no constructor / log table can be found), the addition operation is well defined and entirely similar, even if p is not prime. . Thus, in another aspect of the present invention, the typical method described above for GF_p_k_ADD is k parallel addition modulo p for any p (not prime or prime) that is close to a power of two, i.e. for p = 2m ± d. Can be used to execute. Fully similarly, the above method can be used for different p function forms depending on the sign in front of d and the magnitude of d.
암호화 및 에러 정정을 포함하는 다른 양태Other Aspects Including Encryption and Error Correction
본 발명의 다른 양태에서, 상기한 방법은 에러 정정 장치와 에러 정정 방법에 사용될 수 있다. 에러 정정 코드의 목적은 전송 중에 에러에 의해 메시지가 방해를 받더라도 수신기가 원래 메시지를 재생할 수 있도록 하는 것이다. 이것은 메시지에 리던던시(redundancy)를 도입하여 실행한다. 본 기술 분야에 널리 알려진 바와 같이, 다수의 체크 방정식(check equation)이 에러-정정 코드에 이용된다. 메시지가 수신되었을 때, 수신기는 이러한 방정식에 따라 수신된 데이터를 체크하여 에러가 발생되었는지를 판정하고, 만일 그럴 경우, 에러를 판정할 수 있다. 에러-정정 코드를 정의하는 이러한 방정식에 따라, 때때로 다중 에러를 정정할 수 있다.In another aspect of the present invention, the above method can be used in an error correction apparatus and an error correction method. The purpose of the error correction code is to allow the receiver to reproduce the original message even if the message is interrupted by an error during transmission. This is done by introducing redundancy into the message. As is well known in the art, a number of check equations are used in the error-correction code. When a message is received, the receiver may check the received data according to this equation to determine if an error has occurred, and if so, determine the error. According to this equation defining the error-correction code, it is sometimes possible to correct multiple errors.
많은 경우에 코드/방정식은 유한 필드 산술을 사용하여 구성될 수 있다. 상기 코드는 형태 g=g0, g1,..., gN-1의 N-벌(tuples)(또는 벡터)로 구성될 것이며, 여기서 각 gi는 어떤 q에 대한 GF(q)에서의 원소이다. 모든 가능한 g 중에서 상대적으로 작은 집합이 유효 코드 워드(valid code word)로 될 수 있다. 즉, 모든 g가 허용된다면, 에러가 발생했는지의 여부를 말하는 것은 불가능하다.In many cases code / equations can be constructed using finite field arithmetic. The code will consist of N- tuples (or vectors) of the form g = g 0 , g 1 , ..., g N-1 , where each g i is in GF (q) for any q Is an element of. Of all the possible g, a relatively small set may be a valid code word. That is, if all g are allowed, it is impossible to tell whether or not an error has occurred.
통상, 각 메시지는 이러한 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)의 단일 계수가 하드웨어 레지스터에서 동작하는 비능률적인 종래의 방식으로 이진 유한 필드 또는 홀-표수 유한 필드 중 하나를 이용한다. 반면, 본 발명에서는, 단일 하드웨어 레지스터에 홀-표수 유한 필드의 다중 계수를 표시하는 이진 데이터를 저장하고, 병렬로 상기 다중 계수를 표시하는 이진 데이터를 처리함으로써, 유한 필드의 계수를 표시하는 데이터가 병렬로 높은 효율로 처리되는, 홀-표수 유한 필드를 포함하는 에러 정정을 실행하는 방법을 제공한다.Typically, each message is sent mapped to this N-valley. If a limited number of g i is lost, the receiver recovers g to retrieve the original message. Examples of such codes are known in the art, such as Reed-Solomon codes, BCH codes and Goppa codes, which are described in “ The Theory of Error Correcting Code by Fj MaxWilliams and NJA Sloane, Elsevier Science BV, Amsterdam, 1977 ”. have. As mentioned above, this code can be used for arithmetic operations on the Wuhan field. However, in the conventional implementation of such code, a single coefficient of GF (p k ) uses either a binary finite field or an odd-number finite field in an inefficient conventional manner in which it operates in a hardware register. On the other hand, in the present invention, data representing the coefficients of the finite field is stored by storing binary data representing the multiple coefficients of the odd-number finite field in a single hardware register and processing the binary data representing the multiple coefficients in parallel. A method of performing error correction involving odd-number finite fields, which is processed in parallel with high efficiency.
앞서 언급한 “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)로 구성될 것이다.As described previously in “ The Theory of Error Correcting Code, ” a conventional method of decoding a BCH code is described next. Field F = GF (q) is a field of q = p n elements, and w is denotes the multiplication order of q modulo N (ie, w is the minimum y such that q y = 1 mod N ). The element α in GF (q N ) is one of the primitive N-th roots of one. root of unity, where N is the smallest integer for α N = 1 in this field, where N = q w −1, which corresponds to the original BCH code, and N = that corresponds to the Reed-Solomon code. When q-1, an important special case occurs: The corresponding BCH code is any N-dimensional vector g = (g 0 , g with components in GF (q) satisfying the matrix-vector equation Hg T = 0. 1 , ..., g N-1 ).
(43) (43)
여기서 T는 전치를 표시하고 D는 1과 N-1 사이의 어떤 값이라고 가정한다. 이러한 설명은 좁은 의미의 BCH 코드에 관련되는 것으로, 가장 일반적인 형태는 아니다.Where T represents the transpose and D is some value between 1 and N-1. This description is related to the BCH code in a narrow sense and is not the most general form.
본 발명의 양태에서, 전형적인 에러-정정 장치(2200)가 도 22의 블록도에 도시한 바와 같이 제공된다. 상기 장치(2200)는, 에러 정정 코드의 허용된 코드 워드를 표시하고자 하는 신호를 수신하는 입력 소자(2201)(예를 들어, 입출력 소자일 수도 있음)와, 에러 정정을 위해 프로그램 된 처리부(2203)를 포함한다. 상기 장치(2200)는, 처리부(2203)에 의해 액세스될 수 있고(예를 들어, 처리부가 여기서 설명된 방법의 단계를 실행할 수 있도록 하는 컴퓨터 프로그램을 가져오기 위한 것임), 프로세서에 의해 제공되는 이진 데이터(예를 들어 계산 결과)를 저장할 수 있는 메모리도 포함한다. 상기 신호는 이진 데이터이거나, 입출력부(2201)에서 이진 데이터로 변환되는(예를 들어 맵핑 소자에 의한 맵핑) 아날로그 신호일 수 있다. 여기서 사용된 “허용된 코드 워드를 표시하고자 하는 이진 데이터”라는 말은 이러한 가능성 둘 다를 포함시키고자 하는 것이다.In an aspect of the present invention, a typical error-correction apparatus 2200 is provided as shown in the block diagram of FIG. The apparatus 2200 may include an input element 2201 (which may be an input / output element, for example) that receives a signal for displaying an allowed code word of an error correction code, and a processor 2203 programmed for error correction. ). The apparatus 2200 can be accessed by the processor 2203 (eg, to obtain a computer program that allows the processor to execute the steps of the methods described herein) and is provided by a processor. It also includes memory for storing data (for example, calculation results). The signal may be binary data or an analog signal that is converted into binary data by the input / output unit 2201 (for example, mapping by a mapping element). As used herein, the term "binary data to represent allowed code words" is intended to include both of these possibilities.
처리부(2203)는 여기서 설명한 방법을 실행하는, 어떤 적절한 처리부로 될 수 있고, 입출력부(22)는 입출력 데이터에 대한 어떤 적절한 인터페이스 또는 소자로 될 수 있다. 예를 들어, 처리부(2203)는 종래 컴퓨터의 처리부일 수 있고, 입출력 소자(2201)는 종래의 모뎀일 수 있다. 다른 예로서, 처리부(2203)는 이동전화기 또는 개인 휴대 단말과 같은 휴대형 소자의 처리부일 수 있고, 입출력 소자(2201)는 무선 송수신기일 수 있다. 다른 예로서, 처리부(2203)는 컴팩트 디스크(CD) 플레이어 또는 디지털 비디오 디스크(DVD) 플레이어의 처리부일 수 있고, 입출력 소자는 CD 또는 DVD에 의해 변조되는 레이저 빔으로부터 신호를 수신하고 해당 전기 신호를 출력하는 광신호 수신기일 수 있다.The processing unit 2203 may be any suitable processing unit that executes the method described herein, and the input / output unit 22 may be any suitable interface or element for input / output data. For example, the processing unit 2203 may be a processing unit of a conventional computer, and the input / output element 2201 may be a conventional modem. As another example, the processing unit 2203 may be a processing unit of a portable device such as a mobile phone or a personal portable terminal, and the input / output device 2201 may be a wireless transceiver. As another example, the processing unit 2203 may be a processing unit of a compact disc (CD) player or a digital video disc (DVD) player, and the input / output element receives a signal from a laser beam modulated by the CD or DVD and receives the corresponding electric signal. It may be an optical signal receiver for outputting.
처리부는 이진 데이터에서 에러를 정정하도록 프로그램 되고, 여기서 허용된 코드 워드는 GF(p l k)의 N-벌의 필드 원소이다. 유한 필드 GF(p l k)는 기저 필드 GF(pk)의 확장 필드이고, 여기서 p는 홀소수이고 GF(pk)의 필드 원소는 k 기저 계수를 포함한다. 이진 데이터의 일부는 데이터 비트의 k 그룹을 포함하고 GF(pk)의 필드 원소를 표시하며, 여기서 필드 GF(pk)는 다항식 기저 표기법에 따라 k 기저 계수를 가지며, 데이터 비트의 각 그룹은 k 기저 계수 중 해당하는 하나를 표시한다. 상기 이진 데이터의 일부는 레지스터에 저장되고, 처리부는, 예를 들어 앞서 설명한 산술 연산을 사용하여, 데이터 비트의 k 그룹이 병렬로 처리되도록 상기 이진 데이터의 일부를 처리한다. 이에 대해서는 아래에서 더욱 상세히 설명한다.The processor is programmed to correct errors in binary data, where the allowed code words are N-valley field elements of GF (p l k ). The finite field GF (p l k ) is an extension field of the base field GF (p k ), where p is an odd number and the field element of GF (p k ) contains the k basis coefficients. Part of the binary data comprises k groups of data bits, and indicates a field element of GF (p k), wherein the field GF (p k) having the k base coefficients in accordance with a polynomial basis notation, each group of data bits, k Displays the corresponding one of the base coefficients. A portion of the binary data is stored in a register, and the processing unit processes the portion of the binary data such that k groups of data bits are processed in parallel using, for example, the arithmetic operations described above. This will be described in more detail below.
특히, 에러-정정 장치(2200)는, 도 23에 도시한 전형적인 방법(2300)을 사용하여 본 발명에 따른 에러 정정을 위해 프로그램 될 수 있다. 예를 들어, 상기 방법(2300)은, 앞서 설명한 본 발명의 계산 방법을 식 50을 참조하여 상기 설명한 에러 정정에 대한 행렬 공식에 적용하는, BCH 코드를 디코딩하기 위해 실행될 수 있다. 상기 방법(2300)은 허용된 코드 워드를 표시하고자 하는 수신된 이진 데이터 g'=(g'0, g'1,..., g'N-1)에서 d/2 에러(때로는 더 많은 에러)를 정정할 수 있다.In particular, the error-correction apparatus 2200 may be programmed for error correction according to the present invention using the typical method 2300 shown in FIG. For example, the method 2300 may be executed to decode the BCH code, applying the calculation method of the present invention described above to the matrix formula for error correction described above with reference to equation 50. The method 2300 is based on the received binary data g '= (g' 0 , g ' 1 , ..., g' N-1 ), which attempts to indicate an allowed code word. ) Can be corrected.
먼저, 도 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 기저 계수 중 해당하는 하나를 표시한다.First, as in step 2301 of FIG. 23, the error-correction apparatus receives binary data for indicating an allowed code word of an error correction code, where the allowed code word is an N- number of GF (p l k ). Is a field element of, and p is an odd number. In other words, each allowed code word consists of N fields of GF (p l k ). Binary data may be received directly or may be converted from an analog signal as described above. In addition, each field element of GF (p l k ) may be considered to include the l primary coefficient according to the polynomial basis notation, where each major coefficient is a field of GF (p k ) with k basis coefficients. Element. Binary data to represent an allowed code word can be viewed as containing N collections of data bits, where each collection of data bits contains l segments of data bits, and each segment of data bits is l. Indicates one of the major coefficients. Further, each segment of data bits may be viewed as including a k group of data bits, where each group of data bits represents a corresponding one of the k basis coefficients.
단계 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로 둔다. 마지막으로, 편의를 위해 ηj=αj로 두며 여기서 αj는 α의 j제곱이다(필드에서 계산됨). 상기한 행렬 43과 관련하여, 신드롬 S는 다음 관계식에 따라 계산될 수 있다.As shown in step 2303, the error-correcting device 2200 calculates a syndrome based on the received binary data, where it corresponds to a given portion of the binary data (e.g., one of the l major coefficients, A segment of a given data bit) is stored in a register where k groups of data bits of the given portion of binary data are processed in parallel. In particular, for the example of the matrix formula described above (relative to the BCH code) with reference to equation 43, the syndrome can be calculated as follows. The transmitted binary data g = (g 0 , g 1 , ..., g N-1 ) (or the transmitted signal corresponding to this binary data) is binary data g '= (g' 0 , g ' 1 ,. .., g ' N-1 ). Set the error position in binary data g 'to its index j for g' j ≠ g j , and set the error value in GF (p l k ) to satisfy g ' j = g j + e j . Leave the value e j . Finally, for convenience, let η j = α j where α j is the j square of α (calculated in the field). In relation to the matrix 43 described above, the syndrome S can be calculated according to the following relationship.
(44) (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 그룹이 병렬로 처리되도록, 신드롬이 계산된다.Where S = (S 1 , S 2 , ..., S d-1 ). g 'component g of the' j is an element in GF (p l k), the syndrome entries S i is an element of GF (p Nl k), where the GF (p Nl k) is GF (p l k) Extension field. In the case of calculating syndrome S according to equation 44, an arithmetic operation must be performed in field GF (p k ). As noted above, each of the l segments of data bits includes k groups of data bits, and each group of data bits represents a corresponding one of the k basis coefficients. As reflected in step 2303, the syndrome is calculated such that the k groups of data bits stored in the registers are processed in parallel using, for example, the typical execution of GF_p_k_ADD and GF_p_k_MUL, as well as any other necessary operations described above.
다음으로, 단계 2305에 나타낸 바와 같이, 신드롬 S가 0과 같은지의 여부, 즉 S=0=(0, 0,..., 0)인지의 여부를 결정한다. S=0이면 에러가 발생하지 않고, 절차는 단계 2309로 건너 띄고, 여기서 처리될 데이터가 더 있는지의 여부를 판정한다. S≠0이면 절차는 단계 2307로 진행하고 여기서 에러가 검출된다.Next, as shown in step 2305, it is determined whether the syndrome S is equal to zero, that is, whether S = 0 = (0, 0, ..., 0). If S = 0 no error occurs and the procedure skips to step 2309, where it is determined whether there is more data to be processed. If S ≠ 0, the procedure proceeds to step 2307 where an error is detected.
단계 2307에 나타낸 바와 같이, 에러-정정 장치는 신드롬을 근거로 이진 데이터의 에러-포함 부분(error-containing portion)(예를 들어, 데이터 비트의 에러-포함 세그먼트)에서 에러를 검출하고, 이진 데이터의 에러-포함 부분의 데이터 비트의 k 그룹을 병렬로 처리하여 이진 데이터의 에러-포함 부분에서의 에러를 정정한다. 이러한 처리는 이진 데이터의 모든 에러-포함 부분에 대해 반복된다. 예를 들어, BCH 코드와 관련된 식 44의 행렬 공식과 관련하여, r 에러가 발생하는 것으로 가정하면, 아래의 식 45가 각 j에 대해 만족되어야 하고, 여기서 0≤j≤d-1 이다. GF(p l k)에서 일부 ei(에러값)에 대해As shown in step 2307, the error-correction apparatus detects an error in an error-containing portion of the binary data (e.g., an error-containing segment of data bits) based on the syndrome, and the binary data. Process k groups of data bits of the error-bearing portion of in parallel to correct errors in the error-bearing portion of binary data. This process is repeated for all error-bearing portions of binary data. For example, with respect to the matrix formula of equation 44 associated with the BCH code, assuming that an r error occurs, equation 45 below must be satisfied for each j, where 0 ≦ j ≦ d−1. For some e i (error values) in GF (p l k )
(45) (45)
이고, ηik는 집합 η0, ..., ηn-1(에러 위치)에 속한다.And η ik belong to the set η 0 , ..., η n-1 (error position).
또한, 이러한 예에 따라 에러값을 결정하는 경우에, 다음 식의 시스템이 τi값에 대해 유일한 해를 갖고 이러한 τi가 결정되어야 하도록 최대수 r이 결정되어야 한다(여기서 r은 g'에서 손상된 인덱스의 수).Further, when determining the error value according to this example, of the following equation system has a unique solution for the τ i values and the maximum number r must be determined, these τ i to be determined (here r is damaged in g ' Number of indexes).
(46) (46)
여기서 0≤j≤r-1 이다. 이것은, 예를 들어 본 기술 분야에 공지되어 있으며 앞서 언급한 “The Theory Of Error Correcting Codes"에 설명된, Berlekamp-Massey 알고리즘을 사용하여 달성할 수 있다. 이 때, 차수 r의 에러-로케이터(error-locator)가 성립될 수 있고, 이것은 아래의 식 47과 같은 형태를 갖는다.Where 0 ≦ j ≦ r−1. This can be achieved, for example, using the Berlekamp-Massey algorithm, which is known in the art and described above in “ The Theory Of Error Correcting Codes. ” At this time, an error-locator of order r -locator), which has the form
(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에 대한 전형적인 방법을 사용하여 실행할 수 있다.Where τ 0 = 1, which determines the error location. By equation 47, the given j (0≤j≤r-1) is the error position only if s (η j -1 ) = 0, which in turn equates each s (x) by Horner's evaluation rule for polynomials. The evaluation rules of Horner are known in the art and are described, for example, in the above-mentioned " Semiumerical Algorithms , Vol. 2 of The Art of Computer Programming ". Calculations include addition and multiplication of order r in GF (p l k ), which, as described above, provides a typical method for SUM (α, β), PRODUCT (α, β), GF_p_k_ADD and GF_p_k_MUL according to the present invention. Can be run using
이 때, 상기한 바와 같이 찾아진 η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 코드를 포함하는 에러 정정이 전형적인 처리에 대해 완료된다.At this time, η j found as described above is introduced into the equation defined by equation 45 to find the error value e i and solve it. For location j where no error occurs, the value e j is defined as e j = 0. Next, the error is corrected according to the relation g = g'-e, where e = (e 0 , e 1 , ..., e N-1 ). That is, for each j between 0 and N-1, the amount of g j is determined according to g j = g 'j -e j . Subsequent steps are accomplished by performing N subtraction in GF (p l k ). At this point, step 2307 is that error correction involving the BCH code is completed for typical processing.
도 23에 나타낸 단계 2309에서와 같이, 처리될 데이터가 더 있는가를 판정한다. 즉 허용된 코드 워드를 표시하기 위한 이진 데이터가 더 수신되고 처리되어야 하는지의 여부를 판정한다. 처리되어야 할 데이터가 더 있다면, 절차는 단계 2301로 되돌아간다. 처리될 데이터가 더 없다면 절차는 종료한다.As in step 2309 shown in Fig. 23, it is determined whether there is more data to be processed. That is, it is determined whether or not binary data for indicating an allowed code word should be received and processed. If there is more data to be processed, the procedure returns to step 2301. If there is no more data to be processed, the procedure ends.
본 발명의 다른 양태에서, 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호는, 여기서 알게 되는 바와 같은, 단일 레지스터에 다중 필드-원소 계수를 표시하는 이진 데이터를 저장하고 병렬로 그러한 이진 데이터를 처리하는 것에 대해서는 기재되어 있지 않다.In another aspect of the invention, the arithmetic methods of the invention described above, including but not limited to GF_p_k_ADD, GF_p_k_MUL, and typical methods for exponents, include, for example, cryptography in elliptic curves and cryptography in key exchange. Can be used as a law. Cryptography using elliptic curves is well known in the art. For example, a method of encrypting plaintext in an elliptic curve is described, for example, in US Pat. No. 6,307,935 (Method and apparatus for fast elliptic encryption with direct embedding), the entire contents of which are incorporated herein by reference. Included. Also described in US Pat. No. 6,122,736 (Key agreement and transport protocol with implicit signatures) for key agreement and transport protocols that can use elliptic curves, the entire contents of which are incorporated herein by reference. do. A public key protocol that can use an elliptic curve is also described in US Pat. No. 5,933,504 (Strengthened public key protocol), the entire contents of which are incorporated herein by reference. Also described in US Patent No. 5,159,632 (Method and apparatus for public key exchange in a cryptographic system) is described for carrying out a key exchange comprising an elliptic curve, the entire contents of which are incorporated herein by reference. However, US Pat. Nos. 6,307,935, 6,122736, 5,933,504 and 5,159,632 describe, as noted herein, storing binary data representing multiple field-element coefficients in a single register and processing such binary data in parallel. Not.
타원 곡선의 몇 가지 양태에 대해 설명한다. 유한 필드 F와 F에서의 두 원소 α 및 β에 대해서, F에 대한 타원 곡선이 다음 식을 만족하는 FxF에서 점(x,y)의 집합에서 (비공식적으로) 고려될 수 있다.Some aspects of the elliptic curve will be described. For two elements α and β in finite fields F and F, an elliptic curve for F can be considered (unofficially) in the set of points (x, y) at FxF satisfying the following equation.
(48) (48)
또한, 개념적으로 y축에서 “무한대로”높아지는 것으로 생각되는, 무한에서의 점 O가 있다. 이러한 점들은 그룹“덧셈”연산 하에서 아벨 그룹(abelian group)을 형성하며,ⓧ로 표시한다. 이러한 그룹 덧셈 연산은, 본 기술 분야에 공지된 바와 같이, 받침 필드(underlying field) F에서 산술 연산의 관점으로 정의된다. 따라서 본 발명에 따라, 받침 필드는 홀-표수 유한 필드 GF(pk)(또는 그 확장)로 되도록 선택될 수 있으며, GF_p_k_ADD 및 GF_p_k_MUL 및 지수를 포함하나 제한되지는 않는 상기한 전형적인 산술 방법은, 홀-표수 유한 필드 GF(pk)에 대한 타원-곡선 그룹을 실행하는 암호법의 계산에서 계산 효율을 증대시키는 데 사용될 수 있다.There is also a point O at infinity that is conceptually thought to be raised "indefinitely" on the y-axis. These points form an Abelian group under the group “add” operation, denoted by ⓧ. This group addition operation is defined in terms of arithmetic operations in the underlying field F, as known in the art. Thus, in accordance with the present invention, the backing field may be selected to be an odd-numbered finite field GF (p k ) (or an extension thereof), the typical arithmetic method described above including, but not limited to, GF_p_k_ADD and GF_p_k_MUL and exponents, It can be used to increase computational efficiency in the computation of cryptography that implements elliptic-curve groups for odd-number finite field GF (p k ).
예를 들어, g가 이러한 타원 곡선 상의 점이라면, g는 ⓧ 연산 하에서 x배인 자신과 결합되어, 다음과 같이 제공된다.For example, if g is a point on this elliptic curve, g is combined with itself x times under the power operation, and is given as:
(49) (49)
식 49의 연산은 일종의 지수와 같이 생각할 수 있으며, 여기서 z=gx 이다. 나머지 설명에서, g에 대해 x배로 동작하는 그 자신을 갖은 그룹 연산의 합성을 포괄적으로 gx로 표시한다. 상기 관계로부터, 이러한 연산이 유한 필드 곱셈, 또는 타원 곡선 점 덧셈(elliptic curve point addition)이면 항상 명백할 것이다. 따라서 타원 곡선의 경우, 이것은 앞서 언급된 이산 로그 문제의 특수한 경우를 발생시킨다. 현재의 기술에 의하면 이산 로그의 타원 곡선 버전을 다른 설정보다 더 풀기 어렵게 할 수 있는 것을 제시하고 있으므로, 암호법에 대해 특히 흥미를 끌고 있다.The operation of equation 49 can be thought of as an exponent, where z = gx. In the remainder of the description, the synthesis of a group operation with its own that operates x times for g is denoted by g x . From the above relationship, it will always be clear if this operation is finite field multiplication, or elliptic curve point addition. Thus, in the case of elliptic curves, this creates a special case of the discrete log problem mentioned above. The current technology is of particular interest for cryptography because it suggests that elliptic curve versions of discrete logs can be more difficult to solve than other settings.
본 발명의 양태에 따라, 도 24A에 도시한 전형적인 암호화 시스템과 같이, 암호화 시스템에서 사용되는 키 소스와 결합되는 키 소스 및 홀-표수 유한 필드 암호화부를 포함하는 암호화 장치가 제공된다. 상기 암호화 장치는 필드 GF(pk)(p는 홀소수)를 포함하는 암호화 계산을 실행하도록 구성되고, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 이용할 수 있다. 본 발명에 따른 전형적인 암호화 시스템에 대해 도 24A를 참조하여 설명한다.According to an aspect of the present invention, there is provided an encryption apparatus including a key source and an odd-number finite field encryption unit coupled with a key source used in the encryption system, such as the typical encryption system shown in Fig. 24A. The cryptographic apparatus is configured to perform an encryption calculation comprising the field GF (p k ) (p is an odd number) and may use single-guard-bit notation or multi-guard-bit notation. An exemplary encryption system according to the present invention is described with reference to FIG. 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)에 의해 제공되는 이진 데이터(예를 들어 계산 결과)를 저장할 수 있는 메모리도 포함할 수 있다.FIG. 24A is a functional block diagram illustrating an encryption system 2400, which illustrates an encryption system 2400 for a first encryption device 2401, a second encryption device 2403, and an insecure channel 2417. As shown in FIG. A first transceiver 2405 that transmits and receives ciphertext, and a second transceiver 2407 that transmits and receives cyphertext for unstable channel 2417. Assume that an eavesdropper 2419 can monitor communication for the unstable channel 2417. The first encryption device 2401 includes a first key source 2409 and a first odd-number finite-field encryption unit 2411 (hereinafter referred to as a first FFCU) that encrypts and decrypts a message. For example, one or both of the first key source 2409 and the first FFCU 2411 may be realized using one or more processing units of a portable element such as a conventional computer or mobile phone. In addition, the first encryption device 2401 can be accessed by the FFCU 2411 (to obtain a computer program that allows the FFCU 2411 to execute the steps of the encryption method described herein), and the FFCU 2411 It may also include a memory capable of storing binary data (e.g., calculation results) provided by < RTI ID = 0.0 >
제2 암호화 장치(2403)는 제2 키 소스(2413)와, 메시지를 암호화 및 해독하는 제2 홀-표수 유한-필드 암호화부(2415)(이하, 제2 FFCU라고 함)를 포함한다(여기서, “제1” 및 “제2”는 제1 암호화 장치(2401)와 제2 암호화 장치(2403)의 구분을 위해서만 사용된다). The second encryption device 2403 includes a second key source 2413 and a second odd-number finite-field encryption unit 2415 (hereafter referred to as a second FFCU) for encrypting and decrypting messages. , &Quot; first " and " second " are used only to distinguish the first encryption device 2401 from the second encryption device 2403).
예를 들어, 통상적인 컴퓨터 또는 이동전화기와 같은 휴대형 소자의 하나 이상의 처리부를 사용하여, 제2 키 소스(2413)와 제2 FFCU(2415) 둘 중 하나 또는 둘 다가 실현될 수 있다. 또한, 제2 암호화 장치(2403)는 FFCU(2415)에 의해 액세스될 수 있고(여기서 설명된 암호화 방법의 단계들을 FFCU(2415)가 실행할 수 있게 하는 컴퓨터 프로그램을 가져오기 위한 것임), FFCU(2415)에 의해 제공되는 이진 데이터(예를 들어 계산 결과)를 저장할 수 있는 메모리도 포함할 수 있다. 또한, 제1 및 제2 키 소스(2409 및 2413)는 난수 발생기(random number generator)를 포함할 수도 있다. For example, one or both of the second key source 2413 and the second FFCU 2415 may be realized using one or more processing units of a portable element such as a conventional computer or mobile phone. In addition, the second encryption device 2403 can be accessed by the FFCU 2415 (to obtain a computer program that allows the FFCU 2415 to execute the steps of the encryption method described herein), and the FFCU 2415 It may also include a memory capable of storing binary data (e.g., calculation results) provided by < RTI ID = 0.0 > In addition, the first and second key sources 2409 and 2413 may include a 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).As described above, the first encryption apparatus 2401 includes a first key source 2409 and a first odd-number finite-field encryption unit (FFCU) 2411 coupled with the key source. In one aspect of the invention, the FFCU 2411 (or FFCU 2415) may be configured to perform the steps of the typical encryption method 2450 shown in the flow chart of FIG. 24B. The method 2450 stores binary data representing at least a portion of the field elements of the odd-number finite field GF (p k ) in a register (e.g., an internal register of the processing portion used to realize FFCU 2411). Where p is an odd number (step 2451). The field elements contain k coefficients according to polynomial-based notation, and the binary data includes multiple groups of data bits, where each group of data bits represents an associated one of the k coefficients. The method includes multiple groups processing binary data according to an encryption algorithm such that data bits are processed in parallel (step 2453).
도 24A에 도시한 암호화 시스템(2400)의 전형적인 연산과, 도 24B에 도시된 전형적인 암호화 방법(2450)과 관련하여, 추가적으로 상세히 설명한다. 이러한 설명은 메시지가 제1 암호화 장치(2401)로부터 송신되고 제2 암호화 장치(2403)에 의해 수신되는 경우에 맞추어질 것이나, 상기 설명은 메시지가 제2 암호화 장치(2403)에서 시작되고 제1 암호화 장치(2401)에 의해 수신되는 상황에도 동일하게 적용할 수 있다.Regarding the typical operation of the encryption system 2400 shown in FIG. 24A and the typical encryption method 2450 shown in FIG. 24B, further details will be described. This description will be tailored if the message is sent from the first cryptographic device 2401 and received by the second cryptographic device 2403, but the above description begins with the second cryptographic device 2403 and the first encryption. The same applies to the situation received by the device 2401.
제1 교신기(converser) 및 제2 교신기 각각은 보안키(secure key)를 가진다. 한 양태에서, 본 발명에 따른 키 교환에 의해 보안키가 생성될 수 있다. 이 점에 있어서, 상기한 이진 데이터는 키 데이터가 될 수 있고, 상기한 암호화 알고리즘은 도 25를 참조하여 아래에서 설명하는 바와 같은 키 교환 알고리즘이 될 수 있다. 그러므로 보안키는 불안전 채널(2417)을 통해 교환될 수 있다. 이와는 달리, 전형적인 다른 양태에서, 교신기 각각은 쌍의 공개키/사설키(public key/private key)를 가질 수 있고, 여기서 각 교신기의 공개키는 공공 채널(public channel)에 대해 다른 교신기를 이용할 수 있게 한다. 이와 관련하여 상기한 이진 데이터는 메시지 데이터로 될 수 있고, 상기한 암호화 알고리즘은, 도 26을 참조하여 아래에 설명하는 바와 같이, 메시지 데이터를 암호화/해독하는데 사용되는 공개키 암호화 알고리즘이 될 수 있다.Each of the first communicator and the second communicator has a secure key. In one aspect, a security key can be generated by key exchange in accordance with the present invention. In this regard, the binary data may be key data, and the encryption algorithm may be a key exchange algorithm as described below with reference to FIG. Therefore, the security key can be exchanged through the insecure channel 2417. Alternatively, in another typical aspect, each of the communicators may have a pair of public key / private key, where each public machine's public key is a different communicator for the public channel. Make it available. In this regard, the binary data may be message data, and the encryption algorithm may be a public key encryption algorithm used to encrypt / decrypt message data, as described below with reference to FIG. 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)에 따라 실현될 수 있는 적절한 암호화 알고리즘이 될 수 있다.As shown in FIG. 24A, a security key generated by a key exchange or a public key may be provided from the key source 2409 to the first FFCU 2411 of the first encryption device 2401. Plaintext P is provided to the first FFCU 2411, and using the appropriate encryption algorithm, the plaintext is encrypted by the first FFCU 2411 to produce a ciphertext (C). The encryption algorithm is matched in advance by the first and second communicators, and the key from the key source 2409 can be configured appropriately for the encryption algorithm. If the key exchange according to the present invention is used to generate a security key, the encryption algorithm used to encrypt the plaintext may be a suitable encryption algorithm, for example DES or RSA. If a pair of public / private keys are used, an encryption algorithm for encrypting the plaintext may be used for public-key encryption or the method 2450 shown in FIG. 24B as described below with reference to FIGS. 26, 27, and 28. It can be a suitable encryption algorithm that can be realized accordingly.
불안전 채널(2417)을 통해 사이퍼텍스트(C)를 송수신기92407)로 송신하는 송수신기(2405)(예를 들어, 네트워크 인터페이스, 모뎀 또는 무선 송신/수신기)에 사이퍼텍스트(C)가 제공된다.Cyphertext C is provided to a transceiver 2405 (eg, a network interface, modem, or wireless transmitter / receiver) that transmits cyphertext C to transceiver 92407 over unsafe channel 2417.
상기 사이퍼텍스트는 제2 암호화 장치(2403)의 제2 FFCU(2415)로 제공된다. 제1 및 제2 교신기에 의해 일치된 암호화 알고리즘에 대응하는 해독 알고리즘에 따라, 제2 FFCU(2415)는 상기 사이퍼텍스트를 해독한다. 상기 해독 알고리즘은 해독과 관련된 키 소스(2413)로부터의 키를 이용한다. 상기 키는, 예를 들어, 키 교환을 사용하여 생성되는 키이거나, 암호화에 사용된 공개키에 대응하는 사설키 이다. 도 24A 및 23B와 관련된 본 발명에 따른 추가의 전형적인 양태에 대해 설명한다.The cyphertext is provided to the second FFCU 2415 of the second encryption device 2403. According to the decryption algorithm corresponding to the encryption algorithm matched by the first and second communicators, the second FFCU 2415 decrypts the ciphertext. The decryption algorithm uses a key from the key source 2413 associated with the decryption. The key is, for example, a key generated using a key exchange or a private key corresponding to the public key used for encryption. Further exemplary embodiments in accordance with the present invention in conjunction with FIGS. 24A and 23B are described.
본 발명의 한 양태에서, 레지스터에 저장된 이진 데이터는 모든 k 계수 필드 원소를 표시한다. 또한, 적어도 하나의 가드 비트가 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치하고, 데이터 비트의 각 그룹은 해당하는 적어도 하나의 가드 비트에 의해 데이터 비트의 인접 그룹으로부터 분리되도록, 데이터 비트의 다수 그룹을 레지스터에 저장할 수 있다. 하나의 가드 비트(단일-가드-비트 표기법) 또는 다중 가드 비트(다중-가드-비트 표기법)는 데이터 비트의 각 그룹의 최상위 비트에 인접하게 위치할 수 있다. 영의 초기값이 적어도 하나의 가드 비트 각각에 할당될 수 있다.In one aspect of the invention, binary data stored in a register represents all k coefficient field elements. Further, multiple groups of data bits such that at least one guard bit is located adjacent to the most significant bit of each group of data bits, and each group of data bits is separated from an adjacent group of data bits by the corresponding at least one guard bit. Can be stored in a register. One guard bit (single-guard-bit notation) or multiple guard bits (multi-guard-bit notation) may be located adjacent to the most significant bit of each group of data bits. An initial value of zero may be assigned to each of the at least one guard bit.
본 발명의 한 양태에서, 암호화 장치(2401)( 및/또는 2403)는, 홀-표수 유한 필드 GF(pk)를 포함하는 계산을 사용하여, 암호화 방법(2450)의 일례로서, 키 교환을 실행할 수 있다. 이러한 키 교환은 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 사용하여 실행할 수 있다. 예를 들어 암호화 시스템(2400)을 사용하여 실행되는, 본 발명에 따른 키 교환의 전형적인 방법에 대해 도 24A 및 25를 참조하여 설명한다.In one aspect of the present invention, cryptographic apparatus 2401 (and / or 2403) uses a calculation comprising an odd-number finite field GF (p k ) to perform key exchange as an example of cryptographic method 2450. You can run This key exchange can be performed using single-guard-bit notation or multi-guard-bit notation. An exemplary method of key exchange according to the present invention, which is implemented using, for example, encryption system 2400, is described with reference to FIGS. 24A and 25. FIG.
제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에 설명되어 있다.The first communicator with the first cryptographic device 2401 and the second communicator with the second cryptographic device 2403 want to communicate securely over the unsafe channel 2417 so that the eavesdropper cannot decrypt the transmission. Thus, the first and second communicators must first match for encryption keys, such as authentication. Such a key can be generated using Diffie-Hellman key exchange that is adapted for the finite-field for GF (p k ) according to the present invention. Conventional Diffie-Hellman key exchanges are described in US Pat. No. 4,200,770 to Cryptographic apparatus and method, the entire contents of which are incorporated herein by reference. Also, as noted above, conventional key exchange for elliptic curves is described in US Pat. No. 5,159,632, which is already incorporated herein.
제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|로 표기할 수 있다(그룹의 크기). 이와 관련하여 충분한 보안성이란 이산 대수 문제가 다루기 어렵다는 점(즉, 계산적으로 실행 불가능함)에서 지수가 안전하다는 것을 의미한다.The first and second communicators match for g, where g is a point on an elliptic curve for an element of a finite field or F, and F is an extension of the hole-index finite field GF (p k ) or GF (p k ) Field, p is odd. In practice, g produces a group that performs the calculation, i. For example, if g is selected as the point on the elliptic curve for F, the group can be viewed as an elliptic curve group defined for F. If g is selected as an element of F, the group can be viewed as a conventional multiplication group for the finite field F. In either case, the amount of g should be chosen such that the minimum integer x (where g x = 1) is large enough to provide sufficient security (“1” is the identity element in the group). For example, this binary notation of integer x requires that the computational capacity of current generation processors be at least 160 bits in size. This minimum integer (x) can be written as | G | (size of the group). Sufficient security in this regard means that the exponent is safe in that discrete algebraic problems are difficult to deal with (ie, computationally impractical).
키를 생성하기 위해, 제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)의 원소인 l·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 기저 계수를 포함한다.To generate the key, the number xA is generated (step 2501) by the key source 2409 of the first encryption unit 2401 coupled to the first communicator and provided to the first FFCU 2411. As is commonly known in the art, the number xA can be, for example, a randomly or pseudorandomly generated integer. The number xA is not intended to be shared with other communicators and in this respect can be considered a password. In this context, integers may be understood to include both integers stored as floating-point decimals, as well as integers stored as integers. The first FFCU 2411 generates yA and sends it through the unsafe channel 2417 to the second encryption unit 2403 coupled with the second communicator (where yA = g xA (step 2503)). As noted above, g can be an element of a finite field F or a point on an elliptic curve for F, where F is an extension of the hole-index finite field GF (p k ) or GF (p k ), and p is a hole Prime number. The amount of g includes a plurality of first basis coefficients, where the first basis coefficient is an element of GF (p). For example, if g is selected as an element of GF (· p k ), g includes the k first basis coefficient which is an element of GF (p). If g is selected as an element of the extended field GF (p l k ), g includes the l · k first basis coefficient which is an element of GF (p). If g is chosen as the point on the elliptic curve for GF (p k ), g contains the 2 · k first basis coefficients, which are elements of GF (p), which are both elements of GF (p k ) Because it is represented by a pair of quantities. Similarly, if g is selected as the point on the elliptic curve for GF (p l k ), g includes the 2 · l · k basis coefficient which is an element of GF (p).
제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 데이터 비트의 다중 그룹을 저장할 수 있다.Storing the first group of first data bits indicative of at least some of the plurality of first basis coefficients of g in the first register and processing the multiple groups of first data bits in parallel to produce yA, thereby providing a first FFCU ( 2411 executes the calculation of yA (step 2503). At least one first guard bit is located adjacent to the most significant bit of each group of first data bits, and each group of first data bits is from an adjacent group of first data bits by at least one first guard bit corresponding thereto. To be separated, multiple groups of first data bits may be stored in the first register. The first guard bit may be located adjacent to the most significant bit of each group of first data bits (ie, single-guard-bit notation), or multiple first guard bits may be the most significant bit of each group of first data bits. It may be located adjacent to (ie, multi-guard-bit notation). An initial value of zero is assigned to each first guard bit. Calculation of yA can be performed using the exponential function mentioned in equation 32 so that multiple groups of first data bits are processed in parallel in the manner described above. Equation 32 has been described with respect to p in the form of p = 2 m −1, but as described above, Equation 32 is also applicable to p in the form of p = 2 m +1 and p = 2 m ± d. Depending on the hardware register size and the number of first base coefficients that g includes, it is possible to store multiple groups of first data bits representing all base coefficients of g in a single register.
마찬가지로, 번호 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의 계산을 실행할 수 있다.Similarly, the number xB (e.g., a randomly or pseudorandomly generated integer) is independently generated by the second key source 2413 of the second encrypting unit 2403 coupled to the second communicator, so that the second Provided to FFCU 2415. The number xB is not intended to be shared with other communicators, and in this respect can be considered a password. The second FFCU 2415 calculates yB and sends yB = g xB to the first encryption unit 2401 through the unsafe channel 2417. Multiple of first data bits representing at least some of g's multiple first basis coefficients in either single-guard-bit notation or multi-guard-bit notation such that multiple groups of data bits are processed in parallel in the manner described above. By storing the group in a register and using the exponential function mentioned in equation 32, the second FFCU 2415 can perform the calculation of 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 키 교환을 적응시킴으로써, 본 발명은 종래 방법에 비해 계산 효율을 증가시켜 주고, 이것은 종래 방법에 비해 증가된 속도를 나타내거나, 동일한 계산 노력에 대해 증가된 보안성을 나타낼 수 있다.The first FFCU 2411 receives an amount of yB, where yB includes a plurality of second basis coefficients, and the second basis coefficients are elements of GF (p) (step 2505). The FFCU 2411 stores multiple groups of second data bits indicative of at least some of the plurality of second basis coefficients of yB in a second register, and processes multiple groups of second data bits in parallel so that K = (yB xA is calculated (step 2507). The second FFCU 2415 calculates the same value K in accordance with K = (yB) xA . This calculation can also be performed using the exponential function mentioned in equation 32, where multiple groups of data bits representing the basis coefficients (elements of GF (p)) of yB and yA are processed in parallel, respectively. Under the above assumption, only the first and second communicators calculate K, and the first and second communicators can use K (or a function thereof) as a key. By adapting the above described Diffie-Hellman key exchange to another group defined for GF (p k ) using elliptic curves or single-guard-bit notation or multi-guard-bit notation, the present invention provides a Compared to the conventional method, this may result in increased computational efficiency, or increased security for the same computational effort.
상기한 키 교환 알고리즘에 따라 보안키 K를 생성하여, 제1 및 제2 교신기는 상기 키를 제1 및 제2 FFCU(2411 및 2415)와 각각 결합하여 이용함으로써 교환된 메시지를 암호화 및 해독한다. 이와 관련된 암호화/해독 알고리즘은, 예를 들어 본 기술 분야에 공지된 RSA 또는 DES와 같은 종래의 암호화 방법이나 어떤 다른 적절한 암호화 알고리즘이 될 수 있다.By generating a security key K in accordance with the key exchange algorithm described above, the first and second communicators use the key in combination with the first and second FFCUs 2411 and 2415 to encrypt and decrypt the exchanged messages. The encryption / decryption algorithm in this regard may be, for example, a conventional encryption method such as RSA or DES known in the art or any other suitable encryption algorithm.
제1 암호화 장치(2401) 및 제2 암호화 장치(2403)는 유한-필드 암호화부 및 키 소스를 포함하는 것으로 각각 설명되었다. 제1 암호화 장치(2401)의 제1 유한-필드 암호화부(2411)와 제1 키 소스(2409)는 메모리와, 메모리에 결합된 처리부를 사용하여 실현할 수 있다. 다시 말해, 제1 암호화 장치(2410)는 메모리와, 메모리와 결합된 처리부를 포함할 수 있고, 여기서 처리부는 제1 암호화부에 대한 상기한 단계를 실행하도록 구성될 수 있다. 마찬가지로, 제2 암호화 장치는 메모리와, 메모리와 결합된 처리부를 포함할 수 있고, 여기서 제2 암호화 장치의 처리부는 제2 암호화부에 대한 상기한 단계를 실행하도록 구성될 수 있다.The first encryption device 2401 and the second encryption device 2403 have been described as including finite-field encryption units and key sources, respectively. The first finite-field encryption unit 2411 and the first key source 2409 of the first encryption apparatus 2401 may be realized using a memory and a processing unit coupled to the memory. In other words, the first encryption apparatus 2410 may include a memory and a processing unit coupled with the memory, where the processing unit may be configured to execute the above steps for the first encryption unit. Similarly, the second encryption device may comprise a memory and a processing unit coupled with the memory, where the processing unit of the second encryption device may be configured to perform the above steps for the second encryption unit.
물론, 앞서 설명한 본 발명의 전형적인 양태는, 필드 원소의 일부 또는 전체 필드 원소를 단일 레지스터에 저장하는(또는 F에 대한 타원 곡선 상의 점을 표시하는 일부 또는 전체량을 단일 레지스터에 저장), 단일 또는 다중 가드 비트를 이용하는 것을 포함하되 이에 제한되지 않아서, 도 25에 도시한 전형적인 방법(2500)에 p의 다양한 함수 형태에 대한 선택 등을 적용시킬 수 있다. Of course, a typical aspect of the present invention described above is to store some or all of the field elements in a single register (or store some or all of the amounts representing points on an elliptic curve for F in a single register), single or The use of multiple guard bits may include, but is not limited to, selection of various functional forms of p, etc., in the exemplary method 2500 shown in FIG.
본 발명의 다른 양태에서, 암호화 방법(2450)의 다른 예로서 공개키 암호화 방법이 제공된다. 본 발명에 따른 공개키 암호화(2600)의 전형적인 방법에 대해 도 24A 및 26을 참조하여 설명한다. 상기 전형적인 방법(2600)은 본 발명에 따른 ElGamal 공개키 암호화 및 해독의 적응에 대응한다. 도 24A에 도시한 각 암호화 장치(2401 및 2403)는 메모리와, 메모리에 결합된 처리부를 사용하여 실현할 수 있고, 여기서 각 처리부는 해당 암호화 장치와 관련된 단계를 실행한다.In another aspect of the present invention, a public key encryption method is provided as another example of the encryption method 2450. An exemplary method of public key encryption 2600 in accordance with the present invention is described with reference to FIGS. 24A and 26. The typical method 2600 corresponds to the adaptation of ElGamal public key encryption and decryption according to the present invention. Each of the encryption apparatuses 2401 and 2403 shown in Fig. 24A can be realized using a memory and a processing unit coupled to the memory, where each processing unit executes steps associated with that encryption apparatus.
상기 전형적인 방법(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량(사설키)을 비밀로 유지하게 할 작정이다.In the typical method 2600, the second communicator obtains the public key yA associated with the first communicator, where yA = g xA and xA is the private key of the first communicator (step 2601). For example, the second communicator may receive a transmission including the public key and the quantity of the first communicator, or the second communicator may use the quantity from a directory in which the public key and the information of the first communicator are published. You can look up. The amount of g is an element of the finite field F or a point on an elliptic curve for F, where F is an odd-number finite field GF (p k ) or an extended field of GF (p k ), and p is an odd number. For the F to be used and for a particular choice as to whether an elliptic curve is used or whether the first communicator can publish this information in a list according to the public key yA and the amount, the first and second communicators can match in advance. have. The yA amount includes a plurality of first basis coefficients, the amount of g includes a plurality of second basis coefficients, and the first and second basis coefficients are elements of GF (p). The first communicator generates the public key yA = g xA using the first encryption apparatus 2401. As can be commonly understood in the art, the private key xA of the first communicator can be a random or pseudo randomly generated integer and is not intended to be shared with other communicators. In this regard, the FFCU 2411 associated with the first communicator can store multiple groups of data bits representing coefficients of g in registers, combined with single-guard-bit notation or multi-guard-bit notation. The exponential operation mentioned in Eq. 32 can be used to process yA by processing multiple groups of data bits in parallel. As described above, the public key yA of the first communicator may be disclosed in the list, but the first communicator is intended to keep the xA amount (private key) secret.
제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에 대한 타원 곡선 상의 점인 경우)을 참조하여 아래에서 설명한다.The second communicator generates a number r (e.g., uses a random number generator or pseudo random number generator, which may be included in the key source 2413), and uses the FFCU 2415 (e.g., a processing unit) to pair (u, v) = (g r , f -1 (P) * (yA) r ), where P represents the plaintext message in the plaintext message set, and f is the vector for F in the plaintext message set. A mapping function that maps at least a portion of the space, and * denotes an appropriate binary operation in vector space for F (step 2603). For further explanation regarding the vector space and operation * for the mapping functions f, F, see FIG. 27 (if g is an element of f) and FIG. 28 (if g is a point on an elliptic curve for F) below. Explain.
본 기술 분야에서 통상 이해될 수 있는 사항으로서, 번호 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)으로 표기된다.As generally understood in the art, the number r may be an integer generated randomly or pseudorandomly. The number r is not intended to be shared with other communicators, and in this respect can be considered a password. To calculate the amount of v, multiple groups of first data bits representing at least a portion of the plurality of first basis coefficients of y A are stored in a first register and processed in parallel. At least one first guard bit is located adjacent to the most significant bit of each group of first data bits, and each group of first data bits from an adjacent group of first data bits is defined by the corresponding at least one first guard bit. To be separated, multiple groups of first data bits can be stored in the first resist. In other words, either single-guard-bit notation or multi-guard-bit notation can be used. An initial value of zero may be assigned to each first guard bit. When g is selected as an element of F, the exponent of yA may be performed according to Equation 32 described above. If g is selected as the point on the elliptic curve for F, then (yA) the exponent associated with r and g xA is denoted by r-fold (or xA -fold) elliptic-curve point addition. do.
제1 및 제2 교신기는 그들간의 통신에서 사용될 플레인텍스트 메시지의 집합에 대해 미리 일치한다. 함수 f는 F에 대한 벡터 공간의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 맵핑 함수이고, 제1 및 제2 교신기는 맵핑 함수 f에 대해 미리 일치한다. 예를 들어, 플레인텍스트 메시지 집합은 워드, 문장 및/또는 개별 문자로 구성될 수 있고, 각 플레인텍스트 메시지는 정수로 인코딩 될 수 있다.The first and second communicators match in advance for the set of plaintext messages to be used in the communication between them. The function f is a mapping function that maps at least a portion of the vector space for F to a plaintext message set, and the first and second communicators match in advance for the mapping function f. For example, a plaintext message set may consist of words, sentences, and / or individual characters, and each plaintext message may be encoded as an integer.
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에 대한 벡터 공간의 일부만을 플레인텍스트 메시지 집합에 맵핑하는 데 충분할 수 있다.The amount of g will create a group in which encryption calculations are performed, the nature of the group depends on the choice of g. It will also be appreciated by one of ordinary skill in the art that the choice of g (or group) also affects the dimension of the vector space for F. The characteristics of the group also affect how the exponent is performed in step 2603 and affect the choice of binary operation *. For example, the group generated by g may be a finite field F, in which case the vector space becomes a one-dimensional vector space corresponding to F, and the operation * is a multiplication in F. Alternatively, the group generated by g may be a subgroup of the finite field F, in which case the vector space becomes a one-dimensional vector space corresponding to F, and * is again a multiplication in F. Alternatively, the group generated by g may be an elliptic curve group for F, and the operation * is an elliptic-curve point addition or component unit in FxF, as described in detail with reference to FIG. wise) multiplication. In the latter case, the vector space for F can be chosen according to two options. In a first choice, the vector space for F may be a two-dimensional vector space corresponding to FxF, where "x" denotes a Cartesian product. In a second choice, the vector space may be a three-dimensional vector space for F, in which projective coordinates are used in relation to the elliptic curve groups known in the art. To the extent that the group created by g can be made smaller than any of the vector spaces described above, f may be sufficient to map only a portion of the vector space for F to a set of plaintext messages.
그러므로 g에 의해 생성된 그룹의 크기가 플레인텍스트 메시지 집합과 같거나 더 크게 되도록 g량을 선택해야 한다. 또한, 공개적으로 이용할 수 있다고 가정하는 g량 및 yA는, yA 및 g로부터 xA를 결정하는 것이 계산적으로 불가능하게 되도록 선택되는 것으로 가정한다. 보안성과 g에 의해 생성된 그룹의 크기 사이의 관계를 포함하는 다른 고려는, 종래에 공개된 ElGamal 공개키 암호시스템의 속성의 관점에서 이 기술 분야에서는 명백한 것으로서, 예를 들어 앞서 언급한 Handbook of Applied Cryptography에 설명되어 있다. 예를 들어, 종래의 ElGamal 공개키 암호시스템에 이용되는 그룹의 크기를 선택하는 방법은 본 기술 분야에 공지되어 있다. 이와는 달리, 생성자의 주어진 선택을 근거로 그룹의 크기를 근사화하는 방법도 본 기술 분야에 공지되어 있다. 이러한 양태는 본 발명에 따른 상기한 방법(2600)에도 적용할 수 있다.Therefore, the amount of g should be chosen so that the size of the group created by g is equal to or larger than the plaintext message set. In addition, it is assumed that g amount and yA that are assumed to be publicly available are selected such that it is computationally impossible to determine xA from yA and g. Other considerations, including the relationship between security and the size of the group created by g, are evident in the art in view of the nature of the previously published ElGamal public key cryptosystem, for example the Handbook of Applied mentioned above. It is described in Cryptography . For example, a method of selecting the size of a group used in a conventional ElGamal public key cryptosystem is known in the art. Alternatively, methods of approximating the size of a group based on a given choice of constructor are also known in the art. This aspect is also applicable to the method 2600 described above in accordance with the present invention.
맵핑 함수(f)는, g에 의해 생성된 그룹의 각 원소가 서로 다른 플레인텍스트 메시지에 대응하도록 선택되어야 한다. 다시 말해, 맵핑 함수(f)는 유일하게 필연적인 것으로 될 수 있다. 이와는 달리, g에 의해 생성된 그룹이 플레인텍스트 메시지 집합보다 크면, p에 의해 생성된 그룹의 하나 이상의 원소가 동일한 플레인텍스트 메시지와 결합하도록, 맵핑 함수(f)가 선택될 수 있다. 플레인텍스트 메시지가 정수로 인코딩 되는 경우, f가 g에 의해 생성된 그룹으로부터 정수 집합 0, 1, 2, ...,Q-1로의 거의 단사 맵핑(단사 사상: injective mapping)이 되도록, 상기 맵핑 함수(f)가 선택될 수 있다. 여기서 Q≒|G|(|G|는 그룹의 크기) 이다. 예를 들어, 이것은 필수적으로 항등 사상(identity mapping)이 될 수 있다. 주어진 맵핑 함수(f)를 선택하는 것은, 상기로부터 알게 된 내용의 관점에서, 본 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위 내에 있다.The mapping function f must be chosen such that each element of the group produced by g corresponds to a different plaintext message. In other words, the mapping function f may be uniquely inevitable. Alternatively, if the group generated by g is larger than the plaintext message set, the mapping function f may be selected such that one or more elements of the group generated by p combine with the same plaintext message. If the plaintext message is encoded as an integer, the mapping such that f is an almost injective mapping (injective mapping) from the group produced by g to the set of integers 0, 1, 2, ..., Q-1. Function f may be selected. Where Q ≒ | G | (| G | is the size of the group). For example, this can be essentially identity mapping. The choice of a given mapping function f is within the scope of one of ordinary skill in the art, in light of the above findings.
제2 교신기는 불안전 채널(2417)을 통해 제1 교신기로 쌍의 (u, v)량을 보낸다(단계 2605). 쌍의 상기 (u, v)량은 플레인텍스트 메시지의 암호화된 버전에 대응한다.The second communicator sends a pair of (u, v) quantities to the first communicator via unsafe channel 2417 (step 2605). The (u, v) amount of the pair corresponds to an encrypted version of the plaintext message.
또한, 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에 대한 타원 곡선 상의 점으로 될 수도 있다.In addition, by storing multiple groups of second data bits representing at least a portion of g's plurality of second basis coefficients in a second register and processing the multiple groups of second data bits in parallel, the calculation of the amount of u is performed in a second manner. It can be executed by a communicator. In this regard, either single-guard-bit notation or multi-guard-bit notation can be used. The calculation of g xA (to calculate u) can be performed using exponents according to equation 32 or using xA-fold elliptic-curve point addition depending on the choice for g. g, u and v amount may be an element of the finite field F, where F may be selected as an extension field of a (k p) or GF GF (p k). Alternatively, the g, u and v amounts may be points on an elliptic curve for 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 공개키 암호화의 상기한 적응을 실행함으로써, 본 발명은 종래의 방법에 비해 증가된 계산 효율을 제공하고, 이것은 종래에 비해 증가된 속도 또는 동일한 계산 노력에 대해 증가된 보안성 중 하나로서 나타날 것이다.The first communicator can decode the received (u, v) amount of the pair, so that by calculating P = f (u -xA * v) where u -xA * v = v / u xA , the plaintext message (P), where "/" indicates the inverse of operation * (step 2607). According to the exponential function of equation 32 or according to the appropriate xA-fold elliptic-curve point addition, the u xA amount can be calculated by the first FFCU 2411. As noted above with respect to key exchange, this calculation can be performed using single-guard-bit notation or multi-guard-bit notation. Assume that only the first communicator, who knows xA, can decrypt this message. By implementing the aforementioned adaptation of ElGamal public key cryptography using single-guard-bit notation or multi-guard-bit notation, the present invention provides increased computational efficiency compared to the conventional method, which is increased compared to the prior art. It will appear either as speed or as increased security for the same computational effort.
물론, 필드 원소의 일부 또는 전체 필드 원소를 단일 레지스터에 저장하는(또는 F에 대한 타원 곡선 상의 점을 표시하는 일부 또는 전체 양을 저장하는), 단일 또는 다중 가드 비트의 이용, p의 다양한 함수 형태에 대한 선택 등을 포함하되 이것으로 제한되지는 않는, 앞서 설명한 본 발명의 전형적인 양태는 도 26에 도시한 전형적인 방법(2600)에 적용할 수 있다.Of course, storing some or all of the field elements in a single register (or storing some or all amounts representing points on an elliptic curve for F), using single or multiple guard bits, various functional forms of p Typical aspects of the present invention described above, including, but not limited to, selection of and the like, can be applied to the exemplary method 2600 shown in FIG. 26.
상기 방법(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량(사설키)을 비밀로 유지하게 할 작정이다.A typical implementation of the method 2600 will now be described with reference to Figures 27 (when g is the cause of F) and 28 (when g is the point on the elliptic curve for F). 27 is a flow diagram for an exemplary method 2700 of public key encryption. In the typical method 2700, the second communicator obtains the public key yA associated with the first communicator, where yA = g xA and xA is the private key of the first communicator (step 2701). For example, the second communicator may receive a transmission including the public key and quantity of the first communicator, or the second communicator may retrieve the public key and quantity of the first communicator from a list from which this information is published. You can look up. The amount of g is an element of the finite field F, where F is an odd-number finite field GF (p k ) or an extended field of GF (p k ), and p is an odd number. The first and second communicators may agree on a particular choice for F used in advance, or the first communicator may publish this information in the list according to the public key and g. The amount yA includes a plurality of first basis coefficients, the amount of g includes a plurality of second basis coefficients, and the first and second basis coefficients are elements of GF (p). The first communicator may generate the public key yA = g xA using the first encryption apparatus 2401. The private key xA of the first communicator is generally understood in the art, and may be an integer generated randomly or pseudorandomly, and is not intended for sharing with other communicators. In this regard, the FFCU 2411 associated with the first communicator can store multiple groups of data bits representing coefficients of g in registers, combined with single-guard-bit notation or multi-guard-bit notation The exponential operation mentioned in 32 can be used to process yA by processing multiple groups of data bits in parallel. As described above, the public key yA of the first communicator may be disclosed in the list, but the first communicator is intended to keep the xA amount (private key) secret.
제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에 따라 실행될 수 있다.The second communicator generates a number r (e.g., uses a random number generator or pseudo random number generator, which may be included in the key source 2413), and uses the FFCU 2415 (e.g., a processing unit) to pair (u, v) = (g r , f -1 (P) * (yA) r ), where * denotes the multiplication in F and P denotes the plaintext message of the plaintext message set (step 2703) ). As generally understood in the art, the number r may be an integer generated randomly or pseudorandomly. The number r is not intended to be shared with other communicators, and in this respect can be considered a password. To calculate the amount of v, multiple groups of first data bits representing at least a portion of the plurality of first basis coefficients of y A are stored in a first register and processed in parallel. At least one first guard bit is located adjacent to the most significant bit of each group of first data bits, and each group of first data bits from an adjacent group of first data bits is defined by the corresponding at least one first guard bit. To be separated, multiple groups of first data bits can be stored in the first resist. In other words, either single-guard-bit notation or multi-guard-bit notation can be used. An initial value of zero may be assigned to each first guard bit. In addition, the index of yA may be implemented according to Equation 32 described above.
제1 및 제2 교신기는 그들간의 통신에서 사용될 플레인텍스트 메시지의 집합에 대해 미리 일치한다. 함수 f는 F의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 맵핑 함수이고, 제1 및 제2 교신기는 맵핑 함수(f)에 대해 미리 일치한다. 예를 들어, 플레인텍스트 메시지 집합은 워드, 문장 및/또는 개별 문자로 구성될 수 있고, 각 플레인텍스트 메시지는 정수로 인코딩 될 수 있다. g량은 암호화 계산이 실행되는 그룹을 생성할 것이다. 이러한 그룹은 유한 필드 F의 곱셈 그룹이나, g의 선택에 따르는 곱셈 그룹의 서브그룹이 될 수 있다. g에 의해 생성된 상기 그룹이 상기한 어떤 벡터 공간보다 작게 될 수 있을 정도까지, f는 F에 대한 벡터 공간의 일부만을 플레인텍스트 메시지 집합에 맵핑하는 데 충분할 수 있다.The first and second communicators match in advance for the set of plaintext messages to be used in the communication between them. The function f is a mapping function that maps at least a portion of F to a plaintext message set, and the first and second communicators match in advance with the mapping function f. For example, a plaintext message set may consist of words, sentences, and / or individual characters, and each plaintext message may be encoded as an integer. g will create a group in which encryption calculations are performed. Such a group may be a multiplication group of the finite field F or a subgroup of the multiplication group according to the selection of g. To the extent that the group created by g can be made smaller than any of the vector spaces described above, f may be sufficient to map only a portion of the vector space for F to a set of plaintext messages.
그러므로 g에 의해 생성된 그룹의 크기가 플레인텍스트 메시지 집합과 같거나 더 크게 되도록 g량을 선택해야 한다. 또한, 공개적으로 이용할 수 있다고 가정하는 g 및 yA 양은, yA 및 g로부터 xA를 결정하는 것이 계산적으로 불가능하게 되도록 선택되는 것으로 가정한다. 보안성과 g에 의해 생성된 그룹의 크기 사이의 관계를 포함하는 다른 고려는, 종래에 공개된 ElGamal 공개키 암호시스템의 속성의 관점에서 이 기술 분야에서는 명백한 것으로서, 예를 들어 앞서 언급한 Handbook of Applied Cryptography에 설명되어 있다. 예를 들어, 종래의 ElGamal 공개키 암호시스템에 이용되는 그룹의 크기를 선택하는 방법은 본 기술 분야에 공지되어 있다. 이와는 달리, 생성자의 주어진 선택을 근거로 그룹의 크기를 근사화하는 방법도 본 기술 분야에 공지되어 있다. 이러한 양태는 본 발명에 따른 상기한 방법(2600)에도 적용할 수 있다.Therefore, the amount of g should be chosen so that the size of the group created by g is equal to or larger than the plaintext message set. It is also assumed that the g and yA amounts that are assumed to be publicly available are chosen such that it is computationally impossible to determine xA from yA and g. Other considerations, including the relationship between security and the size of the group created by g, are evident in the art in view of the nature of the previously published ElGamal public key cryptosystem, for example the Handbook of Applied mentioned above. It is described in Cryptography . For example, a method of selecting the size of a group used in a conventional ElGamal public key cryptosystem is known in the art. Alternatively, methods of approximating the size of a group based on a given choice of constructor are also known in the art. This aspect is also applicable to the method 2600 described above in accordance with the present invention.
맵핑 함수(f)는, g에 의해 생성된 그룹의 각 원소가 서로 다른 플레인텍스트 메시지에 대응하도록 선택되어야 한다. 다시 말해, 맵핑 함수(f)는 유일하게 필연적인 것으로 될 수 있다. 이와는 달리, g에 의해 생성된 그룹이 플레인텍스트 메시지 집합보다 크면, p에 의해 생성된 그룹의 하나 이상의 원소가 동일한 플레인텍스트 메시지와 결합하도록, 맵핑 함수(f)가 선택될 수 있다. 플레인텍스트 메시지가 정수로 인코딩 되는 경우, f가 g에 의해 생성된 그룹으로부터 정수 집합 0, 1, 2, ...,Q-1로의 거의 단사 맵핑(injective mapping)이 되도록, 상기 맵핑 함수(f)가 선택될 수 있다. 여기서 Q≒|G|(|G|는 그룹의 크기) 이다. 예를 들어, 이것은 필수적으로 항등 사상(identity mapping)이 될 수 있다. 주어진 맵핑 함수(f)를 선택하는 것은, 상기로부터 알게 된 내용의 관점에서, 본 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위 내에 있다.The mapping function f must be chosen such that each element of the group produced by g corresponds to a different plaintext message. In other words, the mapping function f may be uniquely inevitable. Alternatively, if the group generated by g is larger than the plaintext message set, the mapping function f may be selected such that one or more elements of the group generated by p combine with the same plaintext message. If the plaintext message is encoded as an integer, the mapping function f such that f is an almost injective mapping from the group produced by g to the set of integers 0, 1, 2, ..., Q-1. ) May be selected. Where Q ≒ | G | (| G | is the size of the group). For example, this can be essentially identity mapping. The choice of a given mapping function f is within the scope of one of ordinary skill in the art, in light of the above findings.
제2 교신기는 불안전 채널(2417)을 통해 제1 교신기로 쌍의 (u, v)량을 보낸다(단계 2705). 상기 쌍의 (u, v)량은 플레인텍스트 메시지의 암호화된 버전에 대응한다.The second communicator sends a pair of (u, v) quantities to the first communicator via unsafe channel 2417 (step 2705). The amount of (u, v) of the pair corresponds to an encrypted version of the plaintext message.
또한, g의 다수 제2 기저 계수의 적어도 일부를 표시하는 제2 데이터 비트의 다중 그룹을 제2 레지스터에 저장하고, 제2 데이터 비트의 다중 그룹을 병렬로 처리함으로써, u량의 계산이 제2 교신기에 의해 실행될 수 있다. 이와 관련하여, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법 중 하나가 사용될 수 있고, g의 지수(u를 계산하기 위함)가 상기한 식 32를 사용하여 실행될 수 있다. g, u 및 v 량은 유한 필드 F의 원소로 될 수 있고, 여기서 F는 GF(pk)로서 또는 GF(pk)의 확장 필드로서 선택될 수 있다.In addition, by storing multiple groups of second data bits representing at least a portion of g's plurality of second basis coefficients in a second register and processing the multiple groups of second data bits in parallel, the calculation of the amount of u is performed in a second manner. It can be executed by a communicator. In this regard, either single-guard-bit notation or multi-guard-bit notation can be used, and the exponent of g (to calculate u) can be implemented using Eq 32 above. g, u and v amount may be an element of the finite field F, where F may be selected as an extension field of a (k p) or GF GF (p k).
제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 공개키 암호화의 적응을 실행함으로써, 본 발명은 종래의 방법에 비해 증가된 계산 효율을 제공하고, 이것은 종래에 비해 증가된 속도 또는 동일한 계산 노력에 대해 증가된 보안성 중 하나로서 나타날 것이다.The first communicator can decode the received (u, v) amount of the pair, so that by calculating P = f (u -xA * v) where u -xA * v = v / u xA , the plaintext message (P), where “/” denotes division in F (step 2707). Performing division in F is within the scope of one of ordinary skill in the art, so no further discussion is required. As described above in connection with the key exchange, the amount of u xA can be calculated by the first FFCU 2411 by applying the exponential function of equation 32, using single-guard-bit notation or multi-guard-bit notation. . Assume that only the first communicator, who knows xA, can decrypt this message. By performing the adaptation of ElGamal public key cryptography described above to the group or field itself defined for GF (p k ) using single-guard-bit notation or multi-guard-bit notation, the present invention provides a conventional method. It provides increased computational efficiency compared to, which will appear as either increased speed compared to the prior art or increased security for the same computational effort.
물론, 필드 원소의 일부 또는 전체 필드 원소를 단일 레지스터에 저장하는(또는 GF(pk)에 대한 타원 곡선 상의 점을 표시하는 일부 또는 전체 양을 저장하는), 단일 또는 다중 가드 비트의 이용, p의 다양한 함수 형태에 대한 선택 등을 포함하되 이것으로 제한되지는 않는, 앞서 설명한 본 발명의 전형적인 양태는 도 27에 도시한 전형적인 방법(2700)에 적용할 수 있다.Of course, storing some or all of the field elements in a single register (or storing some or all amounts representing points on an elliptic curve for GF (p k )), using single or multiple guard bits, p Typical aspects of the present invention described above, including but not limited to, selection of various functional forms of a, may be applied to the exemplary method 2700 shown in FIG.
상기한 공개키 암호화 방법(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)의 원소이다.The public key encryption method 2700 described above may be modified in accordance with the present invention to implement using an elliptic curve for F, where F is as described above. An exemplary method 2800 of public key cryptography is described with reference to FIG. Indeed, this process is entirely similar to that described in connection with FIG. 27, so that the discussion is omitted here and the differences are mainly discussed. The first and second communicators are assumed to have been matched for the elliptic curve group, or the description for the group to be used is assumed to be transmitted between the communicators. This can be done, for example, as a preamble to the actual message. In the method 2800, step 2801 is entirely similar to step 2701 described above, except that g is a point on an elliptic curve for F. Thus, in a typical method 2800, the second communicator obtains the public key yA associated with the first communicator, where yA is g xA and xA is the private key of the first communicator (step 2801). The amount of g is the point on the elliptic curve for the finite field F, where F is the extension field of the odd-number finite field GF (p k ) or GF (p k ), and p is the odd number. The amount yA includes a plurality of first basis coefficients, the amount of g includes a plurality of second basis coefficients, and the first and second basis coefficients are elements of 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의 계산에 관련된 추가적인 양태에 대해 아래에서 설명한다.The second communicator generates a number r (e.g., uses a random number generator or pseudo random number generator, which may be included in the key source 2413), and uses the FFCU 2415 (e.g., a processing unit) to pair (u, v) = (g r , f -1 (P) * (yA) r ), where P denotes a plaintext message in a set of plaintext messages, and * denotes an elliptic-curve point addition or at FxF Indicating component unit multiplication, where r can be generated as described above (step 2803). Function f is a mapping function that maps at least a portion of FxF to a set of plaintext messages, where multiple groups of first data bits representing at least a portion of the plurality of first data basis coefficients of yA are stored in a first register and in parallel Is processed to calculate v. Additional aspects related to the calculation of u and v are described below.
단계 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 공개키 암호화의 적응을 실행함으로써, 본 발명은 종래의 방법에 비해 증가된 계산 효율을 제공하고, 이것은 종래에 비해 증가된 속도 또는 동일한 계산 노력에 대해 증가된 보안성 중 하나로서 나타날 것이다.As shown in step 2805, the second communicator sends the (u, v) amounts of the pair to the first communicator, the amount of the pair corresponding to an encrypted version of the plaintext message. As shown in step 2807, the first communicator can decode the received (u, v) amount of the pair, so that by calculating P = f (u -xA * v), where u -xA * v = v / u xA ), recover the plaintext message P, where “/” denotes the inverse of the operation * (step 2707). The operation “/” is further described in detail below. As described above in connection with the key exchange, the amount of u xA can be calculated by the first FFCU 2411 by applying the exponential function of equation 32, using single-guard-bit notation or multi-guard-bit notation. . Assume that only the first communicator, who knows xA, can decrypt this message. By performing the adaptation of ElGamal public key cryptography described above to an elliptic curve for F, using single-guard-bit notation or multi-guard-bit notation, the present invention provides increased computational efficiency compared to conventional methods. This will appear as either increased speed or increased security for the same computational effort as compared to the prior art.
제1 교신기에 의해 쌍의 u 및 v량의 계산과 관련되고 제1 교신기에 의해 쌍의 u 및 v량으로부터 플레인텍스트 메시지(P)를 복구하는 것과 관련된 추가적인 양태에 대하여 설명한다. 표기의 관점에서, 식 49와 연관하여 이미 언급한 바와 같이, (yA)τ, gτ 등과 관련된 지수는 이제부터 r-폴드(또는 xA-폴드) 타원-곡선 점 덧셈을 나타낸다. 따라서 u량을 계산하는 것은 도 27에 관련하여 설명한 방법과 전적으로 유사하고, u는 이제부터 타원-곡선 점으로 된다.Additional aspects related to the calculation of the u and v amounts of the pair by the first communicator and the recovery of the plaintext message P from the u and v amounts of the pair by the first communicator are described. In terms of notation, as already mentioned in connection with equation 49, the exponents associated with (yA) τ , g τ, etc., now represent r-fold (or xA-fold) elliptic-curve point additions. Therefore, calculating the amount of u is entirely similar to the method described with respect to FIG. 27, where u becomes an elliptic-curve point from now on.
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를 계산한다.For v, two cases that can be considered for the operation * and the mapping function f are described. In either case, the second communicator needs to calculate a value of the form f −1 (P) * (yA) τ , where (yA) τ is the point on the elliptic curve, i.e. (x, y) at FxF. Is a pair of coordinates, and x represents a Cartesian product, ie an element pair from F Therefore, f- 1 needs to generate a value that can be composed of two-dimensional values. In the first case where f can be chosen to ensure that f −1 is a point on an elliptic curve, * may simply be an ordinary elliptic-curve point addition operation. For the first communicator in this case, the “/” operation is point subtraction (the inverse of addition, well known in the art). For the first case, f mapping can be performed in several ways, an example of which is as follows. Assume that the plaintext message space consists of a binary string of length less than lk log 2 (p), where l, k, and p are the values that define field F. Note that this can be assumed without compromising generality, because long messages can be cut into smaller blocks that meet this length limit, and each block can be processed separately. As the basis coefficient set of field F, P can be interpreted in a natural way. P does not uniquely determine the element associated with this set of basis coefficients because some bits remain unspecified. (The actual position of the unspecified bit can be matched in advance or after communication in the communication period.) A random value R can be assigned to the unspecified bit, and a value of x = x (P, R) can be obtained from F. have. This x value is obtained as the right side of the equation (48). As is well known in the art, the probability that there is a left y-value that satisfies the equivalence of equation 48 is 1/2, and if present, finding a matching y-value can be performed by known methods. If no matching y value exists, the process is repeated for a new random R or the like. The probability that the process will fail repeatedly for a large number of successive attempts is small. The method describes how f −1 can be calculated by the second communicator. By simply discarding the y-axis of the elliptic curve point and by discarding the bit-position corresponding to the randomly selected R-bit, the first communicator calculates f.
상기한 절차는 타원 곡선 점으로서 메시지를 끼워 넣는 방법의 일례로서의 구실만을 하고, f를 정의하는 다른 방법도 가능하다. 이러한 방법에 관해, 식 48을 만족하는, 타원 곡선 상의 점을 상기 맵핑이 항상 생성하는 것을 보장하는 것은 일반적으로 약간 복잡할 수 있다. 이것으로 단계 2803 및 2807과 관련된 맵핑 함수(f) 및 연산“*”의 선택에 대한 제1 전형적 경우와 관련된 논의를 종결한다. The above procedure merely serves as an example of how to embed a message as an elliptic curve point, and other methods of defining f are possible. For this method, it can generally be a bit complicated to ensure that the mapping always produces a point on an elliptic curve that satisfies equation 48. This concludes the discussion regarding the first typical case for the selection of the mapping function f and the operation “*” associated with steps 2803 and 2807.
맵핑 함수(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 방법으로서 문헌에 공지되어 있으며, 상기한 바와 같이 본 발명에 적용할 수 있다.In the second typical case for the selection of the mapping function f and the operation “*”, it is not necessary to carry out the calculations in steps 2803 and 2807 to generate points on the elliptic curve. Thus, the method including the second case may be of further interest. One typical method for the second case is described. In the second case, f is selected to be a mapping that maps at least a portion of the arbitrary value in FxF to the plaintext space. That is, it generates some arbitrary (x, y) coordinate pairs that do not need to satisfy 48. This is done so that only decryption is almost always guaranteed (hence field F generally needs to be at least as large as the square root of the plane text space size). Finding such f is easy and well known in the art. For example, by interpreting P as a set of base coefficients, encoded in a binary string, f can necessarily be an identity mapping. In the second case, the combinatorial operation * may be defined as coordinate-wise multiplication in F, ie (a, b) * (x, y) = (ax, by). For the second communicator (the receiver in this typical description), the operation "/" is correspondingly defined as division of coordinate units in F (inverse operation of "*"). Methods of using coordinate-unit multiplication and division rather than elliptic curve operations are known in the literature as Menezes-Vanstone methods and can be applied to the present invention as described above.
맵핑 함수(f)의 선택에 대한 2가지 경우와 관련된 상기한 방법 둘 다에서, 기저 계수를 표시하는 데이터 비트의 병렬 처리 다중 그룹이 앞서 설명한 바와 같이 생성된다.In both of the above mentioned methods relating to the two cases for the selection of the mapping function f, parallel processing multiple groups of data bits representing the basis coefficients are generated as described above.
도 27 및 28과 관련된 본 발명에 따른 3가지 상기 방법(F에 대한 수정된 ElGamal, E에 플레인텍스트를 끼워 넣어서 F에 대한 타원 곡선 E에 대한 수정된 ElGAmal, E에 플레인텍스트를 끼워 넣지 않고서 F에 대한 타원 곡선 E에 대한 수정된 ElGamal) 모두에서, 함수(f)는 F에 대한 1차원 벡터 공간(즉, F) 또는 2차원 벡터 공간(즉, FxF)의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 것으로 볼 수 있음을 알 수 있다.The above three methods according to the present invention with reference to FIGS. 27 and 28 (Fellow ElGamal, Modified for El, plaintext in E, elliptic curves for F, ElGAmal, F without incorporating plaintext in E In all of the modified ElGamal for the elliptic curve E for, the function (f) is used to assign at least a portion of the one-dimensional vector space (i.e., F) or two-dimensional vector space (i.e., FxF) It can be seen that the mapping.
다른 전형적인 양태에서, F에 대한 2차원 벡터 공간(즉, FxF)의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 것을 대신하여, F에 대한 3차원 벡터 공간의 적어도 일부를 플레인텍스트 메시지 집합에 맵핑하는 맵핑 함수(f)를 선택할 수 있도록, 상기 방법(2800)은 수정될 수 있다. 이러한 양태에서, 3차원 벡터 공간에서의 투영 좌표가 타원 곡선 방법과 연관되어 사용된다. 상기 방법의 다른 양태는 상기 전형적인 방법(2800)에 대한 도 28에 설명한 것과 동일하다. 투영 좌표는 본 기술 분야에 널리 알려져 있는 것이므로, 이러한 양태에 따라 상기 방법(2800)을 수정하는 것에 대한 논의는 더 이상 필요하지 않다.In another exemplary embodiment, at least a portion of the three-dimensional vector space for F is mapped to a plaintext message set, instead of mapping at least a portion of the two-dimensional vector space for F (ie, FxF) to a plaintext message set. The method 2800 can be modified to select a mapping function f. In this aspect, projection coordinates in three-dimensional vector space are used in conjunction with the elliptic curve method. Another aspect of the method is the same as described in FIG. 28 for the typical method 2800. Since projection coordinates are well known in the art, discussion of modifying the method 2800 in accordance with this aspect is no longer necessary.
본 발명의 다른 양태에서, 암호화, 해독 및/또는 인증(authentication)은 교신기 중 하나에 의해 선택된 보안키를 사용하여 실행될 수 있고, 도 24A에 도시한 안전 채널(2421)과 같은 안전 채널을 통해 교환될 수 있다. 예를 들어, 제1 교신기 또는 제2 교신기 중 하나가 제1 키 소스(2409) 또는 제2 키 소스(2413)를 사용하여 보안키를 생성할 수 있다. 이러한 보안키는 안전 채널(2412)을 통해 교환될 수 있다(예를 들어, 쿠리어(courier)를 사용). 암호화 및 해독은 도 24A에 도시한 FFCU(2411 및 2415)를 사용하여 실행될 수 있다. 이와 관련하여, 24B에서 언급한 암호화 알고리즘이 방법(2450)에 따라 실행할 수 있는 적절한 암호화 알고리즘으로 될 수 있어서, 암호화된 정보는 불안전 채널(2417)을 통해 전송될 수 있다. 다른 예로서, 어떤 종래의 암호화 알고리즘을 사용하여 정보가 암호화될 수 있고, 도 24B에서 언급한 암호화 알고리즘은, 안전 채널(2412)을 통해 교환되는 보안키를 근거로 할 수 있고 상기 방법(2450)에 따라 실행될 수 있는, 어떤 적절한 인증 알고리즘으로 될 수 있다. 상기 방법(2450)에 따라 적절한 인증 알고리즘을 실행하는 것은, 여기서 알려주는 내용의 관점에서, 본 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에 있다.In another aspect of the invention, encryption, decryption and / or authentication may be performed using a security key selected by one of the communicators, and via a secure channel, such as secure channel 2421 shown in FIG. 24A. Can be exchanged. For example, one of the first communicator or the second communicator may generate a security key using the first key source 2409 or the second key source 2413. Such security keys may be exchanged over a secure channel 2412 (e.g., using a courier). Encryption and decryption can be performed using the FFCUs 2411 and 2415 shown in FIG. 24A. In this regard, the encryption algorithm mentioned in 24B can be any appropriate encryption algorithm that can be executed according to the method 2450, so that the encrypted information can be transmitted over the insecure channel 2417. As another example, information may be encrypted using any conventional encryption algorithm, and the encryption algorithm referred to in FIG. 24B may be based on security keys exchanged over a secure channel 2412 and the method 2450. It may be any suitable authentication algorithm, which may be executed according to. Implementing an appropriate authentication algorithm in accordance with the method 2450 is within the scope of those skilled in the art, in light of the teachings herein.
본 발명의 다른 양태에서, 유한 필드 F에 대한 본 발명의 방법을 사용하여 ElGamal 공개키 암호화를 변형할 수 있고, 여기서 F는 도 24A에 도시한 암호화 시스템(2400)을 사용하여 디지털 사인(digital signatures)을 제공하는 유한 필드 GF(pk) 또는 GF(pk)의 확장 필드이다(p는 홀소수)이다. 예를 들어, 기저 DSA(디지털 사인 알고리즘)을 근거로 한 이러한 변형에 대해 설명한다. 다른 변형도 또한 존재한다.In another aspect of the present invention, ElGamal public key cryptography can be modified using the method of the present invention for a finite field F, where F is digital signatures using an encryption system 2400 shown in FIG. 24A. Is an extended field of finite field GF (p k ) or GF (p k ), where p is an odd number. For example, this variation based on the underlying DSA (Digital Sign Algorithm) is described. Other variations also exist.
다시 한번, 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 교신기는 다음 식에 대한 해를 계산한다.Once again, defined for the F group, g quantity (e.g., a point on the elliptic curve for F element or F), and a mapping function (f) is, GF (p k) in accordance with the present invention in FIG. 26 As described in connection with a typical realization of an ElGamal public key for, it is matched by first and second communicators. Further, the first communicator generates the above-mentioned private key xA and public key yA. In order to sign a message P (e.g., plaintext or integer encoded ciphertext), the first communicator proceeds as follows. The first communicator uses a random number generator or pseudo random number generator, which may be coupled to key source 2409, for example, to generate a number r (eg, a random or pseudo randomly generated integer), Compute a = g r using first FFCU 2411 by applying exponential function 32 in conjunction with either -guard-bit notation or multi-guard-bit notation. The number r is not intended to be shared with other communicators, and may be considered as a password in this regard. The first communicator calculates the solution to
(50) 50
여기서 *는 식 50을 만족하는 b량을 찾기 위한 보통의 곱셈이다. xA로 알려진, 제1 교신기만이 이와 같이 할 수 있다고 가정한다. 메시지 P에 대한 사인(signature)은 쌍(a, b)로 정의된다.Where * is the normal multiplication to find the amount of b that satisfies equation 50. Assume that only the first communicator, known as xA, can do this. The signature for message P is defined by pairs (a, b).
제1 교신기는, 상기한 암호화 방법 중 하나를 적용함으로써 제1 FFCU(2411)을 사용하여 플레인텍스트 메시지 P를 사인할 수 있으므로, 사인(a, b)를 생성하고 불안전 채널(2417)을 통해 제2 교신기로 P 및 쌍(a, b)를 송신한다.Since the first communicator can sign the plaintext message P using the first FFCU 2411 by applying one of the ciphering methods described above, the first communicator generates a signature (a, b) and generates a sign via the unsafe channel 2417. Send P and pair (a, b) to the two communicators.
쌍 (a, b)가 제1 교신기의 P에 대한 유효 사인을 표시한다는 것을 증명하기 위해, 제2 교신기는 다음의 u 및 v량을 계산한다.To prove that the pair (a, b) indicates a valid sign for P of the first communicator, the second communicator calculates the following u and v quantities.
(51) (51)
(52) (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)에 대해 현저히 높은 보안성을 제공하도록 실행될 수 있다.Where b -1 is the multiplication inverse of b and * denotes multiplication (normal multiplication). storing multiple groups of first data bits representing coefficients of yA in a first register, multiple groups of second data bits representing coefficients of g notation in a second register, and storing multiple groups of first data bits By applying the exponential function 32 in conjunction with the method of the present invention, which processes the groups in parallel and processes the multiple groups of second data bits in parallel, the second communicator uses a second FFCU 2415 to g. compute u (yA) v The second communicator accepts the sign as valid only if g u (yA) v = a. Therefore, the calculation method including the field GF (p k ) according to the present invention can be applied to a digital sign, and the calculation is much faster than the conventional method including the GF (p k ), or forged signs with the same calculation effort. (forged signature) can be implemented to provide significantly higher security.
본 발명에 따라 F에 대한 타원 곡선을 사용하는 것은 디지털 사인에 대해 가능한 설정이다. 타원 곡선의 경우에, 디지털 사인의 상기한 실현과 비교하여 고려될 필요가 있는 차이는, 공개키 암호화의 실현에서의 차이와 전적으로 유사하며, 여기서 g는 유한 필드 F의 원소이고(도 27), g는 F에 대한 타원 곡선 상의 점이다(도 28). 따라서 본 발명에 따라 디지털 사인과 연계된 타원 곡선을 사용하는 것에 대해 더 이상의 논의는 필요하지 않다. Using an elliptic curve for F in accordance with the present invention is a possible setting for digital sine. In the case of an elliptic curve, the difference that needs to be considered in comparison with the above realization of the digital signature is entirely similar to the difference in the realization of public key cryptography, where g is an element of the finite field F (FIG. 27), g is the point on the elliptic curve for F (FIG. 28). Thus no further discussion is needed for using an elliptic curve associated with a digital sign in accordance with the present invention.
본 발명의 다른 양태에서, 앞서 설명한 계산 방법을 사용하여 필드 GF(pt)에서의 계산을 실행하는 의사 난수 발생기를 제공할 수 있다(p는 홀소수). 의사 난수 발생기는 결정론적으로(deterministically) 짧은 랜덤 시드(random seed)를 랜덤하게 나타나는 긴 스트링으로 확장시킨다. 많은 종래의 구조가 본 기술 분야에 알려져 있으며, 이러한 구조는 예를 들어 유한 필드 또는 타원 곡선을 기초로 할 수 있다. 상기한 본 발명의 계산 방법은 그러한 구조를 적용할 수 있다.In another aspect of the invention, a pseudo random number generator may be provided that performs the calculation in field GF (p t ) using the calculation method described above (p is odd). Pseudo random number generators deterministically extend short random seeds into long randomly appearing strings. Many conventional structures are known in the art, and such structures can be based, for example, on finite field or elliptic curves. The calculation method of the present invention described above can apply such a structure.
예를 들어, F=GF(pn)를, 어떤 t=n/w에 대해 GF(pt)의 확장 필드로서 정의되는 유한 필드라고 한다. 여기서 w는 정수이다. F의 곱셈 그룹의 충분히 큰 서브그룹을 생성하는 F의 필드 원소를 g라고 한다. 또한, ElGamal 공개키 암호화에 대한 본 발명의 적용과 관련하여 상기한 바와 같은 함수를 f라고 한다. 마지막으로, 본 기술 분야에서 널리 알려진 트레이스-맵핑(trace-mapping)을 Tr이라고 하고, 이것은 다음 식에 따라 GF(pt)의 원소에 F의 원소를 맵핑한다. F에서의 임의의 x에 대해,For example, F = GF (p n ) is called a finite field defined as an extension field of GF (p t ) for a certain t = n / w. Where w is an integer. The field element of F that creates a sufficiently large subgroup of the multiplication group of F is called g. Further, the function as described above in connection with the application of the present invention to ElGamal public key cryptography is called f. Finally, trace-mapping, which is well known in the art, is called Tr, which maps the elements of F to the elements of GF (p t ) according to the following equation. For any x in F,
(53) (53)
마지막으로, 함수 I(x)를 I(x)=gx로서 정의한다.Finally, the function I (x) is defined as I (x) = g x .
랜덤 시드(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)에서의 여러 가지 연산을 이용하고, 단일-가드-비트 표기법 또는 다중-가드-비트 표기법을 근거로 한 상기한 본 발명의 방법은 필수적인 계산을 효율적으로 실행하는 데 이용될 수 있다.If a random seed s (binary encoded integer) is input, the constructor is defined as follows. Let x 0 = I (s) and x i + 1 = I (f (x i )) for i = 0, 1, 2, ..., T. The smaller the T, the higher the security. However, in principle, the T can be very large, for example, comparable to the square root of the field size. In addition, the output of the pseudo random number generator is defined as a connection of Tr (x 0 ), Tr (x 1 ), Tr (x 2 ), ... This method provides an output consisting of pseudo random elements of GF (p t ). If a binary string is required as an output, an appropriate transform function can be applied to the output. Under the assumption that discrete log problems in the group are difficult to process (ie, computationally impossible), the pseudo random number generator described above is safe. As noted above, the pseudo random number generator utilizes various operations in GF (p t ), including addition, subtraction, multiplication and exponent, and is based on single-guard-bit notation or multi-guard-bit notation. As described above, the method of the present invention can be used to efficiently execute essential calculations.
여기서 설명한 실시예들은 단지 예시를 위한 것일 뿐, 어떤 방식으로도 제한하는 것으로 고려되어서는 안 된다. 본 발명의 범위는 앞서 설명한 것보다는 첨부한 청구범위에 의해 주어지며, 청구범위 내에 있는 모든 변형 및 등가물은 여기에 포함되는 것으로 해석된다.The embodiments described herein are for illustrative purposes only and should not be considered limiting in any way. The scope of the invention is given by the appended claims rather than the foregoing, and all modifications and equivalents falling within the scope of the claims are intended to be construed as included herein.
본 출원은 미국특허출원 “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)과 관련된 것으로서, 둘 다 동일자로 출원되었으며, 그 공개된 내용은 전체적으로 참조되어 본 명세서에 포함된다.This application discloses a US patent application “Efficient arithmetic in finite fields of odd characteristic on binary hardware”, serial number 10 / 271,730 (Attorney Docket No. 040000-793), and US patent application “Error correction using finite fields of odd characteristic on binary. hardware, serial number No. 10 / 271,945 (Attorney Docket No. 040001-178), both of which are filed on the same page, the disclosures of which are incorporated herein by reference in their entirety.
Claims (53)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/271,730 | 2002-10-17 | ||
US10/271,730 US7197527B2 (en) | 2002-10-17 | 2002-10-17 | Efficient arithmetic in finite fields of odd characteristic on binary hardware |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20050061544A true KR20050061544A (en) | 2005-06-22 |
Family
ID=32092513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020057006616A KR20050061544A (en) | 2002-10-17 | 2003-10-07 | Cryptography using finite fields of odd characteristic on binary hardware |
Country Status (5)
Country | Link |
---|---|
US (1) | US7197527B2 (en) |
EP (1) | EP1552642A1 (en) |
KR (1) | KR20050061544A (en) |
AU (1) | AU2003267914A1 (en) |
WO (1) | WO2004036822A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101252318B1 (en) * | 2005-05-12 | 2013-04-08 | 인사이드 씨큐어 | Randomized modular polynomial reduction method and hardware therefor |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002082717A1 (en) * | 2001-04-05 | 2002-10-17 | Kent Ridge Digital Labs | Method and apparatus for constructing efficient elliptic curve cryptosystems |
US7289945B2 (en) * | 2002-10-28 | 2007-10-30 | Intel Corporation | Analyzing interconnect structures |
KR100486726B1 (en) * | 2002-11-09 | 2005-05-03 | 삼성전자주식회사 | Method and Apparatus for basis conversion in a finite field |
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 |
WO2006076804A1 (en) | 2005-01-21 | 2006-07-27 | Certicom Corp. | Elliptic curve random number generation |
DE102005028662B4 (en) * | 2005-03-04 | 2022-06-02 | Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik | Method and device for calculating a polynomial multiplication, in particular for elliptic curve cryptography |
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 (en) * | 2005-04-28 | 2010-09-29 | 富士通株式会社 | Batch scheduling program, batch scheduling method, and batch scheduling apparatus |
FR2887048A1 (en) * | 2005-06-14 | 2006-12-15 | France Telecom | METHOD AND DEVICE FOR GENERATING A PSEUDO-RANDOM CONTINUATION |
DE102006013989A1 (en) * | 2006-03-22 | 2007-09-27 | IHP GmbH - Innovations for High Performance Microelectronics/Institut für innovative Mikroelektronik | Method of reducing a polynomial in a binary finite field |
US7991162B2 (en) * | 2007-09-14 | 2011-08-02 | University Of Ottawa | Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields |
EP2244243B1 (en) * | 2008-02-20 | 2017-12-13 | Mitsubishi Electric Corporation | Verifying device |
CN102449951B (en) * | 2009-03-31 | 2015-09-23 | 皇家飞利浦有限公司 | For performing the method for cryptographic tasks in electronic building brick |
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 (en) * | 2011-12-30 | 2018-06-15 | 英特尔公司 | Double composite field Advanced Encryption Standard memory encryption engines |
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 |
US10153894B2 (en) | 2015-11-05 | 2018-12-11 | Microsoft Technology Licensing, Llc | Homomorphic encryption with optimized encoding |
US10075289B2 (en) | 2015-11-05 | 2018-09-11 | Microsoft Technology Licensing, Llc | Homomorphic encryption with optimized parameter selection |
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)
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 (en) * | 1994-07-12 | 2002-09-24 | 三菱電機株式会社 | Error correction device |
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 |
WO2002082717A1 (en) * | 2001-04-05 | 2002-10-17 | Kent Ridge Digital Labs | 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 |
-
2002
- 2002-10-17 US US10/271,730 patent/US7197527B2/en active Active
-
2003
- 2003-10-07 WO PCT/SE2003/001561 patent/WO2004036822A1/en not_active Application Discontinuation
- 2003-10-07 AU AU2003267914A patent/AU2003267914A1/en not_active Abandoned
- 2003-10-07 EP EP03748853A patent/EP1552642A1/en not_active Withdrawn
- 2003-10-07 KR KR1020057006616A patent/KR20050061544A/en not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101252318B1 (en) * | 2005-05-12 | 2013-04-08 | 인사이드 씨큐어 | Randomized modular polynomial reduction method and hardware therefor |
Also Published As
Publication number | Publication date |
---|---|
EP1552642A1 (en) | 2005-07-13 |
WO2004036822A1 (en) | 2004-04-29 |
US20040078407A1 (en) | 2004-04-22 |
US7197527B2 (en) | 2007-03-27 |
AU2003267914A1 (en) | 2004-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20050061544A (en) | Cryptography using finite fields of odd characteristic on binary hardware | |
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 (en) | Method for generating pseudo-random number | |
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 (en) | Post-quantum encryption/decryption procedure and device using linear codes (Machine-translation by Google Translate, not legally binding) | |
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 |