[정의] RNN에서 학습방법의 역전파 거리가 늘어날경우 gradient값이 폭증하거나 사라지는 문제점을 개선하는 알고리즘

 

[RNN의 장기의존성(Long-Term Dependency) 문제] 이전 정보입력 위치와 현재 입력위치가 멀 경우 학습데이터 유실되는 문제


※ tanh : Hyperbolic Tangent. 시그모이드 함수를 조금 변형하여 1 ~ -1까지 출력되는 함수. 시그모이드보다 기울기가 가파라서 학습속도가 빠르지만, 양끝단 포화가 더 심하여, Vanishing Gradient 문제에서는 취약함.


※ 시그모이드 3개는 단지 아날로그적 스위치 역할수향. 노드의 전달 함수는 하이퍼탄 이용.

 

 

 

 

 

 

 

 

 

 

 

'ITPE > 자료구조' 카테고리의 다른 글

MST(Minimum Spanning Tree)  (0) 2021.04.08
B tree  (0) 2021.04.07

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'ITPE > 자료구조' 카테고리의 다른 글

8-puzzle (A*)  (0) 2021.04.08
B tree  (0) 2021.04.07

 

 

 

I. B-Tree의 개념

. B-Tree의 정의

   - 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 이진트리의 확장형 트리구조

. B-Tree의 개념도 및 설명

구 분 항 목 설 명
개념도
구조 Root node 최소 2개의 자식노드 보유, 최소 한 개의 값 보유
Internal node 최대 m개의 자식노드 보유(차수가 m일 경우)
Leaf node 최하위 노드는 동일레벨로 구현
특징 자식노드 수 리프, 루트를 제외한 노드는 최소 m/2개의 자료 보유
균등 탐색 속도 최악의 경우가 존재하지 않아 시간복잡도는 O(logN)으로 일정
효율성 자식노드를 많이 보유하여 트리의 높이가 줄어들어 효율성 확보
정렬상태 각 노드에 입력된 자료는 정렬된 상태로 존재
유형 B+ Tree 인덱스 세트(index set)와 순차세트(sequence set)로 구성된 트리
B* Tree 리프, 루트를 제외한 노드가 최소한 2/3가 채워지도록 제한한 트리

- 중복된 자료는 입력 불가하며, 데이터 추가 및 삭제시 항상 Leaf노드에서 수행

 

 

 

 

 

II. B-Tree의 삽입 연산 설명 및 삽입과정 설명

 . B-tree의 삽입 연산 설명

구 분 항 목 설 명
기본연산 Insert 새로운 값은 항상 Leaf노드에 삽입
하향 탐색 새로운 값 추가시, 하향탐색하며 꽉찬 노드는 분할하며 진행
분할연산
(Split)
분할노드가
Root인 경우
Left child, Right child 생성후, 중앙값은 Root, 나머지 값들은 자식노드에 분할하여 배치
분할노드가
Root가 아닌경우
- 왼쪽 노드는 이미 있는 노드이므로, 오른쪽 노드만 생성
- 이후, 중앙값을 부모에 삽입하고, 왼쪽과 오른쪽 노드로 분할 배치

- 분할해야할 경우를 Overflow라고 하며, 분할결과 부모노드도 Overflow발생시 분할 반복수행

 

 . 1, 2, 3, 4, 5, 6 순서대로 삽입되는 과정 설명

- Overflow 발생시 분할하여 부모노드에 배치

 

 

 

 

III. B-Tree의 삭제 연산 설명 및 삭제과정 설명

. B-tree의 삭제 연산 설명

구 분 항 목 설 명
삭제 원칙 자료수 보장 삭제후 자료수가 M/2 이상이 되도록 보장해야하는 원칙
Borrow node - 형제노드가 M/2보다 많은 자료를 가지고 있을경우 빌려오기 수행
- 부모노드에서 빌려오고, 형제노드에서 부모노드로 이동
Bind node 형제노드에게서 빌려오기 불가시, 병합 수행
삭제 연산 내부노드 삭제 - 대체키를 찾아 Swap 연산 수행
- 대체키는 Left subtree중 가장 큰값이나, Right subtree중 가장 작은값을 이용
- 이후 대체된 값을 Leaf에서 삭제 수행
Leaf노드 삭제 자료 삭제후, Balance를 위해 borrow bind 연산 수행

- M/2보다 자료가 적을 경우를 underflow라고 하며, 이럴경우 balance 유지를 위한 연산 수행 필요

 

. 3, 4, 5 순서대로 삭제되는 과정 설명

