본문 바로가기

Cloud : Computer/Cryptology

#2 암호기법, Cryptography

#2 암호기법 Cryptography


1. 치환 암호, 대치 암호, Substitution Cipher

- 비트, 문자, 블록을 다른 비트, 문자, 블록으로 대체한다.


- 평문의 문자를 다른 문자로 '교환하는 규칙'이다.

- 교환 규칙이 일대일 대응이 아니어도 상관 없다.

- 평문에서 사용하는 문자의 집합과 암호문에서 사용하는 문자의 집합이 다를 수 있다.



2. 전치 암호, Transposition Cipher

- 비트, 문자, 블록이 원래 의미를 감추도록 재배열한다.

- 원문을 다른 문서로 대체하지 않는다.


- 문자 집합 내부에서 '자리를 바꾸는 규칙'이다.

- 평문에 사용된 문자와 암호문에 사용된 문자가 일대일 대응이다.

- 평문에서 사용하는 문자의 집합과 암호문에서 사용하는 문자의 집합이 동일하다.



3. 블록 암호. Block Cipher

- 어느 특정 비트 수의 '집합'을 한 번에 처리하는 암호 알고리즘을 총칭이다.


- 블록, Block : 어느 특정 비트 수의 '집합'

- 블록 길이, Block Length : 블로그이 비트 수


- 평문을 일정한 크기의 블록으로 잘라낸 후 암호화 알고리즘을 적용하여 암호화한다.

- 일반적으로 블록의 크기는 8-bit(ASCII), 16-bit(Unicode)에 비례한다.

- 스트림 암호와 다르게 Round를 사용하고, 반복적으로 암호화 과정을 수행해 암호화 강도를 높일 수 있다.

- 블록 단위로 처리되므로 어디까지 진행되었는지에 대한 내부 상태를 가질 필요가 없다.


- 암·복호화 시 키 사용

- 암호화 : 비밀키(Secret Key) 사용

- 복호화 : 암호화에 사용된 비밀키 사용


- 암호화 단위 : 블록

- 예 : DES, IDEA, SEED, RC5, AES


- DES, Data Encryption Standard

- 1974년 8월 27일 IBM에서 루시퍼 암호 알고리즘 제안

- 1975년 3월 17일 미국 NBS(National Bureau of Standards, 현재 NIST)에서 미국 정부 표준 암호 알고리즘으로 발표

- [출처] 위키 백과 : 데이터 암호 표준

https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%95%94%ED%98%B8%ED%99%94_%ED%91%9C%EC%A4%80

- 정의 : ANSI X3.92와 X3.106 표준, 미국 연방 정부 FIPS 46과 81 표준

- 블록 크기 : 64-bit

- 비밀키 길이 : 56-bit


- 3DES, Triple DES

- DES를 3번 반복

- 반복 방법 : EEE(Encryption-Encryption-Encryption), EDE(Encryption-Decryption-Encryption)

- 키를 3개 사용 가능하지만, 2개 사용하는 것과 키 강도가 동일하여 일반적으로 2개 사용한다.


- AES, Advanced Encryption Standard

- 2001년 미국 표준 기술 연구소(NIST)에 의해 제정된 암호화 방식

- DES를 대체하고, 3DES와 같거나 더 나은 보안성을 갖고 개선된 암호 기법 공모를 통해 선정

- 블록 크기 : 128-bit

- 비밀키 길이 : 128, 192, 256-bit

- 라운드 수 : 키 길이에 따라 각각 10, 12, 14

- [참고] 위키 백과 : 고급 암호화 표준

https://ko.wikipedia.org/wiki/%EA%B3%A0%EA%B8%89_%EC%95%94%ED%98%B8%ED%99%94_%ED%91%9C%EC%A4%80


- SEED

- 순수 국내 기술로 개발한 블록 암호 기술

- 블록 크기 : 128-bit

- SEED 128

- 표준 제정 : 1999년 9월 정보통신단체표준(TTA), 2005 국제 표준화 기구 ISO/IEC 국제 블록 암호 표준, IETF 표준

- 비밀키 길이 : 128-bit

- SEED 256

- 비밀키 길이 : 256-bit

- [참고] KISA 암호이용활성화 ; http://seed.kisa.or.kr/iwt/ko/sup/EgovSeedInfo.do


- 블록 암호 운용 방식, Block cipher modes of operation

- [참고] 위키 백과 : 블록 암호 운용 방식

https://ko.wikipedia.org/wiki/%EB%B8%94%EB%A1%9D_%EC%95%94%ED%98%B8_%EC%9A%B4%EC%9A%A9_%EB%B0%A9%EC%8B%9D



4. 스트림 암호, Steam Cipher

- 데이터 흐름(스트림)을 순차적으로 처리해가는 암호 알고리즘의 총칭이다.


- 암호화 방식 : 평문 ⊕ 키 스트림

- 블록 암호화보다 매우 빠르지만 암호화 강도는 약하다.

- 실시간성이 중요한 음성 또는 여상 스트리밍 전송, 무선 암호화방식에 사용된다.

- 데이터의 흐름을 순차적으로 처리하므로 내부 상태를 가지고 있다.


- 암호화 단위 : 비트

- 예: LFSR(Linear Feedback Shift Register), MUX Generator



5. 링크 암호화, Link Encryption

- ISP, 통신업자가 암호화

- 헤더를 포함한 모든 데이터를 암호화

- 중간 노드에서 데이터가 평문으로 노출되기 때문에 해당 노드가 공격당하면 전체가 위험.

- 사용자가 사용된 알고리즘 통제 불가

