만족
[정보보안] 암호의 이해 본문
[정보보안] 암호의 이해
기타 CS 이론/IT Security Satisfaction 2021. 12. 13. 07:53
암호화를 통해 복호화 키를 가지지 않은 사람은 메시지의 원문을 확인하지 못하게 할 수 있다.
대칭키 암호화
대칭키 암호화는 암호화 키와 복호화 키가 같은 암호화 방식을 발한다.
대칭키 암호화는 대표적으로 DES 암호화가 있다.
DES암호화는 블럭 암호의 일종으로 메시지를 블록 단위로 쪼갠 뒤
S-box(알려진 값)을 이용해 혼돈과 확산을 유발한다.
이후 P-box의 값을 참조하여 S-box에 넣고 돌린 결과를 셔플한다.
DES는 이미 깨져버린 암호화 방식으로 1988년 미국 정부에서 사용을 중단했다.
대칭키 암호화: 트리플 DES
DES 암호화가 깨진 후, 대체할 암호화 방식이 아직 나오지 않았을 때 사용했던 방법이다.
2개의 키를 이용해 암복호화 시 3번의 DES를 사용한다.
2개의 키 K1, K2(키의 크기는 56 bit)를 이용해
평문을 암호화할 때 암호화(K1), 복호화(K2), 암호화(K1)을 하고
다시 복호화할 떄는 복호화(K1), 암호화(K2), 복호화(K2)를 한다.
왜 더블 DES는 없는가?
사용하는 키를 k1, k2라 하면
평문을 암호문으로 바꿀 때 암호문 C= D(E(P, k1), k2)이다.
그런데 D(C,k2)=E(P, k1)임을 알 수 있다.
따라서 모든 키의 경우의 수에 대해 E(P, k1), D(C, k2)를 연산하면
E(P, k1)= D(C, k2)가 성립하는 k1, k2쌍이 반드시 존재한다.
따라서 k1, k2의 경우의 수는 2*2^56= 2^57로,
그렇게 많은 시도횟수 없이도 2^57번의 시도에 무조건 키값을 구해낼 수 있다.
대칭키 알고리즘의 특징
알고리즘이 쉽고, 구현이 간단하므로 연산이 빠르다.
그러나 키 분배가 어렵고, 사용자가 늘어날 수록 비밀키의 개수도 증가한다.
비대칭 암호화 방식
암복호화에 사용하는 키가 서로 다른 암호화 방식을 말한다.
대표적으로 RSA암호화가 있으며, 이는 소인수분해 문제의 어려움을 이용한다.
비대칭 암호화 방식: RSA
https://ko.wikipedia.org/wiki/RSA_%EC%95%94%ED%98%B8
두 소수 p,q에 대해 n=p*q를 생성한다.
(p-1)(q-1)에 서로소(공약수가 1)인 e를 생성한다.
=> n, e를 공개키로 사용한다.
ed ≡ 1 mod (p-1)(q-1) 을 만족하는 d를 생성한다.
여기서 p,q,e를 알고있는 소유자는 d를 빠르게 구할 수 있지만, 모르는 사람은 그렇지 않다.
=> d를 개인키로 한다.
암호화할 때는 메시지 M을 C≡ M^e mod n 으로 하고
복호화할 때는 M≡ C^d mod n 으로 한다.
비대칭 암호화 방식: RSA 예제
p=3, q=17이라고 하면 n= 3*17= 51 이다.
결정한 e는 3(2*16=32에 서로소인 값)이라고 하자.
d를 결정하기 위해 3d≡ 1 mod 2*16 을 만족하는 값을 찾으면
d= 11을 선택할 수 있다.
따라서 p=3, q=17, n=51, e=3, d= 11이므로
M=2를 암호화할 때 C= 2^3 mod 51= 8이 암호화된 값이고
다시 8을 복호화할 때 8^11 mod 51= 2로 복호화할 수 있다.
공개키 알고리즘의 특징
보안 강도가 높고 키 분배, 관리가 매우 효율적이다.
(N명이 통신할 때 모두가 각자의 키를 가지고 있을 필요가 없다)
그러나 연산이 복잡하고 느리며, 공개키의 주인을 검증할 수 없다.
=> 진짜 이 공개키가 A의 것이 맞는지?
'기타 CS 이론 > IT Security' 카테고리의 다른 글
[정보보안] 전자 서명과 공개키 인증 (0) | 2021.12.13 |
---|---|
[정보보안] 코드 보안: 포맷 스트링 공격 (0) | 2021.12.13 |
[정보보안] 코드 보안: 계정과 권한, 프로그램 실행 구조 (0) | 2021.10.17 |
[정보보안] 인터넷 정보보안: HTTP 기본 개념과 웹 해킹 공격 (0) | 2021.10.16 |
[정보보안] 네트워크 보안 시스템: 방화벽, 침입 탐지와 침입 감지 시스템 (0) | 2021.10.16 |