2024. 7. 11. 17:19ㆍGCC/IT 지원
Pelcgbybtl(암호화)
대칭 암호화
암호화
암호화의 기본 개념
- 암호화(Encryption): 평문(Plain Text)을 읽을 수 없는 암호문(Cipher Text)으로 변환하는 과정입니다.
- 복호화(Decryption): 암호문을 원래의 평문으로 변환하는 과정입니다.
- 알고리즘: 암호화와 복호화를 수행하는 수학적 규칙입니다.
- 키(Key): 암호화와 복호화 과정에서 사용되는 비밀 값입니다.
대칭 암호화(Symmetric Encryption)
대칭 암호화에서는 하나의 키를 사용하여 데이터를 암호화하고 복호화합니다. 키를 공유하는 모든 당사자가 이 키를 알고 있어야 합니다.
- 예시: AES(Advanced Encryption Standard)
- 장점: 빠르고 효율적이며, 대량의 데이터를 처리하기에 적합합니다.
- 단점: 키 분배 문제, 즉 키를 안전하게 공유하는 것이 어렵습니다.
비대칭 암호화(Asymmetric Encryption)
비대칭 암호화에서는 서로 다른 두 개의 키, 즉 공개 키(Public Key)와 비밀 키(Private Key)를 사용합니다. 공개 키로 암호화한 데이터는 해당 공개 키와 쌍을 이루는 비밀 키로만 복호화할 수 있습니다.
- 예시: RSA(Rivest-Shamir-Adleman)
- 장점: 키 분배가 더 안전하며, 공개 키를 공개해도 비밀 키는 안전합니다.
- 단점: 대칭 암호화보다 느리고, 대량의 데이터를 처리하기에는 비효율적입니다.
해싱(Hashing)
해싱은 데이터를 고정된 길이의 고유한 값으로 변환하는 과정입니다. 해시 함수는 입력이 같으면 항상 같은 출력을 제공하지만, 역방향 계산은 불가능합니다.
- 예시: SHA-256(Secure Hash Algorithm 256-bit)
- 용도: 데이터 무결성 검증, 비밀번호 저장 등.
암호화 알고리즘 예시
- AES(Advanced Encryption Standard)
- 설명: 널리 사용되는 대칭 암호화 알고리즘으로, 보안성과 성능이 뛰어납니다.
- 용도: 파일 암호화, 디스크 암호화 등.
- RSA(Rivest-Shamir-Adleman)
- 설명: 비대칭 암호화 알고리즘으로, 키 교환과 디지털 서명에 사용됩니다.
- 용도: 안전한 키 교환, 전자 서명 등.
- SHA-256(Secure Hash Algorithm 256-bit)
- 설명: 고정된 256비트 해시 값을 생성하는 해시 함수입니다.
- 용도: 데이터 무결성 검증, 블록체인 기술 등.
상황별 암호화 방식 선택
- 데이터 전송 보호
- 추천 알고리즘: AES (빠른 대칭 암호화로 데이터 전송을 보호)
- 예시: HTTPS(TLS/SSL)에서 사용
- 파일 및 데이터 저장 보호
- 추천 알고리즘: AES (파일 암호화에 적합)
- 예시: 파일 시스템 암호화, 클라우드 저장소 암호화
- 키 교환 및 전자 서명
- 추천 알고리즘: RSA (안전한 키 교환 및 신원 검증)
- 예시: 디지털 인증서, 전자 서명
- 데이터 무결성 검증
- 추천 알고리즘: SHA-256 (고유한 해시 값으로 데이터 변경 감지)
- 예시: 파일 검증, 블록체인
암호화의 역사와 발전
암호화는 오래된 역사를 가지고 있으며, 제1차 세계 대전과 제2차 세계 대전 동안 급격히 발전했습니다. 특히 제2차 세계 대전 중 영국의 블레츨리 파크에서 최초의 프로그래밍 가능한 디지털 컴퓨터인 콜로서스를 사용하여 암호 해독이 진행되었습니다.
스테가노그래피(Steganography)
스테가노그래피는 정보를 숨기는 기술입니다. 암호화와는 달리, 정보를 인코딩하지 않고 단순히 보이지 않게 만듭니다. 최신 스테가노그래피 기술은 메시지와 파일을 이미지나 동영상 같은 다른 파일에 숨기는 방법을 사용합니다.
- 암호화: 데이터 보호를 위해 평문을 암호문으로 변환하는 과정.
- 대칭 암호화: 하나의 키를 사용하는 암호화 방식.
- 비대칭 암호화: 공개 키와 비밀 키를 사용하는 암호화 방식.
- 해싱: 고정된 길이의 고유한 값을 생성하는 방법.
- 스테가노그래피: 정보를 숨기는 기술.
다양한 암호화 방법과 그 사용 사례를 이해하면, 실제로 보안 시스템을 설계하거나 분석할 때 매우 유용합니다.
대칭 암호화
암호화 시스템의 기본 개념을 통해 암호화와 복호화의 중요성을 이해했다면, 이제 다양한 암호화 알고리즘을 더 깊이 탐구해 보겠습니다. 특히 대칭 암호화의 구체적인 예와 메커니즘을 통해 메시지 보호 방법을 자세히 살펴보겠습니다.
대칭 암호화(Symmetric Encryption)
대칭 암호화는 동일한 키를 사용하여 메시지를 암호화하고 복호화합니다. 이 키를 안전하게 공유하는 것이 중요합니다. 대칭 암호화의 예로는 블록 암호화와 스트림 암호화가 있습니다.
대칭 암호화 예: 시저 암호(Caesar Cipher)
시저 암호는 고전적인 대칭 암호화 방법으로, 각 문자를 알파벳에서 일정한 위치만큼 이동시켜 암호화합니다.
- 알고리즘: 각 문자를 알파벳에서 일정한 거리(오프셋)만큼 이동시켜 암호화.
- 키: 이동 거리(오프셋).
예를 들어, 키가 3인 경우 "HELLO"는 "KHOOR"로 암호화됩니다. 복호화할 때는 반대 방향으로 이동시키면 원래의 텍스트를 얻을 수 있습니다.
ROT13
ROT13은 시저 암호의 변형으로, 알파벳을 13자리 이동시킵니다.
- "HELLO"는 ROT13으로 "URYYB"가 됩니다.
- "URYYB"에 ROT13을 다시 적용하면 "HELLO"로 복호화됩니다.
블록 암호화(Block Encryption)
블록 암호화는 입력 데이터를 고정된 크기의 블록으로 나눠 각 블록을 개별적으로 암호화합니다.
- 예시: AES (Advanced Encryption Standard)
- 작동 방식: 입력 데이터가 128비트, 192비트, 256비트 블록으로 나뉘며 각 블록이 암호화됩니다.
- 장점: 높은 보안성을 제공하며, 패딩을 통해 블록 크기를 맞춥니다.
- 단점: 스트림 암호화보다 느리며, 구현이 복잡합니다.
스트림 암호화(Stream Encryption)
스트림 암호화는 데이터 스트림을 한 번에 한 비트 또는 한 바이트씩 암호화합니다.
- 예시: RC4 (Rivest Cipher 4)
- 작동 방식: 암호화 알고리즘이 연속적인 키스트림을 생성하여, 평문과 XOR 연산을 통해 암호문을 생성합니다.
- 장점: 속도가 빠르고 구현이 간단합니다.
- 단점: 보안성이 블록 암호화보다 낮습니다.
초기화 벡터(IV, Initialization Vector)
초기화 벡터는 암호화 키에 무작위성을 추가하여 동일한 키를 여러 번 사용하는 경우에도 각 암호화 과정이 고유하도록 합니다.
- 용도: 키 재사용을 방지하고, 동일한 메시지가 반복되어 암호화될 때 보안성을 높입니다.
- 구성: 암호화 키와 결합하여 새 키를 생성하고, IV는 암호문과 함께 전송됩니다.
대칭 암호화의 장단점
장점
- 속도: 대칭 암호화는 비대칭 암호화보다 빠릅니다.
- 효율성: 대량의 데이터를 암호화하는 데 적합합니다.
- 간단한 구현: 알고리즘이 상대적으로 간단합니다.
단점
- 키 분배 문제: 키를 안전하게 공유하는 것이 어렵습니다.
- 확장성 문제: 통신하는 모든 쌍마다 고유한 키를 유지해야 합니다.
- 키 재사용 문제: 동일한 키를 여러 번 사용하면 보안이 약화될 수 있습니다.
대칭 암호화는 효율적이고 빠른 데이터 보호 방법이지만, 키 관리와 분배가 중요한 과제입니다. 블록 암호화와 스트림 암호화는 각각의 장단점이 있어, 사용 목적에 따라 적절한 방법을 선택해야 합니다. 초기화 벡터를 활용하면 키 재사용 문제를 효과적으로 해결할 수 있습니다.
대칭 암호화 알고리즘
DES(데이터 암호화 표준)의 기본 사항
DES는 1970년대 IBM에 의해 설계되었고, 미국 국가안보국(NSA)의 도움을 받아 미국의 연방 정보 처리 표준(FIPS)으로 채택되었습니다. DES는 대칭 블록 암호화 알고리즘으로, 64비트 블록 크기와 64비트 키 크기를 사용하지만, 실제 키 길이는 패리티 비트로 인해 56비트입니다.
DES의 작동 원리
- 키 크기: DES는 64비트 키를 사용하지만 8비트는 패리티 검사에 사용되므로 실제 키 길이는 56비트입니다.
- 블록 크기: DES는 64비트 블록에서 작동합니다.
- 암호화 및 복호화: 동일한 키를 사용하여 데이터를 암호화하고 복호화합니다.
키 크기의 중요성
암호화 키 크기는 암호화의 강도를 결정합니다. 키가 클수록 무차별 대입 공격에 대한 보안성이 높아집니다. 무차별 대입 공격은 가능한 모든 키를 시도하여 올바른 키를 찾아내는 방법입니다. DES의 56비트 키는 최대 2^56개의 키 조합을 가지므로, 이론적으로 매우 안전했으나, 기술 발전으로 인해 실용적으로는 보안이 취약해졌습니다.
DES의 취약점
DES는 1990년대 후반부터 키 길이가 짧아 무차별 대입 공격에 취약해졌습니다. 1998년, 전자 프런티어 재단(EFF)은 단 56시간 만에 DES로 암호화된 메시지를 해독했습니다. 이러한 이유로 DES는 점차 더 강력한 알고리즘으로 대체되었습니다.
DES를 대체한 AES(고급 암호화 표준)
AES는 DES의 후속으로 NIST가 주관한 국제 공모를 통해 2001년에 채택되었습니다. AES는 다음과 같은 특징을 가집니다:
- 블록 크기: 128비트 블록 크기를 사용합니다.
- 키 크기: 128비트, 192비트, 256비트 키 길이를 지원합니다.
- 보안성: AES는 이론적으로 무차별 대입 공격이 가능하지만, 필요한 시간과 자원 때문에 실질적으로는 안전합니다.
AES의 장점
- 강력한 보안: 큰 키 크기와 블록 크기로 인해 공격에 대한 보안성이 매우 높습니다.
- 속도와 효율성: 하드웨어 구현을 통해 속도와 효율성이 뛰어나며, 많은 현대 CPU에서 AES 명령을 내장하고 있습니다.
RC4의 단점
RC4는 한때 널리 사용된 대칭 스트림 암호화였지만, 자체 알고리즘의 취약점으로 인해 더 이상 권장되지 않습니다. 예를 들어, RC4 NOMORE 공격은 단 52시간 만에 TLS로 암호화된 연결에서 인증 쿠키를 복구할 수 있었습니다. 이러한 이유로 대부분의 주요 웹 브라우저는 RC4에 대한 지원을 중단했습니다.
대칭 암호화의 장단점
장점
- 빠른 속도: 대칭 암호화 알고리즘은 비대칭 암호화보다 빠릅니다.
- 간단한 구현: 암호화와 복호화 과정이 동일하므로 구현이 상대적으로 쉽습니다.
- 효율적: 대량의 데이터를 암호화하는 데 적합합니다.
단점
- 키 관리 문제: 키를 안전하게 공유하고 관리하는 것이 어렵습니다.
- 확장성 문제: 통신하는 모든 쌍마다 고유한 키를 유지해야 합니다.
- 보안 위험: 키가 유출되면 보안이 크게 손상됩니다.
DES와 같은 초기 암호화 알고리즘은 시간이 지나면서 그 취약성이 드러났지만, AES와 같은 더 강력하고 안전한 대칭 암호화 알고리즘이 개발되어 널리 사용되고 있습니다. 대칭 암호화는 여전히 데이터 보호의 중요한 도구이지만, 키 관리와 보안 유지가 핵심입니다.
공개 키 또는 비대칭 암호화
비대칭 암호화
비대칭 암호화의 기본 사항
비대칭 암호화, 또는 공개 키 암호화는 두 가지 다른 키를 사용하여 데이터를 암호화하고 복호화하는 암호화 방식입니다. 이 방법을 통해 통신할 때 기밀성, 진위성 및 부인 방지를 보장할 수 있습니다.
비대칭 암호화의 작동 원리
예시: 수잔과 대릴
- 키 생성: 수잔과 대릴은 각각 비공개 키와 공개 키를 생성합니다.
- 공개 키 교환: 두 사람은 공개 키를 서로 교환합니다.
- 메시지 암호화: 수잔이 대릴에게 메시지를 보낼 때, 대릴의 공개 키를 사용하여 메시지를 암호화합니다.
- 메시지 복호화: 대릴은 자신의 비공개 키를 사용하여 수잔의 메시지를 복호화합니다.
이 과정에서 대릴의 비공개 키가 없으면, 대릴의 공개 키로 암호화된 메시지를 해독할 수 없습니다.
디지털 서명
디지털 서명은 메시지의 진위성과 무결성을 보장하는 방법입니다.
- 메시지 작성: 수잔이 메시지를 작성합니다.
- 서명 생성: 수잔은 자신의 비공개 키를 사용하여 메시지에 디지털 서명을 생성합니다.
- 서명 전송: 메시지와 서명을 대릴에게 전송합니다.
- 서명 검증: 대릴은 수잔의 공개 키를 사용하여 서명의 유효성을 검증합니다.
이렇게 하면 대릴은 메시지가 수잔에 의해 작성되었고, 전송 과정에서 변경되지 않았음을 확인할 수 있습니다.
비대칭 암호화의 핵심 개념
- 기밀성: 암호화-복호화 메커니즘을 통해 데이터가 보호됩니다.
- 진위성: 디지털 서명을 통해 메시지의 출처와 무결성을 검증할 수 있습니다.
- 부인 방지: 메시지 작성자는 자신이 메시지를 보냈다는 사실을 부인할 수 없습니다.
비대칭 암호화의 장단점
장점
- 안전한 키 교환: 비대칭 암호화는 신뢰할 수 없는 채널을 통해 안전하게 키를 교환할 수 있습니다.
- 진위성 보장: 디지털 서명을 통해 메시지의 진위를 보장할 수 있습니다.
단점
- 계산 비용: 비대칭 암호화는 대칭 암호화보다 계산 비용이 높습니다.
- 속도: 대칭 암호화에 비해 느립니다.
대칭 암호화와 비대칭 암호화의 통합 사용
많은 보안 통신 체계는 두 가지 암호화 방식을 함께 사용합니다. 예를 들어, 비대칭 암호화를 사용하여 대칭 암호화의 키를 안전하게 교환한 후, 대칭 암호화를 사용하여 데이터를 빠르고 효율적으로 암호화합니다.
메시지 인증 코드(MAC)
MAC은 수신된 메시지의 인증을 위해 사용되는 소량의 정보입니다. MAC은 대칭 암호화 방식과 유사하며, 발신자가 진짜 발신자인지 확인하고 메시지가 수정되지 않았음을 보장합니다.
HMAC (키 지정 해시 메시지 인증 코드)
HMAC은 비밀 키와 암호화 해시 함수를 사용하여 생성됩니다. 메시지와 함께 전송되며, 수신자가 동일한 작업을 수행하여 계산된 MAC과 비교함으로써 메시지의 진위성을 확인합니다.
CMAC (암호화 기반 메시지 인증 코드)
CMAC은 대칭 암호화를 사용하여 메시지를 암호화하고 결과 출력을 MAC으로 사용합니다. CBC-MAC은 이러한 CMAC의 한 예로, 블록 암호화를 사용하여 MAC을 생성합니다.
비대칭 암호화는 대칭 암호화와 함께 사용하여 안전한 통신을 보장할 수 있습니다. 비대칭 암호화는 주로 키 교환과 디지털 서명에 사용되고, 대칭 암호화는 빠르고 효율적으로 데이터를 암호화하는 데 사용됩니다. 이를 통해 통신의 기밀성, 진위성 및 부인 방지를 보장할 수 있습니다.
비대칭 암호화 알고리즘
RSA: 최초의 실용적 비대칭 암호화 시스템
RSA는 최초의 실용적인 비대칭 암호화 시스템 중 하나로, 론 리베스트, 아디 샤미르, 레너드 에이들먼에 의해 개발되었습니다. 이들의 이름의 첫 글자를 따서 RSA라는 이름이 붙었습니다. 1983년에 특허를 받은 후 2000년에 RSA Security에 의해 공개 도메인으로 출시되었습니다.
RSA의 작동 원리
RSA 암호화 시스템은 두 개의 큰 소수를 기반으로 키를 생성합니다. RSA는 다음과 같은 단계로 작동합니다:
- 키 생성: 두 개의 큰 소수 pp와 qq를 선택하고, 이들을 곱하여 n=pqn = pq를 계산합니다. nn은 공개 키와 비공개 키 모두에서 사용됩니다. 공개 지수 ee를 선택하고 ϕ(n)=(p−1)(q−1)\phi(n) = (p-1)(q-1)와 서로소인 값을 선택합니다. ee는 일반적으로 65537로 선택됩니다. 비공개 지수 dd는 ed≡1(mod ϕ(n))ed \equiv 1 (\mod \phi(n))을 만족하도록 계산합니다.
- 공개 키와 비공개 키: 공개 키는 (n,e)(n, e)이고, 비공개 키는 (n,d)(n, d)입니다.
- 암호화: 메시지 MM을 암호화할 때, C=Memod nC = M^e \mod n으로 계산합니다.
- 복호화: 암호문 CC를 복호화할 때, M=Cdmod nM = C^d \mod n으로 계산합니다.
RSA는 주로 데이터를 안전하게 암호화하고 복호화하는 데 사용되며, 키 교환과 디지털 서명에도 사용됩니다.
DSA: 디지털 서명 알고리즘
디지털 서명 알고리즘(DSA)은 비대칭 암호화 시스템으로 데이터 서명 및 인증에 사용됩니다. 1991년에 특허를 받았으며, 미국 연방 정보 처리 표준으로 포함되었습니다. DSA는 키 생성 프로세스와 키 쌍을 사용한 데이터 서명 및 인증을 포함합니다.
DSA의 보안
DSA의 보안은 서명 프로세스에 통합되는 무작위 시드 값의 선택에 달려 있습니다. 이 값이 유출되면 비공개 키가 복구될 수 있습니다. 실제로 2010년 Sony의 PlayStation 3 게임 콘솔에서 무작위 값이 변경되지 않아 해커 그룹 failOverflow가 Sony의 비공개 키를 복구한 사례가 있었습니다. 이로 인해 게임 불법 복제가 문제가 되었습니다.
디피-헬먼(DH) 키 교환
디피-헬먼(DH) 키 교환 알고리즘은 두 당사자가 안정하지 않은 채널을 통해 안전하게 공유 비밀번호를 설정할 수 있게 합니다.
DH 키 교환의 작동 원리
- 공유 숫자 선택: 수잔과 대릴은 무작위로 선택된 매우 큰 정수 pp와 gg를 공유합니다.
- 비밀 숫자 선택: 각자 비밀 숫자 aa와 bb를 선택합니다.
- 공유 값 계산: 수잔은 A=gamod pA = g^a \mod p를, 대릴은 B=gbmod pB = g^b \mod p를 계산하여 서로에게 보냅니다.
- 공유 비밀번호 계산: 수잔은 s=Bamod ps = B^a \mod p를, 대릴은 s=Abmod ps = A^b \mod p를 계산하여 동일한 공유 비밀번호 ss를 얻습니다.
이렇게 하면 중간 공격자가 공유 비밀번호를 알아낼 수 없습니다.
타원 곡선 암호화(ECC)
타원 곡선 암호화(ECC)는 유한 필드에 대해 타원 곡선의 대수적 구조를 사용하여 보안 키를 생성하는 공개 키 암호화 시스템입니다. ECC는 더 작은 키 크기로 기존 공개 키 시스템과 유사한 보안을 제공합니다.
ECC의 장점
- 작은 키 크기: 예를 들어, 256비트 타원 곡선 키는 3,072비트 RSA 키와 비슷한 보안을 제공합니다.
- 효율성: 저장 및 전송에 필요한 데이터의 양이 줄어듭니다.
ECC의 사용
- ECDH: 디피-헬먼의 타원 곡선 변형.
- ECDSA: 디지털 서명 알고리즘의 타원 곡선 변형.
미국 NIST는 EC 암호화의 사용을 권장하고 있으며, NSA는 384비트 EC 키로 일급 비밀 데이터를 보호하는 것을 허용합니다. 그러나 양자 컴퓨팅 기술의 발전으로 인해 ECC는 잠재적으로 양자 컴퓨팅 공격에 취약할 수 있습니다.
RSA, DSA, DH 및 ECC는 각각의 장단점과 고유한 특성을 가진 비대칭 암호화 시스템입니다. 이들 시스템은 모두 비대칭 암호화의 중요한 역할을 하며, 현대의 다양한 보안 애플리케이션에서 사용됩니다. 다음 시간에는 공개 키 인프라(PKI) 시스템과 같은 구체적인 사용 사례에 대해 살펴보겠습니다.
해싱
해싱
해싱(Hashing)
해시 함수는 임의 데이터 입력을 고정된 크기의 출력으로 매핑하는 함수입니다. 이 출력값을 해시 또는 다이제스트라고 합니다. 해시 함수는 컴퓨터 과학 및 보안에서 다양한 용도로 사용되며, 그 특징과 용도에 따라 여러 종류가 있습니다.
해시 함수의 주요 특징
- 고정된 출력 크기: 해시 함수는 입력 데이터의 크기에 관계없이 항상 일정한 크기의 출력을 생성합니다. 예를 들어, MD5 해시 함수는 항상 128비트(16바이트)의 출력을 생성합니다.
- 결정적: 같은 입력 값은 항상 같은 해시 값을 반환합니다.
- 효율성: 해시 함수는 빠르고 효율적으로 계산되어야 합니다.
- 단방향: 해시 다이제스트에서 원본 입력을 복구하는 것은 불가능합니다.
- 민감성: 입력 값이 조금만 변경되어도 출력 값은 크게 변합니다. 이는 작은 변경 사항도 감지할 수 있게 합니다.
- 충돌 저항성: 서로 다른 입력이 동일한 출력을 생성하는 경우를 해시 충돌이라 하며, 좋은 해시 함수는 해시 충돌이 거의 발생하지 않도록 설계되어야 합니다.
해시 함수의 용도
- 데이터 무결성 확인: 파일이나 메시지가 전송 중에 변경되지 않았음을 확인할 수 있습니다.
- 디지털 서명: 해시 함수를 사용하여 데이터를 서명하고 검증할 수 있습니다.
- 비밀번호 저장: 비밀번호를 해시 값으로 저장하여 보안을 강화합니다.
- 데이터베이스 검색: 해시 테이블을 사용하여 데이터 검색 속도를 향상시킵니다.
암호화 해시 함수
암호화 해시 함수는 암호화 응용 프로그램에서 특별히 설계된 해시 함수입니다. 예를 들어, SHA-256, SHA-3, MD5 등이 있습니다. 이 함수들은 일반적으로 다음과 같은 추가 보안 속성을 가지고 있습니다:
- 충돌 저항성: 두 개의 다른 입력이 동일한 해시 값을 생성하지 않아야 합니다.
- 프리이미지 저항성: 주어진 해시 값에서 원래 입력 값을 찾는 것이 어려워야 합니다.
- 두 번째 프리이미지 저항성: 주어진 입력과 동일한 해시 값을 갖는 다른 입력을 찾는 것이 어려워야 합니다.
예시: MD5 해시 함수
MD5 해시 함수는 128비트 해시 값을 생성하는 암호화 해시 함수입니다. 다음은 MD5 해시 함수의 예시입니다.
// plaintext
입력: "Hello World"
출력: "b10a8db164e0754105b7a99be72e3fe5"
입력: "hello world"
출력: "5eb63bbbe01eeed093cb22bb8f5acdc3"
위의 예시에서 보듯이, 입력의 작은 변화(대문자 "H"와 소문자 "h")도 출력 해시 값을 크게 변경합니다.
해시 함수의 실제 사용 예
- 파일 무결성 검증: 다운로드한 파일이 손상되지 않았는지 확인할 수 있습니다. 파일의 해시 값을 미리 제공된 해시 값과 비교합니다.
- 디지털 서명 및 인증서: 전자 문서의 진위성과 무결성을 보장하기 위해 사용됩니다.
- 비밀번호 해싱: 비밀번호를 데이터베이스에 직접 저장하는 대신 해시 값을 저장하여 보안을 강화합니다.
다음은 실제로 MD5 해시 함수를 사용하는 Python 코드를 보여줍니다.
// python
import hashlib
# 문자열을 해시하는 함수
def hash_string(input_string):
return hashlib.md5(input_string.encode()).hexdigest()
# 예제
input1 = "Hello World"
input2 = "hello world"
hash1 = hash_string(input1)
hash2 = hash_string(input2)
print(f"Input: {input1} -> MD5 Hash: {hash1}")
print(f"Input: {input2} -> MD5 Hash: {hash2}")
이 코드를 실행하면 "Hello World"와 "hello world"의 MD5 해시 값이 서로 다른 것을 확인할 수 있습니다.
해싱은 보안뿐만 아니라 컴퓨팅 전반에 걸쳐 다양한 용도로 사용되는 중요한 기술입니다. 해시 함수의 강력한 속성 덕분에 데이터 무결성 확인, 디지털 서명, 비밀번호 저장 등의 중요한 역할을 수행할 수 있습니다.
해싱 알고리즘
해시 함수
해시 함수는 임의의 데이터 입력을 고정된 크기의 해시 값으로 매핑하는 함수입니다. 해시 함수는 암호학 및 컴퓨터 과학 전반에서 중요한 역할을 하며, 다양한 용도로 사용됩니다. 이 섹션에서는 가장 널리 사용되었던 두 가지 해시 함수, MD5와 SHA-1에 대해 알아보겠습니다.
MD5 (Message Digest Algorithm 5)
- 개요: MD5는 1990년대 초에 암호화 해시 함수로 설계되었으며, 1992년에 공개되었습니다.
- 작동 방식: MD5는 512비트 블록에서 작동하며, 128비트 해시 다이제스트를 생성합니다.
- 역사:
- 1996년에 디자인 결함이 발견되었으나, 그 당시에는 심각하게 여겨지지 않았습니다.
- 2004년에 해시 충돌에 취약하다는 것이 밝혀졌고, 2008년에는 이 결함을 악용해 가짜 SSL 인증서를 생성하는 사례가 발생했습니다.
- 2012년에는 플레임 멀웨어가 위조된 Microsoft 디지털 인증서를 사용하여 악성 코드를 퍼뜨렸습니다.
- 현재 상황: MD5는 더 이상 안전하지 않은 것으로 간주되며, 2010년부터 암호화 애플리케이션에서의 사용이 중단되었습니다.
SHA-1 (Secure Hash Algorithm 1)
- 개요: SHA-1은 1995년에 NSA에 의해 설계되고 공개된 해시 함수입니다.
- 작동 방식: SHA-1은 512비트 블록에서 작동하며, 160비트 해시 다이제스트를 생성합니다.
- 역사:
- SHA-1은 TLS/SSL, PGP, SSH, IPsec 등의 프로토콜에서 널리 사용되었습니다.
- Git 같은 버전 제어 시스템에서도 데이터 무결성을 위해 사용되었습니다.
- 2010년에 NIST는 SHA-1의 사용을 중단하고 SHA-2로 전환할 것을 권장했습니다.
- 2017년에는 주요 브라우저 공급업체들이 SHA-1을 사용하는 SSL 인증서에 대한 지원을 중단했습니다.
- 공격 및 취약점:
- 2000년대부터 수많은 이론적 공격이 발표되었으며, 일부 부분 충돌이 입증되었습니다.
- 2015년에는 전체 충돌에 가까운 공격이 가능해졌고, 클라우드 컴퓨팅 자원을 사용한 공격 방법이 실현되었습니다.
- 2017년 초에는 동일한 SHA-1 해시를 생성하는 두 개의 고유한 PDF 파일을 만들어내는 첫 번째 전체 충돌이 공개되었습니다.
- 현재 상황: SHA-1은 안전하지 않은 것으로 간주되며, SHA-2나 SHA-3로의 전환이 권장됩니다.
MIC와 MAC
- MIC (Message Integrity Check):
- MIC는 본질적으로 메시지의 해시 다이제스트입니다.
- 메시지의 체크섬과 유사하며, 데이터 전송 중에 발생할 수 있는 오류를 검출하는 데 사용됩니다.
- MIC는 비밀 키를 사용하지 않기 때문에, 조작이나 악의적인 행위로부터 보호하지 않습니다.
- MAC (Message Authentication Code):
- MAC는 비밀 키를 사용하여 메시지의 무결성과 인증을 확인하는 코드입니다.
- MIC와 달리, MAC는 공격자가 메시지를 변경하고 인증 코드를 다시 계산하는 것을 방지합니다.
MD5와 SHA-1은 과거에 널리 사용되었으나, 이제는 보안 취약점으로 인해 더 이상 안전하지 않은 것으로 간주됩니다. 현대의 애플리케이션에서는 SHA-2나 SHA-3와 같은 더 안전한 해시 함수를 사용하는 것이 권장됩니다. MIC와 MAC는 메시지의 무결성과 인증을 보장하기 위해 사용되며, 각각의 용도에 맞게 적절히 활용되어야 합니다.
해싱 알고리즘(계속)
해시 공격과 방어 방법
암호화 해시 함수는 보안에 필수적인 요소로, 다양한 공격에 대해 대비책을 마련하는 것이 중요합니다. 해시 공격에는 주로 무차별 대입 공격과 레인보우 테이블 공격이 있습니다. 이러한 공격으로부터 시스템을 보호하는 방법도 함께 알아보겠습니다.
무차별 대입 공격 (Brute-Force Attack)
무차별 대입 공격은 가능한 모든 조합을 시도하여 해시 값을 맞추려는 공격입니다. 이는 매우 계산 집약적이지만, 이론적으로 충분한 시간과 리소스가 있다면 모든 해시 값을 맞출 수 있습니다.
방어 방법:
- 복잡한 비밀번호 사용: 비밀번호가 복잡할수록 가능한 조합의 수가 많아져 공격이 어려워집니다.
- 해시 함수 반복 사용: 해시 함수를 여러 번 반복 실행하면, 각 비밀번호를 추측하는 데 필요한 시간이 늘어납니다. 이는 공격자가 단일 비밀번호를 추측하는 데 소요되는 시간을 늘려줍니다.
- 강력한 해시 함수 사용: SHA-3와 같은 최신 해시 함수는 더 높은 보안 수준을 제공합니다.
레인보우 테이블 공격
레인보우 테이블 공격은 미리 계산된 해시 값과 비밀번호 조합 테이블을 사용하여 해시를 역추적하는 방법입니다. 이는 무차별 대입 공격보다 빠르게 해시 값을 맞출 수 있습니다.
방어 방법:
- 솔트 사용: 솔트는 무작위 데이터 조각으로, 비밀번호에 추가하여 해시를 생성합니다. 솔트를 사용하면 동일한 비밀번호라도 다른 해시 값을 생성하므로, 레인보우 테이블 공격을 무력화할 수 있습니다.
솔트 예시:
// python
import hashlib
import os
password = "my_secure_password"
salt = os.urandom(16) # 16바이트 길이의 무작위 솔트 생성
salted_password = salt + password.encode()
hash = hashlib.sha256(salted_password).hexdigest()
위 예시에서는 16바이트의 무작위 솔트를 생성하고, 비밀번호와 결합하여 SHA-256 해시를 생성합니다.
- 긴 솔트 사용: 솔트의 길이가 길수록 레인보우 테이블을 미리 계산하는 데 필요한 시간과 저장 공간이 증가합니다. 예를 들어, 128비트 솔트는 2^128 개의 가능한 조합을 제공합니다.
- 각각의 비밀번호마다 고유한 솔트 사용: 동일한 비밀번호라도 각 사용자의 솔트가 다르기 때문에 동일한 해시 값을 생성할 수 없습니다.
해싱 함수의 사용 예시
비밀번호 인증
비밀번호를 일반 텍스트로 저장하는 것은 매우 위험합니다. 대신 비밀번호를 해시로 저장하여 보안성을 높일 수 있습니다.
비밀번호 해시 저장 예시:
// python
import hashlib
import os
def hash_password(password):
salt = os.urandom(16) # 16바이트 길이의 무작위 솔트 생성
hash = hashlib.pbkdf2_hmac('sha256', password.encode(), salt, 100000)
return salt + hash
def verify_password(stored_password, provided_password):
salt = stored_password[:16]
stored_hash = stored_password[16:]
provided_hash = hashlib.pbkdf2_hmac('sha256', provided_password.encode(), salt, 100000)
return stored_hash == provided_hash
- hash_password: 비밀번호를 해시하고 솔트와 결합하여 저장합니다.
- verify_password: 저장된 해시와 제공된 비밀번호를 검증합니다.
해시 공격을 방어하는 최선의 방법은 복잡한 비밀번호 사용, 해시 함수의 반복 사용, 그리고 무작위 솔트의 사용입니다. 이를 통해 무차별 대입 공격과 레인보우 테이블 공격에 대한 방어력을 크게 향상시킬 수 있습니다. 해시 함수는 인증 시스템에서 중요한 역할을 하며, 적절한 보호 방법을 적용하는 것이 필수적입니다.
암호화 애플리케이션
공개 키 인프라
공개 키 인프라 (PKI)에 대한 이해
**공개 키 인프라(PKI)**는 디지털 인증서의 생성, 저장, 배포를 관리하는 시스템으로, 오늘날 인터넷에서 통신 보안의 핵심입니다. PKI는 암호화와 디지털 서명을 통해 데이터를 안전하게 전송하고 발신자의 신원을 확인하는 역할을 합니다.
1. 디지털 인증서
디지털 인증서는 특정 엔티티가 특정 공개 키를 소유하고 있음을 증명하는 파일입니다. 인증서에는 다음과 같은 정보가 포함됩니다:
- 공개 키와 소유자 정보: 인증서 주체에 관한 정보.
- 발급자 정보: 인증서를 발급한 인증 기관(CA) 정보.
- 디지털 서명: 이 정보를 확인한 제3자(CA)의 서명.
2. 인증 기관(CA)와 등록 기관(RA)
- CA: 디지털 인증서를 발급하고 관리하는 엔티티. CA는 인증서의 유효성을 보증하는 역할을 합니다.
- RA: 인증서를 발급받고자 하는 엔티티의 신원을 확인하는 역할을 하며, 일반적으로 CA와 동일한 조직에서 처리됩니다.
3. 인증서의 유형
- SSL/TLS 서버 인증서: 웹 서버가 SSL/TLS 연결을 통해 클라이언트에 제공하는 인증서. 웹브라우저는 이 인증서를 통해 서버의 신원을 확인합니다.
- SSL/TLS 클라이언트 인증서: 클라이언트가 서버에 제공하는 인증서로, 클라이언트의 신원을 확인하는 데 사용됩니다.
- 코드 서명 인증서: 소프트웨어에 디지털 서명을 하여 소프트웨어의 출처와 무결성을 보장합니다.
4. 신뢰 체계
PKI는 신뢰 체계를 기반으로 합니다. 신뢰 체계는 루트 인증 기관(Root CA)에서 시작됩니다.
- 루트 CA: 자체 서명된 인증서를 가진 가장 상위의 CA로, 신뢰의 시작점입니다.
- 중간 CA: 루트 CA가 서명한 인증서를 가진 CA로, 다른 인증서에 서명할 수 있습니다. 중간 CA를 통해 신뢰 체인이 형성됩니다.
- 엔드 엔티티 인증서: 최종 사용자나 서버에 발급되는 인증서로, 더 이상의 서명이 불필요한 인증서입니다.
5. X.509 인증서
X.509는 디지털 인증서의 형식을 정의하는 표준입니다. 주요 필드는 다음과 같습니다:
- 버전: X.509 표준의 버전.
- 일련번호: 인증서의 고유 식별자.
- 서명 알고리즘: 사용된 해시 알고리즘과 서명 알고리즘.
- 발급자 이름: 인증서를 발급한 기관의 정보.
- 유효 기간: 인증서의 유효 시작과 종료 날짜.
- 주체 정보: 인증서가 발급된 엔티티의 정보.
- 주체 공개 키 정보: 공개 키와 사용된 알고리즘.
- 서명 값: 인증서 서명 데이터.
6. 신뢰의 웹
신뢰의 웹은 중앙 집중식 CA 대신, 개인 간의 신뢰 관계를 기반으로 한 모델입니다.
- 개인 간 서명: 개인이 서로의 공개 키에 서명하여 신뢰를 형성합니다.
- 키 서명 파티: 여러 개인이 모여 서로의 신원을 확인하고 키에 서명하는 행사. 이를 통해 신뢰의 웹을 구축합니다.
PKI의 주요 요소
1. 인증서 발급 과정
- 사용자는 RA를 통해 신원을 확인하고 인증서 발급을 요청합니다.
- CA는 요청을 검토하고 인증서를 생성한 후, 자신의 비공개 키로 서명합니다.
- 생성된 인증서는 사용자에게 전달되며, 공개적으로 사용될 수 있습니다.
2. 인증서 사용
- 클라이언트는 서버에 연결할 때 서버의 인증서를 요청합니다.
- 서버는 자신의 인증서를 클라이언트에 전달합니다.
- 클라이언트는 인증서의 서명을 검증하고, 인증서가 신뢰할 수 있는 CA에 의해 서명되었는지 확인합니다.
- 검증이 완료되면, 클라이언트와 서버는 안전한 통신을 시작합니다.
PKI는 안전한 통신을 위한 중요한 기반 구조로, 디지털 인증서를 통해 공개 키의 소유자를 인증하고 신뢰 관계를 형성합니다. 루트 CA에서 시작되는 신뢰 체계와 다양한 인증서 유형은 인터넷 상의 다양한 보안 요구를 충족시키며, 신뢰의 웹과 같은 대안적 모델도 존재합니다. PKI의 구성 요소와 작동 방식을 이해하는 것은 보안 환경에서 중요한 역할을 합니다.
암호화의 실제 동작
암호화 개념의 실제 적용 사례
HTTPS: HTTP의 보안 버전
**HTTPS(Hypertext Transfer Protocol Secure)**는 HTTP를 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 통해 암호화한 것입니다. HTTPS는 웹 트래픽을 보호하며, SSL 3.0이 지원 중단된 후, 현재 TLS 1.2와 TLS 1.3이 사용되고 있습니다.
TLS의 주요 기능:
- 암호화: 전송 중 데이터의 기밀성을 보호합니다.
- 인증: 주로 서버를 인증하여 클라이언트가 신뢰할 수 있는지 확인합니다.
- 무결성: 데이터가 전송 중에 변경되지 않도록 합니다.
TLS 핸드셰이크 과정
TLS 핸드셰이크는 클라이언트와 서버 간에 보안 통신을 설정하기 위한 초기 단계입니다.
- ClientHello: 클라이언트는 지원하는 TLS 버전, 암호화 스위트 목록을 서버에 전송합니다.
- ServerHello: 서버는 클라이언트의 정보를 기반으로 TLS 버전과 암호화 스위트를 선택하고, 자신의 디지털 인증서를 클라이언트에 전송합니다.
- 인증서 검증: 클라이언트는 서버의 인증서를 검증하여 신뢰할 수 있는 CA가 서명했는지 확인합니다.
- ClientKeyExchange: 클라이언트는 세션 키 생성을 위한 정보를 서버에 전송합니다.
- ChangeCipherSpec: 클라이언트와 서버는 보안 통신으로 전환합니다.
- Finished 메시지 교환: 양쪽에서 암호화된 Finished 메시지를 교환하여 핸드셰이크 완료를 확인합니다.
Forward Secrecy
Forward Secrecy(전방향 보안)는 세션 키가 손상된 경우에도 과거 통신 내용이 보호되도록 하는 암호화 시스템의 속성입니다. 이는 각 통신 세션마다 고유한 키를 사용하여 이루어집니다.
SSH: 보안된 원격 로그인
**SSH(Secure Shell)**는 암호화된 네트워크를 통해 원격 시스템에 안전하게 접속할 수 있게 해주는 프로토콜입니다.
SSH는 다음과 같은 기능을 제공합니다:
- 암호화된 원격 로그인: 명령줄 기반 시스템에 안전하게 접근합니다.
- 보안된 터널링: 다른 네트워크 서비스의 트래픽을 안전하게 전송할 수 있습니다.
- 공개 키 인증: 클라이언트와 서버 간의 상호 인증을 제공합니다.
PGP: 개인 데이터의 보호
**PGP(Pretty Good Privacy)**는 이메일 암호화와 데이터 인증을 위한 암호화 프로그램입니다. 필 짐머만이 1991년에 개발한 이 프로그램은 비대칭 암호화를 사용하여 데이터를 보호합니다.
PGP의 주요 기능:
- 이메일 암호화: 이메일 내용을 암호화하여 기밀성을 보장합니다.
- 파일 및 디스크 암호화: 임의의 파일이나 전체 디스크를 암호화하여 데이터를 보호합니다.
- 데이터 무결성 및 인증: 디지털 서명을 통해 데이터의 무결성과 출처를 검증합니다.
PGP는 원래 RSA 알고리즘을 사용했으나, 라이선스 문제를 피하기 위해 현재는 DSA를 사용하고 있습니다.
이 섹션에서는 HTTPS, TLS, SSH, PGP와 같은 암호화 기술이 어떻게 적용되어 우리의 통신을 보호하는지 살펴보았습니다. 이러한 기술들은 모두 다양한 방식으로 암호화를 적용하여 데이터의 기밀성, 무결성, 인증을 보장합니다. 이를 통해 우리는 인터넷과 네트워크를 통해 안전하게 통신할 수 있습니다.
네트워크 트래픽 보호
네트워크 트래픽 보안
암호화는 개인정보보호와 데이터 무결성을 보장하는 데 필수적입니다. 이제 애플리케이션에서 암호화를 사용하지 않는 경우 어떻게 내부 리소스를 보호할 수 있는지와 VPN(가상 사설망) 솔루션에 대해 알아보겠습니다.
VPN: 가상 사설망
VPN은 인터넷과 같은 공개 네트워크를 통해 데이터를 안전하게 전달하는 메커니즘입니다. 이를 통해 원격 시스템의 네트워크 트래픽이 암호화된 터널을 통해 전송되며, 내부 비공개 네트워크에 안전하게 연결됩니다. VPN은 두 네트워크 게이트웨이를 연결하는 지점 간 연결일 수도 있습니다.
주요 VPN 프로토콜:
- IPsec (인터넷 프로토콜 보안):
- 설명: IPsec은 IP 패킷을 암호화하고 캡슐화하여 전달합니다.
- 작동 모드:
- 전송 모드: IP 패킷의 페이로드만 암호화하여 IP 헤더를 유지합니다.
- 터널 모드: 전체 IP 패킷(헤더와 페이로드)을 암호화하고 새 IP 패킷 내에 캡슐화합니다.
- 활용: IPsec은 IPv6와 함께 사용될 수 있으며, 높은 보안 수준을 제공하여 기업 네트워크에서 자주 사용됩니다.
- L2TP (계층 2 터널링 프로토콜):
- 설명: L2TP는 자체적으로 암호화를 제공하지 않으므로, 일반적으로 IPsec과 함께 사용됩니다.
- L2TP/IPsec:
- 설정 과정: 먼저 IPsec 보안 연결을 설정한 후 L2TP 터널을 설정합니다.
- 보안: IPsec이 데이터의 기밀성, 무결성 및 인증을 제공하며, L2TP는 네트워크 간의 패킷 전달을 처리합니다.
- SSL/TLS:
- 설명: SSL/TLS는 개별 세션이나 연결을 보호하기 위해 사용됩니다.
- 예시: OpenVPN은 SSL/TLS를 사용하여 데이터의 키 교환과 암호화를 처리합니다.
- 지원: OpenSSL 라이브러리를 사용하여 다양한 암호화 방법을 지원하며, 인증서 기반 인증, 사전 공유 비밀번호, 사용자 이름/비밀번호 인증을 지원합니다.
OpenVPN
OpenVPN은 SSL/TLS를 기반으로 하여 보안 통신을 제공하는 VPN 솔루션입니다. 주로 포트 1194에서 TCP 또는 UDP를 통해 작동하며, 계층 3 IP 터널과 계층 2 이더넷 탭을 지원합니다.
OpenVPN의 주요 기능:
- 암호화: OpenSSL 라이브러리를 통해 최대 256비트 암호화를 지원합니다.
- 인증: 인증서 기반 인증이 가장 안전하며, 사용자 이름/비밀번호 인증을 추가하여 보안 계층을 강화할 수 있습니다.
- 유연성: 서버에서 클라이언트로 네트워크 구성 옵션을 푸시할 수 있으며, 다양한 트래픽을 처리할 수 있습니다.
VPN은 민감한 데이터를 안전하게 전송하고 내부 네트워크 리소스에 원격으로 안전하게 접근할 수 있도록 하는 중요한 기술입니다. IPsec, L2TP/IPsec, SSL/TLS와 같은 다양한 프로토콜과 접근 방식이 있으며, 각각의 장단점과 활용 사례가 다릅니다. OpenVPN은 SSL/TLS를 활용하여 높은 보안성을 제공하는 유연한 VPN 솔루션입니다.
암호화 하드웨어
신뢰 플랫폼 모듈 (TPM)
TPM(Trusted Platform Module)은 컴퓨터 하드웨어에 통합된 전용 암호화 프로세서로, 여러 보안 기능을 제공합니다. TPM의 주요 기능 및 응용 사례를 살펴보겠습니다.
주요 기능
- 안전한 키 생성:
- TPM은 안전한 키 생성을 제공하여 하드웨어 기반의 암호화 키를 생성하고 관리합니다.
- 난수 생성:
- TPM은 암호화 키 및 기타 보안 요구 사항에 사용되는 진정한 난수를 생성합니다.
- 원격 증명:
- TPM은 시스템의 소프트웨어 및 하드웨어 구성을 인증하여 무결성을 검증할 수 있습니다. 원격 증명을 통해 시스템이 신뢰할 수 있는 상태인지 확인할 수 있습니다.
- 데이터 바인딩 및 봉인:
- TPM을 사용하여 데이터 암호화에 필요한 키를 생성하고, 이 키를 TPM에 바인딩합니다. 바인딩된 데이터는 해당 TPM이 있는 시스템에서만 해독할 수 있습니다.
- 데이터 봉인은 TPM이 특정 상태에 있을 때만 데이터를 해독할 수 있도록 합니다.
구현 방식
- 개별 칩:
- 가장 안전한 방식으로, 물리적 조작 방지 기능을 포함하여 칩 자체를 보호합니다.
- 통합 칩:
- TPM 기능을 다른 하드웨어 칩에 통합하여 제공됩니다.
- 펌웨어/소프트웨어:
- 소프트웨어 또는 펌웨어 형태로 구현되며, 보안 수준은 하드웨어 방식보다 낮을 수 있습니다.
- 가상화:
- 하이퍼바이저를 통해 가상화된 형태로 제공될 수 있습니다.
보안 요소와 신뢰할 수 있는 실행 환경 (TEE)
- 보안 요소 (SE):
- 모바일 기기에 통합된 조작 방지 칩으로, 암호화 키의 안전한 저장을 제공하며, 애플리케이션을 위한 안전한 환경을 제공합니다.
- 신뢰할 수 있는 실행 환경 (TEE):
- 메인 OS와 함께 실행되는 격리된 실행 환경으로, 애플리케이션과 보안 프로세스를 격리하여 보호합니다.
TPM의 비판 및 물리적 공격
- 비판:
- TPM은 제조업체가 비밀 키에 접근할 수 있다는 점에서 비판받기도 합니다. 제조업체가 키를 저장하여 악용할 가능성이 있기 때문입니다.
- 물리적 공격:
- 보안 연구원들이 전자 현미경과 마이크론 정밀 장비를 사용하여 TPM의 물리적 조작을 시도한 사례가 있습니다. 이는 시간이 많이 걸리고 고도의 기술이 필요하지만, TPM의 물리적 조작 방지 기능에도 불구하고 공격이 가능함을 입증했습니다.
전체 디스크 암호화 (FDE)
- 개념:
- FDE는 시스템의 전체 드라이브를 암호화하여 데이터 도난 및 조작으로부터 보호합니다.
- 구성:
- 암호화된 데이터를 저장하는 파티션과 부팅 파티션으로 구성됩니다. 부팅 시 암호를 입력하여 디스크 잠금을 해제하고 부팅 프로세스를 계속합니다.
- 옵션:
- 상용 제품: PGP, Microsoft BitLocker, Apple FileVault 2
- 오픈소스 소프트웨어: Linux의 dm-crypt
무작위의 중요성
- 난수:
- 암호화에서 진정한 무작위가 매우 중요합니다. 의사 난수는 공격자가 패턴을 발견할 수 있는 가능성이 있습니다.
- 엔트로피 풀:
- 운영체제는 난수 생성기를 시드하는 데 도움이 되는 엔트로피 풀을 유지 관리합니다.
- 전용 난수 생성기:
- 보안 어플라이언스나 서버에 통합되어 진정한 난수를 생성합니다.