IT 그리고 정보보안 279

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 암호화 없이 메세지 인증을 하는 것이다. 각 메세지 마다 인증 테그가 생성되고 첨부된다..

공개키의 분배 (Public-Key Distribution)

이번엔 공개키의 분배에 대해 알아보자. 공개키 같은 경우는 다른 나쁜놈이 송신자로 속여서 공개키를 전송하면 문제가 생긴다. 이말인 즉슨, 공개키 분배에 문제점이 생긴다 이말이다. 그래서 키 분배 방법이 여러가지 존재한다. 1. Public announcement (공개키 공개 발표) 2. Public available directory (공개적으로 사용 가능한 디렉토리를 이용한 분배) 3. Public-key authority (공개키 기관) 4. Public-key certificates (공개키 인증서) 5. Diffie-Hellman Key Distribution (Diffie-Hellman 키 분배) 하나씩 알아봅시다. 1.Public-key announcement (공개키 공개 발표) 자신의 공..

RSA (Rivest, Shamir, and Adleman) 알고리즘

RSA(Rivest, Shamir, and Adleman) 알고리즘에 대해 알아봅시다. 이름에서 풍겨져 오다 시피, Rivest, Shamir, and Adleman 3명이서 뚝딱뚝딱 만들었다. (1978) 공개키 암호 알고리즘 중 하나로, 역시나 암호, 디지털 서명 모두 사용가능하다. RSA에서는 평문, 암호, 키 모두 숫자이다. 가장 쉽게 설명하자면 이렇다. 평문을 나타내는 숫자에 E를 제곱하여 N 모듈러 연산한다. 그렇다면 여기서 키 쌍은 E와 N은 무슨 역할을 할까요. E와 N이 뭔지만 알면 암호문이 짠하고 나타난다. 그럼 (N,E)은 당연히 공개키겠지? 그르타 공개키가 맞다. 그리고 반대로 D와 N만 알면 복호화가 가능하다. 그럼 개인키는 (N,D)가 될 것이다. N은 엄청나게 큰 숫자중 소수(..

공개키 암호 (Public-Key Cryptography)

비대칭 암호라고도 불림. 기존에 우리가 계속 공부해오던건 대칭키 암호였다. 이놈은 문제점이 좀 있었지. 일단 첫번째, 키 분배가 굉장히 까다로웠다. 두번째, 너무 많은 키를 요구한다. 그런 이유로 공개키 암호화 라는 녀석이 등장한다. 그렇다고 대칭키를 안쓰는건 아니다. 공개키 암호화는 공개키, 비밀키 두가지를 한쌍으로 동시에 사용한다. RSA라는 친구가 특히 많이 사용된다. ( 요건 나중에 설명함) 일반적으로 공개키 알고리즘은 대칭키 알고리즘보다 속도가 좀 느리다. 공개키 암호화는 2가지 기능을 제공하는데, 암호/복호화와 디지털 서명이다. 1. 암호화/복호화 * 송신자는 수신자의 공개키를 이용하여 메세지를 암호화 한다. * 수신자는 송신자의 비밀키를 이용하여 메세지를 복호화 한다. 2. 디지털 서명 * ..

블록 암호 운영 모드 (Cipher Block Modes of Operation)

이번에는 블록암호의 운용 방식에 대해 알아보자. 하나의 키 하에 블록 암호를 반복적으로 안전하게 이용하게하는 절차를 말한다. 여러가지 방식들이 있다. 1. ECB (Electronic Code Book) 한국말로 번역하면 전자 코드북이다. 가장 간단한 구조를 가진 운용 방식이다. 평문을 여러 블록으로 나누어 각각 암호화는 방식을 말한다. Ci = Ek(Pi), Pi = Dk(Ci) 같은 암호화 키를 사용하기 때문에, 만약 여러 블록이 같은 값을 가지면 암호화한 값도 같다. 그래서 반복 공격에 취약하다. (Subject to block replay) 2. CBC (Cipher Block Chaining) 암호 블록 체인 방식이다. 각 블록이 암호화 되기 전에 이전 블록의 암호화 값과 XOR 연산을 하는 것..

반응형