- 모든 노드가 암호화 장비를 갖추어야하므로 네트워크가 커지면 비용 과다



6. 종단간 암호화, End-to-End Encryption

- 사용자가 암호화

- 헤더(라우팅 정보)는 암호화하지 않음

- 중간 노드의 공격에도 영향이 없음

- 알고리즘에 대한 통제는 사용자가 가짐



7. 대칭키 암호, Symmetric Cryptography

- 암호화할 때 사용하는 키와 복호화할 때 사용하는 키가 동일한 암호 알고리즘 방식

- 암호 알고리즘과 복호 알고리즘은 서로 역관계이다.


- 종류(단위에 따라) : 블록, 스트림



8. 비대칭키 암호, Asymmetric Cryptography / 공개키 암호, Public Key Cryptosystem

- 암호화할 때 사용하는 키와 복호화할 때 사용하는 키가 서로 다른 암호 알고리즘 방식

- 송신자와 수신자가 각각 자신만의 한 쌍의 키를 가지고 있어야 한다.


- 공개키를 사용한 암·복호화

- 암호화 : 공개키(Public Key) 사용

- 복호화 : 개인키(Private Key) 사용


- 종류 : RSA, 타원 곡선 암호(ECC, Elliptic Curve Cryptosystem)


- RSA
- [참고] 위키 백과 : RSA 암호

- 타원 곡선 암호, ECC, Elliptic Curve Cryptosystem
- [참고] 위키 백과 : 타원곡선 암호


* RSA와 ECC 방식의 비교

항목

RSA 방식

ECC 방식

기반구조

PKI (유선)

WPKI (무선)

속도

느림

우수

키 크기

ECC에 비해 큰 키

RSA에 비해 상대적으로 작은 키

적용

인프라가 다소 구현된 환경

소형 Mobile 환경



* 대칭키와 공개키 방식의 비교

항목

대칭키

공개키

키의 상호관계

암호화키 = 복호화키

암호화키 ≠ 복호화키

안전한 키 길이

128비트 이상

2048비트 이상

암호화키

비밀

공개

복호화키

비밀

비밀

키 개수

N(N-1)/2

2N

암호화 속도

고속

저속

경제성

높다

낮다

제공 서비스

기밀성

기밀성, 부인방지, 인증

목적

데이터(파일) 암호화

대칭키 교환

단점

키 교환 원리가 없다

중간자 공격에 취약

암호 알고리즘

DES, 3DES, AES, IDEA

RSA, ECC, DSA




9. 하이브리드 암호 시스템, Hybrid Cryptosystem

- 대칭키 암호화 비대칭키 암호의 장점을 조합한 암호 방식



10. 일방향 해시 함수, One-way Hash Function

- 입력 1개와 출력 1개

- 입력 : 메시지, Message

- 출력 : 해시값, Hash Value


- 특징

  - 임의 길이의 메시지로부터 고정 길이의 해시값을 계산한다.

  - 해시값을 고속으로 계산할 수 있다.

  - 일방향성(단방향성)을 갖는다.

    ; 해시값으로부터 메시지를 역산할 수 없다.

  - 메시지가 다르면 해시값도 다르다.

    ; 무결성을 확인하기 위해 사용한다.

    ; 메시지가 1비트라도 변화하면 해시값은 매우 높은 확률로 다른 값이 되어야 한다.

    ; 2개의 다른 메시지가 같은 해시값을 갖는 것을 충돌(collision)이라고 한다. 일방향 해시함수를 무결성 확인에 사용하기 위해서는 충돌이 발견되어서는 안 된다.

    ; 충돌을 발견하는 것이 어려운 성질을 가리켜 충돌 내성(collision resistance)라고 부른다. 암호 기술에서 사용되는 일방향 해시함수는 충돌 내성을 가질 필요가 있다.


- 종류 : MD, SHA


- MD, Message Digest

  - MD5 : 해시값 충돌 발견으로 보안에 취약

- SHA, Secure Hash Algorithm

  - SHA-1 : 2008년 해시 충돌 발생으로 보안에 취약. 2017년 구글 프로젝트 제로 팀에 의해 전체 해시 충돌 관련 정보 완전 공개 예정.

  - SHA-2

    - SHA-224, 256, 384, 512 : 숫자 값은 해시값 길이를 의미


- [참고] 위키 백과 : 암호학적 해시 함수

https://ko.wikipedia.org/wiki/%EC%95%94%ED%98%B8%ED%95%99%EC%A0%81_%ED%95%B4%EC%8B%9C%ED%95%A8%EC%88%98



11. 메시지 인증 코드, MAC, Message Authentication Code

- 메시지가 생각했던 통신 상대로부터 온 것임을 확인하기 위해서 메시지 인증 코드(MAC, Message Authentication Code) 기술을 사용한다.

- 그 메시지가 전송 도중에 변경되지 않았다는 것 (무결성)

- 생각했던 통신 상대로부터 온 것이라는 것 (인증)

- 무결성, 인증을 제공하는 암호 기술이다.



12. 전자서명, Electronic Signature

- 오프라인(off-line)의 도장, 서명, 날인 개념을 온라인(on-line)에 적용한 것

- 무결성, 인증, 부인방지를 제공하는 암호 기술이다.



13. Secure Random

- 난수열을 생성하는 알고리즘

- 난수는 키 생성(Key Generator)라는 매우 중요한 역할을 담당하고 있다.

- 의사난수 생성기, PRNG, Pseudo Random Number Generator

'Cloud : Computer > Cryptology' 카테고리의 다른 글

#1 암호학, Cryptology  (120) 2018.04.18