19. 시스템지식-디지털인증서

암호화 관련 개념


일반 텍스트: 보낸 사람, 받는 사람 및 메시지에 액세스하는 모든 사람이 이해할 수 있는 메시지입니다.
암호문: 일반 텍스트 메시지를 특정 방식으로 인코딩한 후 암호문 메시지를 얻습니다.
암호화: 일반 텍스트 메시지를 암호 텍스트 메시지로 변환합니다.
복호화: 암호문 메시지를 일반 텍스트 메시지로 변환합니다.
알고리즘: 입력 텍스트를 가져와서 출력 텍스트를 생성합니다.
암호화 알고리즘: 보낸 사람이 암호화하는 데 사용하는 알고리즘입니다.
복호화 알고리즘: 수신자가 복호화하는 데 사용하는 알고리즘입니다. 키(Key): 송신자와 수신자만이 가지고 있는
메시지 대칭 키 암호화(Symmetric Key Cryptography): 암호화와 복호화에 동일한 키가 사용됩니다. 비대칭 키 암호화: 암호화와 복호화는 공개 키와 개인 키로 구분된 서로 다른 키를 사용합니다.

비대칭 키 암호화: 암호화 및 복호화는 공개 키와 개인 키 대칭

암호화 알고리즘 으로 구분된 서로 다른 키를 사용합니다.


• 대칭형 암호화 알고리즘에서는 암호화에 사용되는 키와 복호화에 사용되는 키가 동일하며, 암호화와 복호화에 동일한 키가 사용됩니다.
• 두 통신 당사자는 동일한 키를 사용하여 세션 콘텐츠를 암호화하고 해독합니다. 즉, 암호화할 콘텐츠는 동일한 키를 사용하여
두 번 대칭 암호화한 후 원본과 동일한 결과를 갖게 됩니다.
• 예: XOR 속성: (A ⊕ B) ⊕ B = AA
에 따라 다음과 같은 암호화 방법이 얻어집니다. 여기서 C는 암호문, P는 평문, K는 양 당사자가 합의한 상수이며 해당 C = P ⊕ KK P = C ⊕ KK 이는 XOR 연산이 대칭 암호화 및 복호화 알고리즘이고 K가 키인 간단한 대칭 키 알고리즘 프로세스입니다.





비대칭 암호화 알고리즘


• 비대칭 암복호화 알고리즘의 키는 쌍으로 나타나며, 공개키로 암호화된 암호문은 해당 개인키로만 복호화가 가능하고, 개인키로 서명된 암호문은
해당 공개키로 검증할 수 있다. 원칙적으로 개인 키는 네트워크를 통해 전송될 수 없습니다.
• 두 당사자가 통신할 때 먼저 키 쌍에 포함된 공개 키를 상대방에게 전달해야 합니다. 이 키는 보안되지 않은 채널에서 전송될 수 있으며 데이터를 전송할 때 먼저 자신의 키를
사용하여 상대방은 전송한 키로만 해독할 수 있습니다.
• 예:
C는 암호문, P는 일반 텍스트, x는 공개 키, y는 개인 키를 나타내고
xy= 1이라고 가정하면 더 낮은 암호화 및 복호화 방법이 있습니다.

 


암호화폐 미니 게임 - 1라운드


"Xiao Ke" -> "Xiao Fu": 안녕하세요
"Xiao Fu" -> "Xia Ke": 안녕하세요 저는 Xiao Fu입니다.
메시지는 인터넷을 통해 전송되기 때문에 누군가가 "Xiao Fu"인 것처럼 가장할 수 있습니다. 메시지 보내기 샤오케에게. 따라서 다음과 같은 상황이 발생합니다:
"Xiaoke" -> "Hacker": 안녕하세요 // 해커는 "Xiaoke"와 "Xiaofu" 메시지 사이의 라우터에서 "Xiaoke"가 Xiaofu로 보낸 메시지를 가로채서
" Xiaofu"
"Hacker" -> "Xiaoke": 안녕하세요, 저는 Xiaofu
"Xiaoke"입니다. 메시지를 받은 후 메시지가 "Xiaofu"에서 보낸 것인지 확신할 수 없었습니다. 일부 "해커"는 "작은" 척할 수도 있습니다. 서버"를 선택하고 이 메시지를 보내세요
.
그렇다면 정보가 "Xiaofu"에서 전송되었는지 확인하는 방법은 무엇입니까? 

암호화폐 미니 게임 - 2라운드

