Coffee Chat Brewing AI Knowledge

eng kor

정보 보안 3: 여러가지 정보 보안 용어

  • 스미싱 (Smishing): SMS를 이용해 사용자 개인 정보를 빼내는 수법.
  • 스피어 피싱 (Spear Phising): 정상적인 메일로 위장한 메일을 지속저긍로 발송해, 본문 링크나 첨부 파일을 클릭하도록 유도해 사용자 개인 정보를 탈취하는 공격.
    • 사회 공학의 한 기법
  • APT (Advanced Persistent Threats; 지능형 지속 위협): 조직적으로 기업이나 조직 네트워크에 침투해 거점을 마련한 뒤, 떄가 오면 보안을 무력화하고 정보를 수집해 외부로 빼돌리는 식의 공격.
  • 무작위 대입 공격 (Brute Force Attack): 암호화된 문서의 암호키를 찾기 위해 모든 값을 대입하여 공격하는 방법.
  • 크리덴셜 스터핑 (Credential Stuffing): 공격자가 확보한 로그인 자격 증명을 다른 계정에 무작위로 대입해 사용자 계정을 탈취하는 무차별 대입 공격.
  • 큐싱 (QShing): QR코드를 통해 악성 프로그램을 설치하도록 하는 금융사기 기법.
    • QR코드와 Fishing의 합성 신조어.
  • WEP (Wired Equivalent Privacy; 유선급 프라이버시): 유선 랜(LAB)에서 기대할 만한 보안 및 프라이버시 수준의 무선 랜(WLAN) 보안 프로토콜.
  • WPA2 (Wi-Fi Protected Access 2): 무선 랜 보안 기술 규격. WEP의 취약성의 대안으로 발표되었고, IEEE 802.11i 표준을 수용하지 않은 WPA를 개선한 버전.
  • EDR (Endpoint Detection & Response): 엔드포인트 영역을 지속적으로 모니터링해 행위 기반 위협 탐지 및 분석, 대응 기능을 제공하는 솔루션.
    • 엔드포인트: 요청의 시작점. 사용자의 PC 및 스마트폰이나 서비스의 종착점인 서버를 말함.
  • TMS (Threat Management System): 전사 IT 인프라에 대한 위협 정보를 수집, 분석, 경보, 관리하는 정보보호 통합관리 시스템. 실시간으로 공신력 있는 대외 정보보호기관의 위혐 정보를 수집 및 분석하여 관리자에 제공.
  • DTLS (Datagram Transport Layer Security): UDP를 기반으로 통신을 수행하는 경우 SSL/TLS와 유사한 보안 기능을 제공하는 프로토콜

정보 보안 2: 여러 보안 솔루션과 보안 공격

보안 솔루션 (Security Solution)

컴퓨터 시스템, 네트워크, 데이터의 보안을 강화하기 위해 사용되는 기술, 소프트웨어, 하드웨어, 정책 및 절차의 집합.

침입 방지 시스템

  • 침입 방지 시스템 (IPS; Intrusion Prevention System): 비정상적 트래픽을 차단 및 격리하는 등 방어 조치하는 보안 솔루션.
    • 침입 방지 시스템 = 방화벽 + 침입 탐지 시스템
    • 침입 탐지 시스템으로 패킷을 검사 → 비정상적 패킷이 탐지되면 → 방화벽으로 해당 패킷을 차단
  • 침입 탐지 시스템 (IDS; Intrusion Detection System): 시스템의 비정상적 사용, 오용, 남용 등을 실시간으로 탐지하는 시스템.
    • 오용 탐지 (Misuse Detection): 미리 입력해 둔 공격 패턴이 감지되면 알림
    • 이상 탐지 (Anomaly Detection): 평균적인 시스템의 상태와 다른, 비정상적 행위나 자원 사용이 감지되면 알림
  • 방화벽 (Firewall): 기업이나 조직 내부의 네트워크로 들어오는 정보를 선별하여 수용, 거부, 수정하는 기능을 하는 침입 차단 시스템.
    • 내부 네트워크에서 나가는 패킷은 통과시키고, 외부에서 내부로 들어오는 패킷은 내용을 체크하여 인증된 패킷만 통과시킴.
  • 웹 방화벽 (Web Firewall): 웹 서버에 특화된 방화벽.
    • 일반 방화벽이 탐지하지 못하는 웹 기반 공격(SQL 삽입 공격, XSS 등)을 방어할 목적으로 만들어짐.
    • 웹 기반 공격을 감시하고, 사전 차단해 줌.

보안 관련 규격 및 대책

  • AAA (3A): 컴퓨터 자원 접근에 대한 처리와 서비스를 제공하는 기반 구조 또는 규격
    • Authentication (인증): 접근하는 사용자의 신원을 검증하는 기능. 로그인 요청 시 정보를 확인하고 접근 권한을 검증하는 보안 절차.
      • 지식 기반 인증 (Something You Know): 패스워드, i-Pin 등
      • 소유 기반 인증 (Something You Have): 신분증, 메모리 카드, 스마트 카드, OTP 등
      • 행위 기반 인증 (Someting You Do): 서명, 동작 등
      • 생체 기반 인증 (Something You Are): 지문, 홍채/망막, 얼굴, 음성, 정맥 등
      • 위치 기반 인증 (Somewhere You Are): GPS, IP, Callback 등
    • Authorization (인가): 신원이 검증된 사용자에게 특정 권한과 서비스를 허용하는 기능.
    • Accounting (과금): 사용자가 이용한 서비스, 사용한 자원량 등을 기록 및 보관하는 기능.
  • ISMS (Information Security Management System; 정보보호 관리 체계): 정보 자산을 보호하기 위한 절차와 대책.
    • 조직에 맞는 정보보호 정책을 수립하고, 위험에 상시 대응하는 여러 보안 대책을 통합 관리 및 운용함.
    • 한국에서는 한국인터넷진흥원(KISA)에서 ISMS를 평가하고 이증하는 사업을 운영하고 있음.

