728x90

전체 글 44

TLS의 정의 및 이해와 TLS1.2과 TLS1.3의 차이

TLS(Transport Layer Security)는 도청을 방지하기위해 서로 자신을 신뢰할 수 있음을 나타내는 전자 서명이 포함된 인증서를 포함해 통신내용을 암호화한 통신 프로토콜을 의미한다. 우리가 웹브라우저를 이용할 때 주소창에 자물쇠 아이콘이 뜨는것으로 TLS의 적용 여부를 확인할 수 있다. TLS위에 HTTP를 올린 것을 HTTPS(HTTP Secure)라고하는데 이 경우에는 http://가 아닌 https://로 표시한다. 다음으로는 TLS의 버전에 대해 이야기하고자한다. TLS는 1.2 이전 버전의 경우 너무 오래되서 호환을 고려한 부분에 보안상의 이유로 현재 지원하지 않는 경우가 많다. 그래서 요즘 사용되는게 TLS1.2와 TLS1.3이다. TLS1.2와 TLS1.3의 차이를 설명하기에 ..

Crypto 2022.11.03

HASH에 관하여

HASH란 메시지의 위변조를 방지하기위해 데이터를 읽어 어떠한 값을 출력하는 것을 말한다. 이러한 역할을 수행하기위해 HASH함수를 구현해야 한다. HASH 함수는 다양하게 만들 수 있는데 예를 들어 test라는 문구가 있다고 가정해보자. 아스키표를 참조하면 0x74 + 0x65 + 0x73 + 0x74 = 0x01c0(448)이라는 값이 나온다. 여기서 256으로 나눠서 나머지 값을 활용할 수도 있다. 만드는 방법은 다양하다. 하지만 이렇게 단순한 방법으로 만들게 되면 위변조에 취약하다. 따라서 HASH함수의 경우 아래의 조건을 충족해야 한다. 1. HASH함수는 메시지의 위변조를 막아야 하며, TLS의 경우 메시지를 주고 받을 때마다 호출된다. 따라서 속도가 빨라야 한다. 2. 메시지를 바꿨을 경우 ..

Crypto 2022.11.03

CCM(Counter with CBC-MAC) 과 GCM(Galois / Counter Mode)의 차이

우선 CCM과 GCM은 MAC의 종류중 하나이기 때문에 MAC이 무엇인지 알아보도록 하자. MAC(Message Authentication Code)은 메시지 인증에 사용하는 데이터이다. MAC의 경우에는 기밀성을 제공하지 않기 때문에 메시지가 외부에 노출 될 수 있다. 하지만 MAC을 통해 무결성과 신뢰성을 보장할 수 있다. 다음으로 CTR이 무엇인지 알아야 한다. CTR의 경우 데이터 블럭에 따라 IV를 만들고 암호화 키와 평문을 XOR를 통해 암호문을 만드는 것이다. 번외로 추가 설명을 하자면 CFB모드와 OFB모드도 있는데 CFB 모드의 경우에는 IV를 바탕으로 평문과 XOR해서 암호문을 만들고 이 암호문을 바탕으로 다음 블럭을 암호화 한다. 그렇기 때문에 중간에 암호화가 잘못되면 나머지 블럭들도..

Crypto 2022.11.03

CBC와 ECB

암호화를 할 때 단순히 인코딩/디코딩을 하면 같은 메시지는 항상 같은 암호문으로 인코딩된다. ECB가 이와 같은 방식인데 해커는 이를 이용해 도청 또는 해킹을 할 수 있다. 그래서 CBC 방식에서는 메시지를 다른 메시지와 xor한 후 암호화를 하기때문에 보완성을 높일 수 있다. 이러한 이유로 요즘에는 ECB를 사용하는 경우는 드물고 대부분 CBC 방식을 채택한다. CBC방식으로 암호화를 할 때는 최초에 xor할 데이터가 없기때문에 IV(Initialization Vector,랜덤 초기감)를 생성하여 메시지 앞부분에 붙인다.

Crypto 2022.11.03

AES의 정의와 암호화 알고리즘 순서

AES(Advanced Encryption Standard)는 미국 표준 기술 연구소 NIST에서 고안한 암호화 알고리즘이다. 이전에 존재했던 DES의 암호화 알고리즘을 보안해 나온 게 AES인데 향후 30년을 사용할 수 있을 정도의 안정성이 있다고 하며, 다양한 암호화 키의 길이를 갖춘 대칭형 암호 알고리즘이다. 현대에는 많이 사양되는 암호화의 표준 알고리즘이라고 볼 수 있다. AES의 암호화 키는 128, 192, 256 bit를 가질 수 있는데 AES-128, AES-192, AES-256과 같이 표기한다. AES128을 예로 암호화하는 알고리즘은 순서는 아래와 같다. (AES-192는 12라운드 AES-256은 14라운드까지 있다.) step-1 0(initial round) AddRoundKey..