"Xiao Ke" -> "Xiao Fu": 안녕하세요
"Xiao Fu" -> "Xiao Ke": 안녕하세요, 저는 Xiao Fu입니다
"Xiao Ke" -> "Xiao Fu": 당신이 Xiao Fu임을 증명해 주세요
" " Xiaofu"->"Xiaoke": 안녕하세요, 저는 Xiaofu입니다 {안녕하세요, 저는 Xiaofu입니다}[개인 키|RSA]
//{안녕하세요, 저는 Xiaofu입니다}[개인 키|RSA]는 "안녕하세요, 저는 Xiaofu입니다"를 암호화한 결과를 의미합니다. am Xiaofu"를 개인 키로 사용합니다.
'샤오커'에게 자신이 '샤오푸'임을 증명하기 위해 '샤오푸'는 자신의 개인키로 문자열을 암호화한 뒤, 평문+암호화된 암호문을
'샤오커'에게 보낸다.
메시지를 받은 후 "Xiao Ke"는 자신이 보유한 공개 키를 사용하여 {안녕하세요, 저는 Xiaofu입니다}[개인 키|RSA] 콘텐츠를 공개 키로 복호화한 다음, 복호화된 콘텐츠를 "안녕하세요, 저는
Xiaofu입니다"와 결합합니다. " 비교.
'샤오푸'가 개인키로 암호화한 내용은 공개키로만 복호화할 수 있고, 개인키는 '샤오푸'만이 갖고 있기 때문에 복호화된 내용이
일치할 수 해당 정보를 반드시 전송해야 한다는 뜻이다. "샤오푸"에서.

암호화폐 미니 게임 - 3라운드

"Xiao Ke" -> "Xiao Fu": 안녕하세요
"Xiao Fu" -> "Xiao Ke": 안녕하세요, 저는 Xiao Fu입니다
"Xiao Ke" -> "Xiao Fu": 당신이 Xiao Fu임을 증명해 주세요
" " Xiaoke"->"Xiaoke": 안녕하세요, 저는 Xiaofu입니다 {안녕하세요, 저는 Xiaofu입니다}[개인 키|RSA]
"Xiaoke"->"Xiaoke": {내 계좌 번호는 aaa입니다. 비밀번호는 123입니다. 잔액 정보} [공개 키|RSA]
"Xiaofu" -> "Xiaoke": {귀하의 잔액은 100위안입니다.}[개인 키|RSA]
위 사항에 주의하십시오. {귀하의 잔액은 100위안입니다}[개인 키|RSA ], '소형서버'에서 개인키로 암호화한 내용입니다.
앞서 말했듯이 공개 키는 공개되므로 누구나 공개 키를 알 수 있습니다. 따라서 "Xiao Ke" 외에도 다른 사람도 공개 키를 사용하여
{잔고가 100위안입니다}[개인 키|RSA]를 해독할 수 있습니다. 따라서 이 정보는 기밀로 유지될 수 없으며
실제 응용 프로그램 프로세스에서는 일반적으로 대칭 암호화를 도입하여 이 문제를 해결합니다. 다음 데모를 참조하십시오.

암호화폐 미니게임 라운드 4

"Xiao Ke" -> "Xiao Fu": 안녕하세요
"Xiao Fu" -> "Xiao Ke": 안녕하세요, 저는 Xiao Fu입니다
"Xiao Ke" -> "Xiao Fu": 당신이 Xiao Fu임을 증명해 주세요
" " Xiaofu"->"Xiaofu": 안녕하세요, 저는 Xiaofu입니다 {안녕하세요, 저는 Xiaofu입니다}[개인 키|RSA]
"Xiaoke"->"Xiaofu": {다음 통신 프로세스는 대칭 암호화를 사용합니다. 대칭 암호화는 다음과 같습니다. 알고리즘 및 키} [공개 키 | RSA] //
빨간색 부분은 대칭암호 알고리즘 및 키의 구체적인 내용으로, 고객이 고객센터로 전송하는 내용입니다.
"Xiaofu"->"Xiaoke": {네, 받았습니다! }[Key|대칭 암호화 알고리즘]
"Xiaoke"->"Xiaofu": {내 계좌 번호는 aaa, 비밀번호는 123, 잔액 정보를 보내주세요.}[Key|대칭 암호화 알고리즘 ]
"Xiaofu" -> "Xiaoke": {잔액은 100위안} [키 | 대칭 암호화 알고리즘]
"Xiaofu"가 "Xiaofu"의 신원을 확인한 후 "Xiaoke"가 직접 하나를 선택합니다. 대칭 암호화 알고리즘과 키는
공개 키로 암호화되어 "작은 서버".
대칭암호 알고리즘과 키는 공개키로 암호화되므로 암호화된 내용을 '해커'가 가로채더라도 개인키가 없기 때문에 '해커'는 대칭암호 알고리즘의 내용을 알
수 없다. 대칭암호 알고리즘과 키는 서버만이 알 수 있음이 보장됩니다. "Xiaofu"와 "Xiaoke"는
대칭 암호화 알고리즘과 키를 사용하여 통신 내용을 암호화할 수 있습니다.