- 해당 과정에서는 SwapRight Subtree의 최소값을 이용

 

 

 

'ITPE > 자료구조' 카테고리의 다른 글

8-puzzle (A*)  (0) 2021.04.08
MST(Minimum Spanning Tree)  (0) 2021.04.08

 

 

 

[정의] 힙 데이터 영역에서 발생하는 버퍼 오버플로의 한 종류로, 동적 메모리 할당 연결(malloc 메타 데이터 같은)을 겹쳐쓰고 프로그램 함수 포인터를 겹쳐쓰기 위해 결과로 나온 포인터를 교환하는 기법.

 

[개념] 프로그램이 실행되면, 실행에 필요한 정보들이 메모리 영역에 올라가는데 크게는 코드 영역, 데이터 영역, 스택 영역, 힙 영역 으로 구분.
- 코드영역 : 프로그램의 코드가 올라가는 영역, 여기서코드란, 컴파일된 기계어코드
- 데이터영역: 전역변수와 정적변수등이 할당되는영역. 초기화된 데이터는 data 영역에 저장. 초기화 되지 않은 데이터는 bss 영역에 저장
- 스택영역 : 지역변수와 매개변수가 저장되는 영역
- 힙영역 : 빈공간, 필요에 의해 메모리를 할당 및 해제(컴파일러가 예측 할 수 없는, 프로그래머가 관리하는 영역)


[스택 대신 힙영역 사용이유]
- 동적할당, 컴파일시기에 크기를 알수없는 데이터, 컴파일할때는크기를 알지 못하다가, 프로그램이 실행되었을때 크기가 결정되는 경우에 사용


[원리] Heap 영역의 낮은 주소에 있는 버퍼가 넘쳐서 다른 버퍼를 침범하여 발생

 

 

 


[예시] 


1) 두 개의 heap 메모리인 input과 secret을 할당한 뒤, secret 파일을 읽어서 두 번째로 할당했던 secret 영역에 저장
2) 그 후 input 영역에 입력 값을 받고 출력시켜주는 간단한 코드
3) 취약점은 read 함수, input으로 할당한 메모리 크기는 40 바이트이지만
read 함수를 통해 최대 100 바이트까지 입력할 수 있어 Heap Overflow 가 발생
4) Heap Overflow를 이용해서 secret 에 할당된 메모리 영역의 직전까지 데이터를 채워주면,
문자열이 연결되어 printf 함수가 secret 메모리의 값까지 출력 됨.
5) 40 바이트 만큼 할당 한다면 input 에 할당된 메모리와 secret 에 할당된 메모리의 거리차이는 40 바이트
6) 40 바이트를 할당한다고 해서 딱 40 바이트만 할당되는 것은 아니고
메모리의 할당과 해제를 관리하기 위한 정보들이 함께 들어가기 때문에 실제 할당되는 사이즈는 조금 늘어나게 됨.
그래서 문자열의 길이를 조금 늘려주면 Heap Overflow 를 이용한 Leak 이 가능
7) 만약 뒤쪽에 함수 포인터가 존재한다면 그 부분을 조작하여 프로그램의 실행 흐름을 변조도 가능

 

 

 

'ITPE > 보안' 카테고리의 다른 글

Buffer Overflow 공격  (0) 2021.04.01
IP Spoofing  (0) 2021.04.01
Slack Space 분석  (0) 2021.03.30
DNSSEC  (0) 2021.03.28
IPSec(IP Security)  (0) 2021.03.28

 

 

 

[정의] 루트권한 SUID 프로그램 실행 시 버퍼 초과 데이터를 입력, 비정상 작동에 의한 복귀주소를 조작, 공격 Shell을 실행시키는 공격 기법.


[개념] 사용자가  프로그램에서 저장을 위해 할당한 것보다 더 많은 데이터를 입력하려는 시도.


[유형] 
-Local Buffer Overflow : 루트권한 프로그램 취약점 이용
-Remote Buffer Overflow : RPC, FTPD 서비스 취약 이용


[버퍼 오버플로우의 불안전한 코드 사례]