그 외 보안 솔루션

  • DLP (Data Leakage/Loss Prevention; 데이터 유출 방지): 내부 정보가 외부로 유출되는 것을 방지하는 보안 솔루션.
    • 사내 직원의 PC와 네트워크 상의 모든 정보를 검색하고, 메일, 메신저, 웹하드, 프린터 등의 사용자 행위를 탐지 및 통제함으로써 외부 유출을 사전 방지함.
  • VPN (Virtual Private Network; 가상 사설 통신망): 통신 사업자의 공중 네트워크와 암호화 기술을 이용해, 전용 회선을 사용하는 것처럼 만드는 보안 솔루션.
    • SSL VPN: PC에 VPN Client 프로그램을 설치하여 VPN 서버에 접속하는 방식. 암호화를 위해 SSL 프로토콜을 사용.
    • IPSec VPN: VPN 서버가 설치된 각 네트워크를 서로 연결하는 방식. 암호화를 위해 IPSec 프로토콜을 사용.
  • NAC (Network Access Control): 네트워크에 접속하는 PC의 MAC 주소를 IP 관리 시스템에 등록하고, 일관된 보안 관리를 하는 보안 솔루션.
    • 내부 PC의 소프트웨어 사용 현황을 관리하여, 불법적인 소프트웨어 설치를 방지.
  • SIEM (Security Information and Event Management): 로그 및 보안 이벤트를 통합 관리하는 빅 데이터 기반의 보안 솔루션.
    • 방화벽, IDS, IPS, VPN 등에서 발생한 로그 및 보안 이벤트를 통합 관리, 비용 및 자원 절약
    • 장기간의 로그 및 보안 이벤트를 수집 및 검색할 수 있는 빅데이터 기반의 통합 로그 수집 시스템
  • SSH (Secure SHell; 시큐어 셸): 다른 컴퓨터에 원격 접속하여 작업할 수 있도록 다양한 기능을 지원하는 프로토콜.
    • 데이터 암호화, 강력한 인증 방법으로 안전하게 통신할 수 있음.
    • 키(key)를 통한 인증 방법을 사용하려면 사전에 클라이언트의 공개키를 서버에 등록해야 함.
    • 기본적으로는 22번 포트를 사용함.


보안 공격 (Security Attack)

시스템의 취약점을 이용하여 무단 접근, 데이터 훼손, 정보 도용 등을 시도하는 악의적인 행위입니다.

서비스 거부 공격 (DoS; Denial of Service)

대량의 데이터를 한 서버에 집중적으로 전송하여, 해당 서버의 정상적인 기능을 방해하는 보안 공격. 표적인 서버의 자원을 고갈시키기 위해 행해짐.

  • Ping of Death: Ping 명령을 전송할 때 패킷의 크기를 허용 범위 이상으로 하여, 공격 대사의 네트워크를 마비시키는 방법.
    • 원리: 공격 패킷은 수백 개의 패킷으로 분할되어 타겟 서버에 전송됨. 타겟 서버는 분할된 대량의 패킷을 받아 재조립해야 하고, 각 패킷의 ICMP Ping 메시지에 대해 응답하느라 시스템이 다운되게 됨.
  • SMURFING (스머핑): IP나 ICMP의 특성을 악용해, 대량의 데이터를 한 사이트에 집중적으로 보내어 네트워크를 불능으로 만드는 방법.
    • 방지 방법: 네트워크 라우터에서 브로드캐스트 주소를 사용할 수 없게 미리 설정.
  • SYN Flooding: 공격자가 가상의 클라이언트로 위장하여 TCP의 3-way-handshake 과정을 중단시킴으로써 타겟 서버가 정상적 서비스를 수행하지 못하게 하는 방법.
    • 원리: TCP(Transmission Control Protocol)는 신뢰성 있는 전송을 위해 3-way-handshake를 거친 후 데이터를 전송하는데, 이 과정이 중단되면 서버가 데이터를 전송하지 못하고 대기 상태에 놓이게 됨.
  • TearDrop: 패킷 분할 순서 정보를 나타내는 Offset값을 변경시켜 수신 측의 과부하를 발생시키는 방법.
    • 원리: 데이터 송/수신 시 패킷의 크기가 크면 패킷을 분할해서 전송함. 이 때 분할 순서를 알 수 있는 Fragment offset 값을 함께 전송함. 이 값을 변경시킴으로써 패킷 재조립 시 오류를 발생시키고, 시스템을 다운시킴.
  • LAND Attack (Local Area Network Denial Attack): 패킷 전송 시 송/수신 IP 주소를 모두 타겟의 IP 주소로 하여 전송함으로써 타겟이 스스로 무한히 응답하게 하는 방법.
    • 원리: 송/수신 IP 주소가 모두 자신이면, 자신이 수신 받은 패킷에 대한 응답을 자신에게 보내게 됨. 이런 패킷이 계속 전송되면 무한히 응답하게 됨.
    • 방지 방법: 송/수신 주소가 같은 패킷을 사전 차단.
  • DDoS (Distributed Denial of Service): 분산된 공격 지점에서 한 곳의 타겟 서버에 대해 DoS 공격을 수행하는 것.
    • 네트워크가 취약한 호스트를 여럿 탐색한 후, 이들에 DDoS 공격 툴(Daemon)을 설치해 에이전트로 만든 후 DDoS 공격에 이용.
    • Daemon (데몬): 에이전트(Agent) 역할을 하도록 설계된 프로그램. 종류로는:
      • Trin00: 최초 형태의 데몬, 주로 UDP Flooding 공격을 수행
      • TFN (Tribe Flood Network): UDP Flooding 외에도 TCP SYN Flooding, ICMP 응담 요청, SMURFING 등을 수행
      • TFN2K: TFN의 확장판
      • Stacheldraht: 이전 툴들의 기능 유지 + 공격자, 마스터, 에이전트가 쉽게 노출되지 않게 암호화된 통신 수행. 툴이 자동 업데이트 됨.

