1. 암호화란?
평문(plain text)를 암호문(crypto text)로 변환하는 과정
사용자가 입력한 데이터를 알아볼 수 없는 데이터로 변경하는 과정
암호문의 형태로 정보를 기억 장치에 저장하거나 통신 회선을 통해 전송함으로써 정보를 보호할 수 있다.
2. 복호화란?
암호문(crypto text)를 평문(plain text)로 변환하는 과정
암호화된 데이터를 정상적인 데이터로 변경하는 과정
3. 암호화 분류와 암호화 알고리즘
암호화의 분류로는 단방향 암호화와 양방향 암호화가 있다.
4. 단방향 암호화
암호화 과정 : 평문 → 암호화 엔진 → 암호문
암호화를 수행하고 나온 데이터를 다시 원래의 데이터로 돌릴 수 없는 암호화 방식(복호화 불가능)
단방향 암호화에서 나온 데이터는 원래 데이터의 1bit만 바뀌어도 전혀 다른 암호문으로 변하기 떄문에 보통 데이터가 변조되지 않았음을 나타낼 때 사용한다.
단방향 암호를 위한 알고리즘으로 해시(Hash) 알고리즘이 대표적이다.
해시 알고리즘은 암호화는 가능하지만 복호화가 불가능하다는 점을 이용해 데이터의 무결성을 검증하기 위함이다.
단방향 암호화의 종류
1) Hash
해쉬는 임의의 크기를 가진 데이터를 고정된 데이터의 크기로 변환시키는 함수이다.
입력 값의 길이가 달라도 출력 값은 언제나 고정된 길이로 반환한다.
동일한 값이 입력되면 언제나 동일한 출력 값을 보장한다.
해시 함수에 의해 얻어지는 값은 해시 값, 해시 콛, 해시 체크섬 또는 간단하게 해시라고 한다.
해시는 여러 가지 알고리즘이 있는데 대표적으로 SHA 시리즈와 MD5가 있다.
1-1). MD5 알고리즘 (Message-Digest Algorithm 5)
1991년에 로널드 라이베스트가 이전에 쓰이던 MD4를 대체하기 위해 고안된 알고리즘이다.
임의의 길이의 메시지를 입력받아 128비트짜리 고정 길이의 값을 출력한다.
입력 메시지의 길이 제한이 없다.
주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다.
현재 MD5 알고리즘은 보안 관련 용도로 권장하지 않는다.
1-2) SHA 알고리즘 (Secure Hash Algorithm)
MD5의 취약성을 개선 및 대처하기 위해 미국 국가안보국(NSQ)가 1993년에 설계, 미국의 국가 표준으로 지정
해시 값의 크기는 SHA 알고리즘에 따라오는 bit 수만큼 달라지게 된다.
해시 함수의 버전은 SHA 0 ~ SHA 3까지 있으며 현재는 SHA 2가 사용 가능하고, SHA 3가 권장되고 있으며,
SHA 0과 1은 사용하지 않도록 하고 있다.
5. 양방향 암호화
암호문을 복호화할 수 있도록 구현된 암호 알고리즘을 말한다.
데이터를 인가된 사용자만 볼 수 있도록 하기 위한 장치이다.
양방향 암호 알고리즘은 주로 3DES, AES와 RSA가 잘 알려져 있다.
알고리즘은 키의 성질에 따라 구분되는데 크게 대칭키 암호 알고리즘과 비대칭키 암호 알고리즘으로 구분된다.
양방향 암호화의 종류
1) 대칭키 암호화 알고리즘
하나의 키로 암호화와 복호화를 모두 수행하는 것
암호문을 작성할 때 사용하는 암호키와 암호문을 해독할 떄 사용하는 해독 키가 같음
-> 따라서 이 키는 절대로 외부에 유출되지 않도록 관리해야 하며 비밀키(Secret Key)라고 부른다.
암호화와 복호화에 쓰이는 키 크기가 상대적으로 작고 암호 알고리즘 내부 구조가 단순하며, 시스템 개발 환경에 용이하고 비대칭키에 비해 암호화와 복호화 속도가 빠르다.
교환 당사자간에 동일한 키를 공유해야 하기 때문에 키 관리의 어려움이 있고, 잦은 키 변경이 있는 경우 불편함을 초래한다.
1-1) DES 알고리즘 (Data Encryption Standard)
1975년에 IBM에서 개발하고 1979년에 미국 NBS가 국가 표준 암호 알고리즘으로 지정한 대칭키 암호 알고리즘
평문을 64비트로 나눠 56비트의 키를 이용해 다시 64비트의 암호문을 만들어내는 알고리즘
블록 암호 기법을 사용하고 16단계의 파이스텔 네트워크를 거쳐 암호화를 수행한다.
1-2) 3DES 알고리즘
DES 알고리즘을 3중으로 만들어 DES 암호를 보완한 암호 알고리즘
암호화-암호화-암호화 방법이 아닌, 암호화-복호화-암호화 방법으로 암호화 실행
1-3) AES 알고리즘
DES의 안전성에 대해 여러가지 공격 방법들이 발표되었고, 그 중 미국의 NIST에서 고안한 암호 알고리즘 고급 암호화 표준(Advanced Encryption Standard)라고 불리는 AES 암호 알고리즘 -> DES를 대체한 암호 알고리즘이며 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭키 알고리즘128비트 암호화 블록, 다양한 키의 길이(128, 192, 256 비트)를 갖춘 대칭형 암호 알고리즘 종류 : AES-128, AES-192, AES-256
AES는 대입 치환 SPN(Substisution-Permutation Network)를 사용하여 암호화하는 방법으로, 전체 bit를 암호화하는 방식을 사용하고, 사용하는 키에 따라 실행하는 라운드 수가 다르다. 128bit - 10라운드, 192bit - 12라운드, 256bit - 14라운드
2) 비대칭키 암호 알고리즘
= 공개키 암호 알고리즘
비대칭키는 암호화할 때와 복호화할 때의 키가 서로 다른 키(key)를 의미한다.
공개키(Public Key)와 개인키(Private Key)가 존재한다.
한 쌍의 키가 존재하며 한 키는 특정 사람만이 가지는 개인키(비밀키)이고, 다른 하나는 누구나 가질 수 있는 공개키
공개키와 비밀키의 기능은 완전히 같다
비대칭키를 사용한 암호화 방식에는 공개키로 암호화를 하는 경우와 개인키로 암호화를 하는 경우로 나눠짐
공개키로 암호화를 선택했다면 데이터 보안에 중점을, 개인키로 암호화를 진행했다면 안전한 전자서명을 통한 인증 과정에 중점을 둔것으로 볼 수 있음
2-1) RSA 알고리즘
RSA는 창시자들의 이름 앞글자를 따서 지음 (Ron Rivest, Adi Shamir, Leonard Adleman)
암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘
RSA는 큰 정수의 소인수 분해의 난해함에 기반하여, 공개키만을 가지고는 개인키를 쉽게 짐작할 수 없도록 디자인됨
1993년 피터 쇼어는 쇼어 알고리즘을 발표, 양자 컴퓨터를 이용하여 임의의 정수를 다항 시간안에 소인수분해하는 방법 발표
-> 따라서 양자 컴퓨터가 본격적으로 실용화되면 RSA알고리즘은 무용지물이 될지도 모른다.
'#프로그래밍공부 > 2. 프로그래밍' 카테고리의 다른 글
[DBeaver] 디비버 단축키 정리 (0) | 2022.03.14 |
---|---|
[JDBC] JDBC를 통한 Database 테이블 정보 조회 (0) | 2021.12.13 |
[자바] 자바 컬렉션 프레임워크 (0) | 2021.11.28 |
[XML] XML과 DTD (0) | 2021.11.28 |
[자바스크립트] this 선택자의 선택, 미선택 구분 (0) | 2021.08.28 |