암호화 - 비밀번호 전송과 보관

binda·2024년 7월 31일

프로젝트 정리

목록 보기
1/9

데이터 전송

Https 암호화

HTTPS란?

HTTPS는 HTTP가 SSL/TLS 프로토콜을 사용하여 암호화된 통신을 하는 방식이다.
HTTP가 SSL/TLS 위에서 동작하게 되며, 헤더는 암호화되지 않지만, body는 암호화된다.

HTTPS의 통신과정을 알아보기 전에
대칭키와 공개키에 대한 개념이 필요하다.

🔑 대칭키란?
공개키, 개인키를 동일한 대칭키를 통해서 암/복호화하는 과정이다.
때문에 대칭키가 유출된다면 암호화된 데이터도, 쉽게 복호화할 수 있기 때문에 위험하다.

장점 : 암호화와 복호화 연산이 빠름
단점 : 대칭키가 유출될 경우, 암호화된 데이터가 쉽게 복호화될 수 있어 보안에 취약

🔑 비대칭키(공개키)란?
암호화는 공개키로하되, 복호화는 개인키를 통하기 때문에, 클라이언트가 공개키로 암호화하여 데이터를 보내면, 서버는 자신이 보유한 개인키로 복호화하게 되어 안전하다.
공개키는 누구에게나 공개가능

장점 : 공개키로 암호화된 데이터는 개인키로만 복호화 가능, 보안 강화
단점 : 연산 속도가 느리고 비용이 많이 듦

ssl 통신

  • 대칭키와 공개키 암호화를 결합한 하이브리드 암호화 방식

데이터 보관

Hash를 사용한 보관

클라이언트는 https로 암호화된 비밀번호를 전송하게 된다.

  • 특정값을 고정된 값으로 만들어 데이터베이스에 저장

  • 이 해시알고리즘은 암호화를 한 걸 다시 복호화할 수 없기 때문에 원래 비밀번호가 뭔지 알 수 없어서 안전하다.

그러나, 해커가 레인보우 테이블에 특정 비밀번호의 해시값을 따로 저장해두는 경우가 있다.

🤔 레인보우 테이블이란?

레인보우 테이블의 기본 아이디어는 해커가 미리 계산한 해시 값과 데이터베이스에서 찾은 해시 값을 비교하여 원본 비밀번호를 알아내는 것

이때, salt를 써서 랜덤으로 생성된 값을 해시 비밀번호에 붙여 보관하게 되면, 보안을 강화할 수 있다.


[참고자료]

Https 와 ssl
https://www.youtube.com/watch?v=0cfUVrQW_yg

profile
🍤

0개의 댓글