보안 & 보안
-
서버 인증 (JWT)보안 & 보안 2019. 8. 17. 20:33
JWT JWT(Json Web Token)은 토큰 기반 인증 방식으로, 사용자의 세션 상태를 저장하는 게 아니라 필요한 정보를 토큰 body에 저장해 사용자가 가지고 있고 그것을 증명서처럼 사용합니다. 사용자는 Access Token(JWT Token)을 헤더에 실어 서버로 보내게 됩니다. 토큰을 만들기 위해서는 Header, Payload, Verify Signature가 필요합니다. Header: Header, Payload, Verify Signature 정보를 암호화할 방식(alg), 타입(type) 등이 들어감 JWT인 토큰의 유형이나 HMAC SHA256 또는 RSA와 같이 사용되는 해시 알고리즘이 무엇으로 사용했는지 등 정보가 담김 Payload : 서버에서 보낼 데이터가 들어감. 일반적으로..
-
서버 인증 (세션/쿠키 기반)보안 & 보안 2019. 8. 17. 20:31
인증은 왜 필요할까? A와 B의 유저가 은행 사이트에서 각 본인의 잔액을 확인하기 위해 로그인을 하고 본인들의 잔액을 확인할 수 있습니다. 여기서 로그인은 A와 B를 구분하는 인증으로 볼 수 있습니다. 또한, A의 잔액을 B나 다른 사용자에게 노출시키면 안되므로 보안으로도 볼 수 있습니다. 현재 가장 많이 사용하는 통신 방식은 HTTP 방식입니다. HTTP의 특징으로 stateless가 있습니다. 이러한 특징으로 인해, 만약 은행 사이트에 인증과 관련된 내용이 없다면 로그인을 한 뒤에 메인 페이지로 이동했을 시, 정보가 사라져 어느 사용자인지 알 수 없습니다. 따라서 사용자마다 다른 정보를 노출하고 저장할 때, 인증은 필수적으로 가져가야 합니다. 아래에서는 다양한 인증 방식과 장단점을 설명합니다. 헤더에..
-
SSL Pinning보안 & 보안 2018. 12. 18. 20:35
ssl pinning은 HPKP (HTTP Public Key Pinning)에서 주로 사용되는 용어입니다. 이미 잘 알려져 있다시피 SSL/TLS 로 이루어진 암호화 통신은 중간자 공격 (Man in the Middle) 에 취약합니다. 특히 요즘에는 여러 보안장비들이 SSL Decryption 기능을 제공하며 이 중간자 공격 (Man in the Middle) 형태로 SSL 및 TLS 세션을 복호화 하여 내용을 검증하도록 되어 있습니다. 이 때 보안장비는 공격자와 마찬가지로 암/복호화에서 사용할 인증서를 임의로 교체하여 중간에서 데이터를 복호화 하여 검증 하도록 구성되어 있습니다.위 예제와 같이 클라이언트 (유저) 는 최종적으로 중간의 보안장비 또는 공격자가 제공한 인증서를 기반으로 암호화 통신을 진..
-
TLS (Transport Layer Security)보안 & 보안 2018. 12. 18. 19:32
TLS란?인터넷에서의 정보를 암호화해서 송수신하는 프로토콜 넷스케이프 커뮤니케이션스사가 개발한 SSL(Secure Sockets Layer)에 기반한 기술로, 국제 인터넷 표준화 기구에서 표준으로 인정받은 프로토콜입니다. 표준에 명시된 정식 명칭은 TLS지만 아직도 SSL이라는 용어가 많이 사용되고 있습니다. 흔히 SSL이라 부르는 것들의 대부분은 TLS입니다. SSL은 POODLE, DROWN 등의 취약점이 발견되어 현재 사용되지 않는다고 보면 됩니다. TLS를 사용해 암호화된 연결을 하는 HTTP를 HTTPS(Secure)라고 하며, 웹사이트 주소는 HTTPS로 시작합니다. 기본 포트 또한 80번이 아닌 443번을 씁니다.TLS와 HTTPS를 혼동하는 경우가 많은데, 둘은 유사하긴 하지만 다른 개념입..
-
스니핑보안 & 보안 2017. 4. 12. 16:24
스니핑은 네트워크 패킷을 가로채서 분석하는 해킹기법입니다. 아래는 파이썬을 사용한 간단한 스니핑 프로그램 예제입니다.from socket import * import os def sniffing(host): # 아래 값들은 소켓을 생성할 때 프로토콜을 지정하는 세 번째 인자로 사용 # 윈도우는 프로토콜에 관계없이 들어오는 모든 패킷을 가로채기 때문에 IP를 지정해도 무관하지만 유닉스나 리눅스는 ICMP를 가로채겠다는 것을 명시적으로 표시해야함 if os.name == 'nt': socket_protocol = IPPROTO_IP else: socket_protocol = IPPROTO_ICMP # socket_protocol로 지정된 프로토콜을 이용하는 Raw 소켓을 만들고 호스트와 바인드 sniffer..
-
패스워드 크래킹보안 & 보안 2017. 3. 28. 21:22
1. 유닉스(리눅스) 패스워드 크래킹유닉스나 리눅스는 기본적으로 사용자의 패스워드를 MD5 해시값으로 변경하여 관리하고 있습니다. 예를 들어, abcd 아이디의 패스워드가 1234라고 하면 1234에 대한 MD5 해시값인 81 dc 9d db 52 d0 4d c2 00 36 db d8 31 3e d0 55를 사용합니다. 그런데 test 아이디를 가진 사람의 패스워드도 1234라고 하면 문제가 발생할 수도 있습니다. abcd 아이디를 가진 사람이 우연히 test의 비밀번호 MD5값이 동일하다는 것을 안다면 비밀번호가 1234라는 것을 알 수 있기 때문입니다. 그래서 이런 문제를 해결하기 위해 salt라 부르는 2개의 문자를 원래 패스워드에 추가한 후 MD5 해시를 구성하는 매커니즘을 사용하고 있습니다. 다..
-
알려진 평문 공격 (기지 평문 공격) - Known-plaintext attack보안 & 보안 2017. 3. 27. 21:15
기지 평문 공격은 공격자가 평문과 그를 암호화한 암호문을 모두 알고 있을 때 사용할 수 있는 암호 해독 기법들을 가리킵니다. 이 경우 이미 알고 있는 평문을 크립(crib)이라고 부르기도 합니다. 이미 알고 있는 평문과 암호문을 바탕으로 비밀 키를 알아내기 위해 사용합니다. 암호해독가가 암호를 해독하기 위해 의미 없어보이는 암호문만 보아서는 많은 정보를 얻기 힘들지만 암호문 안에 이미 알고 있는 평문이 포함되어 있다면, 그 사실이 암호문과 평문 사이의 관계를 추정하기 위한 단서가 될 수 있습니다.AES 등의 현대 암호체계는 기지 평문 공격의 영향을 받지 않는 것으로 알려져 있지만 예전 버전의 ZIP 파일 포맷에 사용되는 PKZIP 스트림 암호화 알고리즘은 기지 평문 공격에 취약합니다. 이 알고리즘으로 암..
-
무차별 대입 공격 (Brute Force Attack)보안 & 보안 2017. 3. 27. 21:04
개요무차별 대입 공격이란 조합 가능한 모든 문자열을 하나씩 대입해 보는 방식으로 문제를 푸는 것인데, 얼핏 무식하다고 생각할 수도 있겠지만 항상 정확도 100%를 보장한다는 점에서, 자원만 충분하면 가장 무서운 방법입니다. 이론적으로 가능한 모든 경우의 수를 다 검색해 보는 것이라 정확도 100%가 항상 보장되니, 암호학에서는 가장 확실한 방법으로 통용되고 있습니다. 무엇보다도 암호 확인 작업이라는 것이 손으로 입력한 문자열의 동일 여부를 확인하는 것이기 때문에, 가능한 경우를 하나씩 대입하다 보면 언젠가는 암호를 찾을 수 있게 되는 식입니다. 다만 정말로 그냥 무식하게 하는건 아니고, 숫자만 섞어서 대입해보기 한번, 로마자만 섞어서 대입해보기 한번 이런식으로 하다가 안되면 나머지를 순차적으로 하는 식으..
-
SSL (Secure Socket Layer)보안 & 보안 2017. 3. 27. 20:27
넷스케이프사가 개발한 인터넷 상에서 정보를 암호화하여 송수신하는 프로토콜입니다. WWW나 FTP등의 데이터를 암호화하여 프라이버시에 관한 정보나 크레딧카드 번호, 기업 비밀등을 안전하게 송수신할 수 있습니다. SSL은 공개키 암호나 비밀키암호, 디지털 증명서, 해쉬함수등의 시큐리티 기술을 조합하여 데이터의 도청이나 변경, 위장을 방지할 수가 있습니다. OSI 모델에서는 세션(5계층)과 트랜스포트(4계층)의 사이에서 동작하여 상위 프로토콜을 이용하는 어플리케이션에서는 특별히 의식할 필요없이 투과적으로 이용할 수 있습니다.
-
암호 (대칭키 암호, 공개키 암호)보안 & 보안 2017. 3. 14. 22:18
이전에 암호화에 대해 정리한거 같은데 계속이해가 안되서 다시 한번 정리합니다...대칭키 암호(Symmetric-key Cryptography)대칭키 암호란 암호화에 사용되는 암호화 키와 복호화에 사용되는 함호화키가 동일한 암호화 기법입니다.대칭키 암호 방식으로 암호화한 정보를 누군가에게 보낼 때 암호키도 함께 보내야하는데 암호키 자체는 암호화가 되지 않은 평문으로 분실하거나 타인에게 노출되면 보안에 매우 취약해집니다. 키 전달 및 관리에 어려움이 있지만 대칭키 암호는 암호화 연산 속도가 빠르기 때문에 효율적인 암호 시스템을 구축할 수 있다는 장점이 있습니다.대칭키 암호화 방식은 데이터를 변환하는 방식에 따라 블록암호와 스트림 암호로 구분됩니다.블록암호블록암호는 고정된 크기의 블록 단위로 암호화, 복호화 ..