Network

보안

foxlee 2021. 6. 29. 14:59

인증
1. 패스워드 인증
2. 물건으로 인증(IC카드)
3. 바이오메트릭스 인증(사용자의 신체적 특징)

인터넷상의 데이터 전송 - 도청의 위험
이를 방지하기 위해서 데이터를 암호화 함

평문: 암호화 하기전의 데이터
암호키: 평문을 암호화하기 위해 필요하고 특정한 비트 수
암호문: 평문을 암호키로 수학적 연산을 거쳐 암호화
복호: 암호문을 암호키를 이용해 평문으로 돌리는 것
암호화 알고리즘: 위의 암호화, 복호화 과정에서 수학적 연산

공통키 암호 방식
- 암호화. 복호화 같이 암호키를 이용한 암호화 방식으로 대칭키, 비밀키 암호방식이라고도 함
- 데이터 보내는 사람, 받는 사람 사이 미리 암호키를 공유하고 있어야 함
- 암호키는 제 3자가 가지면 안됨
- 암호키를 공유하며, 정기적으로 갱신해야함(키 배송 문제)
- 장점: 처리 부하가 작음
- 단점: 암호키의 공유가 어려움
- 예- AES, 3DES
- 과정 : 송신자가 암호키를 통해 데이터를 암호화하고 수신자가 가지고 있던 암호키를 통해 데이터를 복호화함

- 공개키 암호 방식
- 공동키 암호 방식은 키 배송에 문제가 있음
- 먼저 수학적 연관성이 있는 공개키와 비밀키(제3자가 가져선 안됨)
- 누구나 공개키를 통해 데이터를 암호화할수 있고, 비밀키를 가진 수신자만 이 비밀키로 암호문을 복호할 수 있음
- 또는 A가 비밀키로 암호화 하고 B가 공개키로 복호할 수 있음(A는 b의 공개키에 대응되는 비밀키를 가지고 있음)
- C의 공개키를 입수하여 공개키로 복호화 했다 => 데이터를 암호화해서 보낸 사람이 C임
- 보낸 사람은 공개키와 비밀키를 가지고 있고, 받을 사람은 이미 비밀키를 공유해서 가지고 있다. 받은 사람이 가지고 있는 비밀키를 통해 복호화에 성공하면 그 비밀키에 대응하는 공개키를 가진 사람이 보낸 것으로 수신자를 확인 가능

디지털 서명
- 데이터를 보낸 곳과 데이터가 변조되지 않았음을 확인하기 위함
- 데이터의 해시값을 비밀키로 암호화함
디지털 서명 원리
- 송신자가 데이터에 해시값 생성 후 송신자의 비밀키로 암호화후 서명 데이터에 작성하여 데이터와 함게 수신자에게 전송
- 수신자는 송신자의 공개키로 복호함(=공개키로 복호화 했음 = 송신자가 그 공개키에 대응하는 비밀키로 암호화 했음, 비밀키로 가지고 있음)
- 수신자는 수신한 데이터로부터 해시값을 생성하여 서명의 해시값과 비교하여 변조 여부 확인

공개키를 안전하게 이용하기 위한 인프라 - 디지털 인증서 -
1. 공개키와 비밀키를 쌍으로 생성
2. 공개키와 소유자 정보를 CA(인증 기관)로 보내서 인증서 발행 신청 (=CSR-Certificate Signaling Request)
3. 문제 없으면 인증서 발급 및 신청자에게 발행
4. 인증서를 서버 등에 설치

SSL
- SSL을 통해 디지털 인증서로 통신 상대 확인, 데이터 암호화 후 도청 방지,
- SSL은 공개키 암호 방식 및 공통키 암호방식을 조합한 하이브리드 암호
1. SSL 통신은 서버의 디지털 인증서를 가져온 후 체크하여 서버 검증
2. 공개키 암호의 경우 처리 부하가 커, 인증서에 포함된 공개키는 공통키를 안전하게 전송하기 위함이고, 공통키를 디지털 인증서에 포함된 공개키로 암호화해서 공유함
3. 공통키를 생성에 필요한 데이터를 공개키로 암호화함
즉, 인증서 체크 - 공개키 암호 방식으로 서버 신원 확인 및 공통키 전송, 데이터 전송은 공통키 암호방식

 

 

CA는 서버 운영 기업이 넘겨준 공개키를 인증서 발급자, CA의 이름 등과 함께 묶어서 CA가 가지고 있는 개인키로 암호화해서 SSL인증서로 발급해줍니다.
차후에 클라이언트에서 요청을 하면 서버는 클라이언트에게 SSL 인증서를 보냅니다. 브라우저(클라이언트)는 대표적인 CA들의 리스트와 그들의 공개키를 보유하고 있습니다. 만약 인증서에 적힌 CA의 이름과 브라우저가 소유하고 있는 CA 이름이 같다면 CA의 공개키로 SSL 인증서를 복호화 합니다.
이제 SSL내부에 들어있던 서버의 공개키를 가지고 요청을 암호화해서 서버에게 보냅니다. 서버측은 가지고 있는 개인키로 요청을 복호화하여 해석하고 응답은 다시 암호화 해서 보냅니다. 이 과정을 통해 보안성이 강한 통신을 할 수 있게 됩니다.