Crypto 2022.11.02

ECDSA란?

ECDSA(Elliptic Curve Digital Signature Algorithm)란 타원곡선 디지털서명 알고리즘으로 타원곡선을 이용해 인증할 수 있는 암호화 방식이다. 비트코인과 이더리움에서도 ECDSA의 secp256k1커브방식(가장많이 사용하는 방식중 하나)을 채택하여 전자서명을 하고 있다. 특징으로는 기존 전자 서명에 비해 공개 키의 크기가 절반 수준이며 보안 수준은 4배정도의 동일한 안정성을 제공한다. ECDSA의 비밀키 공유 방법은 아래와 같다. 보통 문서들은 앨리스와 밥이라는 이름을 활용하는데 나는 영희와 철수로 해야겠다...! 1. 영희와 철수는 개인키로 Pr1와 Pr2를 생성한다. 2. 타원곡선 연산을 통해해 계산된 결과값 R1, R2 값을 서로 교환한다. 3. 영희는 철수로부터 받..

Crypto 2022.11.02

RSA란...?

RSA는 단방향 암호화 기술과 유사하지만 복호화가 가능하므로 양방향 암호화 기술이며 암호화 키와 복호화 키가 다른 비대칭 암호화 기술이다. 대칭 암호화 기술은 암호화 키와 복호화 키가 같아 공격자가 나와 통신할 상대인 척하여 암호화 키를 교환 또는 통신을 시도할 수 있다. 이에 대비해 비대칭 암호화 기술을 사용해 공격자에 대항할 수 있다. RSA는 일반적으로 암호화 키(a)를 공개하고, 복호화 키(b)를 비밀로한다. 그리고 a x b = K 라고 가정했을 때 K역시 공개한다. 이렇게 하였을 때 복호화 키는 자신만 알고 있기 때문에 중간에 메시지가 노출되어도 상관이 없다. 추가로 암호화 키를 이용해 복호화하고 복호화 키로 암호화를 해도 상관이 없다.

Crypto 2022.11.01

매크로를 이용한 make file 생성

이번에는 저번에 이어서 매크로를 이용해서 make file을 만들어보려고한다. 사용할 c file은 지난번에 썼던 계산기를 프로젝트를 쓸 생각이다. cal : main.o calculator.o gcc -o cal main.o calculator.o main.o : main.c gcc -c main.c calculator.o : calculator.c gcc -c calculator.c clean : rm -f main.o calculator.o cal 먼저 이전에 만들어 두었던 make file은 위와 같고 OBJECTS = main.o calculator.o SRCS = main.c calculator.c CC = gcc CFLAGS = -g TARGET = cal $(TARGET) : $(OBJEC..

Linux 2022.02.08

make file 만드는 방법

이번에는 리눅스에서 make file을 만들어서 컴파일 하는 방법을 연습해봤다. -컴파일이란 소스코드(c파일)를 object 파일로 만드는 과정을 말한다. 우선 소스 코드를 짜기에 앞서 먼저 make file의 규칙에 대해 서술하고자 한다. TargetList: dependencyList commandList Targetlist : 명령이 수행되어 생성될 결과 파일을 지정 dependencylist: 목표를 수행하기 위해 필요한 의존 관계 설정 commandlist: 의존관계에 정의된 파일의 내용이 바뀌었거나 targetlist에 해당하는 파일이 없을 때 여기에 정의 된 내용이 차례로 실행 makefile을 만들기에 앞서 간단한 계산기를 만들기 위해 main.c calculator.c 파일을 만들었다. ..

Linux 2022.01.26

리눅스 명령어 정리

처음부터 리눅스 커널을 했더니 너무 어려움을 겪어 기초부터 하자는 마음으로 이번엔 가볍게 리눅스 명령어들을 정리해보려고 한다. ls 디렉터리의 내용을 표시 wall 모든 사용자에게 메시지를 표시 clear 화면을 지운다 logout 현재의 시스템에서 계정을 로그아웃 echo 인수로 저장한 문자열을 출력 dmesg 커널의 부팅 로그 및 커널 로그 출력 cp 파일을 복사 chmod 파일의 접근 권한을 변경 rm 파일을 삭제 chown 파일의 소유자를 변경 mv 파일을 이동하거나 이름을 변경 chgrp 파일과 관련된 그룹을 변경 ln 다른 파일을 가르키는 열결을 생성 passwd 사용자의 비밀번호를 변경 cd 현재의 디렉터리를 이동 du 디스크의 사용량을 검사 mkdir 디렉터리를 생성 df 디스크의 남은 공..

Linux 2022.01.14
728x90