보안
웹 애플리케이션 정찰 - 서브도메인 찾기
이 글은 "웹 애플리케이션 보안 - 정찰, 공격, 방어 세 단계로 배우는 웹 애플리케이션 보안의 모든 것"을 읽고 공부한 내용을 정리한 글입니다. 서브도메인 찾기 API 엔드 포인트를 테스트하기 이전에 도메인 구조에 익숙해져야 한다. 웹 애플리케이션은 단일 도메인으로 서비스하지 않는다. 서브도메인을 찾아내 기록하는 것은 웹 애플리케이션 정찰의 첫 단계이다. 우리가 궁금한 것은, "도메인이 인터넷에 연결되어 있을텐데, 이 인터넷에 액세스할 수 있는 다른 서버도 갖고 있는가?"이다. 그러므로 서브도메인 탐색을 통해 아직 방어가 덜 된 쉬운 타깃을 찾는다. API와 end point API(Application Programming Interface)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙..
VM ware, Kali Linux, DVWA로 웹해킹 환경 구축하기
해킹 공부 환경을 구축하려면 가상화 툴을 이용해야 한다. 실제 사용하는 시스템 자체에 설치하면 취약해지거나 건들다가 망가질 가능성이 있기 때문이다. 대표적인 가상화 환경 툴, 버추얼 머신으로는 VM ware와 Virtual Box가 있다. 원래 VM ware는 유료라고 알고 있었는데, 비상업적 목적 & 개인 사용자에게는 무료로 제공된다고 해서 VM ware를 설치해보기로 했다. VMware 설치 VMware 설치는 어렵지 않다. 윈도우 환경 내에서 설치하는 것이므로 간단한 선택 몇 번을 거치면 실행할 수 있다. KALI Linux(칼리 리눅스) 설치 KALI Linux 다운로드 다음으로 칼리 리눅스를 설치할 차례다. https://www.kali.org/get-kali/ Get Kali | Kali Li..
비대칭 암호화
비대칭키 암호화 알고리즘(Public Key Enctyption) 암호화에 사용하는 키와 복호화에 사용하는 키가 다른 암호화 알고리즘이다. 키 생성 알고리즘은 공개 키(Public key)와 개인 키(Private key)를 생성하고, 암호화 알고리즘은 수신자의 공개키를 사용하여 암호문을 생성하고, 복호화 알고리즘은 수신자가 자신의 개인키를 사용해 복호화하는 과정이다. 개인키를 가진 사람 이외에 다른 사람은 암호문의 내용을 확인할 수 없다. 암호화 알고리즘은 무작위 알고리즘을 사용해 암호화를 진행할 때마다 다른 암호문이 나온다. 트랩도어 함수(TDF, Trapdoor Function) 해시 함수와 같은 일방향 함수는 입력이 주어지면 출력을 계산할 수 있지만, 출력이 주어지면 입력을 계산할 수 없다. 트랩..
블록체인 암호학 - 블록 암호
블록 암호(Block cipher) 블록 암호는 정보를 블록 단위로 암호화하는 대칭키 암호 시스템이다. 입력 비트와 출력 비트가 정해져 있다. AES가 많이 사용된다. AES(Advanced Encryption Standard) 2001년 미국 표준 기술 연구소에서 제정된 암호화 방식이다. DES의 안전성에 대한 논란 이후 새로운 암호 프로토콜이 필요했고, 링델(Rijndael) 암호가 가장 적합한 알고리즘으로 선정되어 AES라는 표준으로 채택되었다. 128비트, 192비트, 256비트 세 가지 키 길이로 처리할 수 있다. 안전성을 바란다면 256비트를, 빠른 속도를 바란다면 129비트를 이용한다. 입력과 출력 사이에는 레이어(라운드)가 있다. 128비트에서는 10라운드, 192비트에서는 12라운드, 2..
블록체인 암호학 - 고전 암호, 현대 암호 시스템
치환 암호(Substitution Cipher) 문자 매핑에 관한 테이블이 주어지는 암호 방식이다. 입력 문자에 대해 테이블 매핑을 그대로 적용하여 암호화를 진행한다. 복호화는 이 테이블을 거꾸로 적용한 것이다. 테이블을 어떻게 만들어 내느냐에 따라 다양한 값이 만들어진다. 알파벳의 경우 a는 a~z까지 26가지 값을 매핑할 수 있고, b는 a가 매핑된 값을 제외한 25가지, c는 24가지... 그래서 $26!$의 키가 존재하게 된다. 단순하게는 시저 암호(Ceasar Cipher)를 예로 들 수 있다. 키가 단순한 덧셈 형태로 이루어져있어 a의 경우는 +3한 d에 매핑되는 방식이다. 치환 암호는 어떻게 파훼할 수 있을까? 빈도 분석을 사용해서 암호를 깰 수 있다. 시저 암호의 경우 같은 테이블을 이용한..
블록체인 암호학 - 전자 서명 2
공인인증서 전자 서명을 검증하는 데 필요한 공개키에다 소유자 정보를 추가한 증명서이다. CA(Certificate Authority, 인증기관)와 사용자 간 인증서 체결을 통해 사용자 공개키를 인증한다. 사용자는 검증키와 서명키 쌍을 보유한다. CA는 사용자 정보를 확인하고, 검증키와 사용자 정보에 서명해 인증서를 생성한 후 사용자에게 전달한다. CA에서 받은 인증키로 검증키를 인증하고, 서명을 확인한다. 사용자는 개인 서명키를 이용해 데이터나 자금을 거래할 수 있다. 서명 압축(Signature Aggregation) 블록체인에서 서명이 차지하는 비중은 크다. 효율성을 위해서 서명 크기를 줄여야 하는데, 이를 구현한 것이 서명 압축이다. 다수의 서명을 하나로 압축하는데, 개수에 상관 없이 일정한 크기로..
블록체인 암호학- 전자서명
전자서명 전자서명은 서명자가 전자문서에 서명했다는 사실을 확인할 수 있는 정보이다. 키 생성 알고리즘, 서명 알고리즘, 검증 알고리즘으로 구성된다. 키 생성 알고리즘 전자서명을 생성하는 서명키와 서명을 확인하는 검증키를 생성한다. 서명키와 검증키는 개인 별로 다르게 만들어진다. 서명키는 서명하는 본인만 아는 비밀정보이다. 검증키는 모든 이가 아는 공개된 정보이다. 서명키로부터 검증키를 도출할 수는 있지만, 검증키로부터 서명키를 계산할 수는 없다. 서명 알고리즘 문서를 받아 서명키를 사용해 서명값을 계산한다. 문서의 크기가 크다면 알고리즘 내부에서 해시 함수를 사용해 크기를 줄인다. 서명자만이 알고 있는 서명키를 사용해 전자서명을 만든다. 검증 알고리즘 문서와 서명값을 입력으로 받고, 검증키를 사용해 서명..
블록체인 암호학 - 작업 증명(PoW), 양자 안정성, 머클 해시 트리
작업 증명(Proof of Work) 합의 알고리즘 많은 분산 시스템에서는 합의 알고리즘을 통해 일을 처리한다. 합의란 다수의 참여자가 적절한 합의 방법을 이용해 통일된 의사결정을 내리기 위해 사용하는 알고리즘을 말한다. 상태 기계 복제(SMR, State machine Replication) 상태 기계가 같은 상태로 시작하면, 처리가 정상적으로 이루어졌을 경우 모두 같은 상태를 가지게 된다. SMR같은 시스템은 일부가 고장나거나 악의적인 행동을 보여도 전체 시스템은 정상적으로 동작한다고 보장해야 한다. CFT(Crash Fault Tolerant) 서버가 단순히 고장난 형태에 대응할 수 있는 알고리즘이다. BFT(Bizantine fault Tolerant) 서버가 악의적인 행동을 보일 때 대응할 수 ..