컴퓨터보안#9

LeeMir, 28 April 2021

공개키 암호화


공개키 암호화
  • 암호학 전체의 역사에서 최대 혁명적 발견
  • 평문에 수신자의 공개키로 암호화 후 암호문을 수신자의 개인키로 복호화해서 볼 수 있음
Knapsack Problem
  • 암호화 절차
    • Superincrease knapsack인 S 설정
    • S의 모든 원소의 합보다 큰 n 설정
    • n보다 작은 수 중, n과 서로소인 수 w 설정
    • S의 모든 원소를 w와 곱한 후 mod n 연산을 해 H를 구함
    • plaintext에서 1인 부분에 해당하는 H 원소의 합이 ciphertext
  • 복호화 절차
    • 수신자는 w와 n, H를 알고 있음(H,n이 공개키 w^(-1), S가 개인키)
    • w와 n과 H를 이용해 S를 구함
    • w의 곱셈에 대한 역원을 구함
    • w^(-1)과 ciphertext를 곱해 T를 구함
    • T를 가지고 S에 대해 Super Increase Knapsack 형태로
  • 쓰이고 있지는 않음
RSA
  • 페르마의 정리
    • p는 소수이고, a는 p로 나눠지지 않는 양의 정수일 때
    • a^(p-1) = 1 mod p
    • a^(p-1) mod p = 1
  • 오일러의 정리
    • Totient Function
      • n보다 작은 값 중에서 n과 서로소인 양의 정수가 몇 개인지 세는 함수 Φ(n)
      • Φ(1) = 1
        • 1도 세는 것으로 함
      • Φ(p) = p - 1
        • 1을 세고, p는 소수이기 때문
      • Φ(pq) = Φ(p) Φ(q) = (p-1) (q-1)
        • 소수가 아닐 때에는 소수의 곱으로 나타내고, 그 소수에 대한 Φ(n)을 곱해 계산
        • p와 q가 다른 수일때에만 성립, p=q인 제곱수에서는 성립하지 않음
    • 페르마의 정리에서 굳이 p가 소수가 아니어도 성립할 수 있음을 보여줌
      • a^(Φ(n)) = 1 mod n
  • 공개키
    • n = pq
    • e
      • GCD(e, Φ(n)) = 1을 만족하는 e
  • 암호키(개인키)
    • d
      • ed = 1 mod Φ(n)을 만족하는 d
  • 암호화(m : 메시지)
    • c = m^(e) mod n
  • 복호화
    • m = c^(d) mod n
    • c^(d) = m^(ed) = m^(kΦ(n)+1) = m mod n