Autosar 자체 서명 인증서 및 CA 인증서

1. 안전한 전송

1. 프레임워크

여기에 이미지 설명 삽입

2. 전송 보안을 달성하는 방법은 무엇입니까?

"암호화 + 서명 + 인증서"는 본질적으로 비보안 채널에서 안전한 데이터 전송을 위한 솔루션입니다.

  • 1. 암호화 - 도청 방지: 평문을 암호문으로 변환합니다. 원하는 수신자만 암호문을 평문으로 해독할 수 있습니다. 암호문이 공격자에 의해 도난당하더라도 데이터 내용을 이해할 수 없습니다.

  • 2. 무결성 검증 - 변조 방지: 원본 데이터의 요약을 계산하고 데이터 및 요약을 통신 당사자에게 전달합니다 . 수신자는 또한 데이터를 수신한 후 데이터의 다이제스트를 계산하고 수신된 다이제스트와 일치하는지 여부를 비교하여 수신된 데이터가 변조되었는지 여부를 판단합니다.
    그러나 수신된 다이제스트도 변조될 수 있기 때문에 더 안전한 방법이 필요합니다.

  • 3. 데이터 소스 인증 - 가장 방지: 디지털 서명은 데이터 무결성을 확인하는 동시에 데이터 소스를 인증하여 가장을 방지할 수 있습니다.

3. 대칭 암호화와 비대칭 암호화의 차이점은 무엇입니까?

  • 1. 키 관리: 대칭형 암호화 알고리즘은 키를 상대방에게 보내야 하므로 키 유출의 위험이 있으며, 비대칭형 암호화는 공개키는 공개키, 개인키는 비밀로 유지하므로 개인 키가 전송되는 것을 방지합니다.

  • 2. 키 기능: 공개 키로 암호화된 데이터는 개인 키로만 해독할 수 있습니다. 반대로 개인 키로 암호화된 데이터는 공개 키로만 복호화될 수 있습니다(참고: 공개 키로 암호화된 데이터는 공개 키로 복호화할 수 없습니다. 해독되면 암호화 보안이 손실됩니다.)

  • 3. 계산 성능: 비대칭 암호화 알고리즘의 계산 효율성은 낮기 때문에 실제로 두 알고리즘을 결합한 복합 알고리즘이 자주 사용됩니다. 먼저 비대칭 암호화를 사용하여 보안 채널을 설정하여 대칭 키를 전송한 다음 키를 사용하여 대칭 암호화;

  • 4. 인증기능 : 비대칭 암호알고리즘에서 한쪽만이 비밀키를 보유하고 있으며, 이는 인증 및 부인방지 기능을 갖는다(이 기능은 3절의 전자서명 알고리즘에 적용).

성능 요소를 고려하여 HTTPS 프로토콜에는 "대칭 암호화"와 "비대칭 암호화"를 결합한 "하이브리드 암호화" 방식이 채택되었습니다. 통신 설정 시 비대칭 암호화를 사용하여 "세션 키" 협상 을 통신 과정에서 키.

4. 의사난수와 참난수

난수는 컴퓨터 보안 분야에서 매우 중요한 포인트로, 많은 시나리오에서 키 생성, 파일 이름, sessionId/orderId/token 등과 같은 임의의 이벤트를 생성하기 위해 난수가 필요합니다. 현대 난수 생성 모델은 여전히 ​​1946년 폰 노이만이 설계한 난수 모델을 사용합니다.

  • 1. 임의의 숫자를 "seed"로 입력하고 난수 알고리즘을 통해 난수를 얻습니다.
  • 2. 생성된 난수를 새로운 시드로 사용하고 다음 계산 라운드에 대체합니다.
  • 3. 1단계와 2단계를 반복하여 통계적으로 유의한 여러 난수를 생성합니다.

그러나 이 모델에서 생성된 난수는 완전히 임의적이지 않습니다. 샘플링 범위가 충분히 크면 임의의 결과는 확실히 주기에 속하므로 이 모델에서 생성된 난수는 "의사 난수"라고 할 수 밖에 없으며 임의의 결과가 주기에 속하는 주기는 다음과 같습니다. "랜덤 사이클"이라고합니다.

