지난 시간에 정리했던 내용을 간단하게 써보도록 하겠습니다.
1. 주소 체계
1) 2계층 주소 체계 : MAC 주소 (OUI + 제품일련번호) -----> 어떤 회사에서 만들었는지 알 수 있음.
2) 3계층 주소 체계 : IPv4 주소 (네트워크와 호스트로 구분한다. ---> 가변 길이 :SubnetMask로 구분한다. 1은 Network, 0은 Host )
IPv6 주소 ( 네트워크와 호스트로 구분한다. -----> 고정 길이 , 절반으로 구분된다.)
3) 4계층 주소체계 : Port 번호 (System port / User port / Private port )
4) 7계층 주소쳬계 : Domain Name(URL), NetBios Name 등
2. 전송 단위
1) 2계층 전송 단위는 프레임 입니다.
2) 3계층 전송 단위는 패킷 입니다.
3) 4계층 전송 단위는 세그먼트 입니다.
3. 각 계층별 처리 장치
1) 1계층 장치 : Hub, Repeater --------> 신호만 증폭된다.
2) 2계층 장치 : 스위치, 브리지 ----------> 목적지 MAC 주소를 보고 목적지로 보낸다.
3) 3계층 장치 : 라우터, L3 스위치 --------> 목적지 IP 주소를 보고 목적지로 보낸다. (라우팅)
4) 4계층 장치 : 로드 발란설 (L4 스위치) ----> 목적지의 포트를 보고 분산처리한다.
5) 7계층 장치 : 웹 방화벽, 웹 스위치 (L7 스위치), IDS/IPS, Virus Wall, Proxy Server 등등 ----> 데이터 부분을 보고 판단한다.
다섯 번째 정리
ARP, 파밍, 피싱, DNS Spoofing, Packet Sniffing
실습) Wireshark 패킷 분석
1. http_sniff.pcapng 를 열고 로그인ID와 PW를 찾는다.
방법은 3 - Way - handshaking 을 찾아보자. ----> 본격적으로 접속하는 시점을 알 수 있습니다.
즉, 로그인을 하는 경우처럼 데이터를 넣어서 전송하게 되면 http에서 POST로 전송합니다. -------> POST로 전송합니디.
----> POST라는 글자를 찾아봄
- 단순한 페이지 요청(링크 클릭 등), 검색어를 입력 ---> GET으로 요청
방법1) 편집 > 패킷찾기 ----> 표시필터를 '문자열(string)'로 변경하고 POST(대문자)를 입력하고 엔터
방법2) 표시 필터(Display Filter)에 http.request.method == POST
방법3) 표시 필터(Display Filter)에 frame contains "찾을키워드" ex) frame contains "password"
frame matches "찾을키워드"
-------------> contains가 대소문자 구분한다.
2. ftp-clientside-101.pcapng --> FTP를 이용해서 사진을 전송했다. 무슨 사진인지 맞추어 보자.
FTP - DATA 클릭하고 따라가기 클릭합니다.
다음 형식에서 Raw 로 바꾸어 줍니다.
앞 줄을 부분 jpg 로 바꿀 수 있게 삽입 붙여넣기 해줍니다.
결과가 출력됩니다.
- 21번 포트 : FTP 명령어 포트
- 20번 포트 : FTP 데이터 포트
- FRP - DATA 라고 되어 있는 패킷 아무거나 골라서 우클릭 > 따라가기 > TCP 스트림 -> FTP는 명령어와 데이터가 포트로 구분되어서 따로 따로 전송됩니다. 따라서 이미지 추출이 편리합니다.
- http 는 요청과 응답 그리고 데이터가 같은 포트로 섞여서 들어옵니다. 그러면 HxD를 활용해서 불필요한 부분을 제거하면 볼 수 있습니다.
3. whoisshe.pcapng 의 주인공이 입은 옷의 색깔은?
TCP 따라가기를 누릅니다.
다른 형식에서 Raw로 표시합니다.
image/jpeg 까지 다 지웁니다.
유라가 나오네요 !
- File Signature는 항상 맨 앞에 와야 한다.
- 3-Way handshaking : 248,249,250
- 1514bytes = 데이터(1460)+TCP(20)+IP(20)+Ethernet(14)
----> FF D8 FF E0의 이전부분을 블럭설정해서 삭제하면 FF D8 FF E0가 맨앞으로 오게 됨
6. 네이버 검색캡쳐.pcap 파일을 열어서 어떤 단어를 네이버에서 검색했는지 알아내세요.
- http.request.method == GET
- 검색한 검색어를 전달하는 Query 내용 : search.naver?query=steve+jobs
7. Stealth scan.pcapng를 보고 열린포트를 모두 알아내자.
- SYN를 보냈을 때 열린포트는 ACK/SYN로 응답, 닫힌 포트는 ACK/RST 또는 RST로 응답함
- tcp.flags 순서는 UAPRSF 십진수 기준으로 F는 1, S는 2(0x02), R은 4, P는 8, A는 16(0x10), U는 32
tcp.flags == 0x012 (16진수로 입력)
tcp.flags == 18 (십진수로 입력)
* ARP (Address Resolution Protocol)
ARP는 네트워크 환경에서 임의의 호스트가 다른 호스트에 데이터를 전송하려면 수신 호스트의 IP 주소뿐만 아니라,
MAC 주소도 알아야 합니다. 수신 호스트의 IP 주소는 보통 응용 프로그램 사용자가 프로그램을 실행하는 과정에서 직접 입력하는데 IP 주소로부터 수신 호스트 MAC 주소를 얻는 작업이 추가로 필요합니다.
MAC 주소
송신 호스트가 물리 계층을 통해 데이터를 전송하는 과정에서 필요한 주소를 설명합니다. IP 프로토콜 헤더에서 필요한 송신 호스트 IP 주소, 수신 호스트 IP 주소와 함께 MAC 계층에서도 송신 호스트 MAC 주소, 수신 호스트 MAC 주소가 필요합니다. 송신 호스트의 IP 주소는 자신의 하드 디스크에 보관되어 있으므로 쉽게 구할 수 있습니다.
또한, 수신 호스트의 IP 주소는 사용자가 접속하고자 하는 호스트의 IP 주소를 지정합니다. 사용자는 일반적으로 도메인 이름을 이름하는데 도메인 이름은 DNS 서비스를 통해서 IP 주소로 쉽게 변환할 수 있습니다.
MAC 주소의 경우 송신 호스트 MAC 주소는 자신의 LAN 카드에 내장되므로 이 값을 읽으면 됩니다. 문제는 수신 호스트 MAC 주소인데 그림에서 보시다시피 송신 호스트의 내부 정보로는 얻을 수 없습니다.
따라서 수신 호스트의 IP 주소를 매개변수로 해서 ARP 기능을 통해 수신 호스트 MAC 주소를 얻어야 합니다.
IP 주소로부터 MAC 주소를 얻는 기능은 ARP를 통해서 이뤄집니다. 예를 들어서 호스트 A가 호스트 B의 MAC 주소를 얻으려면 ARP request 라는 특수 패킷을 브로드 캐스팅 해야 합니다. ARP request 패킷을 네트워크의 모든 호스트가 수신하지만 관계없는 호스트는 패킷을 무시하고 호스트 B만 IP 주소가 자신의 IP 주소와 동일하다는 것을 인지합니다. 따라서 호스트 B는 ARP reply 패킷을 사용해서 자신의 MAC 주소를 호스트 A에 회신합니다.
데이터를 전송할 때마다 ARP를 사용해서 패킷을 브로드 캐스팅하면 네트워크 트래픽이 증가합니다. 따라서 ARP 를 사용하는 호스트에서는 가장 최근에 얻은 IP 주소와 MAC 주소 매핑 값을 보관하는 캐시 정보를 이용합니다. 또한, 송신 호스트가 ARP request 패킷을 브로드 캐스팅 하는 과정에서 패킷을 수신한 모든 호스트는 송신 호스트 IP 주소와 MAC 주소 매핑 값을 자동으로 얻을 수 있습니다. 즉, ARP 트래픽에 대한 네트워크 부하를 최소화 할 수 있습니다.
그렇다면 RARP 는 무엇일까요 ?
ARP는 IP 주소를 이용해서 해당 호스트의 MAC 주소를 제공하는 역할을 합니다. 이와 유사한 기능을 수행하는 프로토콜 RARP 는 반대로 MAC 주소를 이용해서 IP 주소를 제공합니다. 디스크가 존재하지 않는 시스템이나 X 윈도우 터미널 등에서는 자신의 LAN 카드 정보를 읽어 MAC 주소를 얻을 수 있지만, 파일 시스템이 없으므로 IP 주소를 보관할 방법이 없다.
이런 경우 자신의 MAC 주소와 IP 주소의 매핑 값을 보관하는 호스트로부터 IP 주소를 얻어야 합니다.
IP 주소를 얻고자 하는 호스트에서는 MAC 주소를 매개변수로 하여서 패킷을 브로드 캐스팅 합니다.
보통은 네트워크 RARP의 기능을 전담으로 수행하는 서버가 하나 이상 존재합니다. 따라서 모든 호스트가 RARP 변환 요청을 받아도 해당 정보를 보관하고 있는 RARP 서버만 응답 할 수 있습니다.
디스크가 존재하는 않는 시스템에서는 위와 같은 기능을 통해 자신의 IP 주소를 얻은 다음, 미리 정해진 호스트로부터 자신의 부트 이미지를 다운받으면 됩니다. 따라서 이러한 시스템은 ROM 등의 비활성 메모리에 다른 호스트와 통신하여 필요한 부트 이미지를 수신할 수 있는 TFTP 등의 기본 프로토콜이 존재합니다.
정리하자면 !
- IP 주소와 MAC 주소를 연결해주는 프로토콜이다.
- MAC 주소는 HW에 고정되어 있습니다.
- IP 주소는 MAC 주소에 매핑하여 사용합니다. 이동을 하거나 새로고침을 하면 IP 주소는 바뀌기도 해요.
- 외부에서 패킷이 들어온다면 목적지 IP를 보고 해당하는 MAC 주소를 찾아서 이더넷 헤더를 만들게 됩니다.
- ARP 캐쉬 테이블에서 IP 주소와 MAC 주소를 매핑하여 저장한다. cmd > arp -a
- 만일 ARP 캐쉬 테이블에서 IP 주소를 찾을 수 없으면 ? ARP Request (Limited Broadcast)를 보냅니다.
- 해당 호스트에서 ARP Reply (Unicast) 를 보내서 자신의 IP와 MAC 주소를 알려줍니다.
- ARP Request를 보냈던 컴퓨터는 그 내용을 ARP 캐쉬 테이블에 저장합니다.
1) ARP 요청 (ARP Request) : 컴퓨터가 특정 IP 주소에 대한 물리적인 주소를 알아내려고 하 때 ARP 요청 패킷을 브로드 캐스트합니다. 이 패킷에는 목표 IP 주소가 포함되어 있습니다.
2) ARP 응답 (ARP Reply) : 네트워크 상에 있는 모든 장치들이 ARP 요청을 수신하지만, 목표 IP 주소와 일치하는 장치만이 ARP 응답을 생성하여 응답 패킷을 송신합니다. 이 응답 패킷에는 목표 IP 주소와 해당하는 물리적인 주소(MAC 주소)가 포함되어 있습니다.
3) ARP 캐시 (ARP Cache) : ARP 응답을 받은 컴퓨터는 수신한 MAC 주소를 ARP 캐시에 저장합니다. 이렇게 해서 나중에 동일한 목표 IP 주소로 향하는 통신이 발생할 때 ARP 요청 없이 바로 해당 장치로 데이터를 전송할 수 있습니다. ARP 캐시는 일정 시간 동안 유지되며, 이 기간이 지나면 다시 ARP 요청을 통해서 새로운 물리적 주소를 찾아야 합니다.
ARP 는 주로 이더넷이나 Wi-Fi와 같은 로컬 네트워크에서 사용되며, IP 주소를 물리적인 MAC 주소로 매핑함으로써 효과적인 통신을 가능하게 합니다.
참고로 브로드 캐스팅은 네트워크에서 한 컴퓨터가 전송한 데이터가 네트워크에 연결된 모든 다른 컴퓨터로 전송되는 통신 방식을 말합니다. 이것은 네트워크에 연결된 모든 컴퓨터에게 정보를 전송하기 위해 사용됩니다. 브로드캐스트 메시지는 특정한 주소가 아니라 네트워크 상의 모든 주소에게 전송됩니다.
실습)
먼저 window 7 런닝에서 cmd에 들어가 arp -a 를 눌러서 주소를 확인합니다.
sudo -nmap -sP 192.168.5.1-140 을 검색하여 호스트 주소를 찾습니다.
그리고 바로 arpsoof 로 공격을 합니다.
새 탭을 열어서 sudo fragrouter -B1 으로 정상 포워딩을 합니다.
다시 다른 탭을 열어서 sudo wireshark 를 입력하고 eth0를 더블 클릭해줍니다.
$ sudo drifnet -i eth0 를 눌러서 실시간으로 이미지를 확인할 준비를 합니다.
여기서 잠깐 ! driftnet은 네트워크에서 이미지를 캡처하고 표시하는 도구로, 네트워크 상에서 전송되는 이미지를 실시간으로 확인할 수 있습니다. 이는 리눅스 및 유닉스 시스템에서 사용할 수 있는 네트워크 패킷 스니핑 도구 중 하나입니다.
이렇게 상대방이 홈페이지를 엿 볼 수 있습니다.
- SSL Strip : MITM 방식을 사용해서 서버와 클라이언트 사이에서 키 교환할 때부터 끼어들어 암호화 키를 가지는 기법입니다.
* 피싱 (Phishing)
피싱은 일반적으로 이메일, 메시지, 혹은 소셜 미디어 등을 통해 사용자들을 속여서 개인 정보나 금전을 훔치는 공격입니다. 공격자는 흔히 의심할 여지 없는 기관이나 서비스의 로고나 디자인을 모방하여 가짜 웹 사이트에 사용자를 유도하고 거기서 개인 정보나 비밀번호를 입력하도록 유도합니다. 그러면 사용자들은 이런 가짜 웹사이트에 개인 정보를 입력하게 되면 그 정보는 공격자에게 전송되어 개인 정보 유출이 발생합니다.
- 간단하게 피싱의 종류에 대해서 알아봅시다.
1) 스피어 피싱 : 특정한 개인이나 회사들을 대상으로 시도하는 피싱을 스피어 피싱이라고 합니다.
2) 클론 피싱 : 링크나 첨부 파일이 포함된 과거에 전달된 적법한 이메일에 거의 동등하거나 복제된 이메일을 만드는데 사용되는 수신자 주소와 내용이 포함되어 있는 경우입니다.
3) 웨일링 : 여러 피싱 공격이 고위 경영 간부와 비즈니스 내 기타 고위직을 대상으로 이루어졌으며 웨일링이라는 용어는 이러한 종류의 공격을 뜻합니다.
4) 스미싱 : SMS 의 혼성어인 스미싱은 오해의 소지가 있는 문자 메세지로 피해자를 속이고 정보를 빼오는 사이버 공격입니다.
5) 큐싱 : QR 코드를 통해서 악성 사이트로 이동하게 하거나 악성 앱을 다운로드 하도록 유도하는 공격입니다.
즉, 피싱은 메일을 이용해서 신뢰할 수 있는 메일 주소로 가장하고 신용카드 번호나 패스워드 입력을 요구합니다.
백신 소프트웨어에 검출되지 않습니다. 웹 사이트를 만드는 기술 이외의 특별한 기술은 아무것도 필요가 없습니다.
Phishing : 가짜 사이트 ---> 가짜 도메인에 속았거나, 링크를 클릭하는 경우 (SMS, 전화 등)
* 파밍 (Pharming)
파밍은 사용자의 컴퓨터나 네트워크를 조작하여서 원래의 목적지가 아닌 공격자가 조작한 피싱 사이트로 유도하는 기술입니다. 이것을 통해서 사용자는 진짜 사이트를 방문하는 것처럼 보이지만, 실제로는 공격자가 제어하는 가짜 사이트에 접속하게 됩니다. 이를 가능하게 하는 방법 중 하나가 DNS Spoofing 입니다.
Pharming : DNS Spoofing ---> 올바른 도메인 주소를 입력했는데도 가짜 사이트로 이동한다.
www.citybank.com : 틀린 주소 ---> 틀린 주소에 속으면 피싱
www.citibank.com : 올바른 주소
www.whitehouse.com : 틀린 주소
www.whitehouse.gov : 올바른 주소
* DNS Spoofing
DNS Spoofing 은 도메인 네임 시스템 (DNS)을 조작하여 사용자를 공격자가 설정한 가짜 웹 사이트로 유도하는 공격입니다. DNS는 사용자가 웹 사이트 주소를 입력하면 해당 주소에 대한 IP 주소를 찾아주는 역할을 합니다. DNS Spoofing은 이러한 DNS 서버의 취약점을 이용하여서 사용자가 원래의 웹사이트 주소를 입력해도 공격자가 설정한 가짜 IP 주소로 전환 시킵니다. 결과적으로 사용자는 의도하지 않은 가짜 사이트로 접속하게 되어서 개인 정보를 노출시키게 됩니다.
이렇게 피싱, 파밍, DNS Spoofing 은 모두 사용자의 신뢰를 이용해서 정보를 훔치거나 조작하는 공격 기술들 입니다.
대처 방법은 의심스러운 링크나 이메일에 대한 주의를 기울이고 안전한 인터넷 행동 습관을 가지는 것이 중요합니다.
* Packet Sniffing
Packet Sniffing 은 데이터 도청의 의미입니다. 공격자는 데이터 도청을 통해서 password, file, 중요 메세지 등을 엿볼 수 있으며 기밀이 유출될 우려가 있습니다. Packet Sniffing을 하기 위해서는 ARP Spoofing 또는 DNS Spoofing 을 이용한 피싱 기법을 사용하는 것 등이 있습니다. 암호화 하지 않은 프로토콜을 이용하면 Sniffing 기법을 이용해서 쉽게 패스워드를 알아낼 수 있습니다. 암호화 하는 프로토콜을 이용하면 Sniffing 하더라도 암호화된 메세지를 복호화 하기에는 아주 어렵습니다. 암호화 프로토콜의 경우, 몇가지 방법을 추가해야 합니다.
암호화의 원리
암호화는 정보를 안전하게 전송하거나 저장하기 위해 평문 (일반적인 텍스트) 을 암호문 (암호화된 형태)로 변환하는 과정입니다. 암호화의 주요 목적은 정보의 기밀성, 무결성 및 인증을 보호하는 것입니다.
그러면 암호화의 용어에 대해 간단하게 알아봅시다.
1. 암호화 알고리즘
암호화 알고리즘은 평문을 암호문으로 변환하는 수학적인 과정입니다. 이 알고리즘은 키라고 불리는 비밀 값과 함께 사용됩니다. 키는 암호화 및 복호화 과정에 사용되며, 올바른 키가 없으면 암호문을 해독할 수 없습니다.
2. 대칭키 암호화
대칭키 암호화는 암호화 및 복호화에 동일한 키를 사용합니다. 이것은 암호화 및 복호화의 과정이 간단하고 빠르다는 장점이 있지만, 키를 안전하게 공유하는 것이 어려울 수 있습니다. 공개키보다 약 100 ~ 1000배 정도 빠릅니다.
대칭키의 한계는 키를 안전하게 전달하기 어렵습니다. 키의 개수가 많아집니다.
- 대칭키의 종류에 대해 알아봅시다.
1) DES : 최초의 표준 대칭키 입니다. (1977년 ~ 2000년)
2) 3DES : AES가 선정될 때까지 임시 표준
3) AES : 현재 표준 대칭키 (2001년 ~ 2024년 현재까지)
4) SEED : 국내 대칭키이며 은행 공동망에서 사용됩니다. 소스 코드를 공개하는 이유는 백도어가 없습니다. 신뢰성이 향샹됩니다. 소스코드를 공개하더라도 안전한 대칭키가 만들어진다는 보장이 있습니다. 대칭키를 비밀리에 관리해야 합니다.
대칭키를 만드는 알고리즘은 떳떳하게 공개하고 만들어지는 대칭키는 안전하게 관리합니다.
5) HIGHT, LEA, ARIA : 모바일 환경에 적합하도록 국내 경량 암호화입니다. 소스 코드는 공개됩니다. 대칭키의 종류는 수백가지이고 각자 자기네 나라에서 만든 암호 알고리즘을 사용하는 것이 일반적입니다.
ex) 대칭키 암호화
A가 B에게 "HELLO"라는 메시지를 보내려고 합니다.
A는 암호화 키로 "KEY123"을 선택합니다.
A는 "HELLO"를 AES 알고리즘을 사용하여 암호화합니다. 암호화된 결과는 "UDWQF"가 됩니다.
A는 "UDWQF"를 B에게 전송합니다.
B은 "UDWQF"를 받고, 복호화 키인 "KEY123"을 사용하여 해당 메시지를 복호화하여 "HELLO"를 얻을 수 있습니다.
3. 비대칭키 암호화
비대칭키 암호화는 공개 키 (Public Key) 와 개인 키 (Private Key) 라는 2개의 서로 다른 키를 사용합니다.
정보를 암호화 할 때는 공개 키를 사용하고 해당 정보를 복호화 할 때는 개인 키를 사용합니다.
이 방식은 안전한 키 교환과 인증을 제공합니다.
ex) 비대칭키 암호화
A가 B에게 "HELLO"라는 메시지를 보내려고 합니다.
A는 B의 공개 키를 사용하여 메시지를 암호화합니다.
암호화된 결과를 B만 복호화할 수 있는 B의 개인 키를 사용하여 복호화합니다.
4. 해시 함수
해시 함수는 임의의 길이의 데이터를 고정된 길이의 고유한 값으로 매핑하는 함수 입니다. 해시 함수는 주로 무결성을 검증하기 위해 사용됩니다. 주어진 데이터가 조작되지 않았는지 확인할 때 사용됩니다.
5. 인증 및 전자 서명
전자 서명은 비대칭키 암호화를 사용해서 메세지의 무결성과 인증을 보장합니다. 메시지를 전자 서명할 때는 개인 키를 사용하고 전자 서명을 확인할 때는 해당 메시지의 공개 키를 사용합니다.
즉, 암호화는 정보 보안에 있어서 중요한 역할을 합니다. 안전한 통신 및 데이터 보호를 위해 암호화 기술이 지속적으로 발전되고 있으며, 적절한 암호화 기술을 사용하여서 데이터를 안전하게 보호하는 것이 중요합니다.
개인 정보 보호법에 고객의 정보를 전송할 때는 반드시 암호화 해야 합니다.
메일, 문자, 카톡, 전화 : 인터넷은 안전하지 않은 경로 (도청의 위험이 있습니다.)
6. 치환 (Substirution) : 글자를 다른 글자로 바꾸는 것.
- 약속된 규칙에 따라서 글자를 바꿉니다.
- 약속된 규칙을 키 (Key) 라고 합니다. -> 암호화 키, 복호화 키
- 암호화 키 : 평문을 암호문으로 만드는 규칙
- 복호화 키 : 암호문을 평문으로 만드는 규칙
- 암호화 키와 복호화 키가 서로 대칭을 이루면 대칭키라고 합니다.
ex) 암호화키가 Shift+2일 때, 복호화 키는 Shift-2이므로 서로 대칭을 이룬다. (대칭키)
평문 : Thanks god its friday
암호문 : Vjcpmu iqf kvu htkfca
7. 튜링 완전성 (Turing Completeness) : 한 가지 방식만 사용할 수 있는 게 아니고 다양한 용도로 사용할 수 있습니다.
ex) 컴퓨터, 스마트폰, 스마트 패드
ex) 이더리움 : 화폐 기능, 프로그램 실행, 스마트 계약 다양한 기능이 있습니다.
8. 순열 (Permutation) : 알파벳의 순서를 바꾸는 방식입니다
1) 대칭키 (Symmetric Key) : 암호화 키와 복호화 키는 서로 대칭을 이룹니다.
2) 단일키 (Single Key) : 대칭이므로 사실상 하나의 키와 마찬가지 입니다.
3) 세션키 ( Session Key) : 한번의 세션에서만 사용하고 세션이 끝나면 버립니다.
(다음에는 새로 만들어서 사용해야 합니다.)
4) 비밀키 (Secret Key) : 암호화 및 복호화를 할 수 있기 때문에 비밀리에 사용해야 합니다.
Quiz) 하루에 AES를 몇 번정도 사용할까요? 4번
1) 0번
2) 10번
3) 30번
4) 50번 이상
9. 블록 암호 알고리즘과 스트림 암호 알고리즘의 차이
1) 블록 암호 알고리즘은 고정된 크기의 블록 단위로 데이터를 처리합니다. 입력 데이터는 블록으로 나눠지고 각 블록은 동일한 암호화 키에 의해 독립적으로 암호화 됩니다. 대표적으로 AES와 DES 가 있습니다. 블록 암호 알고리즘은 고정된 크기의 블록을 처리하기 때문에 블록 크기에 따라서는 패딩 (Padding)이 필요할 수 있습니다.
2) 스트림 암호 알고리즘은 연속적인 데이터 스트림을 처리합니다. 스트림 암호 알고리즘은 키 스트림을 생성하고 이 키 스트림은 평문 데이터와 XOP (배타적 논리합) 연산을 수행하여 암호문을 생성합니다. 대표적으로 RC4와 ChaCha20이 있습니다. 스트림 암호는 데이터 스트림을 암호화 하기 때문에 데이터를 조각내거나 패딩할 필요가 없습니다.
이 둘의 차이점은 처리 단위, 동적 방식, 사용되는 곳 입니다.
- 처리 단위 : 블록 암호는 고정된 크기의 블록을 처리하고 스트림 암호는 연속적인 데이터 스트림을 처리합니다.
- 동작 방식 : 블록 암호는 입력 블록을 독립적으로 암호화 하고 스트림 암호는 키 스트림과 평문 데이터를 XOR 하여서 암호문을 생성합니다.
사용되는 곳 : 블록 암호는 대부분의 암호화 통신에 사용되며, 스트림 암호는 주로 스트리밍 데이터나 통신에 사용됩니다. 블록 암호와 스트림 암호 모두 정보를 안전하게 암호화 하고 복호화 하기 위해서 사용될 수 있으며 각각의 알고리즘은 다른 용도와 상황에 적합합니다.
- Bit Stream 을 키로 연산하여 암호화 스트림으로 만들어서 보내는 방식입니다. (XOR 연산 : 같으면 0, 다르면 1)
3) RC4 (2000년 중반 ~ 2010년대 중반까지 사용되었다.)
- RC4는 대칭키 알고리즘이며, 변수 크기의 키를 허용하며, 평문과 암호문을 같은 크기로 생성합니다.
- RC4는 비교적 간단한 구조를 가지고 있으며, 초기 키 스케줄링과 스티림 생성 두 단계로 구성됩니다. RC4는 매우 빠르고 효율적이며, 소규모 장치에서도 사용하기 적합해요. 그렇지만 RC4는 일부 키와 초기화 벡터에 대해 편향된 출력을 생성하는 취약점이 있어서 보안 측면에서는 사용을 권장하지 않는 경우가 있습니다.
- RC4는 키 길이가 40비트에서 2048 비트 사이 임의의 길이의 키를 사용할 수 있습니다. 그러나 보안상의 이유로 일부 길이의 키는 사용을 권장하지 않습니다.
ex)
1) 송신측에서 암호화 하는 과정입니다.
평문 : 0101 0101 0101 0101 0101
키 : 0010 0100 1001 0010 0100
XOR : 0111 0001 1100 0111 0001 ----> 암호문
~~~~~~~~(전송)~~~~~~~~
2) 수신측에서 복호화 하는 과정
암호문 : 0111 0001 1100 0111 0001
키 : 0010 0100 1001 0010 0100
XOR : 0101 0101 0101 0101 0101 -----> 평문
다섯 번째 정리 마무리를 하며 ...
포트 번호와 서비스를 정리하겠습니다.
포트 번호 | 프로토콜 | 서비스 | 포트 번호 | 프로토콜 | 서비스 | |
20 | FTP | FTP 데이터 전송 | 9800 | WebDAV | HTTP(Hypertext Transfer Protocol)를 기반으로 한 확장된 웹 프로토콜로, 웹 서버에 있는 파일을 원격으로 관리하고 공유하는 데 사용 | |
21 | FTP | FTP 명령어 전송 | 3689 | iTunes | Apple에서 제공하는 음악, 비디오, 앱, 오디오 북 등의 디지털 미디어 콘텐츠를 구매, 다운로드 및 스트리밍할 수 있는 플랫폼이다. | |
22 | SSH | 인증 및 데이터 전송에 보안 채널 | 1863 | MSN | Microsoft의 온라인 서비스 플랫폼으로, 사용자에게 다양한 온라인 서비스를 제공한다. | |
23 | TELNET | 다른 컴퓨터나 장비에 접속해서 관리하는데 사용됩니다. | 5500 | VNC Server | 원격 컴퓨터를 제어하기 위한 프로토콜 및 소프트웨어입니다. | |
25 | SMTP | 이메일 전송 | 3306 | MySQL | 다양한 언어 및 플랫폼에서 지원되며, 웹 애플리케이션 및 소프트웨어 시스템에서 널리 사용됩니다. | |
53 | DNS | 쿼리와 응답 메시지를 전송하는 데 사용됩니다. | 3389 | Terminal Server | Windows Terminal | |
80 | HTTP | WEB | 3724 | World of Warcraft | 블리자드 엔터테인먼트가 개발하고 운영하는 대규모 멀티플레이어 온라인 롤 플레잉 게임입니다. | |
139 | NetBIOS | 파일 및 디렉토리의 공유, 세션 제어 및 기타 서비스에 사용 됩니다. | 6112 | Battle.net | 블리자드 엔터테인먼트에서 운영하는 온라인 게임 플랫폼 및 커뮤니티입니다. | |
443 | HTTPS | 웹 서버와 클라이언트 간의 통신을 암호화 하는 보안 프로토콜 입니다. | 2483 | Oracle DB | 오라클이 개발한 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 이것은 대규모 엔터프라이즈 수준의 데이터베이스 솔루션으로, 기업의 데이터 관리 및 처리 요구를 충족시키는 데 사용됩니다. Oracle Database는 안정성, 확장성, 성능 및 보안성을 갖춘 데이터베이스 솔루션으로 전 세계적으로 많은 기업들이 사용하고 있습니다. |
끝
'시스템, 네트워크 보안' 카테고리의 다른 글
시스템 / 네트워크 보안 [일곱 번째 시간 정리] (4) | 2024.03.15 |
---|---|
시스템 / 네트워크 보안 [여섯 번째] (5) | 2024.03.13 |
시스템 / 네트워크 보안 [네 번째 정리] (2) | 2024.03.08 |
시스템 / 네트워크 보안 [세 번째 정리] (0) | 2024.03.07 |
시스템 / 네트워크 보안 [두 번째 정리] (10) | 2024.03.06 |