콘텐츠로 이동

곱셈 횟수란?

CKKS에서 곱셈 횟수는 암호문이 곱셈 연산을 몇 번 수행할 수 있는지를 결정하는 지표입니다. 곱셈 연산은 암호문의 노이즈를 증가시키며, 이로 인해 정해진 곱셈 횟수를 초과하여 곱셈을 반복하면 복호화가 불가능해집니다. 따라서 각 암호문의 곱셈 횟수에는 최대치가 존재하고, 특정 암호문의 남는 허용 곱셈 횟수를 레벨이라고 부르고 있습니다. 일반적으로 덧셈, 뺄셈, 곱셈은 동일한 남은 곱셈 횟수를 가진 암호문끼리만 허용됩니다. 이는 일반적인 동형암호 스킴에서의 제약사항이지만, DESILO FHE 라이브러리에서는 레벨 조정을 자동으로 처리해줍니다.

관련 개념:

  • Level: 잔여 곱셈 횟수
  • Modulus: 암호문이 사용할 수 있는 모듈러 값. 곱셈 연산을 수행할 때마다 이 모듈러 값의 크기가 줄어듭니다.
  • Rescaling: 곱셈 후 증가한 스케일과 노이즈를 줄이기 위해 modulus를 줄이는 과정. 이는 잔여 곱셈 횟수를 1만큼 낮춥니다.

연산 및 곱셈 횟수 소비 여부

연산 곱셈 카운트 소비 여부
clone 미소비
add 미소비
subtract 미소비
negate 미소비
rescale 소비
level_down 소비
multiply 소비: double, complex double, array_like, Plaintext, Ciphertext와 함께 사용 시
미소비: int와 함께 사용 시
multiply_imaginary_integer 미소비
relinearize 미소비
square 소비
conjugate 소비: multiparty가 아닌 경우, 최대 레벨에서만
미소비: 그 외의 경우
rotate 소비: multiparty가 아닌 경우, 최대 레벨에서만
미소비: 그 외의 경우
bootstrap 미소비