그 외 보안 공격

  • 세션 하이재킹 (Session Hijacking): 접속 중인 클라이언트와 서버 사이의 세션 정보를 가로채는 공격 기법. 접속을 위한 인증을 거치지 않고 가로챈 세션을 이용해 원래의 클라이언트로 위장하여 타겟 서버의 자원 및 데이터를 무단으로 사용.
    • TCP 세션 하이재킹: TCP 3-way-handshaking 과정에 끼어들어 클라이언트-서버 간 동기화된 시퀀스 번호를 가로채어, 타겟 서버에 무단으로 접근.
  • 타이포시쿼팅 (Typosquatting): 기존 유명 도메인과 유사한 도메인을 미리 등록하는 것. 사용자들이 사이트 접속 시 주소를 잘못 입력하는 실수를 이용함.
    • URL 하이재킹(URL Hijacking)이라고도 함.
  • 키로거 공격 (Key Logger Attack): 사용자의 키보드 움직임을 탐지해 중요 개인 정보를 빼가는 해킹 공격.
  • 워터링 홀 (Watering Hole): 사용자가 자주 방문하는 웹 사이트를 사전 감염시켜, 해당 사이트에 방문했을 때 악성 코드에 감염되게 하는 웹 기반 공격. 감염된 PC를 통해 사용자가 속한 중요 시스템에 접근하거나, 불능으로 만들 수도 있음.
  • ARP 스푸핑 (ARP Spoofing): ARP의 취약점을 이용해 자신의 MAC를 타겟의 것으로 변조하여, 타겟에 도달할 데이터 패킷을 가로채거나 전송을 방해하는 기법.
  • 스니핑 (Sniffing): 네트워크 중간에서 남의 패킷 정보를 도청하는 수동적 공격.
  • 랜섬웨어 (Ransomware): 사용자의 컴퓨터에 잠입해 문서나 파일 등을 암호화해 사용자가 열지 못하게 하는 프로그램. 암호 해독을 조건으로 돈을 요구하기도 함.
  • 사회 공학 (Social Engineering): 인간 사이 신뢰를 바탕으로 사람들을 속여 정상 보안 절차를 깨트리기 위한 비기술적 시스템 침입 수단.
  • 다크 데이터 (Dark Data): 활용되지 않고 저장만 되어 있는 대량의 데이터로, 저장 공간 낭비 뿐만 아니라 보안 위험을 초래할 수 있음.
  • 백도어 (Back Door, Trap Door): 시스템 설계자가 액세스 편의를 위해 시스템 보안을 제거하여 만들어 놓은 비밀 통로로, 컴퓨터 범죄에 악용될 수 있음.
    • 백도어 탐지 방법: 무결성 검사, 열린 포트 확인, 로그 분석, SetUID 파일 검사 등

정보 보안 1: 보안 요소와 기법, 암호화

소프트웨어 보안 요소

소프트웨어 개발 시 충족시켜야 할 보안의 3대 요소로 기밀성, 무결성, 가용성이 있습니다.

  • 기밀성 (Confidentiality): 인가된 사용자만 시스템 내 데이터에 접근할 수 있다.
  • 무결성 (Integrity): 인가된 사용자만 데이터를 수정할 수 있다.
  • 가용성 (Availability): 인가된 사용자는 데이터를 언제든지 사용할 수 있다.

보안 요소를 지키기 위한 행위로는:

  • 인증 (Authentication): 데이터를 사용하려는 사용자가 합법적인지를 확인하는 모든 행위로, 패스워드, 인증 카드, 지문 검사 등의 방법이 있습니다.
  • 부인 방지 (NonRepudiation): 데이터를 송/수신한 사람이 그 사실을 부인할 수 없게 증거를 제공하는 행위.

Secure SDLC

SDLC(소프트웨어 개발 생명 주기)에 보안 강화를 위한 프로세스를 포함하는 것을 말합니다. Secure SDLC의 방법론으로는:

  • CLAPS: SDLC의 초기 단계에서 보안을 강화하기 위한 방법론
  • SDL: MicroSoft에서 안전한 SW 개발을 위해 기존 SDLC를 개선한 것
  • Seven Touchpoints: SW 보안의 모범 사례를 SDLC에 통합한 방법론

Secure Coding

SW 구현 단계에서 발생할 보안 취약점을 최소화하기 위해 보안 요소들을 고려하며 코딩하는 것입니다. 보안 취약점에 사전 대응하여 안정성과 신뢰성을 확보할 수 있습니다. 이를 위해 보안 정책을 바탕으로 시큐어 코딩 가이드를 작성하고, 개발자들은 시큐어 코딩 교육을 받습니다.

보안 기능

보안 점검 내용 중 ‘보안 기능’은 SW 구현 단계에서 인증, 접근 제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목입니다:

  • HTTPS (Hypertext Transfer Protocol Secure): 웹 브라우저와 서버 간 안전한 통신을 위해 HTTP와 암호 통신 규약을 결합한 것
  • SSL (Secure Sockets Layer): TCP/IP 계층과 애플리케이션 계층(HTTP, TELNET, FTP 등) 사이에 위치해 인증, 암호화, 무결성 등을 보장하는 업계 표준 프로토콜
  • Hard-coding: 데이터를 코드 내부에 직접적으로 프로그래밍하는 방식

보안 약점

소프트웨어 시스템의 설계나 구현에서 발생하는 결함 또는 허점으로, 이를 통해 악의적인 공격자가 시스템에 침입하거나 데이터를 훼손할 수 있는 취약점을 의미합니다.

