10-1

@hongo · May 02, 2022 · 1 min read

Modular Exponentiation

  • e는 고정된 작은 값을 쓸 수 있지만 d는 매우 큰 숫자를 사용하게 된다
  • n의 bit수와 d의 bit수는 거의 같다

    • n은 3072 or 4096 bit 자리 이진수
  • n = p x q (p, q는 각각 2048 bit) 곱하면 4096bit
  • 파이n은 (p-1)(q-1)이므로 역시 4096bit
  • d는 e의 곱셈의 역원을 모듈러 파이n한 것이므로 : 0 < d < 파이(n)
  • d의 자릿수 숫자는 불규칙?

    • d의 앞 bit가 1이면 4096bit (확률 1/2)
    • d의 앞 bit가 0, 두 번째 bit가 1이면 4065bit (확률 1/4)
    • 이런식을 확률이 점점 줄어듦. 즉 bit수가 4096과 가까울 확률이 높음
  • Two key techniques for fast exponentiation

    • 거듭해서 곱하지말고 제곱과 곱하기를 해결하자~
    • a^b는 숫자가 너무 크니, 각 a에 mod n연산을 해줘서 크기를 줄이자!
    • 4000 -> 8000 -> 16000 -> 24000 ...
    • 4000 -> 8000 -> 4000(mod n) -> 8000 ...
    • 어차피 (x x y) mod n = [(x mod n) x (y mod n)] mod n
    • 이게 적용된게 Fast Modular Exponentiation 알고리즘

Binary L to R

=(Square and multiply)

  • 이진수로 분해
  • 제곱 (f x f)
  • 비트 곱하기? (f x a)

제곱과 선택적인 비트 곱하기

Application of RSA

  • 기밀성(Confidentiality)

    • src는 dest의 pu로 암호화
    • dest는 dest의 pr로 복호화
  • 인증(Authentication) - 전자서명(nonrepudation) 제공 가능

    • src는 src의 pr로 암호화
    • dest는 src의 pb로 복호화
  • 기밀성 & 인증 둘 다

    • src가 src의 pr로 암호화 (서명)
    • src가 dest의 pu로 암호화(메시지 암호화)
    • dest가 dest의 pr로 복호화(메시지 복호화)
    • dest가 src의 pb로 복호화 (서명확인)
@hongo
홍고 블로그