목록Hack/DreamHack(로드맵) (94)
CIDY

*웹 브라우저 웹 브라우저는 서버와 HTTP통신을 대신해주고, 수신한 리소스를 시각화하여 이용자의 접근성을 향상시켰다. -> 뛰어난 이용자 경험(UX)을 제공하는 소프트웨어라고 할 수 있다. 이용자는 웹 브라우저를 쉽게 이용할 수 있지만, 그 과정에서 내부적으로 어떤 일이 일어나는지는 모른다. 우리가 주소창에 어떠한 주소를 입력하면, 브라우저는 다음과 같은 동작을 수행한다. 웹 브라우저의 주소창에 입력된 주소 해석(URL분석) -> 해당 입력에 대응하는 주소 탐색(DNS요청) -> HTTP를 통해 해당 서버에 요청 -> 서버의 HTTP응답 수신 -> 리소스 다운로드 및 렌더링(HTML, CSS, Javascript) *URL Uniform Resource Locator -> 웹에 있는 리소스의 위치를 표..
*웹 인터넷 기반 서비스 중 HTTP를 이용해 정보를 공유하는 서비스를 말한다. 정보 제공 주체를 웹 서버(Web Server), 정보를 받는 이용자를 웹 클라이언트(Web Clinet)라고 한다. -> 여기서 HTTP는 웹상의 통신 규칙 같은 것이다. 프론트엔드: 웹 서비스 구조에서 이용자의 요청을 받는 부분 -> 이용자에게 직접 보여지는 부분으로, 웹 리소스로 구성된다. 페이지가 보여주는 모든 정보들은 웹 리소스에 명시되어 있다. (페이지에 담기는 글, 글자들의 색과 모양, 배경 색상, 이미지 크기나 투명도 등) 백엔드: 해당 요청을 처리하는 부분 *웹 리소스 웹에 갖춰진 정보 자산이다. 웹 브라우저 주소창에 http://dreamhack.io/index.html 주소를 입력하게 되면, dreamha..

*인코딩 인코딩 표준에는 아스키와 유니코드가 있다. 아스키는 7비트 데이터에 대한 인코딩 표준으로, 알파벳과 특수 문자 등을 표현할 수 있다. 컴퓨터 개발 초기에는 문자권에 따라 사용하는 인코딩 표준도 상이했지만 이는 호환성 문제로 이어져 유니코드라는 새로운 표준을 이용하게 되었다. 유니코드에서 한 문자는 최대 32비트로 표현되며, 32비트로 표현 가능한 정보의 가짓수는 2^32 (약 42억 개)이므로 전 세계의 문자를 표현하고도 남는다. 이와 같은 인코딩을 통해 데이터를 컴퓨터에 저장하고, 웹 서버를 통해 공유할 수 있다. *통신 프로토콜 클라이언트가 웹 서버에 존재하는 리소스를 받아 보기 위해서는 웹에 해당 리소스 제공을 요청하는 과정이 필요하다. 이 과정에서 클라이언트가 서버에 하는 행위를 요청(R..
전자 서명 알고리즘은 공개키 알고리즘에서의 개인키로 서명을 생성하고, 공개키로 그 서명에 대한 검증을 진행한다. 여기서 서명을 생성하는 개인키를 서명키(Signing Key), 검증에 사용되는 공개키를 검증키(Verification Key)라고 한다. 전자 서명의 목적은 메시지의 무결성과 부인 방지에 있다. *기본 원리 검증키는 앞서 말했듯 공개된 키이고, 서명키는 서명자만 알고 있어야 하는 비밀키이다. 메시지를 서명키로 암호화하는 과정을 서명 작성(Signing), 서명을 검증키로 복호화하고 받은 메시지와 비교하는 과정을 서명 검증(Verification)이라고 한다. RSA의 경우 공개키로 암호화를 진행하여 데이터를 송신한 뒤, 수신자가 이를 비밀키로 복호화 하였다면, 서명의 경우 비밀키(서명키)로 ..

해시 함수는 임의 크기의 데이터를 입력받아 고정된 크기의 데이터를 반환하는 함수이다. 해시 함수의 반환값을 해시 값이라고 하며, 암호학적 해시 함수(Cryptographic Hash Function)는 해시 함수 중 특정 성질을 만족하는 함수를 뜻한다. 위 그림을 보면 입력값의 크기에 상관없이 해시 함수를 거친 출력값의 크기가 동일하다. *암호학적 해시 함수(Cryptographic Hash Function) -> 제 1 역상 저항성(Preimage Resistance): 암호학적 해시 함수 H에 대해 y가 주어졌을 때, H(x) = y를 만족하는 x를 찾는 것이 어렵다. 즉 일방향 함수여야 한다. -> 제 2 역상 저항성(Second Preimage Resistance): 암호학적 해시 함수 H에 대해..
RSA암호의 안전성 기반은 아주 큰 두 소수의 곱으로 이루어진 합성수를 인수분해하기 어렵다는 사실에 있다. -> 거꾸로 말하면, RSA로 암호화 할 땐 합성수의 소인수분해가 어려워지도록 각 인자를 적절히 설정해야 안정성을 보장받을 수 있다는 것이다. 그리고 이전 현대 암호 파트에서 말했듯이, 공개키 암호의 특성상 대칭키 암호 만큼의 안전성을 보장받기 위해서는 긴 키가 필요하며, RSA암호의 경우 2048비트 이상의 키가 권장된다. -> 그만큼 훨씬 많은 연산량이 요구되며, 많은 데이터를 여러 번 암호화해야하는 네트워크 통신에는 적절하지 않다. *RSA암호 알고리즘 RSA암호는 공개키 암호로, 공개키(public key)와 개인키(private key) 두 개가 이용된다. 공개키의 경우 암호화 시 사용되는..
대칭키 암호를 이용하기 위해서는 송/수신자 간 키 공유가 필수적 -> 데이터 교환 이전에 키 교환 절차가 선행되어야 함. 하지만 현대 유무선 환경에서 안전한 키 교환은 어렵다. -> 대칭키 암호가 아무리 안전해도 키 교환 과정이 안전하지 않으면 무슨 소용? -> 공개된 채널을 통해 키를 교환해도 외부인은 키를 알 수 없게 하는 공개 키 교환 알고리즘 고안 Diffie-Hellman 키 교환 절차(Diffie-Hellman key exchange protocol)는 최초의 공개 키 교환 알고리즘으로, 지금도 널리 이용되고 있다. *Diffie-Hellman알고리즘의 수학적 기반원리 mod연산에서의 거듭제곱: a^k = b (mod m) -> a^2k = b^2k (mod m) 이 성립한다. (생각해보면 당..

DES의 경우 64비트를, AES의 경우 128비트를 한 블록으로 처리한다. UTF-8로 인코딩할 때, 알파벳 한 글자는 1바이트, 즉 8비트이다. -> DES는 알파벳 8글자, AES는 16글자를 한번에 암호화 할 수 있는 것이다. 하지만 일반적으로 사용되는 평문의 길이는 8글자나 16글자들보다는 훨씬 길다. 운영 모드(Mode of Operation)는 블록 암호가 다양한 크기의 데이터를 처리할 수 있도록 고안된 블록 암호 사용 방법이다. 블록 암호를 사용하는 서비스는 여러 종류의 운영 모드들의 장단점을 고려해 선택해야 한다. *패딩(Padding) 블록 암호는 말 그대로 블록 단위로 암호화를 수행하므로 입력 길이가 블록 크기의 배수가 되어야 하지만 일반적으로는 그렇지 않다. -> 패딩을 통해 평문의..