보안 약점의 종류와 방지법

  • SQL 삽입 (SQL Injection): 웹 응용 프로그램에 SQL을 삽입하여 DB 서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회하는 보안 약점
    • 방지: 입력 데이터 내 예약어나 특수문자를 필터링하도록 설정
  • 크로스사이트 스크립팅 (XSS): 웹 페이지에 스크립트를 삽입하여 방문자의 정보를 탈취하거나, 비정상적인 기능을 유발하는 보안 약점
    • 방지: HTML 태그가 스크립트에 사용되지 않도록 아예 사용을 제한하거나, ‘<’, ‘>’, ‘&’ 등의 문자를 다른 문자로 치환
  • 메모리 버퍼 오버플로: 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리 범위 밖에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점
    • 방지: 메모리 버퍼의 적절한 크기를 설정, 설정된 범위의 메모리 내에서 자료에 접근하도록 조치
  • 하드코드된 암호화 키: 암호화가 된 키도 하드코드된 경우 유출 시 역계산이나 무차별 대입 공격에 의해 탈취될 수 있습니다.
    • 방지: 상수 형태의 암호키 사용 배제, 암호화 키 생성 모듈이나 안전한 외부 공간 이용

스택 가드 (Stack Guard)

스택에서 발생하는 보안 약점을 막는 기술 중 하나입니다. 스택은 주소를 저장하는 데 사용되는데, 널 포인터 역참조와 같은 보안 약점이 발생할 수 있습니다.

  • 메모리상에서 프로글매의 복귀 주소와 변수 사이에 특정 값을 저장한 후, 그 값이 변경되었을 경우 오버플로우 상태로 판단, 프로그램 실행을 중단함으로써 잘못된 복귀 주소의 호출을 막습니다.

접근 제어자

프로그래밍 언어에서 특정 개체를 선언할 때 외부로부터의 접근을 제한하기 위해 사용되는 예약어입니다. | 접근 제어자 | 클래스 내부 | 패키지 내부 | 하위 클래스 | 패키지 외부 | | ——– | :——: | :——: | :——-: | :——: | | Public | O | O | O | O | | Protected | O | O | O | X | | Default | O | O | X | X | | Private | O | X | X | X |


암호화 (Encryption)

데이터를 인가되지 않은 접근으로부터 보호하기 위해 특정 알고리즘을 사용하여 평문(Plaintext)을 암호문(Ciphertext)으로 변환하는 과정입니다. 암호화된 데이터는 올바른 암호 해독 키 없이 이해할 수 없으며, 이는 정보의 기밀성과 무결성을 유지하는 데 중요한 역할을 합니다.

암호화의 주요 요소

  • 평문 (Plaintext): 암호화되기 전의 원본 데이터
  • 암호문 (Ciphertext): 암호화된 후의 데이터
  • 암호화 알고리즘 (Encryption Algorithm): 데이터를 암호화하는 데 사용되는 규칙과 절차
  • 키 (Key): 암호화 및 복호화에 사용되는 비밀 값

개인키 암호화 기법 (Private Key Encryption)

암호화와 복호화에 동일한 키를 사용하는 암호화 기법입니다. 대칭 암호 기법, 단일키 암호화 기법이라고도 합니다.

  • 특징: 암호화/복호화 속도가 빠름, 관리할 키의 수가 많음
  • 유형: 스트림 암호화 방식, 블록 암호화 방식
    • 스트림 암호화: 평문과 동일한 길이의 스트림을 생성하여, 비트 단위로 암호화하는 방식
      • 종류: TKIP, LFSR, RC4
    • 블록 암호화: 데이터 블록을 하나씩 암호화하는 방식
      • 종류: DES, AES, IDEA, Skipjack, SEED, ARIA

TKIP (Temporal Key Integrity Protocol)

WEP(무선 랜 보안 프로토콜)의 취약성을 보완한 데이터 보안 프로토콜입니다.

  • 입력 키 길이 128비트, 패킷 당 키 할당, 키값 재설정 등 키 관리 방식을 개선

DES (Data Encryption Standard)

1975년 미국 NBS에서 발표한 개인키 암호화 알고리즘입니다.

  • 블록 크기 64비트, 키 길이 56비트, 16회 라운드 수행
  • 3DES (Triple DES): DES를 3번 적용해 보안을 강화한 알고리즘

AES (Advanced Encryption Standard)

2001년 미국 표준 기술 연구소(NIST)에서 발표한 개인키 암호화 알고리즘입니다. DES의 한계를 개선하기 위해 공모 후 발표되었습니다.

  • 블록 크기 128비트, 키 길이에 따라 AES-128, 192, 256으로 분류

IDEA (International Data Encryption Algorithm)

스위스의 Lai와 Messey가 1990년에 개발한 PES를 개선한 알고리즘입니다.

  • 블록 크기 64비트, 키 길이 128비트

Skipjack

국가 안전 보장국(NSA)에서 개발한 개인키 암호화 알고리즘으로, 클리퍼 칩(Clipper Chip)dlfksms IC 칩에 내장되어 있습니다.

  • 블록 크기 64비트, 키 길이 80비트
  • 주로 음성 통신 장비에 삽입되어 음성 데이터를 암호화

공개키 암호화 기법 (Public Key Encryption)

공개키(Public Key)는 사용자에게 공개, 비밀키(Secret Key)는 관리자가 비밀리에 관리하는 암호화 기법입니다. 공개키는 암호화 시, 비밀키는 복호화 시 사용되는 키입니다. 비대칭 암호 기법이라고도 합니다.

  • 특징: 암호화/복호화 속도가 느림, 관리할 키의 수가 적음
  • 종류: RSA 등

RSA (Rivest Shamir Adleman)

1978년 MIT의 Rivest, Shamir, Adleman이 제안한 공개키 암호화 알고리즘으로, 큰 수를 소인수분해 하기 어렵다는 것에 기반하여 만들어 졌습니다.

해시 (Hash)

