목록분류 전체보기 (112)
Shine's dev log
1. Diffie-Hellman 알고리즘이란? DH 알고리즘은 다음과 같이 설명할 수 있다. 상대방의 공개키와 나의 개인키를 이용해 둘만의 세션키를 만드는 것 즉, 키교환 알고리즘으로 사용되며, 직접적으로 메시지를 암호화하거나 인증을 할 때 사용하는 것은 아니다. DH 알고리즘의 가장 핵심적인 부분은, Discrete Logarithm Problem이다. Discrete Logarithm 문제는 만약 g, x, p를 안다면 y를 구하기는 쉽지만 y, g, p를 안다면 x를 구하기는 어렵다는 문제이다. 2. Diffie-Hellman 알고리즘의 원리 우선 이 영상을 보면 DH 알고리즘에대해 감을 잡을 수 있을 것이다. https://www.youtube.com/watch?time_continue=271&v..
이때까지 살펴본 DES나 AES는 모두 대칭키 암호들이다. 대칭키 암호는 비밀키 암호라고도 하는데, 송신자와 수신자가 하나의 비밀로 된 같은 키를 사용하기 때문이다. 이런 대칭키 암호의 경우 크게 두가지 문제점이 있다. 1) 처음에 비밀키를 안전하게 주고받는 것이 어렵다. 2) 너무 많은 키가 필요하다. (n명의 사람이 통신할 경우, n(n-1)/2개의 키가 필요) 그래서 나온 방법이 공개키 암호이다. 1. 공개키 암호(Public key Cryptography) 우선 용어를 명확하게 정리해보자. 공개키 암호 = 비대칭키 암호 비공개키 암호 = 대칭키 암호 = 비밀키 암호 공개키 암호의 경우 위의 그림에서 볼 수 있듯이 평문을 public key로 암호화하고, 암호문을 private key로 복호화한다...
앞서 살펴봤듯이, 시스템에서는 여러개의 프로세스가 동시에 실행되고있다. 이 때, 각 프로세스의 쓰레드가 동시에 돌게 되는데, 만약 여러 쓰레드가 같은 값에 동시에 접근하면 여러가지 문제들이 발생할 수 있다. 이 문제들과 해결책을 알아보자. 1. 동기화 문제 (Synchronization Problem) 두개 이상의 concurrent 하게 동작하는 쓰레드가 공유된 메모리에 있는 자원을 동시에 접근하면, 누가 먼저 접근하느냐에 따라 값이 매번 달라질 것이다. 즉, 일관성없이 운에 좌지우지되는 문제점을 race condition이라고 한다. 이는 정확한 결과를 필요로 하는 시스템에 매우 치명적이다. 따라서 Synchronization(동기화) 작업을 통해 쓰레드들의 메모리 접근을..
요즘 나오는 대부분의 컴퓨터들은 하나의 프로세서(CPU)로만 동작하는 것이 아니라, 여러개의 프로세서들로 이루어져있다. 멀티프로세서 환경에서 스케줄링 시 고려해야 할 점들을 한번 짚어보자. 1. multiple-processor 먼저, 멀티프로세서의 종류와 특징에 대하여 한번 살펴보자. 프로세싱 기법에 따른 구분1) Asymmetric multiprocessing - 하나의 master 프로세스가 다른 프로세스들을 관리감독하는 형태- master 프로세서가 load balancing을 다 결정한다. (load balancing은 조금 있다가 나온다.) 2) Symmetric multiprocessing (SMP) - 각각의 프로세스가 동등한 권한으로 프로세싱하는 형태..
1. 메세지 인증의 필요성 만약 당신이 상대방에게 "사랑해" 라는 메세지를 보낸다고 가정해보자. 중간에 어떤 사람이 그 메세지를 변조시켜서 "싫어해"로 바꾼다면, 그 메세지를 받는 사람은 마상을 입을 것이다..(?) 위와같은 예시는 귀여운 수준이고, 실제로 메세지가 굉장히 중요한 역할을 하는경우에, 그 메세지가 변조된다면 굉장히 큰일이 날 것이다. 이러한 큰일을 방지해주는것이 바로 메세지 인증 (Message Authentication)이다. 메세지 인증은 다음과 같이 세가지를 다룬다. 1) 메세지의 무결성 보호 2) 메세지 송신자의 검증 3) 부인방지 또한 위와 같은 기능을 수행하기 위해서는 두가지방법이 있다. 1) 메시지 암호화를 이용한방법 2) 메시지 암호화를 이용하지 않는 방법 이제 이 두가지 방..
1. 블록 암호 운용방식 블록 암호의 운용 방식은 다음과 같다. 하나의 키로 블록 암호를 반복적으로 안전하게 이용하게 하는 절차. 예를들어 DES의 경우, 블록사이즈가 64비트이다. 그렇다면, 평문을 64비트 단위로 쪼개서 여러번 암호화를 수행해야 할 것이다. 이 때, 반복적으로 이용하는 방법에 따라 여러가지 모드로 나눌 수 있다. 블록암호를 운용하는 방식에 따라 ECB, CBC, CFB, OFB, CTR 모드가 있다. 2. ECB 모드 (Electric Code Book) 평문을 N개의 n-bit 블록으로 분할하여 각각 독립적으로 암호화 하는 방식 특징 - 마지막 부분에 padding이 필요하다. - 병렬처리가 가능하다. - 두개 이상의 블록을 갖는 메세지에는 권장하지 않는다. - 오류파급 : 단일 비..