Skip to content

s26008-web/TIL.2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

TIL은 Today I Learned 의 약자로 오늘 내가 배운 것을 뜻한다.

Network

SSL/TLS

1. SSL: 보안 소켓 계층(Secure Sockets Layer)

SSL은 웹사이트와 브라우저 사이, 또는 서버와 서버 사이 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술이다.

데이터나 금융 정보 등 데이터를 훔치거나 보는 것을 방지한다.

2.TLS: 전송 계층 보안(Transport Layer Security)

TLS는 SSL 보다 더욱더 안전한 버전, 사실 명칭만 다르고 SSL의 업데이트 버전이라고 한다.

참고로 같은 전송 계층인 TCP와 연관이 깊다.

작동 방식- ( 두 방식은 거의 비슷하기 때문에 따로 설명하지 않겠습니다.)

먼저 대칭키와 비대칭키의 개념을 알아야 한다.

대칭키암호화 복호화에 사용되는 동일한 키를 뜻한다.

→ 만들기 쉽고 빠르다는 장점이 있다. 하지만 키를 안전하게 전달하기 힘들다. ( 대표적으로 DES와 AES가 있다.)

비대칭키는 암호화와 복호화에 사용되는 서로 다른 키를 뜻한다. **개인키(private key)**와 **공개키(public key)**를 합쳐 비대칭키라고 부른다.

비대칭키는 암호화와 복호화 키가 서로 다르다. 주로 자신만 알고 있는 개인 키를 만들고, 그 개인 키를 바탕으로 특정한 알고리즘을 이용하여 공개키를 만들고 나서 각각 암호화나 복호화에 사용한다. ( 대표적으로 RSA가 있다.)

비대칭키의 가장 큰 특징은 개인키로 암호화 한 것은 공개키로만 복호화 할 수 있고, 공개키로만 암호화 한 것은 개인키로만 복호화 할 수 있다는 점이다.

만약 A와 B가 있다고 할 때, A가 자신의 개인키로 B에게 데이터를 보냈다. 그리고 B는 A가 공개한 공개키로 이를 복호화 했다. 이때 B는 데이터의 출처가 A라는 것을 알 수 있다.

이번엔 A가 자신의 공개키로 데이터를 암호화 해서 B에게 줬다 가정해보자. B는 자신의 개인키로 이를 복호화하면서 이것의 출처가 A라는 것을 알 수 있다.

여기서 이제 디지털 서명을 이해할 수 있다.

디지털 서명(Digital Signature)

위에서 본 것 처럼 “네트워크에서 송신자의 신원을 증명하는 방법으로, 송신자가 자신의 비밀키로 암호화한 메시지를 수신자가 송신자의 공용 키로 해독하는 과정이다.”

SSL/TLS는 보안 연결을 하고 공개키를 교환하는 TLS Handshake로 시작된다.

TLS는 Handshake 중 두 당사자는 세션키를 생성, 세션키는 TLS Handshake 이후의 모든 통신을 암호화 및 해독한다.

새로운 세션마다 다른 세션 키가 통신을 암호화하는데 사용된다.

TLS는 서버 측의 당사자 또는 사용자가 사용중인 웹 사이트가 실제로 자신이 주장하는 당사자인지 확인한다.

또한 TLS는 인증 코드 ( MAC) 가 전송에 포함되기 때문에 데이터가 변경되지 않았다는걸 보장한다.


SSH

SSH(Secure Shell)

SSH는 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜이다.

→ 프로토콜이 보호되지 않는 네트워크 환경에서 컴퓨터에 명령을 안전하게 전송하는 방법이다.

SSH는 암호화를 사용하여 장치 간의 연결을 인증하고 암호화 한다. 또한 터널링 또는 포트 포워딩을 허용하는데 , 패킷이 다른 방법으로는 통과할 수 없는 네트워크를 통과할 수 있도록 하는 것이다.

기능

원격 암호화된 연결

SSH는 사용자의 장치와 멀리 떨어진 컴퓨터의 연결을 설정한다. SSH는 암호화를 사용하여 연결을 통과하는 데이터를 변환시킨다. 이때 정보를 가로채가는 쪽에서는 정적 데이터( 해독하지 않으면 아무 의미없는 데이터) 만 발견 할 수 있다. 또한 외부인이 해독하기 매우 어려운 암호화 방법을 사용한다.

터널링 기능

네트워킹에서 터널링은 일반적으로 사용할 수 없는 프로토콜이나 경로를 사용하네트워크에서 패킷을 이동시키는 방법이다.

터널링은 데이터 패킷이라는 헤더라는 추가 정보로 **래핑( 보안 정책을 입히는 과정 )**하여 목적지를 변경하는 방식으로 작동한다.

SSH 접속 과정

  1. TCP 연결- 기본 통신 채널 수립

클라이언트가 서버( 기본 22/TCP) 에 연결→ TCP 3-wayhandshake 완료 후 통신 가능 상태

  1. 프토콜 버전 교환- SSH 버전 호환성 확장

클라이언트/서버가 지원하는 SSH 버전 교환( 일반적으로 SSH-2.0 사용)

  1. 알고리즘 협상 (KEXINIT)- 암호화 매개변수 합의