입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것을 의미합니다. 해시 알고리즘을 해시 함수라고 합니다.

  • 해시 값: 해시 함수로 변환된 값이나 키
  • 종류: SHA 시리즈, MD4, MD5, N-NASH, SNEFRU, HAVAL 등
    • SHA 시리즈: 1993년 미국 국가안보국(NSA)이 설계하고, 표준 기술 연구소(NIST)가 발표한 해시 함수입니다. SHA-0, SHA-1에 이어 SHA-2로 일컬어지는 SHA-224, SHA-256, SHA-384, SHA-512가 발표되었습니다.
    • MD5 (Message Digest algorithm 5): 1991년 R.Rivestrk MD4를 대체하기 위해 고안한 암호화 해시 함수입니다.
      • 블록 크기 512비트, 키 길이 128비트
    • N-NASH: 1989년 일본 전신전화주식회사(NTT)가 발표한 암호화 해시 함수입니다.
      • 블록 크기 128비트, 키 길이 128비트
    • SNEFRU: 1990년 R.C.Merkle가 발표한 해시 함수입니다. 32비트 프로세스에서 구현을 용이하게 하기 위해 개발되었습니다.

운영체제와 프로세스

운영체제 (OS; Operating System)

컴퓨터 시스템의 자원을 효율적으로 관리하고, 컴퓨터 사용을 편리하고 효과적으로 사용할 수 있는 환경을 제공하는 프로그램의 모임

  • 컴퓨터 사용자와 하드웨어 간 인터페이스로 동작하는 시스템 소프트웨어의 일종
  • 컴퓨터 자원 관리: 프로세서, 기억장치 , 입출력장치, 파일, 정보 등
  • 운영체제의 목적:
    • 처리 능력 (Throughput): 일정 시간 내 처리하는 일의 양
    • 반환 시간 (Turn Around Time): 작업 의뢰부터 처리 완료까지 걸린 시간
    • 사용 가능도 (Availability): 필요할 때 즉시 사용 가능한 정도
    • 신뢰도 (Reliability): 문제를 정확하게 해결하는 정도

UNIX

1960년대, AT&T 벨 연구소, MIT, General Eletric이 공동 개발한 운영체제

  • 시분할 시스템 (Time sharing system)을 위해 설계됨. 대화식 운영체제
  • 대부분 C로 작성: 이식성 및 장치/프로세스 간 호환성 높음
  • 트리 구조의 파일 시스템
  • 시스템 구성:
    • 커널 (Kernel): 핵심 부분. 하드웨어 보호 및 프로그램과 하드웨어 간 인터페이스 역할.
      • 여러가지 기능 수행: CPU 스케줄링, 기억장치, 파일, 입출력 등 관리 및 프로세스 간 통신, 데이터 전송
    • 쉘 (Shell): 명령어 해석기. 사용자 명령을 인식하고 수행. 시스템과 사용자 간 인터페이스 역할.

LINUX

1991년 리누스 토발즈 (Linus Torvalds)가 UNIX를 기반으로 개발한 운영체제

  • 소스 코드가 무료로 공개됨
  • 대부분의 특징이 UNIX와 동일

Andriod

구글에서 개발한 LINUX 커널 기반의 개방형 모바일 운영체제

  • 모든 코드가 공개된 개방형 소프트웨어
  • Java와 Cotlin으로 애플리케이션 작성

Secure OS

기존 운영체제의 보안 취약점을 해소하기 위해 보안 기능이 있는 커널을 이식하여 외부 침입으로 부터 시스템 자원을 보호하는 운영체제.

  • 보안 커널(kernel): 보안 기능을 갖춘 커널. TCB (Trusted Computing Base)를 기반으로 참조 모니터 개념이 구현되었음.
  • 기능: 식별 및 인증, 임의적/강제적 접근 통제, 객체 재사용 보호, 완전한 조정, 신뢰 경로 감사, 감사 기록 축소 등


기억장치 관리

반입 (Fetch)

보조기억장치에 보관 중인 프로그램/데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략

  • 요구 반입 (Demand fetch): 실행 중인 프로그램이 특정 프로그램/데이터의 참조를 요구할 때 적재하는 방법
  • 예상 반입 (Anticipatory fetch): 실행 중인 프로그램에 의해 참조될 프로그램/데이터를 예상하여 적재하는 방법

배치 (Placement)

새로 반입되는 프로그램/데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략

  • 최초 적합 (First fit): 적합한 크기의 빈 영역 중 첫 번째 분할 영역에 배치하는 방법
  • 최적 적합 (Best fit): 적합한 크기의 빈 영역 중 단편화를 가장 작게 남기는 분할 영역에 배치하는 방법
  • 최악 적합 (Worst fit): 적합한 크기의 빈 영역 중 단편화를 가장 많이 남기는 분할 영역에 배치하는 방법

가상기억장치 (Virtual Memory)

보조기억장치의 일부를 주기억장치처럼 사용하는 것. 주기억장치는 용량이 작은데, 마치 큰 용량인 것처럼 사용하는 기법.

  • 원리: 프로그램을 블록으로 나누어서 가상기억장치에 보관, 프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리함.

구현 방법

  • 페이징 (Paging): 가상기억장치 내 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 주기억장치에 적재시키는 방법
    • 페이지 (Page): 프로그램을 일정한 크기로 나눈 단위
    • 페이지 프레임 (Page frame): 페이지 크기로 일정하게 나눠진 주기억장치의 단위
  • 세그멘테이션 (Segmentation): 가상기억장치 내 프로그램을 다양한 크기의 논리적 단위로 나눈 후 주기억장치에 적재시키는 방법
    • 세그먼트 (Segment): 프로그램을 논리적 크기 (배열, 함수 등)로 나눈 단위. 각 세그먼트는 고유한 이름과 크기를 가짐.

페이지 교체 알고리즘

