Ilhwanee's Devlog
로그인
Ilhwanee's Devlog
로그인
HTTPS - HTTP의 암호화 버전
Ilhwanee
·
2022년 3월 31일
팔로우
0
CS
0
CS
목록 보기
1/27
HTTPS란?
HTTP(HyperText Transfer Protocol)에
보안 요소
가 추가된 것
암호화, 복호화
를 사용하여 서버와 클라이언트 사이의
모든 통신 내용을 암호화
함
Body는 암호화되며 통신을 위한 Header는 암호화되지 않는다.
암호화 알고리즘
메시지 다이제스트(Message Digest)
메시지의 무결성 검사를 위하여
암호 해시
함수를 이용하여 생성하는 크기가 고정된 값
비 예측성
암호화된 값을 예측하는 것이 불가능
역상 저항성
암호화되기 전 값을 찾는것이 계산적으로 불가능
충돌 저항성
같은 해시 값을 생성하는 두 개의 입력 값을 찾는 것이 계산적으로 불가능
MD5, SHA-256, KECCAK-256 등
대칭 키 암호(Symmetric-key Algorithm)
암호화와 복호화에
같은 키를 사용
하는 암호
대칭 키를 비밀 키라고도 함
암복호 속도가 매우 빠름
대칭 키를 공유해야 하는 문제가 있음
AES128-CBC, AES256-GCM 등
공개 키 암호(Public-key Algorithm)
암호화와 복호화에
서로 다른 키(비대칭 키)를 사용
하는 암호
개인키와 공개 키, 공개 키는 개인 키로 유도하여 생성
공개 키로 암호화 하고, 개인 키로 복호화 함
암복호의 비용이 대칭 키 암호화에 비하여 매우 큼
DIFFIE-HELLMAN, RSA, ECC 등
전자 서명(Digital Signature Algorithm)
공개 키 암호화 방식을 이용한 서명
개인 키로 서명하고, 공개 키로 검증
A는 원본 파일의 메시지 다이제스트를 구하고, 그 MD값을 A의 개인 키로 서명하여 B에게 원본 파일과 서명을 보냄
B는 이미 가지고 있는 A의 공개 키를 사용하여 A가 보내 온 원본 파일과 서명을 검증
RSA, ECDSA 등
인증서와 인증기관
공개 키가 해당 서버의 것인지 믿을 수 있는 어떤 장치가 필요함
인증서는 다름 아닌 서버의 공개 키를 권위있는 인증 기관이 서명한 증서
인증서는 다음의 정보들의 조합
서버의 공개 키
도메인 이름을 비롯한 서버의 여러 정보들
위의 두 가지를 합한 것을 인증 기관이 자신의 개인 키로 서명한 값
인증 기관(CA)
인증서를 발행하는 신뢰할 수 있는 상업적 기관
CA는 서버가 제출한 서류를 심사하여 자신의 개인 키로 서명한 값을 추가한 인증서를 생성하여 서버에게 매년 혹은 격년 단위로 돈을 받고 발급해 줌
각 운영체제와 웹브라우저는 유명한 CA의 인증서(공개 키)를 미리 가지고 있음
키 교환 과정
공개 키 암호화 방식을 이용하여 암호화되지 않은 통신망을 통해 대칭 키를 공유
웹브라우저는 서버에게 공개 키를 달라고 함, 서버는 자신의 공개 키를 보냄
웹브라우저는 대칭 키를 생성하여 서버의 공개 키로 암호화 한 후 서버에게 보냄
서버는 웹브라우저가 보낸 암호화된 대칭 키를 자신의 개인 키로 복호화 하여 대칭 키를 얻음
이 과정에서 공유된 대칭 키를 세션 키라고 함
예시
A는 B에게 인증서(공개 키)를 달라고 함
B는 자신의 공개 키가 들어있는 권위있는 인증 기관이 인증한 인증서를 보냄
A는 자신이 이미 가지고 있는 인증 기관의 인증서(공개 키)로 B가 보내 온 인증서의 서명 값을 검증 후 일치하면 대칭 키를 생성하여 인증서에 포함된 B의 공개 키로 암호화해서 B에게 보냄
B는 A가 보내온 암호화된 대칭 키를 자신의 개인 키로 복호화 하여 대칭 키를 얻음
따라서 암호화된 채널을 만들기 위해서는 클라이언트와 서버간 키 교환, 전자 서명, 암호 해시, 대칭 키 암호화 알고리즘이 서로 약속되어야 하고, 이 것을
암호 모음(CIPHER SUITE)
이라고 함
중간자 공격
Man in the middle attack
공격자가 통신 객체가 전송하는 공개 키를 자신의 공개 키로 바꾸는 것
예시
A가 C에게 공개 키 요청하지만 B가 가로챔
B가 C에게 공개 키 요청, C가 B에게 C의 공개 키 전송
B가 A에게 B의 공개 키 전송
A는 아무것도 모른채 B의 공개 키로 암호화한 암호문을 다시 B가 가로챔
B는 B의 공개 키로 A의 암호문을 복호화
B는 복호화한 평문을 다시 C의 공개 키로 암호화하여 C에게 전송
Ilhwanee
블로그 이전 -> https://pppp0722.github.io
팔로우
다음 포스트
IP(Internet Protocol)란?
0개의 댓글
댓글 작성