![[Network] 단방향 암호화 방식(Hash, MAC)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRw2wW%2FbtsB1OPe0ta%2F3lOLbSlSIRSgsuK5tKaiK1%2Fimg.png)
단방향 암호화 방식(One-Way Encryption)
단방향 암호화 : 한쪽 방향으로 암호화
즉, 암호화만 가능하고 복호화는 할 수 없다.
보통 비밀번호를 관리할 때 유용하게 사용된다. 비밀번호 정보가 누출된다고 해도 상관없기 때문이다.
대신, 사용자가 비밀번호를 잊어버렸을 때는 찾는 것이 불가능하고, 대신 비밀번호 변경 메일 또는 SMS 인증 방식을 통해 새 비밀번호를 설정해야 한다.
대표적으로 SHA-256 알고리즘을 많이 사용한다.
단방향 암호화: Hash
임의의 가변 길이 메시지로부터 고정된 길이의 Hash 값을 계산한다.
단방향 암호화 방식이므로, Hash 값으로부터 메시지를 되돌려 도출할 수는 없다.
: 일방향성을 갖는다
위 사진에서 보이듯이, 메시지가 달라지면 Hash 알고리즘에 의해 다른 Hash값들이 지정되어야 한다.
따라서, 무결성을 보장하는데 주로 이용된다. (암호화보다 메시지의 위조 변조 여부를 파악하는 용도)
만약 서로 다른 메시지들이 같은 Hash값을 가지게 된다면, 이 문제의 현상을 충돌(Collision)이라 한다.
대표적인 Hash 알고리즘 : MD5, SHA-256, SHA-512
Hash 방식의 한계점
1. Rainbow Table Attack : 미리 Hash 값들을 계산해 놓은 테이블을 통해서 역으로 원본을 찾으러 갈 수도 있다.
2. Hash 함수는 기본적으로 처리 속도가 빠르도록 설계되어 있다. 이는, 해킹 시에도 패스워드를 알아내는 시간이 빠르다는 뜻이다.
-> 여기서 파생되는 문제점도 있다.
-> Brute-Force Attack(무차별 대입 공격) : 해시 함수가 빠르다는 특징을 활용해서 무차별적으로 데이터를 삽입하여 원하는 결과를 얻을 때 까지 데이터를 삽입한다.
Hash 방식 보완
1. Salting : 실제 비밀번호 이외, 추가적인 랜덤 데이터를 더하여 해시값을 구성한다.
2. Key Stretching : 단방향 Hash값을 계산한 후, 해당 Hash 값을 중복해서 계속 Hash 한다.
위 두 가지 방식은, 해킹의 시간을 지체시킬 뿐, 근본적인 해결책은 아니다.
MAC (Message Authentication Code, 메시지 인증 방식)
위의 Hash Function에 후에 설명할 대칭키를 더해 메시지의 무결성을 확인하고 메시지를 인증하는 방식.
임의의 가변 길이의 메시지와 송신자 및 수신자가 공유하는 키, 두 가지를 입력으로 하여 고정 길이의 출력값을 만들고, 이 출력값이 바로 MAC이다.
이 때, 키는 송신자와 수신자, 둘만 알고 있다.
데이터 위조를 방어하는데 사용한다.
MAC 사용 예시 ) IPSec, SSL/TLS ...
HMAC
HMAC을 알기 전, Nested MAC 방식부터 알아야 한다.
Nested란? 축소된 것을 의미한다.
MAC의 안전성을 보다 높이기 위해 총 두 번의 Hash Function을 거치도록 짠 알고리즘이다.
1. H(K||M)을 통해 1차 다이제스트 M1을 생성 한다.
2. H(K||M1)을 통해 2차(최종) 다이제스트를 생성 한다.
여기서 다이제스트는, Hash Function 이라는 수학적인 연산을 통해 생성된 암호화된 메시지를 의미한다.
그리고 HMAC는 Nested MAC 알고리즘의 표준이다.
Nested MAC 보다 약간 복잡하다.
n 비트의 Padding을 붙이고, 두 번의 Hashing을 거친다.
MAC의 문제점
1. MAC Key 문제
MAC에서는 송/수신자가 같은 Key를 공유해야 하는데, 이 때 Key를 배송하는 것에서 공격을 받을 수 있다.
2. 제 3자에 대한 증명
수신자가 받은 메시지가 정말 송신자가 보낸 메시지가 맞는 것인가에 대한 의심을 타인으로부터 증명받을 수 없다.
타인으로부터 증명을 받기 위해서는 결국 Key를 타인과 공유해야 하고, 이는 MAC 방식에 어긋난다.
3. 부인 방지
송신 자체를 부인할 경우, 이를 증명할 방법이 없다.
'Computer Science > Network' 카테고리의 다른 글
[모든 개발자를 위한 HTTP 웹 기본 지식] 1. 인터넷 네트워크 (0) | 2024.01.15 |
---|---|
[Network] 양방향 암호화 방식 (대칭키 / 비대칭키) (0) | 2023.12.15 |
[Network] TCP 3, 4 way handshake (0) | 2023.11.28 |
[Network] TCP vs UDP (0) | 2023.11.28 |
[Network] TCP/IP 흐름 제어 및 혼잡 제어 (1) | 2023.11.28 |
개발자가 되고 싶어요.