기본 콘텐츠로 건너뛰기

Public-key cryptosystem

Public-key cryptosystem 공개 키 암호 방식 공개 키 암호 방식이란 암호화와 복호화에 서로 다른 키를 사용하는 방식으로 암호화에 사용하는 키를 공개 키, 복호화에 사용하는 키를 비밀 키라고 한다. 공통 키 암호 방식에 비해 공개 키 암호 방식은 암/복호화 시간이 오래 걸리는 경향이 있다. 공개 키 암호 계산 방법 RSA 암호 타원곡선 암호 동작 흐름 A가 B에게 데이터를 전송하고자 한다고 가정해보자. 데이터를 전달 받을 B가 공개 키와 비밀 키를 생생해 공개 키를 A에게 전달한다. A는 B에게 전달 받은 공개 키를 사용해서 데이터를 암호화하고 B에게 암호문을 전달한다. B는 전달 받은 암호문을 비밀 키로 복호화하여 원 데이터를 획득한다. 특징 키 분배 방식 문제 해결 X가 공개 키와 암호문을 훔쳐본다고 하여도 공개 키로는 암호문을 복호화할 수 없으므로 원 데이터를 획득할 수 없다. 이와 같이 공개 키 암호 방식에서는 키 분배 방식 문제가 발생하지 않는다. 다수 간 데이터 교환 용이 불특정 다수 간의 데이터 교환이 쉽다는 장점이 있다. 공개 키는 노출되어도 상관없으므로 B가 공개 키를 인터넷 상에 공개해두었다고 한다면 B에게 데이터를 전송하고자 하는 다수의 사람들이 각자 B가 공개한 공개 키를 가져와 데이터를 암호화하여 B에게 전달하고 B는 보관 중인 비밀 키로 데이터를 복호화하면 되므로 데이터를 전송하는 상대방 모두가 키를 가지고 있을 필요가 없다. 또한 데이터를 전달 받는 측에서 비밀 키를 노출되지 않게 관리하면 되므로 안전성이 높다. 문제점 긴 암/복호화 시간 암호화 및 복호화 시간이 오래 걸린다. 따라서 데이터의 연속적 교환이 필요한 구조에서는 부적합하다. 해결책 하이브리드 암호 방식) 공개 키 신뢰 문제가 발생한다. A가 B에게 보내는 데이터를 훔쳐 보고자하는 X가 자신의 공개 키와 비밀 키를 생성 후 B가 A에게 공개 키를 보낼 때, X 자신의

Symmetric-key cryptosystem

Symmetric-key cryptosystem 공통 키 암호 방식 공통 키 암호 방식이란 공통 키 암호 방식은 암호화와 복호화에 동일한 키를 사용하는 암호 방식이다. A가 B에게 데이터를 전달하고자 할 때, 원 데이터를 키로 암호화한 후 B에게 전달하면 X에게 전송 데이터가 노출된다 하여도 원 데이터를 보호할 수 있다. A는 원 데이터를 키로 암호화하여 암호문을 B에게 전달 --> B는 전달 받은 암호문을 A의 키로 복호화하여 원 데이터 획득 공통 키 암호 방식의 계산 방법 시저 암호 (Caesar cipher) AES (Advanced Encryptioin Standard) DES (Data Encryption Standard) OTP (One Time Pad) 키 분배 문제 문제점 X가 암호문을 훔쳐볼 수 있다고 가정할 때, B가 A의 키를 가지고 있지 않다면 A는 특정 수단을 사용해서 B에게 키를 전달해야 한다. 인터넷을 통해서 전달한다면 X가 키를 획득하여 암호문을 복호할 위험이 있다. 이렇게 키 전달 방법에 문제가 있다는 것을 알 수 있다. 만약 키를 암호화한다 하여도 키 암호화에 사용한 키를 전달해야 하므로 동일한 문제에 직면하게 된다. 공통 키 암호 방식에서는 키를 안전하게 전달하는 방법에 문제가 발생하고 이를 키 분배 문제라고 한다. 해결책 키 교환 프로토콜 이용 공개 키 암호 방식 이용

hash

hash 해시 함수 해시 함수란 해시함수란 데이터를 고정 길이의 불규칙적인 숫자로 변환하는 함수이다. 이 때 출력되는 값을 해시 값이라 한다. 해시 값은 보통 16진수 형태로 출력되지만 내부에서는 2진수로 관리되고 있으며 컴퓨터 내부에서 수리 연산을 수행하고 있다. 특징 출력하는 값의 길이가 바뀌지 않는다. 예를 들어 SHA-1에서는 20 바이트로 고정된다. 이는 입력되는 데이터의 크기와 무관하게 유지된다. 입력이 동일하면 출력도 반드시 동일하다. 데이터의 유사도와는 무관하게 1 비트라도 다른 데이터라면 그 출력은 판이하게 다르다. 전혀 다른 데이터를 입력해도 동일한 해시 값이 출력될 확률이 존재한다. 이를 해시 값 충돌이라 한다. 해시 값으로 원 데이터를 역산하는 것은 불가능하다. 데이터의 흐름은 단 방향으로 이것은 암호와의 차이점이다. 해시 연산은 비교적 간단하다. 사용 예시 메시지 인증 코드 해시 테이블

