취미가 좋다

[보안] 1. 보안 기초, 암호화 본문

Sparta Coding Club/보안

[보안] 1. 보안 기초, 암호화

benlee73 2021. 9. 29. 14:01

웹 보안에 대해서 알아보자.

 

보안이 왜 필요할까?

통신이 이루어질 때 데이터가 암호화되어 있지 않다면 다른 사람이 가로채서 보거나 데이터를 조작할 수 있다.

그래서 개인정보를 보호하기 위해 웹 보안이 필요하다.

 

보안을 지키기 위해 필요한 3가지

기밀성 (Confidentiality) 내 정보를 탈취되지 않도록 하는 것
무결성 (Integrity) 내 정보가 조작되지 않았다는 것을 증빙하는 것
인증 (Authentication) 권한이 있는 사람에게만 정보에 접근할 수 있는 것

암호 관련 용어

암호화 (Encryption) 특정 방법을 통해 평문을 암호문으로 변경하는 작업
복호화 (Decryption) 암호화 된 문구를 해독하여 평문으로 변경하는 작업
평문 (Plaintext) 일반인 누구나 읽을 수 있는 암호화 되어 있지 않은 문서
암호문 (Cyphertext) 암호화되어 있는 문자열

 

단방향 암호화

암호문을 평문으로 복호화하는 것이 불가능한 암호화 기법

즉, 평문을 암호문으로 만들 수 있지만, 그 암호문을 다시 평문으로 만들 수 없다.

로그인할 때 사용하는 아이디와 비밀번호를 저장할 때 주로 사용한다.

 

나의 아이디와 비밀번호를 DB에 저장했다가 유출이 된다면 큰 문제가 발생한다.

하지만 정보를 암호화해서 저장한다면 유출되어도 큰 문제가 없다.

그래서 로그인할 때 아이디와 비밀번호를 암호화한 후 DB에 저장된 암호문과 비교하는 방식으로 로그인을 진행한다.

 

이런 단방향 알고리즘을 해시 함수라고 부른다.

MD5, SHA256, SHA512 다양한 종류가 있고 현재는 SHA256 사용을 권장한다.

 

이 사이트에서 실습이 가능하다.

 

양방향 암호화 - 대칭키 방식

양방향은 암호문을 복호화할 수 있는 알고리즘이다.

즉, 평문을 암호문으로 만들 수 있고 암호문을 평문으로 만들 수도 있다.

 

양방향 암호화의 대칭키 방식은 하나의 키를 사용하는 방식이다.

 

이를 대칭키라고 부르고, 대칭키로 암호화도 하고 복호화도 한다.

또한 타인에게 공개하면 안되므로 비공개키라고도 부른다.

이 사이트에서 실습이 가능하다.

Key of the encryption에 같은 키를 넣는다면, 평문과 암호문을 서로 암호화하거나 복호화할 수 있다.

 

대칭키 방식의 가장 큰 문제첫 키 배송이다.

대칭키는 양쪽 모두 가지고 있어야 하므로 처음 한 번은 암호화되지 않은 키를 주고 받아야 한다.

이 때 누군가 가로챌 수 있기 때문에 위험하다.

 

즉, 안전하게 데이터를 주고 받기 위해서 암호문을 만들었지만, 정작 암호화에 필요한 키를 주고 받을 때는 안전하게 전달할 수가 없다.

 

현재 가장 보편적으로 쓰이는 대칭키 암호화 방식은 AES이다.

128~256비트 키를 적용할 수 있어 보안성이 뛰어나며 공개된 알고리즘이라 누구든 사용할 수 있다.

 

양뱡향 암호화 - 비대칭키 방식

비대칭키 방식은 암호화하는 키와 복호화하는 키 2가지를 사용하는 방식이다.

 

키가 A, B가 있다고 가정하자.

A가 암호화한 것을 B가 복호화할 수 있다.

B가 암호화한 것은 A가 복호화할 수 있다.

 

보안을 위해 하나는 모두에게 공개하는 공개키(Public key) 다른 하나는 공개하지 않는 비밀키 (Private key)라고 한다.

 

이 사이트에서 실습할 수 있다.

RSA라는 대표적인 공개키 암호화 알고리즘 종류 중 하나이다.

 

비대칭형 암호의 단점으로는 암호화 및 복호화 과정이 느리다는 것이다.

그리고 메시지를 가로채서 공개키로 이상 한 내용을 암호화한 메시지를 보내는 공격에 취약합니다.

 

이러한 문제의 해결은 다음 글에서 해결해보겠습니다.

Comments