컴퓨터

    FTP 서버 구축

    FTP 서버 구축

    오늘날 개인 수준에서는 굳이 서버를 마련해서 FTP 서버를 구축할 필요는 없지만 나의 경우에는 다음과 같은 이유로 FTP 서버 구축을 결심했다. 서버와 파일 공유를 쉽게 하기 위해서 서버 프로그램 배포를 자동화하려고 개인용 클라우드로 사용하려고 서버랑 파일공유를 쉽게 한다는 것이 이해가 되지 않을 수도 있는데, 서버는 오직 명령어로만 사용 가능하기 때문에 카카오톡이나 Google Drive 등 일상에서 파일 공유에 사용하는 방법이 전혀 통하지 않는다. 또 서버 프로그램을 자동화한다는 것은 GitHub 등에 커밋을 하면 자동으로 소스를 빌드하고, 결과물을 서버 컴퓨터로 전송해서 적용하는 시스템을 구축하는 것이다. 그래서 FTP 서버를 구축하고자 한다. 우선 Ubuntu 기반의 서버를 하나 마련하고, 거기에..

    ARP 스푸핑 공격 - 개념

    ARP 스푸핑 공격 - 개념

    경고 이 글의 내용은 오직 교육, 학습 목적으로 사용될 수 있습니다. 어떠한 방법이던 악의적인 공격은 관련 법률에 의해 처벌받을 수 있습니다. ARP 스푸핑 공격 ARP 스푸핑 공격은 ARP 시스템을 속여서 이루어지는 중간자 공격(Man-in-the-middle)이다. 이 공격의 결과로 공격자는 희생 컴퓨터가 공유기끼리 공유하는 정보를 엿볼 수 있다. 그 결과, 희생 컴퓨터에서 외부로 보내는 패킷을 모두 볼 수 있게 된다. 워낙 오래된 공격이지만 여전히 먹히는 곳이 있다. ARP 시스템은 OSI 7계층에서 MAC 주소를 사용하는 L2와 IP주소를 사용하는 L3를 이어주는 역할을 한다. IP주소는 단순히 목적지만 알려주고, 실제 전송은 MAC 주소로 이루어지기 때문에 이 둘을 매칭 시켜준다. Windows..

    RSA 암호화 - 개념편

    RSA 암호화 - 개념편

    RSA 암호화 RSA 암호화 - 개념편 RSA 암호화 - 수학편: RSA와 소수 RSA 암호화 - 수학편: 나머지 계산 RSA 암호화 - RSA의 동작 방식 RSA 암호화 - RSA의 작동 원리 비대칭키 암호화의 필요 1. AES와 같은 대칭키 암호화는 두 사람이 주고받는 정보가 빼앗기더라도 내용을 알 수 없게 할 수 있게 하였다. 대칭키 암호화는 매우 안전하고 간편하지만 매우 심오한 문제를 만들었다. "키 배송 문제" 두 사람이 대칭키 암호를 주고받으려면 우선 비밀키를 공유해야 하는데, 이 키를 전송하는 도중에 빼앗기면 암호는 아무런 소용이 없다. 그렇다고 키를 안 보내면 암호화를 할 수 없다. 이것이 키 배송 문제이다. 어떻게 하면 키를 안전하게 공유할 수 있을까? 2. 인터넷으로 파일이 공유되면서 ..

    해시(Hash)

    해시(Hash)

    컴퓨터가 다루는 정보의 양은 날로 많아지고, 그 중요도나 민감도도 날이 갈수록 올라가고 있다. 한 사람의 핸드폰에는 시간에 따른 사용자의 위치정보, 사용자가 매일 이용하는 웹사이트와 앱의 종류와 사용기록까지 오직 자신만이 알고 싶은 자료가 많다. 따라서 이러한 정보를 캐내려는 자로부터 소중한 것을 지키는 방법이 필요하게 되었다. 이 글에서는 해시를 이용하여 비밀번호를 저장하는 방법에 대해 다룬다. 해시(Hash) 해시란, 특별한 성질을 가진 함수를 통틀어 부르는 말이다. 한번 어떤 해시함수 $f(x)$를 두고 해시함수의 특징에 대해 알이 보자. 우선 해시함수는 어떤 값이던 입력이 될 수 있다. 문자 1개가 될 수도 있고 책 한 권의 내용 전체가 될 수도, 이 세계에 있는 모든 책의 내용이 입력이 될 수 ..

    데이터베이스 Pt. 1

    데이터베이스 Pt. 1

    컴퓨터가 무언가를 "기억"해야 할 일은 굉장히 많다. 컴퓨터는 사람의 이름, 생일부터 비밀번호나 수천 명의 이메일 같은 데이터를 다룰 수 도 있다. 하지만, 이러한 데이터를 단순히 텍스트 파일로 저장하는 것은 굉장히 불편하다. 텍스트 파일을 전혀 구조화되어있지 않고, 다루는 데이터가 많아지면 메모리 사용량과 처리 시간도 급증한다. 따라서 다량을 데이터를 다룰 때는 데이터베이스라는 것을 이용한다. 데이터베이스의 필요성 사용자의 신원을 저장하기 위해 다음과 같은 내용을 일반 파일에 저장했다. [ { "name":"민준", "birth":"2007/01/04", "sex":"M", "uid":"AFF34" }, { "name":"지유", "birth":"2007/04/06", "sex":"F", "uid":"..