암호화 게임 - 레거시 문제

"Xiaofu"는 공개 키를 외부 세계에 공개하고 싶어하는데, "Xiaofu"는 어떻게 공개 키를 "Xiaogu"에게 보냅니까? 우리는 다음 두 가지 방법을 생각할 수 있습니다:
a) 공개 키를 인터넷 어딘가의 다운로드 주소에 두고 이를 "Xiao Ke"에게 미리 제공하여 다운로드하도록 하는 것,
b) 그가 "Xiao Ke"와 통신을 시작할 때마다, "Xiao Ke" "공개 키를 "Xiaoke"로 보냅니다
. 그러나 두 방법 모두 특정 문제가 있습니다.
a) 방법의 경우 "Xiaoke"는 다운로드 주소가 "Xiaoke"에 의해 게시되었는지 여부를 확인할 수 없습니다. 또한 모든 "Xiaoke" 모든 고객이 통신하기 전에 공개 키를 다운로드하는
것도 비현실적입니다 .
b) 방법에도 문제가 있는데, 누구나 스스로 공개키와 개인키 쌍을 생성할 수 있고, 자신의 공개키를 "작은 손님"에게 보내어 "작은 서버"인 척 할 수 있기 때문입니다
.

인증서 개념

• 전자인증서('디지털인증서' 또는 '공개키인증서')란 인터넷 통신에서 통신 당사자의 신원정보를 표시하는 디지털 인증서를 말하며, 온라인상에서 상대방의 신원을 식별하는 데 사용된다. 그것은 본질적으로 어떤 것이 실제로 이러저러하다는 것을 증명하는 기능을 가진 전자 문서입니다.
• CA(인증 기관)는 "인증 기관"이라고도 합니다. 디지털 인증서 발급 및 관리를 담당하는 권위 있는 조직입니다. 일반적으로 CA는 모든 업계와 일반 대중의 신뢰와 인정을 받아야 하므로 충분히 권위가 있어야 합니다.

인증서 분류

보유자별 분류:
• 개인 인증서: CA 센터가 개인에게 발급하는 인증서로서 개인의 신원만을 나타내는 인증서로, 인증서에는 개인정보와 개인 공개키가 포함되어 있습니다.
• 조직 인증서: CA 센터가 해당 조직에 발급하는 인증서는 해당 조직의 신원을 나타내며 해당 조직의 정보와 해당 단위의 공개키를 포함한다.
• 시스템 인증서: CA 센터가 응용 시스템이나 장치에 발급한 인증서로, 시스템의 신원을 나타내며 시스템 정보와 시스템의 공개 키를 포함합니다.
인증서 용도별 분류:
• 서명 인증서: 서명 인증서는 서명 및 서명 확인에만 사용할 수 있으며 키 보안을 위해 일반적으로 키 쌍을 생성하여 소형 클라이언트에 저장합니다.
• 암호화 인증서: 암호화 인증서는 암호화에만 사용할 수 있으며, CA에서 키 쌍을 생성하여 보호 알고리즘 및 프로토콜을 통해 사용자에게 전송되고, 동시에 CA 센터에서도
키 쌍을 저장합니다. 관리와 회복을 위해

인증서 형식

인증서는 PEM 및 DER 인코딩 형식으로 제공됩니다. PEM은 Base64 인코딩 문자를 사용하여 저장되고 DER 형식은 바이너리로 저장됩니다.
인증서에는 비대칭 암호화 알고리즘에 사용되는 공개 키와 개인 키에 해당하는 공개 키와 개인 키가 포함되어 있습니다. 일반적으로 .crt 접미사는 공개 키를 식별하는 데 사용되며 .key 접미사는 개인 키를 식별하는 데 사용됩니다.
일반적으로 접미사 .pfx(Microsoft에서 사용) 또는 .p12를 사용하여 공개 키와 개인 키를 함께 저장하는 방법도 있습니다.

인증서 내용

공개 키 내용을 저장하는 것 외에도 인증서 공개 키에는 일반적으로 발급자,
사용자, 유효 기간, 서명 및 기타 정보도 포함됩니다.
인증서의 개인 키에는 공개 및 개인 키 정보와 모든 RSA 알고리즘 매개변수가 포함되어 있습니다.

