2024. 6. 12. 14:36ㆍ컴퓨터 보안
대칭 암호화에는 다양한 한계점이 존재하는데 예를 들면
1. 상대방에게 키를 어떻게 비밀리에 전달할 것인가?
2. N명의 상대와 1:1 통신 시 너무 많은 대칭키가 필요 => 한 사람마다 각각의 대칭키를 부여하게 되어 그것을 관리하기가 복잡함 (n(n - 1) / 2 개의 대칭키가 필요합니다.
이러한 문제점들이 존재합니다.
이러한 문제점을 해결하기 위해서 비대칭 암호화가 등장하게 되었습니다.
비대칭 암호화 방식에는 RSA 방식이 있는데, 현재 우리 실생활에도 많이 사용하는 암호화 빙식입니다.
비대칭 암호화 방식이란 송신자와 수신자가 모두 자신의 공개키와 개인키 한 쌍을 가지고 있어야 한다는 점이 있습니다.
여기서 공개키는 말 그래도 세상에 공개되어있는 암호화 키를 의미합니다.
1. 암호화:
Alice가 Bob에게 암호화 하여 무언가를 전달하고 싶다면
Alice는 Bob의 공개키9B+)로 암호화 => 그것을 Bob이 자신의 개인키를 이용하여 복호화가 가능합니다. 만약 개인 키를 갖고 있지 않은 사람이 복호화를 시도를 해도 그것이 불가능하게 됩니다.
2. 전자 서명
Alice는 자신의 개인키(A+)로 암호화(서명, sign)
수신자(기업 등)는 Alice의 공개키 (A-)로 Alice인지 확인을 할 수 있게 됩니다.
* 비대칭 암호화 = 공개키를 의미합니다.
RSA는 Rivest Shamir Adleman의 약자인데 그것은 암호화 방식을 만든 사람들 이름의 앞자리를 붙여서 이름을 만들었습니다.
이 방식에는 정수의 소인수분해가 사용됩니다.
p, q는 아주 큰 숫자라고 합시다.
N = pq의 계산은 아주 쉽습니다.
하지만 N에서부터 시작해 N=pq인 p와 q를 찾는것이 매우 어렵다는 것에서부터 이 암호화 방식이 기원되었습니다.
(용어 정리)
Public key: K+ = (N, e)
Private Key: K- = d
암호화: C(크립트문) = Ek+ (X) = Me mod N => 이것을 통해서 공개키를 이용하여 암호화를 했다는 것을 알 수 있습니다.
*여기서 M은 암호화 하기전 메시지를 의미합니다.
복호화: M = Dk-(y) = Cd mod N => 이것을 통해서 개인키를 이용하여 암호화된 구문을 복호화 한다는 것을 알 수 있습니다.
(키 생성 알고리즘)
그렇다면, 과연 RSA는 안전하다고 할수있을까?
Q1. RSA의 취약점은 뭐가 있을까?
A1. 부채널 공격에 대한 취약성: 이 알고리즘은 공격자가 부채널을 통해 유출된 정보를 사용하여 개인 키 정보를 추출하는 경우에 취약해지게 됩니다.
A2. 소인수분해 문제: RSA의 안전성은 큰 수를 소인수분해하는 것이 매우 어렵다는 가정에 기초합니다. 하지만, 만약 소인수분해를 효율적으로 수행할 수 있는 알고리즘이 개발된다면, RSA의 안전성은 크게 위협받을 것입니다.
해시함수 => M -> h(x) => c
*Key가 길어질수록 보안도가 높아진다.
해시함수의 목적: 입력값보다 작은 길이의 출력값을 도출하는 것입니다.
또한 단순히 길이를 줄이는 것이 아니라, 입력값의 특성을 그대로 가져야 한다.
또한 해시함수의 요구사항으로는
1. 메시지 압축: 출력값은 고정된 짧은 길이
2. 계산의 효율: 임의의 x에서 H(x)는 쉽게 도출
3. 단방향: 임의의 y에서 H(x) = y를 만족시키는 x를 찾는 것은 거의 불가능합니다.
4. 충돌방지: H(x), H(x2), H(x3) = y 일 때
x1, x2, x3를 찾는 것은 거의 불가능합니다.
=> 입력값의 범위가 훨씬 크기 때문에, 결과값이 겹칠 수 밖에 없습니다.
*충돌이 되는 "입력값"을 알아내가기 어려워야 보안도가 상승하게 됩니다.
Q. 그렇다면, 충돌이 거의 불가능하게 만들기 위해선 출력값의 길이가 얼마정도 되어야할까?
A. H(x)가 N비트라면 2^N개의 해시값이 나올 수 있습니다.
<눈사태효과>
입력값이 1bit만 다르더라도, 출력값은 반 이상이 바뀌어야 합니다.
=> 여러 번 섞는 과정이 필요합니다.
-> ROUND (블록 암호 알고리즘 설계와 유사)
'컴퓨터 보안' 카테고리의 다른 글
인증방법 (0) | 2024.06.12 |
---|---|
DES 암호화 방식의 서브키 구현 원리 (0) | 2024.04.23 |
암호화 기법 (0) | 2024.04.10 |