목록보안 (17)
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. 메세지 인증의 필요성 만약 당신이 상대방에게 "사랑해" 라는 메세지를 보낸다고 가정해보자. 중간에 어떤 사람이 그 메세지를 변조시켜서 "싫어해"로 바꾼다면, 그 메세지를 받는 사람은 마상을 입을 것이다..(?) 위와같은 예시는 귀여운 수준이고, 실제로 메세지가 굉장히 중요한 역할을 하는경우에, 그 메세지가 변조된다면 굉장히 큰일이 날 것이다. 이러한 큰일을 방지해주는것이 바로 메세지 인증 (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나 네트워킹 프로토콜에서 자주 사용되는 스트림 암호기법으로, 굉..
앞서 살펴본 DES는 컴퓨팅 파워가 증대되면서 더이상 안전하지 않은 암호시스템이 되었다. 이에 더 강력한 암호시스템을 만들고자 NIST (미국 국립 표준 연구소)에서 공모하였다. 그 결과 Rijndael 알고리즘이 채택 되었고, 그렇게 AES가 탄생하게 되었다. 1. AES (Advanced Encryption Standard) 기본정보 - 128비트 블록사용 - 128, 192, 256 비트 키 사용 (사용하는 키의 길이에 따라 라운드횟수가 다름 : 10, 12, 14) - SPN 구조이다 (Feistel 아님) - DES 보다 6배나 빠르다. 2. AES의 구조 즉, 간단하게 말하면, 처음 입력값을 1) Initial transformations 하고, 2) N번의 라운드를 진행하는것이다. State..