티스토리 뷰
HTTP와 HTTPS의 차이점
HTTP 통신에서 브라우저와 서버는 데이터를 일반 텍스트로 교환한다. HTTP는 데이터를 암호화하지 않고 전송하기 때문에 제 3자가 데이터를 가로채고 읽을 수 있다. HTTPS는 이러한 HTTP 방식의 보안을 강화하고자 확장된 방식이다.
HTTPS (Hypertext Transfer Protocol Secure)
- HTTP에 보안계층(SSL/TLS)를 추가한 프로토콜
- 브라우저와 서버가 데이터를 전송하기 전, 안전하고 암호화된 연결을 생성
- 모든 요청과 응답을 SSL(Secure Socket Layer) 및 TLS(Transport Layer Security) 프로토콜에 따라 암호화
- 카드 정보나 비밀번호와 같은 정보 보호 가능
SSL(Secure Sockets Layer)/TLS(Transport Layer Security)
1. 역할
- 서버의 신원을 보증하고, 안전한 통신을 위한 암호화 키를 제공합니다.
2. 구성 요소
- 도메인 이름
인증서가 적용될 도메인을 명시합니다. - 공개 키
암호화 통신을 위한 공개 키를 포함합니다. - 발급 기관 정보(CA)
인증서를 발급한 신뢰할 수 있는 기관의 정보입니다. - 유효 기간
인증서의 사용 가능 기간을 명시합니다.
3. 종류
- 도메인 검증(DV): 도메인 소유권만 검증.
- 기관 검증(OV): 도메인과 조직 정보 검증.
- 확장 검증(EV): 엄격한 검증을 통해 최상위 신뢰를 제공.
대칭키 암호화 방식
암호화, 복호화할 때 동일한 키가 사용되는 방식이다. 같은 키를 사용하기 때문에 "대칭키"라는 이름으로 불린다. 상대적으로 비대칭키 방식에 비해 암호화/복호화 속도가 빠르다. 대칭키 자체가 제 3자에게 도난당할 위험성이 존재한다. 대칭키가 도난당하게 될 경우 해커는 메시지를 손쉽게 복호화할 수 있다.
공개키(비대칭키) 암호화 방식
공개키 암호화 방식은 서로 다른 키로 암호화와 복호화를 수행하는 암호화 기법이다. 이 방식은 2개의 비대칭키를 관리한다. 하나는 공개를 하고 다른 하나는 서버에서만 관리하는 방식이다. 공개하는 키는 공개키라고 하고 비밀로 관리하는 키는 개인키(비밀키)라고 한다.
공개키는 호스트로 보내는 메시지를 암호화하기 위해서 모두를 위해 공개하고, 개인키는 호스트에서만 관리하고 있는 키로 호스트로 오는 메세지를 복호화할 때 사용하는 키이다.
SSL 통신 과정
대칭키 암호화 방식과 개인키 암호화 방식을 모두 사용하여 각각의 단점을 보완한 방식이다. SSL은 대칭키를 공개키 방식으로 전달하여, 이후 통신은 주고받은 대칭키를 통해 진행한다. 이럴 경우 대칭키를 중간에서 탈취당하지 않고, 공개키 방식보다 빠르게 통신 가능하다.
SSL Hand Shake
- 프로토콜 버전 번호 교환
- 양쪽이 알고 있는 암호 선택
- 양쪽의 신원을 인증
- 채널을 암호화하기 위한 임시 세션 키 생성
전자서명의 동작 원리
1. 데이터 해시 생성
- 원본 데이터를 해시 함수(예: SHA-256)를 사용해 고정된 길이의 해시값(Hash)으로 변환
- 해시값은 데이터가 조금이라도 변경되면 완전히 다른 값으로 변하므로, 데이터 무결성을 검증하는 데 사용
2. 해시값 암호화
- 서버의 개인 키(Private Key)로 해시값을 암호화하여 전자서명을 생성
- 이 개인 키는 서버의 SSL/TLS 인증서와 연계된 비밀 키
3. 전자서명 전달
- 생성된 전자서명과 원본 데이터를 함께 클라이언트로 전송
4. 전자서명 검증
- 클라이언트는 서버의 공개 키(Public Key)를 사용해 전자서명을 복호화하여 해시값을 추출
- 추출된 해시값과 원본 데이터를 사용해 새롭게 계산된 해시값을 비교
- 두 값이 동일하다면 데이터가 변조되지 않았음을 확인 가능
- Total
- Today
- Yesterday
- 개발
- 스페인 교환학생
- 깃 예제
- 자바스크립트
- 혼공단 9기
- 공룡책
- 혼공학습단
- 교환학생
- 혼공단
- Linux
- googleapis
- 리눅스
- SQL
- JS
- Signal
- 해커톤
- 백준
- 혼공단 SQL
- 개발일지
- 혼공
- 스페인
- 백엔드 개발
- AWS
- MySQL
- JavaScript
- 운영체제
- 프로젝트
- Process
- nodejs
- C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |