KR101763443B1 - 집적된 역수 연산들을 이용한 곡선 상의 페어링 결정 - Google Patents

집적된 역수 연산들을 이용한 곡선 상의 페어링 결정 Download PDF

Info

Publication number
KR101763443B1
KR101763443B1 KR1020127018129A KR20127018129A KR101763443B1 KR 101763443 B1 KR101763443 B1 KR 101763443B1 KR 1020127018129 A KR1020127018129 A KR 1020127018129A KR 20127018129 A KR20127018129 A KR 20127018129A KR 101763443 B1 KR101763443 B1 KR 101763443B1
Authority
KR
South Korea
Prior art keywords
elements
determining
mathematical
reciprocal
mathematical pairing
Prior art date
Application number
KR1020127018129A
Other languages
English (en)
Other versions
KR20120123320A (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 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20120123320A publication Critical patent/KR20120123320A/ko
Application granted granted Critical
Publication of KR101763443B1 publication Critical patent/KR101763443B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)
  • Radar Systems Or Details Thereof (AREA)

Abstract

암호화에서 이용하기 위해 곡선에 대한 수학적 페어링들을 결정하기 위한 하나 이상의 기법 및/또는 시스템이 개시된다. 곡선에 대한 수학적 페어링들을 결정하는 데에 이용되는 복수의 역수 연산이 (예를 들어 계산의 요소들의 이진 트리 표현의 개별 레벨들에서의 단일 역수 연산으로) 집적된다. 곡선에 대한 수학적 페어링들은 집적된 복수의 역수 연산을 이용하여 오른쪽으로부터 왼쪽으로 판독되는 스칼라의 이진 표현으로부터 아핀 좌표들로 결정된다.

Description