실제 난수를 얻으려면 하드웨어 수준의 지원이 필요합니다.

  • 1999년 인텔은 i810 칩셋에 세계 최초로 진정한 난수 생성기를 통합했는데, 그 해결책은 회로의 열 잡음(분자의 불규칙한 움직임)을 데이터 소스로 사용하는 것입니다.단점은 효율성이 너무 낮아서 현재 컴퓨터에서 사용되는 난수는 여전히 소프트웨어로 구현된 유사 난수입니다.
  • 소프트웨어가 완전히 무작위일 수는 없지만 생성기의 무작위성을 향상시킬 수 있습니다. 예를 들어 더 강력한 무작위 알고리즘(Java#SecurityRandom) 사용, 더 복잡한 시드(시스템 시간, 마우스 위치, 네트워크 속도, 하드 디스크 읽기 및 쓰기 속도) 사용, 난수 값 범위 확장, 여러 무작위 알고리즘 결합 등 .

5. 디지털 서명 - 무결성 확인 및 데이터 소스 인증

디지털 지문이라고도 하는 디지털 서명은 메시지 다이제스트 알고리즘과 비대칭 암호화 알고리즘의 조합으로 데이터의 무결성을 확인하고 데이터 소스를 인증할 수 있습니다.

디지털 서명 알고리즘의 모델은 두 가지 주요 단계로 나뉩니다.

  • 1. 서명: 먼저 데이터의 [요약]을 계산한 다음 개인 키를 사용하여 [요약]을 암호화하여 [서명]을 생성하고 [데이터 + 서명]을 수신자에게 보냅니다.
  • 2. 검증: 먼저 동일한 다이제스트 알고리즘을 사용하여 수신 데이터의 [다이제스트]를 계산한 다음 미리 얻은 공개 키를 사용하여 [서명]을 해독하고 [해독된 서명 다이제스트]와 [계산된 서명 다이제스트]를 비교합니다. 다이제스트]가 일치합니다. 일관성이 있으면 데이터가 변조되지 않았음을 의미합니다.
    여기에 이미지 설명 삽입

"공개 키"를 사용하여 데이터를 암호화하고 "개인 키"를 사용하여 복호화하는 것이 "암호화"이며, 그렇지 않으면 "개인 키"를 사용하여 데이터를 암호화하고 "공용 키"를 사용하여 복호화합니다. "서명"입니다.

  • 모든 사람이 공개 키를 보유하고 있기 때문에 "서명"은 데이터의 보안을 보장하지 않습니다. 모든 사람이 공개 키를 사용하여 데이터를 해독할 수 있기 때문입니다.
  • 그러나 메시지의 정확성과 부인 방지를 보장하기 위해 "서명"을 사용할 수 있습니다. 공개 키와 개인 키 사이에는 일대일 대응이 있기 때문에 공개 키가 암호문을 해독할 수 있다는 것은 암호문이 개인 키 보유자로부터 와야 함을 의미합니다.

6. 다이제스트 알고리즘을 사용하는 디지털 서명이 무결성을 검증할 수 있는 이유는 무엇입니까?

검증 무결성은 주로 메시지 다이제스트 알고리즘의 특성에 따라 달라집니다.다이제스트 알고리즘의 원리는 특정 작업 규칙에 따라 원본 데이터에서 정보를 추출하는 것입니다.추출된 정보는 원본 데이터의 메시지 다이제스트이며, 데이터 지문.

  • 데이터 조각에 대해 단방향 해시 함수를 수행하여 데이터 요약인 고정 길이 해시 값을 생성합니다.
  • 유명한 다이제스트 알고리즘에는 MD5 알고리즘과 SHA 시리즈 알고리즘이 포함됩니다.

다이제스트 알고리즘에는 다음과 같은 특징이 있습니다.

일관성: 동일한 데이터에 대한 여러 계산의 요약이 동일하고 서로 다른 데이터(충돌을 고려하지 않은 경우)의 요약은 서로 다름 비가역성: 원본 데이터의 요약만 앞으로 추출할 수 있으며 원본 데이터는 추출할 수
없음 효율성
: 초록의 생성 프로세스가 효율적이고 빠릅니다.

다이제스트 알고리즘의 모델은 두 가지 주요 단계로 나뉩니다.

요약 생성: 먼저 데이터의 [요약]을 계산한 다음 [데이터 + 요약]을 수신자에게 보내고
요약 확인: 동일한 요약 알고리즘을 사용하여 수신된 데이터의 [요약]을 계산하고 [수신된 요약]을 비교합니다. [계산된 요약]과 일치합니다. 일관성이 있으면 데이터가 완전합니다.

