목록기타 CS 이론/IT Security (10)
만족
전자서명 전자적 데이터에 서명자에 대한 인증을 추가하는 것 비대칭 키를 이용해 서명할 때 개인키로 서명하고 공개키로 검증한다. => 서명: Signiture(M, 개인키) => 검증: Verify(S, 공개키) 따라서 서명은 본인만 할 수 있지만 검증은 공개키를 알고있는 모두가 할 수 있다. 전자서명: 해시 => 서명: Signiture(M, 개인키) => 검증: Verify(S, 공개키) 에서 M이 원본 메시지 그대로에 서명하는 것은 아니다. 메시지를 Hash해서 Hash(M)값에 대해 서명한다. 그러므로 더 정확하게는 => 서명: Signiture(Hash(M), 개인키) 가 맞다. 전자서명: 알고리즘 대표적으로 RSA알고리즘을 사용한다. RSA암호화와 기본 개념은 동일하지만, 여기에서 목적은 서명과..
암호화를 통해 복호화 키를 가지지 않은 사람은 메시지의 원문을 확인하지 못하게 할 수 있다. 대칭키 암호화 대칭키 암호화는 암호화 키와 복호화 키가 같은 암호화 방식을 발한다. 대칭키 암호화는 대표적으로 DES 암호화가 있다. https://yjshin.tistory.com/entry/%EC%95%94%ED%98%B8%ED%95%99-%EB%8C%80%EC%B9%AD%ED%82%A4-%EC%95%94%ED%98%B8-DESData-Encryption-Standard [암호학] 대칭키 암호 - DES(Data Encryption Standard) 데이터 암호화 표준 DES(Data Encryption standard) 1. 개요 DES는 대칭형 암호(비밀키 암호)이다. 즉, 암호화 및 복호화 키가 동일하다..
포맷 스트링 공격은 버퍼 오버플로우 공격과 매우 유사하다. 포맷 스트링 int main(){ char* buf= "str"; printf("%s", buf); } 위와 같이 %s 와 같이 출력 서식을 지정하는 문자를 포맷 스트링이라고 한다. 조금 특이한 %n에 대해서 알아볼 것이다. int main(){ int n; printf("hahaha%n", &n); } %n은 현재까지 출력된 바이트 수를 지정한 변수에 넣는다. 여기에서 %n 전에 출력된 문자열은 hahaha로 6byte이므로, n에 6이 들어간다. %n은 값을 4byte크기로 쓰기작업을 하는데, 만약 2byte만 쓰기에 사용하고 싶을 경우 %hn을 사용한다. 포맷 스트링 공격 원리 만약 printf에서 포맷 스트링을 사용하고 추가 인자를 넘겨주..
Cucoo's Egg 뻐꾸기는 직접 새끼를 기르지 않고 다른 새의 둥지에 알을 옮겨 그 새가 키우게 한다. 그것처럼 다른 시스템에 프로그램(뻐꾸기 알)을 옮겨두고 추후 실행되었을 때 공격자가 원하는 동작을 하게 하는 공격 방법이다. 공격자는 대상 시스템의 Shell 권한 취득을 목적으로 한다. 공격자는 Shell 권한을 취득하기 위해, Shell을 실행시키는 코드를 작성하고 대상 시스템의 취약점이 있는 프로그램을 찾아낸 후, 그 프로그램에 강제로 오류를 일으켜 시스템이 공격자의 프로그램을 실행시키게 만든다. 어떻게 이것이 가능한가? 하나씩 알아보자. 리눅스/유닉스의 계정 먼저 리눅스/유닉스 시스템에서 사용하는 주요 보안 개념에 대해 알아보자. 리눅스에서는 사용자 타입이 "일반 사용자/루트 사용자" 두 가..
HTTP Protocol 웹 상에서 정보를 주고받기 위한 프로토콜이다. 클라이언트가 요청(request)을 보내고, 서버가 응답(response)을 보낸 후 종료되는 프로토콜로 무상태성(Stateless)의 특성을 갖으며, 평문으로 통신한다. 통신 보안을 위해 현재는 Secure layer(SSL/TLS)가 추가된 HTTPS도 많이 사용된다. HTTP: Request GET, POST, PUT, PATCH, DELETE 등 HTTP Method를 가지며, 각 메서드 별 역할이 정의되어 있다. https://developer.mozilla.org/ko/docs/Web/HTTP/Methods HTTP 요청 메서드 - HTTP | MDN HTTP는 요청 메서드를 정의하여, 주어진 리소스에 수행하길 원하는 행동..
방화벽 내/외부를 지나는 패킷들에 일정한 규칙을 기준으로 차단하거나 허용하는 시스템을 말한다. 방화벽은 접근 제어, 로깅과 감시추적, 인증, 데이터의 암호화 등의 역할을 한다. 방화벽: 패킷 필터 룰셋을 정의하여 해당 규칙에 맞는 패킷만 통과시키는 방법이다. 외부IP 외부PORT 내부IP 내부PORT 동작 External Any 192.168.0.2 80 Allow Any Any Any Any Deny 이 경우 외부에서 192.168.0.2:80으로 들어오는 패킷만 허용하고 나머지는 전부 허용하지 않는다. 패킷 필터는 패킷 상태에 대한 정보가 없으며, TCP 연결을 볼 수 없으므로 Boink, Teardrop 공격을 방어할 수 없다. 상태성 패킷 필터는 패킷에 상태를 추가하여, 연결 상태를 저장하고 연결..
SSID 브로드캐스팅 우리가 스마트폰으로 사용할 때 손쉽게 주변의 와이파이 리스트를 확인할 수 있다. 이 때 표시되는 와이파이의 이름이 SSID인데, 이는 AP가 주기적으로 자신의 SSID를 브로드캐스트하기 때문이다. 보안이 중요하다면 브로드캐스팅하지 않고, 사용자가 직접 입력해 들어올 수 있도록 한다. WEP(Wired Equivalent Privacy) AP 접속 시 WEP Key를 요구하는 방법. 웹키는 40~128비트 키를 사용하며, 만약 64비트 이하의 웹키라면 무선 랜 스니핑을 통해 30분 정도에 웹키 복호화가 가능하다. WPA(WiFi Protected Access) 와 WPA-PSK(Pre-Shared Key) 처음 연결 시 WEP Key를 이용해 통신하고, 이후 주기적으로 공유키를 재설정..
Sniffing 주로 유선 연결된 네트워크 상에서 다른 시스템이 보내는 내용을 엿보는 방법. 만약 허브 환경이라면 모든 패킷이 모든 네트워크 구성원에게 전달되므로, 이 때 랜카드의 promisicuos 모드를 활성화하면 패킷 필터링 기능이 해제되어 모든 정보를 들여다볼 수 있게 된다. 시스템에 꽂힌 랜카드들은 IP주소와 MAC주소를 통해 전송받은 패킷을 필터링해, 자신을 대상으로 하는 패킷만 받아들인다. 그러나 스위치 환경에서는 이런 필터링 방식이 스위치에서 이루어지기 때문에 스니핑을 위해 다른 방법을 사용한다. Sniffing: with Switch 스위치에는 MAC 테이블이 존재하므로, 들어온 패킷에 대해 목적지 MAC이 몇번 포트에 해당하는 네트워크인지를 알 수 있다. 이 때, ARP 프로토콜을 악..