KR101866935B1 - 연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 시스템들 및 방법들 - Google Patents

연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR101866935B1
KR101866935B1 KR1020167022614A KR20167022614A KR101866935B1 KR 101866935 B1 KR101866935 B1 KR 101866935B1 KR 1020167022614 A KR1020167022614 A KR 1020167022614A KR 20167022614 A KR20167022614 A KR 20167022614A KR 101866935 B1 KR101866935 B1 KR 101866935B1
Authority
KR
South Korea
Prior art keywords
private key
encryption
mod
public key
key
Prior art date
Application number
KR1020167022614A
Other languages
English (en)
Other versions
KR20160114624A (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 KR20160114624A publication Critical patent/KR20160114624A/ko
Application granted granted Critical
Publication of KR101866935B1 publication Critical patent/KR101866935B1/ko

Links

Images

Classifications

    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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
    • 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/302Public 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 integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • 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

Abstract

연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 시스템들 및 방법들이 설명되는데, 이들은 평문을 암호문으로 암호화하는 것 ― 암호화는 공개 키 및 대응하는 개인 키를 사용함 ―; 그리고 암호문을 저장하는 것을 포함한다.

Description

연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 시스템들 및 방법들{SYSTEMS AND METHODS FOR FASTER PUBLIC KEY ENCRYPTION USING THE ASSOCIATED PRIVATE KEY PORTION}
[01] 분야
[02] 본 명세서에서 논의되는 요지는 일반적으로 데이터 처리에 관한 것으로, 보다 구체적으로는 연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 시스템들 및 방법들에 관한 것이다.
[03] 관련 배경
[04] 공개 키 암호화 또는 비대칭 암호화에서, 암호 시스템은 3개의 알고리즘들: 소유자에 의해 유지되는 개인 키 및 소유자에 의해 대중에게 발행되는 공개 키를 생성하는 키 생성용 알고리즘 하나; 발행된 공개 키에 액세스할 수 있는 누구라도 공개 키를 사용하여 암호화를 수행할 수 있게 하는 암호화용 알고리즘 하나; 그리고 개인 키 또는 "트랩도어(trapdoor)" 정보를 가진 소유자가 공개 키를 사용하여 암호화된 데이터를 개인 키로 복호화할 수 있게 하는 복호화용 알고리즘 하나로 구성된다.
[05] 예를 들어, RSA(Rivest, Shamir, Adleman) 알고리즘에서는, 개인 키와 공개 키 모두 2개의 소수들을 사용하여 생성된다. 소유자는 2개의 소수들을 알고 있고 소수들을 사용하여 복호화를 수행할 수 있다. "대중"(즉, 2개의 소수들의 적어도 어떤 형태의 합성식을 기초로 하는 공개 키가 제공된 자들)은 공개 키를 사용하여 암호화를 수행할 수 있다. 대중은 합성식을 효과적으로 인수분해할 수 없고 복호화를 수행할 수 없다.
[06] 특정 시나리오들에서, 암호화를 수행하는 관계자는 또한 개인 키의 소유자이다. 예를 들어, 소유자가 공용 네트워크를 통해 송신할 그리고/또는 제3자 저장소(예를 들어, 클라우드 저장소)에 저장하기 위한 데이터를 암호화하길 원할 수도 있다. 암호화된 데이터는 소유자에 의해 나중에 리트리브되어 복호화될 수 있다.
[07] 요지는 연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 방법들을 포함하는데, 이 방법들은 평문을 암호문으로 암호화하는 단계 ― 암호화는 공개 키 및 대응하는 개인 키를 사용함 ―; 및 암호문을 저장하는 단계를 포함한다.
[08] 이 방법들은 하나 또는 그보다 많은 컴퓨팅 디바이스들 및/또는 시스템들을 사용하여 구현된다. 이 방법들은 컴퓨터 판독 가능 매체들에 저장될 수도 있다.
[09] 도 1은 고속 암호화 구현들의 고 레벨 도면을 보여준다.
[10] 도 2는 고속 암호화 구현들이 전개될 수 있는 예시적인 환경을 보여준다.
[11] 도 3은 프로세스 구현의 일례를 보여준다.
[12] 도 4는 일부 예시적인 구현들에 적합한 예시적인 환경을 보여준다.
[13] 도 5는 일부 예시적인 구현들에 사용하기 적합한 예시적인 컴퓨팅 디바이스를 가진 예시적인 컴퓨팅 환경을 보여준다.
[14] 본 명세서에서 설명되는 요지는 예시적인 구현들로 교시된다. 명료하게 하기 위해 그리고 요지를 모호하게 하는 것을 피하기 위해 다양한 세부사항들이 생략되었다. 아래 도시되는 예들은 연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 시스템들 및 방법들을 구현하기 위한 구조들 및 기능들에 관한 것이다.
[15] 도 1은 고속 암호화 구현들의 고 레벨 도면을 보여준다. 예시적인 고속 암호화(100)는 암호문(C)을 생성하기 위해 공개 키(102)의 적어도 일부 및 (복호화 키로 지칭될 수 있는) 대응하는 개인 키(104)의 적어도 일부를 사용하여 데이터 또는 메시지(M)를 암호화하도록 구현된다. 고속 암호화(100)는 공개 키(102)의 적어도 일부를 사용하여 암호화를 수행하도록 하나 또는 그보다 많은 알고리즘들을 구현하는 소프트웨어 모듈, 프로세스, 소프트웨어 애플리케이션, 하드웨어 회로, 물리적 디바이스, 또는 이들의 임의의 결합일 수도 있다.
[16] 고속 암호화(100)는 공개 키 등과 개인 키 등을 사용하는, 암호화, 인증, 디지털 서명들 등을 위한 임의의 암호 시스템으로 구현될 수 있다. 본 명세서에서 설명되는 기술들을 사용하여 더 빨라질 수 있는 예시적인 알고리즘들은 전송 계층 보안(TLS: Transport Layer Security), PGP(Pretty Good Privacy), RSA(Rivest, Shamir, Adleman), 준동형 암호화(예를 들어, Paillier 암호화) 등을 포함하지만 이에 한정된 것은 아니다. 알고리즘은 (예를 들어, Diffie-Hellman 키 교환 등을 사용하는) 키 분배 또는 비밀 키 분배를 포함할 수 있다.
[17] 아래 도 2에서 설명되는 바와 같이, 암호문(C)은 공개 키(102)만을 사용하여 데이터를 암호화하는 종래의 암호화 알고리즘을 사용하여 암호화된 다른 암호문(C2)과 대등할 수도 있다. 즉, 동일한 복호화 엔진이 암호문(C) 및 암호문(C2)을 복호화할 수 있고, C가 고속 암호화 알고리즘(100)을 사용하여 암호화되는지 아니면 종래의 암호화 알고리즘을 사용하여 암호화되는지를 구별할 수 없다.
[18] 도 2는 고속 암호화 구현들이 전개될 수 있는 예시적인 환경을 보여준다. 관계자 A(200)(예를 들어, 소유자)는 키 생성(210)을 사용하여 공개 키(102) 및 개인 키(104)(또는 복호화 키(104))를 생성한다. 키 생성(210)은 키들을 생성하도록 하나 또는 그보다 많은 알고리즘들을 구현하는 소프트웨어 모듈, 프로세스, 소프트웨어 애플리케이션, 하드웨어 회로, 물리적 디바이스, 또는 이들의 임의의 결합일 수도 있다. 소유자(200)에게 암호화된 메시지를 전송하길 원하는 임의의 관계자(예를 들어, 관계자 B(250))에게 공개 키(102)가 제공될 수 있다. 소유자(200)는 공개 키(102)로 암호화된 메시지들을 복호화하기 위해 개인 키(104)를 사용한다. 소유자(200)는 또한 하나 또는 그보다 많은 고속 암호화 또는 고속 인증 알고리즘들에 개인 키(104) 또는 개인 키(104)의 적어도 일부를 사용한다.
[19] 키 생성(210)은 예를 들어, 2개의 소수들(p, q)을 랜덤하게 그리고 서로 독립적으로 계산 또는 선택함으로써 키들(예를 들어, 공개 키(102) 및 개인 키(104))을 생성한다. 구현들은 대등한 길이(예를 들어, 256 비트, 512 비트, 1024 비트, 2048 비트, 2X가 아닌 길이 등)의 소수들(p, q)을 사용할 수도 있다. 최대 공약수(즉, gcd)가 계산되어 gcd(pq , (p - 1)(q - 1)) = 1의 특성을 검증할 수도 있다. 공개 키(예를 들어, 공개 키(102)를 생성하기 위해, 키 생성(210)은 n = pq를 계산하고, g = n + 1과 같은 임의의 정수(g)를 선택하며, 여기서
Figure 112016080305715-pct00001
그리고
Figure 112016080305715-pct00002
; 그리고
Figure 112016080305715-pct00003
이다. 공개 키는 (n, g)이다. 공개 키는 효과적으로 풀리거나 인수분해되어 p와 q를 얻을 수 없는 합성수(n)를 포함한다. p 및/또는 q가 클수록(예를 들어, 비트 길이가 길수록), n을 풀기가 더 어렵다.
[20] 평문(m)은 본 명세에서 설명되는 예에서는 공식(c = (gm)(rn) mod n2)을 사용하여 암호문(c)으로 암호화될 수 있는데, 여기서
Figure 112016080305715-pct00004
이고 r은 무작위로 선택되며, 여기서
Figure 112016080305715-pct00005
또는
Figure 112016080305715-pct00006
이다.
Figure 112016080305715-pct00007
; 그리고
Figure 112016080305715-pct00008
그리고
Figure 112016080305715-pct00009
이다. 공식(c = (gm)(rn) mod n2)은 EQ1로 지칭될 수 있다. 본 명세서에서 사용되는 "평문" 또는 "m"(예를 들어, 도 1에 도시된 M, 그리고 도 2에 도시된 M1과 M2)이라는 용어는 암호화될 데이터, 정보 또는 메시지를 의미한다. "평문" 또는 "m"은 인간 판독 가능 또는 기계 복호화 가능한 형태일 수도 있고, 또는 인간 판독 가능하지 않거나 기계 판독 가능하지 않은(예를 들어, 이전에 암호화된) 형태일 수도 있다.
[21] 복호화를 하는 관계자나 소유자만이 p와 q를 알거나 알아야 한다. p와 q과 알려지면 개인 키가 쉽게 생성될 수 있다. 대응하는 개인 키(예를 들어, 공개 키(102)를 사용하여 암호화된 평문들을 복호화하기 위한 개인 키(104))를 생성하기 위해, 키 생성(210)은 λ = lcm(p - 1, q - 1)을 계산하는데, 여기서 lcm은 최소 공배수이다. 키 생성(210)은 또한 μ = (L(gλ mod n2))-1 mod n을 계산하는데, 여기서 L(μ) = (μ-1)/n이다. 개인(복호화) 키는 (λ, μ)이다. 본 명세서에서 설명되는 예에서 복호화 공식은 m = L(cλ mod n2)μ mod n이다.
[22] 개인 키(예를 들어, λ 및 μ)를 생성하기 위한 다른 예시적인 방법은, p와 q가 대등한 길이라면, λ = Φ(n) = (p-1)(q-1); μ = Φ(n) - 1 mod n; 그리고 g = n+1의 계산에 의한 것이다.
[23] 예를 들어, p와 q가 512 비트 길이의 수들일 수 있고 결과적인 n은 1024 비트 길이의 합성수일 수 있다. p와 q가 1024 비트 길이의 소수들이라면, n은 결국 2048 비트 길이가 될 수 있다(이 합성수는 "RSA 수"로 지칭된다).
[24] 복호화를 하는 관계자나 소유자만이 p와 q를 알거나 알아야 하기 때문에, 소유자(예를 들어, 소유자의 컴퓨팅 디바이스들 또는 시스템들)가 p 및/또는 q를 사용하여 암호화를 수행할 수 있다. 고속 암호화(100)는 예를 들어, 개인 키(104) 또는 개인 키의 컴포넌트들(예를 들어, p와 q)을 사용하여 암호화를 가속화하도록 구현된다.
[25] 도 1에 도시된 바와 같이, 고속 암호화(100)는 암호문들(예를 들어, 암호문(C1))을 생성하기 위해 공개 키(102) 및 대응하는 개인 키(104)(또는 그 일부)를 둘 다 사용하여 데이터(예를 들어, 메시지(M1))를 암호화한다.
[26] EQ1 암호화 공식은 c = (gm)(rn) mod n2이다. n+1이 g로서 사용된다면, 암호화 공식은 c = ((n+1)m)(rn) mod n2이 되고, 이는 (n+1)m mod n2의 이항 확장으로 인해 (EQ2)로 지칭되는) c = (1+nm)(rn) mod n2으로 감소될 수 있다. EQ2에서는, 하나의 거듭제곱(즉, gm)이 제거되었고, 이는 계산 시간을 줄일 수 있다. EQ2는 단 하나의 나머지 거듭제곱(즉, rn)만을 갖는다.
[27] p와 q를 사용함으로써 나머지 거듭제곱이 제거되거나 그 계산 시간이 감소될 수 있다. 밑(base)이 고정되어 있고 지수가 변화한다면, 사전 계산이 빠를 수도 있다. p와 q를 사용하여 암호화를 가속화하기 위해(즉, 이는 p와 q를 알고 있거나 이들에 액세스할 수 있는 개인 키(104)의 소유자에 의해서만 이루어질 수 있음), 잘 알려진 중국인의 나머지 정리(CRT: Chinese Remainder Theorem)가 EQ2의 "(rn) mod n2" 부분을 변환하여 고정된 밑으로 사전 계산을 수행할 수 있게 하는데 사용될 수 있다.
[28] n2 = p2q2에 주목한다. n2의 n차 나머지로부터 임의의 r을 선택하는 연산은 p2의 n차 나머지로부터 임의의 r1을 선택하고 q2의 n차 나머지로부터 임의의 r2를 선택하는 것으로 대체될 수 있다. CRT를 사용하면, r1과 r2가 결합되어 p2q2 또는 n2의 n차 나머지를 얻을 수 있다. CRT를 사용하면, (rn) mod n2 = (rn) mod p2q2이 임의의 r1 및 r2에 대한 (r1)n mod p2 및 (r2)n mod q2로 변환될 수 있으며, 여기서 (r1)(r2) = r;
Figure 112016080305715-pct00010
; 그리고
Figure 112016080305715-pct00011
이다.
[29] 차수(Φ(p2))의 순환군(
Figure 112016080305715-pct00012
)의 생성원(g1)을 선택하고 Φ(p2)으로부터 임의의 엘리먼트(s1)를 선택한 다음, y1 = (g1)s1 mod p2을 계산함으로써 r1의 값이 임의로 선택될 수 있다. Φ(p2)은 오일러 피(Euler's totient) 또는 파이 함수 = p2과 서로소인, p2 미만의 양의 정수들(즉, 1, 2,…,(p2-1))의 수이다.
[30] 차수(Φ(q2))의 순환군(
Figure 112016080305715-pct00013
)의 생성원(g2)을 선택하고 Φ(q2)으로부터 임의의 엘리먼트(s2)를 선택한 다음, y2 = (g2)s2 mod q2을 계산함으로써 r2의 값이 임의로 선택될 수 있다. Φ(q2)은 오일러 피 또는 파이 함수 = q2과 서로소인, q2 미만의 양의 정수들(즉, 1, 2,…,(q2-1))의 수이다.
[31] n차 나머지들을 얻기 위해, y1과 y2가 n 제곱으로 제곱된다. 따라서 (y1)n = [(g1)s1 mod p2]n = [(g1)s1]n mod p2 = (g1n)s1 mod p2, 그리고 (y2)n = [(g2)s2 mod q2]n = [(g2)s2]n mod q2 = (g2n)s2 mod q2이 된다. 참고로, g1n mod p2는 GN1로 지칭될 수 있고, g2n mod q2 = GN2이다. 결과들은 임의의 s1의 지수로 제곱된 고정된 밑의 GN1 mod p2(즉, GN1s1 mod p2) 그리고 임의의 s2의 지수로 제곱된 고정된 밑의 GN2 mod q2(즉, GN2s2 mod q2)이다.
[32] 고속 암호화(100)는 값들을 한 번 그리고 p와 q의 결합마다 단 한 번씩만 사전 계산한다. 설명의 간소화를 위해, 작은 p와 q 값들이 예들로서 선택된다. 컴퓨팅 디바이스들 및 시스템들에 의한 실제 구현들에서는, p와 q의 값들이 256 비트, 512 비트, 1024 비트, 2048 비트 또는 다른 비트 수들의 길이일 수도 있다. 예를 들어, 아래 도시되는 본 예에서는, p = 5 그리고 q = 7이다. 앞서 말한 예시적인 구현은 아래의 동작들의 시퀀스로 표시된 바와 같이, p와 q의 값들에 적용된다:
[33] p = 5; p2 = 25
[34]
Figure 112016080305715-pct00014
= (1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19, 21, 22, 23, 24)
[35] Φ(p2) =
Figure 112016080305715-pct00015
의 크기 = 20
[36] p2의 g1 = {1:1, 2:20, 3:20, 4:10, 5:2, 6:5, 7:4, 8:20, 9:10, 10:2, 11:5, 12:20, 13:20, 14:10, 15:2, 16:5, 17:20, 18:4, 19:10, 20:2, 21:5, 22:20, 23:20, 24:2}이며, 최대 차수는 20이다. 생성원(g1)은 (2, 3, 8, 12, 13, 17, 22 또는 23)이 될 수 있다.
[37] 예를 들어, g1 = 2이다.
[38] q = 7; q2 = 49
[39]
Figure 112016080305715-pct00016
= (1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48)
[40] Φ(q2) =
Figure 112016080305715-pct00017
의 크기 = 42
[41] q2의 g2 = {1:1, 2:21, 3:42, 4:21, 5:42, 6:14, 7:2, 8:7, 9:21, 10:42, 11:21, 12:42, 13:14, 14:2, 15:7, 16:21, 17:42, 18:3, 19:6, 20:14, 21:2, 22:7, 23:21, 24:42, 25:21, 26:42, 27:14, 28:2, 29:7, 30:3, 31:6, 32:21, 33:42, 34:14, 35:2, 36:7, 37:21, 38:42, 39:21, 40:42, 41:14, 42:2, 43:7, 44:21, 45:42, 46:21, 47:42, 48:2}이며, 최대 차수는 42이다. 생성원(g2)은 (3, 5, 10, 12, 17, 24, 26, 33, 38, 40, 45 또는 47)이 될 수 있다.
[42] 예를 들어, g2 = 3이다.
[43] n = pq = 35; n2 = 352 = 1225
[44] GN1 = g1n mod p2 = 235 mod 25 = 18
[45] GN2 = g2n mod q2 = 335 mod 49 = 19
[46] 상기의 상수값들을 미리 계산한 후, 고속 암호화(100)는 예를 들어, 다음의 알고리즘을 사용하여 임의의 데이터 또는 메시지(m)를 암호문(c)으로 암호화할 수 있다.
[47] EQ2는 c = (1+nm)(rn) mod n2이고, "(rn) mod n2" 부분은 GN1s1 mod p2 및 GN2s2 mod q2에 대해 CRT(Chinese Remainder Theorem)를 사용하여 계산될 수 있다.
[48] D = (1+nm) mod n2으로 한다. 이에 따라, D의 계산은 기본적으로 가장 높은 계산 비용과 관련하여(예를 들어, 시간 및/또는 자원 소비에 있어) 하나의 곱셈이다.
[49] 수행된 바와 같이 Φ(p2)으로부터 임의의 엘리먼트(s1)를 선택하고 Φ(q2)으로부터 임의의 엘리먼트(s2)를 선택하는 연산들은 계산 비용 면에서 무시해도 될 정도이다.
[50] E = GN1s1 mod p2 및 F = GN2s2 mod q2를 계산한다. 계산 비용은 기본적으로 고정된 밑에 대한 2개의 거듭제곱 연산들이다. 고정된 밑의 거듭제곱은 덧셈 사슬들의 방법들 그리고 특히 피펜저(Pippenger)의 거듭제곱 알고리즘을 통해 가속화될 수 있다.
[51] 고속 암호화(100)는 E와 F를 결합하여 H = (rn) mod n2의 결과를 산출하도록 CRT를 사용하여 계산을 수행한다. 계산 비용은 어떠한 거듭제곱 연산의 수행도 포함하지 않는다.
[52] 다음에, 고속 암호화(100)는 c = DH mod n2을 계산한다.
[53] 예를 들어, 도 2에 도시된 바와 같이, 고속 암호화(100)는 메시지(M1)를 암호화하여 암호문(C1)을 생성할 수 있다. M1 = 12(즉, m = 12)이다. (p = 5와 q = 7을 기초로) 미리 계산된 상수들(GN1, GN2)을 사용하여, 고속 암호화(100)는 다음을 선택 및/또는 계산한다:
[54] D = (1+nm) mod n2 = (1+35×12) mod 352 = 421
[55] (임의로 선택되는) s1 = 7 그리고 s2 = 9
[56] E = GN1s1 mod p2 = 187 mod 25 = 7
[57] F = GN2s2 mod q2 = 199 mod 49 = 48
[58] H는 다음 두 식들을 사용하여 계산될 수 있다.
[59] x ≡ 7 mod 25
[60] x ≡ 48 mod 49
[61] H = 832
[62] C1 = DH mod n2 = 421 × 832 mod 1225 = 1147
[63] 고속 암호화(100)에 의해 암호화될 데이터가 한 번에 암호화될 수 있는 양보다 더 크거나 더 길다면(예를 들어, m ∈
Figure 112016080305715-pct00018
), 각각의 세그먼트 ∈
Figure 112016080305715-pct00019
이라는 조건을 충족하도록 데이터가 세그먼트들로 분해될 수도 있다. 결과적인 암호문들이 연결될 수 있다. 역 프로세스 또는 복호화 프로세스에서, 연결된 암호문은 개개의 평문들로 복호화되기 전에 개개의 암호문들로 분할될 수 있다. 평문들이 연결되어 원본 데이터를 형성할 수 있다.
[64] 고속 암호화(100)가 M1을 암호화하여 C1을 생성한 후, C1은 예를 들어 관계자 A 또는 소유자(200)에 의해 제어되는 데이터베이스(220)에 저장될 수 있다. C1은 또한 경로(222)를 통해 네트워크(224)(예를 들어, 공용 네트워크 또는 인터넷)를 거쳐, 예를 들어 관계자 C(226)에 송신될 수도 있다. 관계자 C는 데이터 저장 서비스들을 제공하는 제3자(예를 들어, 클라우드 저장 서비스 제공자)일 수도 있다. 일부 구현들에서, 암호문(C1)은 관계자 A에 의해 제어되는 (도시되지 않은) 디바이스 또는 시스템에 의한 저장 또는 처리를 위해 네트워크(224)를 통해 송신될 수도 있다. 관계자 A가 M1 또는 C1의 평문 데이터에 액세스하길 원할 때, 관계자 A는 데이터베이스(220)에 저장되어 있다면 거기에서 또는 네트워크(224) 및 경로(228)를 통해 관계자 C로부터 C1을 리트리브할 수 있다. C1의 소스와 관계없이, 관계자 A는 복호화 엔진(230)(또는 복호화(230))을 사용하여 C1을 복호화할 수 있다.
[65] 고속 암호화(100)와는 대조적으로, 공개 키(102)에 액세스할 수 있는(즉, p와 q의 지식 없이도) 관계자(예를 들어, 관계자 B)만이 공개 키를 사용하여 암호화를 수행한다. 예를 들어, 관계자 A(200)는 관계자 B가 메시지(M2)를 암호문(C2)으로 암호화하여 관계자 A에 전송하도록 관계자 B(250)에 공개 키(102)를 제공한다. M2는 임의의 값일 수 있다. 관계자 B의 암호화 엔진(260)은 EQ1 c = (gm)(rn) mod n2을 사용하여 M2를 암호화한다. 예를 들어, n = 35이고 예를 들어, g = 36이다. 관계자 B는 합성수(n)의 인수들(p, q)을 알지 못한다. 암호화 엔진(260)은 앞서 설명한 바와 같이 임의의 r을 선택한다. 예를 들어, r = 23이다. 비교를 위해, M2 = 12(즉, m = 12)이다. EQ1은 C2 = (gm)(rn) mod n2 = (3612)(2335) mod 1225 = 522이다. 관계자 B는 관계자 A에 C2를 전송한다. EQ1은 개인 키(104)(예를 들어, 인수들(p, q)) 또는 λ 및/또는 μ 값들을 사용하지 않는다는 점에 주목한다.
[66] 관계자 A의 복호화 엔진(230)은 C1(즉, 개인 키(104) 및 공개 키(102)를 사용하여 고속 암호화(100)에 의해 암호화됨) 및 C2(즉, 공개 키(102)만을 사용하여 관계자 B의 암호화 엔진(260)에 의해 암호화됨)를 동일한 방식으로 복호화할 수 있다. C1과 C2가 (예를 들어, 개별적으로) 언제 도착하는지와 관계없이, C1과 C2는 동일한 복호화 키 또는 개인 키(104)(예를 들어, λ, μ)를 사용하여 독립적으로 복호화된다.
[67] 복호화를 위해, 복호화 엔진(230)은 다음의 값들을 리트리브 또는 계산한다:
[68] p = 5; q = 7; n = pq = 35; n2 = 1225
[69] g = n + 1 = 36
[70] λ = lcm(p-1,q-1) = 12
[71] μ = (L(gλ mod n2))-1 mod n, 여기서 L(u) = (u -1)/n이다.
[72] u = gλ mod n2 = 3612 mod 352 = 421
[73] L(u) = (421-1)/35 = 12
[74] μ = (12)-1 mod 35 = 3
[75] 개인키(λ, μ) = (12, 3)이다.
[76] 복호화 공식은 m = L(cλ mod n2)μ mod n이다.
[77] m = L(cλ mod n2)μ mod n = (k)μ mod n이고, 여기서 k = L(cλ mod n2)이고, 여기서 L(u) = (u -1)/n이다.
[78] 복호화 엔진(230)은 C1을 복호화하여 평문(M1)을 얻고 C2를 복호화하여 평문(M2)을 얻는다. 복호화 엔진(230)은 다음의 값들을 계산하여 C1(고속 암호화들(100)에 의해 생성된 C1 = 1147)을 복호화한다:
[79] u = C1λ mod n2 = 114712 mod 1225 = 141
[80] k = (141 -1)/35 = 4
[81] M1 = (k)μ mod n = (4)3 mod 35 = 12
[82] 복호화 엔진(230)은 다음의 값들을 계산하여 C2(암호화 엔진(260)에 의해 생성된 C2 = 522)를 복호화한다:
[83] u = C2λ mod n2 = 52212 mod 1225 = 141
[84] k = (141 -1)/35 = 4
[85] M2 = (k)μ mod n = (4)3 mod 35 = 12
[86] 고속 암호화 알고리즘을 사용하여 암호화되는 C들과 종래의 암호화 알고리즘을 사용하여 암호화되는 C2에 상관없이 동일한 복호화 엔진(230)이 암호문들(C1, C2)을 복호화할 수 있다.
[87] 도 3은 프로세스 구현의 일례를 보여준다. 프로세스(300)는 예를 들어, 고속 암호화(100)가 합성수(n = p × q)(예를 들어, 공개 키(102))를 사용하여 데이터(예를 들어, M1)를 암호문(예를 들어, C1)으로 암호화하는 블록(310)을 포함하며, 여기서 p와 q는 소수들일 수도 있다. 암호화 연산들을 가속하기 위한 고속 암호화(100) 또한 개인 키(104)의 컴포넌트들인 p와 q를 개별적으로 사용하였다. 예를 들어, g1 및 GN1은 p를 사용하여 또는 이를 기초로 계산되고, g2 및 GN2는 q를 사용하여 또는 이를 기초로 계산된다. 블록(320)에서, 암호화된 데이터(예를 들어, C1)가 (예를 들어, 데이터베이스(220)에) 저장되거나 다른 위치나 관계자(예를 들어, 관계자 C)로 전송될 수 있다.
[88] 일부 예들에서, 프로세스(300)는 서로 다른, 더 적은 또는 더 많은 블록들로 구현될 수도 있다. 프로세스(300)는 컴퓨터 실행 가능 명령들로서 구현될 수 있으며, 컴퓨터 실행 가능 명령들은 매체 상에 저장되고, 하나 또는 그보다 많은 컴퓨팅 디바이스들의 하나 또는 그보다 많은 프로세서들 상에 로딩되고, 그리고 컴퓨터 구현 방법으로서 실행될 수 있다.
[89] 공개 키 연산에서 개인 키를 사용하기 위한 다른 예는 서명 검증(예를 들어, 디지털 서명을 사용하여 서명된 메시지 또는 데이터의 진위를 검증하는 것)이다. 예를 들어, RSA 서명 키들을 생성하기 위해, (e)(d) ≡ 1(mod Φ(N))이 되는 정수들(e, d)과 함께 2개의 가장 큰 소수들(예를 들어, p와 q)의 곱인 모듈러스 N을 포함하는 RSA 키 쌍을 생성하고, 여기서 Φ는 오일러 파이 함수이다. 서명자의 공개 키는 N과 e로 구성되며, 서명자의 개인 키는 d를 포함한다.
[90] 메시지(m)를 서명하기 위해, 서명자는 σ ≡ md (mod N)을 계산한다. 디지털 서명된 메시지(σ)를 검증하기 위해, 수신기는 σe ≡ m (mod N)임을 체크한다. 소인수들(p, q)(즉, 개인 키)을 소지한 관계자는 (e제곱으로의 σ의 거듭제곱) mod (합성수 N) 대신, mod p 및 mod q 연산들을 수행하고 CRT를 사용하여, 앞서 설명한 EQ2의 "(rn) mod n2" 부분의 변환과 비슷하게, e제곱 mod N에 대한 메시지의 계산을 가속화하는 RSA 서명 검증을 구현할 수 있다.
[91] 예를 들어, (e제곱으로의 σ의 거듭제곱) mod (합성수 N)의 연산은 p의 n차 나머지로부터 임의의 r1을 선택하고 q의 n차 나머지로부터 임의의 r2를 선택하는 것으로 대체될 수 있다. CRT를 사용하면, r1과 r2가 결합되어 pq 또는 N의 e차 나머지를 얻을 수 있다. CRT를 사용하면, (σe) mod N = (σe) mod pq가 임의의 r1 및 r2에 대한 (r1)e mod p 및 (r2)e mod q로 변환될 수 있으며, 여기서 (r1)(r2) = σ; r1 ∈
Figure 112016080305715-pct00020
; 그리고 r2 ∈
Figure 112016080305715-pct00021
이다. 앞서 설명한 바와 같이 r1 및 r2를 계산한 후 연산들이 계속된다.
[92] 인수들(개인 키)을 알고 있는 관계자에 의한 RSA 암호화의 또 다른 예에 대해 동일한 연산이 적용될 수 있다. 예를 들어, 개인 키를 사용하여 디지털 서명된 메시지 또는 데이터를 검증하기 위해, 메시지를 기초로 한 검증 결과는 (예를 들어, 개인 키를 알고 있는 관계자에 의해) 개인 키 및 대응하는 공개 키의 적어도 일부를 사용하여 생성될 수도 있다. 검증 결과는 예를 들어, "검증" 또는 "거부"될 수도 있다. 결과는 예를 들어, 로그 또는 데이터베이스에 저장될 수도 있다.
[93] 도 4는 일부 예시적인 구현들에 적합한 예시적인 환경을 보여준다. 환경(400)은 디바이스들(405-445)을 포함하고, 디바이스들 각각은 예를 들어, 네트워크(460)를 통해(예를 들어, 유선 및/또는 무선 접속들에 의해) 적어도 하나의 다른 디바이스에 통신 가능하게 접속된다. 일부 디바이스들은 하나 또는 그보다 많은 저장 디바이스들(430, 445)에 통신 가능하게 접속될 수 있다.
[94] 하나 또는 그보다 많은 디바이스들(405-445)의 일례는 아래 도 5에서 설명되는 컴퓨팅 디바이스(505)일 수 있다. 디바이스들(405-445)은 컴퓨터(405)(예를 들어, 랩톱 컴퓨팅 디바이스), 모바일 디바이스(410)(예를 들어, 스마트폰 또는 태블릿), 텔레비전(415), 차량(420)과 연관된 디바이스, 서버 컴퓨터(425), 컴퓨팅 디바이스들(435-440), 저장 디바이스들(430, 445)을 포함할 수도 있지만, 이에 한정된 것은 아니다.
[95] 일부 구현들에서, 디바이스들(405-420)은 사용자 디바이스들(예를 들어, 클라우드 저장 서비스 제공자에 저장된 데이터와 같은 데이터에 액세스하기 위해 사용자에 의해 사용되는 디바이스들)로 고려될 수도 있다. 디바이스들(425-445)은 서비스 제공자들과 연관된(예를 들어, 웹페이지들, 텍스트, 텍스트 부분들, 이미지들, 이미지 부분들, 오디오들, 오디오 세그먼트들, 비디오들, 비디오 세그먼트들, 및/또는 이들에 관한 정보와 같은 데이터를 저장하고 그리고/또는 서비스들을 제공하기 위해 서비스 제공자들에 의해 사용되는) 디바이스들일 수도 있다.
[96] 예를 들어, 사용자(예를 들어, Alice)가 디바이스(405 또는 410)를 사용하여, 하나 또는 그보다 많은 디바이스들(425-445)에 의해 지원되는 저장소 제공자에 암호화된 데이터를 전송할 수도 있다. Alice는 컴퓨팅 시간 및/또는 자원들을 절약하기 위해 개인 키를 사용하여 데이터를 암호화할 수도 있다. 암호화된 데이터는 저장소 제공자에 의해서는 복호화될 수 없다. Alice가 데이터에 액세스하길 원할 때, Alice는 저장소 제공자로부터 (예를 들어, 암호화된 형태의) 데이터를 리트리브하여 Alice의 디바이스(405 또는 410) 상에서 데이터를 복호화한다.
[97] 도 5는 일부 예시적인 구현들에 사용하기 적합한 예시적인 컴퓨팅 디바이스를 가진 예시적인 컴퓨팅 환경을 보여준다. 컴퓨팅 환경(500)의 컴퓨팅 디바이스(505)는 하나 또는 그보다 많은 처리 유닛들, 코어들 또는 프로세서들(510), 메모리(515)(예를 들어, RAM, ROM 등), 내부 저장소(520)(예를 들어, 자기, 광, 고체 상태 저장소 및/또는 유기(organic)) 및/또는 I/O 인터페이스(525)를 포함할 수 있으며, 이들 중 임의의 것이 정보의 통신을 위한 통신 메커니즘 또는 버스(530) 상에 연결되거나 컴퓨팅 디바이스(505)에 내장될 수 있다.
[98] 컴퓨팅 디바이스(505)는 입력/사용자 인터페이스(535) 및 출력 디바이스/인터페이스(540)에 통신 가능하게 연결될 수 있다. 입력/사용자 인터페이스(535) 및 출력 디바이스/인터페이스(540) 중 어느 하나 또는 둘 다가 유선 또는 무선 인터페이스일 수 있고, 탈착 가능할 수 있다. 입력/사용자 인터페이스(535)는 입력을 제공하기 위해 사용될 수 있는 물리적인 또는 가상의 임의의 디바이스, 컴포넌트, 센서 또는 인터페이스(예를 들어, 버튼들, 터치스크린 인터페이스, 키보드, 포인팅/커서 제어부, 마이크로폰, 카메라, 점자(braille), 모션 센서, 광학 판독기 등)를 포함할 수도 있다. 출력 디바이스/인터페이스(540)는 디스플레이, 텔레비전, 모니터, 프린터, 스피커, 점자 등을 포함할 수도 있다. 일부 예시적인 구현들에서, 입력/사용자 인터페이스(535) 및 출력 디바이스/인터페이스(540)는 컴퓨팅 디바이스(505)와 함께 내장되거나 컴퓨팅 디바이스(505)에 물리적으로 연결될 수 있다. 다른 예시적인 구현들에서, 다른 컴퓨팅 디바이스들이 컴퓨팅 디바이스(505)에 대한 입력/사용자 인터페이스(535) 및 출력 디바이스/인터페이스(540)로서의 기능을 하거나 이들의 기능들을 제공할 수도 있다.
[99] 컴퓨팅 디바이스(505)의 예들은 고도의 모바일 디바이스들(예를 들어, 스마트폰들, 차량들 및 다른 기계들의 디바이스들, 사람들과 동물들이 휴대하는 디바이스들 등), 모바일 디바이스들(예를 들어, 태블릿들, 노트북들, 랩톱들, 개인용 컴퓨터들, 휴대용 텔레비전들, 라디오들 등), 및 이동성을 위해 설계되지 않은 디바이스들(예를 들어, 데스크톱 컴퓨터들, 다른 컴퓨터들, 정보 키오스크들, 하나 또는 그보다 많은 프로세서들이 내장된 그리고/또는 연결된 텔레비전들, 라디오들 등)을 포함할 수도 있지만, 이에 한정된 것은 아니다.
[100] 컴퓨팅 디바이스(505)는 동일한 또는 서로 다른 구성의 하나 또는 그보다 많은 컴퓨팅 디바이스들을 포함하는 임의의 수의 네트워크화된 컴포넌트들, 디바이스들 및 시스템들과 통신하기 위해 네트워크(550) 및 외부 저장소(545)에 (예를 들어, I/O 인터페이스(525)를 통해) 통신 가능하게 연결될 수 있다. 컴퓨팅 디바이스(505) 또는 임의의 접속된 컴퓨팅 디바이스는 서버, 클라이언트, 신 서버(thin server), 일반적인 기계, 특수 목적의 기계 또는 다른 라벨로서의 기능을 하고 있거나, 이들의 서비스들을 제공하고 있거나, 또는 이들로 지칭될 수 있다.
[101] I/O 인터페이스(525)는 컴퓨팅 환경(500)의 적어도 모든 접속된 컴포넌트들, 디바이스들 및 네트워크로의 그리고/또는 이들로부터의 정보의 전달을 위해 임의의 통신 또는 I/O 프로토콜들 또는 표준들(예를 들어, 이더넷, 802.11x, 범용 시스템 버스, 와이맥스(WiMax), 모뎀, 셀룰러 네트워크 프로토콜 등)을 사용하는 유선 및/또는 무선 인터페이스들을 포함할 수 있지만, 이에 한정되는 것은 아니다. 네트워크(550)는 임의의 네트워크 또는 네트워크들의 결합(예를 들어, 인터넷, 로컬 영역 네트워크, 광역 네트워크, 전화 네트워크, 셀룰러 네트워크, 위성 네트워크 등)일 수 있다.
[102] 컴퓨팅 디바이스(505)는 일시적 매체들 및 비-일시적 매체들을 포함하는 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체들을 사용하고 그리고/또는 이들을 사용하여 통신할 수 있다. 일시적 매체들은 송신 매체들(예를 들어, 금속 케이블들, 광섬유들), 신호들, 반송파들 등을 포함한다. 비-일시적 매체들은 자기 매체들(예를 들어, 디스크들 및 테이프들), 광학 매체들(예를 들어, CD ROM, 디지털 비디오 디스크들, 블루레이 디스크들), 고체 상태 매체들(예를 들어, RAM, ROM, 플래시 메모리, 고체 상태 저장소), 및 다른 비휘발성 저장소 또는 메모리를 포함한다.
[103] 컴퓨팅 디바이스(505)는 일부 예시적인 컴퓨팅 환경들에서 기술들, 방법들, 애플리케이션들, 프로세스들 또는 컴퓨터 실행 가능 명령들을 구현하는데 사용될 수 있다. 컴퓨터 실행 가능 명령들은 일시적 매체들로부터 리트리브될 수 있고, 비일시적 매체들 상에 저장되고 비일시적 매체들로부터 리트리브될 수 있다. 실행 가능 명령들은 임의의 프로그래밍, 스크립팅 및 기계 언어들(예를 들어, C, C++, C#, 자바, 비주얼 베이직, 파이썬, 펄, 자바스크립트 등) 중 하나 이상으로부터 비롯될 수 있다.
[104] 프로세서(들)(510)는 네이티브 또는 가상 환경에서 (도시되지 않은) 임의의 운영 시스템(OS: operating system) 하에서 실행될 수 있다. 논리 유닛(560), 애플리케이션 프로그래밍 인터페이스(API: application programming interface) 유닛(565), 입력 유닛(570), 출력 유닛(575), 사전 계산 엔진(580), 난수 발생기(585), 암호화 엔진(590), 그리고 서로 다른 유닛들이 서로, OS와, 그리고 (도시되지 않은) 다른 애플리케이션들과 통신하기 위한 유닛 간 통신 메커니즘(595)을 포함하는 하나 또는 그보다 많은 애플리케이션들이 전개될 수 있다. 예를 들어, 사전 계산 엔진(580), 난수 발생기(585) 및 암호화 엔진(590)은 도 1 내지 도 4에서 도시되고 설명된 하나 또는 그보다 많은 프로세스들을 구현할 수도 있다. 설명한 유닛들 및 엘리먼트들은 설계, 기능, 구성 또는 구현이 달라질 수 있고, 제공된 설명들로 한정되지는 않는다.
[105] 일부 예시적인 구현들에서, API 유닛(565)에 의해 정보 또는 실행 명령이 수신될 때, 이는 하나 또는 그보다 많은 다른 유닛들(예를 들어, 논리 유닛(560), 입력 유닛(570), 출력 유닛(575), 사전 계산 엔진(580), 난수 발생기(585) 및 암호화 엔진(590))에 전달될 수도 있다. 예를 들어, 입력 유닛(570)이 메시지(M)를 검출한 후, 입력 유닛(570)은 API 유닛(565)을 사용하여 사전 계산 엔진(580)에 메시지(M)를 전달할 수도 있다. 사전 계산 엔진(580)은 암호화 연산들에 필요한 상수들 및/또는 값들이 이용 가능함을 보장하기 위해 체크한다. 이용 가능하지 않다면, 사전 계산 엔진(580)은 이러한 상수들 및/또는 값들을 생성하거나 미리 계산한다. 사전 계산 엔진(580)은 다음에 암호화 엔진(590)을 호출하여 M을 암호화한다. 암호화 엔진(590)은 필요하다면 난수 발생기(585)를 호출하여, 암호화에 사용할 s1 및 s2 난수들을 발생시킨다. 암호화 엔진(590)이 M을 암호문(C)으로 암호화한 후, 암호화 엔진(590)은 출력 유닛(575)으로 전달하고, 출력 유닛(575)은 i/o 인터페이스(525)와 상호 작용하여 C를 저장하거나 C를 네트워크 상에 송신할 수도 있다.
[106] 어떤 경우들에는, 논리 유닛(560)이 유닛들 사이의 정보 흐름을 제어하고 그리고 앞서 설명한 일부 예시적인 구현들에서 API 유닛(565), 입력 유닛(570), 출력 유닛(575), 사전 계산 엔진(580), 난수 발생기(585) 및 암호화 엔진(590)에 의해 제공되는 서비스들을 전달하도록 구성될 수도 있다. 예를 들어, 하나 또는 그보다 많은 프로세스들 또는 구현들의 흐름은 논리 유닛(560)에 의해 단독으로 또는 API 유닛(565)과 함께 제어될 수도 있다.
[107] 몇 가지 예시적인 구현들이 도시되고 설명되었지만, 이러한 예시적 구현들은 본 명세서에서 설명한 요지를 이 분야에 익숙한 사람들에게 전달하기 위해 제공된다. 본 명세서에서 설명한 요지는 설명한 예시적인 구현들로 한정되지 않으면서 다양한 형태들로 구현될 수도 있다고 이해되어야 한다. 본 명세서에서 설명한 요지는 그러한 구체적으로 정의되거나 또는 설명된 내용들 없이 또는 설명되지 않은 다른 또는 상이한 엘리먼트들 또는 내용들로 실시될 수 있다. 첨부된 청구항들 및 이들의 등가물들에 정의된 바와 같이 본 명세서에서 설명한 요지를 벗어나지 않으면서 이러한 예시적인 구현들에 변경들이 이루어질 수도 있다고, 이 분야에 익숙한 자들에 의해 인식될 것이다.

Claims (20)

  1. 컴퓨터 구현 방법으로서,
    암호문으로 암호화할 평문을 수신하는 단계;
    상기 평문을 암호문으로 암호화하는 단계 ― 상기 암호화는 공개 키(public key) 및 대응하는 개인 키(private key)를 모두 사용하고, 상기 공개 키와 상기 대응하는 개인 키는 공개/개인 키 쌍(key pair)으로서 생성됨 ―; 및
    상기 암호문을 저장하는 단계
    를 포함하고,
    상기 공개 키는 합성 수 n을 포함하고, 상기 개인 키는 소수 p 및 소수 q를 사용하여 생성되며, n = p × q이고,
    상기 평문을 암호문으로 암호화하는 단계는,
    s1 및 s2를 결정하는 단계 ― 상기 s1은 상기 p를 기초로 하는 난수이고, 상기 s2는 상기 q를 기초로 하는 난수임 ―; 및
    상기 s1, 상기 s2 그리고 중국인의 나머지 정리(Chinese Remainder Theorem)를 사용하여 r 값을 계산하는 단계 ― 여기서 r ∈
    Figure 112017105135782-pct00030

    를 포함하는,
    컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 대응하는 개인 키를 사용하는 암호화는 g1 및 g2를 사용하는 것을 포함하고,
    상기 g1은 상기 p와 연관된 순환군의 생성원(generator)이고, 상기 g2는 상기 q와 연관된 순환군의 생성원인,
    컴퓨터 구현 방법.
  3. 제 2 항에 있어서,
    상기 대응하는 개인 키를 사용하는 암호화는 GN1 및 GN2를 사용하는 것을 더 포함하고,
    상기 GN1은 상기 g1을 기초로 하는 상수이고, 상기 GN2는 상기 g2를 기초로 하는 상수인,
    컴퓨터 구현 방법.
  4. 컴퓨터로 실행 가능한 명령들이 저장된 컴퓨터 판독 가능 저장 매체로서,
    상기 컴퓨터로 실행 가능한 명령들은,
    암호문으로 암호화할 평문을 수신하기 위한 명령들;
    상기 평문을 암호문으로 암호화하기 위한 명령들 ― 상기 암호화는 공개 키(public key) 및 대응하는 개인 키(private key)를 모두 사용하고, 상기 공개 키와 상기 대응하는 개인 키는 공개/개인 키 쌍(key pair)으로서 생성됨 ―; 및
    상기 암호문을 저장하기 위한 명령들
    을 포함하고,
    상기 공개 키는 합성 수 n을 포함하고, 상기 개인 키는 소수 p 및 소수 q를 사용하여 생성되며, n = p × q이고,
    상기 평문을 암호문으로 암호화하는 것은,
    s1 및 s2를 결정하는 것 ― 상기 s1은 상기 p를 기초로 하는 난수이고, 상기 s2는 상기 q를 기초로 하는 난수임 ―; 및
    상기 s1, 상기 s2 그리고 중국인의 나머지 정리(Chinese Remainder Theorem)를 사용하여 r 값을 계산하는 것 ― 여기서 r ∈
    Figure 112017105135782-pct00031

    을 포함하는,
    컴퓨터 판독 가능 저장 매체.
  5. 제 4 항에 있어서,
    상기 대응하는 개인 키를 사용하는 암호화는 g1 및 g2를 사용하는 것을 포함하고,
    상기 g1은 상기 p와 연관된 순환군의 생성원이고, 상기 g2는 상기 q와 연관된 순환군의 생성원인,
    컴퓨터 판독 가능 저장 매체.
  6. 제 5 항에 있어서,
    상기 대응하는 개인 키를 사용하는 암호화는 GN1 및 GN2를 사용하는 것을 더 포함하고,
    상기 GN1은 상기 g1을 기초로 하는 상수이고, 상기 GN2는 상기 g2를 기초로 하는 상수인,
    컴퓨터 판독 가능 저장 매체.
  7. 컴퓨팅 디바이스로서,
    저장소 및 프로세서를 포함하며,
    상기 프로세서는,
    암호문으로 암호화할 평문을 수신하고;
    상기 평문을 암호문으로 암호화하고 ― 상기 암호화는 공개 키(public key) 및 대응하는 개인 키(private key)를 모두 사용하고, 상기 공개 키와 상기 대응하는 개인 키는 공개/개인 키 쌍(key pair)으로서 생성됨 ―; 그리고
    상기 암호문을 저장하는 것
    을 수행하도록 구성되고,
    상기 공개 키는 합성수 n을 포함하고, 상기 개인 키는 소수 p 및 소수 q를 사용하여 생성되며, n = p × q이고,
    상기 평문을 암호문으로 암호화하는 것은,
    g1 및 g2를 결정하는 것 ― 상기 g1은 상기 p와 연관된 순환군의 생성원(generator)이고, 상기 g2는 상기 q와 연관된 순환군의 생성원임 ―; 및
    GN1 및 GN2를 결정하는 것 ― 상기 GN1은 상기 g1을 기초로 하는 상수이고, 상기 GN2는 상기 g2를 기초로 하는 상수임 ―
    을 포함하는,
    컴퓨팅 디바이스.
  8. 제 7 항에 있어서,
    상기 평문을 암호화하는 것은 s1 및 s2를 사용하는 것을 더 포함하고,
    상기 s1은 상기 p를 기초로 하는 난수이고, 상기 s2는 상기 q를 기초로 하는 난수인,
    컴퓨팅 디바이스.
  9. 제 8 항에 있어서,
    상기 평문을 암호화하는 것은 상기 s1, 상기 s2 그리고 중국인의 나머지 정리를 사용하여 r 값을 계산하는 것을 더 포함하며,
    여기서 r ∈
    Figure 112018032031664-pct00024
    인,
    컴퓨팅 디바이스.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020167022614A 2014-01-31 2015-01-30 연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 시스템들 및 방법들 KR101866935B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/170,436 2014-01-31
US14/170,436 US9264221B2 (en) 2014-01-31 2014-01-31 Systems and methods for faster public key encryption using the associated private key portion
PCT/US2015/013736 WO2015116918A1 (en) 2014-01-31 2015-01-30 Systems and methods for faster public key encryption using the associated private key portion

Publications (2)

Publication Number Publication Date
KR20160114624A KR20160114624A (ko) 2016-10-05
KR101866935B1 true KR101866935B1 (ko) 2018-06-14

Family

ID=52544572

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167022614A KR101866935B1 (ko) 2014-01-31 2015-01-30 연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 시스템들 및 방법들

Country Status (7)

Country Link
US (1) US9264221B2 (ko)
EP (1) EP3100407B1 (ko)
JP (2) JP6507171B2 (ko)
KR (1) KR101866935B1 (ko)
CN (1) CN106134128B (ko)
AU (1) AU2015210847B2 (ko)
WO (1) WO2015116918A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9425961B2 (en) 2014-03-24 2016-08-23 Stmicroelectronics S.R.L. Method for performing an encryption of an AES type, and corresponding system and computer program product
EP3334083A1 (en) * 2016-12-08 2018-06-13 Gemalto SA Method of rsa signature or decryption protected using a homomorphic encryption
US10361852B2 (en) 2017-03-08 2019-07-23 Bank Of America Corporation Secure verification system
US10374808B2 (en) 2017-03-08 2019-08-06 Bank Of America Corporation Verification system for creating a secure link
US10432595B2 (en) * 2017-03-08 2019-10-01 Bank Of America Corporation Secure session creation system utililizing multiple keys
US10425417B2 (en) 2017-03-08 2019-09-24 Bank Of America Corporation Certificate system for verifying authorized and unauthorized secure sessions
CN106992859B (zh) * 2017-04-11 2020-06-19 北京奇艺世纪科技有限公司 一种堡垒机私钥管理方法及装置
CN108228138B (zh) * 2017-12-28 2021-12-10 南京航空航天大学 一种sidh中特殊域快速模乘的方法
US10778410B2 (en) 2019-06-18 2020-09-15 Alibaba Group Holding Limited Homomorphic data encryption method and apparatus for implementing privacy protection
JPWO2022153456A1 (ko) * 2021-01-14 2022-07-21
CN115001741B (zh) * 2022-04-22 2024-02-23 山东云海国创云计算装备产业创新中心有限公司 一种数据加密方法及相关组件

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010002486A1 (en) * 1998-01-02 2001-05-31 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
US20090003597A1 (en) * 2005-02-25 2009-01-01 Qualcomm Incorporated Small Public-Key Based Digital Signatures for Authentication
JP2009043037A (ja) * 2007-08-09 2009-02-26 Nippon Telegr & Teleph Corp <Ntt> ユーザ認証方法、ユーザ認証装置、プログラム及び記録媒体

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052466A (en) 1997-08-28 2000-04-18 Telefonaktiebolaget L M Ericsson (Publ) Encryption of data packets using a sequence of private keys generated from a public key exchange
DE69840959D1 (de) * 1997-12-17 2009-08-20 Nippon Telegraph & Telephone Verschlüsselungs- und Entschlüsselungsvorrichtungen für Kryptosysteme mit öffentlichem Schlüssel und Aufzeichnungsmedium mit darauf gespeicherten zugehörigen Verarbeitungsprogrammen.
IL136748A0 (en) 1998-10-14 2001-06-14 Aegis Systems Inc System and method of securing a computer from unauthorized access
AU4250100A (en) 1999-04-22 2000-11-10 Veridicom, Inc. High security biometric authentication using a public key/private key encryptionpairs
US20020041683A1 (en) * 2000-09-29 2002-04-11 Hopkins Dale W. Method for selecting optimal number of prime factors of a modulus for use in a cryptographic system
KR100340102B1 (ko) 2000-11-30 2002-06-10 조휘갑 알에스에이 공개키 암호 고속화 장치 및 방법
CA2369304A1 (en) * 2002-01-30 2003-07-30 Cloakware Corporation A protocol to hide cryptographic private keys
JP4563037B2 (ja) * 2003-01-24 2010-10-13 シャープ株式会社 暗号化装置および復号化装置、並びにこれらを備えた暗号システム、暗号化方法および復号化方法
JP2005165290A (ja) * 2003-11-12 2005-06-23 Matsushita Electric Ind Co Ltd Rsa公開鍵生成装置、rsa復号装置及びrsa署名装置
US7630493B2 (en) 2005-01-18 2009-12-08 Tricipher, Inc. Multiple factor private portion of an asymmetric key
US7664259B2 (en) 2006-03-09 2010-02-16 Motorola, Inc. Encryption and verification using partial public key
JPWO2008149496A1 (ja) * 2007-05-30 2010-08-19 パナソニック株式会社 情報セキュリティ装置
CN101689993B (zh) * 2007-07-11 2013-02-27 株式会社东芝 组署名系统、装置和方法
JP2009296489A (ja) * 2008-06-09 2009-12-17 Nec Corp 情報処理装置、暗号化通信システム、暗号化通信方法及びプログラム
CN103457725B (zh) * 2013-07-02 2017-02-08 河海大学 一种多授权中心的加密方法
CN103490883B (zh) * 2013-09-17 2016-10-05 华南理工大学 一种多变量公钥加密/解密系统及加密/解密方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010002486A1 (en) * 1998-01-02 2001-05-31 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
US20090003597A1 (en) * 2005-02-25 2009-01-01 Qualcomm Incorporated Small Public-Key Based Digital Signatures for Authentication
JP2009043037A (ja) * 2007-08-09 2009-02-26 Nippon Telegr & Teleph Corp <Ntt> ユーザ認証方法、ユーザ認証装置、プログラム及び記録媒体

Also Published As

Publication number Publication date
JP6507171B2 (ja) 2019-04-24
JP6697506B2 (ja) 2020-05-20
CN106134128A (zh) 2016-11-16
KR20160114624A (ko) 2016-10-05
CN106134128B (zh) 2019-09-17
WO2015116918A1 (en) 2015-08-06
JP2017506362A (ja) 2017-03-02
US20150222422A1 (en) 2015-08-06
EP3100407A1 (en) 2016-12-07
EP3100407B1 (en) 2020-11-18
US9264221B2 (en) 2016-02-16
AU2015210847A1 (en) 2016-06-30
JP2018142013A (ja) 2018-09-13
AU2015210847B2 (en) 2019-01-24
BR112016017743A2 (pt) 2018-05-15

Similar Documents

Publication Publication Date Title
KR101866935B1 (ko) 연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 시스템들 및 방법들
US10785019B2 (en) Data transmission method and apparatus
Liu et al. An efficient privacy-preserving outsourced calculation toolkit with multiple keys
Polyakov et al. Fast proxy re-encryption for publish/subscribe systems
CN106161034B (zh) 使用乘法秘密共享的rsa解密
EP3913850A1 (en) Key management method and related device
KR102251697B1 (ko) 암호화 장치, 암호화 방법 및 컴퓨터 판독가능 기록매체
JP6363032B2 (ja) 鍵付替え方向制御システムおよび鍵付替え方向制御方法
Natanael et al. Text encryption in android chat applications using elliptical curve cryptography (ECC)
Sengupta et al. Message mapping and reverse mapping in elliptic curve cryptosystem
CN111555880A (zh) 数据碰撞方法、装置、存储介质及电子设备
WO2014030706A1 (ja) 暗号化データベースシステム、クライアント装置およびサーバ、暗号化データ加算方法およびプログラム
JP6294882B2 (ja) 鍵保管装置、鍵保管方法、及びそのプログラム
CN111953480A (zh) 密钥生成装置以及方法、运算密钥生成装置以及方法
Naji et al. Data (Video) Encryption in Mobile Devices
Patel et al. A critical analysis on encryption techniques used for data security in cloud computing and IOT (internet of things) based smart cloud storage system: a survey
US11743039B2 (en) System and method for data encryption using key derivation
US20230085577A1 (en) Secured performance of an elliptic curve cryptographic process
Msilini et al. Homomorphic Cryptosystems for Securing Data in Public Cloud Computing
Tian Comparison between ECDH and X3DH protocol
JP2005321719A (ja) 通信システム、復号装置、復元装置、鍵生成装置及び通信方法
Mohamed Sirajudeen et al. Matrix-Based Data Security in Cloud Computing Using Advanced Cramer–Shoup Cryptosystem
CN113872757A (zh) 一种基于sm2公钥加密算法的广播加密方法
Visalakshi et al. Secure Cloud-based Access Control Optimization (SCACO)
Hayward Parallel processing of fully homomorphic encryption for a cloud environment

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right