IT 그리고 정보보안/Knowledge base 227

PKI (Public-Key Infrastructure)

자.. 이번에는 PKI(Public-Key Infrastructure).. 공개키 인증 구조에 대해 알아보자. 유저가 올바르게 공개키를 획득할 수 있도록 구현된 구조이다. PKI는 여러가지 요소로 구성이 되어있다. * 공개키 인증서 * 인증기관 (CA) * 저장소 * 사용자 * 등록기관 이중에 가장 중요한게 공개키 인증서 겠죠.. 이놈도 여러가지 요소로 구성돼있다 - 공개키 인증서 : 해당 공개키의 주인, 그에 맞는 개인키를 가지고 있는 놈이 누군지. - 인증서 정책 : 인증서가 어떤 방식으로 사용되나 - 인증서 경로 : 인증서 연결 경로 - 인증서 철회 리스트 (CRL, Certificate Revocation List) : 인증서 취소목록이다. 키가 유효한지..(X.509에 정의된 목록 이용) 일단 ..

X.509 Authentication Service

X.509 라는 인증 서비스에 대해 알아봅시다. 커버로스가 대칭암호 알고리즘을 사용한 인증이라면 이건 Authentication using asymmetric cryptosystem (비대칭 암호시스템 사용 인증) 이것의 한 종류라고 볼 수 있다. 쉽게 쉽게 설명하자면, 공개키 기반의 인증 시스템 표준이다. X.509를 알기 전에 X.500 부터 좀 알아야 한다. 1. X.500 이란? 전자 디렉터리 서비스를 전달하는 일련의 컴퓨터 네트워크 표준이다. 딱 이거다. "이런 형식으로 전자 디렉토리를 구성하면 니네가 굉장히 편하게 일할것이다." 이런느낌으로 디렉토리를 권고하는 것이다. 그렇다면 이게 X.509와 무슨 관련이?? 위키피디아 에서 그림을 하나 긁어왔다. 위 그림을 보면 디렉토리 중 X.509가 있..

커버로스(KERBEROS) 인증

케르베로스? 커버로스? 하튼 그리스로마 신화에 지옥을 지키는 머리 셋달린 강아지에 대해서 알아보자. 케르베로스라는 인증시스템! MIT에서 개발한 네트워크 인증시스템으로서 현재 IETF에서 표준으로 채택되어 있다. 어떠한 경우든 사용자는 서버에 있는 서비스에 접근을 한다. 이에 따라 항상 사용자를 위협하는 요소들이 존재한다. 커버로스는 이런 위협에 대하여 중앙 집중 인증 서버를 사용자에게 제공한다. telnet, ftp, pop과 서비스는 보통 사용자의 패스워드를 평문 형태로 전달하기 때문에 패킷 분석을 하면 다 뽀록난다. 따라서 인가되지 않은 사용자들은 접속할 수 없도록 통제해야 하므로 암호기술을 사용하여 안전하게 인증하는 것이 요구된다. 커버로스 시스템은 방금 전 포스트에 적은 Needham과 Schr..

니덤-슈로더 프로토콜 (Needham-Schroeder Protocol)

이번에는 키 교환 프로토콜 중 Needham-Schroeder 프로토콜이라는 녀석에 대해 한번 알아보자. 제작자 2명은 이름에 나와있다. 이 두사람이 1978년 대칭키와 trent 개념을 사용하여 제안함. 여기선 새로운 기관이 하나 등장한다. KDC(Key Distribution Center) 라는 기관이다. 이름만 보면 딱 직관적으로 키를 분배해주는 기관인 듯 싶다. 어떠한 과정을 거치는지 봅시다. 1. 최초 A는 KDC에게 A,B의 아이디 N1(nonce)을 전송한다. 2. KDC는 여러가지를 A에게 전송한다. - A와 B사이의 세션키 - B의 아이디 - N1 - A와 B의 세션키, A의 아이디를 T와 B의 세션키로 암호화 시킨 값 - 위 모든 내용을 T와 A의 세션키로 암호화 3. A는 B에게 A와..

OTP (One Time Password) 인증

OTP를 이용한 사용자 인증에 대해 알아보자. OTP란 One-Time Password의 약자로, 일회용으로 쓰고버리는 비밀번호라는 말이다. 그때 그때 난수를 생성하여 비밀번호로 사용하면 실시간으로 생기는 비밀번호니까 보안성이 아주 뛰어나다 볼 수 있다. OTP를 이용한 방식에 몇가지 방법들이 있다. 하나씩 살펴보자. 1. Challenge-response method (질의-응답 방식) 서버에서 난수를 생성하여 임의의 수를 만들고 클라이언트에게 그 값을 전송하면 클라이언트가 그 값으로 OTP를 생성하여 응답한 값으로 인증하는 방식이다. A를 클라이언트라고 보면 되고, B를 서버라고 봐라. 1. 최초 A와 B는 서로임을 검증할 수 있는 암호에 대해 동의한다. 2. A는 B에게 로그인 요청을 한다. "아무..

