본문 바로가기

개념정리

(32)
6. 패딩과 운영모드 저번 시간에는 AES에 대하여 공부하였다. 이번 시간에는 평문을 블록 단위로 만드는데 사용하는 패딩과 블록 암호의 운영모드에 대하여 공부할 것이다. 1. 패딩 블록 암호는 블록 단위로 암호화를 하므로 입력의 길이가 정확하게 블록 크기의 배수가 되어야 한다. 하지만 일반적으로 평문의 크기는 블록 크기의 배수가 되지 않는다. 이러한 문제를 해결하기 위해 패딩을 한다. 패딩은 평문에 데이터를 붙여서 블록 크기의 배수가 되도록 만드는 과정이다. 블록 암호로 평문을 암호화할 때 평문은 패딩을 거친 뒤 여러 블록으로 나뉜다. 그리고 각각의 블록은 블록 암호의 운영모드에 따라 암호화된다. 패딩된 암호문을 복호화할 때는 복호화된 평문에서 패딩을 제거해야 원래의 평문을 얻을 수 있다. 따라서 패딩된 암호문의 수신자는 어..
2. Web 저번 시간에 HTTP/HTTPS에 대하여 공부하였다. 이번 시간은 Web에 대하여 공부할 것이다. 1. Web 웹은 인터넷을 기반으로 구현된 서비스 중 HTTP를 이용하여 정보를 공유하는 서비스이다. 여기서 정보를 제공하는 주체를 웹 서버(Web Server), 정보를 받는 이용자를 웹 클라이언트(Web Client)라고 한다. - 프론트 엔드(Front-end) : 이용자의 요청을 받는 부분, 이용자에게 직접 보여지는 부분으로 웹 리소스로 구성 - 백 엔드(Back-end) : 요청을 처리하는 부분 2. Web Resource 웹 리소스는 웹에 갖춰진 정보 자산을 의미한다. 웹 브라우저의 주소창에 "https://example.com/index.html" 주소를 입력하면 example.com에 존재하는..
1. HTTP/HTTPS 드림핵을 참고하여 웹 해킹에 대하여 공부할 것이다. 이번 시간은 웹 해킹에 필요한 배경 지식인 HTTP/HTTPS에 대하여 공부할 것이다. 1. 인코딩 컴퓨터의 모든 데이터는 0과 1로 구성된다. 0과 1로 우리의 문자를 표현하는 것은 약속 덕분이다. 이러한 약속들을 인코딩 표준이라고 부른다. 대표적으로 1) 아스키(ASCii)와 2) 유니코드(Unicode)가 있다. 1) 아스키 코드(ASCii) 아스키 코드는 7비트 데이터에 대한 인코딩 표준이다. 33개의 출력 불가능한 제어 문자들과 공백을 비롯한 95개의 출력 가능 문자들로 총 128개로 이루어져 있다. 2) 유니코드(Unicode) 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다. 유니코드에서 한 문자는 ..
6. pwntools 저번 시간에는 gdb 디버거에 대하여 공부하였다. 이번 시간은 pwntools에 대하여 공부할 것이다. 1. pwntools 프로그램에 대하여 익스플로잇을 수행할 때 효율적이고 편하게 도움주는 파이썬 모듈이다. 파이썬으로 여러 개의 익스프로잇 스크립트를 작성하다보면 자주 사용되는 함수들이 있다. 예를 들어 패킹 함수, 언패킹 함수들은 익스프로잇 과정에서 항상 필요하다. 이런 함수들을 반복적으로 구현하는 것은 비효율적이기 때문에 시스템 해커들이 편리성을 위해 제작하였다. 2. pwntools 설치 pwntools는 깃허브에 오픈 소스로 공개되어 있다. 1) 밑에 명령어를 이용하여 리눅스에 pwntools를 설치한다. $ apt-get update $ apt-get install python3 python3..
1. 리버스 엔지니어링 리버스 엔지니어링에 대하여 공부할 것이다. 드림핵을 참고하여 공부하며 요약한다. 1. 리버스 엔지니어링 리버스 엔지니어링은 완성된 제품을 해체하고 분석하여 구조와 기능, 디자인을 파악하는 행위를 말한다. 리버싱 또는 역공학이라고도 한다. 리버싱에 능숙해지기 위해 많은 지식과 기술, 노력이 들어간다. 많은 경험을 쌓은 뒤에도 배경 지식만으로는 해결하기 어려운 문제를 맞닥뜨리기도 한다. 2. 리버싱의 용도 1) 좋은 예 판매된 지 너무 오래되어 제작사가 이미 개발을 중단한 프로그램에 대한 패치가 필요할 경우 2) 나쁜 예 상용 프로그램을 구매하지 않고 무료로 이용하기 위해 쓰는 키젠 프로그램이나 시리얼 넘버 생성기, 크랙 등의 불법 프로그램도 리버싱을 통해 만들어진다. 게임핵을 만들 때도 리버싱이 사용된다...
5. 블록 암호 : AES 저번 시간은 DES에 대하여 공부하였다. 이번시간은 2001년에새롭게 표준으로 선정된 블록암호 AES에 대하여 공부할 것이다. 1. AES AES는 SPN이라는 암호 구조를 사용하는 블록 암호이다. SPN은 곱암호의 일종으로, S-box를 사용하는 치환과 P-box를 사용하는 순열을 여러 라운드에 걸쳐 반복한다. 페이스텔 구조와 달리 라운드마다 입력 전체에 라운드 함수를 적용하기 때문에 같은 수의 라운드를 사용할 때 SPN이 페이스텔 구조에 비해 두배의 암호학적 안전성을 갖는다. (페이스텔 구조는 블록을 반으로 나눠 라운드마다 사용하기 때문이다.) 2. AES 구조 AES는 라운드마다 128비트 크기의 블록을 암호화한다. 키의 길이는 128, 192, 256비트 중 하나를 선택할 수 있고, 라운드 수는 ..
4. 블록 암호 : DES 저번 시간에는 현대 암호에 대하여 공부하였다. 이번시간에는 블록암호인 DES에 대하여 공부할 것이다. 1. DES DES는 미국의 국가 안보국에서 IBM의 루시퍼 알고리즘을 개량하여 만든 대칭키 암호이다. DES는 루시퍼와 달리 키 길이를 56비트로 줄였고, 내부에서 사용하는 알고리즘도 변경하였다. 하지만 현대에는 DES에 대한 공격 기법이 많이 연구되어 더이상 블록 암호 표준으로 사용하지 않는다. DES는 8바이트(64비트)를 한 블록으로 암호화하는 블록 암호이다. 전체 구조는 초기 순열, 페이스텔 구조의 16 라운드, 최종 순열 그리고 각 라운드에 사용되는 48비트의 키를 생성하는 키 생성 함수로 구성된다. 1) 순열, 치환, 곱 암호 DES는 혼돈 성질을 만족하기 위해 치환, 확산 성질을 만족하기 ..
3. 현대 암호 저번 시간에는 고전 암호에 대하여 공부하였다. 이번 시간에는 현대 암호에 대하여 공부할 것이다. 1. 혼돈과 확산 안전한 암호 시스템은 1) 혼돈과 2) 확산의 성질을 만족해야한다. 1) 혼돈 혼돈은 암호문에서 평문의 특성을 알아내기 힘든 성질이다. 단일 치환 암호를 사용하여 같은 두 평문을 암호화하면 출력된 두 암호문은 같다. 공격자는 암호문을 보고 평문이 무엇인지 유추하지는 못하지만 암호문을 생성한 두 평문이 같다는 사실은 안다. 따라서 단일 치환 암호는 혼돈 성질을 만족하지 못하는 암호이다. 2) 확산 확산은 평문의 작은 변화가 암호문의 큰 변화로 이어지는 성질이다. 대부분의 고전 암호에서 찾아보기 힘들다. 2. 대칭키 암호 시스템 송신자와 수신자가 같은 키를 공유해야 하는 암호 시스템이다. 같은 ..