소프트웨어 개발보안 구축

컴클로딩·2022년 5월 6일
0

정보처리기사

목록 보기
3/5
post-thumbnail

1. 소프트웨어 보안 취약점과 보안 약점

구분소프트웨어 보안 약점소프트웨어 보안 취약점
정의- 소스코드에 존재하는 잠재적 위험- 보안 약점 중 침해 사고로 연결되는 위험
- 보안 약점은 취약점을 포함함
사례시스템 개발단계의 보안 리스크- 시스템 운영/유지보수 단계의 보안 리스크
해결방안- 정적분석, 시큐어코딩- 동적분석방식, 테스팅, 웹스캔, 화이트해커

  • 보안 취약점 표기 방법
    • CVE-2000-0234
      1. CVE : CVE(Common Vulnerability Exposure)접두사
      2. 2000 : 해당년도
      3. 0234 : 취약점 번호
  • CWE(Common Weakness Enumeration) : 일반적으로 널리 통용되는 소프트웨어의 주요 약점, 보안상의 문제들을 분류하여 놓은 목록들을 의미
  • CVE(Common Vulnerability Exposure) : 공개적으로 알려진 컴퓨터 보안 결함 목록들을 의미

2. 암호화 알고리즘

암호화 알고리즘 : 치환, 전치, 혼합, 블록화, 확장, 압축등과 같은 원리를 이용해서 평문을 암호문으로 만드는 과정

구분대칭키 알고리즘비대칭키 알고리즘
키의 상호관계암호화키 = 복호화키암호화키 ≠ 복호화키
암호화 키비밀키공개키
복호화 키비밀키개인키
비밀키 전송여부필요불필요
키 관리복잡(모든 전송 당사자 간 암/복호화키 공유)단순(인증기관을 통해 전송 당사자 별 개인키 발급)
안전한 인증곤란용이
암호화 속도고속저속
경제성높음낮음
부인방지여부불가능(대칭키로 인하여)가능(키의 2원화)
속도빠름느림
구현방식블록, 스트림 암호화소인수분해, 이산대수, 근저백터
적용알고리즘DES, 3DES, SEED, AES, IDEARSA, ECC
장점구현용이, 변형가능암호해독이 어려움, 전자서명
단점쉽게 해독, 키 관리의 어려움해독시간이 많이 걸림

구분대칭키 알고리즘비대칭키 알고리즘
이미지대칭키 알고리즘비대칭키 알고리즘

2-1. 대칭키 암호화 종류

대칭키 암호화 종류에는 스트림 암호블록 암호가 있음.

구분스트림 암호(Stream Cipher)블록 암호(Block Cipher)
개념- 하나의 bit, 또는 바이트 단위로 암호화- 여러 개의 Bit를 묶어 블록 단위로 암호화
방법- 평문을 XOR로 1bit 단위로 암호화- 블록 단위로 치환/대칭을 반복하여 암호화
장점- 실시간 암호, 복호화, 블록 암호보다 빠름- 대용량의 평문 암호화
종류- RC4, SEAL, OTP- DES, 3DES, AES, IDEA, Blowfish, SEED

블록 암호화 알고리즘 유형