사용자 인증 (User Authentication) 종류

저번에 메세지 인증에 대해서 알아보았으니 이번에는 사용자 인증에 대해 알아보자. 사용자 인증이야 뭐 우리가 항상 하는 로그인 같은 것들이니.. 크게 어려울 내용 없다. 1. Password based authentication (패스워드 기반 인증) 가장 많이 쓰이지? 우리가 늘상하는 패스워드 기반 인증이다. 굉장히 취약하다. 패스워드 파일은 언제든지 도둑맞을 수 있다. 즉 오프라인 상에서도 당할 수 있다는 말임. 리눅스에서 패스워드 파일을 관리하기 위해 여러가지 보안을 해두었다. /etc/passwd 에 처음에 패스워드를 보관해두었었는데, others도 read 권한이 있었으므로 root만 접근할 수 있는 /etc/shadow에 패스워드를 해시함수를 돌려 그 해시값을 저장해 두었다. 이렇게 해두어도 패..

해시 충돌 탐지 - Birthday attack

이전에 해시함수에 대해선 한번 설명을 했다. 그럼 이번에는 이 해시함수의 해시값 충돌을 탐지하는 birthday attack 을 한번 알아보자. 이름이 생일? 공격인데, 왜그런가.. birthday attack 이란 이름은 birthday paradox 에서 시작한다. birthday paradox 란, 한 집단에 23명 이상의 사람이 모이면 그 중 생일이 같은 사람이 적어도 한쌍 이상 있을 확률이 1/2을 넘어간다. 라는 것을 birthday paradox라고 한다. 근데 이게 왜 paradox인데? 파라독스는 역설이란 말인데.. 일단 가정해보자. 내가 지금 속해 있는 집단에 k명이라는 인간들이 들앉아있다. "생일이 같은 사람이 있을 확률이 얼마나 될것 같니?" 라고 물어보면 대부분 생각이 "거의 없지..

HMAC 인증 (Hashed Message Authentication Code)

자.. 이번엔 HMAC에 대해 알아봅시다. 그래.. 비밀키를 이용한 해시함수를 사용한 MAC 인증 이게 HMAC이라고 했다. 일방향 해시함수를 이용해서 메세지 인증코드를 구성하는 방식 중 하나인데, 수정하지 않고 쓸 수 있는 해시 함수들을 만든다. 특히 소프트웨어에서 잘 돌아가고 코드를 무료로 제공하고 널리 쓰일 수 있도록 하기 위해 고안되었다. 딱히 정해진 해시함수를 사용하는 것은 아니지만 주로 SHA-1 을 사용하는데, 이 SHA-1 알고리즘이 MAC을 위해서 고안된 것이 아니기 때문에 바로 사용하는 것이 불가능하다. 그래서 SHA-1을 MAC으로 사용할 수 있도록 해주어야 한다. 일단 K+ 저놈은 키 값이다. 그냥 키가 아니라 패딩문자 0으로 [키][padding] 이렇게 채워져 있는 것. i pa..

해시 함수 (HASH Functions)

암호학에서의 해시함수를 알아보자. 해시함수가 고안된 가장 큰 목적은 "각 값들의 고유의 값을 부여해주기 위해서" 즉, 주민등록증 만들어주려고 생긴거다. 해시함수의 조건에는 여러가지가 있는데 하나씩 한번 따져보자. 1. 해시함수는 어떠한 크기의 원문 메세지도 입력이 가능해야 한다. 2. 해시함수는 항상 고정된 크기의 메세지를 출력해야 한다. 3. 해시함수 내부 과정에서 계산하는 양이 많으면 안된다. (즉, 입력값에 대한 계산이 간단해야 한다.) 4. Hash(x) = y 라고 했을 때, y를 가지고 역으로 x를 찾아낼 수 없다. 5. Hash(x) = Hash(t) 를 만족 할 때, x != t 를 허용하면 안된다. 뭐 이정도 조건이 있다. 가장 간단한 XOR연산을 이용한 HASH함수를 함 보자. 뭐 이래..

메세지 인증 (Message Authentication)

이번에는 인증에 관련된 내용을 공부해봅시다. 인증에 몇가지 요구사항이 있다. 메세지에는 명백한 송신지, 송신자가 있어야 한다. 메세지는 수정되어선 안된다. 가끔 메세지는 특정 시간 또는 주기적으로 전송된다. 메세지 인증에 대해 본격적으로 알아봅시다. 1. Authentication Using Conventional Encryption 다들 아는 알려진 암호화 알고리즘을 이용하여 인증을 하는 것이다. 오로지 송신자와 수신자만이 키를 공유한다. 에러 검출 코드, 타임 스탬프 그리고 시퀀스 넘버 등의 필드를 추가해 보낼 수 있다. 2. Message Authentication without Message Encryption 암호화 없이 메세지 인증을 하는 것이다. 각 메세지 마다 인증 테그가 생성되고 첨부된다..

반응형