2023. 2. 11. 21:06ㆍ카테고리 없음
Security
Survillance: 보안 관제, 전산 시스템을 모니터링하고 문제가 있으면 이를 해결한다.
software security: 안랩이 이에 해당한다.
system security: 하드웨어나 OS를 만드는 회사에서 이를 처리한다.
Network security: 방화벽과 같은 네트워크 보안 장비를 의미한다.
Computer Security
CIA(Confidentiality, Integrity, Availability): 컴퓨터 시스템이 갖춰야하는 특징
Confidentiality: 기밀성
Integrity: 무결성, 데이터/시스템이 처음 만들어진 이후에 변조되지 않는 것을 의미한다.
Availability: 가용성, 서비스가 중단되지 않는 것
Security Problem
기술적으로 완벽한 시스템은 없다.
보안과 관련해서 주요한 단어들이 존재한다. Vulnerability는 취약점을 의미한다. 패스워드를 아는 사용자 또한 취약점이 될 수 있다. 기술적으로도 취약점이 있을 수 있다. 취약점을 공격할 수 있는 부분을 Threat, 실제로 공격한 것을 attack이라 한다. Adversary는 공격한 사람을 의미한다. 취약점을 공격하는 것을 방어하는 것을 Countermeasure라고 한다.
Security Services
위의 세 가지가 가장 중요하다. 시스템마다 요구하는 특징들이 달라지게 된다.
Authentication은 인증을 의미한다. 홍채인식, 지문인식 등이 이에 해당한다. 이는 적법한 인증인지를 확인하는 절차이다.
Access Control은 적법한 인증을 받은 뒤 접근 권한이 어떤지를 제어하는 것이다.
Nonrepudiation은 부인을 방지하도록 하는 보안을 의미한다. 예를 들어 돈을 빼서 다른 사람에다가 송금할 때 부인하는 것을 방지하도록 로그를 남기는 것들 등이 이에 해당한다.
Cracker's Basic Steps
어태커가 공격을 하기 위한 스텝을 의미한다. access control에서 로그인을 한 뒤, root 권한을 얻는 것은 어려운 일이 아니다. 이후 루트 권한을 확보한 뒤에 나중에도 들어와서 사용할 수 있는 백도어를 심어놓기도 한다.
하드웨어 보안: 하드웨어를 사용할 수 있게끔 먼저 인증 절차를 밟는 것이다.
BIOS 보안: PC를 켜면 펌웨어 단위에서 패스워드를 입력하고 들어가는 것을 의미한다.
세션 보안: 사무실과 같이 조금 큰 단위에서 세션을 나눠서 처리할 수 있도록 한다.
인증을 의미한다. 인증을 위해서는 패스워드를 가장 먼저 고려해볼 수 있다. CHAP은 패스워드를 양쪽이 가지고 있고, 한쪽이 계산한 뒤 보내서 동일한지 처리하는 방식을 의미한다.
패스워드를 단순하게 입력하는 대신 다양한 인증 방법을 사용하기도 한다.
Authorization은 access control과 동일한 의미이다. 파일 시스템에서의 퍼미션을 의미한다. 이를 위해 Access control lists나 Capabilities를 두는 것은 이에 해당한다. 사용자별로 파일을 두기에 access control lists를 많이 사용한다.
File System Security
유닉스/리눅스를 기준으로 설명한다. 이는 보안에 취약하기에 더 잘 관리해야한다.
윈도우즈는 GUI이지만 유닉스/리눅스는 커맨드로 입력한다. 커맨드가 기본적으로는 path라는 환경변수를 만들어서 처리할 수 있다. current도 .으로 두어서 사용할 수 있다. 옛날에는 이를 활용한 공격도 있었다. 따라서 이를 조심히 관리해야한다.
기타 대응책으로 이를 사용해서 파일 시스템의 보안을 관리해야한다.
파일시스템 보안보다 더 중요하다. 파일시스템은 적법한 사용자가 들어와서 접속하는 반면 네트워크 보안은 허가되지 않은 사용자가 로그인을 시도하기에 더 중요하다. 네트워크 레벨에서 안전하지 않은 프로토콜을 사용하지 않는 것이 중요하다. 특히 HTTPS를 사용하는 것이 더 중요하다. IPv4에서는 네트워크 레벨에서의 IPsec(보안o)이 필수가 아니다. 그렇기에 그 윗 레이어에서 ssh, tls 등을 사용한다.
유닉스/리눅스 기반의 서버는 어떤 IP address에서 접속한 것에서만 허락할 수 있도록 하는 설정이다.
별도의 장비를 사용해서 보안을 하는 것이 firewall이다. 이상한 패킷은 걸러내고 적법한 패킷만 허가하는 식으로 진행한다. 학교에서는 수업과 무관한 내용에 대해 막는 식으로 진행한다.
DMZ는 각 회사의 인트라넷에서 웹을 연결하기 위해서 사용할 때 DMZ에 연결해서 사용하는 영역을 의미한다.
패킷이 계속 들어올 때 이게 침입인지, 아닌지 확인하는 것이 Intrusion Detection을 의미하고 이를 아예 원천 봉쇄하는 것이 Intrusion Prevention을 의미한다.
서버와 같은 호스트 기반인 경우 H-IDS, 네트워크 기반인 경우에는 N-IDS를 의미한다. 방화벽을 어디에 달아두냐에 따라 이게 달라진다.
인공지능/딥러닝이 이 분야에서 잘 체크할 수 있다.
WIPS는 예를 들어 특정 지역에 가면 인터넷 커낵션이 끊어지는 곳이 있다. 이때 사용하는 장비를 의미한다.
각 용어에 대해 잘 익혀놔야한다. pass
Security Threats
피지컬 threats: 자연재해와 같이 지진, 홍수, 불 등등을 의미한다.
로지컬 threats: 일반적으로 우리에게 더 중요하다. 컴퓨터 소프트웨어로부터 발생하는 취약점을 의미한다. 버그로 인한 취약점/이를 공격하는 어택은 없어질 수 없으니 이를 잘 신경써야한다.
operational threats: 관리자가 실수로 취약점을 만드는 것이다.
Denial of service: 컴퓨터 자원을 낭비하는 등에 의해 발생하는 취약점이다.
Attacks
Virus/Worm: 혼자서는 독립적으로 실행할 수 없고, 기생해서 퍼지는 식으로 진행된다. 이를 악성 코드(Malware)라고 하낟.
Trojan horses: 트로이 목마처럼 악성코드를 소프트웨어를 속여서 깔게 한다.
Logic bomb: 관리자가 심어놓은 함정이다.
Trap door: 백도어와 같이 뒷 쪽으로 들어오는 것이다.
Dictionary attacks: 브루트 포스 등으로 패스워드를 끊어내는 것이다. 요즘은 거의 불가능하다.
login spoofing: 코인원 -> 패스워드 입력하도록 유도 -> 피싱 사이트
Malware: 악성코드로 이 중에 중요한 정보에 대한 것은 Spyware라 한다. 주요 정보를 암호화해서 돈을 요구하는 것은 랜섬 웨어를 의미한다.
Keystroke logger: 사용자가 치는 것을 모두 전달하는 것이다.
Code injection: Malware를 컴퓨터 시스템에 주입하는 것을 의미한다.
The Morris Internet worm
코넬대의 모리스가 최초로 스스로 복제하는 프로그램인 worm을 만들었다. 이는 첫 악성코드(malware)이다. finger 서비스는 사용자의 정보를 모두 보여주는 것이다. 하지만 이는 버그가 있었고, 이를 활용해 worm 프로그램을 주입시킨 뒤, 이를 다른 곳에 퍼트리는 식으로 하는 것이다. 유닉스가 모두 마비됐었다.
finger 서비스에 버퍼 오버플로우가 가능했고, 이 취약점을 이용한 취약점이다.
Buffer overflow
사용자가 커맨드라인으로 입력한 것을 실행시킬 때 이를 카피한 뒤 화면에 출력해서 처리하는 것을 의미한다. B의 범위가 제한되어있는데, 1024보다 더 크게 입력을 하게 되면 해당 코드에서 문제가 발생한다.
A 함수를 호출하면 스택에 return address가 스택에 들어간다. 그 뒤, local address와 변수가 사용된다. 하지만 이때 1024보다 넘는 것을 입력하면 이 범위를 넘어선다. 이를 잘 계산해서 처리하면 (c) code segment로 리턴되도록 하지 않고 내가 입력한 곳으로 jump를 하도록 한다. 이때 악성 프로그램이 실행되도록 하여 이를 하도록 했다.
코딩을 할 때 돌아가는 소프트웨어가 아니라 secure coding을 하는 것이 중요하다. 만약 어레이 바운드 체킹을 했으면 이러한 문제를 해결할 수 있었을 것이다.
host A는 host B에 접근이 가능하다. 이때 Cracker가 HostA를 Denial of Service attack을 보내서 이를 처리하지 못하도록 한다. 이후 Cracker가 HostB에게 접속해서 처리하도록 한다. 이처럼 IP 어드레스를 속이는 것을 IP spoofing이라 한다.
Denial of service
Internal attacks
서비스가 불가능하도록 만드는 것이다. 프로세스를 무한히 만들어서 시스템을 다운시키는 방식이다.
external attacks: 패킷을 보내는 것이다. 동일한 소스에서 오면 이를 discard해서 감지할 수 있지만 DDOS는 이를 감지할 수 없다.
Basic concept of Cryptography
암호학을 의미한다. 여기서의 cryptography는 적어도 알고 있어야하는 내용이다.
암호학의 두 종류
Shared key cryptography(symmetric cryptography)
암호화와 복호화를 동일한 키를 가지고 처리한다.
Public key cryptography(asymmetric cryptography)
두 개의 키를 가지고 암호화와 복호화를 한다. 하나는 암호화, 하나는 복호화를 사용하는 것이다.
Shared key cryptography(symmetric cryptography)
암호화할 대상을 동일한 shared key로 암호화하고, 이 키를 가지고 있는 사람들은 모두 복호화를 해서 처리할 수 있다. 다만 어떻게 둘 사이에 Shared key cryptography를 처리하느냐가 중요하다. 이를 처리하는 알고리즘을 알아야하는데, 이를 DES(Data Encryption Standard), 지금은 AES(Advanced Encryption Standart)라고 한다.
Public key cryptography(asymmetric cryptography)
개인별로 나만 알고 있는 private key, 다른 사람들도 모두 아는 public key를 가지고 있다. public key로 암호화를 하고, 해당 private key를 가지는 사람만 이를 복호화해서 해석할 수 있다.
두번째로는 자기 자신의 private key로 암호화를 한다. 이러면 이를 해독할 수 있는 사람은 그 사람의 public key를 가지는 사람들은 모두 해석할 수 있다. 이때는 해당 Cipher-text를 만들 수 있는 것은 자기 자신만 할 수 있도록 하는 의미를 가진다.
이는 인증 측면에서 적용된다. RSA가 가장 유명하고 임베디드용인 ECC가 존재하다.
이는 shared보다는 계산량이 많기에 오버헤드가 매우 크게 된다. 따라서 작은 데이터에 대해 암호화/복호화를 할 때 사용한다. 장문의 데이터는 shared를 사용한다.
TLS/SSL
웹브라우저가 웹서버와 통신할 때에는 동일한 shared key를 가진다. 이때 shared key를 공유하기 위해 위와 같이 sender가 AES key를 생성하고, 이후 웹서버를 구동시키는 public key를 이용해서 암호화한다. 이후 클라이언트는 private key로 이를 복호화하여 사용하게 된다. 중간에 패킷을 가로챌수는 있지만 클라이언트의 private key를 모르기에 이를 사용할 수 없다.
이 방법이 표준에 정의된 방식이다. 따라서 private key를 잘 관리하는 것이 관건이다.
Digital Signiture
Clear text는 중요한 문장이 들어가있다. ex) 누구에게 100만원을 보내~ -> 이를 hash를 사용해 데이터 양을 줄이고, 이를 private key로 암호화를 한 뒤 원문과 함께 보낸다. 은행에서는 A의 퍼블릭 키를 사용해서 이를 복호화하고 해시 값을 역으로 계산해서 clear text와 비교해본다. 만약 이때의 값과 clear text가 동일하면 변조되지 않았음을 의미한다.
결국은 clear text가 변조되지 않았다는 것을 강조하는 integrity service가 된다. 공인인증서에는 우리의 private key가 디렉토리 내에 저장되어있다. 이를 암호화를 이용해서 저장한다. pw를 이용해서 private key가 저장되어있다.
VPN
데이터를 주고 받게할 떄 소프트웨어로 전용선을(private network) 깔아주는 것을 의미한다. 이를 private network처럼 보이게 한다는 특징이 있다. 암호화와 복호화의 작업을 통해 VPN을 구현할 수 있다.