다이제스트 알고리즘에 의존하는 것만으로는 데이터 무결성을 엄격하게 확인할 수 없습니다. 비보안 채널에서는 데이터와 요약이 모두 변조될 위험이 있고 공격자가 데이터를 변조할 때 요약도 변조할 수 있기 때문입니다. 따라서 다이제스트 알고리즘은 무결성을 엄격하게 검증하기 위해 암호화 알고리즘과 협력해야 합니다.

메시지 다이제스트의 이점:

  • 예를 들어 파일을 다운로드할 때 데이터 소스는 파일의 MD5를 제공합니다. 파일을 다운로드한 후 로컬에서 파일의 MD5를 계산하고 데이터 소스에서 제공하는 MD5와 비교하여 같으면 파일이 완성됩니다. 그러나 메시지 다이제스트를 독립적으로 사용하는 경우 데이터 소스에서 얻은 MD5가 중간에 변조되지 않았다는 보장이 없기 때문에 데이터가 변조되지 않았음을 보장할 수 없습니다.
  • 다이제스트 알고리즘은 암호화 알고리즘에 비해 상대적으로 빠릅니다.

7. 디지털 서명이 데이터 소스를 인증할 수 있는 이유는 무엇입니까?

이는 서명에 발신자의 개인정보(개인키)가 도입되어 "적법한 발신자"만이 타인이 위조할 수 없는 디지털 서명(암호화 문자열)을 생성할 수 있기 때문입니다. .

  • 수신자가 "법적 수단"을 통해 발신자의 공개 정보(공용 키)를 획득하고 디지털 서명을 성공적으로 검증하면 데이터가 "법적 수신자"로부터 온 것을 의미합니다.
    또한 서명 시 발신인의 개인 정보를 소개하고 확인 시 발신인의 공개 정보를 사용하는 것이 바로 "비대칭 암호화"의 특성과 일치합니다.
    서명 시 입력하는 개인 정보가 바로 개인 키이기 때문에 검증 시 사용하는 공개 정보가 공식 공개 키입니다.

8. 개인 키를 사용하여 먼저 원본 데이터에 서명한 다음 서명을 다이제스트할 수 있습니까?

아니요, 두 가지 주요 이유가 있습니다.

  • 1. 타당성: 수신자는 다이제스트를 통해 데이터의 무결성을 검증해야 하지만 수신자는 데이터에 서명할 수 없으므로 데이터 다이제스트의 일관성을 검증할 수 없습니다.
  • 2. 시간 효율성: 원본 데이터를 서명(암호화)하는 데 시간이 너무 오래 걸리고 다이제스트 알고리즘 자체가 압축된 맵이므로 서명에 소요되는 시간을 단축할 수 있습니다.

9. 수신자는 발신자의 공개 키를 어떻게 안전하게 얻을 수 있습니까? - 디지털 인증서

디지털 인증서란 무엇입니까?

  • 디지털 서명과 디지털 인증서는 항상 쌍으로 나타나며 둘을 분리할 수 없습니다. 디지털 서명은 주로 데이터 무결성을 확인하고 데이터 소스를 인증하는 데 사용되는 반면 디지털 인증서는 주로 공개 키를 안전하게 발급하는 데 사용됩니다.
  • 디지털 인증서는 주로 사용자 정보, 사용자 공개 키 및 인증서의 엔터티 정보에 대한 CA 서명의 세 부분으로 구성됩니다.

디지털 인증서 모델은 주로 두 단계로 나뉩니다.

  • 1. 인증서 발급:

(1) 신청인은 서명 알고리즘, 공개 키, 유효 시간 및 기타 정보를 CA 조직에 전송합니다 (
2) CA 조직은 신청인의 신원을 확인한 후 신청인이 보낸 정보를 엔티티로 만들고 초록 계산
(3) CA 조직은 자체 개인 키를 사용하여 초록을 암호화하여 인증서 서명(인증서 서명)을 생성합니다.
(4) CA 조직은 디지털 인증서에 인증서 서명을 추가하여 완전한 디지털 인증서를 형성합니다.

  • 2. 확인서

