암호화 깊게 파고들어 정리를 한다면.. 아마 끝도 없을것..
자세하게는 주제별로 따로 정리를 천천히라도 해야겠다. 언제가될지..
암호화 알고리즘은 각각의 특징과 종류를 머리속에 잘 정리해두고 상황에 맞는 알고리즘을 사용해야 한다!
평문(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 |
댓글