Ⅰ. 서론 동형암호 기술은 양자컴퓨터의 공격에도 안전 한 격자 문제(Lattice Problem) 기반 암호 체계이면서 기반 난제로 R-LWE(Ring-Learning with Error)를 적 용하여 강도 높은 보안성을 갖추고 있다. 뿐만 아 니라 동형암호는 동형연산(Homomorphic Operation)이라는 수학적 특성을 활용하여 암호화된 데 이터에 대해서도 결합 및 연산 처리를 가능하게 한 다. RSA(Rivest, Shamir, and Adleman), ECC(Elliptic Curve Cryptography), AES(Advanced Encryption Standard) 등과 같은 기존 암호 시스템은 데이터의 결합 및 연산 처리를 위해 암호 데이터를 복호하여 재식 별해야 하므로, 이 과정에서 민감한 정보가 노출될 수밖에 없는 기술적 한계가 있었다. 동형암호 기술은 데이터를 암호화된 상태로 저 장, 전송, 결합 및 연산 처리하여 전체 데이터 흐름 에서 재식별화 처리가 불필요하다는 특성을 갖추 고 있다. 따라서 동형암호 기술은 데이터의 높은 보안성 제공과 민감한 데이터의 안전한 활용성 제 공이라는 상충된 요구사항을 모두 충족하는 기술 로 각광받고 있다. 동형암호 기술에는 BGV(Brakerski, Gentry, and Vaikuntanathan), BFV(Brakerski, Fan, and Vercauteren), CKKS(Cheon, Kim, Kim and Song) 등 다양한 암호 스 킴(Scheme)이 있다. 이러한 동형암호 기술들은 기 반 난제인 R-LWE 정의에 의해 메시지를 암호화하 는 과정에서 메시지를 n차 다항식 쌍으로 매핑하 고, Error 다항식이라 불리는 노이즈 값을 더하며, 암호키 다항식을 메시지 다항식에 포함시키는 등 의 암호화 연산 처리 과정을 통해서 암호문을 생성 하게 된다. 따라서 동형암호는 메시지의 안정성을 크게 향상시키지만, 암호화 과정에서 암호문들의 사이즈가 매우 커지며 암호문에 추가된 노이즈 값 등이 암호문 간의 연산을 반복할수록 원래의 메시 지를 침범하게 되므로 이를 막기 위한 부가적인 연 산들도 추가로 필요하게 된다. 이러한 이유로 연산 량이 대폭 늘어나는 탓에 느린 연산 처리 문제를 해 결하여 실용적 수준으로 빠르게 연산 처리 결과를 제공해야 하는 기술 개발의 숙제도 가지고 있다. 동형암호의 결과를 얻기까지 긴 연산 시간, 즉 느린 연산 처리 문제를 해결하기 위한 연구로는 수 학적으로 연산량을 줄여 연산의 효율성을 향상시 키는 기법을 도입하거나 고안하는 연구들과 동형 암호 전용 연산 처리 가속 하드웨어 기술에 대한 연구들이 있다. 인공지능의 연산 처리 가속 하드 웨어 연구 분야에서 GPU(Graphics Processing Unit) 를 활용하거나 ASIC(Application Specific Integrated Circuit)를 개발하여 연산 처리 가속에 적용하는 등 의 연구가 활발한 것과 비슷하게 동형암호의 경우 도 연산 처리 가속 하드웨어 기술 연구가 급부상하 고 있다. 따라서 본고에서는 다양한 동형암호 스킴을 위 한 연산 처리 가속 하드웨어 기술 연구 동향과 집 중 연구되고 있는 동형암호의 주요 연산 처리 가속 하드웨어 기술에 대해서 고찰해 본다. Ⅱ장에서는 다양한 동형암호 스킴들을 위한 연산 처리 가속 하 드웨어 기술 연구 동향을 소개한다. Ⅲ장에서는 한 국전자통신연구원의 동형암호 연산 처리 가속 하 드웨어 기술 연구 방향에 대해서 소개하고, Ⅳ장을 결론으로 하여 완전 동형암호 하드웨어 가속기 기 술에 대해서 소개한다. Ⅱ. 동형암호 연산 가속 하드웨어 기술 1. BGV 스킴을 위한 연산 하드웨어 가. BGV 스킴 소개 BGV 동형암호 시스템은 암호문 상위비트에 노 박성천 외 / 완전동형암호 연산 가속 하드웨어 기술 동향 3 이즈 값이 추가되는 특성으로 인해 암호문들의 다 수 연산 처리에도 불구하고 사이즈가 커진 노이 즈 값이 메시지 값을 쉽게 침범하지 않는다. 그러 나 암호문들의 거듭되는 연산으로 인해 모듈러스 가 축소되므로 지속 연산이 가능한 수준의 모듈 러스 한계, 즉 관리 가능한 수준의 모듈러스 최대 값에 노이즈 값의 크기가 도달하고 있는지를 추 적하고, 한계에 도달한 암호문 모듈러스를 회복 시키는 모듈러스 스위칭(Modulus Switching)이라 는 부가적인 연산을 수행해야 한다. 물론 이 과정 에서 동형암호의 특성인 암호화된 상태의 연산 보 장을 위해 암호키 변경(Key Switching)이라는 과정 도 필요하게 된다. BGV 동형암호 스킴의 연산에 는 Key Generation(Secret Key, Public Key, Evaluation Key), Encryption, Decryption, Homomorphic Evaluation(Homomorphic Mult./Add./Sub.), Key Switching, Modulus Switching이 있다. • ParamGen(λ, P, K, B) → Params - P, p > 1 : integer, plaintext modulus - K ≥ 1 : integer, vector length - B : multiplicative depth - λ : security level - n : degree parameter - q : ciphertext modulus - ∝ : standard deviation • SecKeygen(params) → SK, EK - SK : secret key, an element “s” chosen from key distribution “ ” ring - EK : there is no evaluation key. • PubKeygen(params) → SK, PK, EK - SK : secret key, an element “s” chosen from key distribution “ ”, an element “s” that belong to the . - PK : chooses a uniformly random elements a from the ring and outputs the pair of ring elements. ex, PK = (a, b) = (-a, a×s + p×e) - e : is chosen from the error distribution “ ”. • SecEncrypt(SK, M) → C - First, maps the message M which comes from the plaintext space into an element of ring . - Second, samples a uniformly random element a from the ring and outputs the pair of ring elements. (c0, c1) = (-a, a×s + p×e+ ) - e : is chosen from the error distribution “ ”. • PubEncrypt(PK, M) → C - First, maps the message M which comes from the plaintext space into an element of ring recall, PK = (a, b) = (-a, a×s + p×e) - Second, samples three uniformly random elements r from distribution “ ” and f and f ′from the error distribution “” and outputs the pair of ring elements. (c0, c1) = (-a×r + p×f, b×r + p×f ′ + ) • Decrypt(SK, C) → M - First, computes the ring element c0×s + c1 over . - Second, interprets it as an element c′ in the ring . - It them computes c′(mod p), an element of , which it outputs → M. SecEncrypt는 Secret Key SK를 사용하여 메시지 M을 암호문으로 변환하는 과정이다. 첫 번째로 메시지 M은 정수 의 원소이고 이것을 Plaintext