양방향 암호화는 크게 2가지로 구분된다. : 대칭 키 알고리즘
비대칭 키 알고리즘
단방향 암호화의 해시는 무차별대입공격에 취약하기 때문에 엄밀히 말하자면 암호화 라고 볼수는 없는것같다.
태생이 암호화를 위해서가 아니라 검색을 빨리하기 위한 것.
아래 다이어그램은 큰그림으로 보기 좋아서 가져왔다.
암호화, 복호화 모두 같은 키를 사용한다.
빠르고 안전하다.
키관리가 어렵다. (안전한 키 교환 방법이 필요하다.)
AES, DESC, Blowfish
AES는 128 192, 256가 있는데 256이 가장 안전하다.
공개키 + 비밀키를 필요로 한다.
공개키는 누구에게나 공개해도 되고, 비밀키는 소유자만 알고있어야 한다.
공개키로 데이터를 암호화 하고, 비밀키로 복호화 한다.
키관리가 쉽다. (안전한 키 교환 방법이 필요치 않다)
속도가 느리고 계산량이 많다.
RSA, Diffie-Hellman, ECC
RSA는 2048비트 이상이며 보안수준이 높은경우 4096비트 이상의 크기가 사용된다.
SHA (secure hash algorithm) 은 해시함수를 구현하기 위한 알고리즘.
고정된 길이의 데이터로 매핑하는 함수.
데이터의 기밀성을 보호하지 않는다.
암호화 알고리즘과는 다르다.
어떤 데이터의 해시값은 항상 고정된 길이의 문자열이 된다.
입력된 데이터가 조금이라도 변경되면 해시값도 완전히 달라짐.
그래서 무결성 검사, 메시지 인증 등에 사용됨.
sha-1, sha-2, sha-3 이 있고 sha-2는 256비트부터 512까지 다양한 길이의 해시값을 지원.
MD5도 있는데 비교적 sha가 우세하다.
디지털 서명은 메시지의 인증과 무결성을 보장하기 위한 암호학적 기술입니다.
디지털 서명에는 다음과 같은 단계가 있습니다.
메시지의 해시 값 계산: 메시지의 해시 값(또는 메시지 다이제스트)을 계산합니다. 해시 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수입니다.
디지털 서명에서는 일반적으로 SHA-2 또는 SHA-3과 같은 안전한 해시 함수를 사용하여 해시 값을 계산합니다.
개인 키로 암호화: 해시 값에 개인 키를 적용하여 암호화합니다.
이 과정에서는 전용 알고리즘, 예를 들어 RSA나 ECDSA(타원 곡선 디지털 서명 알고리즘) 등을 사용합니다.
디지털 서명 생성: 암호화된 해시 값(서명)과 함께 공개 키(디지털 인증서에서 제공)를 함께 전송합니다. 이 서명은 메시지의 무결성과 인증을 증명하는 데 사용됩니다.
디지털 서명 검증: 서명을 검증하는 데는 메시지의 원본 해시 값을 계산하여, 공개 키를 사용하여 서명된 해시 값과 비교합니다.
이를 통해 서명이 원본 메시지에 대한 것임과 서명이 위조되지 않았음을 증명할 수 있습니다.
메시지의 해시 값을 계산하여 디지털 서명을 생성하면, 해시 값이 고정 길이이므로 매우 짧아지며, 무결성과 인증을 검증하는 데 소요되는 데이터 양이 줄어듭니다.
이를 통해 전송 대역폭을 절약하고 검증 속도를 높일 수 있습니다.