불안전한 코드 안전한 코드
void manipulate_string(char* string) {
   char buf[24];
strcpy(buf, string);
}}
 void manipulate_string(char* string) {
char buf[24];
/* 복사하려는 buf와 길이를 비교. */
if (strlen(string < sizeof(buf))
strncpy(buf, string, sizeof(buf)-1);
/* 문자열은 반드시 null로 종료 */
buf[sizeof(buf)-1] = '₩0';
……
 }
매개변수로 받은 문자열 크기가 지역버퍼에 복사가 되는지 확인하지 않고 strcpy() 함수를 이용 데이터를 복사 매개변수로 받은 변수와 복사하려는 buf의 크기를 비교하여 buf의 크기를 제한하고 마지막 문자에‘₩0’을 삽입


[사례] 

#include <stdio.h>

void sample_function ( char* string )

{

         char buffer[16];

         strcpy (buffer, string);

         return;

}

void main()

{

         char big_buffer[256];

         int i;

         for (i=0; i<256; i++)

                 big_buffer[i] = 'A';

                 sample_function (big_buffer);        // 큰 버퍼를 함수에 보냄

}

}


- 버퍼 오버플로우를 일으키고 운영체제의 스택이 크래시되게 하여 특정 코드가 실행되게 함.

 

 

 


[공격 종류] 
-서비스 거부 공격: 메모리 스택에 많은 데이터를 대입하여 발생. 운영체제 데이터와 같은 중요한 정보를 덮어 써서 시스템 운영체제가 기능을 수행하지 못하게 함.
-접근 권한 획득: 스택에 적당한 크기의 정보를 입력하여 복귀 포인터를 덮어씀. 원래 실행되어야할 코드 대신 자신의 코드를 가리켜 실행시킴. 패스워드 해쉬 값을 출력하거나, 새로운 계정을 생산하는 것등을 할 수 있음.


[대응방안] 스택 영역 실행/쓰기제한 및 무결성 검사. 프로그램/서버의 신속한 패치, 보안 OS 도입, 시큐어코딩.

 

 

기본 예제 (위키피디아)

아래의 예제에서, 프로그램은 메모리에서 인접해 있는 두 아이템을 정의하였다: 8 바이트 길이 스트링 버퍼, A. 그리고 2 바이트 정수형, B. 우선, A 는 8바이트 모두 숫자 0값만 포함하고 B는 숫자 3을 포함한다. 문자들은 1바이트 크기이다.

A B
0 0 0 0 0 0 0 0 0 3

이제, 프로그램은 문자열 "excessive"를 A 버퍼에 저장한다. 한 바이트짜리 0값이 스트링의 끝임을 알리기 위해 따라온다. 스트링의 길이를 확인하지 않음으로 B의 값을 덮어쓴다.

A B
'e' 'x' 'c' 'e' 's' 's' 'i' 'v' 'e' 0

비록 프로그래머가 B가 바뀌는 것을 전혀 의도하지 않았다 하더라도, B의 값은 문자열의 한 부분을 구성하는 숫자로 바뀌었다. 이 예제에서 ASCII를 사용하는 빅 엔디언 시스템에서 "e" "0"는 숫자 25856가 될 수 있다. B가 프로그램이 정의한 유일한 다른 변수였다면, B의 끝을 지나가는 긴 스트링을 쓰는 것은 세그멘테이션 오류, 프로세스 종료와 같은 오류를 발생시켰을 것이다.

 

 

 

'ITPE > 보안' 카테고리의 다른 글

Heap Overflow  (0) 2021.04.01
IP Spoofing  (0) 2021.04.01
Slack Space 분석  (0) 2021.03.30
DNSSEC  (0) 2021.03.28
IPSec(IP Security)  (0) 2021.03.28

 

 

 

[정의] 공격자가 자신의 IP address를, 공격하고자 하는 네트워크의 호스트 IP Address로 바꾸어 IP 기반의 인증을 무력화 시키는 공격.

 

 

[절차]

 

Target System과 Client는 신뢰관계 형성 (ID, PW없이 접근).
IP Protocol 취약점을 습득하기 위해서는 Sniffing 공격이 선행(Seq Number 획득)

 

 

 

 

 

1.공격자는 클라이언트에 TCP SYN Flooding 공격 (rsh,rlogin)

2.공격자는 클라이언트의 IP로 속여 서버에 연결.
3.서버는 SYN/ACK 패킷을 보내고 클라이언트는 TCP SYN Flooding
공격때문에 연결이 이뤄지지 않고 서버 패킷은 사라지게 된다.(미확인)
4.공격자는 서버에 ACK 패킷을 보낸것처럼 속이면서,
IP Spoofing 명령어가 들어있는 패킷을 보내 신뢰 관계에 있는
클라이언트라고 속이면 연결이 이루어지게 된다.


[대응방안]
- 외부에서 들어오는 패킷중에서 출발지 IP 주소(Source IP Address)에
내부망 IP 주소를 가지고 있는 패킷을 라우터 등에서 패킷 필터링을 사용하여 방어.
- 내부사용에 의한 공격은 막을 수 없으므로 각 시스템에서 TCP Wrapper, ssh 설치 운영하고
rsh rlogin 등과 같은 인증과정이 없는 서비스는 미사용.
- IP Spoofing TCP/IP 설계와 구현의 문제이므로 새 프로토콜을 사용하지 않는 이상
완벽한 보호대책은 존재할 수 없으므로 지속적인 관리와 점검필요.

 

 

 

'ITPE > 보안' 카테고리의 다른 글

Heap Overflow  (0) 2021.04.01
Buffer Overflow 공격  (0) 2021.04.01
Slack Space 분석  (0) 2021.03.30
DNSSEC  (0) 2021.03.28
IPSec(IP Security)  (0) 2021.03.28

 

 

[정의] 저장매체에 물리적으로 할당 됐으나 논리적으로 사용할수 없는 공간.

 

[구분] 램슬랙, 드라이브 슬랙, 파일시스템 슬랙(램슬랙+드라이브 슬랙), 볼륨슬랙으로 구분


[구분별 내용]

-램슬랙: 램에 저장된 데이터가 저장장치에 저장될때 나타나는 특성에 따라 붙여진 이름

 

-드라이브슬랙: 클러스터의 사용으로 인해 낭비되는 공간

 

-파일시스템 슬랙: 물리적인 공간을 사용하기 위해 파일 시스템을 생성하는데 마지막 부분에 사용할수 없는 영역(악성코드 은닉에 많이 사용). 1002KB 의 Volume 이 있는데 클러스터가 4KB 이면 마지막 2KB 는 사용할 수 없는 영역이 된다

 

-볼륨슬랙: 전체 볼륨 크기와 할당된 파티셔닝크기의 차이로 발생하는 슬랙 스페이스.
파티션의 크기는 임의로 변경 가능하기 때문에 볼륨슬랙은 변경이 가능

 

 

 

 

 

 

 

'ITPE > 보안' 카테고리의 다른 글

Buffer Overflow 공격  (0) 2021.04.01
IP Spoofing  (0) 2021.04.01
DNSSEC  (0) 2021.03.28
IPSec(IP Security)  (0) 2021.03.28
Tunneling  (0) 2021.03.28

 

 

 

I. DNS 보안 강화를 위한 DNSSEC의 개념

- DNS 캐시 포이즈닝 공격에 대응하기 위해, 공개키 암호화 방식의 전자서명 기술을 DNS 체계에 도입한 보안 기술

 

II. DNSSEC의 작동방식 및 상세설명

가.     DNSSEC의 작동방식

- 단계별 DNSKEY를 통한 서명을 사용한 Trust Chain 구현 통한 DNS 공격 방어

 

 

 

 

나.     DNSSEC의 상세설명

구 분 세부항목 설 명
구성요소 DNSKEY - 도메인 존(Zone)의 공개키 데이터를 저장하여 제공 하기 위한 리소스 레코드(RR)
- Zone은 개인키와 공개키 쌍을 가지고 있으며 개인키는 안전한 장소에 따로 보관
- 개인키와 쌍을 이루는 공개키는 DNSKEY RR의 형태로 명시되어 질의응답을 통해 배포
- ZSK : Domain zone의 모든 리소스 레코드 각각 서명 위한 용도
- KSK : DNSKEY 리소스 레코드 자체를 서명 하기 위한 용도
RRSIG - Resource Record Signature
- DNS의 각 리소스 레코드 데이터의 전자 서명 데이터 저장 용도
- DNS 응답 메시지에 응답 대상 리소스 + RRSIG 형태로 응답
DS
(Delegation Signer)
- DNS 보안 측면 인증 위임 체계 구성 위한 데이터 저장 RR
- 자식 Domain zone KSK 확증 수단 제공 통한 Trust Chain 형성
NSEC / NSEC3
(Next Secure)
- DNSSEC 보안 기능 중 DNS 데이터 부재 인증용 리소스 레코드
- DNS zone에 존재 하지 않는 리소스 레코드 위장 공격 차단
작동방식 1) RRset 생성 - 동일한 유형의 레코드를 자원 레코드 세트(RRset)로 그룹화
2) 서명 - RRSet 생성이후 ZSK를 이용해 각각의 RRset에 서명
- DNSKEY KSK를 이용하여 서명하고 RRSIG로 저장
3) 검증 - 원하는 RRset을 요청하면 해당 RRSIG 레코드도 함께 반환
- 공개 ZSK와 공개 KSK가 들어 있는 DNSKEY 레코드를 요청하면 DNSKEY RRset RRSIG도 함께 반환
- 공개 ZSK, 요청한 RRset RRSIG를 확인
- 공개 KSK, DNSKEY RRset RRSIG를 확인

