프로그래밍/General 66

암호학에서 Salt란? 소금이 필요한 이유

# 솔트 (Salt) 해시 함수를 사용하여 단방향 암호화를 했을때, 언제나 같은 값을 같게 된다. 해커는 잘 알려진 해시값의 원문을 저장해두고 쉽게 원문을 유추할 수 있다. (이렇게 해시함수를 사용하여 만들어낼 수 있는 값들을 저장해둔 테이블을 레인보우 테이블이라고 한다.) 솔트는 이러한 꼼수를 피하기 위해 해시된 값에 추가적으로 들어가는 랜덤 데이터다. 비밀번호 "qwerty1234"를 SHA-256으로 해싱하면 아래와 같은 값이 나온다. 17F80754644D33AC685B0842A402229ADBB43FC9312F7BDF36BA24237A1F1FFB 이제 안전하겠지? 안타깝게도 Hash값을 RainbowTable에 넣어보면 순식간에 풀려버림 0ㅇ0 그래서 해시하기전에 임의의 랜덤 데이터 "LOU"를..

SSH 터널링 / 포트 포워딩 예시로 알아보기

# SSH란? 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜. 일반적으로는 Public key / Private key를 사용하는 비대칭 암호화(Asymmetric Encryption) 방식을 사용한다. Public Key가 자물쇠, Private Key가 자물쇠를 여는 열쇠라고 비유를 해서 그려본 그림이다. 중간에 누군가 박스를 탈취한다 하더라도 자물쇠는 오직 A/B 두사람만이 열수 있기때문에 보안성이 확보된다. # SSH 터널링이란? (SSH 포트 포워딩) SSH 클라이언트와 서버사이 연결이 수립되어 만들어진 통로가 "터널" 여기에 포트 포워딩(Port Forwarding)을 이용하면 만들어진 터널을 다른 애플리케이션이 이용할 수 있다. 방화벽을 우회할 수도있으며, 암호화를 지원하지 않는 프로그..

[SSH] UNPROTECTED PRIVATE KEY FILE 해결방법

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0755 for 'navercloud_lou.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. private key 파일의 퍼미션이 과도하게 설정되어 있어서 다른 유저가 건드릴 수 없도록 적절한 권한으로 낮추어주어야한다. 내..

내 소스 코드가 실행되기까지의 과정

# 컴파일 언어 컴파일(Compile)은 어떤 언어를 다른 언어로 바꾸어주는 과정이다. int a = 30과 같이 우리가 적는 코드는 사람이 이해하기 쉬운 고급언어(High-level language)라서 컴퓨터는 이를 이해하지 못한다. 컴퓨터는 고급언어로 작성된 코드를 컴파일러 또는 인터프리터를 통해서 저급언어(Low-level language)로 번역한 후에야 코드를 실행할 수 있다. 저급언어에는 기계어 (Machine language)와 어셈블리어 (Assembly language)가 있다. - 기계어 CPU가 명령을 처리할때 사용하는 언어, 2진수로 이루어져있다. 1000 1011 0100 0101 1111 1000 1000 0011 1100 0100 0000 1100 - 어셈블리어 기계어의 숫자..

파일 시스템 - FAT32 / NTFS / ZFS / HDFS

파일 시스템(Filesystem)은 파일들이 저장공간에 어떻게 이름 지어지고, 저장되고 가져와지는지에 대한 규약이다. 물리적인 공간에 저장된 데이터를 논리적으로 매핑하여 읽고, 데이터를 검색하고 저장하는 등 관리할 수 있게 한다. 대표적인 운영체제에서 사용하고 있는 파일 시스템의 종류는 다음과 같다. Windows FAT*, NTFS Linux Ext* Mac OS HFS, APFS Solaris ZFS 맥에서 diskutil info / 를 치면 현재 볼륨에 대한 파일 시스템 정보를 볼 수 있는데, APFS를 사용중임을 알 수 있다. 파일 메타데이터 파일 시스템을 추상화해보면 메타 영역과 데이터 영역으로 나누어 볼 수 있다. 메타 영역은 파일 관리를 위한 파일의 이름, 크기, 생성일, 위치 등의 정보가..

