KR101350987B1 - 이산 대수 계산을 위한 분산 처리 시스템 및 방법 - Google Patents

이산 대수 계산을 위한 분산 처리 시스템 및 방법 Download PDF

Info

Publication number
KR101350987B1
KR101350987B1 KR1020110112373A KR20110112373A KR101350987B1 KR 101350987 B1 KR101350987 B1 KR 101350987B1 KR 1020110112373 A KR1020110112373 A KR 1020110112373A KR 20110112373 A KR20110112373 A KR 20110112373A KR 101350987 B1 KR101350987 B1 KR 101350987B1
Authority
KR
South Korea
Prior art keywords
agents
prime
prime factors
arithmetic
function
Prior art date
Application number
KR1020110112373A
Other languages
English (en)
Other versions
KR20130047385A (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 KR1020110112373A priority Critical patent/KR101350987B1/ko
Priority to CN201210427916.6A priority patent/CN103150289B/zh
Priority to US13/664,822 priority patent/US9032007B2/en
Publication of KR20130047385A publication Critical patent/KR20130047385A/ko
Application granted granted Critical
Publication of KR101350987B1 publication Critical patent/KR101350987B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3013Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the discrete logarithm problem, e.g. ElGamal or Diffie-Hellman systems

Abstract

본 발명은, 이산 대수 계산을 위한 분산 처리 시스템 및 방법에 관한 것으로, 사전 계산 테이블을 이용한 이산 대수 계산 과정 중 모듈러 연산 보조 테이블 생성, 사전 계산 테이블 생성 및 이산대수 계산의 이산 대수 계산의 반복 함수 적용을 통한 해답 검색 과정들을 복수의 연산 에이전트들에 분산하여 처리함으로써, 이산 대수 계산 속도 및 자원 효율을 향상시킬 수 있다.

Description

이산 대수 계산을 위한 분산 처리 시스템 및 방법{System and method of distributed processing for solving a discrete logarithm problem}
본 발명은, 이산 대수 계산을 위한 분산 처리 시스템 및 방법에 관한 것으로, 사전 계산 테이블을 이용한 이산 대수 계산 과정을 복수의 연산 에이전트들에 분산하여 처리함으로써, 이산 대수 계산 속도 및 자원 효율을 향상시킨 이산 대수 계산을 위한 분산 처리 시스템 및 방법에 관한 것이다.
이산 대수 문제(Discrete Logarithm Problem)란 N을 위수로 가지는 유한환 안에 형성되는 곱셈 연산에 대한 순환그룹(cyclic group)안에서 정의되는 것으로, 이러한 순환그룹의 생성자를 g라 했을 때, 순환 그룹의 원소 중에서 주어진 숫자(타겟 원소) y에 대하여, y = g^k mod N을 만족하는 k를 찾는 문제로서, 공개키 암호화 시스템 등에서서 널리 사용될 수 있다.
이러한 이산 대수 문제를 해결하는 방법 중 사전 계산 테이블을 이용한 이산 대수 계산 기법 중 사전 계산 테이블을 이용한 이산 대수 계산 방법은 TDL (Trapdoor Discrete Logarithm)이라고도 불리며, 사전 계산 테이블을 만드는 과정을 Chain Generation 이라 한다. TDL에서 사전 계산 테이블을 생성하고 이산 대수를 계산하는 과정은 예시하면, 다음과 같다.
먼저, 이산 대수 문제에 대해서, 환의 위수 N을 [수학식 1]과 같이 설정할 수 있다.
[수학식 1]
N = pq (단, p-1 및 q-1은 B-스무스 숫자(B-Smooth Number) 일정 개수의 소인수와 B/2-스무스 숫자 이하 일정 개수의 소인수의 곱)
여기에서, B는 암호학적 안정성을 고려하여 주로 80 이상의 숫자가 설정되는 것이 일반적이다.
이와 같이 소인수들이 설정되면, 각 소인수를 위수(group order)로 하는 부분 그룹(sub-group)을 정의할 수 있다. 이때 각 부분 그룹의 생성자를 하부생성자(sub-generator)라고 한다.
이러한 각 소인수에 대응하는 부분 그룹의 하부 생성자에 대하여 사전 계산 테이블을 구축할 수 있다. 사전 계산 테이블은 이러한 하부 생성자를 밑으로 하고, 서로 다른 임의의 지수를 갖는 일정 개수의 초기값에 대하여 r-adding walk와 같은 반복 함수를 적용하여 산출되는 함수값 및 지수를 저장한 테이블로, 각 소인수별로 생성되어 구축되는 것이 바람직하다.
그리고, 순환 그룹의 원소 중에서 주어진 숫자(타겟 원소) y에 대한 이산 대수 문제를 복수의 작은 이산 대수 문제로 분할할 수 있다. 분할된 작은 이산 대수 문제에서 주어진 숫자를 y'라고 가정하면, 작은 이산 대수 문제를 풀기 위해서는 y'를 밑으로 하고, 임의의 지수를 가진 값에 r-adding walk와 같은 반복 함수를 적용하는 과정이 필요하게 된다.
이러한 반복 함수 적용 과정에서 작은 이산 대수 문제에서는 해당 소인수에 대하여 구축한 사전 계산 테이블을 이용할 수 있다. 이산 대수 문제 해결 과정 중 반복 함수 적용시 산출되는 값과 사전 계산 테이블에 저장된 함수값이 일치하는 경우에 대하여, 사전 계산 테이블 내의 사전 계산된 정보를 이용함으로써, 전반적인 연산 과정의 효율을 높일 수 있다.
또한, 이러한 사전 계산 테이블을 구축하고, 주어진 숫자에 대한 이산 대수를 계산하는 과정에서 모듈러 곱셈 연산 기반의 반복함수를 계속 사용하여야 하고, 이러한 모듈러 곱셈 연산을 촉진하기 위해, 각 소인수에 대응하는 부분 그룹의 하부 생성자를 밑으로 하는 모듈러 곱셈 연산의 결과값들을 사전에 계산하여 테이블로 저장해둘 수 있으며, 이를 모듈러 곱셈 연산 보조 테이블이라 한다.
이러한 모듈러 곱셈 연산 보조 테이블을 이용하여 모듈러 곱셈 연산 기반의 반복함수를 촉진하는 것과 관련하여 가장 대표적인 알고리즘은 태그 트레이싱(Tag Tracing) 기법이나, 본 발명은 이에 한정되지 않는다.
이처럼 종래에는 암호화 키 발급 시 요구되는 이산 대수 문제를 계산함에 있어서, 태그 트레이싱 기법 또는 사전 계산 테이블을 이용하여 그 효율을 높이려는 시도가 있으나, 태그 트레이싱 기법 또는 사전 계산 테이블을 이용하는 방법을 적용하더라도, 여전히 상당한 양의 연산 시간 및 저장 공간이 요구되고 있으며, 따라서, 암호화키 발급 요청이 많아지면 이를 모두 수용하여 처리하는 데에 한계가 있다.
따라서, 이를 알고리즘 차원이 아닌, 분산 처리(distributed processing)와 같이, 시스템적으로 효율성을 높일 수 있는 기술이 요구된다.
본 발명은, 사전 계산 테이블을 이용한 이산 대수 계산 과정을 복수의 연산 에이전트들에 분산하여 처리함으로써, 이산 대수 계산 속도 및 자원 효율을 향상시킨 분산 처리 시스템 및 방법을 제공하는 데에 있다.
상기의 기술적 과제를 이루기 위한, 본 발명에 따른 이산 대수 계산을 위한 분산 처리 방법은, N=pq(p, q는 소수)를 모듈러(modulo)로 갖는 순환 그룹의 p-1 및 q-1를 각각 B-스무스 넘버(smooth number) 크기의 기정의된 개수의 소인수들과 B/2-스무스 넘버 이하의 크기의 기정의된 개수의 소인수들의 곱으로 설정하여 순환 그룹을 생성하는 단계; 순환 그룹의 p-1 및 q-1의 소인수들을 복수의 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 연산 에이전트들에 각각 할당하는 제1할당단계; 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 모듈러 연산 보조 테이블의 생성을 연산 에이전트들에 요청하는 단계; 순환 그룹의 p-1 및 q-1의 소인수들의 크기 및 연산 에이전트들의 각각의 연산처리 속도를 기초로 순환 그룹의 p-1 및 q-1의 소인수들을 연산 에이전트들에 각각 할당하는 제2할당단계; 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 사전 계산 테이블의 생성을 연산 에이전트들에 요청하는 단계; 순환 그룹에 속하는 타겟 원소의 이산 대수를 계산하기 위해, 순환 그룹의 p-1 및 q-1의 소인수들의 크기 및 연산 에이전트들의 각각의 연산처리 속도를 기초로 순환 그룹의 p-1 및 q-1의 소인수들을 연산 에이전트들에 각각 할당하는 제3할당단계; 및 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 이산 대수 계산의 반복 함수 적용을 통한 해답 검색을 연산 에이전트들에게 요청하는 단계를 포함한다.
보다 바람직하게는, 제2할당단계는 B/2-스무스 넘버 이하 크기의 소인수들을 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 연산 에이전트들에 각각 할당하는 단계를 포함할 수 있다.
보다 바람직하게는, 제2할당단계는 B-스무스 넘버 크기의 소인수 각각에 대응하는 사전 계산 테이블의 초기값을 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 연산 에이전트들에 각각 할당하는 단계를 포함할 수 있다.
보다 바람직하게는, 소인수별 사전 계산 테이블의 생성 요청 또는 이산 대수 계산의 반복 함수 적용을 통한 해답 검색 요청을 수신한 연산 에이전트는 메모리에 할당된 소인수에 대응하는 소인수별 모듈러 곱셈 연산 보조 테이블을 로드하는 단계를 더 포함할 수 있다.
보다 바람직하게는, 제3할당단계는 B/2-스무스 넘버 이하 크기의 소인수들을 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 연산 에이전트들에 각각 할당하는 단계를 포함할 수 있다.
보다 바람직하게는, 제3할당단계는 B-스무스 넘버 크기의 소인수 각각에 대응하는 반복 함수가 적용되는 부분 집합의 크기가 연산 에이전트들 각각의 연산 처리 속도에 비례하도록 반복 함수의 적용을 위한 함수 입력값을 연산 에이전트들에 각각 할당하는 단계를 포함할 수 있다.
상기의 기술적 과제를 이루기 위한, 본 발명에 의한, 이산 대수 계산을 위한 분산 처리 기능을 포함하는 프로그램을 수록한 컴퓨터로 읽을 수 있는 기록매체는 N=pq(p, q는 소수)를 모듈러(modulo)로 갖는 순환 그룹의 p-1 및 q-1를 각각 B-스무스 넘버(smooth number) 크기의 기정의된 개수의 소인수들과 B/2-스무스 넘버 이하의 크기의 기정의된 개수의 소인수들의 곱으로 설정하여 순환 그룹을 생성하는 기능; 순환 그룹의 p-1 및 q-1의 소인수들을 복수의 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 연산 에이전트들에 각각 할당하는 기능; 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 모듈러 연산 보조 테이블의 생성을 연산 에이전트들에 요청하는 기능; 순환 그룹의 p-1 및 q-1의 소인수들의 크기 및 연산 에이전트들의 각각의 연산처리 속도를 기초로 순환 그룹의 p-1 및 q-1의 소인수들을 연산 에이전트들에 각각 할당하는 기능; 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 사전 계산 테이블의 생성을 연산 에이전트들에 요청하는 기능; 순환 그룹에 속하는 타겟 원소의 이산 대수를 계산하기 위해, 순환 그룹의 p-1 및 q-1의 소인수들의 크기 및 연산 에이전트들의 각각의 연산처리 속도를 기초로 순환 그룹의 p-1 및 q-1의 소인수들을 연산 에이전트들에 각각 할당하는 기능; 및 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 이산 대수 계산의 반복 함수 적용을 통한 해답 검색을 연산 에이전트들에게 요청하는 기능을 포함하는 프로그램을 수록한다.
본 발명에 따르면, 사전 계산 테이블을 이용한 이산 대수 계산 과정을 분산 처리함으로써, 이산 대수 계산 속도 및 자원 효율을 향상시킴으로써, 공개키 암호 시스템에서의 비밀키 발급과 같은 이산 대수 계산을 이용하는 작업에서 유용하게 활용될 수 있으며, M2M 환경과 같이 다수의 장비가 존재하여 비밀키 발급 요청이 빈번하게 일어날 수 있는 환경에서 원활하게 암호화 시스템을 구동시킬 수 있게 한다.
도 1은 본 발명의 바람직한 일 실시예에 따른 이산 대수 계산을 위한 분산 처리 시스템의 구성을 도시한 블록도이다.
도 2는 본 발명의 바람직한 일 실시예에 따른 이산 대수 계산 분산 처리 시스템의 연산 제어부에서 수행되는 분산 처리 방법의 흐름을 도시한 도면이다.
도 3은 본 발명의 바람직한 일 실시예에 따른 이산 대수 계산 분산 처리 시스템에서 이산 대수 계산 과정 중 태그 트레이싱을 위한 보조 테이블을 생성하는 과정을 분산 처리하는 과정을 예시한 도면이다.
도 4는 본 발명의 바람직한 일 실시예에 따른 이산 대수 계산 분산 처리 시스템에서 이산 대수 계산 과정 중 사전 계산 테이블을 구축하는 과정을 분산 처리하는 과정을 예시한 도면이다.
도 5는 본 발명의 바람직한 일 실시예에 따른 이산 대수 계산 분산 처리 시스템에서 이산 대수 계산 과정 중 이산 대수를 계산하는 과정을 분산 처리하는 과정을 예시한 도면이다.
도 6은 본 발명의 바람직한 일 실시예에 따른 이산 대수 계산 분산 처리 시스템에서의 분산 처리 과정을 설명하기 위한 도면이다.
이하의 내용은 단지 본 발명의 원리를 예시한다. 그러므로 당업자는 비록 본 명세서에 명확히 설명되거나 도시되지 않았지만 본 발명의 원리를 구현하고 본 발명의 개념과 범위에 포함된 다양한 장치를 발명할 수 있는 것이다. 또한, 본 명세서에 열거된 모든 조건부 용어 및 실시예들은 원칙적으로, 본 발명의 개념이 이해되도록 하기 위한 목적으로만 명백히 의도되고, 이와 같이 특별히 열거된 실시예들 및 상태들에 제한적이지 않는 것으로 이해되어야 한다. 또한, 본 발명의 원리, 관점 및 실시예들 뿐만 아니라 특정 실시예를 열거하는 모든 상세한 설명은 이러한 사항의 구조적 및 기능적 균등물을 포함하도록 의도되는 것으로 이해되어야 한다. 또한, 이러한 균등물들은 현재 공지된 균등물뿐만 아니라 장래에 개발될 균등물 즉 구조와 무관하게 동일한 기능을 수행하도록 발명된 모든 소자를 포함하는 것으로 이해되어야 한다.
따라서, 프로세서 또는 이와 유사한 개념으로 표시된 기능 블록을 포함하는 도면에 도시된 다양한 소자의 기능은 전용 하드웨어뿐만 아니라 적절한 소프트웨어와 관련하여 소프트웨어를 실행할 능력을 가진 하드웨어의 사용으로 제공될 수 있다. 프로세서에 의해 제공될 때, 기능은 단일 전용 프로세서, 단일 공유 프로세서 또는 복수의 개별적 프로세서에 의해 제공될 수 있고, 이들 중 일부는 공유될 수 있다. 또한, 프로세서, 제어 또는 이와 유사한 개념으로 제시되는 용어의 사용은 소프트웨어를 실행할 능력을 가진 하드웨어를 배타적으로 인용하여 해석되어서는 아니 되고, 제한 없이 디지털 신호 프로세서(DSP) 하드웨어, 소프트웨어를 저장하기 위한 롬(ROM), 램(RAM) 및 비휘발성 메모리를 암시적으로 포함하는 것으로 이해되어야 한다. 주지 관용의 다른 하드웨어도 포함될 수 있다.
상술한 목적, 특징 및 장점들은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 더욱 분명해 질 것이다. 본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략하거나 간략하게 설명하는 것으로 한다.
한편 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 첨부된 도면을 참조하여 바람직한 실시예에 따른 본 발명을 상세히 설명하기로 한다.
도 1은 본 발명의 바람직한 일 실시예에 따른 이산 대수 계산을 위한 분산 처리 시스템의 구성을 도시한 블록도이다.
도 1에 따르면, 본 실시예에 따른 이산 대수 계산 분산 처리 시스템은 연산 제어부 (110) 및 복수의 연산 에이전트(121 내지 126)들로 구성될 수 있다. 이러한 분산 처리 시스템은 그 용도에 따라 수십 내지 수만 대의 컴퓨팅 장치들로 구성될 수 있으며, 이러한 컴퓨터 장치들은 물리 머신 또는 가상 머신의 형태로 구동될 수 있다.
각 컴퓨팅 장치는 해당 컴퓨팅 장치에 할당된 컴퓨팅 자원을 활용하여 이산 대수 문제를 풀기 위한 일련의 연산 과정을 수행할 수 있는데, 본 발명에서는 이처럼 컴퓨팅 자원을 활용하여 연산 과정을 수행하는 모듈을 연산 에이전트(121 내지 126)로 정의하며, 이러한 연산 에이전트들(121 내지 126)의 동작을 제어하는 모듈을 연산 제어부(110)로 정의한다.
이러한 연산제어부(110)는 연산 에이전트들(121 내지 126)과 통신하고, 연산 에이전트들이 분산 처리할 연산의 특성과 연산 에이전트들이 설치된 컴퓨팅 장치에 할당된 컴퓨팅 자원에 따른 연산 처리 속도 등을 고려하여, 각 연산 에이전트들에게 수행할 연산을 분배하고, 그 결과를 취합할 수 있다.
각 연산 에이전트들(121 내지 126)이 설치된 컴퓨팅 장치의 컴퓨팅 자원에 따라 주어진 연산에 소요되는 시각이 달라질 수 있다. 주로, CPU의 속도와 Memory의 크기에 따라 좌우될 수 있다. 연산제어부(110)는 이러한 요인들에 의해 결정된 연산 에이전트들의 연산 처리 속도에 따라 연산을 분배하여 전체적인 분산처리 과정의 효율을 높일 수 있다.
본 실시예에 따른 이산 대수 계산 과정의 연산 과정은 크게 (1) 모듈러 곱셈 연산 보조 테이블을 생성하는 과정, (2) 사전 계산 테이블을 구축하는 과정(Chain Generation) 및 (3) 최종적으로 이산 대수를 계산하는 과정(TDL)의 3 단계로 분류할 수 있다.
먼저, 모듈러 곱셈 연산 보조 테이블은 순환 그룹의 p-1 및 q-1의 소인수들 각각을 위수로 하는 부분 그룹들 각각의 하부 생성자를 밑으로 하는 모듈러 연산 곱셈 연산의 결과값을 미리 계산한 값들을 저장하는 것으로, 각 소인수별로 생성될 수 있으며, 소인수별 모듈러 곱셈 연산 보조 테이블의 생성 과정은 소인수의 크기에 무관하게 비교적 일정하다. 따라서, 이를 연산 에이전트(121 내지 126)에 분산처리할 경우에 각 연산 에이전트들(121 내지 126)의 작업 분량은 할당되는 소인수의 개수에 비례한다. 따라서, 연산제어부(110)는 모듈러 곱셈 연산 보조 테이블의 생성 과정을 소인수 별로 분할하여, 각 연산 에이전트들(121 내지 126)에 소인수별 모듈러 곱셈 연산 보조 테이블의 생성 작업을 할당하되, 각 연산 에이전트들(121 내지 126)에 할당되는 소인수의 개수는 각 연산 에이전트들(121 내지 126)의 연산처리 속도에 비례하도록 할당하는 것이 바람직하다.
그리고, 사전 계산 테이블은 순환 그룹의 p-1 및 q-1의 소인수들 각각을 위수로 하는 부분 그룹들 각각의 하부 생성자를 밑으로 하고 서로 다른 임의의 지수를 가진 기정의된 개수의 초기값에 대해 반복 함수를 적용하여 산출되는 순환 함수 값의 체인으로 구성된 것으로, 이러한 사전 계산 테이블을 구축하는 Chain Generation 과정은 모듈러 곱셈 연산 보조 테이블 구축 과정과 마찬가지로, 각 소인수 별로 수행될 수 있으며, 그러나, 소인수별 사전 계산 테이블의 생성 과정의 작업량은 소인수별 모듈러 곱셈 연산 보조 테이블과 달리, 소인수의 크기에 따라 많은 차이가 발생한다. 이는 소인수의 크기가 큰 경우에 이에 비례하여 반복함수가 적용될 초기값의 개수가 많아지기 때문이다. 따라서, 연산제어부(110)는 Chain Geneartion을 소인수 별로 분할하여, 각 연산 에이전트들(121 내지 126)에 소인수별 Chain Geneartion 작업을 할당하되, 각 연산 에이전트들(121 내지 126)의 연산처리 속도뿐만 아니라 할당되는 소인수의 크기를 고려하여 할당하는 것이 바람직하다.
그리고, 최종적인 이산 대수 계산 과정은 순환 그룹에 속하는 타겟 원소를 밑으로 하고 임의의 지수를 가진 값에 모듈러 곱셈 연산 보조 테이블을 이용하여 반복 함수를 적용하여 산출되는 함수값과 사전 계산 테이블이 저장된 함수 값이 일치하는 경우에 양 함수값의 지수 정보를 이용하여 타겟 원소의 이산 대수를 계산하도록 구성되며, 이러한 이산 대수 계산 과정의 작업량의 대부분은 반복 함수 적용을 통한 해답 검색 과정에 소요되기 때문에, 작업량은 반복 함수의 적용횟수에 비례하고, 소인수들 각각에 대하여 반복 함수가 적용되어야 하므로, 반복 함수에 적용하는 연산 과정을 각 소인수 별로 분할하여 수행할 수 있다.
또한, 소인수의 크기가 큰 경우에 이에 비례하여 반복함수가 적용될 초기값의 개수가 많아지는 등 반복 함수의 적용 횟수는 소인수의 크기에 비례하여 많아진다. 따라서, 연산제어부(110)는 이산 대수 계산 과정의 반복 함수 적용 연산을 소인수 별로 분할하여, 각 연산 에이전트들(121 내지 126)에 소인수별 반복 함수 적용 연산 작업을 할당하되, 각 연산 에이전트들(121 내지 126)의 연산처리 속도뿐만 아니라 할당되는 소인수의 크기를 고려하여 할당하는 것이 바람직하다.
도 2는 본 발명의 바람직한 일 실시예에 따른 이산 대수 계산 분산 처리 시스템의 연산 제어부에서 수행되는 분산 처리 방법의 흐름을 도시한 도면이다.
도 2를 참조하면, 먼저, 연산제어부는 N=pq(p, q는 소수)를 모듈러(modulo)로 갖는 순환 그룹의 p-1 및 q-1를 각각 B-스무스 넘버(smooth number)의 기정의된 개수의 소인수들과 B/2-스무스 넘버 이하의 기정의된 개수의 소인수들의 곱으로 설정하여 순환 그룹을 생성한다(S201).
여기에서 반드시 연산제어부 자체에서 직접 순환 그룹을 생성할 필요는 없으며, 연산제어부에서 하나의 연산 에이전트에 순환 그룹의 생성 연산을 요청하여 그 결과를 획득하는 형태로 구현되어도 무방하며, 본 발명은 이를 한정하지 않는다.
S201 단계에서 생성된 순환 그룹의 p-1 및 q-1의 소인수들 각각을 위수로 하는 부분 그룹들 각각의 하부 생성자를 밑으로 하는 모듈러 연산 곱셈 연산의 결과값을 미리 계산하여 모듈러 곱셈 연산 보조 테이블의 생성 연산을 분산 처리하기 위해, 순환 그룹의 p-1 및 q-1의 소인수들을 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 연산 에이전트들에 각각 할당한다(S202).
S202 단계에서 각 연산 에이전트에 할당된 소인수에 대응되는 소인수별 모듈러 연산 보조 테이블의 생성을 연산 에이던트들에 요청한다(S203).
S203 과정을 통해 소인수별 모듈러 연산 보조 테이블의 생성이 완료되면, 순환 그룹의 p-1 및 q-1의 소인수들 각각을 위수로 하는 부분 그룹들 각각의 하부 생성자를 밑으로 하고 서로 다른 임의의 지수를 가진 기정의된 개수의 초기값에 대해 반복 함수를 적용하여 산출되는 순환 함수 값의 체인으로 구성된 사전 계산 테이블을 구축하기 위해, 순환 그룹의 p-1 및 q-1의 소인수들의 크기 및 연산 에이전트들의 각각의 연산처리 속도를 기초로 순환 그룹의 p-1 및 q-1의 소인수들을 연산 에이전트들에 각각 할당한다(S204).
이때, 소인수들의 크기를 고려함에 있어서, B/2-스무스 넘버 이하의 작은 소인수의 경우에는 소인수의 크기가 상대적으로 작아 소인수의 크기에 따른 반복 함수의 적용에 따른 사전 계산 테이블 구축 작업량의 차이가 적으므로, 모듈러 곱셈 연산 보조 테이블의 생성 연산과 마찬가지로, 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 할당할 수 있다.
그러나, B-스무스 넘버 크기의 큰 소인수의 경우에는 작은 소인수와 달리 반복 함수의 적용에 따른 사전 계산 테이블 구축 작업량이 상대적으로 많으므로, 이를 복수의 연산 에이전트들에 분배할 수 있다.
즉, B-스무스 넘버 크기의 큰 소인수에 대응하는 반복함수 연산 즉, B-스무스 넘버 크기의 큰 소인수를 위수로 하는 부분 그룹의 하부 생성자를 밑으로 하는 기정의된 개수의 초기값들에 대한 반복함수 연산의 경우에는 초기값의 개수를 기준으로 사전 계산 테이블 구축 작업을 분할하여 복수의 연산 에이전트들에서 동시에 큰 소인수에 대응하는 사전 계산 테이블 구축을 동시에 진행할 수 있다.
S204 단계에서 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 사전 계산 테이블 생성을 연산 에이전트들에 요청한다(S205).
S201 단계에서 생성된 순환 그룹에 속하는 타겟 원소를 밑으로 하고 임의의 지수를 가진 값에 모듈러 곱셈 연산 보조 테이블을 이용하여 반복 함수를 적용하여 산출되는 함수값과 사전 계산 테이블이 저장된 함수 값이 일치하는 경우에 양 함수값의 지수 정보를 이용하여 타겟 원소의 이산 대수를 계산하기 위해, 순환 그룹의 p-1 및 q-1의 소인수들의 크기 및 연산 에이전트들의 각각의 연산처리 속도를 기초로 순환 그룹의 p-1 및 q-1의 소인수들을 연산 에이전트들에 할당한다(S206).
S206 단계에서 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 이산 대수 계산의 반복함수 적용을 통한 해답 검색을 연산 에이전트들에게 요청한다(S207).
이때, 소인수들의 크기를 고려함에 있어서, B/2-스무스 넘버 이하의 작은 소인수의 경우에는 소인수의 크기가 상대적으로 작아 소인수의 크기에 따른 반복 함수의 적용 작업량의 차이가 적으므로, 모듈러 곱셈 연산 보조 테이블의 생성 연산과 마찬가지로, 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 할당할 수 있다.
그러나, B-스무스 넘버 크기의 큰 소인수의 경우에는 작은 소인수와 달리 반복 함수의 적용 작업량이 상대적으로 많으므로, 이를 복수의 연산 에이전트들에 분배할 수 있다.
즉, B-스무스 넘버 크기의 큰 소인수에 대응하는 반복함수 연산의 경우에는 소인수와 함수 입력값를 기준으로 반복함수 적용을 통한 해답 검색 자체를 분할하여 복수의 연산 에이전트들에서 동시에 큰 소인수에 대응하는 반복함수 연산을 동시에 진행할 수 있다.
하나의 소인수에 대하여 이산 대수 계산의 반복함수 적용을 통한 해답 검색 자체를 분할하는 경우에 연산 에이전트들 중 하나의 연산 에이전트에서 해답을 검색하게 되면 해당 소인수에 대한 반복함수 적용 과정 전체가 완료되고, 따라서, 나머지 연산 에이전트들의 반복함수 적용을 중단시키는 것이 바람직하다.
이에 따라, 연산 에이전트로부터 B-스무스 넘버 크기의 소인수에 대한 반복 함수 적용을 통해 해답 검색에 성공했다는 검색 성공 메시지를 수신하면, B-스무스 넘버 크기의 소인수에 대한 반복 함수 적용을 요청한 나머지 연산 에이전트에 B-스무스 넘버 크기의 소인수에 대한 반복 함수 적용의 중단을 요청하는 검색 중단 메시지를 전송하는 단계(미도시)를 더 포함할 수 있다.
도 3은 본 발명의 바람직한 일 실시예에 따른 이산 대수 계산 분산 처리 시스템에서 이산 대수 계산 과정 중 태그 트레이싱을 위한 모듈러 곱셈 연산 보조 테이블(이하, 보조 테이블)을 생성하는 과정을 분산 처리하는 과정을 예시한 도면이다. 본 실시예에 따른 이산 대수 계산 분산 처리 시스템의 연산제어부(310) 및 연산 에이전트들(321 내지 326)은 도 1에 도시된 이산 대수 계산 분산 처리 시스템(100)의 연산제어부(110) 및 연산 에이전트들(121 내지 126)에 대응된다. 따라서, 도 1에 도시된 이산 대수 계산 분산 처리 시스템(100)에 관한 설명에서와 동일한 사항에 대해서는 이를 참조한다.
본 실시예에 따른 보조 테이블은 이산 대수 계산의 순환 그룹의 p-1 및 q-1의 소인수 각각에 대하여 계산될 수 있으므로, 연산제어부(310)는 각 연산 에이전트들(321 내지 326)에 소인수들을 할당하고(S301), 각 연산 에이전트들(321 내지 326)는 할당된 소인수에 해당하는 보조테이블을 생성한다(S302 내지 S304).
이러한 분산 처리 과정에서 처리 시간을 최적화하기 위해서는, 각 연산 에이전트들(321 내지 326)들의 작업이 동시에 끝나도록 작업이 할당되는 것이 바람직하며, 연산제어부(310)는 이처럼 분산 처리에 따른 처리 시간을 최소화하기 위해, 소인수들을 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 할당할 수 있다.
각 연산 에이전트들(321 내지 326)들의 작업에 따라 보조 테이블이 생성되면, 각 연산 에이전트들(321 내지 326)은 생성된 보조 테이블을 저장한다(S305 내지 S307).
이 때, 보조 테이블은 보조 테이블을 생성한 연산 에이전트들이 구동되는 컴퓨팅 장치의 로컬 스토리지에 저장되거나, 혹은 이산 대수 계산 분산 처리 시스템의 분산 데이터베이스에 저장될 수 있으나, 본 발명에서는 이를 제한하지 않는다.
도 4는 본 발명의 바람직한 일 실시예에 따른 이산 대수 계산 분산 처리 시스템에서 이산 대수 계산 과정 중 사전 계산 테이블을 구축하는 과정(이하, Chain Generation)을 분산 처리하는 과정을 예시한 도면이다. 본 실시예에 따른 이산 대수 계산 분산 처리 시스템의 연산제어부(310) 및 연산 에이전트들(321 내지 326)은 도 1에 도시된 이산 대수 계산 분산 처리 시스템(100)의 연산제어부(110) 및 연산 에이전트들(121 내지 126)에 대응된다. 따라서, 도 1에 도시된 이산 대수 계산 분산 처리 시스템(100)에 관한 설명에서와 동일한 사항에 대해서는 이를 참조한다.
본 실시예에 따른 Chain Generation은 이산 대수 계산의 순환 그룹의 p-1 및 q-1의 소인수 각각에 대하여 계산될 수 있으며, 이러한 분산 처리 과정에서 처리 시간을 최적화하기 위해서는, 각 연산 에이전트들(321 내지 326)들의 작업이 동시에 끝나도록 작업이 할당되는 것이 바람직하다.
Chain Generation의 작업량은 소인수의 크기에 영향을 받으며, 특히 상대적으로 크기가 큰 소인수에 해당하는 Chain Generation 의 경우에는 소인수의 크기에 비례하여 Chain Generation의 반복함수가 적용될 초기값의 개수가 많아지기 때문이다.
따라서, 본 실시예에서는 Chain Generation 작업을 두 단계로 나누어, 먼저 크기가 작은 소인수들 예컨대, B/2-스무스 넘버 이하 크기의 소인수들에 해당하는 Chain Generation 작업들을 소인수 단위로 연산 에이전트들에 분배하여 분산처리한(S410 내지 S430) 후에, 크기가 큰 소인수 예컨대, B-스무스 넘버 크기의 소인수 각각의 Chain Generation 작업을 소인수 및 초기값 단위로 연산 에이전트들에 분배하여 분산처리한다(S440 내지 S470).
먼저, B/2-스무스 넘버 이하 크기의 작은 소인수들에 대해서는, 연산제어부(310)는 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 작은 소인수들을 각각 할당하고(S410), 각 연산 에이전트들(321 내지 326)는 할당된 소인수에 해당하는 Chain Generation을 수행하여(S411 내지 S413), 생성된 사전 계산 테이블을 저장한다(S421 내지 S423).
연산제어부(310)는 B/2-스무스 넘버 이하 크기의 작은 소인수들에 해당하는 Chain Generation 작업이 완료(S430)된 후에, B-스무스 넘버 크기의 큰 소인수들 중 첫번째 큰 소인수의 Chain Generation을 연산 에이전트들(321 내지 326)에 분산하여 처리한다.
이를 위해, 연산제어부(310)는 첫번째 큰 소인수와 더불어, B-스무스 넘버 크기의 큰 소인수들 중 첫번째 큰 소인수에 해당하는 사전 계산 테이블에 사용되는 초기값들을 연산 에이전트들(321 내지 326)에 할당하고(S440), 각 연산 에이전트들(321 내지 326)는 할당된 소인수 및 초기값에 해당하는 Chain Generation을 수행하여(S441 내지 S443), 생성된 사전 계산 테이블을 저장한다(S451 내지 S453).
연산 제어부는 첫번째 큰 소인수에 해당하는 Chain Generation 작업이 완료(S460)된 후에, 나머지 큰 소인수들에 대한 Chain Generation 작업을 첫번째 큰 소인수에 해당하는 Chain Generation 작업(S440 내지 S460)과 마찬가지로 반복적으로 수행할 수 있다(S470).
본 실시예에서는 첫번째 큰 소인수에 해당하는 Chain Generation 작업을 모든 연산 에이전트들에 분배하여 분산처리하는 예를 도시하고 있으나, 초기값의 개수에 따라 일부의 연산 에이전트들에만 분배하여 분산처리할 수도 있으며, 다른 일부의 연산 에이전트들에서는 두번째 큰 소인수 기타 다른 큰 소인수들의 Chain Generation 작업이 분산처리되도록 구현될 수 있으며, 본 발명에서는 이를 한정하지 않는다.
아울러, 소인수별 Chain Generation 과정의 반복 연산에서 도 3에 도시된 실시예에서 생성된 소인수별 보조 테이블을 이용하는 것이 바람직하며, 소인수별 보조 테이블을 생성한 연산 에이전트들이 구동되는 컴퓨팅 장치의 로컬 스토리지에 소인수별 보조테이블이 저장된 경우에는, 소인수별 Chain Generation 과정에서 해당 소인수에 대응되는 보조 테이블에 접근을 용이하게 하기 위해, 소인수별 보조 테이블 생성 당시 연산 에이전트들(321 내지 326)에 할당된 소인수들과 동일하게. 소인수들이 연산 에이전트들(321 내지 326)에 할당되는 것이 바람직하다.
본 실시예에 따른 Chain Generation 과정에 따라 생성된 사전 계산 테이블들은 본 실시예에 따른 이산 대수 계산 분산 처리 시스템의 분산 데이터베이스에 저장되는 것이 바람직하며, 이러한 분산 데이터베이스에서 반복 함수 결과값을 통한 검색을 용이하게 하기 위해, 검색 키로 사용되는 반복 함수 결과 값에서 태그 트레이싱 기법의 특성에 따라 모든 키 값에서 동일한 태그 부분을 제외한 부분 중 소정의 비트를 Hash key로 이용하여 저장 위치를 결정할 수 있으나, 이는 하나의 실시예에 불과하며, 본 발명에서는 이를 제한하지 않는다.
도 5는 본 발명의 바람직한 일 실시예에 따른 이산 대수 계산 분산 처리 시스템에서 이산 대수 계산 과정 중 이산 대수를 계산하는 과정을 분산 처리하는 과정을 예시한 도면이다. 본 실시예에 따른 이산 대수 계산 분산 처리 시스템의 연산제어부(310) 및 연산 에이전트들(321 내지 326)은 도 1에 도시된 이산 대수 계산 분산 처리 시스템(100)의 연산제어부(110) 및 연산 에이전트들(121 내지 126)에 대응된다. 따라서, 도 1에 도시된 이산 대수 계산 분산 처리 시스템(100)에 관한 설명에서와 동일한 사항에 대해서는 이를 참조한다.
본 실시예에 따른 이산 대수 계산 작업 중 반복 함수 적용 부분은 이산 대수 계산의 순환 그룹의 p-1 및 q-1의 소인수 각각에 대하여 계산될 수 있고, 이산 대수 계산 작업량의 대부분은 반복 함수 적용을 통한 해답 검색 과정에서 소모되기 때문에, 이산 대수 계산 작업의 반복 함수 적용 부분을 소인수별로 분산 처리하는 것이 바람직하다.
반복 함수 적용 횟수는 소인수의 크기에 영향을 받으며, 특히 상대적으로 크기가 큰 소인수에 해당하는 반복 함수 적용의 경우에는 소인수의 크기에 비례하여 소인수와 더불어 반복 함수에 입력될 함수 입력값의 개수가 많아지기 때문이다.
따라서, 본 실시예에서는 작업을 두 단계로 나누어, 먼저 크기가 작은 소인수들 예컨대, B/2-스무스 넘버 이하 크기의 소인수들에 해당하는 이산 대수 계산의 반복 함수 적용 작업들을 소인수 단위로 연산 에이전트들에 분배하여 분산처리한(S510 내지 S530) 후에, 크기가 큰 소인수 예컨대, B-스무스 넘버 크기의 소인수 각각의 이산 대수 계산의 반복 함수 적용 작업을 소인수 및 함수입력값 단위로 연산 에이전트들에 분배하여 분산처리한다(S540 내지 S570).
먼저, B/2-스무스 넘버 이하 크기의 작은 소인수들에 대해서는, 연산제어부(310)는 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 작은 소인수들을 각각 할당하고(S510), 각 연산 에이전트들(321 내지 326)는 할당된 소인수에 해당하는 이산 대수 계산의 반복 함수 적용 작업을 수행하여(S511 내지 S513), 반복 함수 적용에 따른 해답을 포함한 반복 함수 적용 결과를 저장한다(S521 내지 S523).
연산제어부(310)는 B/2-스무스 넘버 이하 크기의 작은 소인수들에 해당하는 반복 함수 적용 작업이 완료(S530)된 후에, B-스무스 넘버 크기의 큰 소인수들 중 첫번째 큰 소인수의 반복 함수 적용을 연산 에이전트들(321 내지 326)에 분산하여 처리한다.
이를 위해, 연산제어부(310)는 첫번째 큰 소인수와 더불어, B-스무스 넘버 크기의 큰 소인수들 중 첫번째 큰 소인수에 해당하는 반복 함수에 소인수 외에 입력되는 함수입력값들을 연산 에이전트들(321 내지 326)에 할당하고(S540), 각 연산 에이전트들(321 내지 326)는 할당된 소인수 및 함수입력값에 해당하는 반복 함수 적용 작업을 수행하여(S541 내지 S543), 반복 함수 적용에 따른 해답을 포함한 반복 함수 적용 결과를 저장한다(S551).
즉, 연산제어부(310)는 하나의 큰 소인수에 대하여 함수 입력 값을 다르게 하여 연산 에이전트들(321 내지 326)에 할당함으로써, 순환 그룹 내에서 반복 함수가 적용되는 부분이 각 연산 에이전트마다 다르도록 함으로써, 반복 함수 적용 과정을 각 연산 에이전트들(321 내지 326)에 분산처리한다. 예컨대, 서로 연산 처리 속도가 동일한 n개의 연산 에이전트들에 하나의 소인수에 대한 반복 연산 적용을 분산 처리하는 경우에, 반복 함수인 r-adding walk 함수를 계산하면서 하부생성자의 지수 승수로 곱셈을 적용할 때, i 번째 연산에이전트의 지수 승을 i modulo n의 숫자로 설정하여 반복 함수를 적용할 수 있다.
이때, 소인수에 해당하는 순환 그룹 내에서 반복 함수가 적용되는 부분 집합의 크기가 예상 작업량이 되므로, 연산제어부(310)는 반복 함수가 적용되는 부분 집합의 크기가 연산 에이전트들 각각의 연산 처리 속도에 비례하도록 함수 입력값을 각 연산 에이전트들(321 내지 326)에 할당할 수 있다.
하나의 소인수에 대한 반복 함수 적용 과정을 할당받은 복수의 연산 에이전트들 중에서 작업을 마치고 해답을 도출한 연산 에이전트가 출현하면, 해당 소인수에 대한 반복 함수 적용 과정은 완료된 것이므로, 해당 소인수에 대한 반복 함수 적용 과정을 처리하던 나머지 연산 에이전트들은 반복 함수 적용 작업을 중단하는 것이 바람직하다.
예컨대, 작업을 마친 연산 에이전트(322)가 연산제어부(310)에 작업 완료 메시지를 발송하면, 작업 완료 메시지를 수신한 연산제어부(310)는 해당 큰 소인수에 대한 반복 함수 적용 과정을 처리하던 나머지 연산 에이전트들에게 작업 중지 요청 메시지를 발송할 수 있다(S560).
본 실시예에서는 첫번째 큰 소인수에 해당하는 반복 함수 적용 작업을 모든 연산 에이전트들에 분배하여 분산처리하는 예를 도시하고 있으나, 함수입력값의 개수에 따라 일부의 연산 에이전트들에만 분배하여 분산처리할 수도 있으며, 다른 일부의 연산 에이전트들에서는 두번째 큰 소인수 기타 다른 큰 소인수들의 반복 함수 적용 작업이 분산처리되도록 구현될 수 있으며, 본 발명에서는 이를 한정하지 않는다.
아울러, 소인수별 Chain Generation 과정의 반복 연산에서 도 3에 도시된 실시예에서 생성된 소인수별 보조 테이블을 이용하는 것이 바람직하며, 소인수별 보조 테이블을 생성한 연산 에이전트들이 구동되는 컴퓨팅 장치의 로컬 스토리지에 소인수별 보조테이블이 저장된 경우에는, 소인수별 Chain Generation 과정에서 해당 소인수에 대응되는 보조 테이블에 접근을 용이하게 하기 위해, 소인수별 보조 테이블 생성 당시 연산 에이전트들(321 내지 326)에 할당된 소인수들과 동일하게. 소인수들이 연산 에이전트들(321 내지 326)에 할당되는 것이 바람직하다.
태그 트레이싱 기법을 위한 보조 테이블은 소인수별 Chain Generation 및 이산 대수 계산 과정에서 반복 함수를 적용하는 과정에 이용되며, 처리 속도 향상을 위해 연산 에이전트의 메모리에 로드하여 사용하는 것이 보다 바람직하다.
따라서, 소인수별 Chain Generation 및 이산 대수 계산 과정을 개시하기 이전에, 해당 과정에서 사용할 보조 테이블을 메모리에 로드하는 단계를 거치는 것이 바람직하다.
도 6은 본 발명의 바람직한 일 실시예에 따른 이산 대수 계산 분산 처리 시스템에서의 분산 처리 과정을 설명하기 위한 도면이다.
도 6을 참조하면, 3대의 컴퓨팅 머신에 연산제어부(611) 및 연산 에이전트들(612, 622, 632)이 설치된 예가 도시된다. 본 실시예에서는 순환 그룹의 p-1 및 q-1의 소인수 중 큰 것이 4개, 작은 것이 20개 일 때를 가정하며, 이하에서는, 큰 소인수는 LP1 ~ LP4, 작은 소인수는 SP1 ~ SP20으로 기술한다.
설명의 편의를 위해, 본 실시예에 도시된 컴퓨팅 머신의 CPU 속도만 연산 처리 속도에 영향을 미치며 각 머신의 CPU 속도가 1: 1: 2로 상이하다고 가정한다. 이러한 가정 하에, 연산 에이전트 1, 2, 3의 상대적인 연산 처리 속도는 1: 1: 2가 된다.
먼저, 소인수별 보조 테이블 생성 과정에서 연산 제어부(611)는 소인수의 크기에 무관하게, 연산 에이전트들 각각의 상대적인 연산 처리 속도에 비례하여 소인수의 개수를 할당한다. 즉, 연산 에이전트 1, 2(612, 622)에는 6개의 소인수들을 각각 할당하고, 연산 에이전트 3(632)에는 12개의 소인수들을 할당한다.
그리고, 작은 소인수들(SP1 ~ SP20)에 대한 Chain Generation 과정에서, 연산 제어부(611)는 소인수의 크기에 무관하게, 연산 에이전트들 각각의 상대적인 연산 처리 속도에 비례하여 소인수의 개수를 할당한다. 즉, 연산 에이전트 1, 2(612, 622)에는 5개의 소인수들을 각각 할당하고, 연산 에이전트 3(632)에는 10개의 소인수들을 할당한다.
큰 소인수들(LP1 ~ LP4)에 대한 Chain Generation 과정에서, 연산 제어부(611)는 하나의 큰 소인수들에 대해서 사전 계산 테이블에 사용되는 초기값들을 연산 에이전트들(612, 622, 632)에 분배한다. 예컨대, LP1의 초기값이 1000개일 경우에는 연산 에이전트 1, 2(612, 622)에는 250개, 연산 에이전트 3(632)에는 500개를 분배하여 처리할 수 있으며, 나머지 큰 소인수들인 LP2 ~ LP4의 경우에도 이와 동일한 과정을 반복하여 처리할 수 있다.
그리고, 작은 소인수들(SP1 ~ SP20)에 대한 이산 대수 계산의 반복 함수 적용 과정에서, 연산 제어부(611)는 소인수의 크기에 무관하게, 연산 에이전트들 각각의 상대적인 연산 처리 속도에 비례하여 소인수의 개수를 할당한다. 즉, 연산 에이전트 1, 2(612, 622)에는 5개의 소인수들을 각각 할당하고, 연산 에이전트 3(632)에는 10개의 소인수들을 할당한다.
큰 소인수들(LP1 ~ LP4)에 대한 반복 함수 적용 과정에서, 연산 제어부(611)는 하나의 큰 소인수들에 대해서 반복 함수에 입력되는 함수 입력값들을 연산 에이전트들(612, 622, 632)에 분배한다. 예를 들어 LP1에 대해서, 반복 함수인 r-adding walk 함수를 계산하면서 하부생성자의 지수 승수로 곱할 때, Agent 1은 해당 지수 승수를 1 Modulo 4 인 숫자로, Agent 2는 3 Modulo 4인 숫자로 설정하고, Agent 3은 0 Modulo 2인 숫자로 설정할 수 있다.
 각 연산 에이전트들(612, 622, 632)에서 LP1에 대한 반복 함수를 적용하다가 하나의 연산 에이전트(622)가 해답을 찾은 경우, 해답을 찾은 연산 에이전트(622)는 그 결과를 분산 데이터베이스에 저장하고, 해답을 찾았다고 연산 제어부(611)에게 알리게 되고, 연산 제어부(611)는 나머지 연산 에이전트들(612, 632)의 LP1에 대한 반복 함수 적용 작업을 중단시킨다. 나머지 큰 소인수들인 LP2 ~ LP4의 경우에도 상기한 LP1에 대한 반복 함수 적용의 분산 처리 과정과 동일한 과정을 반복하여 처리할 수 있다.
본 발명에 따르면, 사전 계산 테이블을 이용한 이산 대수 계산 과정을 분산 처리함으로써, 이산 대수 계산 속도 및 자원 효율을 향상시킴으로써, 공개키 암호 시스템에서의 비밀키 발급과 같은 이산 대수 계산을 이용하는 작업에서 유용하게 활용될 수 있으며, M2M 환경과 같이 다수의 장비가 존재하여 비밀키 발급 요청이 빈번하게 일어날 수 있는 환경에서 원활하게 암호화 시스템을 구동시킬 수 있게 한다.
본 발명에 따른 이산 대수 연산 분산 처리 과정은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있으며, 또한 케리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 첨부된 도면에 도시된 일 실시예를 참고로 설명되었으나, 이는 예시적인 것에 불과하며, 당해 기술분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 수 있을 것이다. 따라서, 본 발명의 진정한 보호 범위는 첨부된 청구 범위에 의해서만 정해져야 할 것이다.

Claims (11)

  1. N=pq(p, q는 소수)를 모듈러(modulo)로 갖는 순환 그룹의 p-1 및 q-1를 각각 B-스무스 넘버(smooth number) 크기의 기정의된 개수의 소인수들과 B/2-스무스 넘버 이하의 크기의 기정의된 개수의 소인수들의 곱으로 설정하여 상기 순환 그룹을 생성하는 단계;
    상기 순환 그룹의 p-1 및 q-1의 소인수들을 복수의 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 상기 연산 에이전트들에 각각 할당하는 제1할당단계;
    상기 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 모듈러 연산 보조 테이블의 생성을 상기 연산 에이전트들에 요청하는 단계;
    상기 순환 그룹의 p-1 및 q-1의 소인수들의 크기 및 상기 연산 에이전트들의 각각의 연산처리 속도를 기초로 상기 순환 그룹의 p-1 및 q-1의 소인수들을 상기 연산 에이전트들에 각각 할당하는 제2할당단계;
    상기 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 사전 계산 테이블의 생성을 상기 연산 에이전트들에 요청하는 단계;
    상기 순환 그룹에 속하는 타겟 원소의 이산 대수를 계산하기 위해, 상기 순환 그룹의 p-1 및 q-1의 소인수들의 크기 및 상기 연산 에이전트들의 각각의 연산처리 속도를 기초로 상기 순환 그룹의 p-1 및 q-1의 소인수들을 상기 연산 에이전트들에 각각 할당하는 제3할당단계; 및
    상기 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 이산 대수 계산의 반복 함수 적용을 통한 해답 검색을 상기 연산 에이전트들에게 요청하는 단계를 포함하는 것을 특징으로 하는 이산대수 연산을 위한 분산 처리 방법.
  2. 제1항에 있어서,
    상기 소인수별 모듈러 연산 보조 테이블은 상기 순환 그룹의 p-1 및 q-1의 소인수들 각각을 위수로 하는 부분 그룹들 각각의 하부 생성자를 밑으로 하는 모듈러 연산 곱셈 연산의 미리 계산된 결과값을 포함하는 것을 특징으로 하는 이산대수 연산을 위한 분산 처리 방법.
  3. 제1항에 있어서,
    상기 사전 계산 테이블은 상기 순환 그룹의 p-1 및 q-1의 소인수들 각각을 위수로 하는 부분 그룹들 각각의 하부 생성자를 밑으로 하고 서로 다른 임의의 지수를 가진 기정의된 개수의 초기값에 대해 반복 함수를 적용하여 산출되는 순환 함수 값의 체인으로 구성되는 것을 포함하는 것을 특징으로 하는 이산대수 연산을 위한 분산 처리 방법.
  4. 제1항에 있어서,
    상기 이산 대수 계산은 상기 순환 그룹에 속하는 타겟 원소를 밑으로 하고 임의의 지수를 가진 값에 상기 모듈러 곱셈 연산 보조 테이블을 이용하여 반복 함수를 적용하여 산출되는 함수값과 사전 계산 테이블이 저장된 함수 값이 일치하는 경우에 양 함수값의 지수 정보를 이용하여 상기 타겟 원소의 이산 대수를 계산하는 것을 특징으로 하는 이산대수 연산을 위한 분산 처리 방법.
  5. 제1항에 있어서,
    상기 제2할당단계는 상기 B/2-스무스 넘버 이하 크기의 소인수들을 상기 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 상기 연산 에이전트들에 각각 할당하는 단계를 포함하는 것을 특징으로 하는 이산대수 연산을 위한 분산 처리 방법.
  6. 제1항에 있어서,
    상기 제2할당단계는 상기 B-스무스 넘버 크기의 소인수 각각에 대응하는 사전 계산 테이블의 초기값을 상기 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 상기 연산 에이전트들에 각각 할당하는 단계를 포함하는 것을 특징으로 하는 이산대수 연산을 위한 분산 처리 방법.
  7. 제1항에 있어서,
    상기 소인수별 사전 계산 테이블의 생성 요청 또는 상기 소인수별 이산 대수 계산의 반복 함수 적용을 통한 해답 검색 요청을 수신한 연산 에이전트는 메모리에 상기 할당된 소인수에 대응하는 소인수별 모듈러 곱셈 연산 보조 테이블을 로드하는 단계를 더 포함하는 것을 특징으로 하는 이산대수 연산을 위한 분산 처리 방법.
  8. 제1항에 있어서,
    상기 제3할당단계는 상기 B/2-스무스 넘버 이하 크기의 소인수들을 상기 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 상기 연산 에이전트들에 각각 할당하는 단계를 포함하는 것을 특징으로 하는 이산대수 연산을 위한 분산 처리 방법.
  9. 제1항에 있어서,
    상기 제3할당단계는 상기 B-스무스 넘버 크기의 소인수 각각에 대응하는 반복 함수가 적용되는 부분 집합의 크기가 연산 에이전트들 각각의 연산 처리 속도에 비례하도록 상기 반복 함수의 적용을 위한 함수 입력값을 상기 연산 에이전트들에 각각 할당하는 단계를 포함하는 것을 특징으로 하는 이산대수 연산을 위한 분산 처리 방법.
  10. 제9항에 있어서,
    상기 연산 에이전트로부터 상기 B-스무스 넘버 크기의 소인수에 대한 반복 함수 적용을 통해 해답 검색에 성공했다는 검색 성공 메시지를 수신하면, 상기 B-스무스 넘버 크기의 소인수에 대한 반복 함수 적용을 요청한 나머지 연산 에이전트에 상기 B-스무스 넘버 크기의 소인수에 대한 반복 함수 적용의 중단을 요청하는 검색 중단 메시지를 전송하는 단계를 더 포함하는 것을 특징으로 하는 이산대수 연산을 위한 분산 처리 방법.
  11. N=pq(p, q는 소수)를 모듈러(modulo)로 갖는 순환 그룹의 p-1 및 q-1를 각각 B-스무스 넘버(smooth number) 크기의 기정의된 개수의 소인수들과 B/2-스무스 넘버 이하의 크기의 기정의된 개수의 소인수들의 곱으로 설정하여 상기 순환 그룹을 생성하는 기능;
    상기 순환 그룹의 p-1 및 q-1의 소인수들을 복수의 연산 에이전트들의 각각의 연산처리 속도에 비례하는 개수로 상기 연산 에이전트들에 각각 할당하는 기능;
    상기 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 모듈러 연산 보조 테이블의 생성을 상기 연산 에이전트들에 요청하는 기능;
    상기 순환 그룹의 p-1 및 q-1의 소인수들의 크기 및 상기 연산 에이전트들의 각각의 연산처리 속도를 기초로 상기 순환 그룹의 p-1 및 q-1의 소인수들을 상기 연산 에이전트들에 각각 할당하는 기능;
    상기 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 사전 계산 테이블의 생성을 상기 연산 에이전트들에 요청하는 기능;
    상기 순환 그룹에 속하는 타겟 원소의 이산 대수를 계산하기 위해, 상기 순환 그룹의 p-1 및 q-1의 소인수들의 크기 및 상기 연산 에이전트들의 각각의 연산처리 속도를 기초로 상기 순환 그룹의 p-1 및 q-1의 소인수들을 상기 연산 에이전트들에 각각 할당하는 기능; 및
    상기 연산 에이전트들 각각에 할당된 소인수에 대응되는 소인수별 이산 대수 계산의 반복 함수 적용을 통한 해답 검색을 상기 연산 에이전트들에게 요청하는 기능을 포함하는 것을 특징으로 하는 프로그램을 수록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020110112373A 2011-10-31 2011-10-31 이산 대수 계산을 위한 분산 처리 시스템 및 방법 KR101350987B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020110112373A KR101350987B1 (ko) 2011-10-31 2011-10-31 이산 대수 계산을 위한 분산 처리 시스템 및 방법
CN201210427916.6A CN103150289B (zh) 2011-10-31 2012-10-31 用于离散对数计算的分布式处理系统和方法
US13/664,822 US9032007B2 (en) 2011-10-31 2012-10-31 Distributed processing system and method for discrete logarithm calculation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110112373A KR101350987B1 (ko) 2011-10-31 2011-10-31 이산 대수 계산을 위한 분산 처리 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20130047385A KR20130047385A (ko) 2013-05-08
KR101350987B1 true KR101350987B1 (ko) 2014-01-16

Family

ID=48173514

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110112373A KR101350987B1 (ko) 2011-10-31 2011-10-31 이산 대수 계산을 위한 분산 처리 시스템 및 방법

Country Status (3)

Country Link
US (1) US9032007B2 (ko)
KR (1) KR101350987B1 (ko)
CN (1) CN103150289B (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007212768A (ja) 2006-02-09 2007-08-23 Hitachi Ltd 楕円曲線暗号における事前計算テーブル作成装置
JP2008158458A (ja) 2006-12-26 2008-07-10 Murata Mach Ltd 離散対数処理装置と、公開鍵暗号システムでのセンター装置、及び離散対数処理プログラム
JP2011095284A (ja) 2009-10-27 2011-05-12 Nippon Telegr & Teleph Corp <Ntt> パラメータ設定装置、離散対数計算装置、事前計算装置、パラメータ設定方法、離散対数計算方法、事前計算方法、プログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE246418T1 (de) * 1997-02-14 2003-08-15 Citibank Na Aufbau eines zyklotomischen polynoms eines kryptosystems basierend auf dem diskreten logarithmus über endliche körper
US7359507B2 (en) * 2000-03-10 2008-04-15 Rsa Security Inc. Server-assisted regeneration of a strong secret from a weak secret
US6968456B1 (en) * 2000-08-08 2005-11-22 Novell, Inc. Method and system for providing a tamper-proof storage of an audit trail in a database
JP4663421B2 (ja) * 2005-06-24 2011-04-06 日本電信電話株式会社 離散対数演算装置、方法及びプログラム
CN101635627A (zh) * 2009-07-17 2010-01-27 兰州大学 一种基于离散对数难题的数字签名方案
KR101166129B1 (ko) * 2011-05-31 2012-07-23 서울대학교산학협력단 사전계산 테이블을 이용한 이산대수 계산 방법 및 그 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007212768A (ja) 2006-02-09 2007-08-23 Hitachi Ltd 楕円曲線暗号における事前計算テーブル作成装置
JP2008158458A (ja) 2006-12-26 2008-07-10 Murata Mach Ltd 離散対数処理装置と、公開鍵暗号システムでのセンター装置、及び離散対数処理プログラム
JP2011095284A (ja) 2009-10-27 2011-05-12 Nippon Telegr & Teleph Corp <Ntt> パラメータ設定装置、離散対数計算装置、事前計算装置、パラメータ設定方法、離散対数計算方法、事前計算方法、プログラム

Also Published As

Publication number Publication date
KR20130047385A (ko) 2013-05-08
CN103150289B (zh) 2016-08-03
CN103150289A (zh) 2013-06-12
US20130110899A1 (en) 2013-05-02
US9032007B2 (en) 2015-05-12

Similar Documents

Publication Publication Date Title
KR101262679B1 (ko) 클라우드 컴퓨팅을 위한 효율적인 자원 배분 장치
US9367344B2 (en) Optimized assignments and/or generation virtual machine for reducer tasks
Galbraith et al. Improved algorithm for the isogeny problem for ordinary elliptic curves
Krasnobayev et al. Methods for Comparing Numbers in Non-Positional Notation of Residual Classes.
Yu et al. A security-awareness virtual machine management scheme based on Chinese wall policy in cloud computing
Sasi et al. Straggler mitigation with tiered gradient codes
Gabay et al. Variable size vector bin packing heuristics-Application to the machine reassignment problem
CN107786580B (zh) 基于云计算平台的Paillier加密方法
KR101350987B1 (ko) 이산 대수 계산을 위한 분산 처리 시스템 및 방법
Tembhurne et al. Performance evaluation of long integer multiplication using OpenMP and MPI on shared memory architecture
CN116225373A (zh) 一种数据处理方法、装置、计算机设备及存储介质
KR20200107739A (ko) 부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법
US20210234688A1 (en) Outsourcing Exponentiation in a Private Group
WO2017031961A1 (zh) 数据处理方法和装置
Khan et al. Static Approach for Efficient Task Allocation in Distributed Environment
Gorva et al. Effective Load Balancing and Security in Cloud using Modified Particle Swarm Optimization Technique and Enhanced Elliptic Curve Cryptography Algorithm.
Balzuweit et al. Local search to improve coordinate-based task mapping
KR102248978B1 (ko) 다수 사용자의 분산 기계학습에서 평균 지연 속도 절감을 위한 자원 할당 방법 및 장치
Bai et al. Construction of Hierarchical Matrix on Distributed Memory Systems using a Task Parallel Language
Venturini et al. Performance analysis of parallel modular multiplication algorithms for ECC in mobile devices
Vostrov et al. Factorization algorithm based on the elliptic curve theory
CN114128208B (zh) 在私人群组中进行委外取幂的方法和系统
Wang et al. Parallel algorithm for hill cipher on mapreduce
Duemong et al. Applying Pell Numbers for Efficient Elliptic Curve Large Scalar Multiplication
KR101473955B1 (ko) Qr분해 연산 방법 및 기록매체

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170102

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171213

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190102

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20191226

Year of fee payment: 7