목록전체 글 (111)
Shine's dev log

이때까지 살펴본 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이 필요하다. - 병렬처리가 가능하다. - 두개 이상의 블록을 갖는 메세지에는 권장하지 않는다. - 오류파급 : 단일 비..

대칭키 암호에는 블록암호와 스트림 암호가 있는데, 앞서 살펴본 AES와 DES는 대표적인 블록암호이다. 이번에는 스트림 암호에 대하여 알아보자. 1. 스트림 암호 (Stream Cipher) 연속적인 비트/바이트/단어들을 순차적으로 암호화하는 방식 블록암호는 일정한 크기의 데이터를 하나의 블록으로 묶어서 암호화했다면, 스트림암호는 묶지 않고, 별개의 데이터들에 순차적으로 암호화를 적용해주는 방식이다. 주로 위의 그림과 같이 유사난수를 1비트 단위로 생성하고, 암호화하려는 데이터와 XOR하여 1비트의 암호문을 얻는 식으로 많이 사용된다. 스트림 암호는 블록암호만큼 안전하며, 더 빠르고 간단하다는 특징이 있다. 2. RC4 RC4는 SSL/TLS나 네트워킹 프로토콜에서 자주 사용되는 스트림 암호기법으로, 굉..