지원 가능한 암호 알고리즘 목록 교환, 키교환,대칭 암호, MAC, 압축 방식 합의

  1. 키 교환 ( key Exchange) - 세션 키 생성

Diffie-Hellman, ECDH 등으로 shared secret 생성, 서버 호스트키를 이용해 위조,변조 방지

  1. 서버 인증 - 서버 신뢰성 보장

서버는 자신의 호스트키로 서명, 클라이언트는 Known_hosts와 비교하여 신뢰 여부 확인

  1. 세션 암호화 시작- 암호화 채널 활성화

협상된 세션 키로 데이터 암호화 개시, 이후 모든 통신은 암호화 + 무결성 보장

  1. 사용자 인증- 클라이언트 사용자 검증

서버가 클라이언트 사용자 인증 요구 ( 비밀번호, 공개키, kerberos, GSSAPI)

  1. 세션 요청 및 채널 생성- 실제 서비스 연결

ssh-connection 서비스 요청, 채널 생성( shell,exec,port-forward,SFTP)

  1. 터미널 /세션 요청 및 채널 생성- 최종 사용자 동작

사용자가 입력한 명령이 암호화되어 서버에 전달 , 서버 응답 또한 암호화 되어 클라이언트로 전

요약

  1. 서버와 클라이언트간의 공개키 교환을 통해 초기 연결 설정
  2. 세션키를 생성하여 대칭키 암호화를 설정
  3. 클라이언트는 비밀번화 또는 공개키를 통해 서버에 인증을 시도
  4. 인증이 완료되면 세션키를 사용하여 암호화된 안전한 데이터 통신을 시작

port

포트 ( port ) 란 네트워크 통신에서 특정 서비스를 구분하기 위한 번호

역할

하나의 컴퓨팅 장치에서 여러 서비스가 동시에 실행될 때 서비스가 사용하는 포트를 서비스 간 충돌 없이 동작할 수 있도록 한다.

포트 번호 80→ HTTP ( 일반 웹페이지)

포트 번호 443→ HTTPS ( 암호화 된 웹사이트)

포트 번호 21→ FTP ( 파일 전송 서비스 )

포트 번호 22→ SSH ( 보안 원격 접속 서비스)

포트 번호 25→ SMTP ( 이메일 전송 서비스 )

종류

0~1023 ( well-known ports) : 잘 알려진 표준 서비스가 사용한다. 예시로 위에 포트번호가 있다.

1024~49151 (Registered ports) : 특정 용도로 미르 등록되어 사용하는 포트

ex) 포트 번호 3306_> MySQL ( 데이터 베이스 서비스)

49152~ 65535 ( Dynamic port) : 임시로 사용하는 포트

참고로 불필요한 포트는 닫는 것이 좋다.

→ 열려 있는 포트가 많으면 그만큼 공격 표면 ( attack surface) 이 넓어져 해킹 위험이 증가하기 때문이다.

또는 방화벽을 이용할 수도 있다.

공인/사설/NAT IP

공인 IP 주소( Public IP Address )

공인 IP 주소는 세계적으로 유일하며, 인터넷 상의 다른 모든 컴퓨터가 식별할 수 있는 IP 주소이다. 인터넷 서비스 제공업체(ISP) 로부터 할당 받는다.

용도 - 인터넷에 직접 연결된 장치들 ( 웹 서버, 이메일 서버) 에 사용된다.

범위- IPv4의 경우 0.0.0.0~255.255.255.255 중 사설 IP 주소를 제외한 모든 주소가 해당

사설 IP 주소( Private IP Address )

사설 IP 주소는 내부 네트워크에서 사용되는 IP 주로로, 인터넷에서는 사용되지 않는다. 여러 네트워크에서 동일한 사설 IP 주소를 사용할 수 있다.

용도- 가정이나 회사 내부 네트워크에 사용 ( 라우터, 컴퓨터, 스마트폰 등 내부 장치들에 할당 )

주소 범위

  • 10.0.0.0 ~ 10.255.255.255(10.0.0.0/8)
  • 172.16.0.0 ~ 172.31.255.255(172.16.0.0/12)
  • 192.168.0.0 ~ 192.168.255.255(192.168.0.0/16)

IP 주소에서 공인 IP와 사설 IP를 두 종류로 나눈 이유IPv4의 낭비를 막고 공인 인터넷을 굳이 사용하지 않아도 되는 단말들에게 어느 망이든 중복 사용 가능한 IP를 주기 위함이다.

NAT(Network Address Translation)

NAT은 IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록 하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술

→ IP를 변환하는 것

목적

주로 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다.

과정

우선 공유기( 라우터 ) 에 연결되어 있는 각 사내 컴퓨터들의 사설 IP를 받아와 유일한 공인 IP로 변환한다.

그다음 외부 인터넷으로 공인 IP주소 정보를 보내는 것이다.

여기서 누가 보냈는지는 모르지만 공유기 주소는 알고 있는 것이다. 하지만 답변을 하면 그 정보가 다시 공유기로 오고 공유기에서 이전에 요청한 정보를 기억하고 있기에 확인하고 그대로 보낸 컴퓨터로 넘겨주는 것이다.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors