분류 전체보기 + 29
React Hooks - useState, useRef , useEffect

React hook

React hook 규칙

1. 반드시 컴포넌트 최상단에서 선언해야 한다.
2. ‘함수형’ 컴포넌트 내부에서만 호출해야 한다.

useState

가장 기본적인 훅이라고 할 수 있다.
리액트에서 컴포넌트를 만들면서 ‘상태’를 관리해야 하는 경우가 많다.

그냥 변수를 만들면 어떤 함수나 이벤트에 의해 값이 변경되었을 때, 화면에 바로 반영되지 않는다.
대신 useState를 사용하면 변수의 상태를 관리하고 상태가 변경되었을 때마다 재렌더링한다.

const [ state, state 변경 함수 ] = useState(초깃값)
setState = (state + 1)


이런 식으로 사용한다. 만든 state를 변경하고 싶으면 state를 직접 건드리는 것이 아니라 배열의 두번째 값인 state변경 함수를 사용해 변경해야 한다.

const [ name , setName ] = useState(“박초은“)
const [ age , setAge ] = useState(18)
const [ birth , setBirth ] = useState(0303)


하나의 컴포넌트에 여러 개의 useState를 사용하는 것이 나쁜 것은 아니지만 관련된 정보라면 하나의 객체로 표현할 수도 있다.

const [ human , setHuman ] = useState({
	name : “박초은“,
	age : 18,
	birth : 0303,
});


이렇게 하면 name, age, birth를 각각 관리하는 것이 아니라 human에 접근해서 한번만 변경해주면 된다.

하지만 객체로 state를 이용하면 useState가 새로운 객체로 바꾸기 때문에 기존 객체를 spread문법으로 가져온 다음 변경해야 한다.
왜냐하면 js에서 배열, 객체 등은 변수에 값을 저장하는 것이 아니라 값이 저장된 메모리의 주소를 저장하기 때문에 값이 같아도 저장된 공간이 다르면 다른 변수라고 인식하기 때문이다.

setHuman({
	…human,
	name : ”김철수“,
	age : 35,
	birth : 1225,
});


자바스크립트 es6 에서는 비구조화 할당이라는 것이 있는데, 이를 활용해 state 와 변경 함수를 배열에 쓰지 않고 변수처럼 사용할 수 있다.

const numberState = useState(0);
const number = numberState[0];
const setNumber = numberState[1];

const onIncrease = () => {
	setNumberr(preNum => preNum + 1);
}


useRef

함수형 컴포넌트를 사용할 때 useState를 쓰면 state가 변경될 때마다 컴포넌트가 재렌더링 되면서 컴포넌트 내부 함수나 변수가 전부 초기화된다. 이를 방지하기 위해 useRef를 사용하는 게 성능 향상에 더 좋을 때가 있다.
즉, 컴포넌트가 계속 렌더링 되어도 컴포넌트가 언마운트되기 전까지 값을 그대로 유지한다.
그래서 useRef는 어떤 값의 변화를 감지해야 하지만 변화했을 때 렌더링을 발생시키면 안되는 경우 사용하면 좋다.

const number = useRef(1)


변수명과 초기값을 설정하면 결과값으로 { current : 초기값 } 이라는 객체가 반환된다.
따라서 변수의 값을 변경하기 위해서는 number.current.value에 접근해야 한다.
current 속성에 접근해 값을 변경해도 state를 변경했을 때처럼 컴포넌트가 재렌더링 되지 않는다.

cosnt inputRef = useRef(null)

useEffect(() => {
	inputRef.current.focus()
}, []);

<input ref={inputRef} />

useRef를 이용해서 요소에 접근해 더 편리한 기능을 구현할 수도 있다.
input 요소에 inputRef로 접근한 다음 useEffect로 컴포넌트가 마운트되었을 때 input 요소를 클릭하지 않아도 focus가 되어있도록 할 수 있다.

const [ count, setCount ] = useState(0)
const number = useRef(0)

function increaseState() {
	setCount(count + 1);
	console.log(“state는“, count);
}

function increaseRef() {
	++number.current;
	console.log(“ref는“, number);
}

return (
	<div>
		<p>{count}</p>
		<button onClick={increaseState}>State 증가</button>
		<p>{number}</p>
		<button onClick={increaseRef}>Ref 증가</button>
	</div>
);


위와 같은 컴포넌트를 만들어보면 state 와 ref 의 차이를 알기 쉽다.
버튼으로 state를 증가시키면 state가 변했기 때문에 컴포넌트를 다시 렌더링한다.
Ref를 증가시키면 콘솔에 찍히는 값은 변하지만 화면에 나타나는 숫자는 그대로이다. 이 상태에서 state를 증가시켜보면 재렌더링이 되면서 ref의 값도 화면에 반영되는데, 0으로 초기화되는 것이 아니라 마지막에 변화시킨 값이 그대로 나타난다. 그리고 state를 계속 증가시켜도 ref의 값이 변하지 않는다.

useEffect

리액트 컴포넌트가 렌더링 될 때마다 특정 작업을 실행할 수 있도록 하는 Hook 이다.
리액트에서 컴포넌트는 생성(mounting) -> 업데이트(updating) -> 제거(unmounting) 의 생애주기를 갖는다.
useEffect는 컴포넌트가 mount 됐을 때, unmount 됐을 때, update 됐을 때 실행할 수 있다.

useEffect(() => {
	//실행할 기능
}, []);


useEffect 는 첫번째 인자로 콜백 함수를 받고 두번째 인자로 Dependency Array 라고 하는 의존성 배열을 받는다.
의존성 배열에 들어가는 값이 변경될 때만 실행되게 설정하거나, 빈 배열을 넘기면 컴포넌트가 마운트 될 때 한 번만 실행한다. 의존성 배열이 없다면 컴포넌트가 재렌더링될 때마다 실행한다.

useEffect(() => {
	// 실행할 코드
	return () => {
		// 실행할코드
	}
}, []);


useEffect 내부에서 타이머 등 setInteval을 사용하거나 구독 처리 같은 작업을 실행한다면 더이상 타이머를 사용하지 않거나 구독을 해지할 때를 위한 코드를 작성해야 한다. cleanup function 이라고 하는데, useEffect 안에 return 뒤에 작성해 준다. 의존성 배열이 빈 배열이면 컴포넌트가 언마운트 될 때만 실행되고, 값이 있다면 그 값이 업데이트되기 직전에 실행한다.

useEffect 를 사용할 때 주의점은 useEffect 내에서 어떤 state를 변경한다면 useState는 state가 변경될 때마다 재렌더링이 되고, 컴포넌트가 새로 마운트 되었으므로 useEffect 가 실행된다. 그러면 useEffect 안에서 또 state가 변경되어 다시 렌더링이 되고 … 무한루프가 발생하기 때문에 꼭 의존성 배열을 넣어줘야 한다.

다음은 최적화 훅 써야지

네트워크 기초 심화 1편

단편화
전송 블록을 같은 크기로 나눔

재합성
수신 측에서 단편화된 데이터 합쳐서 복원

“흐름”제어
데이터 양, 통신 속도

“연결”제어
비연결성, 가상회선 -> 통신로 유지, 개설, 종료

TCP 헤더
- Source Port
- Destination Port
- Acknowledge
- Flags
- Windows Size
- Checksum

3-way-handshake
SYN -> SYN-ACK -> ACK

UDP 헤더
- Source Port
- Destination Port
- Length
- Checksum

Well-known-port
- FTP : 20, 21
- SSH : 22
- Telnet : 23
- DNS : 53
- DHCP : 67, 68
- TFTP : 69
- HTTP : 80
- HTTPS : 443
-> 포트 확인 명령어 : netstat -ano

IPv6 (128bit)
16비트씩 “8쌍”
0000 인 부분 생략 가능 ( ::: )

IPv6 헤더
-  “Version”
- Traffic Class
- Flow label
- Payload Length
- Next Header
- Hop Limit : 데이터 생존 기간

MTU (Maximum Transmission Unit)
최대 패킷 크기
(Ex)
Data : 2400
MTU : 980
Ipv4 헤더크기 : 20bytes
[ 20 + 960 ] [ 20 + 960 ] [20 + 480 ] = 2400 + 60

ARP <-> RARP
ARP : IP 주소 -> MAC 주소
RARP : MAC 주소-> IP 주소

ARP 헤더
- Opcode (Request 1 or Response 2)
- Hardware / Protocol Type / Addr Length
- HardWare / Protocol Address

ICMP (Internet Control Message Protocol)
- Type : 0, 8 / Name : echo Req, Res / desc : 디버깅용 응답, 요청
- Type : 4 / Name : Source Quench / desc : 송신측 전송 속도를 늦춰라
- Type : 5 / Name : Redirection / desc : 라우팅 테이블 주소 변경 시 업데이트
- Type : 3 / Name : Destination unreachable / desc : 클라이언트 문제
- Type : 11 / Name : TTL exceeded / desc : 서버 문제

IGMP (Internet Group Message Protocol)
Ipv4 사용하는 네트워크에서 멀티캐스팅 설정 시 사용
여러 장치가 하나의 ip 주소를 공유해서 모두 동일한 데이터 수신 가능
TTL 제공하는 비대칭 프로토콜

SMTP (Simple Mail Transfer Protocol)
이메일 송신
TCP 응용 프로토콜
ASCII로 전송
SSL 암호화
포트 #25

IMAP (Internet Message Access Protocol)
서버로부터 이메일 관리, 수신, 저장, 동기화
포트 #143

POP3 (Post Office Protocol 3)
이메일 수신, 확인 후 삭제
포트 #110

SNMP (Simple Network Management Protocol)
TCP / IP 를 사용하는 망 관리 프로토콜
UDP 데이터그램 방식 사용 (보안, 관리 감소)
GET, GET NEXT, SET, TRAP 네가지 기능
비동기식

DNS
Default = UDP
512bytes 이상의 패킷이면 TCP 사용

SDN (Software Defined Networking)
가상 네트워크 생성 및 제어, 소프트웨어가 포함된 기존 하드웨어 제어

LAN 표준 IEEE
- 802.1 : 상위 계층 인터페이스, MAC BRIDGE
- 802.2 : LLC(Label Link Control)
- 802.3 : CSMA / CD
- 802.4 : 토큰 버스
- 802.5 : 토큰 링
- 802.6 : MAN
- 802.7 : 광대역 LAN
- 802.8 : 광섬유 LAN
- 802.10 : 보안 (security)
- 802.11 : 무선 네트워크, CSMA / CA

에러 종류와 원인
1. 감쇠 : 이동하면서 신호 세기가 약해짐, 증폭기 or 리피터 로 해결
2. 지연 왜곡 : 주파수에 따라 신호 속도가 달라져서 신호 손상 유발
3. 잡음
- 열 : 진동 스펙트럼 (백색 … )
- 충격 : 순간적인 높은 진폭 (기계적 충격, 낙뢰 …)
- 누화 : 인접 전송매체의 전자기적 상호 유도
- 상호 변조 : 서로 다른 주파수들이 같은 전송매체 공유 -> 주파수 신호 차이
4. 에코 : 약해진 신호가 다시 송신측으로 돌아옴
5. 위상 지터 : 연속적인 위상 변화 -> 편차 커짐

전송 에러 제어 방식
1. 반복 전송 : 송신 -> 동일 데이터 2번 이상 연속 전송 / 수신 -> 데이터 비교, 오류 여부 확인
2. 궤환 전송 : 송신측으로 궤환된 데이터 비교, 검사
3. 전진오류 수정 (FEC) : 송신 -> 정보비트 + 부가코드 전송 / 수신 -> 이 부호로 오류 검출, 수정 (헤밍코드, 순환 잉여 검사 CRC)
4. 후진오류 수정 (BEC) : 오류 발생시 수신측에서 재전송 요구 (ARQ)

'네트워크 > 네트워크관리사' 카테고리의 다른 글

자잘한 오답 22  (0) 2024.08.18
자잘한 오답  (0) 2024.08.04
네트워크 (+서버) 기초 심화 3편  (1) 2024.06.16
네트워크(+서버) 기초 심화 2편  (1) 2024.06.09
트리니티 - IP주소와 서브넷팅

IP 주소란?

네트워크에서 장치들이 통신을 하기 위해서 서로를 구분, 식별하도록 해주는 번호이다.

우리가 쓰는 ip주소는 IPv4인데, 2진수 32비트로 이루어져 있으며, 8비트씩 끊어 "옥텟"으로 구분한다.

 

IP주소는 관리 기관에서 부여한 네트워크 ID와, 네트워크 상에서 개별 호스트를 식별할 수 있도록 하는 호스트 ID로 구성된다.

 

IP 주소의 유한성

IP주소는 무한한 자원이 아니라 특수 목적으로 예약된 것들을 포함해 약 43억개의 주소를 모두 사용하면 더이상 할당할 수 없다.

 

특수 IP 주소

  • 네트워크 ID가 127이고 호스트 ID가 임의의 값이라면 루프백 주소이다.
  • 네트워크 ID가 모두 0이고 호스트 ID만 설정되었다면, 특정 호스트를 식별하기 위한 주소이다.
  • 네트워크 ID가 설정되어있고 호스트 ID가 모두 0이라면 네트워크의 경계를 구분하기 위한 네트워크 주소이다.
  • 네트워크 ID가 설정되어있고 호스트 ID가 모두 1이라면 브로드캐스트 주소이다.

 

IP 주소 할당 방식 - Class

클래스 네트워크 ID  호스트 ID 용도
A 클래스 8 bit, 0~127 24 bit, 0.0.0~255.255.255 일반 사용자
B 클래스 16 bit, 128.0~191.255 16 bit, 0.0~255.255 일반 사용자
C 클래스 24 bit, 192.0.0~223.255.255 8 bit, 0~255 일반 사용자
D 클래스 1110 멀티캐스트 주소 멀티 캐스트
E 클래스 1111 예약된 주소 미래에 예약됨

 

A, B, C 클래스는 일반 사용자들에게 부여하는 주소이다. 

A 클래스에서 네트워크 주소의 첫 비트는 0으로 고정되어 있다. B는 10로, C는 110로, D는 1110, E는 1111로 고정되어 있다.

 

IP 주소 할당 방식 - CIDR

클래스에 따라 IP 주소를 할당하면 사용하지 않는 주소 공간을 많이 낭비하게 되어 유한한 자원인 IP 주소를 효율적으로 사용하기 어렵다.

CIDR은 클래스 구분이 없이 필요한 호스트 수에 따라 적당히 할당하는 방식이다.

기존 클래스 할당 방식에서는 호스트 ID의 길이가 8, 16, 24로 매우 제한적이었지만 CIDR에서는 훨씬 다양한 길이를 제공한다.

 

접두어 표기법(Prefix)

CIDR 방식에서는 네트워크 ID의 길이(bit)를 슬래쉬 뒤에 나타내는 접두어 표기법을 사용한다.

만약 /24 라면 32bit 중 네트워크 ID 24bit를 제외한 나머지 8bit가 호스트 ID가 된다.

 

서브넷 마스크 (Subnet Mask)

192.168.23.56 이라는 주소만 보면 어디까지가 네트워크 ID이고 어디부터가 호스트 ID인지 알기 어렵다.

서브넷 마스크는 이러한 주소에서 네트워크 ID와 호스트 ID를 구분하는 역할을 한다.

32비트로 이루어져 있으며, 이진수 표기법으로 IP 주소에서 네트워크에 해당하는 비트는 1로, 호스트에 해당하는 비트는 0으로 표현한다.

 

어떤 IP 주소와 그 주소의 서브넷 마스크를 2진수로 표현한 다음, AND 연산을 수행하면 네트워크 ID는 그대로 남고 호스트 ID는 모두 0으로 나타난다. 즉, 서브넷을 찾을 수 있다.

 

와일드카드 마스크 (Wildcard Mask)

와일드카드 마스크는 서브넷마스크와 유사하게 필터링 기능을 하지만 정 반대의 표기법을 사용한다.

 

와일드카드 마스크에서 네트워크 ID 처럼 반드시 변하면 안되는 부분은 0으로 표현하고 변해도 괜찮은 부분은 1로 표현한다.

서브넷 마스크는 네트워크를 구분하는 역할을 하지만 와일드카드 마스크는 훨씬 다양하게 IP 주소를 필터링할 수 있다.

(ex) 홀수 / 짝수 주소 필터링 등

 

마찬가지로 해당 IP 주소와 AND 연산을 시키면 원하는 주소를 필터링할 수 있다.

 

서브넷팅 (Subnetting)

서브넷팅이란 하나의 기존 네트워크를 여러개의 더 작은 네트워크로 분할하는 것이다.

서브넷팅을 통해 형성된 작은 네트워크들을 서브넷이라고 한다.

분할된 서브넷들의 크기가 모두 같냐 다르냐에 따라 FLSM 과 VLSM으로 구분된다.

 

서브넷팅 조건

  1. 서브넷에 할당되는 주소는 공백없이 순서대로 할당된다.
  2. 서브넷에 할당되는 주소 중에서 첫 번째 주소와 마지막 주소는 반드시 네트워크 주소와 브로드캐스트 주소로 사용한다.

FLSM (Fixed Length Subnet Mask)

기존 네트워크를 모두 같은 크기의 서브넷으로 나누는 방법이다.

각 서브넷의 규모와 상관없이 규모가 가장 큰 서브넷의 크기에 따라 IP 주소가 분배된다.

 

(ex) 호스트 256개의 기존 네트워크를 4개로 나누려고 한다. 서브넷1은 호스트 최소 60개, 서브넷2는 호스트 최소 32개, 서브넷 3은 호스트 최소 20개, 서브넷4는 호스트 최소 5개가 필요하다.

FLSM 하는 방법

  1. 네트워크 주소와 서브넷 마스크를 이진수로 나타낸다.
  2. 현재 호스트 비트로 표현할 수 있는 IP 주소가 몇 개인지 파악한다.
  3. 호스트 ID의 가장 첫 비트부터 네트워크 ID로 옮기면서 최소한의 필요한 IP 주소만을 포함하도록 한다.
  4. 네트워크 주소를 십진수로 변환하고 네트워크 ID의 비트수를 세어 접두어 표기법으로 나타낸다.

VLSM (Variable Length Subnet Mask)

기존 네트워크를 각각 다른 크기의 서브넷으로 나누는 방법이다.

각 서브넷의 규모를 고려하여 IP 주소가 분배된다.

하지만, 서브넷의 크기가 가장 큰 서브넷부터 순차적으로 IP를 분배해야 한다.

 

(ex) 호스트 256개의 기존 네트워크를 4개로 나누려고 한다. 서브넷1은 호스트 최소 100개, 서브넷2는 호스트 최소 50개, 서브넷 3은 호스트 최소 30개, 서브넷4는 호스트 최소 25개가 필요하다.

 

VLSM 하는 방법

  1. 네트워크 주소와 서브넷 마스크를 이진수로 나타낸다.
  2. 현재 호스트 비트로 표현할 수 있는 IP 주소가 몇 개인지 파악한다.
  3. 호스트 ID의 가장 첫 비트부터 네트워크 ID로 옮기면서 가장 큰 서브넷이 최소한 필요로 하는 IP 주소만큼을 포함하도록 한다.
  4. 가장 마지막 서브넷의 네트워크 주소로 3번 과정을 반복한다.
  5. 각 서브넷의 네트워크 주소를 십진수로 변환하고 네트워크 ID 비트수를 세어 접두어 표기법으로 나타낸다.

 

슈퍼넷팅 (Supernetting)

서브넷팅과는 반대로 여러개의 작은 네트워크를 하나의 큰 네트워크로 합치는 작업이다.

여러 네트워크의 중복되는 부분을 하나의 네트워크로 만들기 위해 사용하기도 한다.

 

'네트워크 > 기초' 카테고리의 다른 글

IP 주소  (1) 2023.09.04
OSI 7계층  (0) 2023.08.27
네트워크 프로토콜  (0) 2023.08.27
네트워크 기초 이론  (0) 2023.08.27
EAP (Extensible Authentication Protocol)
2023. 12. 15.

복수의 인증 프로토콜을 캡슐화시킬 수 있게 해줌 → 다양한 인증방식 선택 가능

⇒ 인증 (무선)프레임워크 (not 인증 매커니즘)

 

* 인증 프레임워크 : 사용자나 장치가 자신의 신원을 확인하고 시스템에 안전하게 액세스할 수 있도록 하는 시스템 또는 규정들의 집합이다. 보안 목적으로 사용자나 장치가 자원에 대한 적절한 권한을 가지고 있는지를 확인하는 것을 중심으로 합니다.

식별 및 인증, 권한 부여, 감사 및 모니터링, 단일 로그인, 다중 계층 보안을 제공한다.

 

concept

  • 확장 가능한 인증 프로토콜은 여러 인증 메소드를 지원하도록 설계된 프로토콜이다. 인증 데이터의 내용을 정의하지 않고 클라이언트와 인증 서버 간의 인증 통신의 구조를 지정한다. 인증에 사용되는 고유의 EAP 메소드에 의해 정의된다.
    • MD5-인증 확인
    • 일회성 비밀번호
    • 일반 토큰 카드
    • TLS(Transport Layer Security)다중 계층 보안
  • Radius는 Radius 서버와 관련 클라이언트 간에 EAP 데이터를 전송하는 데 사용되는 Radius 속성을 지정해 EAP를 이용한다. 그러면 Radius 서버가 이 EAP 데이터를 다양한 EAP 인증 메소드를 구현하는 백엔드 서버로 직접 전송할 수 있다.
  • 로컬 데이터베이스 또는 LDAP에서 사용자 항목의 값을 설정해 사용자를 인증하는 데 사용되는 EAP 메소드를 사용자 레벨에서 설정할 수 있다.

* LDAP(Lightweight Directory Access Protocol) : 사용자가 조직, 구성원 등에 대한 데이터를 찾는 데 도움이 되는 프로토콜이다. 여러 종류가 있다. LDAP 디렉터리에 데이터를 저장하고 사용자가 디렉터리에 액세스할 수 있도록 인증하기 위해 주로 사용된다.

  • 원래는 모뎀(신호 변환기)를 통한 PPP를 위해 개발되었으나, 지금은 LAN 연결, 무선 랜 연결 등에서 많이 활용한다.
  • 모든 데이터링크 계층에서 사용 가능하다. 즉, IP(3계층) 없이도 데이터링크(2계층) 상에서 직접 적용이 가능하다.
  • RFC에 정의되고 업데이트된다.

* RFC(Request for Commenets) : 컴퓨터 네트워크 공학 등에서 인터넷 기술에 적용 가능한 새로운 연구, 혁신, 기법 등을 아우르는 메모이다. 미국의 국제 인터넷 표준화기구인 IETF(Internet Engineering Task Force)에서 제공, 관리한다.

 

인증 요청과 응답

  • ID : 클라이언트 식별
  • Challenge : 클라이언트 신원 증명

Method

  • EAP-TLS
    • TLS 프로토콜을 사용하며 무선 벤더들 사이에서 널리 지원된다. 아직까지 가능한 EAP 표준 중 가장 안전한 것으로 여겨지며 모든 무선랜 하드웨어 및 소프트웨어 제조사들로부터 보편적으로 지원된다.
    • TLS(Transport Layer Security)
      • 전송 계층 보안은 인터넷 상의 커뮤니케이션을 위한 개인 정보와 데이터 보안을 용이하게 하기 위해 설계된 보안 프로토콜이다. 웹 사이트를 로드하는 웹 브라우저와 같이 웹 응용 프로그램과 서버 간의 통신을 암호화한다.
      • SSL(Secure Sockets Layer)에서 발전한 것이다. HTTPS는 HTTP 상위에서 TLS 암호화를 구현한 것으로 모든 웹 사이트와 다른 웹 서비스에서 사용된다. 따라서 HTTPS를 사용하는 웹 사이트는 TLS 암호화를 이용한다.
      • TLS 암호화는 데이터 유출 및 다른 공격으로부터 웹 애플리케이션을 보호한다. 암호화, 인증, 무결성(데이터의 위조 또는 변조 여부 확인)을 제공한다.
      • TLS 인증서란 인증 기관이 도메인 소유자에게 TLS 인증서를 발행한다. 서버의 공개 키와 더불어 누가 도메인 소유자인지에 대한 중요 정보를 포함하며 서버의 신원을 확인하는 데 중요하다.
      • TLS Handshake 순서를 사용하여 초기화된다. 사용자가 TLS를 사용하는 웹 사이트를 돌아다니면 클라이언트와 웹 서버간에 TLS Handshake가 시작된다.
      • TLS 버전 지정 → 암호 제품군 결정 → 인증서를 사용해 서버 신원 인증 → Handshake 완료 후 키 간의 메시지 암호화를 위해 세션 키 생성한다.
      • 데이터가 암호화, 인증되고 나면 MAC(메시지 인증 코드)와 함께 서명된다. 수신자는 데이터 무결성 보장을 위해 MAC을 확인할 수 있다.
    • EAP-PEAP(Protected EAP)
      • 기존 EAP에서는 시스템이 공개키 시스템을 사용하여 사용자를 연결한다. 사용자가 자격 증명을 입증하려고 하면 서버가 공개 키를 전달하여 트랜잭션을 완료한다. 그러면 사용자는 암호화 키를 가지고 공개 키를 복호화한다. ⇒ 문제 발생!! 비밀번호를 입력하고 키를 주고받다 보면 무방비 상태에 놓여 해커에게 시스템 입구를 활짝 열어준다.
      • 그래서 PEAP란? EAP의 전송 속도와 TLS 터널을 결합한 기술이다. 따라서 클라이언트와 서버 사이에서 이루어지는 전체 통신이 TLS 터널 내에서 보호를 받는다. PEAP는 특정 방법을 의미하지는 않고 다수의 EAP 매커니즘을 함께 결합하여 사용한다.
    • EAP - FAST(FlexibleAuthentication via SecureTunneling)
      • 실제 내부 인증은TLS 터널 내에서 하고, TLS 터널화를 위한 외부 인증은서버가 제공하는PAC를 사용. 비용이 많이 드는PKI 표준인증서 대신서버가 제공하는PAC를 사용
      • 상호 인증 및TLS 터널을 위한 상호 협상하고, 서버인증서가 아닌, 단말과인증서버 간에 공유된 패스워드 키(PAC)를 사용하여 상호인증하고,TLS 터널을 위한 협상을 함.
      • PAC(Protected AccessCredential) : 인증서버에서 생성된 공유 키. 상호 인증에 사용
      • TLS 터널을 설정한 후에,TLS 터널을 통해 실제적인사용자 인증을 수행
      • 인증서 기반 아님 :인증서(Certificate) 불필요
      • 표준 :RFC 4851 (시스코社 제안,2007년)

 

Packet

프레임 형태 : EAP는 모든 데이터링크 계층에서 사용 가능합니다. 3계층 없이도 2계층 상에서 직접 적용이 가능하다.

 

1 바이트 짜리 코드 부분에는 1부터 6 중에 하나가 들어가고 각각 나타내는 의미가 다르다. 이 코드 값에 따라 위의 데이터 필드의 해석이 달라진다.

 

 

타입 부분의 타입 1은 인증 수행자가 인증 요청자에게 username을 요구하는 request, response패킷을 나타낸다.

타입 2는 인증수행자가 인증요청자에게 암호 만료등을 알려주는 메시지다.

타입 3에는 NAK 라고 인증 수행자가 요청자에게 타입 4 이상의 인증 메소드들을 제시한다.

요청자가 제시된 메소드를 수용할 수 없으면 NAK 값 3을 넣어 반환한다.

 

 

Process

  1. 포트기반제어표준이 적용되어 인증되지 않은 포트들이 차단되고, 요청자가 서비스에 접근하여 수행장치와 EAP가 시작
  2. AP 에서 클라이언트 식별을 위한 ID 인증 요청
  3. 응답이 오면 인증 서버에 ID 식별 요청
  4. 인증 서버에서 클라이언트 신원을 증명하라는 Challenge 요청
  5. AP는 요청자에게 같은 Challenge EAP 인증 요청
  6. 요청자가 응답하면 EAP 인증 메소드가 포함된 인증 메시지를 교환해 인증 절차를 수행하고, 서버에서 생성된 키를 전송해 인증이 성공

 

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

PKI (공개 키 기반 구조)  (0) 2023.11.22
UTM 방화벽  (0) 2023.08.10
PKI (공개 키 기반 구조)
2023. 11. 22.

PKI란?

디지털 인증의 생성, 관리, 배포, 사용, 저장, 파기와 공개 키 암호화의 관리에 쓰이는 일련의 역할, 정책, 하드웨어, 소프트웨어, 절차의 총칭이다.

전자상거래, 인터넷 뱅킹, 민감한 정보를 담은 이메일처럼 다양한 네트워크 활동에 있어 정보의 안전한 전송을 위해 사용된다.

통신 주체를 식별하거나 오가는 정보를 검증하여 단순한 암호 뿐만 아니라 엄격한 확증이 필요한 경우 중요하다.