집적된 역수 연산들을 이용한 곡선 상의 페어링 결정{DETERMINATION OF PAIRINGS ON A CURVE USING AGGREGATED INVERSIONS}
컴퓨터들은 (인터넷과 같은) 네트워크들을 통해 점점 더 많이 상호접속되어 왔으며, 보안 및 인증 사안들이 점점 더 중요해져 왔다. 키 기반 암호를 수반하는 암호화 기법들은 예를 들어 메시지를 형성하는 이해 가능한 데이터의 시퀀스들(예를 들어, 전형적으로 평문으로 지칭됨)을 취하며, 암호화 프로세스를 통해 그들을 외견상 이해 불가능한 데이터(예를 들어, 전형적으로 암호문으로 지칭됨)로 수학적으로 변환할 수 있다. 이러한 예에서, 암호화는 반대로될 수 있으며, 그에 의해 적절한 키를 갖는 암호문의 수신인들이 암호문을 평문으로 다시 변환하는 것은 허용하지만, 적절한 키를 갖지 않는 수신인들이 평문을 복원하는 것은, 결코 불가능하지는 않지만 매우 어렵다.
공개 키 암호화 기법은 키 기반 암호의 한 구현이다. 공개 키 암호화에서, 예를 들어, 각각의 통신 당사자들은 공개/개인 키 쌍을 갖는다. 각각의 개별 쌍의 공개 키는 공개적으로 이용가능하게 되며(예를 들어, 또는 적어도 암호화된 통신을 송신하려고 하는 다른 자들이 이용할 수 있음), 개인 키는 비밀로 유지된다. 암호화를 이용하여 평문 메시지를 수신측 당사자에게 전달하기 위해서, 예를 들어 발송측 당사자는 수신측 당사자의 공개 키를 이용하여 평문 메시지를 암호문 메시지로 암호화하며, 그 암호문 메시지를 수신측 당사자에게 전달할 수 있다. 이러한 예에서, 암호문 메시지의 수신 시에, 수신측 당사자는 자신의 비밀 개인 키를 이용하여 메시지를 해독할 수 있으며, 그에 의해 원본 평문 메시지를 복구한다.
공개/개인 키 암호화의 예는 2개의 큰 소수(prime number)를 생성하며 그들을 함께 곱하여, 공개되는 큰 합성수를 얻는 것을 포함한다. 이러한 예에서, 소수들이 적절하게 선택되고 충분히 크다면, 그 소수들을 알지 못하는 누군가가 단순히 합성수를 아는 것으로부터 그 소수들을 알아내기가 매우 어려울 수 있다 (예를 들어 계산상의 실현 불가능함으로 인해 실질적으로 불가능함). 그러나, 이러한 방법이 안전하기 위해서는, 합성수의 크기가 1,000비트보다 커야 한다. 일부 상황들에서는, 그러한 큰 크기로 인해 이 방법을 이용할 수 없다.
인증의 예는 당사자 또는 머신이 자신이 제품 또는 서비스를 사용 또는 액세스하도록 허가받았음을 입증하려고 시도하는 경우이다. 종종 소프트웨어 프로그램(들)에 대해 제품 ID 시스템이 이용되며, 사용자는 소프트웨어가 제대로 지불된 것이라는 증거로서, 적절하게 허가받은 소프트웨어 패키지의 외부에 찍힌 제품 ID 시퀀스를 입력한다. 제품 ID 시퀀스가 지나치게 길면, 성가시고 사용자 친화적이지 않을 것이다. 다른 흔한 예들은 사용자가 인증 코드를 이용하여 컴퓨터 시스템에게 자기 자신을 식별시키는 사용자 인증을 포함한다.
다른 예로서, 암호화에서는 암호 키들을 생성하기 위해 타원 곡선이 종종 이용된다. 타원 곡선은 암호화에 매우 잘 맞는 구조 및 특성을 갖는 수학적 개체이다. 타원 곡선을 위한 많은 프로토콜들이 암호화에서의 사용을 위해 이미 표준화되어 있다. 암호화의 최근의 발전은 페어링(pairing)을 수반하는데, 여기에서는 암호 시스템을 만들어내기 위해, 타원 곡선 상의 점들과 같은 하나 이상의 그룹으로부터의 요소들의 쌍들이 결합되어 다른 그룹으로부터의 새로운 요소들을 생성한다.
본 개요는 이하의 상세한 설명에서 더 설명되는 개념들 중 선택된 것들을 간략한 형태로 소개하기 위해 제공된다. 본 개요는 청구되는 발명 대상의 핵심적인 요소 또는 본질적인 특징들을 식별하도록 의도된 것이 아니며, 청구되는 발명 대상의 범위를 제한하기 위해 이용되도록 의도된 것도 아니다.
암호화 및 암호 해독은 통상적으로 비밀에 기초하여 수행된다. 이 비밀은 점들의 그룹의 순서, 또는 생성기 또는 생성기의 배수와 같은 그룹의 소정의 다른 특성을 이용할 수 있다. 그룹의 요소들을 위하여 타원 곡선 상의 점들을 구현하는 것과 같이, 다양한 상이한 그룹들이 암호화에 이용될 수 있다. 타원 곡선으로부터 도출되는 요소들(예를 들어 점들)의 그룹은 예를 들어 그러한 그룹에 대한 이산 로그 문제(DLP)가 난해한 것으로 생각될 때 암호화/암호 해독에 이용될 수 있다. 예를 들어 안전한 암호화/암호 해독 프로세스를 만들어내기 위해, 난해한 DLP가 암호화에서 선호된다.
현재, 타원 곡선 상의 페어링들을 계산할 때, 타원 곡선이 정의되는 유한체(finite field) 내에서의 곱셈 또는 역수 연산(inversion)과 같은 다수의 연산이 요구될 수 있다. 다른 방식으로 계산 비용을 줄이고/거나 계산의 속도를 증가시키기 위해, 곱셈의 횟수를 감소시키고 시도할 수 있다. 계산의 속도를 증가시키기 위한 한 기법은 페어링을 계산할 때 행해지는 역수 연산의 횟수를 감소시키는 것이다.
예를 들어 아핀 공간에서 작업할 때에는 곱셈들 및 역수 연산들 양자 모두가 수행되며, 여기에서 역수 연산들은 곱셈들에 비해 계산상 더 비용이 많이 든다. 역수 연산의 횟수를 감소시키기 위해, 현재의 실무자들은 곡선 점들의 좌표계를 아핀 공간으로부터 사영 공간으로 변경한다. 이것은 역수 연산을 감소시키는 효과를 갖는 반면에, 계산상 비용이 덜 드는 곱셈의 횟수를 증가시킨다.
여기에 설명되는 기법들 및/또는 시스템들 중 하나 이상은 타원 곡선 상에서 페어링을 계산하는 데에 필요한 역수 연산의 횟수는 여전히 감소시키면서, 좌표들을 사영 공간으로 변환하는 것에 대한 대안을 제공한다. 이러한 기법들 및 시스템들을 이용하면, 예를 들어 아핀 공간 내의 좌표들에 대한 역수 연산들을 집적할 수 있으며, 페어링 계산에 이용되는 추가의 동작을 위해 그 집적된 역수 연산들을 재사용할 수 있다. 또한, 예를 들어 계산들의 부분들이 멀티코어 시스템들 상에서 병렬화될 수 있어서 전체적인 계산 시간을 가속한다. 이러한 방식으로, 예를 들어 암호 시스템에서 이용되는 페어링들이 현재의 구현들보다 더 적은 계산 자원을 이용하여 더 짧은 시간 내에(예를 들어 더 빠르게) 계산될 수 있다.
일 실시예에서, 암호화에서 사용할 곡선을 위한 수학적 페어링들을 결정할 때, 그 곡선을 위한 수학적 페어링들의 결정 시에 이용되는 복수의 역수 연산이 (예를 들어 페어링 계산에서의 중간 계산과 같은 단일 역수 연산으로) 집적된다. 곡선을 위한 수학적 페어링들은 집적된 복수의 역수 연산을 이용하여 오른쪽으로부터 왼쪽으로 판독되는 스칼라의 이진 표현을 따라 아핀 좌표들로 결정된다.
상기한 것과 관련 결과들의 달성을 위해, 이하의 설명 및 첨부 도면들은 소정의 예시적인 양상들 및 구현들을 제시한다. 이들은 하나 이상의 양태가 이용될 수 있는 약간의 다양한 방식을 나타내는 것에 지나지 않는다. 본 명세서의 다른 양상들, 이점들 및 신규한 특징들은 이하의 상세한 설명을 첨부 도면과 함께 고찰해보면 분명해질 것이다.
도 1은 여기에 개시된 방법들 및/또는 시스템들 중 하나 이상에 따른 예시적인 암호 시스템을 도시한 블록도이다.
도 2는 제품 식별자를 이용하여 소프트웨어의 유효성을 검증하는 예시적인 시스템의 도면이다.
도 3은 암호화에서 이용하기 위해 곡선을 위한 수학적 페어링들을 결정하기 위한 예시적인 방법의 흐름도이다.
도 4는 여기에 설명되는 방법들 중 하나 이상의 부분들의 구현의 일 실시예를 도시하는 흐름도이다.
도 5는 여기에 설명되는 기법들 및/또는 시스템들 중 하나 이상의 예시적인 구현을 도시하는 흐름도이다.
도 6은 암호화에서 이용하기 위해 곡선을 위한 수학적 페어링들을 결정하기 위한 예시적인 시스템을 도시하는 컴포넌트 블록도이다.
도 7은 여기에 설명되는 시스템들 중 하나 이상의 예시적인 구현을 도시한 컴포넌트 블록도이다.
도 8은 여기에 설명되는 시스템들 중 하나 이상의 예시적인 구현을 도시한 컴포넌트 블록도이다.
도 9는 여기에 설명되는 방법들 및/또는 시스템들 중 하나 이상을 구현하도록 만들어질 수 있는 예시적인 컴퓨터 판독 가능한 매체의 도면이다.
도 10은 여기에 설명되는 방법들 및/또는 시스템들 중 하나 이상을 구현하도록 만들어질 수 있는 예시적인 환경의 컴포넌트 블록도이다.
이제 유사한 참조번호들이 유사한 구성요소를 언급하기 위해 이용되는 도면들을 참조하여 청구되는 발명 대상이 설명된다. 이하의 설명에서, 설명의 목적을 위해, 청구되는 발명 대상의 완벽한 이해를 제공하기 위해 다수의 구체적인 상세가 제시된다. 그러나, 청구되는 발명 대상은 이러한 구체적인 상세 없이도 실시될 수 있는 것이 명백할 수 있다. 다른 경우들에서, 청구되는 발명 대상을 설명하는 것을 용이하게 하기 위해, 구조 및 장치들이 블록도 형태로 도시된다.
여기에 설명되는 하나 이상의 암호 페어링 기법 및/또는 시스템은 암호화 애플리케이션을 위해 이용될 수 있는 타원 곡선을 위한 수학적 페어링들을 결정할 수 있다. 예를 들어, 그들은 암호화 애플리케이션들에 대해 제안된 권한 부여(예를 들어 전자 서명)을 위한 페어링들을 결정하기 위해 이용될 수 있다.
전형적으로, 페어링 기반 암호 시스템은 (예를 들어 곡선을 아는 것에 의해) 그것의 요소들이 공개적으로 알려져 있는 그룹(예를 들어 타원 곡선으로부터 도출된 요소들 및 이진 승수의 그룹)을 이용한다. 페어링을 계산하기 위해 이용되는 스칼라가 공개적으로 알려진다. 알려지지 않는 비밀들은 입력 점들이거나, 페어링에 대한 입력 점들 내에 암시적으로 포함되어 있다. 보안의 기초는 관련된 이산 로그 문제의 난해함이다. 예로서 도 1에 도시된 것과 같은 페어링 기반 암호화 및 암호 해독은 전형적으로 대수 곡선의 양상들 또는 특성들에 기초하여 생성된 키들을 이용하는 암호화 및 암호 해독을 지칭한다. 도 1 및 도 2의 예시적인 암호 시스템은 공개적으로 알려져 있지만, 스칼라에 의해 곡선으로부터 생성된 점들은 비밀이기 때문에(그리고 결정하기 어렵기 때문에) 생성된 점들은 비밀인 곡선에 기초할 수 있다. 페어링 기반 암호화의 일 실시예에서, 곡선은 타원 곡선일 수 있고, 그룹을 구성하는 요소들은 타원 곡선 상의 점들로부터 생성될 수 있다. 본 기술분야의 통상의 지식을 가진 자가 알 수 있듯이, 전형적인 상황에서 점 P는 공개적으로 알려져 있고 스칼라 m은 비밀이다. 다음으로, 점 Q=mP도 공개적이게 된다. 관련된 이산 로그 문제가 난해하므로, P 및 Q로부터 m을 결정하는 것은 실현 불가능하다. 따라서, 비밀들은 보통 스칼라뿐이고, 점들은 공개된다.
페어링 기반의 암호 시스템들은 광범위하게 다양한 정보를 암호화하기 위해 이용될 수 있다. 예를 들어, 암호 시스템은 예를 들어 머신, 프로그램 또는 사용자의 유효성 검증 및/또는 인증을 허용하는 코드인 "짧은" 서명 또는 제품 식별자를 생성하기 위해 이용될 수 있다. 서명은 비교적 적은 수의 캐릭터를 이용한다는 점에서 "짧은" 서명일 수 있다.
도 1은 여기에 개시되는 방법들 및 시스템들의 몇몇 실시예들에 따른 예시적인 암호 시스템(100)을 도시한 블록도이다. 예시적인 암호 시스템(100)은 암호화기(102) 및 암호 해독기(104)를 포함한다. 평문 메시지(106)는 (단지 암호 해독기(104)에 의해 알려져 있는) 비밀 스칼라에 기초하여 생성된 공개적으로 알려진 그룹의 요소인 공개 키에 기초하여 메시지(106)를 암호화하는 페어링 기반 암호화기인 암호화기(102)의 입력 모듈(108)에서 수신될 수 있다. 일 실시예에서, 그룹은 암호화기(102)에 의해 이용되는 타원 곡선으로부터 생성된 점들의 그룹일 수 있으며, 이하에 더 상세하게 논의된다. 평문 메시지(106)는 전형적으로 암호화되지 않은 메시지이지만, 암호화기(102)는 다른 유형의 메시지들도 암호화할 수 있다. 따라서, 메시지(106)는 대안적으로는 소정의 다른 컴포넌트(도시되지 않음) 또는 사용자에 의해 암호화 또는 인코딩될 수 있다.
암호화기(102)의 출력 모듈(110)은 평문 메시지(106)의 암호화된 버전을 출력하며, 이것은 암호문(112)일 수 있다. 다음으로, 이해할 수 없는 텍스트의 스트링 또는 소정의 다른 데이터를 포함할 수 있는 암호문(112)은 예를 들어 암호화기(102)가 구현되어 있는 컴퓨터 시스템으로부터 멀리 떨어진 컴퓨터 시스템 상에 구현될 수 있는 암호 해독기(104)에 전달될 수 있다. 암호문(112)의 암호화된 성질을 고려해볼 때, 암호화기(102)와 암호 해독기(104) 사이의 통신 링크는 보안될 필요가 없다(예를 들어, 종종 통신 링크가 보안되지 않은 것으로 추정된다). 예로서, 통신 링크는 광범위하게 다양한 종래의 공개 및/또는 전용 프로토콜 중 하나 이상을 이용하여 구현되며 유선 및 무선 구현 양자를 포함하는 광범위하게 다양한 공개 및/또는 사설 네트워크 중 하나일 수 있다. 추가로, 통신 링크는 암호문을 포함하는 매체의 직접 배달(hand-delivery) 또는 제품 분배 체인의 다른 컴포넌트들과 같은 다른 비-컴퓨터 네트워크 컴포넌트들을 포함할 수 있다.
암호 해독기(104)는 입력 모듈(114)에서 암호문(112)을 수신하며, 암호 해독기(104)는 메시지(106)를 암호화하기 위해 이용된 공개 키에 대응하는 비밀 키(및 예를 들어 필요한 생성기)를 알고 있으므로, 출력 모듈(116)에 의해 평문 메시지(118)로서 출력되는 원본 평문 메시지(106)를 복원하기 위해 암호문(112)을 암호 해독할 수 있다. 일 실시예에서, 암호 해독기(104)는 타원 곡선으로부터 생성된 점들의 그룹(예를 들어 암호화기(102)에 의해 이용된 것과 같은 그룹)에 기초하여 메시지를 암호 해독하는 페어링 기반 암호 해독기이며, 이하에 더 상세하게 논의된다.
일 실시예에서, 암호화 및 암호 해독은 공개 키를 생성하기 위해 이용된 스칼라일 수 있는 비밀, 즉 타원 곡선으로부터의 점들의 그룹의 한 요소에 기초하여 예시적인 암호 시스템(100) 내에서 수행되며, 그에 의해 문제에 대한 해를 결정하는 것이 어려울 수 있게 한다. 비밀은 암호 해독기(104)에 알려지며, 공개 키는 암호화기(102)에 알려진 비밀에 기초하여 생성될 수 있다. 이러한 실시예에서, 이러한 지식은 암호화기(102)가 단지 암호 해독기(104)에 의해서만 후속하여 암호 해독될 수 있도록 평문 메시지를 암호화하는 것을 허용한다. 비밀에 관한 지식을 갖고 있지 않는 암호화기(102)를 포함하는 다른 컴포넌트들은 평문을 암호 해독할 수 없다 (예를 들어, 암호 해독이 기술적으로는 가능하더라도 계산상으로는 실현 불가능하다). 마찬가지로, 일 실시예에서, 암호 해독기(104)는 평문 메시지에 기초하여 비밀 키를 이용하여 메시지를 생성할 수 있는데, 이러한 프로세스는 평문 메시지를 디지털 서명하는 것으로서 지칭된다. 이러한 실시예에서, 서명된 메시지는 공개 키에 기초하여 디지털 서명을 검증할 수 있는 암호화기(102)와 같은 다른 컴포넌트들에 전달될 수 있다.
도 2는 여기에 설명된 방법들 및 시스템들의 몇몇 실시예들에 따라 제품 식별자를 이용하여 소프트웨어의 유효성을 검증하는 예시적인 시스템(200)의 도면이다. 예시적인 시스템은 제품 식별자(ID) 생성기(204)를 포함하는 소프트웨어 사본 생성기(202)를 포함한다. 소프트웨어 사본 생성기(202)는 하나 이상의 애플리케이션 프로그램(예를 들어 워드 프로세싱 프로그램, 스프레드시트 프로그램, 운영 체제, 프로그램 제품군 등)의 완전한 사본을 집합적으로 구현하는 데에 필요한 파일들을 포함할 수 있는 소프트웨어 매체(210)(예를 들어 CD-ROM, DVD(Digital Versatile Disk) 등)를 만들어낼 수 있다. 이러한 파일들은 로컬 소스(예를 들어 생성기(202) 내부의 하드 드라이브), 원격 소스(예를 들어 네트워크를 통해 생성기(202)에 연결됨) 또는 그들의 조합일 수 있는 소스 파일들(206)로부터 수신될 수 있다. 도 2에는 단 하나의 생성기(202)가 도시되어 있지만, 소프트웨어 매체(210)가 생성될 수 있는 속도를 증가시키기 위해 복수의 생성기가 개별적으로 및/또는 협업적으로 동작하는 경우가 많다.
제품 ID 생성기(204)는 숫자, 문자 및/또는 다른 기호들을 포함할 수 있는 제품 ID(212)를 생성할 수 있다. 생성기(204)는 여기에 설명되는 페어링 기반 암호화 기법들 및/또는 시스템들을 이용하여 제품 ID(212)를 생성한다. 제품 ID(212)는 라벨 위에 인쇄될 수 있고, 소프트웨어 매체(210)를 포함하는 캐리어 또는 소프트웨어 매체(210)가 놓여지는 상자에 부착될 수 있다. 대안적으로, 제품 ID(212)는 온라인 소스를 통해 애플리케이션 프로그램의 소프트카피를 수신할 때(예를 들어 인터넷을 통해 소프트웨어를 다운로드할 때) 사용자에게 제공되는 인증서와 같이, 전자적으로 이용가능하게 될 수 있다. 제품 ID(212)는 해당 제품 ID가 유효한 제품 ID임을 검증하기 위해(예를 들어 그에 따라 애플리케이션 프로그램이 설치되는 것을 허용하기 위해) 암호로 유효성 검증되는 것과 같이 복수의 기능을 제공할 수 있다. 다른 예로서, 제품 ID(212)는 그것이 연관되어 있는 특정 소프트웨어 매체(210)를 인증하는 기능을 할 수 있다.
생성된 소프트웨어 매체(210) 및 관련 제품 ID(212)는 분배 체인(214)에 제공될 수 있다. 분배 체인(214)은 아마도 하나 이상의 "중간 상인"(예를 들어 도매업자, 공급자, 배급 업자, 소매점(온라인이거나 오프라인) 등)을 포함하는 다양한 종래의 배급 시스템들 및 방법들, 및/또는 인터넷을 통하는 것과 같은 전자적 배포 중 하나 이상을 표현할 수 있다. 미디어(210) 및 관련 제품 ID(212)가 배포되는 방식에는 무관하게, 매체(210) 및 제품 ID(212)는 전형적으로 예를 들어 클라이언트 컴퓨터(218)의 사용자에 의해 구매되거나(예를 들어 허가되거나) 그러한 사용자에게 배포된다.
클라이언트 컴퓨터(218)는 소프트웨어 매체(210)를 읽고 애플리케이션 프로그램을 클라이언트 컴퓨터(218) 상에 설치(예를 들어, 클라이언트 컴퓨터(218)의 하드 디스크 드라이브 또는 메모리(도시되지 않음)에 애플리케이션 프로그램을 설치)할 수 있는 미디어 판독기(220)를 포함할 수 있다. 일 실시예에서, 설치 프로세스의 부분은 (예를 들어 허가된 사본의 유효성을 검증하기 위해) 제품 ID(212)를 입력하는 것을 수반할 수 있다. 이러한 입력은 수동 입력이거나(예를 들어 사용자가 키보드를 통해 제품 ID를 타이핑함), 대안적으로는 자동 입력일 수 있다(예를 들어 컴퓨터(218)는 애플리케이션 프로그램에 연관된 라이센스의 특정 필드에 자동 액세스하고 그로부터 제품 ID를 추출함). 클라이언트 컴퓨터(218)는 또한 애플리케이션 프로그램의 설치 동안 제품 ID(212)의 유효성을 검증하는 제품 ID 유효성 검증기(222)를 포함할 수 있다. 일 실시예에서, 유효성 검증은 여기에 설명된 페어링 기반 암호 해독 기법들 및 시스템들을 이용하여 수행될 수 있다. 유효성 검증기(222)가 제품 ID가 유효하다고 판정하면, 적절한 동작이 취해질 수 있다 (예를 들어 소프트웨어 매체(210) 상의 설치 프로그램은 애플리케이션이 컴퓨터(218) 상에 설치되는 것을 허용한다). 그러나, 유효성 검증기(222)가 제품 ID가 유효하지 않다고 판정하면, 다른 동작이 취해질 수 있다 (예를 들어 설치 프로그램은 설치 프로세스를 종료하여 애플리케이션 프로그램이 설치되는 것을 막는다).
일 실시예에서, 제품 ID 유효성 검증기(222)는 또한 제품 ID(212)에 기초하여 소프트웨어 매체(예를 들어 애플리케이션 프로그램)를 선택적으로 인증할 수 있다. 이러한 인증은 예를 들어 컴퓨터(218)에서 입력된 제품 ID(212)가 액세스되는 애플리케이션의 특정 사본에 대응하는지를 검증한다. 예로서, 인증은 설치 동안, 또는 제품 지원 또는 업그레이드를 요청할 때와 같이 상이한 시간들에서 수행될 수 있다. 대안적으로, 이러한 실시예에서, 인증은 원격 위치에서 수행될 수 있다 (예를 들어 콜 센터에서 클라이언트 컴퓨터(218)의 사용자가 기술 지원을 요청할 때, 사용자는 도움을 받기 전에 제품 ID(212)를 제공할 것을 요구받을 수 있다).
일 실시예에서, 애플리케이션 프로그램 제조자가 제품 ID의 인증 능력을 이용하기를 원하는 경우, 애플리케이션 프로그램의 각각의 사본에 대해 생성기(204)에 의해 생성된 제품 ID는 고유할 수 있다. 예로서, 고유한 제품 ID들은 애플리케이션 프로그램의 각 사본에 상이한 초기 수치 또는 값을 할당함으로써 생성될 수 있다 (예를 들어, 그러면 이러한 초기값은 제품 ID를 생성하기 위한 기반으로서 이용된다). 애플리케이션 프로그램의 사본에 연관된 고유한 값은 제조자에 의해 애플리케이션 프로그램의 특정 사본의 표시와 함께 인증 기록(208)(예를 들어 데이터베이스 또는 목록)으로서 선택적으로 유지될 수 있다. 사본의 표시는 예를 들어 애플리케이션 프로그램에 내장되거나 소프트웨어 매체(210) 상에 있는 일련 번호일 수 있고, 광범위하게 다양한 종래의 방식들 중 임의의 것으로 숨겨질 수 있다. 대안적으로, 예를 들어 개별 수치 자체가 특정 사본에 연관된 일련 번호일 수 있으며, 그에 의해 제조자가 제품 ID로부터 초기값을 추출하고 그것이 애플리케이션 프로그램 또는 소프트웨어 매체(210) 내에 내장된 일련 번호와 동일한 것임을 검증함으로써 애플리케이션 프로그램의 진정성을 검증할 수 있게 한다.
곡선에 대한 수학적 페어링이 결정되는 것을 허용하는 방법이 만들어질 수 있는데, 여기에서 암호 키로서 제출되는 요소들(예를 들어 타원 곡선 상의 점들)의 제1 집합은 곡선 상의 알려진 점들과 비교되고 암호화를 위해 이용될 수 있다. 효과적인 암호 시스템들은 타원 곡선으로부터의 점들의 그룹과 같이, 그룹에 대한 이산 로그 문제(DLP)가 난해한(즉, 계산하기 어려운) 그룹들에 전형적으로 기초한다. DLP는 그룹 곱셈과 같은 이진 연산과 함께 하는 요소들의 컬렉션인 그룹 내에서 만들어질 수 있다. 실례로서, DLP는 다음과 같을 수 있다: 유한한 그룹 G 내의 요소 g 및 G의 요소인 다른 요소 h가 주어질 때, gx=h로 되는 정수 x를 구한다. 암호화에서 사용하기 위해 페어링을 생성하는 것은 전형적으로 타원 곡선이 정의되는 유한체 내에서의 다수의 기초 곱셈들을 요구한다.
도 3은 암호화에서 사용하기 위해 곡선에 대한 수학적 페어링을 결정하기 위한 예시적인 방법(300)의 흐름도이다. 예시적인 방법(300)은 단계(302)에서 시작하고, 단계(304)에서 곡선을 위한 수학적 페어링들을 결정하는 데에 이용되는 복수의 역수 연산을 집적하는 것을 수반한다. 타원 곡선에 대한 페어링 연산들은 유한체 내에서의 다수의 기초 곱셈을 이용하므로, 페어링 연산들을 더 효율적으로 하기 위해, 예를 들어 곱셈의 수가 경감될 수 있고/거나 다른 페어링 연산들에서의 효율성이 발생될 수 있다.
일 실시예에서, 곡선을 위한 유한체 내에서 곱셈 및 역수 연산(예를 들어 승산 역수 또는 상반수(reciprocal)를 식별하는 것) 양자 모두가 페어링 연산을 위해 수행된다. 역수 연산들은 전형적으로 곱셈에 비하여 수행에 있어서 계산상 비용이 더 많이 든다. 예를 들어, 역수 연산의 횟수를 감소시키기 위해 곡선 점들에 대해 이용되는 좌표계가 아핀으로부터 사영으로 흔하게 변경되므로, 계산에 대한 역수 연산 대 곱셈 비율은 종종 80 대 1일 수 있다. 역수 결정의 실례로서, 영이 아닌 실수 x의 역수를 근사하기 위해, 수치 y는 2y-xy2으로 반복하여 치환될 수 있다. 본 예에서, y에 대한 변경들이 임계 내에 남아있을 때, y는 x의 역수의 근사치이다. 본 예는 설명을 위한 것에 지나지 않으며, 특히 복소수와 같은 다른 유형의 수를 위한 역수를 결정하기 위해 다른 기법들이 이용될 수 있음을 알 것이다.
예를 들어 예시적인 방법(300)에서, 아핀 좌표계에서 작업하는 동안 역수 연산들을 결합하고 동시에 그들을 결정함으로써 역수 연산의 횟수가 크게 경감될 수 있다. 일 실시예에서, 페어링 계산을 위해 아핀 좌표들을 이용할 때, 각각의 배증(doubling)(예를 들어 곱셈) 및 덧셈 동작들은 후속 동작에서 평가되는 라인을 위한 기울기 값을 계산하기 위해 유한체 역수 연산을 이용한다. 이러한 실시예에서, 역수 연산들은 예를 들어 I회의 유한체 역수 연산을 1회의 역수 연산 및 3(I-1)회의 곱셈으로 치환하기 위한 "몽고메리 트릭"을 이용하여 집적될 수 있다.
몽고메리 트릭의 실례로서, 요소 x 및 y에 대한 역수를 결정하기 위해, 2개의 역수를 결정하는 대신에 곱 xy가 결정되고 그것의 역수가 계산될 수 있다. 이러한 예에서는, 다음으로 x 및 y의 역수가 곱셈 : x-1 = (xy)-1y 및 y-1 = (xy)-1x에 의해 결정될 수 있다. 이러한 방식으로, 본 예에서는 2개의 요소 x 및 y의 역수가 1회의 역수 연산 및 3회의 곱셈에 의해 결정될 수 있다. n개의 요소에 대해 역수들이 결정되어야 하는 경우, 단 1회의 역수 연산 및 3(n-1)회의 곱셈이 수행될 수 있다. 그러므로, 페어링 계산이 복수의 역수 연산(n)을 포함하는 일 실시예에서, n회의 역수 연산이 1회의 역수 연산으로 집적될 수 있다.
일 실시예에서, [a1, ..., as]가 상반수 [a1 -1,...as -1]이 계산되어야 할 요소들의 시퀀스라고 하자. 상반수들은 먼저 곱 a1...as, 그것의 상반수 (a1...as)-1, 곱들 a1...ai-1ai+1...as를 계산하며(1≤i≤s), 아래의 식에 의해 단일 요소의 역수들을 계산함으로써 계산될 수 있다:
ai -1 = (a1 ai-1 ai+1 as)(a1...as)-1
동작들은 1회의 역수 연산 및 3(s-1)회의 곱셉에 의해 수행될 수 있다. 즉, s회의 역수 연산이 1회의 역수 연산 및 3(s-1)회의 곱셈에 의해 치환될 수 있다.
일 실시예에서, 곱 a1 a2 ...as는 예를 들어 s-1회의 곱셈의 이진 트리에서 계산될 수 있는데, 그 s-1개의 곱은 역수 연산 집적에서의 사용을 위해 저장될 수 있다. 또한, 이러한 실시예에서, 상반수 (a1 a2...as)-1가 계산되고, 2(s-1)회의 곱셈으로 동일 트리를 따라 후속 상반수들이 계산된다.
도 3의 예시적인 방법(300)으로 되돌아가면, 단계(306)에서, 집적된 역수 연산들을 이용하여 오른쪽으로부터 왼쪽으로 판독되는 스칼라의 이진 표현을 따라 아핀 좌표들로 곡선에 대한 수학적 페어링들이 결정된다. 곡선에 대하여 테이트 페어링(Tate pairing)을 계산할 때, 전형적인 밀러 루프 알고리즘(Miller loop algorithm)은 왼쪽으로부터 오른쪽으로(또는 하향식으로) 스칼라를 거쳐간다. 실례로서, 밀러 알고리즘의 분모가 제거되도록 k>1이라고 가정하자.
이하의 예시적인 실시예 및 실례들에 대하여, 이하의 표기법을 이용한다: p>3은 소수이고, Fq는 특성 p의 유한체라고 하자. E는 바이에르슈트라스(Weierstrass) 식 E: y^2=x^3+ax+b를 갖는 Fq에 걸쳐 정의된 타원 곡선이라고 하자. r|#E(Fq)인 소수 r에 대하여, k는 r에 대한 E의 임베딩 정도(embedding degree), 즉 k는 r|q^k-l인 가장 작은 양의 정수라고 하자. E 상의 r 토션 점들(r-torsion points)의 집합은 E[r]로 표기될 수 있고, i>0에 대하여 F_(q^i)-유리 r 토션 점들의 집합은 E(F_(q^i))[r]로 표기될 수 있다. φ_q는 E 상의 q 거듭제곱 프로베니우스 자기준동형(Frobenius endomorphism)이라고 하자.
또한,
G_l=E[r]∩ker(φ_q-[1])=E(F_q)[r],
G_2=E[r]∩ker(φ_q-[q])⊆E(F_(q^k))[r]을 정의한다.
k>1이라 하자. 감소된 테이트 페어링은 맵:
e_r=G_l×G_2→G_3,
(P,Q) f_(r,P)(Q)^((q^k-1)/r)이고, 여기에서 f_(r,P)∈F_q (E)는 제수 r(P)-r(O)를 갖는 함수이다. 2개의 점 R 및 S를 통과하는 라인에 의해 주어지는 F_q (E)에서의 함수를 1_(R,S)로 표기하자. R=S라면, 라인은 R을 통과하는 곡선에 대한 접선에 의해 주어진다.
이하는 테이트 페어링을 계산하기 위한 전형적인 밀러 루프의 일 실시예를 (상기 표기법들을 이용하여) 나타낸다:
Input: P ∈ G1, Q ∈ G2, r = (rm -1,...,r0 )2
Output:
Figure 112012055733112-pct00001
1: R ← P, f ← 1
2: for (i ← m-2; i ≥ 0; i - -) do
3: f ← f2·lR ,R(Q)
4: R ← [2]R
5: if (ri = 1) then
6: f ← f·lR ,P(Q)
7 : R ← R+P
8 : end if
9: end for
10:
Figure 112012055733112-pct00002
11: return f
본 실례에서, 상기 알고리즘의 라인 3 및 4는 함께 공통적으로 배증 동작이라고 지칭되며, 라인 6 및 7은 함께 덧셈 동작이라고 지칭된다.
예시적인 방법(300)의 동작(306)의 일 실시예에서, 밀러 루프 알고리즘이 수정될 수 있는데, 거기에서 이전 표현들은 오른쪽으로부터 왼쪽으로(또는 상향식으로) 판독된다. 이하는 오른쪽으로부터 왼쪽으로(또는 상향식으로) 가는 접근법의 실례이다:
Input: P ∈ G1, Q ∈ G2, r = (rm -1,...,r0 )2
Output:
Figure 112012055733112-pct00003
1: R ← P, fR ← 1
2: V ← O, fV ← 1
3: for (i ← 0; i≤m -1; i + +) do
4: if (ri=1) then
5: fV ← fV ·fR·lV ,R(Q)
6: V ← V+R
7: end if
8:
Figure 112012055733112-pct00004
9: R ← [2]R
10: end for
11:
Figure 112012055733112-pct00005
12: return f
이러한 실례에서, 배증 동작은 라인 8 및 9에 있고, 덧셈 동작은 라인 5 및 6에 있다. 상기 알고리즘은 m회의 배증 동작 및 h회의 덧셈 동작을 한다. 이러한 예에서, 루프가 m회 행해질 수 있긴 하지만, m-1회의 배증 동작만이 이용되며, 마지막 것은 계산에 영향을 미치지 않을 수 있다.
또한, 이러한 실시예에서, "상향식" 접근법을 이용할 때, 덧셈 동작들은 (위의 상향식 알고리즘에서의) 라인 5 및 6에서 연기될 수 있다. 여기에서, 예를 들어 관련 함수 값들의 쌍 및 대응 점들(fR, R)은 (예를 들어 데이터베이스 내의) 목록 L 내에 저장될 수 있고, 최종 함수 값의 계산은 나중에 계산될 수 있다. 실례로서, 이하의 알고리즘은 값들 및 점들을 저장함으로써(아래의 알고리즘의 라인 5 참조) 덧셈 동작들이 연기된 상향식 접근법을 제공하며, 최종 함수 값의 계산은 나중에 수행된다(라인 10 참조):
Input: P ∈ G1, Q ∈ G2, r = (rm -1,...,r0 )2
Output:
Figure 112012055733112-pct00006
1: R ← P, fR ← 1
2: L ← [ ]
3: for (i ← 0; i≤m-1; i + +) do
4: if (ri=1) then
5: Append (fR, R)to L
6: end if
7:
Figure 112012055733112-pct00007
8: R ← [2]R
9: End for
10: L 내의 쌍들로부터 fr ,P(Q)를 계산
11:
Figure 112012055733112-pct00008
12: return f
본 예에서, 계산을 연기하면 F_(q^K)에서 h-1회의 곱셈에 등가인 비용을 절약할 수 있게 되므로, 이 접근법은 하향식 알고리즘보다 더 효율적일 수 있다.
일 실시예에서, 집적된 역수 연산들을 이용하면, 상기 알고리즘의 라인 10의 "L 내의 쌍들로부터 fr ,P(Q)를 계산"은 또한 이진 트리를 따라 수행될 수 있다. 이러한 실시예에서, 이진 트리의 각 층에서, 집적된 역수 연산 기법이 적용될 수 있다. 이러한 방식으로, 예를 들어 위에서 설명된 바와 같이 곡선에 대해 수학적 페어링들을 계산할 때 (h-1)회의 역수 연산들이 [log(h)] 역수 연산 및 3(h-1-[log(h)]) 곱셈을 대체할 수 있다. 그러므로, 역수 연산의 수가 극적으로 감소되는 한편 적은 수의 곱셈이 추가되고, 이것은 계산상 더 저렴하다.
곡선에 대한 수학적 페어링들을 계산하고 나면, 도 3의 예시적인 방법(300)은 블록(308)에서 종료된다.
도 4는 여기에 설명된 방법들 중 하나 이상의 방법의 부분들의 구현의 일 실시예(400)를 도시한 흐름도이다. 집적된 복수의 역수 연산을 이용하여 오른쪽으로부터 왼쪽으로 판독되는 스칼라의 이진 표현을 따라 아핀 좌표들로 곡선에 대한 수학적 페어링들을 결정하는 것은 블록(402)에서 오른쪽으로부터 왼쪽으로 스칼라의 이진 표현을 판독하는 것을 포함할 수 있다. 위에서 설명된 바와 같이, 예를 들어 곡선 점 좌표들이 아핀 공간 내에 있을 때, 스칼라의 이진 표현은 오른쪽으로부터 왼쪽으로 판독될 수 있다.
블록(404)에서, 곡선 점의 스칼라 배수를 계산함으로써 곡선 점의 배수가 결정되고, 여기에서 예를 들어 스칼라 배수는 아핀 공간에서의 곡선 점의 m배 합산이다. 즉, 예를 들어 상향식 접근법 알고리즘의 곱셈 동작들이 수행될 수 있고, 복수의 곡선 점 배수가 결정될 수 있다. 이러한 동작은 종종 배증 동작이라고 지칭되며, 예를 들어 (i ← 0; i≤m-1; i + +) 에 대하여,
Figure 112012055733112-pct00009
및 R ← [2]R을 행한다 (상기 설명된 표기법들을 이용). 특히, 예를 들어 역수 연산의 수를 경감시키기 위해 좌표들을 사영 공간으로 전환하는 현재 흔하게 이용되는 기법들과 달리, 이러한 실시예에서는 아핀 공간의 좌표들에 대해 곱셈이 수행된다.
블록(406)에서, 곡선 점의 덧셈들의 역수들이 유한체에 대해 결정될 수 있다. 즉, 예를 들어 오른쪽으로부터 왼쪽으로 스칼라를 판독할 때, 스칼라의 이진 표현에 따라 곡선 점들이 더해진다. 이러한 예에서, 곡선 점 덧셈들에 대하여, 유한체 내에서 역수들이 결정된다. 예로서, 역수는 곱셈 역수 또는 상반수로 종종 지칭된다. 위에서 설명된 바와 같이, 역수 연산들은 예를 들어 덧셈 프로세스에서의 각각의 동작들을 위한 단일 역수 연산으로 집적된다. 이러한 방식으로, 예를 들어 각각의 레벨들에 대한 하나의 역수 연산만을 이용하여 알고리즘의 페어링 부분의 이진 트리 표현 내의 개별 레벨들에서 복수의 역수 연산이 결합된다.
블록(408)에서, 집적된 역수 연산들의 출력은 예를 들어 라인 함수의 경사값으로서 결정되며, 라인 함수는 출력된 경사값으로 갱신된다. 예를 들어, 유한체에 걸친 곡선에 대한 요소들(예를 들어 곡선 점들)에 대해 페어링들을 계산할 때, 라인 함수들은 다른 그룹 내의 새로운 요소에 대한 것과 같이 페어링들을 계산하기 위해 평가된다. 그러한 것으로서, 본 예에서 집적된 역수 연산 출력은 예를 들어 이진 트리 표현의 각각의 레벨들에서 라인 함수에 대한 경사값으로서 이용되고, 그 라인은 페어링을 결정하기 위해 경사값으로 평가된다.
도 5는 여기에 설명되는 기법들 및/또는 시스템들 중 하나 이상의 구현의 일 실시예(500)를 도시하는 흐름도이다. 이러한 실시예(500)에서, 사용자가 자신의 신원을 인증하기 위해 제출한 것과 같은 전자 서명으로부터의 2개의 요소(550)가 블록(502)에서의 페어링 계산을 위한 입력으로서 수신된다. 또한, 알려진 그룹(예를 들어 보안을 위한 공유 비밀 암호 키)으로부터의 2개의 요소(552)는 페어링 계산을 위한 입력으로서 제출된다. 이러한 실시예에서, 페어링들은 서명으로부터의 요소들(550)에 대하여 계산될 것이고, 페어링들은 그룹으로부터의 요소들(552)에 대해 계산될 것이다.
블록(504)에서, 위에서 설명된 바와 같이 그룹의 요소들로서 제출된 곡선 점들의 배수들이 결정된다. 이러한 실시예(500)에서, 오른쪽으로부터 왼쪽으로 판독되는 스칼라의 이진 표현들(554)은 곡선 점의 배수들을 결정하기 위해 이용된다. 블록(506)에서 배수들로부터 역수 연산들이 집적되어 단일 역수 연산으로 되고, 예를 들어 원격 또는 로컬 데이터베이스 내에 저장된다(블록(556)). 일 실시예에서, 이진 표현(554) 내에서 오른쪽으로부터 왼쪽으로 판독되는 스칼라는 공개 키와 같은 암호 키 내에 포함될 수 있다.
일 실시예에서, 오른쪽으로부터 왼쪽으로 판독되는 스칼라의 이진 표현을 따라 아핀 좌표들로 곡선에 대한 페어링들을 결정하는 것은 블록(508)에서 복수의 프로세서 상에 병렬화될 수 있다. 예를 들어, 컴퓨터들은 계산을 가속화하고 자원들을 방출하기 위해 하나보다 많은 코어에서 계산들이 병렬화되는 것을 허용할 수 있는 멀티코어 프로세서들을 흔하게 갖는다. 일 실시예에서, 병렬화는 예를 들어 동시에 둘 이상의 프로세서에서 곡선 점의 배수들을 결정하기 위한 둘 이상의 인스턴스를 포함할 수 있다.
블록(510)에서, 집적된 역수 연산들을 위한 출력은 예를 들어 경사값으로서 검색된다. 위에서 설명된 바와 같이, 집적된 역수 연산은 페어링 계산들에서의 덧셈 동작의 이진 트리 표현 내의 개별 레벨들에서 이용될 수 있다. 또한, 일 실시예에서, 저장된 집적된 역수 연산들(556)은 아핀 공간 내의 좌표들의 집합의 후속 페어링 계산에서 재사용될 수 있다. 예로서, 집적된 역수 연산들은 원격 또는 로컬 데이터베이스로부터 검색되어 재사용될 수 있다. 이러한 방식으로, 역수 연산 집적 동작을 감소시킴으로써 계산 횟수가 경감될 수 있다.
일 실시예에서, 집적된 역수 연산을 결정하는 데에 이용되었던 제1 곡선 점이 그 집적된 역수 연산들이 재사용된 제2 곡선 점과 동일한 요소일 때, 집적된 역수 연산은 재사용될 수 있다. 즉, 집적된 역수 연산들은 페어링 계산에서 요소로서 제출된 곡선 점을 이용하여 결정될 수 있다. 이러한 실시예에서, 제1 집합이 계산된 후에 제2 집합의 요소가 제출되고, 그 제2 집합이 제1 집합으로부터의 요소와 동일한 요소를 포함할 때, 집적된 역수 연산들은 예를 들어 요소들의 제2 집합을 위한 페어링들을 계산하는 데에 재사용될 수 있다.
블록(512)에서, 집적된 역수 연산 출력을 경사값으로서 이용하여 라인 함수가 갱신된다. 일 실시예에서, 집적된 역수 연산들의 출력은 페어링 계산을 위해 이용된 라인의 함수에서의 계수를 갱신하기 위해 이용될 수 있다. 블록(514)에서, 예를 들어 갱신된 라인 함수를 평가함으로써 요소들에 대한 페어링들이 결정되어, 암호화된 서명 인가 요소들을 위한 수학적 페어링(558) 및 비밀 요소들을 위한 수학적 페어링(560)을 야기할 수 있다.
블록(516)에서, 개별 페어링들(558, 560)은 예를 들어 제출된 전자 서명의 진정성을 결정하기 위해 그들이 동일한지를 결정하기 위해 비교될 수 있다. 이러한 실시예(500)에서, 블록(518)에서 요소들이 동일하지 않은 것으로(또는 그들이 동일 그룹으로부터 오지 않은 것으로) 밝혀지면, 제출된 서명은 블록(520)에서 인증되지 않는다. 블록(518)에서 요소들이 동일한 것으로(그리고 동일한 그룹으로부터의 온 것으로) 밝혀지는 경우, 제출된 서명은 블록(522)에서 인증된다. 이러한 방식으로, 예를 들어 요소들에 대한 페어링들의 계산이 암호화를 목적으로 이용될 수 있고, 여기에 설명된 하나 이상의 기법은 더 효율적이고 더 빠른 페어링 계산을 용이하게 하기 위해 이용될 수 있다.
예를 들어 암호화를 목적으로, 제출된 요소들을 비교하기 위해 곡선에 대한 수학적 페어링들을 결정하기 위해 하나 이상의 시스템이 만들어질 수 있다. 암호화에서 이용하기 위해 페어링들을 계산하는 것은 타원 곡선이 정의되는 유한체 내에서의 다수의 기초 곱셈 및 역수 연산을 요구할 수 있으므로, 여기에 설명되는 하나 이상의 시스템은 이러한 페어링들을 계산하기 위해 이용되는 시간 및 자원을 경감시키도록 만들어질 수 있다. 도 6은 암호화에서 이용하기 위해 곡선에 대한 수학적 페어링들을 결정하기 위한 예시적인 시스템(600)을 도시한 컴포넌트 블록도이다.
예시적인 시스템(600)은 곡선을 위한 수학적 페어링들을 결정하기 위해 이용되는 역수 연산들을 집적하는 역수 연산 집적 컴포넌트(602)를 포함한다. 역수 연산 집적 컴포넌트(602)는 하나 이상의 컴퓨팅 장치 내에 존재하고 집적된 역수 연산들(656) 중 하나 이상을 저장할 수 있는 데이터 저장 컴포넌트(654)를 구비하는 하나 이상의 프로그래밍된 프로세서(650)와 동작 가능하게 연결된다. 또한, 예시적인 시스템(600)에서, 수학적 페어링 결정 컴포넌트(604)는 데이터 저장 컴포넌트(654)에 동작 가능하게 연결되고, 거기에 저장되어 있는 집적된 역수 연산들(656)을 이용하여 오른쪽으로부터 왼쪽으로 판독되는 스칼라의 이진 표현들을 따라 아핀 좌표들로 곡선에 대한 수학적 페어링들을 결정할 수 있다.
일 실시예에서, 역수 연산 집적 컴포넌트(602), 페어링 결정 컴포넌트(604) 및 데이터 저장 컴포넌트(654)는 하나 이상의 프로세서(650)를 포함하는 컴퓨팅 장치(652)와 같은 동일 컴퓨팅 장치 내에 포함될 수 있다. 대안적으로, 시스템의 컴포넌트들은 상이한 장치들 상에, 또는 그들의 소정 조합에 배치될 수 있다.
일 실시예에서, 역수 연산 집적 컴포넌트(602)는 복수의 역수 연산을 수학적 페어링 결정에서 이용할 단일의 역수 연산으로 집적하도록 구성될 수 있다. 예를 들어, 곡선 점의 배수들의 이진 표현의 레벨에 대한 각각의 역수 연산들은 역수 연산 집적 컴포넌트(602)에 의해 그 레벨에 대한 단일 역수 연산으로 결합될 수 있다. 이러한 예에서, 결합된 것(집적된 역수 연산(예를 들어 656))은 데이터 저장 컴포넌트(654) 내에 저장될 수 있고, 페어링들을 계산하기 위해 페어링 결정 컴포넌트(604)에 의해 이용될 수 있다.
도 7은 여기에 설명된 하나 이상의 시스템의 예시적인 구현의 일 실시예(700)를 도시하는 컴포넌트 블록도이다. 도 1 및 도 2에 도시된 것(예를 들어 104, 222)과 같은 암호화 시스템(702)은 예를 들어 여기에 설명된 시스템들의 하나 이상의 구현을 이용하는 타원 곡선 기반 결정기(750) 상에서의 페어링을 포함할 수 있다. 또한, 암호화 시스템(702)은 (예를 들어 인증, 보안, 암호화 등을 위해) 암호화 시스템을 이용하는 (예를 들어 곡선을 아는 것에 의해) 공개적으로 알려진 그룹을 포함할 수 있다.
이러한 예시적인 실시예(700)에서, 암호화 인증을 이용하는 입력 문서를 판독할 수 있는 컴포넌트와 같은 입력 컴포넌트(704)는 암호화 요소들(708) 및 공개 키(706)를 포함하는 문서(754)를 수신한다. 예로서, 문서(754)는 (예를 들어 판독을 위하여) 암호 해독기에 제출되고 있는 암호화된 문서일 수 있고, 암호화 요소들(708)은 곡선 상의 점들(예를 들어 문서가 진정한 것이라면 그룹으로부터 구성된 그룹 요소들), 및 페어링들의 계산에서 이용되는 스칼라이다. 공개 키는 통상적으로 곡선 상의 점이고, 비밀 키는 스칼라이다.
이러한 실시예(700)에서, 타원 곡선 상의 페어링에 기반한 결정기(750)는 제출된 암호화 요소들(708) 및 개인 키(710)로부터의 요소들에 대한 페어링을 결정하여, 예를 들어 제출된 문서가 진정한 것인지를 판정할 수 있다. 즉, 문서가 진정한 것이라면, 공개 키(706)로부터의 스칼라를 이용하여 각각에 대해 페어링들이 계산될 때, 예를 들어 암호화 요소들(708)은 개인 키(710)로부터의 것들과 동일한 요소에 일치할 것이다. 이러한 방식으로, 암호화 시스템은 예를 들어 문서(754)가 암호 해독되어 보여지도록 하기 위해, 문서(754)를 위한 인증(752)을 출력할 수 있다.
도 8은 여기에 설명된 하나 이상의 시스템의 구현의 다른 예시적인 실시예(800)를 도시한 컴포넌트 블록도이다. 이러한 실시예(800)에서, 수학적 페어링 결정 컴포넌트(504)는 오른쪽으로부터 왼쪽으로 판독되는 스칼라의 이진 표현을 따라 아핀 좌표들로 곡선 점(850)의 배수들에 대한 덧셈 관계들을 결정하는 것을 병렬화할 수 있는 복수의 프로세서(802a-802n)와 동작 가능하게 연결된다. 즉, 페어링들(852)을 계산하기 위한 전체적인 시간을 감소시키기 위해, 예를 들어 페어링 결정의 다양한 부분들(예를 들어 덧셈 동작들)은 몇 개의 프로세서 상에서 동시에 실행될 수 있다.
또한, 예시적인 실시예(800)에서, 예를 들어 집적된 복수의 역수 연산을 결정하는 데에 이용되었던 제1 곡선 점이 집적된 역수 연산들이 재사용되는 제2 곡선 점과 동일한 경우에서, 수학적 페어링 결정 컴포넌트(504)는 집적된 복수의 역수 연산(656)을 재사용하도록 구성될 수 있다. 이러한 실시예에서, 역수 연산 재사용 결정 컴포넌트(804)는 예를 들어 제1 곡선 점의 저장된 버전을 수신된 제2 곡선 점(850)과 비교하는 것에 의해 제2 곡선 점이 제1 곡선 점과 동일한 요소인지를 판정할 수 있다. 추가로, 역수 연산 재사용 결정 컴포넌트(804)는 제1 곡선 점에 대응하는 데이터 저장 컴포넌트(654)로부터 집적된 역수 연산들(656)을 검색할 수 있다. 이러한 방식으로, 검색된 역수 연산들(656)은 예를 들어 새로운 집적된 역수 연산들을 계산하는 대신에 페어링 결정 컴포넌트(504)에 의해 재사용될 수 있다.
또 다른 실시예는 여기에 제시된 기법들 중 하나 이상을 구현하도록 구성된 프로세서 실행가능한 명령어들을 포함하는 컴퓨터 판독 가능한 매체를 수반한다. 이러한 방식으로 만들어질 수 있는 예시적인 컴퓨터 판독 가능한 매체가 도 9에 도시되어 있는데, 여기에서 구현(900)은 컴퓨터 판독 가능한 매체(908)(예를 들어 CD-R, DVD-R 또는 하드 디스크 드라이브의 플래터)를 포함하며, 그 위에 컴퓨터 판독 가능한 데이터(906)가 인코딩되어 있다. 그 다음, 이러한 컴퓨터 판독 가능한 데이터(906)는 여기에 제시된 원리들 중 하나 이상에 따라 동작하도록 구성된 컴퓨터 명령어들(904)의 집합을 포함한다. 하나의 그러한 실시예(902)에서, 프로세서 실행가능한 명령어들(904)은 예를 들어 도 3의 예시적인 방법(300)과 같은 방법을 수행하도록 구성될 수 있다. 다른 그러한 실시예에서, 프로세서 실행가능한 명령어들(904)은 예를 들어 도 6의 예시적인 시스템(600)과 같은 시스템을 구현하도록 구성될 수 있다. 여기에 제시된 기법들에 따라 동작하도록 구성된 많은 그러한 컴퓨터 판독 가능한 매체가 본 기술분야의 통상의 지식을 가진 자에 의해 만들어질 수 있다.
발명 대상이 구조적 특징 및/또는 방법론적 동작에 특정한 언어로 설명되었지만, 첨부된 청구항들에 정의된 발명 대상은 반드시 위에서 설명된 특정한 특징 또는 동작에 한정되는 것이 아님을 이해해야 한다. 오히려, 위에서 설명된 특정한 특징 및 동작은 청구항들을 구현하는 예시적인 형태로서 개시된 것이다.
본 출원에서 사용될 때, "컴포넌트", "모듈", "시스템", "인터페이스" 등의 용어는 일반적으로 하드웨어든, 하드웨어와 소프트웨어의 조합이든, 소프트웨어든, 또는 실행중인 소프트웨어든, 컴퓨터 관련 엔터티를 참조하도록 의도된 것이다. 예를 들어, 컴포넌트는 프로세서에서 실행중인 프로세스, 프로세서, 개체, 실행파일, 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있지만 이에 제한되는 것은 아니다. 예로서, 제어기에서 실행중인 애플리케이션과 그 제어기 둘다 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행 스레드 내에 상주할 수 있으며, 컴포넌트는 한 컴퓨터에 국부화될 수 있고/있거나 둘 이상의 컴퓨터 간에 분산될 수 있다.
또한, 청구되는 발명 대상은 개시된 발명 대상을 구현하도록 컴퓨터를 제어하도록 소프트웨어, 펌웨어, 하드웨어 또는 그들의 임의의 조합을 만들어내기 위해 표준 프로그래밍 및/또는 엔지니어링 기법들을 이용하여 방법, 장치 또는 제품으로서 구현될 수 있다. 여기에서 사용될 때 "제품(article of manufacture)"이라는 용어는 임의의 컴퓨터 판독 가능한 장치, 캐리어 또는 매체로부터 액세스가능한 컴퓨터 프로그램을 포괄하도록 의도된다. 물론, 본 기술분야에 통상의 지식을 가진 자라면, 청구되는 발명 대상의 범위 또는 취지를 벗어나지 않고서 이러한 구성에 대한 많은 수정이 이루어질 수 있음을 인식할 것이다.
도 10 및 이하의 논의는 여기에 제시된 제공사항들 중 하나 이상의 실시예를 구현하는 데에 적합한 컴퓨팅 환경의 간략한 개괄적인 설명을 제공한다. 도 10의 운영 환경은 적합한 운영 환경의 일례일 뿐이며, 운영 환경의 사용 또는 기능성의 범위에 관하여 어떠한 제한을 제안하도록 의도되지 않는다. 예시적인 컴퓨팅 장치는 개인용 컴퓨터, 서버 컴퓨터, 핸드핼드형 또는 랩탑 장치, 모바일 장치(예를 들어 모바일 전화기, PDA(Personal Digital Assistants), 미디어 플레이어 등), 멀티프로세서 시스템, 가전 장치, 미니 컴퓨터, 메인프레임 컴퓨터, 상기의 시스템들 또는 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함하지만 그에 한정되지는 않는다.
필수적인 것은 아니지만, 실시예들은 하나 이상의 컴퓨팅 장치에 의해 실행되는 "컴퓨터 판독 가능한 명령어들"의 일반적인 맥락에서 기술된다. 컴퓨터 판독 가능한 명령어는 (아래에 논의되는) 컴퓨터 판독 가능한 매체를 통해 배포될 수 있다. 컴퓨터 판독 가능한 명령어들은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 기능(functions), 개체, API(Application Programming Interfaces), 데이터 구조 등과 같은 프로그램 모듈들로서 구현될 수 있다. 전형적으로, 컴퓨터 판독 가능한 명령어들의 기능성은 다양한 환경들에서 원해지는 대로 결합 또는 분산될 수 있다.
도 10은 여기에 제공되는 하나 이상의 실시예를 구현하도록 구성된 컴퓨팅 장치(1012)를 포함하는 시스템(1010)의 예를 도시한 것이다. 한 구성에서, 컴퓨팅 장치(1012)는 적어도 하나의 처리 유닛(1016) 및 메모리(1018)를 포함한다. 컴퓨팅 장치의 정확한 구성 및 유형에 따라, 메모리(1018)는 (예를 들어 RAM과 같은) 휘발성, (예를 들어 ROM, 플래시 메모리 등과 같은) 비휘발성, 또는 그 둘의 소정의 조합일 수 있다. 이러한 구성은 도 10에서 점선(1014)으로 도시되어 있다.
다른 실시예들에서, 장치(1012)는 추가의 특징들 및/또는 기능성을 포함할 수 있다. 예를 들어, 장치(1012)는 자기 저장소, 광학 저장소 등을 포함하지만 그에 한정되지는 않는 추가의 저장소(예를 들어 이동식 및/또는 비이동식)도 포함할 수 있다. 그러한 추가의 저장소는 도 10에서 저장소(1020)로 도시되어 있다. 일 실시예에서, 여기에 제공된 하나 이상의 실시예를 구현하기 위한 컴퓨터 판독 가능한 명령어들은 저장소(1020) 내에 있을 수 있다. 저장소(1020)는 또한 운영 체제, 애플리케이션 프로그램 등을 구현하기 위해 다른 컴퓨터 판독 가능한 명령어들을 저장할 수 있다. 컴퓨터 판독 가능한 명령어들은 예를 들어 처리 장치(1016)에 의한 실행을 위해 메모리(1018) 내에 로딩될 수 있다.
여기에서 사용될 때 "컴퓨터 판독 가능한 매체"라는 용어는 컴퓨터 저장 매체를 포함한다. 컴퓨터 저장 매체는 컴퓨터 판독 가능한 명령어 또는 기타 데이터와 같은 정보의 저장을 위해 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 메모리(1018) 및 저장소(1020)는 컴퓨터 저장 매체의 예들이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(Digital Versatile Disk) 또는 기타 광학 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하기 위해 이용될 수 있고 장치(1012)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만 그에 한정되지 않는다. 임의의 그러한 컴퓨터 저장 매체는 장치(1012)의 일부일 수 있다.
장치(1012)는 또한 장치(1012)가 다른 장치들과 통신하는 것을 허용하는 통신 접속(들)(1026)을 포함할 수 있다. 통신 접속(들)(1026)은 모뎀, NIC(Network Interface Card), 통합된 네트워크 인터페이스, 무선 주파수 송신기/수신기, 적외선 포트, USB 접속, 또는 컴퓨팅 장치(1012)를 다른 컴퓨팅 장치들에 접속하기 위한 기타 인터페이스들을 포함할 수 있지만 그에 한정되지는 않는다. 통신 접속(들)(1026)은 유선 접속 또는 무선 접속을 포함할 수 있다. 통신 접속(들)(1026)은 통신 매체를 송신 및/또는 수신할 수 있다.
삭제
장치(1012)는 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치, 적외선 카메라, 비디오 입력 장치 및/또는 임의의 다른 입력 장치와 같은 입력 장치(들)(1024)를 포함할 수 있다. 하나 이상의 디스플레이, 스피커, 프린터 및/또는 임의의 다른 출력 장치와 같은 출력 장치(들)(1022)도 장치(1012) 내에 포함될 수 있다. 입력 장치(들)(1024) 및 출력 장치(들)(1022)는 유선 접속, 무선 접속 또는 그들의 임의의 조합을 통해 장치(1012)에 접속될 수 있다. 일 실시예에서, 다른 컴퓨팅 장치로부터의 입력 장치 또는 출력 장치는 컴퓨팅 장치(1012)를 위한 입력 장치(들)(1024) 또는 출력 장치(들)(1022)로서 이용될 수 있다.
컴퓨팅 장치(1012)의 컴포넌트들은 버스와 같은 다양한 상호접속부에 의해 접속될 수 있다. 그러한 상호접속부들은 PCI Express와 같은 PCI(Peripheral Component Interconnect), USB(Universal Serial Bus), 파이어와이어(IEEE 1394), 광학적 버스 구조 등을 포함할 수 있다. 다른 실시예에서, 컴퓨팅 장치(1012)의 컴포넌트들은 네트워크에 의해 상호접속될 수 있다. 예를 들어, 메모리(1018)는 네트워크에 의해 상호접속된 상이한 물리적 위치들에 위치된 복수의 물리적 메모리 유닛으로 구성될 수 있다.
본 기술분야에 지식을 가진 자들은, 컴퓨터 판독 가능한 명령어를 저장하기 위해 이용되는 저장 장치들이 네트워크를 통해 분산될 수 있음을 인식할 것이다. 예를 들어, 네트워크(1028)를 통해 액세스가능한 컴퓨팅 장치(1030)는 여기에 제공된 하나 이상의 실시예를 구현하기 위해 컴퓨터 판독 가능한 명령어를 저장할 수 있다. 컴퓨팅 장치(1012)는 컴퓨팅 장치(1030)에 액세스할 수 있고, 실행을 위해 컴퓨터 판독 가능한 명령어들 중 일부 또는 전부를 다운로드할 수 있다. 대안적으로, 컴퓨팅 장치(1012)는 필요에 따라 컴퓨터 판독 가능한 명령어의 부분들을 다운로드할 수 있고, 다르게는 일부 명령어들은 컴퓨팅 장치(1012)에서 실행되고, 일부 명령어들은 컴퓨팅 장치(1030)에서 실행될 수 있다.
실시예들의 다양한 동작들이 여기에 제공된다. 일 실시예에서, 설명된 동작들 중 하나 이상은 컴퓨팅 장치에 의해 실행되는 경우 그 컴퓨팅 장치가 설명된 동작들을 수행하게 할, 하나 이상의 컴퓨터 판독 가능한 매체에 저장된 컴퓨터 판독 가능한 명령어들을 구성할 수 있다. 동작들 중 일부 또는 전부가 설명된 순서는 이러한 동작들이 반드시 순서 종속적임을 암시하는 것으로서 해석되어서는 안 된다. 본 설명의 혜택을 받는 본 기술분야의 지식을 가진 자는 다른 순서를 예상할 수 있을 것이다. 또한, 여기에 제공된 각 실시예에서 모든 동작들이 반드시 존재하는 것은 아님을 이해할 것이다.
또한, "예시적인"이라는 단어는 여기에서 예, 사례 또는 실례의 역할을 함을 의미하도록 사용된다. 여기에서 "예시적인" 것으로서 설명된 임의의 양상 또는 설계가 반드시 다른 양상들 또는 설계들에 비하여 유리한 것으로 해석되어서는 안 된다. 오히려, "예시적인"이라는 단어의 사용은 개념들을 구체적인 형태로 제공하도록 의도된 것이다. 본 출원에서 사용될 때, "또는"이라는 용어는 배타적인(exclusive) "또는"보다는 포괄적인(inclusive) "또는"을 의미하도록 의도된다. 즉, 다르게 명시되거나 문맥상 명백하지 않은 한, "X가 A 또는 B를 이용한다"는 자연적인 포괄적 순열 중 임의의 것을 의미하도록 의도된다. 즉, X가 A를 이용하거나; X가 B를 이용하거나; 또는 X가 A 및 B 둘 다를 이용하는 경우, 상기의 사례들 중 어느 것에서도 "X가 A 또는 B를 이용한다"가 만족된다. 또한, 본 출원 및 첨부된 청구항들에서 사용될 때 단수의 표현은 일반적으로, 다르게 명시되거나 문맥상 단수 형태에 관한 것임이 분명하지 않은 한 "하나 이상"을 의미하는 것으로 해석될 수 있다.
또한, 본 명세서는 하나 이상의 구현에 관하여 도시 및 설명되었지만, 본 기술 분야에 지식을 가진 다른 자들은 본 명세서 및 첨부 도면들을 읽고 이해한 것에 기초하여 등가의 변형 및 수정을 생각해낼 수 있을 것이다. 본 명세서는 그러한 모든 수정 및 변경을 포함하며, 이하의 청구항들의 범위에 의해서만 한정된다. 특히, 위에서 설명된 컴포넌트들(예를 들어, 요소들, 자원들 등)에 의해 수행되는 다양한 기능들에 관하여, 그러한 컴포넌트들을 설명하기 위해 이용되는 용어들은 다르게 표시되지 않는 한, 비록 본 명세서에서 설명된 예시적인 구현들에서 기능을 수행하는 개시된 구조와 구조적으로 균등하지는 않더라도, 설명되는 컴포넌트의 지정된 기능을 수행하는 임의의 컴포넌트(예를 들어, 기능적으로 등가)에 대응하도록 의도된다. 또한, 본 개시의 특정 특징이 수개의 구현 중 단 하나에 관해서만 개시되었을 수 있지만, 그러한 특징은 임의의 주어진 또는 구체적인 응용에 대해 요구되며 이로울 수 있는 대로 다른 구현들의 하나 이상의 다른 특징들과 조합될 수 있다. 또한, 용어 "포함한다(includes)", "갖는(having, has)", "구비하는(with)" 또는 그들의 변형이 상세한 설명이나 청구항들에서 이용되는 한, 그러한 용어들은 "포함하는(comprising)"과 유사한 방식으로 포괄적인 것으로 의도된다.

