1 |
1
PRNG 코어에서 생성한 난수들을 거부 샘플러 및 이항 샘플러를 통해 다항식 행렬과 에러 벡터를 생성하고, 생성된 에러 벡터를 NTT 코어를 통해 NTT 도메인으로 변환한 후 포인트-와이즈 곱셈기와 덧셈기를 이용하여 연산을 수행하고, 연산 결과는 인코더를 이용하여 암호화 프로세서 및 복호화 프로세서에서 사용하기 위한 공개키 및 비밀키로 인코딩하여 출력하는 키생성 프로세서; 사용자가 암호화 하고자 하는 메시지와 상기 키생성 프로세서로부터 공개키를 수신하여 상기 메시지를 인코딩하고, 상기 공개키를 디코딩하여 거부 샘플러와 이항 샘플러를 통해 암호화에 필요한 다항식 행렬과 에러 벡터를 생성하고, 생성된 에러 벡터를 NTT 코어 및 INTT 코어를 통해 NTT 도메인에서 포인트-와이즈 곱셈기와 덧셈기를 이용하여 연산을 수행하고, 연산 결과는 컴프레스를 이용하여 암호문을 압축 및 인코딩하여 출력하는 암호화 프로세서; 및 상기 암호화 프로세서로부터 암호문을 수신하여 디컴프레스를 통해 암호문의 압축 해제 및 디코딩을 수행하고, 상기 키생성 프로세서로부터 비밀키를 수신하여 디코딩을 수행하고, NTT 코어 및 INTT 코어를 통해 NTT 도메인에서 포인트-와이즈 곱셈기와 뺄셈기를 이용하여 연산을 수행하고, 연산 결과는 메시지 디코더를 이용하여 원본 메시지를 출력하는 복호화 프로세서를 포함하고, 상기 암호화 프로세서는, 사용자가 입력한 메시지를 1비트 단위로 마스킹하는 메시지 인코더; 공개키를 수신하여 공개키를 역-직렬화하는 공개키 디코더; 공개키 디코더의 출력을 입력 받아 공개키 생성과 암호화에 필요한 다항식 행렬을 생성하는 거부 샘플러; 비밀키 생성과 암호화에 필요한 에러 계수를 생성하는 이항 샘플러; 이항 샘플러의 출력을 입력 받아 NTT 연산을 수행하는 NTT 코어; 거부 샘플러와 이항 샘플러의 값을 연산하는 포인트-와이즈 곱셈기 및 덧셈기; 포인트-와이즈 곱셈기를 통해 연산된 값을 입력 받아 역-NTT 연산을 수행하는 INTT 코어; 곱셈 연산 결과에 대해 몽고메리 리덕션 연산을 수행하는 MR1; 덧셈 연산 결과에 대해 바렛 리덕션 연산을 수행하는 MR2; 및 리덕션된 데이터를 압축 및 인코딩하여 암호문으로 출력하는 컴프레스를 포함하는 암호 프로세서 시스템
|
2 |
2
제1항에 있어서,상기 키생성 프로세서는, 의사난수를 생성하는 PRNG 코어; PRNG 코어에서 생성한 의사난수를 이용하여 공개키 생성 및 암호화에 필요한 다항식 행렬을 생성하는 거부 샘플러; PRNG 코어에서 생성한 의사난수를 이용하여 공개키 생성 및 비밀키 생성에 사용하기 위한 에러 계수를 생성하는 이항 샘플러; 이항 샘플러의 출력을 입력 받아 NTT 연산을 수행하는 NTT 코어; 연산 과정에 사용되는 포인트-와이즈 곱셈기 및 덧셈기; 및 연산된 결과를 직렬화하는 비밀키 인코더를 포함하는 암호 프로세서 시스템
|
3 |
3
삭제
|
4 |
4
제1항에 있어서,상기 복호화 프로세서는, 암호문을 수신하여 압축 해제 및 디코딩하는 암호문 디컴프레스; 비밀키를 수신하여 비밀키를 역-직렬화하는 비밀키 디코더; 암호문 디컴프레스의 출력을 입력 받아 NTT 연산을 수행하는 NTT 코어; 복호화 연산에 필요한 포인트-와이즈 곱셈기 및 뺄셈기; 포인트-와이즈 곱셈기를 통해 연산된 값을 입력 받아 역-NTT 연산을 수행하는 INTT 코어; 곱셈 연산 결과에 대해 몽고메리 리덕션 연산을 수행하는 MR1; 덧셈 연산 결과에 대해 바렛 리덕션 연산을 수행하는 MR2; 및 연산된 결과로 얻은 메시지의 마스크를 제거하는 메시지 디코더를 포함하는 암호 프로세서 시스템
|
5 |
5
제1항에 있어서,상기 PRNG 코어는 Keccak 알고리즘을 사용하는 SHA3로 샘플링의 입력 비트에 따라 출력 비트의 길이를 조정하고, 상기 거부 샘플러는 상기 PRNG 코어의 출력을 16비트 단위로 입력 받아 균일한 임의의 정수 modulo q 를 생성하는 모듈로서 19q보다 작은 값을 통과시켜 바렛 리덕션을 수행하도록 하고, 상기 이항 샘플러는 상기 PRNG 코어의 출력을 8비트 단위로 입력 받아 중심이항분포에 따라 계수 값을 생성하고, 상기 NTT 코어는 2-병렬 NTT 코어로서 총 7개의 스테이지(stage)를 포함하고, 각각의 스테이지는 PE(Processing Element)로 구성되고, 상기 포인트-와이즈 곱셈기는 베이스 곱셈기 및 누산기를 포함하는 암호 프로세서 시스템
|
6 |
6
제5항에 있어서, 상기 NTT 코어의 상기 PE는 입력 값과 ROM에 저장된 값과 곱셈연산 후 순서대로 몽고메리 리덕션, BU 연산, 바렛 리덕션 연산을 수행하여 출력하는 암호 프로세서 시스템
|
7 |
7
제6항에 있어서, 상기 INTT 코어의 PE는 NTT 코어의 PE와 반대되는 구조를 갖고 입력 값을 BU와 바렛 리덕션 연산한 값을 ROM에 저장된 값과 곱셈 연산 후 몽고메리 리덕션 연산을 수행하여 출력하는암호 프로세서 시스템
|
8 |
8
제5항에 있어서, 상기 베이스 곱셈기는 곱셈을 수행할 각각의 다항식으로부터 두 개씩 입력으로 받아 Bow-tie 곱셈을 수행하고, 상기 누산기는 행렬의 곱셈 방식에 따라 곱셈 연산을 수행한 후 각각의 다항식 열을 더해주는 역할을 수행하는암호 프로세서 시스템
|
9 |
9
제1항에 있어서, 상기 MR1은 몽고메리 리덕션을 통해 곱셈으로 커진 연산 결과를 줄이기 위해 NTT 코어 및 포인트-와이즈 곱셈기에 사용되고, MR2은 바렛 리덕션을 통해 덧셈으로 커진 연산 결과를 줄이기 위해 사용되는 암호 프로세서 시스템
|
10 |
10
키생성 프로세서가 PRNG 코어로 생성한 난수들을 거부 샘플러 및 이항 샘플러를 통해 다항식 행렬과 에러 벡터를 생성하고, 생성된 에러 벡터를 NTT 코어를 통해 NTT 도메인으로 변환한 후 포인트-와이즈 곱셈기와 덧셈기를 이용하여 연산을 수행하고, 연산 결과는 인코더를 이용하여 암호화 프로세서 및 복호화 프로세서에서 사용하기 위한 공개키 및 비밀키로 인코딩하여 출력하는 단계; 암호화 프로세서가 사용자가 암호화 하고자 하는 메시지와 상기 키생성 프로세서로부터 공개키를 수신하여 상기 메시지를 인코딩하고, 상기 공개키를 디코딩하여 거부 샘플러와 이항 샘플러를 통해 암호화에 필요한 다항식 행렬과 에러 벡터를 생성하고, 생성된 에러 벡터를 NTT 코어 및 INTT 코어를 통해 NTT 도메인에서 포인트-와이즈 곱셈기와 덧셈기를 이용하여 연산을 수행하고, 연산 결과는 컴프레스를 이용하여 암호문을 압축 및 인코딩하여 출력하는 단계; 및 복호화 프로세서 상기 암호화 프로세서로부터 암호문을 수신하여 디컴프레스를 통해 암호문의 압축 해제 및 디코딩을 수행하고, 상기 키생성 프로세서로부터 비밀키를 수신하여 디코딩을 수행하고, NTT 코어 및 INTT 코어를 통해 NTT 도메인에서 포인트-와이즈 곱셈기와 뺄셈기를 이용하여 연산을 수행하고, 연산 결과는 메시지 디코더를 이용하여 원본 메시지를 출력하는 단계를 포함하고, 상기 암호화 프로세서가 암호문을 압축 및 인코딩하여 출력하는 단계는, 메시지 인코더를 통해 사용자가 입력한 메시지를 1비트 단위로 마스킹하고; 공개키 디코더를 통해 공개키를 수신하여 공개키를 역-직렬화하고; 거부 샘플러를 통해 공개키 디코더의 출력을 입력 받아 공개키 생성과 암호화에 필요한 다항식 행렬을 생성하고; 이항 샘플러를 통해 비밀키 생성과 암호화에 필요한 에러 계수를 생성하고; NTT 코어를 통해 이항 샘플러의 출력을 입력 받아 NTT 연산을 수행하고; 포인트-와이즈 곱셈기 및 덧셈기를 통해 거부 샘플러와 이항 샘플러의 값을 연산하고; INTT 코어를 통해 상기 포인트-와이즈 곱셈기를 통해 연산된 값을 입력 받아 역-NTT 연산을 수행하고; MR1를 통해 상기 곱셈 연산 결과에 대해 몽고메리 리덕션 연산을 수행하고; MR2를 통해 상기 덧셈 연산 결과에 대해 바렛 리덕션 연산을 수행하고; 컴프레스를 통해 상기 리덕션된 데이터를 압축 및 인코딩하여 암호문으로 출력하는 암호화 방법
|