페이지 부재 (Page fault) 발생 시 어떤 페이지 프레임을 선택하여 교체할 것인지 결정하는 기법: 페이지 부재가 발생하면 가상기억장치에서 필요한 페이지를 찾아 주기억장치에 적재해야 하는데, 주기억장치의 모든 페이지 프레임이 사용 중인 경우가 있다.

  • OPTimal replacment (OPT; 최적 교체): 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법.
    • Belady가 제안했음. 페이지 부재가 가장 적게 발생하는 효율적 방법.
  • FIFO (First In First Out): 가장 오래 있었던 페이지를 교체하는 기법.
    • 각 페이지가 주기억장치에 적재된 시각을 기억해야 함.
  • LRU (Least Recently Used): 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법.
  • LFU (Least Frequently Used): 사용빈도가 가장 적은 페이지를 교체하는 기법.

구역성 (Locality)

프로세스가 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론. 스레싱 (Thrashing) 방지를 위한 워킹 셋 (Working set) 이론의 기반이 되었음.

  • 시간 구역성 (Temporla locality): 프로세스가 한 페이지를 일정 시간 동안 집중적으로 액세스하는 현상.
  • 공간 구역성 (Spatial locality): 프로세스가 일정 위치의 페이지를 집중적으로 액세스하는 현상.

워킹 셋 (Working Set)

프로세스가 일정 시간 동안 자주 참조하는 페이지의 집합. 자주 참조되는 워킹 셋을 주기억장치에 상주시키면 페이지 부재 및 페이지 교체 수가 줄어들어 프로세스의 기억장치 사용이 안정됨.

스래싱 (Thrashing)

프로세스 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상.

  • 다중 프로그래밍 시스템이나 가상기억장치 사용 시스템에서 프로세스 하나를 수행하는 중 페이지 부재가 자주 발생함. 이것으로 시스템 성능이 저하됨.


프로세스 (Process)

“실행 중인 프로그램”. 다양한 정의:

  • 프로시저가 활동 중인 것.
  • 프로세서에 의해 처리되는 프로그램. 프로세서가 할당되는 실체. 디스패치(dispatch)가 가능한 단위.
  • 실기억장치에 저장된 프로그램.
  • 비동기적 행위를 일으키는 주체.
  • 운영체제가 관리하는 실행 단위. PCB를 가진 프로그램.
    • PCB (Process control block; 프로세스 제어 블록): 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
    • PCB에 저장된 정보: 프로세스의 현 상태, 포인터, 프로세스 고유 식별자, CPU 레지스터 정보, 주기억장치 관리 정보, 입출력 상태, 계정 정보

프로세스 상태 전이

프로세스가 시스템 내 존재하는 동안 상태가 변하는 것.

state

  • 디스패치 (Dispatch): 준비 (Ready) 상태인 프로세스가 프로세서를 할당받아 실행 (Run) 상태로 전이되는 과정 (Ready → Run)
  • Wake Up: 입출력이 완료되어 대기 (Wait/Block) 상태인 프로세스가 준비 (Ready) 상태로 전이되는 과정 (Wait/Block → Ready)
  • 스풀링 (Spooling): 입출력할 데이터를 직접 입출력 장치에 보내지 않고 이후 한 번에 입출력하기 위해 디스크에 저장하는 과정
    • 효과: 입출력장치 공유, 입출력 속도 보완, 다중 프로그래밍 시스템 성능 향상

스레드 (Thread)

시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위. 프로세스 내에서의 작업 단위. 프로세스의 일부 특성을 갖고 있어 경량 프로세스 (Light weight process)라고도 함.

스케줄링 (Scheduling)

프로세스가 생성되어 실행될 때 필요한 시스템의 자원을 해당 프로세스에 할당하는 작업.

비선점 (Non-preemptive) 스케줄링

이미 할당된 CPU를 다른 프로세스가 강제로 뺏을 수 없는 스케줄링 기법. 일괄 처리 방식에 적합.

  • FCFS (First Come First Service; 선입 선출=FIFO): 준비 상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법.
  • SJF (Shortest Job First; 단기 작업 우선): 준비 상태 큐 내 프로세스 중 실행시간이 가장 짧은 프로세스에 CPU를 먼저 할당하는 기법.
    • 가장 적은 평균 대기 시간을 제공하는 최적 알고리즘.
  • HRN (Highest Response-ratio Next): 대기 시간과 서비스(실행) 시간을 통해 우선순위를 계산하여, 우선순위가 높은 것부터 스케줄링하는 기법.
    • 우선순위 = (대기 시간 + 서비스 시간) / 서비스 시간

선점 (Preemptive) 스케줄링

우선순위가 높은 프로세스가 이미 할당된 CPU를 빼앗아 사용할 수 있는 스케줄링 기법. 빠른 응답시간이 요구되는 대화식 시분할 시스템에 적합.

  • 종류: RR, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등
  • RR (Round Robin): 각 프로세스를 시간 할당량 (time slice, quantum) 동안만 실행한 후, 실행이 완료되지 않으면 다음 프로세스에 CPU를 넘겨주는 기법.
    • 시분할 시스템 (time sharing system)을 위해 고안된 방식. 할당 시간이 작으면 작은 프로세스에게 유리.
    • 할당 시간이 큰 경우 FCFS와 같아지고, 할당 시간이 작으면 문맥 교환 및 오버헤드가 자주 발생하여 신속한 작업 처리가 불가함.
  • SRT (Shortest Remaining Time): 현재 실행 중인 프로세스의 남은 시간과 준비 상태 큐에 새로 도착한 프로세스의 실행 시간을 ㅣㅂ교하여, 가장 짧은 시간을 요구하는 프로세스에게 CPU를 넘기는 기법.
    • (+) 시분할 시스템에 유용. (-) 준비 상태 큐 내 프로세스의 실행 시간을 추적 보유해야 하므로 오버헤드가 증가함.

교착상태 (Dead Lock)

둘 이상의 프로세스들이 자원을 점유한 상태에서, 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상.