Claims (20)

  1. 암호화에서 사용하기 위한 수학적 페어링(mathematical pairings)을 결정하는 방법으로서,
    집적된 복수의 역수 연산(an aggregated plurality of inversions)을 얻기 위해 요소들의 제1 집합(a first set of elements)과 연관된 복수의 역수 연산을 집적하는 단계- 상기 요소들의 제1 집합은 제1 곡선 점을 포함함 -와,
    상기 집적된 복수의 역수 연산을 사용하여 상기 요소들의 제1 집합과 연관된 수학적 페어링을 결정하는 단계와,
    요소들의 제2 집합을 수신하는 단계와,
    상기 요소들의 제2 집합에 포함된 제2 곡선 점이 상기 제1 곡선 점과 동일한 요소인 것으로 판정하는 단계와,
    상기 요소들의 제2 집합과 연관된 수학적 페어링을 결정할 때 상기 집적된 복수의 역수 연산 중 적어도 일부를 재사용하는 단계
    를 포함하고,
    상기 요소들의 제1 집합과 연관된 수학적 페어링을 결정하는 것 및 상기 요소들의 제2 집합과 연관된 수학적 페어링을 결정하는 것 중 적어도 하나는 우측으로부터 좌측으로 판독가능한 스칼라의 이진 표현을 따라 아핀 좌표(affine coordinates)에서 수학적 페어링을 결정하는 것을 포함하고, 상기 방법의 적어도 일부는 하드웨어로 구현되는
    방법.
  2. 제1항에 있어서,
    상기 복수의 역수 연산을 집적하는 단계는 상기 복수의 역수 연산을 단일 역수 연산으로 집적하는 단계를 포함하는
    방법.
  3. 제1항에 있어서,
    상기 요소들의 제1 집합과 연관된 수학적 페어링 및 상기 요소들의 제2 집합과 연관된 수학적 페어링 중 적어도 하나는 곡선에 대응하는
    방법.
  4. 제1항에 있어서,
    상기 암호화는 머신 및 사용자 중 적어도 하나의 인증과 연관된
    방법.
  5. 제1항에 있어서,
    상기 암호화는 제품 ID의 생성과 연관된
    방법.
  6. 제1항에 있어서,
    복수의 프로세서 상에서 상기 요소들의 제1 집합과 연관된 수학적 페어링을 결정하는 것과 상기 요소들의 제2 집합과 연관된 수학적 페어링을 결정하는 것을 병렬화하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 집적된 복수의 역수 연산의 출력은 상기 요소들의 제1 집합과 연관된 수학적 페어링을 결정하는 것 및 상기 요소들의 제2 집합과 연관된 수학적 페어링을 결정하는 것 중 적어도 하나에서 라인 함수의 업데이트와 연관된 기울기 값(slope value)을 포함하는 방법.
  8. 암호화에서 사용하기 위한 수학적 페어링(mathematical pairings)을 결정하는 시스템으로서,
    하나 이상의 처리 장치와,
    상기 하나 이상의 처리 장치 중 적어도 일부에 의해 실행되는 경우 방법을 수행하는 명령어를 포함하는 메모리
    를 포함하되, 상기 방법은
    집적된 복수의 역수 연산을 얻기 위해 요소들의 제1 집합과 연관된 복수의 역수 연산을 집적하는 단계- 상기 요소들의 제1 집합은 제1 곡선 점을 포함함 -와,
    상기 집적된 복수의 역수 연산을 사용하여 상기 요소들의 제1 집합과 연관된 수학적 페어링을 결정하는 단계와,
    요소들의 제2 집합을 수신하는 단계와,
    상기 요소들의 제2 집합에 포함된 제2 곡선 점이 상기 제1 곡선 점과 동일한 요소인 것으로 판정하는 단계와,
    상기 요소들의 제2 집합과 연관된 수학적 페어링을 결정할 때 상기 집적된 복수의 역수 연산 중 적어도 일부를 재사용하는 단계
    를 포함하고,
    상기 요소들의 제1 집합과 연관된 수학적 페어링을 결정하는 것 및 상기 요소들의 제2 집합과 연관된 수학적 페어링을 결정하는 것 중 적어도 하나는 우측으로부터 좌측으로 판독가능한 스칼라의 이진 표현을 따라 아핀 좌표에서 수학적 페어링을 결정하는 것을 포함하는
    시스템.
  9. 제8항에 있어서,
    상기 복수의 역수 연산을 집적하는 단계는 상기 복수의 역수 연산을 단일 역수 연산으로 집적하는 단계를 포함하는
    시스템.
  10. 제8항에 있어서,
    상기 요소들의 제1 집합과 연관된 수학적 페어링 및 상기 요소들의 제2 집합과 연관된 수학적 페어링 중 적어도 하나는 곡선에 대응하는
    시스템.
  11. 제8항에 있어서,
    상기 암호화는 머신 및 사용자 중 적어도 하나의 인증과 연관된
    시스템.
  12. 제8항에 있어서,
    상기 암호화는 제품 ID의 생성과 연관된
    시스템.
  13. 제8항에 있어서,
    상기 방법은 복수의 프로세서 상에서 상기 요소들의 제1 집합과 연관된 수학적 페어링을 결정하는 것과 상기 요소들의 제2 집합과 연관된 수학적 페어링을 결정하는 것을 병렬화하는 단계를 포함하는
    시스템.
  14. 제8항에 있어서,
    상기 집적된 복수의 역수 연산의 출력은 상기 요소들의 제1 집합과 연관된 수학적 페어링을 결정하는 것 및 상기 요소들의 제2 집합과 연관된 수학적 페어링을 결정하는 것 중 적어도 하나에서 라인 함수의 업데이트와 연관된 기울기 값을 포함하는
    시스템.
  15. 명령어를 포함하는 컴퓨터 판독가능 저장 장치로서,
    상기 명령어는, 프로세서에 의해 실행되는 경우, 방법을 수행하고,
    상기 방법은
    집적된 복수의 역수 연산을 얻기 위해 요소들의 제1 집합과 연관된 복수의 역수 연산을 집적하는 단계- 상기 요소들의 제1 집합은 제1 곡선 점을 포함함 -와,
    상기 집적된 복수의 역수 연산을 사용하여 상기 요소들의 제1 집합과 연관된 수학적 페어링을 결정하는 단계와,
    요소들의 제2 집합을 수신하는 단계와,
    상기 요소들의 제2 집합에 포함된 제2 곡선 점이 상기 제1 곡선 점과 동일한 요소인 것으로 판정하는 단계와,
    상기 요소들의 제2 집합과 연관된 수학적 페어링을 결정할 때 상기 집적된 복수의 역수 연산 중 적어도 일부를 재사용하는 단계
    를 포함하고,
    상기 요소들의 제1 집합과 연관된 수학적 페어링을 결정하는 것 및 상기 요소들의 제2 집합과 연관된 수학적 페어링을 결정하는 것 중 적어도 하나는 우측으로부터 좌측으로 판독가능한 스칼라의 이진 표현을 따라 아핀 좌표에서 수학적 페어링을 결정하는 것을 포함하는
    컴퓨터 판독가능 저장 장치.
  16. 제15항에 있어서,
    상기 복수의 역수 연산을 집적하는 단계는 상기 복수의 역수 연산을 단일 역수 연산으로 집적하는 단계를 포함하는
    컴퓨터 판독가능 저장 장치.
  17. 제15항에 있어서,
    상기 요소들의 제1 집합과 연관된 수학적 페어링 및 상기 요소들의 제2 집합과 연관된 수학적 페어링 중 적어도 하나는 곡선에 대응하는
    컴퓨터 판독가능 저장 장치.
  18. 제15항에 있어서,
    상기 방법은 머신 및 사용자 중 적어도 하나의 인증과 연관된
    컴퓨터 판독가능 저장 장치.
  19. 제15항에 있어서,
    상기 방법은 제품 ID의 생성과 연관된
    컴퓨터 판독가능 저장 장치.
  20. 제15항에 있어서,
    상기 집적된 복수의 역수 연산의 출력은 상기 요소들의 제1 집합과 연관된 수학적 페어링을 결정하는 것 및 상기 요소들의 제2 집합과 연관된 수학적 페어링을 결정하는 것 중 적어도 하나에서 라인 함수의 업데이트와 연관된 기울기 값을 포함하는
    컴퓨터 판독가능 저장 장치.