인증서 신뢰 체인


CA(Certificate Authority): 디지털 인증서 인증 센터의 약어
루트 CA: 신뢰 체인의 최상위에 있으며 해당 인증서 공개 키는
기본적으로 다양한 운영 체제로 가져옵니다. 시스템 및 브라우저의 중간 CA
: 중간 신뢰 체인, 루트 CA 또는 기타 중간 CA 발급된 인증서는
계속해서 하위 인증서를 발급할 수도 있음
개인: 신뢰 체인 끝에서 중간 CA 또는 루트 CA에서 발급한 인증서 

인증서 간의 신뢰 관계는 중첩될 수 있습니다.
예를 들어, C는 A1을 신뢰하고, A1은 A2를 신뢰하고, A2는
A3을 신뢰합니다. 이를 인증서의 신뢰 체인이라고 합니다.
체인의 첫 번째 인증서를 신뢰하는 한
이후의 모든 인증서도 신뢰할 수 있습니다.

 

인증서 해지 목록

인증서 보유자가 실수로 인증서의 개인 키를 유출한 경우, 다른 사람이 그의 신원을 가장할 수 있습니다.
이러한 일이 발생하는 것을 방지하기 위해 각 주요 CA는 만료되지 않았지만 더 이상 사용할 수 없는 인증서를 표시하는 CRL 목록을 유지 관리합니다. 

인증서 작동 방식 

"Xiao Ke"에게 공개 키를 보내는 과정에서 "Xiao Fu"는 공개 키와
Xiao Fu의 개인 정보를 사용하여 해시 알고리즘을 통해 메시지 다이제스트를 생성합니다
. Fu"는 또한 CA를 사용하여 개인
키를 제공하고 메시지 다이제스트를 암호화하여 디지털 서명을 형성하며, 마지막으로 해시 알고리즘이 디지털 서명과 병합되어 디지털 인증서를 형성하기
전의 원본 정보를 제공합니다 .

"Xiao Ke"가 디지털 인증서를 받으면 CA에서 제공한 공개 키를 사용하여 디지털 인증서의 디지털 서명을 해독하고 메시지 다이제스트를 얻은 다음 "Xiao Fu" 공개 키와 개인 정보를 사용합니다. 디지털 인증서 해시를 사용하여 다른 메시지 요약을 얻은 다음 두 메시지 요약을 비교합니다. 동일하면 이것이 실제로 "소형 서버"임을 증명하고 그렇지 않으면 그렇지 않습니다. 

SSL 개념


SSL(Secure Sockets Layer)은 HTTPS 아래의 프로토콜 암호화 계층을 기반으로 하며, TCP와 같은 안정적인 전송 프로토콜을 기반으로 구축되어 상위 프로토콜에 대한 데이터 캡슐화, 압축, 암호화 등의 기본 기능을 제공합니다. SSL 프로토콜은 다음 두 가지 계층으로 구분됩니다.
SSL 레코드 프로토콜 계층의 역할은 상위 수준 프로토콜에 대한 기본 보안 서비스를 제공하는 것입니다. SSL 레코드 프로토콜은 하이퍼텍스트 전송 프로토콜 HTTP가 SSL에서 실행될 수 있도록 HTTP 프로토콜용으로 특별히 설계되었습니다. 다양한 고급 프로토콜을 기록하고 캡슐화하며 압축 및 압축 해제, 암호화 및 복호화, MAC 계산 및 검증과 같은 보안 관련 작업을 구체적으로 구현합니다.
SSL 핸드셰이크 프로토콜 계층에는 SSL 핸드셰이크 프로토콜, SSL 변경 암호 사양 프로토콜
, 애플리케이션 데이터 프로토콜 및 SSL 경고 프로토콜이 포함됩니다
. 핸드셰이크 계층의 이러한 프로토콜은 SSL 관리 정보 교환에 사용되며, 이를 통해 애플리케이션 프로토콜은
데이터를 전송하기 전에 서로를 인증하고, 암호화 알고리즘을 협상하고, 키를 생성하는 등의 작업을 수행할 수 있습니다. SSL 핸드셰이크 프로토콜의 기능은 게스트와 서버의 상태를 조정하여 양 당사자가 상태 동기화를 달성할 수 있도록 하는 것입니다. 

SSL 단방향 인증

클라이언트가 서버를 인증하는 과정

SSL 양방향 인증

 클라이언트와 서버 간의 상호 인증 과정

 

Supongo que te gusta

Origin blog.csdn.net/weixin_49765221/article/details/124254769
Recomendado
Clasificación