코딩 쏙쏙

개발 공부(2)_암호화의 종류 본문

[Dev_Study]

개발 공부(2)_암호화의 종류

두두만두 2023. 4. 2. 22:14

1. 단방향 암호화

그림.1) 단반향 암호화

그림.1)과 같이 단방향 암호화는 평문을 암호화 할 수는 있지만 암호화된 문자를 다시 평문으로 즉, 복호화가 불가능한 암호화 방법이다.

주로 해시 알고리즘을 이용하여 단방향 암호화를 구현한다.

그렇다면 사용하는 이유는 무엇일까??

주된 이유는 메시지 또는 파일의 무결성(intergrity)을 보장하기 위해서다.

원본의 값이 1bt라도 달라지게 된다면 해시 알고리즘을 통과한 후의 해시값이 매우 높은 확률로 달라 지게 된다.

결과로 메시지나 파일이 원본 여부를 파악할 수 있다.

해시의 무결성을 보장하는 특징을 이용하여 저자서명, 파일 또는 데이터의 식별자, 사용자의 비밀번호, 블록체인 등에서 활용되고 있다.

(대표적인 해시 알고리즘으로 MD5, SHA 등이 있다.)

 

 


2. 단방향 암호화의 한계


해시 알고리즘은 동일한 평문에 대해서 항상 동일 해시값을 갖는다.

즉, 특정 해시 알고리즘에 대해 어떠한 평문이 어떠한 해시값을 갖는지 알 수가 있다.

이런 특징을 이용한 해시 함수의 해시 값들을 대량으로 정리한 테이블이 존재하며,

이를 레인보우 테이블이라고 부른다. 

레인보우 테이블을 이용한 사용자의 정보를 해킹하는 공격을 레인보우 공격이라고 한다.

 

솔팅(Salting) & 키 스트레칭(Key Stretching)

 

솔팅(Salting)

솔팅은 단방향 해시로 암호화를 진행할 시,

본래 데이터에 추가 랜덤 데이터를 더하여 암호화를 진행하는 방식이다.

추가 데이터가 포함 되었기 때문에 원래 데이터의 해시값에서 달라진다.

 

키 스트레칭(Key Stretching)

단방향 해시값을 계산 한 후 그 해시값을 해시하고 또 이를 반복하는 방식이다.

최근에는 일반적인 장비로 1초에 50억 개 이상의 해시값을 비교할 수 있지만,

키 스트레칭을 적용하여 동일한 장비에서 1초에 5번 가량 비교할 수 있다.

GPU(Graphics Processing Unit)를 사용하더라도 수백에서 수천 번 정도만 비교할 수 있다.

그림.2) Salting & Key Stretching


3. 양방향 암호화 (대칭키)

그림.3) 대칭키 암호화

 

양방향 암호화는 단방향 암호화와 달리 암호화된 값을 다시 암호화 하기 전의 값으로 복호화가 가능하다.

양방향 암호화는 암호화 알코리즘과 키(Key)을 이용해서 암호화를 진행 하는데,

이 키를 통해서 암호화된 값을 보호 할 수 있다.

대칭키 방식은 암호화를 할 때 사용하는 키와 암호문으로부터 평문을 복호화 할 때 사용하는 키가 동일한 암호 시스템이며,

따라서 암호화를 진행할 때 사용한 키를 모른다면 해당 암호문은 다시 복호화 할 수 없다.

 


4. 대칭키 암호화의 한계

대칭키 방식은 하나의 키를 이용하므로 다른 사람과 대칭키 기반으로 암호화 통신을 할 경우

상대방도 사전에 같은 키를 갖고 있어야 한다.

왜냐!!!??

키를 주고 받는 과정에서 키가 중간에 유출될 우려가 있고, 이로 인해 암호화 통신을 해킹 당할 수 있다.

특히 여러 상대방과 통신할 경우 각각의 키를 관리하는 것은 더욱 어려워 진다는 단점이 있다.

 


5. 양방향 암호화 (비대칭키)

그림.4) 비대칭키 암호화

비대칭키 암호화 또한 암호화와 복호화 모두 가능하다.

다만, 대칭키 암호화에서는 암호화하는 키와 복호화하는 키가 동일 했다면,

비대칭키 암호화에서는 암호화 때 사용하는 키와 복호화 할 때 사용하는 키를 다르게 사용한다.

다른 사람에게 공개하는 Public Key와 절대 노출을 하지 않는 Private Key가 있으며,

이 두 개의 키를 Key Pair라고 부른다.

비대칭키 암호화는 암호화하는 키와 복호화 하는 키를 구분하여 대칭키 암호화의 문제였던

키의 탈취 또는 관리의 단점을 보완 할 수 있다.

 


6. 데이터 암호화

 

비대칭키 함호화하는 키와 복호화하는 키가 다르기 때문에 대칭키 방식에서 문제 되는 키 노출에 대한 문제를 해결 할 수 있다.

 

※ 사용자가 서버로 비대칭키 방식을 이용하여 데이터를 보내는 과정

- 서버에 Key Pair 발급 후 Public Key 사용자에게 전달
-사용자는 데이터를 암호화 할 때 서버에서 받은 Public Key을 사용
-서버는 사용자가 보낸 암호화된 데이터를 Private Key로 복화화 하여 내용을 확인

 


7. 전자 사명

 

전자서명은 종이문서의 서명(인감)과 비슷한 개념이다.

전자문서에 서명한 사람이 누구이지 확인하고,

서명된 전자문서의 위·변조사실을 알 수 있도록 전자문서에 부착하는 특수한 형태의 디지털 정보를 말한다.

 비대칭키를 이용한 전자서명 과정을 자세히 살펴보면 다음과 같습니다.

- A가 Key Pair 발급 후 Public Key 공개
- A가 메시지를 작성하고, 본인의 전자 서명을 기입
- 전사 서명은 A가 작성한 메시지의 내용을 Private Key로 암호화한 값
- A의 메시지를 받은 B가 해당 메시지가 정말 A가 보낸 메시지인지 확인
- B는 공개된 A의 Public Key를 가지고 전달 받은 전자서명을 복호화
- 복호화의 내용과 메시지의 내용일 일치하면 A가 작성한 메시지라는 것을 확신

 

 

'[Dev_Study]' 카테고리의 다른 글

Session & Cookie 특징, 차이점  (0) 2023.04.02
인증(Authentication) & 인가, Session & Cookie  (0) 2023.04.02
2. router  (0) 2023.03.27
1. Layered  (0) 2023.03.27
개발공부(1)_MySQL 개념  (0) 2023.03.27