비대칭키 암호: 서로 다른 키를 이용해 메세지를 암호화, 복호화하는 암호
서로 같은 키를 사용해 암호화하는 대칭키 암호에서 키가 중간에 탈취되어 암호가 뚫리는 문제를 해결함. (직접 키 교환이 아니라 각자 가지고 있는 키로 암호/복호화)
모듈러 연산: 나머지 연산 %
예) 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
반응형
'암호학 > 암호학 둘러보기' 카테고리의 다른 글
[암호학 둘러보기](9)[해시] (0) | 2025.02.18 |
---|---|
[암호학 둘러보기](8)[RSA] (0) | 2025.02.05 |
[암호학 둘러보기](6)[AES] (1) | 2025.01.22 |
[암호학 둘러보기](5)[DES 3] (0) | 2025.01.21 |
[암호학 둘러보기](4)[DES 2] (0) | 2025.01.20 |