Symmetric Key Algorithm
암호화 알고리즘의 한 종류로, 암호화와 복호화에 같은 암호 키를 사용하는 알고리즘을 말한다.
대칭 키 암호에서는 암호화와 복호화를 하는데 있어서 같은 암호 키를 공유해야 한다. (Private Key)
장점: 암호화 연산 속도가 빠르기 때문에 효율적인 암호 시스템을 구축할 수 있다.
단점: 키 전달 및 관리가 어렵다.
대칭키 암호화 방식은 데이터를 변환하는 방식에 따라 Stream Cipher, Block Cipher 로 구분된다.
Stream Cipher
- 초기값: Key
- Key는 plain text의 길이만큼 난수로 생성한다.
- Key 와 plain text를 XOR 연산을 하여 cipher text 생성
현재는 블록 암호만큼 인기있지는 않다.
Block Cipher
- plain text를 몇 개의 block들로 나눈다.
- block 마다 encryption key는 동일하다.
그러나 이 구조는 너무 간단하기에 보안에 취약하다.
운용방식이 일반적으로 대칭형 암호화와 관련하는 것이 일반적이지만 RSA와 같은 공개 키 암호 방식 원칙에도 적용 가능하다.
ECB (Electronic Code Book)
- 가장 간단한 구조
- 모두 같은 암호와 키를 사용하기 때문에 보안에 취약하다.
- 공격자가 비슷한 메세지를 반복적으로 암호화하는 반복공격에도 취약한 성질을 가진다. -> 비슷한 결과가 나오기 때문
CBC (Cipher Block Chaining)
- 각 블록은 암호와 되기 전에 이전 블록의 암호화 결과와 XO
- 첫 블록의 경우 초기화 벡터가 사용됨
- 같은 plain text block은 각기 다른 cipher text block을 생성한다.
OFB (Output Feedback), CFB (Cipher Feedback)
- 둘 다 block 암호를 자기 동기 스트림 암호로 변환한다.
- 비동기식 자기 스트림 암호 (block cipher): 1비트씩 난수열을 생성하여 plaintext와 XOR function을 실행한다.
CTR (Counter) e.g. AES
-
각 블록마다 현재 블록이 몇 번째인지 값을 얻어 그 숫자와 nonce를 결합하여 블록 암호의 입력으로 사용한다.
-
그렇게 각 블록 암호에서 연속적으로 난수를 얻은 다음 암호화 할려는 문자열과 XOR 한다.
- Nonce는 블록체인에서 목표값 이하늬 block hash를 찾기위해 임시로 사용되는 숫자
Asymmetric Encryption
- public key cryptography이다.
- 즉, 암호화와 복호화할 때 쓰는 key가 다른다.
- 송신자와 수신자는 key pair를 사용한다. (public & private)
Public Key Methods
- public key로 암호화 된 메세지는 무조건 private key로 복호화 하 ㄹ수 있다.
- public key를 안다고 private key를 알수 있는게 아니다.
- symmetrical encryption보다 key가 훨씬 길다.
- key는 수학적으로 생성된다.
RSA (Rivest, Shamir and Adleman)
RSA에서는 두 개의 key를 사용한다. 여기서 key란 메세지를 열고 잠그는 상수를 위미.
- RSA는 소인수 분해의 난해함에 기반하여 공개키만을 가지고는 개인키를 쉽게 짐작할 수 없도록 디자인되어 있다.
- 이 알고리즘은 두 개의 큰 소수들의 곱과 추가 연산을 통해 하나는 공개키를 구성하고 또 하나는 개인키를 구성한다.
- 이 때 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다.
- 한 번 그 키들이 만들어지면, 원래의 소수는 더 이상 중요하지 않으며, 버릴 수 있다.
- 공개 및 개인키 둘 모두는 암호화/복호화를 위해 필요하지만 오직 개인키의 소유자만 이를 알아야한다.
- RSA 시스템을 사용하면, 개인키는 절대로 인터넷을 통해 보내지지 않는다.
Hybrid Methods
- A는 B에게 public key를 전송
- B는 symmetrical encryption 방식을 쓰기위해 session key를 생성한다. A가 준 public key로 session key를 암호화 한 다음에 A에게 전송.
- A는 session key를 사용하여 symmetrical encryption하여 암호화 된 메세지 B에게 전송
Hash Function
- Hash function은 데이터의 무결성을 제공하는 알고리즘 중 하나로 메세지 인증 알고리즘 이라고도 한다.
- 임의의 길이의 메시지를 일정한 길이의 출력으로 변환하는 함수로 메세지 무결성이나 사용자 인증을 중요시하는 전자서명에서는 해시 함수가 필수적인 역할을 하고 잇따.
- data가 변하면 hash 값도 변경된다. 그러므로 collision resistance
Message Authentication Code (MAC)
- 데이터가 변조 (수정, 삭제, 삽입 등) 되었는지 검증할 수 있도록 데이터에 덧붙이는 코드이다.
1.송신자 앨리스와 수신자 밥은 사전에 키를 공유해 둔다.
-
송신자 앨리스는 송금 의뢰 메시지를 기초로 해서 MAC 값을 계산한다(공유 키를 사용).
-
송신자 앨리스는 수신자 밥에게 송금 의뢰 메시지와 MAC 값을 보낸다.
-
수신자 밥은 수신한 송금 의뢰 메시지를 기초로 해서 MAC 값을 계산한다(공유 키를 사용).
-
수신자 밥은 앨리스로부터 수신한 MAC 값과 계산으로 얻어진 MAC 값을 비교한다.
-
수신자 밥은 2개의 MAC 값이 동일하면 송금 의뢰가 틀림없이 앨리스로부터 온 것이라고 판단한다(인증 성공). 동일하지 않다면 앨리스로부터 온 것이 아니라고 판단한다(인증 실패).