프레임워크, 라이브러리, API

API (Application Programming Interface), 라이브러리 (Library), 프레임워크 (Framework)는 모두 소프트웨어 개발에서 사용되는 용어이다. API API는 두 개 이상의 소프트웨어 컴포넌트 사이에서 상호 작용할 수 있도록 정의된 인터페이스를 말한다. 이를 사용하여 다른 소프트웨어 개발자들이 특정 서비스 또는 기능을 사용할 수 있다. 특징 다른 프로그램이나 서비스와 연결해 주는 다리 역할 API를 조합해서 원하는 프로그램을 만들 수도 있다. 예시 Twitter API: 트위터에서 제공하는 API Google Maps API: 구글에서 제공하는 지도 API YouTube API: 유튜브에서 제공하는 API OpenWeather API: 날씨 정보 API GitHub API: 깃허브에서 제공하는 API Kakao API: 카카오에서 제공하는 API Stripe API: 결제 API Twilio API: SMS 및 음성 API AWS API Gateway: 아마존 웹 서비스에서 제공하는 API 관리 서비스 Google Cloud Vision API: 구글에서 제공하는 이미지 분석 API 라이브러리 라이브러리는 개발자들이 자주 사용하는 코드 집합이다.

암호

암호는 중요한 정보를읽기 어려운 값으로 변환하여 제 3자가 볼수 있도록 하는 기술이다. 암호의 특성 기밀성 : 허가되지 않은 사용자는 암호화된 데이터의 원본을 볼 수 없는 성질 무결성 : 허락되지 않은 사용자가 암호화 데이터를 함부로 변조를 불가능하게 하거나 변조가 된 후에 데이터를 검증할 수 있는 성질 인증 : 정상적인 암호화 복호화 과정에서 정체성을 식별 부인 방지 : 정보를 보낸 사람이 정보를 보냈다는 사실을 부인하지 못하게 하는 성질 암호 알고리즘 RSA (Ron Rivest, Adi Shamir, Leonard Adleman) 공개키 암호시스템의 하나로, 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘 공개키(Public key), 개인키(Private key)가 존재 대칭키 알고리즘에 비해 느림 AES (Advenced Encryption Standard) 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭키 알고리즘 2001년 미국 표준 기술 연구소(NIST)에 의해 제정된 암호화 방식 AES 표준은 여러 Rijindael 알고리즘 중 블록 크기가 128비트인 알고리즘 ECB (Electronic Code Block) 가장 기본적인 타입 항상 같은 결과가 나오기 때문에 암호화 키 역추적 가능 CBC (Ciper Block Chaining) ECB의 단점을 보완 암호화 키에 IV(Initial Vector)를 추가해서 항상 같은 결과가 나오는 문제를 해결 암호화 병렬처리 불가 GCM (Galois/counter mode) CBC의 취약점을 보완 데이터 값의 Hash가 암호문에 포함 -> 데이터 복호화 시 변조 확인 가능 암호화 병렬처리 가능 참고 https://www.

해시

해시(hash)란 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑(mapping)한 값이다. 복호화를 위해 사용하지 않으며, 암호화보다 연산이 빠르다는 특징이 있다. 해시 알고리즘 MD5 (Message Digest) 128비트 암호화 해시함수 원본 그대로인지를 확인하는 무결성 검사 등에 사용 해킹에 취약하므로 SHA를 권장 임의의 길이를 입력받아 128비트 고정길이 값을 출력 SHA (Secure Hash Algorithm) 서로 관련된 암호학적 해시 함수들의 모음 SHA-0, SHA-1, SHA-2(224, 256, 384, 512) 존재 SHA-0, SHA-1에 대한 공격 발견 SHA-256은 256비트로 구성되며 64자리 문자열을 반환 참고 https://velog.

IPC(Inter Process Communication)

프로세스는 독립적으로 실행된다. 즉, 독립 되어있다는 것은 다른 프로세스에게 영향을 받지 않는다고 말할 수 있다. (스레드는 프로세스 안에서 자원을 공유하므로 영향을 받는다) 이런 독립적 구조를 가진 프로세스 간의 통신을 해야 하는 상황이 있을 것이다. 이를 가능하도록 해주는 것이 바로 IPC 통신이다. 프로세스는 커널이 제공하는 IPC 설비를 이용해 프로세스간 통신을 할 수 있게 된다. 커널 커널은 메모리에 상주하는 부분으로써 운영체제의 핵심적인 부분을 뜻한다. IPC 종류 익명 PIPE 파이프는 두 개의 프로세스를 연결하는데 하나의 프로세스는 데이터를 쓰기만 하고, 다른 하나는 데이터를 읽기만 할 수 있다.

CSRF, XSS

CSRF (Cross Site Request Forgery) 웹 어플리케이션 취약점 중 하나로, 인터넷 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위 (modify, delete, register 등)를 특정한 웹사이트에 request하도록 만드는 공격을 말한다. 주로 해커들이 많이 이용하는 것으로, 유저의 권한을 도용해 중요한 기능을 실행하도록 한다. 우리가 실생활에서 CSRF 공격을 볼 수 있는 건, 해커가 사용자의 SNS 계정으로 광고성 글을 올리는 것이다. 정확히 말하면, CSRF는 해커가 사용자 컴퓨터를 감염시거나 서버를 해킹해서 공격하는 것이 아니다. CSRF 공격은 아래와 같은 조건이 만족할 때 실행된다.

쿠키 vs 세션

쿠키 쿠키는 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다. 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다는 특징이 있다. 쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조한다. 클라이언트에 300개까지 쿠키저장 가능하며, 하나의 도메인당 20개의 값만 가질 수 있다. 하나의 쿠키값은 4KB까지 저장한다. Response Header에 Set-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있다. 쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request시에 Request Header를 넣어서 자동으로 서버에 전송한다.