교착상태 발생의 필요 충분 조건

  • 상호 배제 (Mutual Exclusion): 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 함.
  • 점유와 대기 (Hold and Wait): 자원을 점유하고 있으면서 다른 프로세스에 의해 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함.
  • 비선점 (Non-preemption): 프로세스에 할당된 자원은 강제로 빼앗을 수 없음.
  • 환형 대기 (Circular Wait): 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어, 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함.

교착상태 해결 방법

  • 예방 (Prevention): 교착상태 발생 전 시스템을 제어하는 방법. 위 4가지 조건 중 하나를 제거함.
  • 회피 (Avoidance): 교착상태가 발생하면 적절히 피하는 방법. 대표적으로 은행원 알고리즘 (Banker’s Algorithm)이 사용됨.
  • 발견 (Detection): 교착상태가 발생했는지, 어떤 프로세스와 자원이 교착상테에 있는지 점검/발견하는 방법.
  • 회복 (Recovery): 교착상태를 일으킨 프로세스를 종료하거나 할당된 자원을 선점함으로서 프로세스나 자원을 회복하는 방법.


환경 변수와 OS 명령어

환경 변수 (Environment Variable)

시스템 소프트웨어의 동작에 영향을 미치는 동적인 값의 모임. 변수명과 값으로 구성됨.

  • Windows의 set, UNIX/LINUX의 set, env, printenv, setenv 를 입력하면 모든 환경변수와 값을 출력함.

Windows 기본 명령어

  • dir 현재 디렉터리 파일 목록 표시 / cd 동일 드라이브 내에서 디렉터리의 위치를 변경 / md 디렉터리 생성
  • copy 파일 복사 / del 파일 삭제 / ren 파일 이름 변경 / type 파일 내용 표시 / move 파일 이동
  • cls 화면 내용 삭제
  • attrib 파일 속성 변경 / find 파일에서 문자열을 찾음
  • chkdsk 디스크 상태 점검 / format 디스크 표면을 트랙과 섹터로 나누어 초기화


UNIX/LINUX 기본 명령어

  • cat 파일 내용 표시

chmod

파일의 사용 허가를 지정. 8진법 숫자를 이용하여 파일의 보호 모드를 설정함.

  • 파일의 권한을 10자리로 표현:

명령 내용 Windows UNIX/LINUX
파일 내용 표시 cat type
파일 복사    
파일 삭제    
파일 찾기    
파일 이동    
     
디렉터리 생성    
디렉터리 삭제    
디렉터리 위치 변경    

소프트웨어/하드웨어 관련 여러 기술들

소프트웨어 (SW) 관련 신기술

  • 블록체인 (Blockchain): P2P (Peer-to-Peer) 네트워크를 이용하여 온라인 금융 거래 정보를 온라인 네트워크 참여자 (Peer)의 디지털 장비에 분산 저장하는 기술
  • 매시업 (Mashup): 웹에 제공된 정보/서비스를 이용해 새로운 SW나 서비스, DB 등을 만드는 기술. 여러 콘텐츠를 조합하여 하나의 서비스로 제공하는 웹 사이트 또는 애플리케이션.
  • SOA (Service Oriented Architecture; 서비스 지향 아키텍쳐): 기업의 소프트웨어 인프라인 정보시스템을 공유/재사용이 가능하도록 서비스나 컴포넌트 단위로 구축하는 IT 아키텍쳐.
    • SOA 기반 애플리케이션 구성 계층: Presentation, Biz-Process, Service Intermediary, Application, Persistency
  • 디지털 트윈 (Digital Twin): 현실 속 사물을 SW로 가상화한 모델. 실제 자산의 특성에 대한 정확한 정보를 얻을 수 있음.
  • 그레이웨어 (Grayware): 목적은 악의적이지 않으나, 사용자 입장에서는 유용할 수도, 악의적일 수도 있는 SW(애드웨어, 트랙웨어, 악성 코드 등).
  • QKD (Quantum Key Distribution; 양자 암호키 분배): 양자 통신을 위해 비밀키를 분배 및 관리하는 기술. 두 시스템이 비밀키를 안전하게 공유하기 위해 QKD 시스템을 설치하여 운용하는 방식으로 활용됨.
  • SaaS (Software as a Service; 서비스형 소프트웨어): SW의 여러 기능 중 사용자가 요구하는 서비스만 이용할 수 있도록 만든 SW.
  • 시맨틱 웹 (Semantic Web): 컴퓨터가 사람을 대신하여 정보를 이해하고 가공할 수 있도록 만들어진 차세대 지능형 웹.
  • RIA (Rich Internet Application): 플래시 애니메이션 기술과 웹 서버 애플리케이션 기술을 통합, HTML보다 인터랙티브한 웹 페이지를 제공하는 신개념 플래시 웹 페이지 제작 기술.

하드웨어 (HW) 관련 신기술

  • N-Screen: N개의 단말기에서 동일한 콘텐츠를 이용할 수 있는 서비스.
  • Thin Client PC: 하드디스크 등 장치 없이 기본적인 메모리만 갖추고 서버와 네트워크로 운용되는 개인용 컴퓨터. 서버 기반 컴퓨팅과 관계됨.
  • M-DISC (Milennial DISC): 한 번의 기록만으로 자료를 영구 보관할 수 있는 광 저장장치. 디스크 표면에 레이저를 이용해 자료를 조각하여 기록.
  • MEMS (Micro-Electro Mechanical Systems): 반도체 제조 기술을 바탕으로 sensor, actuator 등 기계 구조를 미세 가공하여 전기계적 동작을 할 수 있도록 한 초미세 장치.
  • Memrisor: Memory + Resister, 전류의 방향과 양 등 기존의 경험을 모두 기억하는 특별한 소자.
  • TrustZone Technology: 하나의 프로세서 내에서 일반 구역 (normal world)과 보안 구역 (secure world)을 분할하여 관리하는 HW 기반 보안 기술. 칩 설계 회사인 ARM에서 개발.

