암호화는 허용되지 않는 접근이나 조회로부터 정보를 보호 할 책임이 있습니다.
암호화는 인증된 사용자만 복호화가 가능한 방식으로 데이터를 암호화합니다. 어떠한 노출과 공격에도 써드 파티의 접근을 허용해서는 안됩니다. 일반적으로 암호화 과정은 일반 텍스트를 암호화된 텍스트로 바꾸는 과정입니다. 알고리즘을 이용해서 특별한 키를 사용합니다. 우리가 암호문을 가지고 있어도 알고리즘과 키가 없다면 우리 또한 데이터를 읽을 수 없습니다.
대칭 암호화
대칭 암호화는 정보를 암호화하고 복호화하기위해 하나의 키를 사용하는 알고리즘입니다.
다른 말로, 전송자는 데이터를 암호화하기 위해 비밀키를 사용합니다. 그리고나서, 수신자는 데이터를 복호화하고 읽기 위해서 같은 키를 사용합니다. 그래서, 키는 데이터를 복호화하기 위해 관련된 사용자들에게 모두 공유되어야 합니다.
강력한 알고리즘을 사용한다면, 암호문의 복호화는 비밀키가 없이는 사실 상 불가능합니다. 알고리즘의 강도는 얼마나 키가 복잡한지에 달려있습니다.
예를 들어, 128bit AES 키를 해독하기위해서는 약 5000 억년 이상이 필요합니다. 더욱이, 256bit는 훨씬 복잡합니다.
다시말해, 비밀키는 데이터를 복호화하기 위해 필요하며, 관련된 사용자들에게 모두 비밀키가 전달되어야 합니다. 따라서 관련된 사용자들에게 키를 전달하는 모든 과정이 결코 노출되어서는 안됩니다. 더불어 모든 비밀키 수신자들은 키를 안전하게 관리해야 할 의무가 있습니다. 아무리 키를 보호하려고 최대한 노력을 하더라도, 다른 사용자들이 그렇다는 보장이 없습니다. 결론적으로 보안을 지키는 것이 대칭 암호화의 중요한 관심사입니다.
대칭키 알고리즘
대칭 키 알고리즘에는 2가지 유형이 있습니다
- 블록 암호
- 스트림 암호
블록 암호화는 정보를 같은 크기의 블럭으로 나눕니다. 그리고나서, 각 블록은 분리되어 암호화 됩니다.표준 블록 사이즈는 64, 128, 192, 256비트 입니다. 비록, 블록이 128비트 이하라면 보안이 취약하지만, 가장 인기있는 블록 암호화는 U.S. Government-designated AES 입니다.
반면에, 스트림 암호화는 데이터를 블록으로 나누지 않습니다. 문자열을 암호화합니다. 하나의 유닛은 1바이트 혹은 1비트입니다. 가장 큰 차이점은 스트림 암호화는 다른 키를 사용하여 각각 문자열을 암호화 할 수 있습니다. 스트림 암호화는 RC4, Chacha20, Salsa20 등이 있습니다.
비대칭 암호화
비대칭 암호화는 2개의 다른 쌍을 사용하지만, 키들은 연관성을 가지고 있습니다. 첫번째 키는 공개키로, 데이터를 암호화하고 모두에게 공유됩니다. 두번째 키는 개인키로, 데이터를 복호화 하는데 사용합니다. 개인키는 안전하게 저장되어야 하고 모든 사람들에게 공개되서는 안됩니다.
비대칭 암호화는 대칭 암호화의 2가지 문제를 해결합니다. 첫째로, 데이터를 복호화하는 개인키는 아무곳에나 전달되지 않습니다. 수신인만 개인키를 가지고 있으며, 보안을 책임질 유일한 대상입니다.
이런 특성은 인증하지 않는 사용자가 데이터를 읽을 가능성을 현저하게 낮춥니다. 게다가 비대칭 암호화는 디지털 인증에 사용됩니다. 비대칭 암호화는 매우 보안에 좋지만, 대칭 암호화에 비해 느립니다. 그러므로 가끔씩 하이브리드 접근법이 사용됩니다. 메세지를 암호화하기 위해서는 대칭 암호화를 사용하고, 키를 암호화하기 위해서는 비대칭 암호화를 사용합니다. 따라서 느린 비대칭 암호화는 키에만 관여합니다. 빠른 대칭 암호화는 데이터를 암호화하고 복호화합니다.
RSA
가장 인기있는 비대칭 암호화는 RSA입니다. 1977년 MIT에서 개발되었습니다. 위에서 소개한대로, 공개키와 비밀키 한 쌍을 사용해 데이터를 암호화하고 복호화합니다. 암호화는 3가지 주요 특징이 있습니다.
- 공개키와 비밀키가 생성됩니다.
- 사용자들은 공개키를 받습니다. 각자 공개키를 사용해서 데이터를 암호화하고 RSA 암호문으로 해당 데이터를 전송합니다. 데이터는 공개키로 절대 복호화 될 수 없습니다.
- 데이터가 전송되면, 수신자는 개인키를 이용해서 데이터를 복호화합니다.
RSA는 매우 강력한 암호화 방식입니다. 충분히 긴 키를 사용한다면, 절대 복호화 할 수 없습니다. 반면에, 굉장히 느립니다. 그래서 해당 기술도 가끔은 하이브리드 방식으로 사용됩니다.
비교하기
대칭 | 비대칭 |
데이터를 암호화 복호화하기 위해 하나의 키 사용 | 데이터 암호화 복호화를 위해 다른 키 사용 |
하나의 키를 모두 공유하므로 보안 위협 | 공개키는 송신자에게만, 개인키는 수신자에게만 저장 |
암호문이 기존 평문 길이가 거의 다르지 않음 | 암호문이 평문보다 훨씬 김 |
매우 빠름 | 복잡하고 느림 |
대게 128 혹은 256 비트 키를 사용 | 최소 1000 비트 키를 사용 |
디지털 증명에 사용되지 않음 | 디지털 증명에 사용됨 |
부인봉쇄 부족 | 부인봉쇄 가능 |
*부인봉쇄 : 송신측이 자신의 정보를 정확하게 상대방에게 전송했다고 해도 수신측이 이를 부인하거나, 수신측이 정확하게 정보를 받았음에도 불구하고 송신측이 자신에게 보낸 정보가 아니라고 주장하는 것을 방지하는 기능
* 참고
Symmetric Cryptography vs Asymmetric Cryptography | Baeldung on Computer Science
'학습' 카테고리의 다른 글
equals() 와 hashCode()는 왜 재정의 해야 할까? (0) | 2022.10.14 |
---|---|
HTTP Method for Restful Services (0) | 2022.10.14 |
TLS/SSL (0) | 2022.09.05 |
CORS란 무엇인가? (0) | 2022.08.05 |
Git vs GitHub 차이점 (0) | 2021.03.22 |