KR1020127018129A 2010-01-13 2010-12-31 집적된 역수 연산들을 이용한 곡선 상의 페어링 결정 KR101763443B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/686,707 US8548160B2 (en) 2010-01-13 2010-01-13 Determination of pairings on a curve using aggregated inversions
US12/686,707 2010-01-13
PCT/US2010/062656 WO2011087891A2 (en) 2010-01-13 2010-12-31 Determination of pairings on a curve using aggregated inversions

Publications (2)

Publication Number Publication Date
KR20120123320A KR20120123320A (ko) 2012-11-08
KR101763443B1 true KR101763443B1 (ko) 2017-07-31

Family

ID=44258527

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127018129A KR101763443B1 (ko) 2010-01-13 2010-12-31 집적된 역수 연산들을 이용한 곡선 상의 페어링 결정

Country Status (6)

Country Link
US (1) US8548160B2 (ko)
EP (1) EP2524332B1 (ko)
JP (1) JP5738896B2 (ko)
KR (1) KR101763443B1 (ko)
CN (1) CN102713921B (ko)
WO (1) WO2011087891A2 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11146397B2 (en) * 2017-10-31 2021-10-12 Micro Focus Llc Encoding abelian variety-based ciphertext with metadata

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000187438A (ja) * 1998-12-22 2000-07-04 Hitachi Ltd 楕円曲線暗号実行方法及び装置並びに記録媒体
US20080219438A1 (en) * 2007-03-06 2008-09-11 Research In Motion Limited Method and Apparatus for Generating a Public Key in a Manner That Counters Power Analysis Attacks

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01152854A (ja) * 1987-12-10 1989-06-15 Nec Eng Ltd 内線電話機呼出方式
US6038581A (en) 1997-01-29 2000-03-14 Nippon Telegraph And Telephone Corporation Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
JPH1152854A (ja) * 1997-07-31 1999-02-26 Nippon Telegr & Teleph Corp <Ntt> 有限体上の四則演算装置及び楕円曲線上の群演算装置
US6782100B1 (en) 1997-01-29 2004-08-24 Certicom Corp. Accelerated finite field operations on an elliptic curve
US6252959B1 (en) 1997-05-21 2001-06-26 Worcester Polytechnic Institute Method and system for point multiplication in elliptic curve cryptosystem
EP1038371A4 (en) * 1997-12-05 2002-01-30 Secured Information Technology CONVERSION METHOD FOR OPTIMIZING CRYPTOGRAPHIC CALCULATIONS VIA ELLIPTIC CURVES
US6490352B1 (en) 1999-03-05 2002-12-03 Richard Schroeppel Cryptographic elliptic curve apparatus and method
FR2796177B1 (fr) 1999-07-09 2001-10-12 Oberthur Card Systems Sas Procede de cryptographie mis en oeuvre entre deux entites echangeant des informations
JP3821631B2 (ja) 2000-05-30 2006-09-13 株式会社日立製作所 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体
JP2003131568A (ja) 2001-10-26 2003-05-09 Hitachi Ltd 楕円曲線署名検証方法及び装置並びに記憶媒体
US7215780B2 (en) 2001-12-31 2007-05-08 Certicom Corp. Method and apparatus for elliptic curve scalar multiplication
US7555122B2 (en) * 2002-12-04 2009-06-30 Wired Communications LLC Method for elliptic curve point multiplication
JP2004205870A (ja) * 2002-12-26 2004-07-22 Hitachi Ltd 超楕円曲線スカラー倍演算方法及び装置
US7702105B1 (en) * 2004-04-23 2010-04-20 Oracle America, Inc. Accelerating elliptic curve point multiplication through batched inversions
JP2005316267A (ja) * 2004-04-30 2005-11-10 Hitachi Ltd 楕円曲線ペアリング演算装置
EP1675299B1 (en) * 2004-12-23 2018-08-01 Hewlett-Packard Development Company, L.P. Authentication method using bilinear mappings
JP4630132B2 (ja) * 2005-05-27 2011-02-09 日本電信電話株式会社 ペアリング演算方法、その方法を用いた装置およびプログラム
EP2293491B1 (en) 2005-11-03 2012-08-22 Certicom Corp. Simultaneous scalar multiplication method
US8243919B2 (en) * 2007-03-07 2012-08-14 Research In Motion Limited Method and apparatus for performing elliptic curve scalar multiplication in a manner that counters power analysis attacks
CN100583769C (zh) * 2008-01-04 2010-01-20 清华大学 椭圆曲线密码系统的倍点系统
CN101547089B (zh) * 2008-03-28 2012-07-25 上海爱信诺航芯电子科技有限公司 集成电路中素数域椭圆曲线密码算法的实现方法
CN101572602A (zh) * 2008-04-28 2009-11-04 陈婧 一种基于硬件设计的有限域求逆的方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000187438A (ja) * 1998-12-22 2000-07-04 Hitachi Ltd 楕円曲線暗号実行方法及び装置並びに記録媒体
US20080219438A1 (en) * 2007-03-06 2008-09-11 Research In Motion Limited Method and Apparatus for Generating a Public Key in a Manner That Counters Power Analysis Attacks

