암호화(Encryption) : 메시지를 숨겨 그 메시지의 수신자 외에는 아무도 못 읽게 하는 것.
인증(Authentication) : 메시지가 바뀌지 않았는지, 혹은 발신자, 수신자가 맞는지 확인하는 것
JCA : Java Cryptography Architecture
JCE : Java Cryptography Extension
대칭 암호화 알고리즘
1 블록암호와 스트림 암호
가) 블록암호화 방식
① 한번에 정해진 크기의 데이터를 암호화 하는 방식
② 64bit or 128 bit 크기 단위로 적용
나) 스트림 암호화 방식
① 1bit or 1btye의 데이터를 암호화 하는 방식
② 소켓 같은 정보의 일정한 스트림을 암호화할 때 적당
2 대칭 암호화 깨는 방법에 대해
가) 단문 무식하게 모든 가능한 키를 시도
나) 키 스페이스 : 후보 키들의 집합이며
3 대칭 암호화에 사용되는 알고리즘
가) DES(Data Encryption Standard)
① 가장 널리 알려진 대칭 암호화 기법
② 56bit 키 사용
③ DES의 변형으로 TripleDES(DESede)가 고안됨.
나) TripleDES(DESede)
① DES를 다른 키에 세 번 적용시키는 방식
② 암호화 / 복호화 / 또 다른 암호화 -> ede(encryption, decryption, encryption)
③ 키는 2개 또는 3개가 사용될 수 있음
다) Blowfish
① DES보다 더 빠르고 안전한 블록 암호
② 448비트 키 사용 가능
라) RC4(Rivest’s Code 4)
① 스트림 암호의 일종으로 SSL 구현에 많이 사용됨
② 40bit or 128bit
마) AES(Advanced Encryption Standard)
① Rijndael 알고리즘 사용
② 128, 192, 256 bit 사용 가능
4 대칭 암호화의 한계
가) 암호화 복호화에 같은 키가 적용됨
나) 송·수신자 모두 동일한 키를 가지고 있어야 함
다) 키를 안전하게 전달할 수 있는 방법은 무엇인가?
비대칭 암호화
1 기능
가) 암호화에 쓰이는 공개 키와 복호화에 쓰이는 개인 키 2개를 사용
2 비대칭 암호화 알고리즘
가) RSA
① 키 교체가 가능 즉, 개인키로 암호화하면 공개키로 복호화 가능
나) EIGamal
① PGP와 SSL에 사용
3 약점
가) 개인 키가 쉽게 공격 받을 수 있다.
① 공개 키를 다른 사람의 것으로 바꿔치기 하는 방법에 허점이 발생
② 공개 키에 대한 증명서를 첨부해서 해결함
나) 속도가 느리다.
① 대칭 암호화에 비해 1000배 느림
4 세션 키 암호화
가) 세션 키를 암호화 하는데 사용하고 세션 키는 공개 키를 이용하여 암호화 함
나) 세션 키는 대칭 암호화 방법을 사용
다) 생성한 세션 키를 상대방에게 전달해야 함
라) PGP : 이메일을 암호화하는데 사용됨
마) S/MIME : 안전한 이메일 전송을 위해 RSA가 고안한 방법
바) SSL/TLS : Secure Socket Layer와 Transport Layer Security는 TCP/IP 트래픽을 보안하기 위해 만들어짐
5 키 일치(Key Agreement)
가) 상대방의 공개 키와 자신의 개인 키를 이용하여 암호화를 위한 키 생성
나) 공유 비밀 키(shared secret key)를 만들어 암호화와 복호화에 사용
다) 상대방에게 공유 비밀 키를 전달할 필요 없음
라) Diffie-Hellman 키 일치 알고리즘
① 공개-개인 키 쌍을 이용한 첫번째 알고리즘
암호화 알고리즘 요약
1 암호화 알고리즘 요약
가) 알고리즘의 능력 판단 기준
① 알고리즘 종류 및 키의 크기
나) 대칭 암호화
알고리즘 |
종류 |
키의 크기 |
참고 |
DES |
블록 |
56 |
가장 많이 사용되지만 너무 취약함 |
TripleDES |
블록 |
158(유효 112) |
DES의 강화버전 |
Blowfish |
블록 |
488까지 임의 길이 |
훌륭한 보안 제공 |
RC4 |
스트림 |
보통 40 또는 128 |
빠른 스트림 암호화, 대부분의 SSL 구현에 사용됨 |
AES |
블록 |
128, 192, 256 |
DES 대용의 비교적 최근 암호화 기법 |
다) 비대칭 암호화
알고리즘 |
종류 |
키의 크기 |
참고 |
RSA |
블록 |
512, 1024, 2048 |
가장 많이 사용되는 공개 키 알고리즘 2000년도 특허 만료 |
EL Gamal |
블록 |
512, 1024, 2048 |
PGP 같은 프로토콜에 널리 사용됨 |
라) 키 일치 알고리즘
알고리즘 |
종류 |
키의 크기 |
참고 |
Diffie-Hellman |
키 일치 |
보통 512, 1024 |
최초의 공개 키 암호 작성 알고리즘 |
출처 : http://blog.naver.com/xxrcn11?Redirect=Log&logNo=20134786143
'UP! > Crypto' 카테고리의 다른 글
패스워드 기반 암호화 (0) | 2015.11.05 |
---|---|
JCA, JCE (0) | 2015.11.05 |
인증, 전자서명 (0) | 2015.11.05 |
블록 Padding (0) | 2015.11.05 |
base64 인코딩, 디코딩의 원리 (0) | 2015.11.05 |