1. 해싱과 암호화
(1) 해싱
해싱이란 원본 문자열을 다른 값으로 변환시키는 것이다.
즉, 원본 문자열을 내가 미리 짜놓은 해시 알고리즘을 거쳐 다른 값으로 나오게 하는 것이다.
해시 알고리즘을 통해 길이가 매우 긴 문자열도 내가 정해놓은 틀에 맞춰 변형시킬수 있다.
동일한 문자열은 동일한 해시 알고리즘을 사용하면 동일한 해시값을 생성해야한다.
서로 다른 문자열은 동일한 해시 알고리즘을 사용하면 서로 다른 해시값을 생성해야 한다.
해싱이 완료되면 *특수한경우를 제외하고는 원래의 문자열을 알아낼 수 없다.
*특수한경우 : 비밀키를 사용하는 경우
(2) 암호화
암호화는 단순한 평문을 추가적인 정보와 함께 암호화 알고리즘을 사용하여 인코딩하는 과정이다.
암호화된 메시지를 받은 수신자는 복호화 키를 사용하여 이를 평문으로 복원할 수 있다.
2. 암호화 방식
(1) 대칭 암호화
암호화 할때의 KEY와 복호화할때의 KEY값이 같다.
대표적으로 SEED, DES, DES3, AES등의 알고리즘이 있다.
자신의 키로 암호화 한후 키를 수신자에게 몰래 보낸다.
수신자는 전달받은 키로 복호화를 하여 평문을 얻는다.
장점
비대칭 암호화 방식에 비해 키 사이즈가 상대적으로 작다.
암호 알고리즘 구조가 간단하여 연산속도가 빨라 효율적인 암호 시스템을 구축할수 있다.
단점
교환 당사자간에 동일한 키를 공유해야 하기 때문에 키 전달 및 관리에 어려움이 있다.
키가 공격에 노출되면 보안에 매우 취약해진다.
(2) 비대칭 암호화
암호화 할때의 KEY와 복호화할때의 KEY값이 다르다.
대표적으로 RSA 등의 알고리즘이 있다.
암호화 할때 사용하는 공개키를 모두에게 공개한다.
누구든지 이 키를 가지고 암호화를 할수는 있지만 복호화를 하는 개인키는 나만 가지고 있다.
그래서 나만 복호화하여 평문을 얻을수 있다.
장점
복호화를 하는 개인키를 나만 가지고 있기 때문에 데이터 전달과정에서 개인키가 노출될 일이 없다.
단점
대칭키 알고리즘에 비하여 속도가 느리다.
누구나 암호화할수 있기 때문에 암호화의 권리를 확인하기 위한 인증서가 필요하다.
(3) 혼합방식 암호화
공개키를 개인키로 암호화 하여 전송하는 방식으로 대칭 및 비대칭 암호화의 단점을 보완한다.
대칭 암호화 보완 : 암호화 및 복호화 키의 암호화가 되지 않는 문제를 보완한다.
비대칭 암호화 보완 : 암호화 빛 복호화의 속도가 느린 문제를 보완한다.
3. 해싱과 암호화의 차이
암호화는 수신자와 송신자 사이에 암호화와 복호화 두단계가 있고
인가되지 않은 제3자에게 데이터 노출을 막는것이 목적이다.
웹사이트에 SSL인증서가 있는것도 결국 서버와 브라우저 사이의 통신에서
주고받는 데이터를 암호화하기 위한것이다.
해싱은 해시값을 검사하여 데이터 변조가 없었는지 무결성을 확인하는 것이 목적이다.
참조
'개발 > 정리' 카테고리의 다른 글
[정리] MSA란 무엇일까? (Node.js 예시) (0) | 2023.03.08 |
---|---|
[패턴] 자주 사용되는 아키텍처패턴 4가지 (0) | 2022.12.19 |
[Github] 기초 및 설정 (0) | 2022.06.22 |
[GitHub] 설치 및 기초 (0) | 2022.06.21 |
[언어분류] 컴파일 언어 VS 인터프리터 언어 (0) | 2022.05.20 |