- 공개키와, 레코드셋을 전자서명을 통해 안전한 DNS시스템을 구축

 

III. DNSSEC 실무 적용시 고려 사항

구 분 이슈 사항 대응 방안
유지 보수 주기적 키 생성, 교체 및
zone 정보 관리 필요
- 키 생성 관리 툴 적용, 필요 정보 마스터화 편의성 확보
- DNS 관리자 사전 교육을 통한 DNSSEC 관리 여건 확보
N/W 부하 DNSSEC 적용 시 처리량
증가에 따른 부하 발생
- 적용 전 부하 테스트 통한 충분한 성능 검증 진행
- 부하 증가에 대비한 네트워크 장비, 예산 추가 확보
DNS 업무 영향 도메인 신청, DB 저장,
정보 전송 등 기존 업무 영향
- 기존 적용 사례 분석 통한 영향도 최소화
- DNSSEC 관련 국내외 표준 가이드 확인

 

 

 

'ITPE > 보안' 카테고리의 다른 글

IP Spoofing  (0) 2021.04.01
Slack Space 분석  (0) 2021.03.30
IPSec(IP Security)  (0) 2021.03.28
Tunneling  (0) 2021.03.28
접근제어 (MAC, DAC, RBAC, ABAC)  (0) 2021.03.28

 

 

 

[정의] TCP/IP 프로토콜의 IP계층에서 무결성과 인증을 보장하는 인증헤더(AH)와 기밀성을 보장하는 ESP를 이용한 IP보안 프로토콜

 

[동작모드]

- 트랜스포트 모드: Transport Layer에서 Network Layer 로 오는 정보만 보호. IP 헤더를 보호하지 않음. Peer-to-peer

- 터널모드 : 전체 IP 패킷을 보호. 헤더를 포함한 IP 패킷을 취해서, 전체 패킷에 IPSec 보안을 적용한 다음 새로운 IP 헤더 추가, 새로운 IP 헤더는 라우터의 IP. site-to-site

 

[프로토콜]

- AH(Authentication Header. 데이터 무결성과 IP 패킷의 인증을 지원, 재생방지(anti-reply) 서비스를 제공, 기밀성을 제공해주지는 않음)

- ESP(Encapsulation Security Payload. 암호화 기법을사용하여 데이터의 무결성, 비밀성의 기능을 제공하는 프로토콜, 프라이버시 제공)

 

 

 

 


[정책 및 키관리]
-SPD(Security Policy Database): 패킷에 대한 보안 정책을 적용하며, 모든 트래픽 처리 시에 참조. SAD를
이용하기 전에, 호스트 패킷에 대해 규정된 정책을 결정.(종류: Drop(폐기), 통과(Bypass), 적용(Apply) 등)
-SAD(Security Authentication Database): 양단간의 비밀 데이터 교환을 위해 미리 설정되어야 할 보안
요소들에 대한 데이터 관리.
-IKE(Internet Key Exchange): inbound 와 outbound 보안 연관을 생성하기 위하여 설계된 프로토콜로
IPSec을 위한 SA(Security Association) 생성. Key 를 주고 받는 알고리즘, 공개된 네트워크를 통하여
Key 를 어떻게 할 것 인가를 정의, IKE 교환을 위한 메시지를 전달하는 프로토콜. ISAKMP(키교환, 인증을
위한 프레임워크, 메시지포멧), SKEME(인증을 위한 공개키 암호화 기법), Oakley(Mode-based 메커니즘)의
3가지 방식 중 Oakley, SKEME 를 다포함하는 ISAKMP 를 주로 사용.

 

[IKE SA(Security Association)과정]
-IKE Phase 1 (IKE SA설정) : 1) IKE 보안 파라미터 협상과정, 2) IKE SA용 마스터키가 설정, 3) 상호 인증과정
-IKE Phase 1.5(Option) : - 추가인증(Xauth), 클라이언트에게 파라미터 값 전달(Mode config)
-IKE Phase 2 (IP Sec SA 설정) : 4) IPSec SA 보안 파라미터 협상 과정, 5) 세션키 생성, 6) 상호인증

 

 

 

'ITPE > 보안' 카테고리의 다른 글

Slack Space 분석  (0) 2021.03.30
DNSSEC  (0) 2021.03.28
Tunneling  (0) 2021.03.28
접근제어 (MAC, DAC, RBAC, ABAC)  (0) 2021.03.28
암호 공격기법  (0) 2021.03.28

+ Recent posts