[정처기 필기] 「5」 | 소프트웨어 개발 보안 구축 - (3.3) 캡슐화, 암호 알고리즘
「1」 소프트웨어 설계
「2」 소프트웨어 개발
「3」 데이터베이스 구축
「4」 프로그래밍 언어 활용
> 「5」 정보시스템 구축 관리
- 소프트웨어 개발 방법론 활용, IT프로젝트 정보 시스템 구축 관리, > 소프트웨어 개발 보안 구축, 시스템 보안 구축
1 Secure SDLC
2 세션 통제
3 입력 데이터 검증 / 표현
4 보안 기능
5 에러처리
6 코드 오류
> 7 캡슐화
> 8 암호 알고리즘
7. 캡슐화
캡슐화의 개요
정보 은닉이 필요한 중요한 데이터, 기능을 불충분하게 캡슐화, 잘못 사용하여 발생하는 것을 예방하는 보안 점검 항목
- 잘못된 세션에 의한 정보 노출, 제거되지 않고 남은 디버그 코드, 시스템 데이터 정보 노출 등
잘못된 세션에 의한 정보 노출
다중 스레드 환경에서 멤버 변수에 정보 저장 시 발생
- 싱글톤 패턴에서 발생하는 레이스컨디션으로 동기화 오류 발생, 멤버 변수의 정보 노출
- 멤버 변수보다 지역 변수 활용하여 변수의 범위 제한하여 방지
제거되지 않고 남은 디버그 코드
개발 중 버그 수정, 결과값 확인을 위해 남겨둔 코드들로 인해 발생
- 중요 정보가 디버그 코드로 노출
- 디버그 코드에 인증 / 식별 절차 생략, 우회하는 코드 포함 시 공격자가 악용
- 배포 전 코드 검사로 디버그 코드 삭제하여 방지
시스템 데이터 정보 노출
시스템 내부 정보를 시스템 메시지 등 외부로 출력하도록 코딩 시 발생
- 노출되는 메시지는 최소한의 정보만 제공하여 방지
Public 메서드로부터 반환된 Private 배열
선언된 클래스 내에서 접근 가능한 Private 배열을 모든 클래스에서 접근 가능한 Public 메서드에서 반환 시 발생
- 배열의 주소가 외부로 공개되어 외부 접근 가능
- Private 배열을 메서드를 통해 조작, 동일한 형태의 복제본으로 반환받은 후 값 전달하는 방식을 방지
>접근 제어자<
한정자 | 클래스 내부 | 패키지 내부 | 하위 클래스 | 패키지 외부 |
Public | O | O | O | O |
Protected | O | O | O | X |
Default | O | O | X | X |
Private | O | X | X | X |
Private 배열에 Public 데이터 할당
Private 배열에 Public으로 선언된 데이터, 메서드의 파라미터를 저장 시 발생
- Private 배열을 외부에서 접근 가능
- Public으로 선언된 데이터를 Private 배열에 저장 시, 래퍼런스가 아닌 값을 직접 저장하여 방지
8. 암호 알고리즘
암호 알고리즘의 개요
패스워드, 주민번호, 은행계좌 같은 중요 정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차, 방법
- 해시를 사용하는 단방향 암호화 방식, 개인키 / 공개키로 분류되는 양방향 암호화 방식
암호화 방식 | 양방향 | 개인키 | Stream 방식 |
Block 방식 | |||
공개키 | |||
단방향 | HASH |
개인키 암호화(Private Key Encryption) 기법
동일한 키로 데이터 암호화 / 복호화
- 사용자는 평문 정보 M을 암호화 알고리즘 E와 개인키 K를 이용하여 암호문 C로 바꾸어 저장, 접근 시 복호화 알고리즘 D와 개인키 K를 이용하여 다시 평문 정보 M으로 바꿔 이용
- 암호화 대상이 n개일 때 사용되는 키 개수는 n(n - 1) / 2
- == 대칭 암호 기법, 비밀키 암호화 기법
- 장점 : 암호화 / 복호화 속도 빠르고, 알고리즘 단순, 공개키 암호 기법보다 파일 크기 작음
- 단점 : 사용자 증가에 따라 관리할 키의 개수 증가
- 한 번에 하나의 데이터 블록을 암호화하는 블록 암호화 방식, 평문과 동일한 길이의 스트림 생성하여 비트 / 바이트 / 워드 단위로 암호화하는 스트림 암호화 방식
- 종류
: 블록 암호화 방식 - DES, SEED, AES, ARIA, IDEA
: 스트림 암호화 방식 - LFSR, RC4
공개키 암호화(Public Key Encryption) 기법
데이터를 암호화할 때 사용하는 공개키는 데이터베이스 사용자에게 공개, 복호화할 때 사용하는 비밀키는 관리자가 비밀리에 관리
- 사용자는 평문 정보 M을 암호화 알고리즘 E와 공개키 P를 이용하여 암호문 C로 바꾸어 저장, 복호화하기 위해서는 권한 있는 사용자만 복호화 알고리즘 D와 비밀키 S를 이용하여 평문 정보 M으로 바꿔 이용
- 암호화 대상이 n개일 때 사용되는 키 개수는 2n
- == 비대칭 암호 기법
- 장점 : 키 분배 용이, 관리할 키 개수 적음
- 단점 : 암호화 / 복호화 속도 느림, 알고리즘 복잡, 개인키 암호화 기법보다 파일 크기 큼
- 종류 : RSA(Rivest Shamir Adleman) 기법
>공개키 기반 구조(PKI; Public Key Infrastructure)<
- 공개키 암호 시스템을 안전하게 사용, 관리 위한 정보 보호 표준 방식
- X.509 방식 : 인증기관에서 발생하는 인증서를 기반으로 상호 인증 제공
- 비X.509 방식 : 국가별, 지역별로 맞게 보완 / 개발
>양방향 알고리즘 종류<
SEED
: 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘
: 블록 크기 128비트, 키 길이에 따라 128, 256
ARIA(Academy, Research Institute, Agency)
: 국가정보원, 산학연합회가 개발한 블록 암호화 알고리즘
: 블록 크기 128비트, 키 길이에 따라 128, 192, 256
DES(Data Encryption Standard)
: 미국 NBS에서 발표한 개인키 암호화 알고리즘
: DES를 3번 적용하여 보안을 더욱 강화한 3DES
: 블록 크기 64비트, 키 길이 56비트
AES(Advanced Encryption Standard)
: 미국 표준 기술 연구소(NIST)에서 발표한 개인키 암호화 알고리즘
: DES의 한계로 발표
: 블록 크기 128비트, 키 길이에 따라 128, 192, 256
RSA(Rivest Shamir Adleman)
: MIT의 라이베스트, 샤미르, 애들먼에 의해 제안된 공개키 암호화 알고리즘
: 큰 숫자를 소인수분해 어려운 것에 기반하여 만듦
: 공개키, 비밀키 사용(키 : 메시지 열고 잠그는 상수 의미)
ECC(Elliptic Curve Cryptography)
: RSA 암호 방식의 대안
: 이산대수 문제를 타원곡선으로 옮겨 기밀성, 효율성 높인 암호화 알고리즘
Rabin
: 미하엘 라빈이 제안
: 소인수분해의 어려움에 안정성의 근거를 둔 암호화 알고리즘
해시(Hash)
임의의 길이의 입력 데이터, 메시지를 고정된 길이의 값, 키로 변환
- 해시 알고리즘을 해시 함수로 부르며, 해시 함수로 변환된 값, 키를 해시값, 해시키로 부름
- 무결성 검증, 정보보호의 다양한 분야에서 활용
- 복호화가 거의 불가능한 일방향 함수
SHA 시리즈
: 미국 국가안보국(NSA)에서 처음 설계, 미국 국립표준기술연구소(NIST)에 의해 발표
: SHA-0, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
MD5
: R.Rivest가 MD4를 대체하기 위해 만든 암호화 해시 함수
: 블록 크기 512비트, 키 길이 128비트
N-NASH
: 일본의 전신전화주식회사(NTT)에서 발표한 암호화 해시 함수
: 블록 크기, 키 길이 128비트
SNEFRU
: R.C.Merkle가 발표한 해시 함수
: 32비트 프로세서에서 구현을 용이하게 할 목적
: 블록 크기 512비트, 키 길이에 따라 128, 256
>솔트(Salt)<
- 둘 이상의 계정에 같은 패스워드를 지정하고, 같은 암호화 알고리즘 적용하면 결과가 동일하여 공격자가 하나의 암호만 해제해도 둘 이상의 계정 얻는 것을 방지
- 원문에 무작위 값(솔트) 덧붙이는 과정
- 같은 패스워드에 대해 암호화 수행해도 다른 결과가 나타나 안전하게 암호화된 데이터 관리 가능
출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)
'💠기타 > 자격증' 카테고리의 다른 글
[정처기 필기] 「5」 | 시스템 보안 구축 - (4.2) 서버 인증, 보안 아키텍처 / 프레임워크, 보안 설루션 (1) | 2024.02.25 |
---|---|
[정처기 필기] 「5」 | 시스템 보안 구축 - (4.1) 서비스 공격 유형 (1) | 2024.02.25 |
[정처기 필기] 「5」 | 소프트웨어 개발 보안 구축 - (3.2) 보안 기능, 에러처리, 코드 오류 (1) | 2024.02.24 |
[정처기 필기] 「5」 | 소프트웨어 개발 보안 구축 - (3.1) Secure SDLC, 세션 통제, 입력 데이터 검증 / 표현 (0) | 2024.02.24 |
[정처기 필기] 「5」 | IT프로젝트 정보 시스템 구축 관리 - (2.5) 회복 / 병행제어, 교착상태 (0) | 2024.02.24 |