9장 소프트웨어 개발 보안 구축
소프트웨어 개발 보안
개발 과정에서 발생할 수 있는 보안 취약점을 최소화해 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동.
데이터의 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability)을 유지하는 것이 목표.
- 소프트웨어 개발 보안 관련 기관
- 행정안전부 : 개발 보안 정책 총괄, 보안 관련 법규, 지침, 제도 정비, 소프트웨어 보안 약점 진단하는 사람 양성 및 관련 업무 수행
- 한국인터넷진흥원(KISA) : 소프트웨어 개발 보안 정책 및 가이드 개발, 소프트웨어 개발 보안에 대한 기술 지원, 교육과정 및 자격제도를 운영
- 발주기관 : 개발 보안 계획 수립, 보안 사업자 및 감리법인 선정, 보안 준수 여부 점검
- 사업자 : 개발 보안 관련 기술 수준 및 적용 계획 명시, 보안 관련 인력 대상 교육 실시, 보안 가이드 참조하여 개발, 자체적 보안 약점 진단 및 제거, 보안 약점 관련 시정 요구사항 이행
- 감리법인 : 감리 계획 수립 및 협의, 소프트웨어 보안 약점 제거 여부 및 조치 결과 확인
- 소프트웨어 개발 보안 활동 관련 법령
- 개인정보 보호법 : 개인정보 처리 및 보호에 관한 사항을 정해 개인의 자유와 권리 보호
- 정보통신망 이용촉진 및 정보보호 등에 관한 법률 : 정보통신망 이용 촉진 및 정보통신 서비스를 이용하는 이용자들의 개인정보 보호
- 신용정보의 이용 및 보호에 관한 법률 : 개인 신용정보 효율적 이용과 체계적 관리를 통해 정보 오남용 방지
- 위치정보의 보호 및 이용 등에 관한 법률 : 개인 위치정보의 안전한 이용 환경 조성, 정보 유출이나 오남용 방지
- 표준 개인정보 보호 지침 : 개인정보 처리 기준, 개인정보 침해 유형 및 예방조치 등 세부사항 규정
- 개인정보 안전성 확보 조치 기준 : 개인정보 처리자가 개인정보를 처리하는데 있어 개인정보가 분실, 도난, 유출, 위조, 변조, 훼손되지 않게 안전성 확보에 필요한 기술, 관리, 물리적 안전조치에 관한 최소한의 기준 규정
- 개인정보 영향평가에 관한 고시 : 개인정보 영향평가를 위한 평가기관 지정, 영향평가의 절차 등에 관한 세부 기준 규정
- 소프트웨어 개발 보안 활동 관련 기타 규정
- RFID 프라이버시 보호 가이드라인 : RFID(전자태그) 시스템 이용자들의 프라이버시 보호, 안전한 RFID 이용 환경을 조성하기 위한 가이드라인
- 위치정보의 관리적, 기술적 보호조치 권고 해설서 : 위치정보 사업자 및 위치기반 서비스 사업자가 준수해야 하는 관리적, 기술적 보호조치 구체적 기준
- 바이오정보 보호 가이드라인 : 개인 바이오정보 보호와 안전한 활용을 위한 원칙 및 조치사항
- 뉴미디어 서비스 개인정보 보호 가이드라인 : 뉴미디어 서비스 이용 및 제공 시 개인 정보 침해사고 예방키 위한 준수사항
Secure SDLC(Software Development Life Cycle)
소프트웨어 개발 생명 주기(SDLC(요구사항 분석-명세-설계-구현))에 보안 강화를 위한 프로세스를 포함한 것
- 보안 요소
- 기밀성 : 시스템 내 정보와 자원은 인가된 사용자에게만 접근 허용
- 무결성 : 시스템 내 정보는 인가된 사용자만 수정 가능
- 가용성 : 인가받은 사용자는 언제라도 사용 가능
- 인증 : 사용자가 합법적인 사용자인지 확인하는 모든 행위
- 부인 방지 : 데이터 송 * 수신한 사용자가 사실을 부인할 수 없게 송*수신 증거 제공
- 각 생명 주기 단계에서의 보안 활동
- 요구사항 분석 단계 : 보안 항목에 해당하는 요구사항 식별 작업 수행
- 설계 단계 : 식별된 보안 요구사항들 설계서에 반영, 보안 설계서 작성
- 네트워크 : 네트워크 분리 혹은 방화벽 설치
- 서버 : 보안이 뛰어난 운영체제 사용, 보안 업데이트, 외부 접속에 대한 접근 통제 실시
- 물리적 보안 : 감시설비 설치
- 개발 프로그램 : 허가되지 않은 프로그램 통제, 지속적 데이터 무결성 검사 실시
- 구현 단계 : 표준 코딩 정의서(네이밍 규칙, 주석 첨부 방식 등을 정의해 둔 문서) 및 소프트웨어 개발 보안 가이드(정부에서 제작, 배포하는 소프트웨어 개발 보안 지침)를 준수하며, 설계서에 따라 보안 요구사항들 구현
- 시큐어 코딩 : 소프트웨어 구현 단계 시 발생할 수 있는 보안 취약점들을 최소화하기 위해 보안 요소들을 고려하여 코딩하는 것
- 테스트 단계 : 설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는지 점검
- 설계 단계서 식별된 위험들 외 구현 단계에서 추가로 지적된 위험들을 점검할 수 있도록 테스트 계획 수립 및 시행
- 모든 결과는 문서화하여 보존하며, 피드백되어야 함.
- 유지보수 단계 : 이전 과정을 모두 수행하였음에도 발생할 수 있는 보안 사고들 식별, 사고 발생 시 이를 해결하고 보안 패치 실시.
세션 통제 (요구사항 분석 및 설계 단계)
세션은 서버와 클라이언트의 연결을 의미.
세션 통제는 세션의 연결 + 세션의 연결로 인해 발생하는 정보를 관리하는 것
- 보안 약점 종류
- 불충분한 세션 관리 : 일정한 규칙이 존재하는 세션 ID 발급, 타임아웃이 너무 길게 설정
- 세션 하이재킹(세션 가로채기)같은 공격을 당할 위험
- 잘못된 세션에 의한 정보 노출
- 다중 스레드 환경에서 멤버 변수(모든 메소드에서 접근 가능한 변수)에 정보 저장할 때 발생하는 보안 약점
- 싱글톤 패턴에서 발생하는 레이스컨디션(두 개 이상 프로세스가 공용 자원을 획득하기 위해 경쟁하고 있는 상태)으로 인해 동기화 오류 발생 혹은 멤버 변수 정보 노출 가능성
- 다중 스레드 환경에서 멤버 변수(모든 메소드에서 접근 가능한 변수)에 정보 저장할 때 발생하는 보안 약점
- 불충분한 세션 관리 : 일정한 규칙이 존재하는 세션 ID 발급, 타임아웃이 너무 길게 설정
- 세션 설계 고려 사항
- 모든 페이지에서 로그아웃 가능하게 해야 함
- 로그아웃 시 할당 세션이 완전 제거되도록 함
- 세션 타임아웃은 중요도가 높으면 2~5분 낮으면 15~30분
- 이전 세션이 종료되지 않으면 새 세션 생성 불가
- 중복 로그인을 허용하지 않은 경우 클라이언트 중복 접근에 대한 세션 관리 정책 수립
- 세션 ID 관리 방법
- 안전한 서버에서 최소 128비트 길이로 생성
- 안전한 난수 알괼즘 적용
- ID가 노출되지 않도록 URL Rewrite 기능 사용하지 않는 방향으로 설계
- 로그인 시 로그인 전 세션 ID 삭제 및 재할당
- 장기간 접속 세션 ID는 주기적으로 재할당
입력 데이터 검증 및 표현 (구현 단계)
입력 데이터로 인해 발생하는 문제들을 예방하기 위한 보안 점검 항복들.
- 보안 약점 종류
- SQL 삽입 : 입력란에 SQL을 삽입해 무단으로 DB를 조회하거나 조작.
- 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링되도록 설정
- 경로 조작 및 자원 삽입 : 데이터 입출력 경로를 조작해 서버 자원을 수정*삭제할 수 있는 보안 약점
- 사용자 입력값을 식별자로 사용 시 경로 순회 공격을 막는 필터 사용해 방지
- 크로스사이트 스크립팅 : 웹페이지에 악의적 스크립트를 삽입해 방문자 정보 탈취, 비정상적 기능 수행을 유발하는 보안 약점
- HTML 태그 사용 제한, 스크립트에 삽입되지 않게 '<','>','&' 등의 문자를 다른 문자로 치환함으로써 방지
- 운영체제 명령어 삽입 : 외부 입력값을 통해 시스템 명령어 실행 유도, 권한을 탈취하거나 시스템 장애 유발
- 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하기, 외부 입력값을 검증 없이 내부 명령어로 사용하지 않기
- 위험한 형식 파일 업로드 : 악의적 명령어 포함 스크립트 파일을 업로드해 시스템에 손상을 주거나, 시스템을 제어할 수 있는 보안 약점
- 업로드 파일 확장자 제한, 파일명 암호화, 웹사이트와 파일 서버 경로 분리, 실행 속성 제거
- 신뢰되지 않는 URL 주소 자동접속 연결 : 입력 값으로 사이트 주소를 받는 경우 이를 조작해 방문자를 피싱 사이트로 유도
- 연결되는 외부 사이트 주소를 화이트 리스트로 관리해 방지
- SQL 삽입 : 입력란에 SQL을 삽입해 무단으로 DB를 조회하거나 조작.
보안 기능 (구현 단계)
구현 단계에서 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목들
- 보안 약점 종류
- 적절한 인증 없이 중요 기능 허용 : 보안 검사를 우회하여 인증과정 없이 중요한 정보 또는 기능에 접근 및 변경 가능
- 재인증 기능으로 방지
- 부적절한 인가 : 접근제어 기능이 없는 실행경로를 통해 정보 또는 권한 탈취
- 모든 실행경로에 대해 접근제어 검사 수행, 사용자에게 반드시 필요한 접근 권한만 부여해 방지
- 중요한 자원에 대한 잘못된 권한 설정 : 권한 설정이 잘못된 자원에 접근해 해당 자원 임의 사용 가능
- 소프트웨어 관리자만 자원들을 읽고 쓸 수 있게 설정, 인가되지 않은 사용자의 중요 자원에 대한 접근 여부 검사
- 취약한 암호화 알고리즘 사용 : 암호화된 환경설정 파일을 해독해 비밀번호 등 중요정보 탈취
- 안전한 암호화 알고리즘 사용, 업무관련 내용 및 개인정보 등에 대해서 IT보안인증사무국이 안정성을 확인한 암호모듈 이용
- 중요정보 평문 저장 및 전송 : 암호화되지 않은 평문 데이터 탈취하여 중요 정보 획득
- 중요 정보를 저장하거나 전송할 때는 반드시 암호화 과정을 거치도록 한다. HTTPS / SSL 과 같은 보안 채널을 이용한다.
- 하드코드(데이터를 코드 내부에 직접 입력하는 방식)된 비밀번호 : 소스코드 유출 시 내부 하드코드된 패스워드를 이용해 관리자 권한 탈취 가능
- 패스워드는 암호화해 별도 파일 저장, 디폴트 패스워드나 디폴트키 사용을 피한다.
- 적절한 인증 없이 중요 기능 허용 : 보안 검사를 우회하여 인증과정 없이 중요한 정보 또는 기능에 접근 및 변경 가능
시간 및 상태
동시 수행 지원 병렬 처리 시스템 혹은 다수 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리해 시스템이 원활하게 동작되도록 하기 위한 보안 검증 항목들
- 보안 약점 종류
- TOCTOU 경쟁 조건 : 검사 시점(Time Of Check)과 사용 시점(Time Of Use)을 고려하지 않고 코딩하는 경우 발생하는 보안 약점. 검사 시점 시 사용 가능했던 자원이 사용 시점 시 사용 불가능한 경우 발생
- 프로세스 자원 정보와 실제 자원 상태가 일치하지 않는 동기화 오류, 교착상태(프로세스들이 이미 자원을 점유한 상태에서 다른 프로세스가 점유하고 있는 자원을 요구하여 무한히 기다리는 현상) 등이 발생할 수 있음.
- 코드 내 동기화 구문 사용, 해당 자원에는 한 번에 하나의 프로세스만 접근 가능하도록 구성하여 방지
- 프로세스 자원 정보와 실제 자원 상태가 일치하지 않는 동기화 오류, 교착상태(프로세스들이 이미 자원을 점유한 상태에서 다른 프로세스가 점유하고 있는 자원을 요구하여 무한히 기다리는 현상) 등이 발생할 수 있음.
- 종료되지 않는 반복문 또는 재귀함수 : 종료 조건을 정의하지 않았거나 논리 구조상 종료될 수 없는 경우 발생
- 시스템 자원을 끊임없이 사용해 서비스 또는 시스템이 자원고갈로 정지하거나 종료됨
- 수행 횟수 제한 혹은 종료 조건을 점검해 반복 또는 호출 종료 여부 확인하여 방지
- 시스템 자원을 끊임없이 사용해 서비스 또는 시스템이 자원고갈로 정지하거나 종료됨
- TOCTOU 경쟁 조건 : 검사 시점(Time Of Check)과 사용 시점(Time Of Use)을 고려하지 않고 코딩하는 경우 발생하는 보안 약점. 검사 시점 시 사용 가능했던 자원이 사용 시점 시 사용 불가능한 경우 발생
에러처리
소프트웨어 실행 중 발생할 수 있는 오류들을 사전에 정의하여 오류로 인해 발생할 수 있는 문제들을 예방하기 위한 보안 점검 항목들
- 보안 약점 종류
- 오류 메시지를 통한 정보 노출 : 오류 방생으로 중요 정보를 메시지로 외부에 노출하는 보안 약점
- 오류 메시지의 경우 노출 경로 및 디버깅 정보는 해커의 악의적 행위를 도울 수 있음. 예외처리 구문 혹은 예외 이름이나 스택 트레이스를 출력하도록 코딩한 경우 해커는 소프트웨어 내부구조를 쉽게 파악 가능.
- 오류 발생 시 가능한 내부에서 처리되도록 하거나 메시지를 출력할 경우 최소한 정보 또는 사전에 준비된 메시지만 출력되도록 해 방지
- 오류 메시지의 경우 노출 경로 및 디버깅 정보는 해커의 악의적 행위를 도울 수 있음. 예외처리 구문 혹은 예외 이름이나 스택 트레이스를 출력하도록 코딩한 경우 해커는 소프트웨어 내부구조를 쉽게 파악 가능.
- 오류 상황 대응 부재 : 소프트웨어 개발 중 예외처리를 하지 않았거나 미비로 인해 발생하는 보안 약점
- 예외처리를 하지 않은 오류들로 인해 소프트웨어 실행이 중단되거나 의도를 벗어난 동작 유도
- 오류 발생 가능성이 잇는 부분에 예외처리 구문 작성, 제어문을 활용해 오류가 악용되지 않도록 코딩해 방지
- 예외처리를 하지 않은 오류들로 인해 소프트웨어 실행이 중단되거나 의도를 벗어난 동작 유도
- 부적절한 예외처리 : 광범위하게 묶어 한 번에 예외 처리하거나 누락된 예외가 존재할 때 발생하는 보안 약점
- 광범위한 예외처리 구문 정의 시 예기치 않은 문제 발생 가능성, 함수 등 예상했던 결과와 다른 값을 반환해 예외로 처리되지 않은 경우 잘못된 값으로 인해 다양한 문제가 발생할 가능성
- 모든 함수의 반환값이 의도대로 출력되는지 확인, 세분화된 예외처리 수행
- 광범위한 예외처리 구문 정의 시 예기치 않은 문제 발생 가능성, 함수 등 예상했던 결과와 다른 값을 반환해 예외로 처리되지 않은 경우 잘못된 값으로 인해 다양한 문제가 발생할 가능성
- 오류 메시지를 통한 정보 노출 : 오류 방생으로 중요 정보를 메시지로 외부에 노출하는 보안 약점
코드 오류
개발자들이 코딩 중 실수하기 쉬운 오류를 예방하기 위한 보안 점검 항목들
- 보안 약점 종류
- 널 포인터 역참조 : 널 포인터가 가리키는 메모리에 어떤 값을 저장할 때 발생하는 보안 약점
- 공격자가 널 포인터 역참조로 발생하는 예외 상황 악용 가능
- 널이 될 수 있는 포인터를 이용하기 전 널 값을 갖고 있는지 검사함으로써 방지
- 공격자가 널 포인터 역참조로 발생하는 예외 상황 악용 가능
- 부적절한 자원 해제 : 자원 반환 코드 누락 혹은 프로그램 오류로 할당 자원을 반환하지 못햇을 때 발생하는 보안 약점
- 유한한 시스템 자원이 계속 점유 시 자원 부족으로 새로운 입력을 처리하지 못할 수 있음
- 자원 반환 코드가 누락되었는지 확인, 오류로 인해 함수가 중간에 종료되었을 시 예외처리 관계없이 자원이 반환되도록 코딩함으로써 방지
- 유한한 시스템 자원이 계속 점유 시 자원 부족으로 새로운 입력을 처리하지 못할 수 있음
- 해제된 자원 사용 : 이미 사용이 종료되어 반환된 메모리를 참조하는 경우 발생하는 보안 약점
- 반환된 메모리 참조 시 예상하지 못한 값 또는 코드를 수행하게 되어 의도치 않은 결과 발생
- 반환된 메모리에 접근할 수 없도록 주소를 저장하고 있는 포인터를 초기화
- 반환된 메모리 참조 시 예상하지 못한 값 또는 코드를 수행하게 되어 의도치 않은 결과 발생
- 초기화되지 않은 변수 사용 : 변수 선언 후 값이 부여되지 않은 변수 사용 시 발생하는 보안 약점
- 변수가 선언되어 메모리가 할당되면 해당 메모리에 이전 사용하던 내용이 남아있어 변수가 외부에 노출되는 경우 중요정보가 악용될 수 있음
- 변수 선언 시 할당된 메모리를 초기화함으로써 방지
- 변수가 선언되어 메모리가 할당되면 해당 메모리에 이전 사용하던 내용이 남아있어 변수가 외부에 노출되는 경우 중요정보가 악용될 수 있음
- 널 포인터 역참조 : 널 포인터가 가리키는 메모리에 어떤 값을 저장할 때 발생하는 보안 약점
캡슐화
정보 은닉이 필요한 중요한 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안 점검 항목들
- 보안 약점 종류
- 잘못된 세션에 의한 정보 노출 : 다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점
- 레이스컨디션으로 인해 동기화 오류 발생 혹은 멤버 변수 정보 노출 가능성
- 멤버 변수보다 지역 변수 활용
- 레이스컨디션으로 인해 동기화 오류 발생 혹은 멤버 변수 정보 노출 가능성
- 제거되지 않고 남은 디버그 코드 : 개발 중 버그 수정이나 결과값 확인을 위해 남겨둔 코드들로 인해 발생하는 보안 약점
- 중요한 정보가 디버그 코드로 노출될 수 있음. 혹은 디버그 코드에 인증 및 식별 절차를 생략하거나 우회하는 코드가 포함되어 있을 경우 공격자가 악용 가능
- 소프트웨어 배포 전 코드 검사를 통해 남아있는 디버그 코드 삭제
- 중요한 정보가 디버그 코드로 노출될 수 있음. 혹은 디버그 코드에 인증 및 식별 절차를 생략하거나 우회하는 코드가 포함되어 있을 경우 공격자가 악용 가능
- 시스템 데이터 정보 노출 : 시스템 내부 정보를 시스템 메시지 등을 통해 외부로 출력하도록 코딩 시 발생하는 보안 약점
- 중요 정보가 시스템 메시지로 인해 유출 가능성
- 시스템 메시지에 최소한의 정보만 제공함으로써 방지
- 중요 정보가 시스템 메시지로 인해 유출 가능성
- Public 메소드로부터 반환된 Private 배열 : 선언된 클래스 내에서만 접근 가능한 Private 배열을 모든 클래스에서 접근 가능한 Public 메소드에서 반환할 때 생기는 보안 약점
- Public 메소드가 Private 배열을 반환하면 배열 주소가 외부로 공개돼 외부에서 접근할 수 있게 됨.
- Pirvate 배열을 별도 메소드를 통해 조작하거나 동일한 형태의 복제본으로 반환 후 값을 전달하는 방식으로 방지 가능.
- Public 메소드가 Private 배열을 반환하면 배열 주소가 외부로 공개돼 외부에서 접근할 수 있게 됨.
- Private 배열에 Public 데이터 할당 : Private 배열에 Public으로 선언된 데이터 또는 메소드 파라미터를 저장할 때 발생하는 보안 약점
- Private 배열에 Public 데이터를 저장 시 Private 배열을 외부에서 접근할 수 있게 됨.
- Public으로 선언된 데이터를 Private 배열에 저장 시 레퍼런스가 아닌 값을 직접 저장함으로써 방지 즉, 메모리를 공유하는 것이 아닌 순수한 값만을 공유.(깊은 복사)
- Private 배열에 Public 데이터를 저장 시 Private 배열을 외부에서 접근할 수 있게 됨.
- 잘못된 세션에 의한 정보 노출 : 다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점
API 오용
API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하기 위한 보안 검증 항목들
- 보안 약점 종류
- DNS Lockup에 의존한 보안 결정 : 도메인명에 의존해 인증이나 접근 통제 등 보안 결정을 내리는 경우 발생하는 보안 약점
- DNS 엔트리를 속여 동일한 도메인에 속한 서버인 것처럼 위장하거나, 사용자와 서버 간 네트워크 트래픽을 유도해 악성 사이트를 경유하도록 조작 가능. DNS Lockup을 악용해 인증이나 접근 통제를 우회하는 수법으로 권한 탈취 가능성.
- DNS 검색을 통해 도메인 이름을 비교하지 않고 IP 주소를 직접 입력해 접근함으로써 방지
- DNS 엔트리를 속여 동일한 도메인에 속한 서버인 것처럼 위장하거나, 사용자와 서버 간 네트워크 트래픽을 유도해 악성 사이트를 경유하도록 조작 가능. DNS Lockup을 악용해 인증이나 접근 통제를 우회하는 수법으로 권한 탈취 가능성.
- 취약한 API 사용 : 보안 문제로 사용 금지된 API를 사용하거나, 잘못된 방식으로 API를 사용 시 발생하는 보안 약점
- 보안상 안전한 API라 할지라도 자원에 직접 연결이나, 네트워크 소켓을 통한 직접 호출 같이 보안에 위협을 줄 수 있는 인터페이스를 사용하는 경우 보안 약점에 노출
- 보안 문제로 금지된 함수는 안전한 함수로 대체, API 매뉴얼을 참고해 보안이 보장되는 인터페이스 사용함으로써 방지
- 보안상 안전한 API라 할지라도 자원에 직접 연결이나, 네트워크 소켓을 통한 직접 호출 같이 보안에 위협을 줄 수 있는 인터페이스를 사용하는 경우 보안 약점에 노출
- DNS Lockup에 의존한 보안 결정 : 도메인명에 의존해 인증이나 접근 통제 등 보안 결정을 내리는 경우 발생하는 보안 약점
암호 알고리즘
중요정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법
- 암호화 방식
- 양방향
- 개인키 암호화 기법(or 대칭 암호 기법 or 단일키 암호화 기법): 동일한 키로 데이터를 암호화하고 복호화
- 종류
- 블록(한 번에 하나의 데이터 블록 암호화) 암호화 방식
- DES : 미국 NBS에서 발표한 개인키 암호화 알고리즘. DES를 3번 적용해 강화한 3DES도 존재. 블록 크기 64비트, 키 길이 56비트.
- SEED : 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘. 블록 크기 128비트. 키 길이에 따라 128, 256으로 분류
- AES : 미국 표준 기술 연구소에서 발표한 개인키 암호화 알고리즘. 블록 크기 128비트, 키 길에 따라 128, 192, 245으로 분류
- ARIA : 국가 정보원과 산학연협회가 개발한 블록 암호화 알고리즘. 블록 크기는 128비트. 키 길이에 따라 128, 192, 256으로 분류
- 스트림(평문과 동일한 길이 스트림을 생성해 비트 단위로 암호화) 암호화 방식
- LFSR
- RC4
- 블록(한 번에 하나의 데이터 블록 암호화) 암호화 방식
- 장점 : 빠른 암호화 / 복호화 속도, 단순한 알고리즘, 작은 파일 크기
- 단점 : 관리해야 할 키 수가 사용자 수와 비례하게 증가
- 종류
- 공개키 (비대칭 암호화 기법) : 데이터 암호화 시 사용하는 공개키는 DB 사용자에게 공개하고, 복호화할 때 비밀키는 관리자가 비밀리에 관리.
- 장점 : 용이한 키 분배, 적은 관리할 키 개수
- 단점 : 느린 암호화 / 복호화 속도, 복잡한 알고리즘, 큰 파일 크기
- RSA : MIT에 의해 제안된 공개키 암호화 알고리즘. 큰 숫자를 소인수분해 하기 어렵다는 것에 기반해 개발. 여기서 키란 메시지를 열고 잠그는 상수를 의미.
- 개인키 암호화 기법(or 대칭 암호 기법 or 단일키 암호화 기법): 동일한 키로 데이터를 암호화하고 복호화
- 단방향
- HASH : 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것.
- 해시 알고리즘(해시 함수)로 변환된 값이나 키를 해시값 또는 해시키라 부름.
- HASH : 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것.
- 양방향
'그 외 공부 > 정처기-실기(완)' 카테고리의 다른 글
11장 소프트웨어 패키징 (0) | 2021.07.08 |
---|---|
10장 응용 SW 기초 기술 활용 (0) | 2021.07.07 |
8장 SQL 응용 (0) | 2021.07.06 |
7장 어플리케이션 테스트 관리 (0) | 2021.07.05 |
6장 화면 설계 (0) | 2021.07.02 |