(1) 검증자는 동일한 다이제스트 알고리즘을 사용하여 디지털 인증서 엔터티의 다이제스트를 계산합니다
(2) CA 기관의 공개 키(CA의 공개 키 정보는 브라우저 및 운영 체제에 통합됨)를 사용하여 암호를 해독합니다. 디지털 인증서 서명
(3) 비교 복호화된 데이터가 계산된 다이제스트와 일치하는지 여부, 일치하면 신뢰할 수 있는 인증서입니다.

여기에 이미지 설명 삽입

(1) CA 루트 인증서 생성

루트 인증서는 운영 체제에 미리 설치되어 있으며 루트 인증서가 정확해야 합니다.
여기에 이미지 설명 삽입
단계:

    1. 당국은 RSA와 같은 알고리즘을 사용하여 한 쌍의 공개 키 K1 / 개인 키 K2를 생성합니다.
    1. 공개 키 K1, 인증서 발급 기관, 유효 기간 및 기타 정보는 C로 설정된 원본 인증서 콘텐츠를 형성합니다.
    1. 특정 다이제스트 알고리즘을 사용하여 원본 콘텐츠 C의 디지털 다이제스트를 계산하고 H로 설정합니다.
    1. 첫 번째 단계에서 생성된 개인 키 S를 사용하여 다이제스트 H에 서명하여 서명 내용 S를 얻습니다.
    1. 원본 콘텐츠 C와 서명된 콘텐츠 S를 결합하여 CA 루트 인증서를 얻습니다.

CA 인증서: CA 조직에서 다른 사람에게 발급한 인증서입니다. 주로 다음 정보를 포함합니다.

  • 신청자 공개 키
  • 지원자 정보
  • 발급자(CA) 정보
  • 위 정보의 디지털 서명. 디지털 서명 생성 규칙: 먼저 SHA256과 같은 다이제스트 알고리즘을 사용하여 위 정보의 다이제스트를 생성한 다음 CA는 자체 개인 키를 사용하여 이 다이제스트를 암호화합니다.

(2) 업무 관련 인증서 생성

여기에 이미지 설명 삽입

    1. 기업은 RSA와 같은 알고리즘을 사용하여 한 쌍의 공개 키 K3 / 개인 키 K4를 생성합니다.
    1. 공개 키 K3 및 인증서의 기타 콘텐츠를 만들어 원래 인증서 콘텐츠를 형성하고 C로 설정하고 기관에 제공합니다.
    1. 권위있는 조직이 C를 얻은 후 요약 알고리즘을 사용하여 요약 정보 2를 생성합니다.
    1. 기관은 자체 개인 키 K2(이것이 핵심)를 사용하여 요약 정보 H에 서명하고 서명된 콘텐츠 S를 얻습니다.
    1. 원본 콘텐츠 C2와 서명된 콘텐츠 S2를 결합하여 인증서를 획득하고 기업에 전달합니다.

CA 루트 인증서와 비즈니스 인증서의 차이점은 다음과 같습니다. 비즈니스 애플리케이션용 인증서 서명에 사용되는 개인 키는 CA 기관의 개인 키입니다. 이 개인 키는 루트 인증서의 공개 키에 해당합니다.

(3) 디지털 인증서의 진위 확인

여기에 이미지 설명 삽입

루트 인증서의 공개 키를 사용하여 다른 인증서의 서명이 올바른지 확인할 수 있습니다. 서명이 정확하면 인증서가 인증되고 변조되지 않은 것입니다. 나중에 신뢰할 수 있는 인증서에 포함된 공개 키를 사용하여 수신된 메시지를 신뢰할 수 있는지 확인할 수 있습니다.

10. 인증 기관 CA란 무엇입니까?

인증 기관(인증 기관, CA)은 디지털 인증서의 승인, 발급, 보관 및 취소를 담당하는 기관입니다.

  • CA 기관은 "Root CA"와 "Intermediate CA"로 구분되며, Root CA 기관이 직접 End-entity 인증서를 발급하는 것을 원칙적으로 금지하고 중간 CA 기관이 End-entity 인증서를 발급하도록 요구합니다.
  • 이는 인증서 무효화의 영향을 피하기 위한 것으로 루트 인증서가 유효하지 않거나 위조되면 전체 인증서 체인에 문제가 발생합니다.

11. 인증서 체인이란 무엇입니까?