[운영체제] 프로그램, 프로세스, 스레드 파헤치기

프로그램 디스크에 저장되어있는 실행 코드. 프로세스 프로그램이 실행되어 메모리에 적재된 상태로, 실행중인 프로그램을 프로세스라고 한다. 프로그램과는 다르게 생명주기를 가진다. Windows에서는 tasklist 명령어를 이용하면 실행중인 프로세스의 PID, 이름, 세션 메모리 사용량을 볼 수 있다. 리눅스에서는 ps 명령어를 이용하면 된다. 프로세스는 독립된 메모리 영역을 할당 받는다. 고정된 크기의 CODE, DATA, BSS 영역과, 동적인 크기의 HEAP, STACK으로 구성되어있다. 프로세스는 독립된 메모리 영역을 할당받았기 때문에 프로세스 간의 변수나 데이터 공유는 불가능하다. 프로세스간 통신, IPC(Inter-process communication)을 위해서는 별도의 매커니즘이 필요하게 된다..

Redis의 개념과 활용법

Redis란? Redis는 인 메모리 키 값 데이터 구조 스토어다. 일반 Database는 데이터를 디스크에 저장하지만, 레디스는 데이터를 서버의 주 메모리에 저장한다. 그렇기 때문에 전통적 Database보다 데이터 접근 시간이 약 1ms 정도로 월등히 빠르며, 다양한 형식의 데이터를 저장할 수 있다. 대표적으로는 List, Set, Hash, Bitmap 등이 있다. 메모리에 저장하다보니 데이터가 휘발하지 않을까?라는 생각이 들 수도 있지만, 예기치 못한 셧다운 등 필요한 경우 Snapshot을 떠서 저장할 수 있다. Redis의 활용법 캐시(Caching) 캐시는 데이터의 접근시간을 줄이기 위해 가져온 데이터를 복사해두는 임시 공간이다. Redis는 앞서 설명했듯 메모리에 데이터가 저장되어있어 캐시..

맥에서 ANSI 인코딩 txt 파일 읽는 간단한 해결법

Windows에서 ANSI 인코딩으로 저장된 메모장 txt 파일을 맥에서 읽어들이려하면 다음과 같은 문구가 뜨면서 열리지 않을 것이다. 문서 ~을(를) 열 수 없습니다. 유니코드 (UTF-8) 텍스트 인코딩이 적용되지 않습니다. 파일이 다른 텍스트 인코딩을 사용하여 저장되었거나, 텍스트 파일이 아닐 수 있습니다. 해결방법은...간단하다. 크롬 브라우저를 열어서 해당 txt 파일을 끌어다 놓으면 파일이 열린다. ㅋㅋㅋ 그대로 글자를 긁어서 저장하면 완성! Converter같은걸 찾고 있었는데...너무 어렵게 생각한듯 하다.

Windows10에서 VMWare 실행 오류 해결법

VMware Player and Device/Credential Guard are not compatible. VMware Player can be run after disabling Device/Credential Guard. Please visit http://www.vmware.com/go/turnoff_CG_DG for more details. VMware 설치 후 이제 시작해볼려니깐 이렇게 오류가 뜨는데, 이 오류는 Hyper-V가 Workstation player와 호환되지 않아서라고하는데, Hyper-V와 DeviceGuard를 꺼주면 해결된다. Hyper-V를 끄는 방법 1. 제어판에서 Windows 기능 켜기/끄기를 실행시킨다. 2. Hyper-V를 찾아 체크 해제한다. 제대로 되지 않으..

나중에 읽을 좋은 글 모음

시스템 디자인 https://medium.com/hackernoon/fundamentals-of-system-design-part-1-c87b1d2bfd31 https://gist.github.com/vasanthk/485d1c25737e8e72759f Jetpack Compose 기초 https://medium.com/captech-corner/jetpack-compose-concepts-every-developer-should-know-5bcb47914542 https://developer.android.com/courses/pathways/compose 시스템 디자인 인터뷰 https://www.educative.io/courses/grokking-the-system-design-interview