목록전체 글 (111)
Shine's dev log
1. Secure Protocols 흔히 tcp/ip 5계층에서 보안 관련된 프로토콜은 많이 존재한다. 대표적인 예를 들어보면 다음과 같다. 1) Application Layer - HTTPS, SSH, PGP, S/MIME2) Transport Layer - SSL/TLS3) Network Layer - IPSec, VPN4) Data Link Layer - L2TP 오늘 정리해볼 내용은 이 중에서도 Network Layer를 책임지는 VPN이라는 녀석이다. 2. Private Network 보통 사용자들이 인터넷에 접속하여 웹서핑을 하거나 유튜브를 볼 때, ISP(kt,skt,lg같은 업체)의 통신망을 사용한다. 그리고 대가로 사용료를 지불한다. 이 때 사용하는 네트워크를 public networ..
1. 개요 https://github.com/godeastone/VotingProgram_with_C 사용자 인증을 진행할 때 사용하는 방법 중 하나가 바로 MAC(Message Authentication Code)이다. 본 프로그램은 기본적으로 하나의 서버에 여러명의 클라이언트들이 접속하여 투표를 진행할 수 있는 구조이다. 클라이언트가 서버가 생성한 투표 항목 중 하나를 선택하면, 선택 결과를 이용해 HMAC를 생성한다. 서버는 받은 결과로 만들어낸 HMAC과 클라이언트로부터 받은 HMAC을 비교하여 메시지 인증을 진행한다. 통신 – 소켓 통신 이용HMAC – openssl의 HMAC 관련 라이브러리 이용signal – 알람을 핸들링하는 signal handler를 이용해 투표 종료 3. 실행예시..
0. 개요 https://github.com/godeastone/Chatting-Program 자바를 활용하여 1:1로 통신할 수 있는 채팅 프로그램을 개발하였다. 일반적인 채팅 프로그램이 아니라 암호화를 적용한 채팅 프로그램이다. 서버와 클라이언트는 대칭키 암호화(AES)를 통해 서로의 메시지를 암호화/복호화 하여 통신한다. 이 때 사용되는 대칭키(비밀키)는 클라이언트가 생성하여 비대칭키 암호화(RSA)를 통해 서버와 공유한다. 전체적은 구조는 아래 그림과 같다. 1. 채팅 프로그램 구현 채팅 프로그램이라는 것이 두 명 이상의 사용자가 서로 문자열을 주고받는 행위라고 할 수 있다. 본 프로그램에서는 두명의 사용자가 채팅을 하는 상황을 가정하는데, 한 명은 Server이고 다른 한명은 Client이..
1. Secure Protocols 흔히 tcp/ip 5계층에서 보안 관련된 프로토콜은 많이 존재한다. 대표적인 예를 들어보면 다음과 같다. 1) Application Layer - HTTPS, SSH, PGP, S/MIME 2) Transport Layer - SSL/TLS 3) Network Layer - IPSec, VPN 4) Data Link Layer - L2TP 오늘 정리해볼 내용은 이 중에서도 Transport Layer을 책임지는 SSL/TLS라는 녀석이다. (엄밀히 따지면, SSL/TLS가 Transport Layer에 속한 것은 아니다. 자세한 내용은 뒤에 추가적으로 설명하겠다.) 2. SSL(Secure Socket Layer) SSL이란 직역해보면 보안 소켓 레이어라는 뜻으로, 인..
1. 디지털 서명 메시지 인증이란 올바른 사용자에게 메시지가 변조되지 않고 도착하는 것을 인증하는 것이다. 앞서 메시지 인증을 하는 방법으로 MAC(Message Authentication Code)를 알아보았는데, MAC은 메시지 인증은 가능하지만 부인방지가 불가능하다는 단점이 있었다. 메시지 인증을 보장하면서 부인방지(non-repudiation) 까지 보장하려면 디지털 서명을 이용해야 한다. '디지털 서명' 이라는 이름에서 알 수 있듯이, 디지털 서명은 현실세계의 싸인이나 지장을 찍는 등의 서명 행위를 컴퓨터 세계에 실현시킨 기술이다. 2. 디지털 서명 절차 그렇다면 어떤 식으로 디지털 서명을 진행할 수 있는지 알아보자. 간단하게 말하면, 디지털 서명은 공개키 암호화를 역으로 수행함으로써 실현된다...
1. 파일시스템 파일시스템은 파일을 저장하고 읽는 시스템이다. 파일시스템을 통해 영상을 저장하고, 음악을 재생하고, 보고서를 저장하는 등 사용자는 파일 시스템을 항상 사용한다. 운영체제가 프로세스나 쓰레드를 processor가 abstract 해서 사용했고, Virtual Memory system이 메모리를 관리했다면, 파일 시스템은 storage를 abstract 해서 관리하는 것이다. 2. 파일(File)과 디렉토리(Directory) 컴퓨터 입장에서 파일이란, 관계있는 정보를 모아서 저장장치에 저장해놓고, 이름을 붙인 녀석이다. 운영체제는 또한, 컴퓨터의 상태를 보여줄때 pseudo file 로 보여주기도 하고, 메모리 외에 있는 대부분의 장치, 정보들은 모두 파일로 관리한..