본문 바로가기
일하다가??

암호화 알고리즘 종류

by 램쥐뱅 2016. 10. 8.

암호화 깊게 파고들어 정리를 한다면.. 아마 끝도 없을것..

자세하게는 주제별로 따로 정리를 천천히라도 해야겠다. 언제가될지..


암호화 알고리즘은 각각의 특징과 종류를 머리속에 잘 정리해두고 상황에 맞는 알고리즘을 사용해야 한다!


평문(Plaintext)

해독 가능한 형태의 메시지


암호문(Ciphertext)
해독 불가능한 형태의 메시지


암호화(Encryption)

평문을 암호문으로 변환하는 과정


복호화(Decryption)

암호문을 편문으로 변환하는 과정





암호화의 분류 방법은 세가지로 분류할수 있다.


1. 대칭형 암호 (비밀키 암호)


암호화 키와 복호화 키가 같다.

현재 가장 보편적으로 쓰이는 암호화 방식은 현 미국 표준 방식인 AES 이다.

AES는 128~256비트의 키를 적용할수 있어 보안성이 뛰어나며 공개된 알고리즘이라 누구나 사용 가능 하다.

그 전에는 DES(Data Encryption Standard)라는 알고리즘이 1975년부터 사용되고 있었으나 너무 오래되어 취약점이 발견됨에 따라이를 대체하기 위해 등장한 것이 바로 AES다.



2. 비대칭형 암호 (공개키 암호)


암호화키와 복호화키다 다르다.

암호화를 하면 하나의 키 쌍이 생기고, 두 개의 키를 각각 키 A, 키 B라고 했을 때 키 A로 암호화한 암호문은 키 B로만 복호화할 수 있고 키 B로 암호화한 암호문은 키 A로만 복호화할 수 있다. 따라서 이 중 하나의 키만 비밀로 보호하고(이를 '비밀키', '개인키'라고 한다) 다른 하나의 키는 공중에게 공개해도 관계가 없다(이를 '공개키'라고 부른다). 이렇게 둘 중 하나의 키는 반드시 공개되어야 통상적인 사용이 가능하므로 공개키 암호방식이라고 한다.


대칭형 암호는 훌륭한 암호화 방식이기는 하지만 결정적인 문제가 존재한다. 바로 '키 배송'에 관한 문제로, 어떻게든 송신 측에서는 수신 측에 암호 키를 전달해야만 하고, 이 키가 배송 과정에서 털리면 아무리 뛰어난 암호화 알고리즘을 사용했더라도 속절없이 평문이 털리게 된다. 안전하게 평문을 전달하기 위해 만든 것이 암호문인데, 정작 키는 안전하게 전달할 방법이 없는 것. 이 키 배송에 대한 방법은 여러 가지 방법이 연구되었지만 발상의 전환으로 키 배송 문제를 해결한 방식이 비대칭형 암호방식이다.

한데 비대칭형 암호는 암/복호화가 대칭형 암호에 비해 현저하게 느리다는 문제점이 있다. 따라서 현실적으로는 비대칭형 암호를 이용해서 대칭형 암호의 키를 배송하고 실제 암호문은 대칭형 암호를 사용하는 식으로 상호보완적으로 이용하는 것이 일반적이다.



3. 단방향 암호


해싱(hashing)을 이용해 암호화를 하는 것으로 암호화(encyrption)/복호화(decryption) 와는 다른 개념이다.

해싱을 이용해 평문을 암호문으로 암호화하는 것은 가능하지만 암호문을 평문으로 복호화 하는것은 불가능하다.


본적으로 동일한 평문은 동일한 암호문으로 암호화되지만 이를 바탕으로 평문을 복원할 수는 없다.

복호화가 되지않는것을 어떻게 암호화 라고 할 수도 있겠지만 실제로는 복호화하지 않아도 상관없는 정보가 있기 마련이다.

예를 들면 패스워드는 양방향 암호로 저장하는 것보다 단방향 암호로 저장하는 것이 안전하다. 암호화된 패스워드 목록이 유출된다고 해도 이를 가지고 원래의 패스워드를 복원할 수 없고, 패스워드 자체를 검증할 때는 입력받은 값을 암호화해서 암호화한 값끼리 비교하면 문제가 없기때문이다.


MD5, SHA 같은 방식이 있지만 MD5는 단시간 내에 충돌값을 찾아낼수 있기 때문에(비둘기 집의 원리) 현재는 SHA-2, 가능하면 SHA-3를 쓰는 것이 좋다.




 대분류

중분류 

 블록크기

key 크기 

 라운드수

대표 알고리즘 

개발국가 

 대칭형 암호 알고리즘

 블록(Block) 

 암호 알고리즘 

 64bit

 56bit

 16

 DES 

 미국

 64bit

 112/168bit

  3-DES 미국

 128bit

 128/192/256bit

 10/12/14

 Rijndael (AES 선정)

 벨기에

 64bit 128bit 8

 IDEA

 유럽
 128bit

 128, 256bit

 16 ,24bit

 SEED

 한국, KISA 

 128bit

 128/292/256bit

 12 CRYPTON 한국
 128bit

 128/292/256bit

  ARIA 한국, NSRI 
 64bit  

 HIGHT

 한국
 128bit

 128bit

 

 LEA

 한국

 64/128bit 64bit 4/8/32 FEAL

 일본

 64bit 128bit 8 MISTY

 일본

 64bit 80bit

 32

 SKIPJACK

 미국

 32/64/128bit

 0-2040bit

 

 RC5 

 미국
 스트림 (Stream)
 암호 알고리즘
 

 동기식

 

 RC4, FSR, LFSR, NLFSR, OFB 모드, One time pad

 
 

 자기 동기식

 

 A5/1,A5/2, A5/3, CFB 모드

 
 비대칭형 암호 알고리즘(공개키 암호 알고리즘)  

 

 

 RSA

 MIT
    

 Rabin

 
     ElGamal 
  

 

  ECC 
  

 

  DSS NIST 


대분류

 중분류

 MD 길이

 블록 길이

 최대 메시지 길이

 대표 알고리즘 

 개발사 

 해쉬 알고리즘

 (Hash Algorithm)

 MD5

 128bit

 512bit

 무한

 MD5

 로널드 라이베스트

 RIPEMD 160bit 512bit

 2^64-1bit

 RIPEMD-160 

 
 SHA-1 160bit 512bit

 2^64-1bit

 SHA-1 NSA

 SHA-2

 224bit

 512bit 2^64-1bit

 SHA-224

 
 SHA-2 256bit 512bit 2^64-1bit

 SHA-256

 
 SHA-2 384bit 1024bit

 2^128-1bit

 SHA-384 
 SHA-2 512bit

 1024bit

 2^128-1bit SHA-512 
 SHA-3

 SHA-2 와 디자인이 달라짐, https://ko.wikipedia.org/wiki/SHA-3












참고 .


http://modoris.blogspot.kr/2011/11/blog-post_08.html

https://crypto.stackexchange.com/questions/68307/what-is-the-difference-between-sha-3-and-sha-256

https://namu.wiki/w/%EC%95%94%ED%98%B8%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98#fn-2

위키 백과.

'일하다가??' 카테고리의 다른 글

OSX : NFS Mount (NFS 마운트)  (0) 2016.10.31
해시값의 복호화 ??  (18) 2016.10.08
Servlet 이란? 서블릿 이란?  (4) 2016.05.12
자바 어노테이션 (Java Annotation)  (0) 2016.04.30
java volatile 키워드  (7) 2016.04.30

댓글