RAID (Redundant Array of Independent Disk)

여러 개의 하드디스크로 디스크 배열을 구성하고, 파일을 구성하는 데이터 블록들을 서로 다른 디스크에 분산 저장/다중화하는 저장 기술. 기술에 따라 레벨로 구분됨.

  • RAID 0 (스트라이핑; Striping): 디스크를 병렬로 연결, 디스크 개수만큼 용량과 속도가 배로 증가함. 하나의 디스크만 순상되어도 전체 데이터가 파손됨.
  • RAID 1 (미러링; Mirroring): 같은 데이터를 다른 디스크에 동일하게 복사하는 방식.
  • RAID 2-4: 디스크 하나에 오류 정정 부호를 비트(RAID 2), 바이트(RAID 3), 워드(RAID 4) 단위로 저장하고, 나머지 디스크는 RAID 0과 같이 활용. 디스크가 하나 손상되어도 정상 가동이 가능하여 안정적. 최소 3개의 디스크가 필요함.
  • RAID 5: 오류 정정 부호를 여러 디스크에 블록 단위로 분산 저장한 방식. 디스크가 하나 손상되어도 정상 가동이 가능하여 안정적. 최소 3개의 디스크가 필요함.
  • RAID 6: RAID 5와 원리는 같으나 오류 정정 부호를 2개 저장하는 방식. 디스크 두 개가 손상되어도 정상 가동 가능, 최소 4개의 디스크가 필요함.

데이터 베이스 (DB) 관련 신기술

  • 하둡 (Hadoop): 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼.
    • 더그 커팅과 마이크 캐퍼렐라가 개발.
    • 구글의 MapReduce 엔진을 사용함.
    • 일반 PC급 컴퓨터들로 가상화 대형 스토리지를 형성하고, 거대한 데이터셋을 병렬로 처리할 수 있게 개발된 자바 소프트웨어 프레임워크.
  • MapReduce: 대용량 데이터를 분산 처리하기 위해 개발된 프로그래밍 모델. Map → Reduce 작업 순차적 수행.
    • Map 작업: 데이터를 연관성 있는 데이터 분류로 묶는 작업.
    • Reduce 작업: 중복 데이터를 제거하고 원하는 데이터를 추출하는 작업.
  • 데이터 마이닝 (Data Mining): 빅데이터를 분석하여 내재된 변수 간 상호관계를 규명하여 패턴을 찾아내는 기법.
  • 타조 (Tajo): Apache Hadoop 기반의 분산 데이터 웨어하우스 프로젝트.
  • OLAP (Online Analytical Processing): 다차원 데이터로부터 통계적 정보를 분석하여 의사결정에 활용하는 방식.
    • OLAP 연산: Roll-up, Drill-down, Drill through, Drillacross, Pivoting, Slicing, Dicing
  • 브로드 데이터 (Broad Data): 소비자와 상호 작용을 통해 생성된 데이터.
    • 기업 마케팅에 효율적이고 다양함. 이전에 알지 못해 새롭거나 기존 데이터에 새로운 가치가 더해진 데이터.

net_top

네트워크 관련 신기술

  • 메시 네트워크 (Mesh Network): 특수 목적을 위한 새로운 네트워크 기술로, 대규모 디바이스 네트워크 생성에 최적화됨. 차세대 이동통신, 홈 네트워킹, 공공 안전 등에 사용.
  • 피코넷 (PICONET): 여러 독립된 통신 장치가 블루투스나 UWB 통신 기술을 사용해 통신망을 형성하는 무선 네트워크.
  • 애드-혹 네트워크 (Ad-Hoc Network): 고정된 유선망을 구축할 수 없는 경우(재난 현장 등) 모바일 호스트만을 이용해 구성 가능한 네트워크.
  • 파장 분할 다중화 (WDM; Wavelength Division Multiplexing): 광섬유를 이용한 통신기술로, 파장이 다른 복수의 신호를 보내 여러 단말기가 동시에 통신 회선을 사용할 수 있게 하는 기술.
  • 소프트웨어 정의 데이터 센터 (SDDC; Software Defined Data Center): 내부 모든 자원을 가상화하여, 소프트웨어 조작만으로 관리/제어 되는 데이터 센터. 여기서 소프트웨어란 컴퓨팅, 네트워킹, 스토리지, 관리 등의 모든 개념을 아우름.
  • 개방형 링크드 데이터 (LOD; Linked Open Data): Linked Data와 Open Data의 합성어로, 누구나 사용할 수 있게 웹에 공개된 연계 데이터. 웹에 존재하는 데이터를 개별 URI로 식별하고, 각 URI에 링크 정보를 부여하여, 상호 연결된 웹을 지향하는 모형
  • IoT (Internet of Things; 사물 인터넷): 실세계와 가상 사계의 다양한 사물들을 인터넷으로 연결하여 진보된 서비스를 제공하기 위한 서비스 기반 기술.
  • 클라우드 컴퓨팅 (Cloud Computing): 중앙 컴퓨터에 자원을 두고, 인터넷이 가능한 단말기를 사용해, 시공간 제약 없이 인터넷을 통해 컴퓨터 작업을 수행할 수 있는 가상화된 환경.
  • USN (Ubiquitous Sensor Network): 정보를 각종 센서를 통해 무선으로 수집할 수 있게 구성한 네트워크. 부착한 RFID 태그를 통해 사물의 인식 정보와 주변 환경 정보를 탐지해 네트워크로 이 정보를 관리함.
  • SSO (Single Sign On): 한 번의 로그인으로 모든 사이트를 이용할 수 있게 해주는 시스템. 개인은 각 사이트마다 개인정보를 일일이 기록하지 않아도 되고, 기업은 회원 통합 관리를 통해 마케팅 효과를 극대화할 수 있다는 장점이 있음.