ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 공개키 암호
    정보보호론 2022. 4. 10. 18:40

    키 배송 문제

    • 송신자와 수신자가 대칭키를 사저에 비밀스럽게 공유해야 한다.
    • 키가 너무 많아지는 문제가 있다.

    방법

    Diffie-Hellman 키 교환 -> 공개키 암호의 근간 -> RSA 응용

    (블록체인 시스템에도 사용된다)

    Diffie-Hellman

    암호 통신을 원하는 두 송수신자 사이 비밀 정보 공유 방법

    이산대수

    • 생성자(generator/원시근) g를 갖는 순환군(cyclic group) G에서
    • 이산대수 구하는 문제는 계산상 불가능하다는 것에 기인한다.

    여기서, 군(Group)과 아벨군의 개념이 중요하다.

    생성자(Generator) == 원시근(Primitive Root)

    오일러의 ø-함수

    == 오일러의 토이션 함수(Euler's totient function)!!!

    ø(n) 함수의 의미 : |Zn*| -> 기약잉여계 집합의 원소 개수 -> n과 서로소인 원소의 개수

    Diffie-Hellman 키교환 알고리즘

    • 큰 소수 p 와 mod p (à Zp*)에 대한 원시근(생성자) g 를 공유
    • mod p에 대한 원시근

    각 사용자는 다음과 같이 공개키/개인키 쌍을 생성

    비밀키 Xa를 임의적으로 선택한다. (Xa < p)

    공개키 Ya를 계산 : Ya = g^t mod p (t = Xa)

    • Ya를 공개 -> 공개키

    사용자 A, B의 공통키(세션키) Kab :

    • Kab = gt mod q (t = Xa*Xb)
      • = (Ya)t mod q (t = Xb) (사용자 b 계산)
      • = (Yb)t mod q (t = Xa) (사용자 a 계산)

    Diffie-Hellman 키교환 : 원시근/생성자

    임의의 소수 p 에 대하여 근의 멱승이 1부터 p-1까지의 모든 정수를 생성할 경우에 해당하는 원시근 g를 찾는 방법

    • Zp * 의 원소 중에서 하나를 g로 선택
    • g의 멱승에 대한 p modular 계산 결과: g^1 mod p, g^2 mod p, ........, g^p-1 mod p; 1부터 p-1까지의 각각 다른 정수를 생성.

    예)

    prime number = 소수

    Generator = 군(생성자: Zp*의 모든 생성자를 만들 수 있는 숫자들 중 하나)

    DH의 안전

    안전하다지만, 중간자 공격에는 취약하다.

    중간에 전달해 주는 값을 변경하면, 값이 달라져서, 서로 암호를 확인할 수 없다.

    RSA 암호 알고리즘

    a^(k× f(n) + 1) ≡ a (mod n) -> 오일러 정리

    p : prime number(소수)

    1버전 p : prime number(소수)
    a^(p-1) mod p ≡ 1 a^(p-1) ≡ 1 (mod p)
    2버전  
    a^p mod p ≡ a a^p ≡ a (mod p)

    오일러 정리

    페르마의 정리를 일반화 시킨 정리이다.

    • a^∅(n) ≡ 1 (mod n) (n: 모든 정수)
    • a^∅(n) (mod n) ≡ 1
    • a^(k * (n) + 1) ≡ a (mod n) -> 가장 중요하다

    이 정리를 이용해서 RSA로 발전한다.

    평문 a -> 암호화/복호화 과정 -> a^(k * (n) + 1) -> 평문 a

     a^(k * (n) + 1) = e * d <- (e * d mod ∅(n) = 1)

    • e * d mod ∅(n) ≡ 1
      • e: 암호호 키 (공개키)
      • d: 복호화 키 (개인키)
      • n: p * q 곱셈 (p와 q는 소수이다.)

     

    이 방법을 이용해서 RSA를 만든다.

    RSA

    암호문으로부터 평문 구하기 (공격)

    평문: 해독하려는 내용

    D : 개인 키 중 적어도 D는 모른다

    전사공격

    D의 후보가 되는 수를 순서대로 모두 시도해서 복호화 해본다

    -> D의 비트 수가 크면 어려워진다.

    N의 소인수 분해

    큰 수를 고속으로 소인수분해 할 수 있는 방법이 발견되면 RSA를 깰 수 있다.

    하지만, 그런 방식은 아직 발견되지 않았다.

    RSA Hack

    방법 1 : 공개된 N 값으로부터 p, q 찾기

    N = p*q (N : 512 bits)

    Generated prime p : (256 bits)

    Generated prime q : (256 bits)

    수행 회수 : 소인수분해 과정 2(512-1)번 수행해야 함

    방법 2 : 공개된 E 값으로부터 d 찾기

    N = p*q (N : 512 bits)

    Generated prime p : (256 bits)

    Generated prime q : (256 bits)

    e*d mod ø(n) ≡ 1 -> E : 256 bits. ( d ≡ e^-1 mod ø(n) )

    -> ø(n) 을 계산할 수 있어야 함

    수행 회수 : |Zn*| 개수를 구해야 함 -> 2^(512)-1 계산 수행해야 한다

    중간자 공격

    앨리스와 밥은 서로 연락한다고 생각하지만, 사실은 중간의 맬로리와 대화하고 있는 것이다.

    해결방법: 공인인증서 11장 -> 인증서 + 기타 방식 확장

    ElGamal 방식

    '정보보호론' 카테고리의 다른 글

    일방향 해시 함수  (0) 2022.05.04
    블록 암호 모드  (0) 2022.04.18
    MODULAR 개념과 암호  (0) 2022.03.28
    암호  (0) 2022.03.25
    정보보호  (0) 2022.03.21

    댓글

Designed by Tistory.