KR100330510B1 - 고속의 모듈라 멱승 연산기 - Google Patents

고속의 모듈라 멱승 연산기 Download PDF

Info

Publication number
KR100330510B1
KR100330510B1 KR1019990017718A KR19990017718A KR100330510B1 KR 100330510 B1 KR100330510 B1 KR 100330510B1 KR 1019990017718 A KR1019990017718 A KR 1019990017718A KR 19990017718 A KR19990017718 A KR 19990017718A KR 100330510 B1 KR100330510 B1 KR 100330510B1
Authority
KR
South Korea
Prior art keywords
value
register
bits
bit
carry
Prior art date
Application number
KR1019990017718A
Other languages
English (en)
Other versions
KR19990064878A (ko
Inventor
최돈익
하국용
박만어
윤중철
Original Assignee
최돈익
주식회사 시큐리티테크놀로지스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 최돈익, 주식회사 시큐리티테크놀로지스 filed Critical 최돈익
Priority to KR1019990017718A priority Critical patent/KR100330510B1/ko
Publication of KR19990064878A publication Critical patent/KR19990064878A/ko
Application granted granted Critical
Publication of KR100330510B1 publication Critical patent/KR100330510B1/ko

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B07SEPARATING SOLIDS FROM SOLIDS; SORTING
    • B07BSEPARATING SOLIDS FROM SOLIDS BY SIEVING, SCREENING, SIFTING OR BY USING GAS CURRENTS; SEPARATING BY OTHER DRY METHODS APPLICABLE TO BULK MATERIAL, e.g. LOOSE ARTICLES FIT TO BE HANDLED LIKE BULK MATERIAL
    • B07B1/00Sieving, screening, sifting, or sorting solid materials using networks, gratings, grids, or the like
    • B07B1/04Stationary flat screens
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B07SEPARATING SOLIDS FROM SOLIDS; SORTING
    • B07BSEPARATING SOLIDS FROM SOLIDS BY SIEVING, SCREENING, SIFTING OR BY USING GAS CURRENTS; SEPARATING BY OTHER DRY METHODS APPLICABLE TO BULK MATERIAL, e.g. LOOSE ARTICLES FIT TO BE HANDLED LIKE BULK MATERIAL
    • B07B13/00Grading or sorting solid materials by dry methods, not otherwise provided for; Sorting articles otherwise than by indirectly controlled devices
    • B07B13/14Details or accessories
    • B07B13/16Feed or discharge arrangements

Landscapes

  • Complex Calculations (AREA)

Abstract

본 발명은 고속의 모듈라 멱승 연산기에 관한 것이다. 전자상거래용 RSA 암호화 및 복호화 공개키 알고리즘을 적용한 고속의 모듈러 멱승 연산기는 E 레지스터(10), 보수부(20), M 레지스터(30), Y 레지스터(40), B 레지스터(50), X 레지스터(60) 및 모듈러 곱셈부(Modular multiplication unit)(100)로 구성되고, RSA 암호화 및 복호화 알고리즘을 하드웨어로 구현하기 위해, RSA 암호화 및 복호화에 사용되는 모듈러 멱승 연산식 C := bemod m을 계산하도록 평문 b, 암호화 또는 복호화 지수는 e 및 모듈러스를 m를 입력받아 모듈러 멱승 연산을 실행하여 암호문 및 복호문 C를 출력한다. 따라서, RSA 공개키 암호 시스템을 하드웨어로 구현한 고속의 모듈라 멱승 연산기는 네트워크에서 전송되는 데이터들을 암호화된 데이타로 바꾸거나 전자상거래에서 디지털 서명 등에 사용될 수 있다.

Description

고속의 모듈라 멱승 연산기{Apparatus for high speed modular power exponentiation unit}
본 발명은 고속의 모듈라 멱승 연산기에 관한 것으로, 특히 네트워크 상에서 전송되는 평이한 데이터들을 암호화된 데이타로 바꾸거나 전자상거래시 상대방의 신원을 확인하기 위해 디지털 서명 등에 사용되는 RSA 암호 알고리즘을 하드웨어로 구현한 고속의 모듈라 멱승 연산기에 관한 것이다.
일반적으로, 암호화 알고리즘은 암·복호화에 사용되는 키의 특성에 따라 암.복호화 키가 같은 대칭키 암호화 알고리즘과 암·복호화 키가 다른 공개키 알고리즘으로 크게 구별되며, 상기 대칭키 알고리즘은 메시지 처리 형식에 따라 스트림암호 알고리즘과 블록 암호 알고리즘으로 구분된다.
상기 대칭키 암호 시스템은 시스템 상에서 효율성을 좌우하는 암호화 키 크기가 공개키 암호 시스템보다는 상대적으로 작아서 적은 자원(resource)에서도 효과적인 암호 시스템을 구축할 수 있으나 정보 교환 당사자간에 같은 키를 공유해야 하므로 여러 사람과의 정보 교환시 한 사용자는 많은 키를 유지 관리해야 하는 어려움이 있다. 상기 대칭키 암호 시스템의 대표적인 예로서는 DES(Data Encryption Standard)가 있으며, 이를 변형한 구 소련의 GOST(GOvernment STandard), 스위스의 IDEA(International Data Encryption Algorithm), 그리고 최근에 발표된 SKIPJACK 등이 있다. 상기 공개키 암호 시스템은 암호화하는 키와 복호화하는 키가 서로 다르고, 하나를 알더라도 그에 대칭되는 키를 알기 어려운 암호 시스템으로, 키 생성 알고리즘을 통해 2개의 키를 생성하고 전화번호부에 전화 번호를 공개하듯이 그 중 하나를 공개하고 나머지 하나를 비밀키로 자신이 보관하여 사용하는 것이다. 상기 공개키 암호 시스템은 키관리 측면에서 대칭키 암호 시스템에 비해 관리해야 할 키가 작고, 안전한 키 교환의 이점이 있음에 반해 암호화를 위한 키 크기는 상대적으로 크기 때문에 데이터 처리량이 적고, 컴퓨터 수행 능력이 떨어진다.
가장 널리 사용되고 있는 공개키 암호 시스템은 창안자의 머리 글자를 딴 RSA(Ron Rivest, Adi Shamir, Len Adleman) 공개키 암호 시스템으로써 Rabin Williams의 암호 시스템과 함께 인수분해 문제 해결의 높은 난이도를 이용한 대표적인 공개키 암호 시스템이다. 상기 RSA 암호 시스템이나 인수분해 문제를 이용하는 다른 암호 시스템은 암호화뿐만 아니라 전자서명의 용도로도 사용될 수 있다.
RSA 알고리즘은 평문 M을 암호화하기 위해서는 두 개의 양의 정수로 구성된 공개키 (e, n)(e:암호화 지수)를 이용하여 Me를 계산한 후 n으로 나눈 나머지를 암호문(C)으로 만든다. 복호화는 비밀키 (d, n)(d:복호화 지수)를 이용하여 암호문 C를 d 번 곱한 후 n으로 나누게 되면 나머지가 원래의 평문 M이 된다. 암호화된 암호문 C는 평문 M보다 결코 크기가 증가되지 않는다. 만약, 상기 평문 M을 블록 단위로 암호화할 경우 평문을 0에서 n-1 사이의 정수 단위로 블록화하여 암호화하면 평문 M과 암호문 C는 0에서 n-1 사이의 정수가 될 것이다. 암호화와 복호화를 위한 키의 선택을 위해서는 우선 두 개의 매우 큰 소수(prime number) p와 q를 임의로 선택하여, n=pq를 계산한다. 그리고, gcd(d,(p-1)(q-1)) = 1 을 만족하는 복호화 지수 d 값을 복호화 키로 한다.
암호화 키는 ed = 1 mod ((p-1)(q-1))을 만족하는 암호화 지수 e를 구한다. 두 개의 큰 소수인 p, q에 대하여 그 곱인 n = pq를 구하는 것은 간단하지만 공개된 n을 소인수분해하여 p와 q를 구하는 계산을 요하게 된다.
Rivest, Shamir 그리고 Adleman은 n을 십진수 200자리 정도로 선택할 것을 권고하고 있는데 약 80 자리의 n을 사용할 경우 적당한 안전도를 제공할 수 있으며 155 자리(512비트)의 n을 사용할 경우 확실한 안전도를 제공할 수 있다. 또한, n을 소인수분해 하지 않은 상태에서 상기 복호화 지수(d)를 불법적인 사용자가 알아내기 어렵고 상기 복호화 지수(d)로부터 얻어지는 상기 암호화 지수(e) 또한 구하기 어렵게 된다. RSA 암호 방식은 기본적으로 키 생성, 암호화, 복호화를 실행한다.상기 키 생성의 각 실체는 RSA 공개키와 그에 대응하는 비밀키를 생성한다.
◇ 두 개의 서로 다른 큰 소수 p와 q를 임의로 생성한다.
◇ 모듈러스 n=pq와 Φ=(p-1)(q-1)를 계산한다.
◇ gcd(e, d)=1 인 정수인 암호화 지수 e(1<e<Φ)를 임의로 선택한다.
◇ 확장된 유클리드 알고리즘을 사용하여 ed ≡1(mod Φ)인 유일한 정수인 복호화 지수 d(1<d<Φ)를 계산한다.
◇ A의 공개키 : (n, e), A의 비밀키 : (n, d)
B는 메시지 m를 암호화하고 A에게 보내고, A는 복호화한다.
(1) 암호화
◇ A의 인증된 공개키 (n, e)를 얻는다.
◇ 메시지 m을 [0, n-1] 사이의 정수로 표현한다.
◇ C ≡ memod n을 계산한다.
◇ 암호문 C를 A에게 보낸다.
(2) 복호화
◇ 비밀키 d를 이용하여, m ≡ Cdmod n을 계산한다.
단, e : 암호화 지수, d: 복호화 지수, n : 모듈러스
RSA의 주된 연산은 암호문 C ≡ memod n을 계산하는 것이다. 이 때, 각 연산자의 길이는 적어도 512 비트이다. RSA 연산을 수행하기 위해서는 곱셈 연산과 멱승 연산이 효율적이어야 한다.
종래의 모듈러 멱승 연산기들은 러시아 농부들이 사용한 방법(Russian Peasant method)을 사용한다. 모듈러 곱셈 방법으로는 승수(multiplier)의 2k비트를 검색(scanning)하여 피승수(multiplicand)를 계속 더해가는 방법과 감소(reduction)를 하기 위해 곱한 결과가 모듈러스(modulus) m 보다 작아질 때까지 계속해서 m을 빼는 방법을 사용한다.
종래 기술의 시간 복잡도(time complexity)는 n 비트의 수를 곱하는 시간을 T라 하면 3/2nT이다. 모듈러 곱셈에서 두 수를 곱하는 방법은 n 비트의 수일 때 최대 n번의 덧셈이 필요하고 감소(reduction)를 위해 2k+2k-1번의 뺄셈이 필요하다.
따라서, 종래의 모듈러 멱승 연산 방법은 몫(quotient)을 계산하기 위해서 R/m(R:중간 결과, m:모듈러스)을 직접 계산하기 때문에 연산 속도가 느린 문제점이 존재한다.
본 발명은 종래 기술의 문제점을 해결하기 위해 제안된 것으로써, 본 발명의 목적은 모듈러 곱셈에서 두개의 곱(X*Y(mod)와 Y*Y(mod))을 병렬로 수행함에 의해 시간 복잡도(time complexity)를 nT로 줄이고, R/m값을 계산하지 않고몫(quotient) 추정 방법을 통해 연산 속도를 증가시키는 전자상거래용 RSA 공개키 암호 및 복호 시스템에 적용할 수 있는 고속의 모듈라 멱승 연산기를 제공한다.
도 1은 본 발명에 의한 고속의 모듈러 멱승 연산기의 시스템 구성도.
도 2는 도 1의 모듈러 곱셈부의 세부 구성도.
도 3은 도 2의 제 1 배수부(aB)의 세부 구성도.
도 4는 도 2의 제 2 배수부(qm)의 세부 구성도.
도 5는 도 4의 몫 추정부(quotient determination unit)의 구성도.
도 6은 도 5의 비교부의 세부 구성도.
도 7은 도 2의 제 2 리던던트 가산기(T)의 세부 구성도.
도 8a 내지 8b는 고속의 모듈러 멱승 연산 방법을 설명한 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
10 : E 레지스터 20 : 보수부
30 : M 레지스터 40 : Y 레지스터
50 : B 레지스터 60 : X 레지스터
100 : 모듈러 곱셈부(Modular multiplication unit)
110 : 제 1 배수부(Multiple Unit)(aB) 120 : 제 2 배수부(qm)
130 : 제 1 리던던트 가산기(Redundant adder),R
140 : 제 2 리던던트 가산기,T 150 : 이진 가산기(Binary Adder)
111 : 멀티플렉서(Multiplexer)
112 : 제 1 인코더(Encoder) 113 : 레지스터
114 : 제 1 멀티플렉서 네트워크(Multiplexer Network)
115 : 제 1 캐리 세이브 가산기(Carry Save Adder)
121 : 몫 추정부(quotient determination unit)
122 : 몫(q) 레지스터 123 : 제 2 인코더
124 : 제 2 멀티플렉서 네트워크 125 : 제 2 캐리 세이브 가산기
141 : 제 3 캐리 세이브 가산기 142 : 제 4 캐리 세이브 가산기
143 : T 레지스터
상기한 목적을 달성하기 위해 본 발명은 모듈러 멱승 연산식 C := bemod M에 있어서, 암호문 및 복호문 C, 평문 b, 암호화 또는 복호화 지수(exponent)는 e, 모듈러스(modulus)를 m이라고 할 때, 주기적 쉬프트 레지스터(cyclic shift-register)로 구성되고 상기 암호화 또는 복호화 지수 e값을 512비트씩 입력받아 일정 비트(16비트) 단위로 처리되어 저장되고, 상기 지수 e의 비트의 '0'과 '1'을 판별하기 위한 E 레지스터(10); 상기 모듈러스 m에 해당하는 값을 512비트씩 일정 비트(16비트) 단위로 입력되어 모듈러스 m의 보수값(25(-m))을 제공하기 위한 보수부(20); 상기 모듈러스 m의 보수값(25(-m))을 입력받아 저장하고 M레지스터 값(25(-m))을 제공하기 위한 M 레지스터(30); 상기 평문 b를 512 비트씩 입력받아 스케일링 상수(scaling constant) 2r(25)으로 스케일링하여 저장하고, 스케일링되지 않은 Y 레지스터 값, 최상위부터 5비트씩 공급되는 Y 레지스터 값()을 제공하고, 모듈러 곱셈(Modular multiplication)후에 모듈러 곱셈된 임시의 Y 레지스터 값()을 입력받아 임시 저장하고 상기 암호문 및 복호문 C의 결과 값을 출력하기 위한 쉬프트 레지스터(shift register)로 구성된 Y 레지스터(40); 상기 Y레지스터(40)로부터 상기 스케일링되지 않은 Y레지스터 값을 512비트씩 입력받아 임시 저장하고, 512비트씩 B 레지스터 값(B)을 제공하기 위한 B 레지스터(50); 최상위 5비트씩 공급되는 X 레지스터 값()을 제공하고 자체에서 피드백시켜 임시 저장하고, 상기 모듈러 곱셈(Modular multiplication)후에 모듈러 곱셈된 임시의 X 레지스터 값()을 저장하고 쉬프트 레지스터로 구성된 X 레지스터(60); 및 상기 M레지스터 값(25(-m)), 상기 B 레지스터 값(B), 상기 최상위부터 5비트씩 공급되는 X 레지스터 값(), 상기 최상위부터 5비트씩 공급되는 Y레지스터 값()을 입력받아 상기 모듈러 곱셈(modular multiplication)을 실행한 후, 상기 X 레지스터(60)와 상기 Y 레지스터(40)로 제공되는데, 상기 E 레지스터(10)에 입력된 값들은 최하위 비트부터 한 비트씩 검색되어 상기 지수 e의 비트가 '1'이면 상기 B 레지스터 값(B)과 상기 최상위부터 5비트씩 공급되는 X 레지스터 값()을 곱한 값과, 상기 B 레지스터 값(B)과 상기 최상위부터 5비트씩 공급되는 Y레지스터 값()을 곱한 값을 루프가 끝난 시점에서 각각 상기 X 레지스터(60)와 상기 Y 레지스터(40)로 제공하여 그 값을 갱신하고, 상기 지수 e의 비트가 '0'이면 상기 B 레지스터 값(B)과 상기 최상위부터 5비트씩 공급되는 Y레지스터 값()을 곱한 값을 상기 Y 레지스터(40)로 그 값을 갱신하며 상기 X 레지스터(60)는 이전 값을 유지하는 동작을 하여, 상기 Y 레지스터(40)에 저장되는 값은 매번 갱신되고 상기 X 레지스터(60)에 저장되는 값은 상기 E 레지스터(10)에서 검색된 상기 지수 e의비트가 '1'이었을 때에 값이 갱신되는 모듈러 곱셈부(modular multiplication unit)(100)로 구성된 것을 특징으로 하는 고속의 모듈라 멱승 연산기를 제공한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 도 1을 참조하면, 본 발명에 의한 고속의 모듈러 멱승 연산기는 E 레지스터(10), 보수부(20), M 레지스터(30), Y 레지스터(40), B 레지스터(50), X 레지스터(60) 및 모듈러 곱셈부(Modular multiplication unit)(100)로 구성된다.
모듈러 멱승 연산식 C := bemod M에 있어서, 암호문 및 복호문 C, 평문 b, 암호화 또는 복호화 지수(exponent)는 e, 모듈러스(modulus)를 m로 정의하여 설명한다.
상기 E 레지스터(10)는 주기적 쉬프트 레지스터(cyclic shift-register)로 구성되고, 상기 암호화 또는 복호화 지수 e값을 512비트씩 입력받아 일정 비트(16비트) 단위로 처리되어 저장되고, 상기 지수 e의 비트의 '0'과 '1'을 판별한다.
상기 보수부(20)는 상기 모듈러스 m에 해당하는 값을 512비트씩 일정 비트(16비트) 단위로 입력되어 모듈러스 m의 보수값(25(-m))을 상기 M 레지스터(30)로 제공한다.
상기 M 레지스터(30)는 상기 모듈러스 m의 보수값(25(-m))을 입력받아 저장하고 M레지스터 값(25(-m))을 상기 모듈러 곱셈부(100)로 제공한다.
상기 Y 레지스터(40)는 쉬프트 레지스터(shift register)로 구성되고, 상기평문 b를 512 비트씩 입력받아 스케일링 상수(scaling constant) 2r(25)으로 스케일링하여 저장하고, 스케일링되지 않은 Y 레지스터 값을 상기 B 레지스터(50)로 제공하고, 최상위부터 5비트씩 공급되는 Y 레지스터 값()을 상기 모듈러 곱셈부(100)로 제공하며, 상기 모듈러 곱셈부(100)로부터 모듈러 곱셈(Modular multiplication)후에 모듈러 곱셈된 임시의 Y 레지스터 값()을 입력받아 임시 저장하고 상기 암호문 및 복호문 C의 결과 값을 출력한다.
상기 B 레지스터(50)는 상기 Y 레지스터(40)로부터 상기 스케일링되지 않은 Y레지스터 값을 512비트씩 입력받아 임시 저장하고, 512비트씩 B 레지스터 값(B)을 상기 모듈러 곱셈부(100)로 제공한다.
상기 X 레지스터(60)는 쉬프트 레지스터로 구성되고, 최상위 5비트씩 공급되는 X 레지스터 값()을 제공하고 자체에서 피드백시켜 임시 저장하고, 상기 모듈러 곱셈(Modular multiplication)후에 모듈러 곱셈된 임시의 X 레지스터 값()을 입력받아 저장한다.
상기 모듈러 곱셈부(modular multiplication unit)(100)는 상기 M레지스터 값(25(-m)), 상기 B 레지스터 값(B), 상기 최상위부터 5비트씩 공급되는 Y레지스터 값(), 상기 최상위부터 5비트씩 공급되는 X 레지스터 값()을 입력받아 상기 모듈러 곱셈(modular multiplication)을 실행한 후, 상기 X 레지스터(60)와 상기 Y 레지스터(40)로 제공되는데, 상기 E 레지스터(10)에 입력된 값들은 최하위 비트부터 한 비트씩 검색되어 상기 지수 e의 비트가 '1'이면 상기 B 레지스터 값(B)과 상기 최상위부터 5비트씩 공급되는 X 레지스터 값()을 곱한 값과, 상기 B 레지스터 값(B)과 상기 최상위부터 5비트씩 공급되는 Y레지스터 값()을 곱한 값을 루프가 끝난 시점에서 각각 상기 X 레지스터(60)와 상기 Y 레지스터(40)로 제공하여 그 값을 갱신하고, 상기 지수 e의 비트가 '0'이면 상기 B 레지스터 값(B)과 상기 최상위부터 5비트씩 공급되는 Y레지스터 값()을 곱한 값을 상기 Y 레지스터(40)로 그 값을 갱신하며 상기 X 레지스터(60)는 이전 값을 유지하는 동작을 하여, 상기 Y 레지스터(40)에 저장되는 값은 매번 갱신되고 상기 X 레지스터(60)에 저장되는 값은 상기 E 레지스터(10)에서 검색된 상기 지수 e의 비트가 '1'이었을 때에 값이 갱신된다.
도 2는 도 1의 모듈러 곱셈부(100)를 설명한 것으로 제 1 배수부(aB)(Multiple Unit)(110), 제 2 배수부(qm)(120), 제 1 리던던트 가산기(Redundant Adder)(R)(130), 제 2 리던던트 가산기(T)(140) 및 이진 가산기(binary Adder)(140)로 구성된다.
상기 1 배수부(aB)(110)는 상기 512비트의 임시 저장된 B 레지스터 값(B), 상기 최상위부터 5비트씩 공급되는 X 레지스터 값(), 상기 최상위부터 5비트씩 공급되는 Y레지스터 값()을 입력받아 피승수(multiplicand)(B)와 승수(multiplier)(ai)의 곱을 고속으로 계산하기 위해서 곱하여 aiB(또는)값을 상기 제 2 리던던트 가산기(T)(140)로 제공한다.
상기 제 2 배수부(qm)(120)는 상기 모듈러스 m의 보수값(25(-m))을 입력받아*(25(-m))을 피승수와 승수의 곱을 고속으로 계산하기 위해서 곱하여 -25 m값을 상기 제 1 리던던트 가산기(R)(130)로 제공한다.
상기 제 2 리던던트 가산기(T)(140)는 상기 제 1 배수부(aB)(110)로부터 상기 aiB값을 입력받고, 상기 제 1 리던던트 가산기(R)(130)로부터 25 값을 입력받아 합산하여= 25 + aiB값을 상기 제 1 리던던트 가산기(R)(130)로 제공한다.
상기 제 1 리던던트 가산기(R)(130)는 상기 제 2 배수부(qm)(120)로부터 -25 m값을 입력받고 제 2 리던던트 가산기(T)(140)로부터= 25 + aiB값을 입력받아 합산하여=+ (-25 m) = 25 + aiB -25 m값을 상기 제 2 배수부(qm)(120) 및 이진 가산기(150)로 제공한다.
상기 이진 가산기(binary Adder)(150)는 상기 제 1 리던던트 가산기(R)(130)로부터 상기값을 입력받아 합산하여 암호화나 복호화 결과값(R)을 제공한다.
도 3은 도 2의 제 1 배수부(aB)의 세부 구성도를 나타낸다.
상기 제 1 배수부(aB)(110)는 멀티플렉서(Multiplexer)(111), 제 1 인코더(Encoder)(112), 레지스터(113), 제 1 멀티플렉서 네트워크(MultiplexerNetwork)(114) 및 제 1 캐리 세이브 가산기(Carry Save Adder)(115)로 구성된다.
상기 멀티플렉서(111)는 상기 최상위부터 5비트씩 공급되는 X 레지스터 값(), 상기 최상위부터 5비트씩 공급되는 Y레지스터 값()을 입력받아 멀티플렉싱(Multiplexing)하여 5비트의값 또는값을 상기 제 1 인코더(112)로 제공한다.
상기 제 1 인코더(112)는 상기 멀티플렉서(111)로부터 상기 5비트의값 또는값을 입력받아 곱셈 기록 테이블(Multiplier Record Table)로 인코딩(encoding)하여 6비트의값을 상기 레지스터(113)로 제공한다.
상기 레지스터(113)는 상기 6비트의값을 입력받아 임시 저장한 후 상기 제 1 멀티플렉서 네트워크(114)로 제공한다.
상기 제 1 멀티플렉서 네트워크(Multiplexer network)(114)는 상기 레지스터(113)로부터 상기 6비트의값을 입력받고 상기 512 비트의 임시 저장된 B 레지스터 값(B)을 입력받아 각각 0에서 31까지의 수를 배수 조합 군으로 미리 결정하고, 상기 6비트의값을 상기 곱셈 기록 테이블(Multiplier Record Table)을 참조하여 입력된 배수 조합 군중에서 승수 ai값에 대응하는 3개의 배수를 선택하여 4진법으로 3가지 배수값(42d2B, 41d1B, 40d0B)을 상기 제 1 캐리 세이브 가산기(115)로 제공한다.
상기 제 1 캐리 세이브 가산기(Carry Save Adder)(115)는 상기 제 1 멀티플렉서 네트워크(114)로부터 상기 3가지 배수값(42d2B, 41d1B, 40d0B)을 입력받아 입력된 3개의 배수를 더하여 연산 시간을 단축하기 위해 캐리(Carry)와 세이브(Save)를 각각 계산하여 최종적으로 합산하여 캐리와 세이브 형식으로 상기 5비트의값(값 또는값)을 상기 제1 배수부(aB)(110) 출력된 값을 상기 제 2 리던던트 가산기(140)로 제공한다.
도 4는 도 2의 제 2 배수부(qm)의 세부 구성도를 나타낸다.
상기 제 2 배수부(qm)(120)는 몫 추정부(quotient determination unit)(121), 몫(q) 레지스터(122), 제 2 인코더(123), 제 2 멜티플렉서 네트워크(124) 및 제 2 캐리 세이브 가산기(125)로 구성된다.
상기 몫 추정부(quotient determination unit)(121)는 상기 제 2 배수부(qm)(120)로 입력된값을 입력받아 상기값의 상위 12비트 값과 0~39까지의 상수(j), jm(상수(j)*모듈러스(m))의 상위 12비트 값과 비교하여 몫(q)을 추정하여 40비트의 몫()을 상기 몫(q) 레지스터(122)로 제공한다.
상기 몫(q) 레지스터(122)는 상기 몫 추정부(121)로부터 상기 40비트의 몫()을 입력받아 임시 저장후 상기 40비트의 몫()을 상기 제 2 인코더(123)로 제공한다.
상기 제 2 인코더(123)는 상기 제 2 멀티플렉서 네트워크(124)에 입력된 곱셈 기록 테이블(Multiplier Record Table)의 배수 조합군에 대응되는 값을 인코딩(Encoding)하여 6비트의값을 상기 제2 멀티플렉서 네트워크(124)로 제공한다.
상기 제 2 멀티플렉서 네트워크(Multiplexer Network)(124)는 상기 제 2 인코더(123)에서 제공된 상기 6비트의값을 입력받고, 상기 모듈러스 M을 입력받아 상기 곱셈 기록 테이블을 참조하여 입력된 배수 조합 군중에서 승수 ai값에 대응하는 3개의 배수를 선택하여 4진법으로 3가지 배수값(42d2B, 41d1B, 40d0B)을 상기 제 2 캐리 세이브 가산기(125)로 제공한다.
상기 제 2 캐리 세이브 가산기(125)는 상기 제 2 멀티플렉서 네트워크(124)로부터 3가지 배수값(42d2B, 41d1B, 40d0B)을 입력받아 3개의 배수를 더하여 연산 시간을 단축하기 위해 캐리(Carry)와 세이브(Save)를 각각 계산하여 최종적으로 합산하여 '(모듈러 곱셈된 임시 레지스터 값)/(모듈러스 M)'로 나눈 몫(-25 m)을 제공한다.
도 5를 참조하면 도 4의 몫 추정부(quotient determination unit)는 비교부(0-39) 및 배타적 논리합 연산기(XOR 1- XOR 40)로 구성된다.
상기 비교부(0-39)는 40개의 비교부로 구성되고, 512 비트에서값의 상위 12 비트씩을 각각 입력받아 비교하여 하이(1) 및 로우(0)의 디지털 신호인캐리1~캐리40들을 상기 배타적 논리합 연산기(XOR 1- XOR 40)로 제공한다.
상기 배타적 논리합 연산기(XOR 1- XOR 40)는 40개의 배타적 논리합 연산기(Exclusive OR:XOR)로 구성되고, 제 1 XOR 에선 '1'이 설정되고, 제 40 XOR에선 '0'이 설정되어 상기 배타적 논리합 연산기(XOR )에 각각 상기 캐리1~캐리40 들을 입력받아 배타적 논리합(XOR) 로직 연산을 수행하여 40개의 몫의 비트 벡터(q0,q1,…q39) 형태인 상기 몫()을 상기 몫(q) 레지스터(122)로 제공한다.
도 6을 참조하면 도 5의 상기 비교부(0-39)는 Cj레지스터(1), 캐리 세이브 가산기(Carry Save Adder)(2) 및 이진 가산기(binary Adder)(3)로 구성된다.
상기 Cj레지스터(1)는 상수 j 가 1~40일 때, Cj= j(-m)(j:상수, -m:보수 취한 모듈러스) 즉 C1= -1m, C2= -2m, … C40= -40m로 표현된 Cj의 상위 12비트 값을 임시 저장하고 캐리 세이브 가산기(2)로 제공한다.
상기 캐리 세이브 가산기(2)는 상기값의 상위 12 비트를 입력받고, 상기 Cj레지스터(1)로부터 상기 Cj의 상위 12비트 값을 입력받아 캐리와 세이브 형태로 합산하여+ j(-m)값을 이진 가산기(3)로 제공한다.
상기 이진 가산기(binary Adder)(3)는 상기 캐리 세이브 가산기(2)로부터 상기+ j(-m)값을 바이너리(binary)로 합산하여 캐리j(j:1~40)를 상기 배타적 논리합 연산기(XOR 1- XOR 40)로 제공한다.
도 7은 도 2의 제 2 리던던트 가산기(T)의 세부 구성도를 나타낸다.
상기 제 2 리던던트 가산기(T)는 제 3 캐리 세이브 가산기(141), 제 4 캐리 세이브 가산기(142) 및 T 레지스터(143)로 구성된다.
상기 제 3 캐리 세이브 가산기(141)는 상기값의 캐리(carry), 상기 25 값의 합계(sum) 및 캐리(carry)를 입력받아 3개의 입력을 2개로 합계(sum)와 캐리(carry)를 상기 제 4 캐리 세이브 가산기(142)로 제공한다.
상기 제 4 캐리 세이브 가산기(142)는 상기값의 합계(sum) 및 상기 제 3 캐리 세이브 가산기(141)의 상기 합계(sum)와 캐리(carry)를 입력받아 3개의 입력을 2개로= 25 + aiB값의 합계(sum)와 캐리(carry)를 상기 T 레지스터(143)로 제공한다.
상기 T 레지스터(143)는 상기 제 4 캐리 세이브 가산기(142)의= 25 + aiB값의 합계(sum)와 캐리(carry)를 입력받아 캐리 세이브(carry save) 형태로 바이너리(binary) 형태의 데이터를 저장하고 상기값을 상기 제 1 리던던트 가산기(R)(130)로 제공한다.
도 8a 내지 8b는 고속의 모듈러 멱승 연산 방법을 설명한 흐름도를 나타낸다. RSA 연산을 위한 상기 모듈러 멱승 연산기(Modular Exponentiation Unit)를 초기화하고(단계 S1), 상기 평문 b, 암호화 또는 복호화 지수 e, 모듈러스 m의 데이터를 입력됐는지를 체크하여(S2) 입력되면 상수 j(j는 0∼39), j(-M)(상수*보수취한 모듈러스) 값 40개를 생성하고(단계 S3) 상기 M 레지스터(30)의 비트 길이 결정, 상기 E 레지스터(10)의 비트 길이 결정하여 RSA 연산 칩(Chip)의 연산량의 최적화를 준비한다(단계 S4).
상기 RSA 연산 칩(Chip)의 모듈러 멱승(modular exponentiation) 연산 시작을 체크하여 안되었으면 상기 연산량의 최적화를 준비하고 모듈러 연산 시작후 상기 M 레지스터(30) 및 상기 E 레지스터(10)에 값을 입력하고, 상기 X 레지스터(60), 상기 Y 레지스터(40), 상기 B 레지스터(50)에 초기 값을 입력한다(단계 S6).
최상위부터 5비트의 ai값을 선택하여(단계 S7) 상기 제 1 배수부(aB)(110)의 곱셈 기록 테이블(Multiplier Record Table)로 인코딩된 5비트의 ai값을 배수 조합군으로 변환하고(단계 S8), 상기 멀티플렉서 네트워크에서 상기 곱셈 기록 테이블을 검색하여 승수(multiplier)(ai)값에 대응되는 배수를 출력한다(단계 S9).
25Ri+1값과 aiB를 상기 제 2 리던던트 가산기,T(redundant Adder)(140)에서 더하여 Ti= 25Ri+1+ aiB를 상기 제 1 리던던트 가산기,R(130)로 제공한다(단계 S10). 상기 제 2 배수부(qm)(120)로부터 제공된25qi+1(-M) 과 상기 Ti 값을 상기 제 1 리던던트 가산기,R(130)에서 더하여 Ri+1= Ti + 25qi+1(-M) = (25Ri+1+ aiB) -25qi+1M값을 계산한(단계 S11) 후, 중간 연산 종료를 체크하여(단계 S12) 아니면 상기 5비트의 a 값을 선택 과정(단계 S7)부터 반복 실행하고, 중간 연산이 종료되면 상기 Ri값을 상기 이진 가산기(binary Adder)(150)에서 더한다(단계 S13).
상기 모듈러 곱셈부(modular multiplication unit)(100)에서 상기 M레지스터 값(25(-m)), 상기 B 레지스터 값(B), 상기 최상위부터 5비트씩 공급되는 Y레지스터 값(), 상기 최상위부터 5비트씩 공급되는 X 레지스터 값()을 입력받아 상기 모듈러 곱셈(modular multiplication)을 실행한 후, 상기 E 레지스터(10)에 입력된 값들은 최하위 비트부터 한 비트씩 검색되어 상기 지수(e) 비트가 ei= 0 인지를 체크하여(단계 S14) ei= 0이 아니면 즉, ei= 1이면 상기 X 레지스터(60)와 상기 Y 레지스터(40) 값을 갱신하고 상기 S7 단계를 반복 수행하고, 상기 지수 e의 비트가 ei= 0이면 상기 Y 레지스터(40) 값을 갱신한 후 상기 S7 단계를 반복 수행하고, 상기 지수(ei)의 비트가 종료됐는지를 체크하여(단계 S17) 최종적으로 암호화 복호화의 결과 값(R)을 상기 Y 레지스터(40)로 제공하여 상기 모듈러 멱승(Modular Multiplication) 연산을 완료하여 상기 암호문 및 복호문 C = bemod m의 결과값을 출력한다.
따라서, RSA 암호 및 복호 알고리즘을 VLSI 하드웨어로 구현한 고속의 모듈라 멱승 연산기는 네트워크에서 전송되는 데이터들을 암호화된 데이타로 바꾸거나전자상거래에서 디지털 서명 등에 사용될 수 있다.
상술한 바와 같이, 본 발명에 의한 고속의 모듈라 멱승 연산기는 전자상거래용 RSA 공개키 암호 시스템을 사용한 VLSI에 적용할 수 있으며, 병렬 우-좌 이진 지수승 방법(right-to-left binary exponentiation method)을 통해 시간 복잡도(time complexity)를 3/2nT에서 nT로 줄일 수 있고, 몫(quotient)을 추정하는 방법(quotient estimation method)을 통해 연산 기간을 단축시킬 수 있으며, 반복적인 덧셈에 이진 가산기(binary adder)를 쓰지 않고 캐리 세이브 가산기(carry save adder)를 사용함으로써 캐리 전달(carry propagation)을 줄이고 연산시간을 단축시킬 수 있으며, 모듈러 곱셈의 파이프라인 처리를 통해 연산 시간을 단축시킬 수 있는 효과가 있다.
상기에서는 본 발명의 바람직한 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (7)

  1. 모듈러 멱승 연산식 C := bemod M에 있어서, 암호문 및 복호문 C, 평문 b, 암호화 또는 복호화 지수(exponent)는 e, 모듈러스(modulus)를 m이라고 할 때,
    주기적 쉬프트 레지스터(cyclic shift-register)로 구성되고, 상기 암호화 또는 복호화 지수 e값을 512비트씩 입력받아 일정 비트(16비트) 단위로 처리되어 저장되고, 상기 지수 e의 비트의 '0'과 '1'을 판별하기 위한 E 레지스터(10);
    상기 모듈러스 m에 해당하는 값을 512비트씩 일정 비트(16비트) 단위로 입력되어 모듈러스 m의 보수값(25(-m))을 제공하기 위한 보수부(20);
    상기 모듈러스 m의 보수값(25(-m))을 입력받아 저장하고 M레지스터 값(25(-m))을 제공하기 위한 M 레지스터(30);
    상기 평문 b를 512 비트씩 입력받아 스케일링 상수(scaling constant) 2r(25)으로 스케일링하여 저장하고, 스케일링되지 않은 Y 레지스터 값, 최상위부터 5비트씩 공급되는 Y 레지스터 값()을 제공하고, 모듈러 곱셈(Modular multiplication)후에 모듈러 곱셈된 임시의 Y 레지스터 값()을 입력받아 임시 저장하고 상기 암호문 및 복호문 C의 결과 값을 출력하기 위한 쉬프트 레지스터(shift register)로 구성된 Y 레지스터(40);
    상기 Y 레지스터(40)로부터 상기 스케일링되지 않은 Y레지스터 값을 512비트씩 입력받아 임시 저장하고, 512비트씩 B 레지스터 값(B)을 제공하기 위한 B 레지스터(50);
    최상위 5비트씩 공급되는 X 레지스터 값()을 제공하고 자체에서 피드백시켜 임시 저장하고, 상기 모듈러 곱셈(Modular multiplication)후에 모듈러 곱셈된 임시의 X 레지스터 값()을 저장하고 쉬프트 레지스터로 구성된 X 레지스터(60); 및
    상기 M레지스터 값(25(-m)), 상기 B 레지스터 값(B), 상기 최상위부터 5비트씩 공급되는 X 레지스터 값(), 상기 최상위부터 5비트씩 공급되는 Y레지스터 값()을 입력받아 상기 모듈러 곱셈(modular multiplication)을 실행한 후, 상기 X 레지스터(60)와 상기 Y 레지스터(40)로 제공되는데, 상기 E 레지스터(10)에 입력된 값들은 최하위 비트부터 한 비트씩 검색되어 상기 지수 e의 비트가 '1'이면 상기 B 레지스터 값(B)과 상기 최상위부터 5비트씩 공급되는 X 레지스터 값()을 곱한 값과, 상기 B 레지스터 값(B)과 상기 최상위부터 5비트씩 공급되는 Y레지스터 값()을 곱한 값을 루프가 끝난 시점에서 각각 상기 X 레지스터(60)와 상기 Y 레지스터(40)로 제공하여 그 값을 갱신하고, 상기 지수 e의 비트가 '0'이면 상기 B 레지스터 값(B)과 상기 최상위부터 5비트씩 공급되는 Y레지스터 값()을 곱한 값을 상기 Y 레지스터(40)로 그 값을 갱신하며 상기 X 레지스터(60)는 이전 값을 유지하는 동작을 하여, 상기 Y 레지스터(40)에 저장되는 값은 매번 갱신되고상기 X 레지스터(60)에 저장되는 값은 상기 E 레지스터(10)에서 검색된 상기 지수 e의 비트가 '1'이었을 때에 값이 갱신되는 모듈러 곱셈부(modular multiplication unit)(100)로 구성되는 것을 특징으로 하는 고속의 모듈라 멱승 연산기.
  2. 제 1 항에 있어서,
    상기 모듈러 곱셈부(100)는
    상기 512비트의 임시 저장된 B 레지스터 값(B), 상기 최상위부터 5비트씩 공급되는 X 레지스터 값(), 상기 최상위부터 5비트씩 공급되는 Y레지스터 값()을 입력받아 피승수(multiplicand)(B)와 승수(multiplier)(ai)의 곱을 고속으로 계산하기 위해서 곱하여 aiB(또는)값을 제공하기 위한제 1 배수부(aB)(Multiple Unit)(110);
    상기 모듈러스 m의 보수값(25(-m))을 입력받아*(25(-m))을 피승수와 승수의 곱을 고속으로 계산하기 위하여 곱하여 -25 m값을 제공하기 위한 제 2 배수부(qm)(120);
    상기 제 1 배수부(aB)(110)로부터 상기 aiB값을 입력받고, 상기 제 1 리던던트 가산기(R)(130)로부터 25 값을 입력받아 합산하여= 25 + aiB값을 제공하기 위한 제 2 리던던트 가산기(Redundant Adder)(T)(140); 및
    상기 제 2 배수부(qm)(120)로부터 -25 m값을 입력받고 제 2 리던던트 가산기(T)(140)로부터= 25 +aiB값을 입력받아 합산하여=+(-25 m) = 25 + aiB -25 m값을 상기 제 2 배수부(qm)(120) 및 이진 가산기(150)로 제공하기 위한 제 1 리던던트 가산기(R)(Redundant Adder)(130); 및
    상기값을 입력받아 합산하여 암호화나 복호화 결과값(R)을 출력하기 위한 이진 가산기(binary Adder)(150)로 구성되는 것을 특징으로 하는 고속의 모듈라 멱승 연산기.
  3. 제 2 항에 있어서,
    상기 제 1 배수부(aB)(110)는
    상기 최상위부터 5비트씩 공급되는 X 레지스터 값(), 상기 최상위부터 5비트씩 공급되는 Y레지스터 값()을 입력받아 멀티플렉싱(Multiplexing)하여 5비트의값 또는값을 제공하기 위한 멀티플렉서(Multiplexer)(111);
    상기 5비트의값 또는값을 입력받아 곱셈 기록 테이블(Multiplier Record Table)로 인코딩(encoding)하여 6비트의값을 제공하기 위한 제 1 인코더(112);
    상기 6비트의값을 입력받아 임시 저장하기 위한 레지스터(113);
    상기 레지스터(113)로부터 상기 6비트의값을 입력받고 상기 512 비트의 임시 저장된 B 레지스터 값(B)을 입력받아 각각 0에서 31까지의 수를 배수 조합 군으로 미리 결정하고, 상기 6비트의값을 상기 곱셈 기록 테이블(Multiplier Record Table)을 참조하여 입력된 배수 조합 군중에서 승수 ai값에 대응하는 3개의 배수를 선택하여 4진법으로 3가지 배수값(42d2B, 41d1B, 40d0B)을 제공하기 위한 제 1 멀티플렉서 네트워크(Multiplexer network)(114); 및
    상기 3가지 배수값(42d2B, 41d1B, 40d0B)을 입력받아 입력된 3개의 배수를 더하여 연산 시간을 단축하기 위해 캐리(Carry)와 세이브(Save)를 각각 계산하여 최종적으로 합산하여 캐리와 세이브 형식으로 상기 5비트의 ai-1값(값 또는값)을 제공하기 위한 제 1 캐리 세이브 가산기(Carry Save Adder)(115)로 구성되는 것을 특징으로 하는 고속의 모듈라 멱승 연산기.
  4. 제 2 항에 있어서,
    상기 제 2 배수부(qm)(120)는
    상기 제 2 배수부(qm)(120)로 입력된값을 입력받아 상기값의 상위 12비트 값과 0~39까지의 상수(j), jm(상수(j)*모듈러스(m))의 상위 12비트 값과비교하여 몫(quotient)을 추정하여 40비트의 몫()을 제공하기 위한 몫 추정부(quotient determination unit)(121);
    상기 몫 추정부(121)로부터 상기 40비트의 몫()을 입력받아 임시 저장후 상기 40비트의 몫()을 제공하기 위한 몫(q) 레지스터(122);
    상기 제 2 멀티플렉서 네트워크에 입력된 곱셈 기록 테이블(Multiplier Record Table)의 배수 조합군에 대응되는 값을 인코딩(Encoding)하여 6비트의값을 제공하기 위한 제 2 인코더(123);
    상기 제 2 인코더(123)에서 제공된 상기 6비트의값을 입력받고, 상기 모듈러스 M을 입력받아 상기 곱셈 기록 테이블을 참조하여 입력된 배수 조합 군중에서 승수 ai값에 대응하는 3개의 배수를 선택하여 4진법으로 3가지 배수값(42d2B, 41d1B, 40d0B)을 제공하기 위한 제 2 멀티플렉서 네트워크(Multiplexer Network)(124); 및
    상기 제 2 멀티플렉서 네트워크(124)로부터 3가지 배수값(42d2B, 41d1B, 40d0B)을 입력받아 3개의 배수를 더하여 연산 시간을 단축하기 위해 캐리(Carry)와 세이브(Save)를 각각 계산하여 최종적으로 합산하여 '(모듈러 곱셈된 임시 레지스터 값)/(모듈러스 M)' 나눈 몫(-25 m)을 제공하기 위한 제 2 캐리 세이브 가산기(125)로 구성되는 것을 특징으로 하는 고속의 모듈라 멱승 연산기.
  5. 제 2 항에 있어서,
    상기 제 2 리던던트 가산기(T)(140)는
    상기값의 캐리(carry), 상기 25 값의 합계(sum) 및 캐리(carry)를 입력받아 3개의 입력을 2개로 합계(sum)와 캐리(carry)를 제공하기 위한 제 3 캐리 세이브 가산기(141);
    상기값의 합계(sum) 및 상기 제 3 캐리 세이브 가산기(141)의 상기 합계(sum)와 캐리(carry)를 입력받아 3개의 입력을 2개로= 25 + aiB값의 합계(sum)와 캐리(carry)를 제공하기 위한 제 4 캐리 세이브 가산기(142); 및
    상기 제 4 캐리 세이브 가산기(142)의= 25 + aiB값의 합계(sum)와 캐리(carry)를 입력받아 캐리 세이브(carry save) 형태로 바이너리(binary) 형태의 데이터를 저장하고값을 상기 제 1 리던던트 가산기(R)(130) 제공하기 위한 T 레지스터(143)로 구성되는 것을 특징으로 하는 고속의 모듈라 멱승 연산기.
  6. 제 4 항에 있어서,
    상기 몫 추정부(121)는
    40개의 비교부로 구성되고, 512 비트에서값의 상위 12 비트씩을 각각 입력받아 비교하여 '1', 0'의 캐리1~캐리40들을 제공하기 위한 비교부(0-39); 및
    40개의 배타적 논리합 연산기(Exclusive OR:XOR)로 구성되고, 제 1 XOR 에선 '1'이 설정되고, 제 40 XOR에선 '0'이 설정되어 상기 배타적 논리합 연산기(XOR )에 각각 상기 캐리1~캐리40 들을 입력받아 배타적 논리합(XOR) 로직 연산을 수행하여 40개의 몫의 비트 벡터(q0,q1,…q39) 형태인 상기 몫()을 상기 몫(q) 레지스터(122)로 제공하기 위한 배타적 논리합 연산기(XOR 1- XOR 40)로 구성되는 것을 특징으로 하는 고속의 모듈라 멱승 연산기.
  7. 제 6 항에 있어서,
    상기 비교부(1-39)는 각각
    상수 j 가 1~40일 때, Cj= j(-m)(j:상수, -m:보수 취한 모듈러스) 즉 C1= -1m, C2= -2m, … C40= -40m로 표현된 Cj의 상위 12비트 값을 임시 저장하고 제공하기 위한 Cj레지스터(1);
    상기값의 상위 12 비트를 입력받고, 상기 Cj레지스터(1)로부터 상기 Cj의 상위 12비트 값을 입력받아 캐리와 세이브 형태로 합산하여+ j(-m)값을 제공하기 위한 캐리 세이브 가산기(Carry Save Adder)(2); 및
    상기 캐리 세이브 가산기(2)로부터 상기+ j(-m)값을 바이너리(binary) 로 합산하여 캐리j(j:1~40)를 상기 배타적 논리합 연산기(XOR 1- XOR 40)로 제공하기 위한 이진 가산기(binary Adder)(3)로 구성되는 것을 특징으로 하는 고속의 모듈라 멱승 연산기.
KR1019990017718A 1999-05-18 1999-05-18 고속의 모듈라 멱승 연산기 KR100330510B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990017718A KR100330510B1 (ko) 1999-05-18 1999-05-18 고속의 모듈라 멱승 연산기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990017718A KR100330510B1 (ko) 1999-05-18 1999-05-18 고속의 모듈라 멱승 연산기

Publications (2)

Publication Number Publication Date
KR19990064878A KR19990064878A (ko) 1999-08-05
KR100330510B1 true KR100330510B1 (ko) 2002-04-01

Family

ID=37479252

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990017718A KR100330510B1 (ko) 1999-05-18 1999-05-18 고속의 모듈라 멱승 연산기

Country Status (1)

Country Link
KR (1) KR100330510B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220407719A1 (en) * 2020-09-17 2022-12-22 Algemetric, Llc Methods and systems for encrypting rational numbers and adding randomness to rsa cryptosystems using p-adic numbers

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100413947B1 (ko) * 2001-07-07 2004-01-07 주홍정보통신주식회사 모듈라 지수승 연산 방식을 이용한 rsa 암호 장치
KR100449491B1 (ko) * 2001-12-11 2004-09-21 한국전자통신연구원 모듈러 곱셈 장치
KR100436814B1 (ko) * 2001-12-20 2004-06-23 한국전자통신연구원 아이씨카드용 알에스에이 암호 연산 장치
KR100617384B1 (ko) * 2004-09-24 2006-08-31 광주과학기술원 Rsa 보안 모듈의 몽고메리 곱셈기
CN115603909B (zh) * 2022-07-25 2024-04-09 华中科技大学 一种用于后量子密码算法Kyber的密文压缩及解压电路
CN118018200B (zh) * 2024-04-08 2024-06-28 北京宏思电子技术有限责任公司 一种加解密实现方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220407719A1 (en) * 2020-09-17 2022-12-22 Algemetric, Llc Methods and systems for encrypting rational numbers and adding randomness to rsa cryptosystems using p-adic numbers

Also Published As

Publication number Publication date
KR19990064878A (ko) 1999-08-05

Similar Documents

Publication Publication Date Title
EP0656709B1 (en) Encryption device and apparatus for encryption/decryption based on the Montgomery method using efficient modular multiplication
US4964164A (en) RSA computation method for efficient batch processing
US4870681A (en) Cryptographic method and cryptographic processor for carrying out the method
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
EP1708081B1 (en) Method and device for calculating a Montgomery conversion parameter
JP4783382B2 (ja) モンゴメリ法用乗算剰余計算装置
US6480606B1 (en) Elliptic curve encryption method and system
US7050579B1 (en) Cryptographic methods and apparatus using word-wise montgomery multiplication
KR100330510B1 (ko) 고속의 모듈라 멱승 연산기
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
CN109756335A (zh) 一种阶为梅森素数的有限域乘法群的公钥加密解密方法
US20020136400A1 (en) R-conversion encryption method and system
Takagi A fast RSA-type public-key primitive modulo p k q using Hensel lifting
JPH11212456A (ja) モンゴメリ法による乗算剰余計算装置
KR20010067016A (ko) 알에스에이 공개키 암호 고속화 장치 및 방법
EP0973293A2 (en) Public-key cryptography with increased protection against selective ciphertext attack
JP3591857B2 (ja) 擬似乱数生成方法及び装置、通信方法及び装置
KR20100062565A (ko) 모듈러스의 음의 역원을 구하는 방법
Rao et al. A novel modular multiplication algorithm and its application to RSA decryption
EP0356127A2 (en) A RSA computation method for efficient batch processing
Mohammadi et al. A fast and secure RSA public key cryptosystem
JPH0583244A (ja) 暗号通信符号化装置および復号化装置
WO2003030442A2 (en) Cisponentiation method, software, and device for exponentiation
Sookraj Continued fractions and cryptographic applications
Oseily et al. RSA Encryption/Decryption Using Repeated Modulus Method

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee