암호학/암호학 둘러보기

[암호학 둘러보기](7)[D-H 알고리즘]

황올뱀 2025. 2. 4. 09:57

비대칭키 암호: 서로 다른 키를 이용해 메세지를 암호화, 복호화하는 암호
    서로 같은 키를 사용해 암호화하는 대칭키 암호에서 키가 중간에 탈취되어 암호가 뚫리는 문제를 해결함. (직접 키 교환이 아니라 각자 가지고 있는 키로 암호/복호화)

 

모듈러 연산: 나머지 연산 %
    예) 4 (mod 3) = 1
이산 로그: 이산 거듭제곱 계산은 쉽지만 역방향인 이산 로그는 어렵다는 것을 이용
    모듈러 연산에 닫혀있는 Zp에 대해 g^x (mod p) = y 는 쉽지만 g, p, y를 가지고 x를 계산하긴 어렵다.
    특히 p가 커질수록 순환군의 크기도 커지므로 계산이 더 어려워진다.
    예) g = 2, x = 3, p = 7
        y = 2^3 (mod 7) = 8 (mod 7) = 1
        그러나, g, p, y를 가지고 x를 계산하진 못한다. 가능한 x = {1, 8, 64, 512 ... }이다. (가능한 x의 개수는 무한) -> 브루트포스로 찾기...
        p가 7정도가 아닌 더 큰 소수라면 거의 못찾음

 

디피-헬만 알고리즘: 이산 로그를 이용한 공개키-개인키 알고리즘을 사용해 공유키를 설정하는 방법

  • 과정
    서로 피라미터 g, p를 합의한다. (딱히 털려도 상관 없음)
    각자 비밀 값을 선택해 g^(선택 비밀값) (mod p) = y를 한다.
    계산 결과를 서로에게 전달한다. (이때도 털려도 상관 없음)
    (상대에게 받은 숫자)^(각자 비밀값) (mod p)를 하면 서로 같은 값이 나온다. 이걸 키로 사용하면 된다.
    (중간에서 g, p, y가 유출될 수 있지만 이산 로그의 특성으로 괜찮다)
  • 예)
    앨리스와 밥이 메세지를 주고받을 키를 결정한다고 하자. 이때 g = 7, p = 11을 합의해놨다.
    앨리스의 개인키 = 3, 밥의 개인키 = 4앨리스의 공유키 = 3^3 (mod 11) = 5
    밥의 공유키 = 2^4 (mod 11) = 5
    앨리스 공유키 = 밥 공유키 = 5

    앨리스 -> 밥 = 7^3 (mod 11) = 2
    밥 -> 앨리스 = 7^4 (mod 11) = 3
  • 공격
    중간자 공격: 공격자가 중간에 끼어들어 양쪽에게 자신의 키를 보내 속이는 방법
  • 디피-헬만 알고리즘은 전송된 값이 어디서 왔는지 검증하지 않음 -> 디지털 서명으로 방어 가능
728x90
반응형