cryption-basic

cryption-basic 암호의 기본 의의 A가 B에게 인터넷을 이용하여 데이터를 전달하고자 할 때 그냥 전달항다면 악의를 가진 제 3자가 훔쳐볼 가능성이 있다. 그러므로 암호화한 암호문을 전달하고 전달 받은 B는 이를 복호화하여 원본 데이터를 얻는다. 컴퓨터에서 암호란 컴퓨터는 데이터의 형식과 무관하게 모든 데이터를 0과 1로 구성되는 2진수로 관리한다. 이를 특정 연산을 통해서 컴퓨터가 해석할 수 없는 숫자 형태로 변경하는 것을 의미한다. 암호 수치 연산에는 키를 이용하는 데, 키는 숫자로 구성되어 있으며 암호를 위한 암호키, 복호를 위한 복호키가 있다. 예시 XOR을 이용한 구체적 예시를 살펴보자. XOR은 A ⊕ B = C A \oplus B = C A ⊕ B = C A = B ⊕ C A = B \oplus C A = B ⊕ C 가 성립되는 특징이 있다. 이를 암/복호에 적용하면 다음과 같다. 암호 : O r i g i n a l D a t a ⊕ K e y = C r y p t o g r a m Original Data \oplus Key = Cryptogram O r i g i n a l D a t a ⊕ K e y = C r y p t o g r a m 복호 : C r y p t o g r a m ⊕ K e y = O r i g i n a l D a t a Cryptogram \oplus Key = Original Data C r y p t o g r a m ⊕ K e y = O r i g i n a l D a t a

security-overview

security-overview 보안 개요 도청 대응 방안 : 암호화 기술 A가 B에게 메시지를 전송할 때 경로 상에 있는 X가 메시지 내용을 훔쳐볼 가능성이 있다. 위장 대응 방안 : 메시지 인증 코드, 전자 서명 A가 B에게 메시지를 전달했다고 생각하지만 X가 B로 위장하여 전달받았을 가능성이 있다. B가 A에게 메시지를 받았다고 생각했지만 X가 A로 위장하여 전달했을 가능성이 있다. 변조 대응 방안 : 메시지 인증 코드, 전자 서명 A가 B에게 메시지 전달을 성공했을지라도 도중에 X가 메시지 내용을 변경했을 가능성이 있다. 사후 부인 대응 방안 : 전자 서명 B가 A에게 메시지를 받았다고 생각하지만 A가 악의적으로 이를 부인할 가능성이 있다.

HTML/CSS를 활용하여 카카오톡 클론 만들기

시간을 내어 HTML과 CSS를 공부한 것은 대학생 때가 마지막이었던 것으로 기억한다. 그 동안 사이드 프로젝트로 진행했던 여러 아이디어들을 결국 서비스하지 못했던 결정적인 이유는 프론트 엔드 기술 부족이었다고 생각하고 우선 HTML과 CSS 학습을 진행하였다. 프론트 엔드 기술은 많은 발전을 거듭하여 예전에 비해 큰 복잡성을 가지게 되었다. 빠른 시간 안에 숙지하지 못한 기법들에 대해서 알아보고 구현하고자 하는 아이디어에 활용할 수 있을 정도로 진행해보고자 한다. 또한 보안적 관점에서 발생할 수 있는 프론트 엔드 위협에 대해 파악할 수 있는 좋은 밑거름이 되길 기대해본다. 우선적으로 진행한 카카오 톡 디자인 클론은 노마드 아카데미의 강의를 수강하며 진행하였고 결과는 아래의 링크에서 확인할 수 있다. 소스코드 저장소 구현된 웹 페이지

Ready-to-programming

Ready-to-programming 프로그래밍 기본 환경 구성 정리 프로그래밍을 시작하기 위한 기본 환경 구성 정리 개인적으로 아톰 에디터를 활용한 환경 구성을 선호한다. 다른 에디터에 비해서 풍부한 플러그인과 보기 좋은 UI는 아톰을 선택하기에 충분한 이유가 된다. 설치 플러그인 vim-mode vim-mode-plus vim-mode-plus-ex-mode prettier-atom -> Format Files on Save, Show in Status Bar 설정 pigments minimap git-plus emmet color-picker Vim 타이핑 환경은 매우 효율적이다. 아직 활용도가 낮은 편이지만, 어느정도 적응되고 나면 메모장보다 gvim을 실행하는 자신을 볼 수 있다. 아톰에서도 마찬가지로 vim-mode를 설치하여 Vim 타이핑 환경을 구성하여 사용한다.