전자상거래의 안전성과 신뢰성을 확보하기 위한 인증, 무결성, 부인봉쇄 등의 요건을 충족하기 위한 인증 기술이다.

 

전자서명 기술을 활용하는데, 전자서명 기술을 효과적으로 이용하기 위해 공개키 암호 방식을 이용한다. 이를 구현하기 위해 요구되는 기술적, 제도적 기반이 공개키 기반구조 = PKI 이다.

 

공개된 키를 개인이나 집단을 대표하는 적절한 주체와 엮는 것이다. 인증기관에의 등록과 해당 기관에 의한 인증의 발행을 통해 성립된다.

보증의 정도에 따라 완전 자동으로 성립되기도 하고, 수동적인 작업이 무조건 필요하기도 하다.

 

PKI의 기능

  • 공개 키 인증서 저장소 및 해지
  • 키 백업 및 복구
  • 디지털 서명 부인 방지
  • 키 쌍 인증서 자동 업데이트
  • 주요 기록 관리
  • 교차 인증 지원
  • 기밀성 : 암호화를 통한 정보보호와 기밀유지
  • 접근제어 : 선택된 수신자만 정보에 접근할 수 있다.
  • 무결성 : 위조, 변조를 방지하기 위해 암호화, 전자서명
  • 인증 : 전자서명으로 행위자의 신원확인
  • 부인방지 : 전자서명을 통한 신뢰도 향상 (행위자 확인)

기밀성을 보장하기 위해서 상대방에게 데이터 전송 시 수신자의 공개키를 이용해 데이터를 암호화하여 전송한다. 그러면 수신자는 자신의 개인키를 이용해 복호화하여 데이터를 확인할 수 있다. 

따라서 송신자는 수신자의 공개키가 필요하다.

 

무결성을 보장하기 위해서 Hash 함수를 이용한다. '단방향 함수'로서 원본이 1비트만 변경되도록 하여 2개의 문서는 서로 다른 결과 값을 가진다. 원본 데이터에서 Hash 함수를 이용해 계산된 값이 Digest이다. 전자서명을 하면 데이터는 '원본데이터 + Digest(Hash화 된 데이터)'로 구성된다. 

 

부인방지 : 메시지의 송수신이나 교화 후 그 사실을 사후에 증명함으로써 사실 부인을 방지하는 것이다. 이를 보장하기 위해 전자서명을 이용하는데, 전자서명은 수신자의 개인키를 암호화하여 전송함으로써 구현할 수 있다. 개인키를 이용한 암호화는 자신의 사칭이 아닌 진짜 자신이 보낸 데이터라는 것을 알려주기 위한 방법일 뿐 제 3자가 데이터를 열지 못하게 하는 방법은 아니다.

 

PKI의 구성요소

시스템

  • 인증기관 (CA) : 암호화, 복호화 및 인증을 위한 서명 키 제공 및 할당을 담당한다. 인증서(공개 키와 특성 집합 포함)를 사용해 키를 배포한다. 인증서 발급, 취소 등 관리를 한다.
  • 등록기관 (RA) : 인증기관의 위임을 받아 사용자의 등록 및 인증서 분배처럼 인증기관의 역할 중 사용자와의 접촉이 필요한 부분을 담당한다. 인증기관에 인증을 요청하고 인증서 취소를 처리한다.
  • 디렉토리 (Drectory) : 인증서 및 취소목록 등 PKI관련 정보들을 저장 및 검색하는 장소이다. 인증서 등의 보관 및 정보를 제공하고, 효율적인 검색을 위한 서비스들을 지원한다.
  • 사용자 (End Entitry) : PKI의 최종 사용자 및 시스템을 포함하며 인증서와 비공개키를 가지고 있다. 서명 및 검증을 위해 인증서를 생성하거나 취소, 갱신을 요구한다. 

인증서

  • 공인인증서, 사설인증서 : 인증 정책 수립 및 운영, 인증서 발급자 신원확인, 개인정보 관리 등을 구현한다. 
  • 인증서 저장매체 : 전자문서의 형태로 구현되는 인증서를 저장하는 매체이며 대부분 PC내의 하드디스크이다. 보안성 강화를 위해 USB토큰이나 스마트카드를 이용하기도 한다.

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

EAP (Extensible Authentication Protocol)  (0) 2023.12.15
UTM 방화벽  (0) 2023.08.10
myoskin