Also Published As

Publication number Publication date
JP2013517527A (ja) 2013-05-16
KR20120123320A (ko) 2012-11-08
EP2524332B1 (en) 2016-07-27
EP2524332A4 (en) 2015-04-08
JP5738896B2 (ja) 2015-06-24
WO2011087891A3 (en) 2011-10-13
CN102713921B (zh) 2015-07-22
EP2524332A2 (en) 2012-11-21
WO2011087891A2 (en) 2011-07-21
US20110170684A1 (en) 2011-07-14
US8548160B2 (en) 2013-10-01
CN102713921A (zh) 2012-10-03

Similar Documents

Publication Publication Date Title
US6341349B1 (en) Digital signature generating/verifying method and system using public key encryption
US20060251247A1 (en) Encryption apparatus, decryption apparatus, key generation apparatus, program and method therefor
US7516321B2 (en) Method, system and device for enabling delegation of authority and access control methods based on delegated authority
US10230525B2 (en) Public key rollup for merkle tree signature scheme
US20050271203A1 (en) Encryption apparatus, decryption apparatus, key generation apparatus, program, and method
WO2007007836A1 (ja) 認証システム、認証方法、証明装置、検証装置、それらのプログラム及び記録媒体
EP1717724B1 (en) Methods for generation and validation of isogeny-based signatures
CN109413084B (zh) 一种口令更新方法、装置及系统
CN109359471B (zh) 基于用户身份的加密方法、装置、系统、设备和介质
CN112887081A (zh) 基于sm2的签名验签方法、装置及系统
CN116830523A (zh) 阈值密钥交换
CN112865973A (zh) 基于格的加密密钥和数字签名的生成方法
CN116566626A (zh) 环签名方法和设备
Chande et al. An improvement of a elliptic curve digital signature algorithm
CN111984959A (zh) 一种匿名信息发布及验证方法、装置
US20110320814A1 (en) System and method of authentication
KR101763443B1 (ko) 집적된 역수 연산들을 이용한 곡선 상의 페어링 결정
US8457305B2 (en) Generating genus 2 curves from invariants
CN114221753B (zh) 密钥数据处理方法和电子设备
US7769167B2 (en) Weil and Tate pairing techniques using parabolas
CN116896440B (zh) 基于区块链的声明数据的验证方法和装置、设备和介质
US20230085577A1 (en) Secured performance of an elliptic curve cryptographic process
KR101006358B1 (ko) 실수체 기반의 타원 곡선 암호 시스템 및 그 방법
JP2003228285A (ja) 楕円曲線スカラ倍演算装置
Mohamed Sirajudeen et al. Matrix-Based Data Security in Cloud Computing Using Advanced Cramer–Shoup Cryptosystem

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant