정보처리기사

[정보처리기사] SW개발 보안 구현

hminor 2023. 6. 29. 16:07
반응형

보안 설계 정리

  • 기무가
    • 기밀성
    • 무결성
    • 가용성
  • 정보 보안의 AAA
    • Authentication (인증)
    • Authorization (인가, 권한부여)
    • Accounting (계정관리)
  • 정보보안의 거버넌스
    • 기밀성, 무결성, 가용성이 잘 유지될 수 있도록
    • 거버넌스 종류(크기 순)
      • 기업 거버넌스
      • IT 거버넌스
      • 정보보안 거버넌스
    • 정보보안
      • 관리적 (보안 정책)
        • ISMS - 전체적인 보안
        • PIMS - 개인정보 보안
        • ISMS-P - 둘다 합친 것
        • ITSec - 유럽
        • TCSec - 미국
        • CC - 국제 표준
      • 기술적 (암호화, 시큐어 코딩)
        • OWASP
          • OWASP Top 10
          • 시큐어 코딩
            • OWASP Top 10 기준 대로 우리나라 KISA에서 개발해라는 것
          • 시큐어 코딩 가이드 종류 (입보시 에코캡아
            • 입력 데이터 검증 및 표현
            • 보안 기능
            • 시간 및 상태
            • 에러 처리
            • 코드 오류
            • 캡슐화
            • API 오용
          • 시큐어 SDLC (보안 생명주기)
            • CLASP - 개발 초기부터 적용 가능, 현재 시스템에도 적용 가능
            • MS-SDL - MS 사
            • Seven Touch Point - 보안 모범 사례
          • 장애 지표
            • RP - 장애 발생 후 실제 업무 기능 복구까지의 걸린 시간
            • RPO - 장애 허용 데이터
            • RTO - 장애 허용 시간
            • MTD - 업무가 안되는 허용 시간
          • 백업
            • 전체 백업: 완전 전체
            • 차등 백업: 전체 백업 이후 모든 데이터
            • 증분 백업: 전체 백업 이후 차등 백업 이후의 데이터
            • 합성 백업: 전체 + 증분 백업

암호 알고리즘

  • 용어
    • 평문
    • 암호문
    • 암호화
    • 복호화
    • 전자 서명:
      • 송신자는 개인키로 메시지를 서명하여 전달
      • 수신자는 송신자의 공개키를 이용해서 서명값 검증
    • 양방향 암호화
    • 단방향 암호화: 비밀번호와 같은 경우에 사용 (hash)
  • 암호 방식에 따른 분류
    • 양방향 암호화
      • 대칭키: 많은 양, 빠른 속도
        • block
          • DES: 64bit 블록, 56bit 암호화 키, 16Round, Feisetel 암호 방식(교차 방식)
          • 3DES: DES 를 3개로 둔 것. (암→ 복 → 암)
          • AES: 128bit 평문 → 128, 192, 256bit로 암호화, 키 크기에 따라 10, 12, 14 Round SPN 암호 방식 사용 → 덩어리 채 내려서 암호, 치환, 암호 … 이렇게 함
          • SEED: 국내 기술, 128, 256 bit 대칭 키 블록 암호 알고리즘
          • ARIA: 국내 기술, AES 알고리즘과 똑같이 암호화키 지원.
          • IDEA: 스위스에서 만들어진 PES를 개량해서 만들어진 블록 암호 알고리즘 현재 가장 안전하다고 여겨짐. SPN & Feistel의 중간 형태
          • SKIPJACK: 미국의 NSA에서 개발한 Clipper 칩에 내장되는 블록 알고리즘
        • stream: XOR 연산
          • LFSR
          • RC4
          • A5
      • 비대칭키 적은 양, 느린 속도, 키 분배/관리 용이
        • 인수분해: RSA, RR
        • 이산대수: Diffie-Hellman, Elgamel, KCDSA
        • 타원곡선: ECC: 이산대수와 타원곡선을 같이 사용
    • 단방향 암호화 (무결성): 암호화는 가능하지만 평문으로 복호화는 할 수 없다.
      • Hash
        • 해시 함수 특성
          • 역상 저항성: 해시 값이 주어졌을 때 해시 값으로 입력값을 알아내는 것이 불가능
          • 제 2역상 저항성: 특정 입력 값과 동일한 해시 값을 가지는 다른 특정 입력 값을 찾을 수 없어야 한다.
          • 충돌 저항성: 해시 값이 같은 두 개를 찾을 수 없다는 특성
          • 🎈여기서 제 2역상 저항성충돌 저항성의 차이
            • 제 2역상 저항성은 특정 입력 값으로 해시 값을 알 수 있지만
            • 충돌 저항성은 특정 입력 값으로 해시 값을 알 수 없다는 의미인 듯.
        • MDC
          • SHA
            • 미국 국가안보국(NSA)이 설계했으며 미국 국가 표준으로 지정
            • 종류
              • SHA-0, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512(나는 이거 사용 했음)
          • MD5: 128bit 암호학 해시 함수, MD4를 대체하기 위해 나옴
            • SSL 인증서를 변조하는 것이 가능해서 사용 X
          • HAS-160: 국내 표준 전자서명 알고리즘인 KCDSA(비대칭키 이산대수, 한국)에 사용되는 160bit 암호학적 해시 함수
        • MAC
          • HMAC
    • 암호학적 해시 함수의 결점
      • 무차별 대입 공격(Brute-Force Attack): 해시 함수는 빨라서 무차별적으로 대입하는 공격
      • RainBow Table 공격: 테이블에 평문을 대입해 보면서 암호 발견하는 공격
    • 암호학적 해시 함수의 보완
      • 키 스트레칭(Key Stretching)
        • 해시 암호화를 여러 번 반복하여 암호학적 문제가 발생하는 점을 줄일 수 있다.
        • 무차별 대입 공격을 방지하는 효과가 있다.
      • 솔팅 (Salting)
        • 데이터 앞/뒤에 임의의 값을 넣어 해시값을 만듦.
          • ex) { a: a, b: b} → { a/lol: a`, a/fifa: a``} 로 만들어주는 것.
        • Rainbow Talbe 공격을 방지하는 효과가 있다.
    • 전자 우편 보안
      • 개념
        • 바이러스 프로그램이 첨부되어 전송
        • 메일 서버의 취약성을 이용해 시스템에 침입
      • 암호화 프로토콜 종류
        • PGP
          • Phil Zimmermann이 개발
          • 스위스에서 만든 IDEA와 RSA 알고리즘을 조합해 만듦
          • 별도의 인증기관 없이 Key Ring을 이용해 공개키를 인증
        • PEM
          • PGP와 같이 메시지의 내용을 암호화하고, 특정 키가 있어야만 내용 확인 가능
        • S/MIME
          • MIME에 전자서명과 암호화를 더한 형태로, RSA 암호시스템을 이용
        • DKIM
          • 메일 발신자가 발송 정보를 위장할 수 없도록 하는 기술 표준
  • 코드 오류
    • 코드의 유형
      • 순차 코드 (Sequence Code)
        • 자료의 발생순, 크기순 등 코드화 대상 항목을 일정한 순서에 의해 일련번호를 부여하는 코드
        • ex) 교실 내의 학생들의 번호
      • 블록 코드 (Block Code)
        • 코드화할 대상이 갖는 공통 특징을 중심으로 항목들을 별도의 집단으로 분류하고, 한 집단 안에서 순서대로 코드를 부여
        • ex) 시/군/구
      • 10진 코드
        • 10진수 형태로 표현한 코드
      • 그룹 분류 코드
        • 대상 항목에 대한 분류 기준에 따라 대분류, 중분류, 소분류 등 각 분류별로 번호를 순서적으로 부여하는 코드
        • ex) 대분류코드-중분류코드-소분류코드
      • 연상 코드
        • 코드 대상의 명칭과 관계있는 문자, 숫자, 약어를 코드의 일부로 사용해 어떤 대상을 의미하는지 쉽게 파악할 수 있게 만든 코드
        • ex) TV_2023_06
      • 표의 숫자 코드
        • 코드화 대상 항목의 중량, 면적, 용량 등의 물리적 수치를 이용해 만든 코드
        • ex) 30-50-120 (길이, 너비, 용량)
      • 합성 코드
        • 두 개 이상의 코드를 조합하여 만든 코드 방식
    • 코드의 오류 발생 형태
      • 생략 오류 (Omission Error)
        • 입력 시 한 자리를 빼놓고 기록한 경우
        • ex) 1234 → 123
      • 필사 오류 (Transcription Error)
        • 입력 시 임의의 한 자리를 잘못 기록한 경우
        • ex) 1234 → 1235
      • 전위 오류 (Transposition Error)
        • 입력 시 좌우 자리를 바꾸어 기록한 경우
        • ex) 1234 → 1243
      • 이중 오류 (Double Transposition Error)
        • 전위 오류가 두 가지 이상 발생한 경우
        • ex) 1234 → 2143
      • 추가 오류 (Addition Error)
        • 입력 시 한 자리 추가로 기록한 경우
        • ed) 1234 → 12345
      • 임의 오류 (Random Error)
        • 위의 오류가 두 가지 이상 결합하여 발생한 경우
        • ex) 1234 → 12367, (필사 오류 & 추가 오류)