유형설명활용
AES- AES(Advanced Encryption Standard)WPA2 무선 인증 등
- 1998년 미국의 표준기술 연구소(NIST)에 의해 수행된 암호화 알고리즘 공모전에 선정된 암호화 기술
- 대칭키 암호이며 세 종류의 키(128비트, 192비트, 256비트)를 사용
DES- DES(Data Encryption Standard)미사용
- 미국 NBS(National Bureau of Standards, 현재 NIST)에서 국가 표준으로 정한 암호
- DES는 대칭키 암호이며, 56비트의 키를 사용
- DES를 세 번 반복해서 사용하는 Triple-DES는 DES에 비해 안전한 것으로 알려져 있지만, 현재는 DES대신 AES가 새 표준으로 정해져 사용되고 있음
ARIA- ARIA : Academy(학계), Research Institute, Agency(정부기관) 합작국내 공공기관
- 경량 환경 및 하드웨어 구현을 위해 최적화된, Involutional SPN 구조를 갖는 범용 블록 암호화 알고리즘
IDEA- IDEA(International Data Encryption Algorithm)PGP 메일 암호 등
- 128비트의 키를 사용해 64비트의 평문을 8라운드에 거쳐 64비트의 암호문으로만 구성
- 모든 연산이 16비트 단위로 이루어지도록 16비트 프로세서에서 구현이 용이하며 주로 키 교환에 사용
RC5- RC5(Ron's Code 5)알고리즘은 1994년 미국 RSA연구소리베트(Rivest)가 개발RC4개선
- 비교적 간단한 연산으로 빠른 암호화와 복호화 기능을 제공하여 모든 하드웨어에 적합
- 입출력, Key, 라운드 수가 가변인 블록 알고리즘
- 32/64/128비트의 키를 사용

2-2. 공개키 암호화 기법 유형

공개키 알고리즘에는 Diffle Hellman, RSA, DSA, ECC가 있음.

구분Diffle HellmanRSA(Rivest-Shamir-Adleman,)DSA(Digital Signature Algorithm)ECC(타원 곡선 암호)
특징- 최초의 공개키 알고리즘- 대표적 공개키 알고리즘- 전자서명 알고리즘 표준- 짧은키로 높은 암호 강도
- 키 분배 전용 알고리즘
원리- 이산대수 문제- 소인수 분해- 이산대수 문제- 타원 곡선
장점- 키 분배에 최적화- 여러 라이브러리 존재- 간단한 구조- 오버헤드 적음
- 키는 필요시에만 생성, 저장 불필요
단점- 암호화 또는 서명 사용하지 않음(상대방에 대한 인증기능 없음)- 컴퓨터 속도의 발전으로 키 길이 증가- 전자서명 전용- 키 테이블(20Kbyte)필요
- 위조에 취약- 암호화, 키 교환 불가

3. 해시(Hash) 함수 유형

해시 알고리즘 : 전자서명에 많이 사용됨

유형설명활용
SHA-1- 160비트 암호화 해시함수전자서명
- 1993년 미국 NIST에서 개발
- 512비트를 입력받아서 160비트를 출력
- 보안강도가 약해 SHA-256, SHA-512로 대체되고 있음
MD5- 128비트 기반 암호화 해시함수메시지 무결성 검사
- 결과 값이 16개 문자열
- 설계상 결함으로 사용이 줄어드는 추세
HAVAL- MD5를 변형해 만든 해시 함수MD5 단점 보완
- 128비트에서 256비트까지 다양한 크기가 가능
Tiger- 64비트 CPU에 최적화64비트 CPU의 해시
- 32비트 CPU에서도 빠르게 동작 가능

3-1. SHA-2 유형

SHA-1 해시 알고리즘의 보안 취약점 때문에 암호강도, 해시 크기, 블록 크기를 더 증가시켜서 나온 새로운 해시 알고리즘. 블록체인 기술에도 해당 해시 알고리즘을 사용하고 있음.

구분SHA-224SHA-256SHA-384SHA-512
암호강도112bit128bit192bit256bit
해시크기224bit256bit384bit521bit
블록크기512bit512bit1024bit1024bit
라운드64648080
  • 해시크기가 뒤에 붙는 숫자와 같고 암호강도는 뒤에 붙는 숫자의 1/2
  • 블록크기와 라운드는 SHA-2~와 같고 SHA-2보다 높은 SHA-384, SHA-512끼리 같음.

SHA-2 알고리즘 동작방식
SHA-2 알고리즘 동작방식

4. 소프트웨어 보안 취약점

4-1. 대표적인 공격기법

공격기법설명
SQL-Injection데이터베이스로 전달되는 SQL Query를 변경시키기 위해 Web Application에서 입력 받은 파라미터를 변조 후 삽입하여 비정상적인 데이터베이스 접근을 시도하거나 쿼리를 재구성하여 원하는 정보를 열람하는 해킹 기법
XSS(Cross-Site Scripting)타 사용자의 정보를 추출하기 위해 사용되는 공격기법으로 게시판에 악성 스크립트를 작성하여 다른 사람이 그 글을 보았을 때 그 글을 본 사람의 쿠키정보를 빼내가는 해킹 기법
CSRF(Cross-Site Request Forgery)공격자가 사용자의 쿠키값이나 세션정보를 의도한 사이트로 보내거나 특정한 동작을 유발하는 스크립트를 글에 삽입하여 사용자가 게시물 등을 클릭할 경우 공격자가 원하는 동작이 실행되는 해킹 기법
LAND Attack패킷을 전송할 때 출발지 IP주소와 목적지 IP주소를 똑같이 만들어서 공격 대상에게 보내는 공격

4-2. 소프트웨어 보안 취약점

소프트웨어 보안 취약점

4.3. 그 외 소프트웨어 보안 취약점

  • 부적절한 자원 해제 : 사용된 자원을 적절히 해제하지 않아 자원 누수가 발생해 새로운 입력을 처리할 수 없게 되는 보안 취약점 / 예를 들어 파일 디스크립터, 힙 메모리, 소켓등의 자원을 할당 받아 사용 후 반환을 해주지 않아서 발생하는 보안 취약점.
  • 해제된 자원 사용 : 메모리 등 해제된 자원을 참조하여 예기치 않은 오류가 발생될 수 있는 보안 약점
  • 초기화되지 않은 변수 사용 : 변수를 초기화하지 않고 사용하여 계기치 않은 오류가 발생될 수 있는 보안 약점

📍 소프트웨어 개발보안 구축관련 정리 잘된 자료들 모음


profile
어떠한 가치를 창출할 수 있을까를 고민하는 개발자. 주로 Spring으로 개발해요. https://comclothing.tistory.com/ 👈🏻티스토리 블로그로 이전 완료

0개의 댓글