인증서 체인은 여러 디지털 인증서로 설정된 인증서 확인 체인입니다.

  • 디지털 인증서는 주로 사용자 정보, 사용자 키 및 인증서 엔터티의 CA 기관 서명의 세 부분으로 구성됩니다.
  • 인증서 엔터티의 적법성을 검증하기 위해서는 인증서를 발급한 CA의 공개키를 획득해야 하며, 이 공개키는 상위 인증서에 존재한다. 따라서 인증서의 적법성을 검증하기 위해서는 루트 인증서까지 인증서 체인을 추적해야 합니다.

루트 인증서는 자체 서명된 인증서이며 루트 인증서를 다운로드하는 사용자는 루트 인증서에서 발급한 모든 인증서를 신뢰한다는 의미입니다. 운영 체제나 브라우저에는 일부 신뢰할 수 있는 루트 인증서가 이미 내장되어 있습니다.

여기에 이미지 설명 삽입

12. 디지털 인증서에 대한 표준

디지털 인증서는 주로 사용자 정보, 사용자 공개 키 및 인증서의 엔터티 정보에 대한 CA 서명의 세 부분으로 구성됩니다. 현재 디지털 인증서는 PKI(Public Key Infrastructure)에서 공식화한 X.509 표준을 채택하고 있으며 현재 세 가지 버전이 있으며 그 중 X.509 표준의 세 번째 버전이 더 일반적입니다.

  • 주요 형식은 다음과 같습니다.
    여기에 이미지 설명 삽입

둘째, openssl은 자체 서명된 인증서를 생성합니다.

기본 프로세스

가상 CA 조직을 생성하고, 인증서를 생성하고
, 자체 키를 생성한 다음 인증서 인증 응용 프로그램을 작성하고 서명을 위해 위의 CA 조직으로 가져간
다음 자체 서명된 인증서를 받습니다(자체 구축된 CA에서 인증함). 조직)

  • 루트 인증서는 https 클라이언트에 구축되며 https 서버의 개인 키에 의해 생성됩니다.
    여기에 이미지 설명 삽입

먼저 가상의 CA 인증 기관이 나옵니다.

# 生成CA认证机构的证书密钥key
# 需要设置密码,输入两次
openssl> genrsa -des3 -out ca.key 1024

# 去除密钥里的密码(可选)
# 这里需要再输入一次原来设的密码
openssl> rsa -in ca.key -out ca.key

# 用私钥ca.key生成CA认证机构的证书ca.crt
# 其实就是相当于用私钥生成公钥,再把公钥包装成证书
openssl> req -new -x509 -key ca.key -out ca.crt -days 365
# 这个证书ca.crt有的又称为"根证书",因为可以用来认证其他证书

웹 사이트에 대한 인증서 생성

  • 위의 가상 CA 조직을 사용하여 인증
# 生成自己网站的密钥server.key
# genra	生成RSA私钥
# -des3	des3算法
# -out server.key 生成的私钥文件名
# 1024 私钥长度
openssl> genrsa -des3 -out server.key 1024

# 生成自己网站证书的请求文件
# 如果找外面的CA机构认证,也是发个请求文件给他们
# 这个私钥就包含在请求文件中了,认证机构要用它来生成网站的公钥,然后包装成一个证书
# req 生成证书签名请求
# -new 新生成
# -key 私钥文件
# -out 生成的CSR文件
# -subj 生成CSR证书的参数
openssl> req -new -key server.key -out server.csr -subj "/C=CN/ST=Guangdong/L=Guangzhou/O=xdevops/OU=xdevops/CN=gitlab.xdevops.cn"

# 使用虚拟的CA认证机构的证书ca.crt,来对自己网站的证书请求文件server.csr进行处理,生成签名后的证书server.crt
# 注意设置序列号和有效期(一般都设1年)
# -days 证书有效期
openssl> x509 -req -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -days 365 

지금까지 개인 키 server.key와 인증서 server.crt가 모두 생성되었으며 웹 사이트 소스 코드에서 사용할 수 있습니다.

  • subj 매개변수 설명은 다음과 같습니다.
    여기에 이미지 설명 삽입

3. 안드로이드 애플리케이션 서명

Gradle(10) v1/v2/v3 서명 메커니즘을 이해하기 위한 기사

https://duanqz.github.io/2017-01-04-Package-Manage-Mechanism

4. HTTPS 상호 인증(상호 TLS 인증)

HTTPS 상호 인증(상호 TLS 인증)

참고:

추천

출처blog.csdn.net/u011436427/article/details/130928501