암호화, 인증, SSL / TLS3.0의 기본 사항은 [OS 개념 계열 포터]

사설 :

초보자 약한 슬래그으로 할 때 노트에 완전히이 물건을 쓰기.

나는 (이 교사의 방향과 자신에 달려 무엇을 학습) 기본 항목 - 안전 지식은 우리가, 운영 시스템 개념하지만이 클래스를 호출 생각합니다. 이것은 아마도 미리보기 (안개 ..) 주, 또는 무지, 잘못된 장소의 일부입니다, 나는 전시회를 바랍니다. 교과서이어야합니다 매우 고전 아브라함 Sliberschatz, 피터 베어 갤빈과 그렉 가니의 운영 체제 개념 9 판 (즉, 공룡 책이다). (나는 기본적으로 번역의 일곱 번째 판을 보았다 그러나 약한 슬래그, 번역 엉망) 단지 참조 거의 최근에 업그레이드 한 HTTPS를 알고 나는이 개념을 설명 할 좋은 답변이없는 느낌, 그래서 그들은 여기에 쓰여진 책에서 본 것을 넣어.

중국 정확성에 대해 책임을지지 않습니다 내 자신의 번역이며 , 자신의 소견은 이탤릭체에 사용합니다. (시간이 제한됩니다, 그래서 우리는 그것의 일부를 선택, 원래이 책은 15 장 참조)

저작권이 책 원래 저자.


IT는 통신 보안 문제의 다양한 해결하기 때문에, 암호화
경제 컴퓨팅의 여러 측면에 자주 사용된다. 보내는 데 사용되는
네트워크를 통해 안전하게 메시지를,뿐만 아니라 데이터베이스 데이터 보호를 위해
HAVING에서 파일, 그리고 심지어 전체 디스크 그들의 무단으로 내용 읽기를
엔티티.
보안 문제를 많은 여러 안전하게 서로 다른 네트워크간에 메시지를 전송하고 피를 포함하여 널리 현대 컴퓨팅의 여러 측면에 사용되는 통신, 해결할 수있는 암호화하기 때문에
데이터를, 파일의 내용, 심지어 전체 디스크가 불법 엔티티 참조하십시오.

암호화에 대한 보안 문제를 해결하기위한 수단입니다 그래서 보안 문제 , 이전 섹션을 언급 한 :

보안, 다른 한편으로는, 적절한 보호뿐만 아니라 필요
한도 내에서 외부 환경의 시스템뿐만 아니라 고려
시스템이 작동합니다.

즉, 보안은 외부 환경의 운영 체제를 고려해야한다 (단순히 내부 시스템 접근 제어는 것을 의미한다) 내부 문제의 보호를 고려하는 것이 필요하다. 차례로, 시스템 (공격)에 대한 공격에 초점을 맞추고 :

비밀 (비밀)의 위반,

무결성 (무결성)의 위반,

가용성 위반 (가용성, 간단히 말해, 무단 파괴 파괴를 허용되지 않습니다)

서비스의 도난, (서비스 도난, 자원의 무단 사용 자원의 사용 권한이없는 소지입니다)

서비스 거부 (서비스 거부).

뒷면에 암호화 이 주제를,

암호화 알고리즘은 보낸 사람 수 만 특정 키를 가진 컴퓨터가 메시지를 읽거나 데이터의 작가가 데이터.의 유일한 독자 있는지 확인 할 수 있도록 메시지를
암호화 알고리즘 메시지의 보낸 사람 만 확인할 수 있습니다 해당 컴퓨터는 특정 키 뉴스, 또는 단지를 읽을 수있는 데이터를 쓸 수있는 사람 단순히 사람들을 읽을 수 있습니다.

암호화 알고리즘은 다음과 같은 구성 요소로 이루어져 있습니다 :

  • 키의 설정 K.
  • 메시지의 설정 M.
  • 암호문 설정된 C.
  • 암호화 기능 E : K → (M → C). 즉, 각각의 K ∈ K에 대해, E의 인 k는 A는
    메시지로부터 암호문을 생성하는 함수. 모두 E 및 E의 K 모든 k에 대한를
    효율적으로 계산 가능 함수이어야한다. 일반적으로, E의 k는 무작위입니다
    암호문으로 메시지에서 매핑.
  • 복호화 함수 D : K → (C → M). 즉, 각각의 K ∈ K에 대해, D의 인 k는 A는
    암호문 메시지를 생성하는 기능. 두 D 및 D의 K 임의 대한
    K 효율적으로 계산 가능 함수이어야한다.

    암호화 알고리즘은 다음과 같은 부분으로 구성

    • 키 K의 세트
    • 메시지 세트 M
    • 암호문 C 집합
    • 암호화 함수 E :. → K (M → C) 즉 각 키 K ∈ K에 대해, E K는 암호문 메시지를 생성하는 기능이다. K는 임의의 경우, E 및 E의 k는 효율적인 계산 가능 함수이다. 일반적으로, E K는 임의의 암호문으로 메시지에서 매핑입니다.
    • 암호 해독 함수 E :. K → (C → M) 즉 각 키 K ∈ K에 대해, D K는 암호문 메시지를 생성하는 기능이다. K는 임의의 경우, D와 D의 k는 효율적으로 계산 가능 함수이다. 일반적으로, D K는 에 암호문 메시지에서 임의의 매핑입니다.

암호화 알고리즘이 필수 속성을 제공해야합니다 : 주어진
암호문 C ∈ C, A 컴퓨터는 E와 같은 것을 m 계산할 수 있습니다 K IF (m)는 = C 만
. IT 따라서 K를 가지고, A 컴퓨터 지주 K가에 해독 암호문 CAN
평문가 사용을 그들을 생산, 그러나 A 컴퓨터되지 지주 K는 암호를 해독 할 수 없습니다
암호문은 일반적으로 (예를 들어, ON 보낸 노출되어 있기 때문에 암호문은.
네트워크), IT는 IT가 암호문에서 K를 도출하기 불가능하는 것이 중요하다.
암호화 알고리즘의 두 가지 종류가 있습니다 : 대칭
. 비대칭
암호화 알고리즘은 필요한 등록 정보를 제공해야 암호문 C ∈ 설정 암호문 C 주어진 k는 암호화 함수 E를 계산함으로써 컴퓨터를 마스터에만 K의 메시지 m (m) = 제공시켰다.따라서, 단지 마스터 키 K 컴퓨터는 암호문을 해독 할 수 있지만, 컴퓨터 k는 없습니다 지배 없습니다. 암호문은 종종 있기 때문에 (네트워크에 보낼 때, 예를 들어) 노출, 그것은 매우 중요한 포인트가 불가능 키 K의 암호문을 시작할 수 있도록이다. 대칭 암호화와 비대칭 암호화 : 두 개의 암호가 있습니다.

대칭 암호화 알고리즘 및 비대칭 암호화 알고리즘

대칭 암호화 :

에서, 암호화 동일한 및 키가 사용되는 대칭 암호화 알고리즘
암호 해독. 희망하므로, K. 보호의 비밀 BE 반드시
대칭 암호화 알고리즘은 암호화 및 복호화를위한 동일한 키를 사용하여, 이에 따라, 유지되어야 비밀 키 K.

어떤 대칭 키 암호화 프로세스를 보여줍니다.

일부 대칭 암호화 알고리즘 :

데이터 암호화 표준 (DES) 64 비트 값이 56 비트 키 교체 및 전치 연산에 기초 일련의 변환을 수행하는 (基于替换和排列变换) . 한번에 비트의 블록에 작동 블록 암호로 알려져있다.

트리플 DES : DES 알고리즘은 두 개 또는 세 개의 키 - 예를 사용하여 동일한 평문에 세 번 (두 암호화를 한 복호)를 반복하고, C = E의 K 3 (D K 2 (E K 1 (m))). 세 개의 키를 사용하는 경우, 유효 키 길이는 168 개 비트 (즉, 56 * 3)이다.

진보 된 암호화 표준 (AES) :. 다른 블록 암호는 128, 192 또는 256 비트의 키 길이를 사용하여 128 비트 블록들에서 작동 블록 암호는 고정 된 비트 길이의 평균에 따라 암호화 될 위치

RC4 : 스트림 암호 기반 (암호화 블록보다는 바이트 또는 비트 스트림을 복호화). 통신의 길이가 블록 암호 만들 것입니다 경우에 유용
너무 느리다.

비대칭 암호화 :

비대칭 암호화 알고리즘의가있다 다른 암호화하고
암호 해독 키 .... Any의 SENDER는 암호화 통신에 그 키를 사용할 수 있습니다,
그러나 단지 키 창조주에 CAN 알려진 통신.이 방식의 해독
공개 키 암호화 AS는 비약적 발전에 WAS를 암호화.
비대칭 암호화 알고리즘, 암호화 및 암호 해독 키는 다릅니다. ... 어떤 송신자는 통신 창조자를 해독 할 수있는 충분한 통신을 암호화하는 키 (즉, 공개 키)를 사용하는 에너지 만 키를 가질 수 있습니다. 공개 키 암호화로 알려진이 모델은, 암호화 돌파구였다.

예 : RSA 알고리즘 예 : RSA 암호화 알고리즘

RSA에서는 k 개의 E는 공개 키이고, k 값 (D)는 비밀 키이다. N은 제품의
두 개의 큰 임의로 선택된 소수 p와 q (예컨대, p 및 q위한
512 비트 각각). 유전율 도감를 파생 있어야 D, N K에서의 즉, N이 되도록,
즉 k 개의 E는 비밀 유지 될 필요가 널리 보급 될 수있다. 암호화
알고리즘 E의 인 케이 E , N (m) = MK E K의 개조 N, E를 만족시키는 k는 E (K)의 D의 개조 (p-1) (Q-1) = 1. 복호화 알고리즘은 다음 D되는 K D , N (C)는 (CK)의 = D 개조를 N.

는 RSA에서, K E는 공개 키는 K이고 D는 제품의 큰 두 임의로 선택되는 소수 (예컨대, P, Q에 대한 것이 긴 각각 512), 개인 키 N이다. K에서 D, N K에 E, N은 K 있도록, 계산 안 E는 기밀로 유지하지 않고 널리 전파 될 수있다.

암호화 알고리즘 E K E , N (m) m = K E MOD N, K E 충족 K E K D MOD. (1-P). (Q-1) =. 1.

그 후 복호화 알고리즘 D K D , N (C) C = K D MOD N

작은 값을 사용하는 예를도 158에 도시한다. 이 예에서, 우리가
할 p = 7, Q = 13.We 다음 계산 N = 7 * 13 = (91) 및 (p-1) (Q-1) = 72
우리 다음 선택 케이 전자 (72)와 서로 소인 <72 마지막 5 수득 우리 계산
유전율 D를 이러한 K의 것을 전자 K의 차원 개조 72 = 1, 수득 29 우리는 이제 키있다 : 공개
키 (K)의 E , N = 5, 91, 및 개인 키를, K D , N은 29, 91 (69)는 메시지를 암호화 =
다음에 의해 디코딩되는 메시지 (62)의 공개 키 결과와
개인 키를 통해 수신기.

图15.8一个比较小一点的例子。我们让 p = 7, q =13。然后计算N = 7*13 且 (p−1)(q−1) = 72。接着我们相应的给ke选择一个小于72的素数,得到5。最后我们通过ke kd mod 72=1计算得到 kd ,为29。因此现在ke,N = 5, 91;私钥 kd ,N = 29, 91。用公钥加密消息69得到密文结果62,然后通过私钥解密。

RSA 算法: 数学知识

关于RSA算法用到的数学知识,请参见阮一峰大神的教程I(前置数学知识)

阮一峰大神的教程II(最后一部分:算法正确性的证明)

The use of asymmetric encryption begins with the publication of the public
key of the destination. For bidirectional communication, the source also must
publish its public key. “Publication” can be as simple as handing over an
electronic copy of the key, or it can be more complex. The private key (or “secret
key”) must be zealously guarded, as anyone holding that key can decrypt any
message created by the matching public key.

非对称加密的使用从公钥的发布开始。对于双向通信,消息源还必须发布它的公钥 (译者注:注意直接把公钥发布出去会出问题,下面会提到)。发布可以简单的像传递这个公钥的电子拷贝一样,也可以使得它变得更复杂一点。私钥必须被积极保护起来。因为任何持有这个私钥的人,都可以解密由和这个私钥相匹配的那个公钥加密的任何信息。

We should note that the seemingly small difference in key use between
asymmetric and symmetric cryptography is quite large in practice. Asymmetric
cryptography is much more computationally expensive to execute. It is much
faster for a computer to encode and decode ciphertext by using the usual
symmetric algorithms than by using asymmetric algorithms. Why, then, use
an asymmetric algorithm? In truth, these algorithms are not used for general purpose
encryption of large amounts of data. However, they are used not
only for encryption of small amounts of data but also for authentication,
confidentiality, and key distribution, as we show in the following sections.

我们应该注意到非对称加密和对称加密在密钥使用上的微小不同其实导致在实践中二者的差别是非常大的。非对称加密计算会消耗更多的资源。通常来说,使用对称加密和解密密文比非对称加密密文更快。那么为啥我们还要用非对称加密算法呢?事实上,这些(非对称加密)算法不是为通常意义上大量数据的加密而准备的。非对称加密不仅仅被使用在少量数据的加密中也被使用在验证,保密和密钥分发的过程,就像下面几个小节所述的一样。


Authentication认证

We have seen that encryption offers a way of constraining the set of possible
receivers of a message. Constraining the set of potential senders of a message
is called authentication. Authentication is thus complementary to encryption.

加密可以提供一种限制信息接受者范围的途径(译者注:即有密钥(非对称中是私钥)才能解密没有则不能)。限制信息的发送者范围叫做验证。验证是加密的补充。

Authentication is also useful for proving that a message has not been modified.

验证也能确保信息不被更改。

An authentication algorithm using symmetric keys consists of the following components:

  • A set K of keys.
  • A set M of messages.
  • A set A of authenticators.
  • A function S : K → (M → A). That is, for each k ∈ K, Sk is a function for
    generating authenticators from messages. Both S and Sk for any k should
    be efficiently computable functions.
  • A function V : K → (M×A→{true, false}). That is, for each k ∈ K, Vk
    is a function for verifying authenticators on messages. Both V and Vk for
    any k should be efficiently computable functions.

使用对称密钥的认证算法由下面的部分构成:

  • 一个密钥集合K
  • 一个消息集合M
  • 一个验证器集合A
  • 一个验证器生成函数 S : K → (M→A). 即,对于每个密钥 k ∈ K, Sk 是一个用消息生成验证器的函数。对任意k来说, S和Sk 都是高效的且可计算的函数。
  • 一个验证器验证函数 E : K → (M×A→{true, false}). 即,对于每个密钥 k ∈ K, Vk 是一个用来验证特定消息的验证器的函数。对任意k来说, V 和Vk 都是高效的且可计算的函数。

The critical property that an authentication algorithm must possess is this:
for a message m, a computer can generate an authenticator a ∈ A such
that Vk (m, a) = true only if it possesses k. Thus, a computer holding k can generate authenticators on messages so that any computer possessing k can
verify them. However, a computer not holding k cannot generate authenticators
on messages that can be verified using Vk . Since authenticators are generally
exposed (for example, sent on a network with the messages themselves), it
must not be feasible to derive k from the authenticators. Practically, if Vk (m, a)
= true, then we know that m has not been modified, and that the sender of
the message has k. If we share k with only one entity, then we know that the
message originated from k.

验证算法的重要属性是:对一个消息m,只有计算机掌握k的时候可以生成一个验证器 a ∈ A 使得验证函数 Vk (m, a) = true 。 因此,任何持有密钥k的计算机可以生成关于消息m的验证器,这个验证器可被其它任意一台任何持有密钥k的计算机通过Vk 来验证。因为验证器通常是被暴露的(比如,在网络上和消息一起被发送),所以很重要的一点是让从验证器推出密钥k变得不可能。实际上,如果Vk (m, a) = true,我们就可以知道消息没被更改过。如果我们只把k分享给过一个实体,那么我们就能知道消息源自最初的发布者。

Just as there are two types of encryption algorithms, there are two main varieties of authentication algorithms.

和两种加密算法相同,也有两种认证算法。

Hash函数

The first step in understanding these algorithms is to explore hash functions. A hash function H(m) creates a small, fixed-sized block of data, known as a message digest or hash value, from a message m. Hash functions work by taking a message, splitting it into blocks, and processing the blocks to produce an n-bit hash. H must be collision resistant —that is, it must be infeasible to find an m = m such that H(m) = H(m ). Now, if H(m) = H(m ), we know that m = m — that is, we know that the message has not been modified. Common message-digest functions include MD5, now considered insecure, which produces a 128-bit hash, and SHA-1, which outputs a 160-bit hash. Message digests are useful for detecting changed messages but are not useful as authenticators. For example, H(m) can be sent along with a
message; but if H is known, then someone could modify m to m and recompute H(m ), and the message modification would not be detected. Therefore, we must authenticate H(m).

理解这两种算法的第一步是探索hash函数。hash函数H(m)用一条消息创建一块小的且固定大小的数据,被称作消息摘要或者hash值。它是这样工作的:取一条消息,将其拆分成块,并且处理这些小块来产生n位的hash。H函数是拒绝碰撞的,也就是说,如果m =m,则H(m) = H(m ) 是不成立的。所以现在,如果H(m) = H(m ), 那么一定有m = m ,也就是说,我们可以确定这条消息m没有被更改。常见的消息摘要函数包括产生128位hash摘要的MD5(现在已经被认为是不安全的)和产生160位hash摘要的SHA-1。消息摘要对检测消息是否被更改十分有用但是对验证验证器来说是没用的。比如,H(m)可以和一条消息一起被发送,但是如果H函数是已知的其他人可以将m修改成m 然后重新计算H(m ),并且这种更改不能被检测出来。因此,我们必须验证H(m).

message-authentication code (MAC)消息验证码

  • uses symmetric encryption 使用对称加密
  • a cryptographic checksum is generated from the message using a secret key 消息的加密校验和通过一个密钥来被生成。
  • k is needed to compute both Sk andVk , so anyone able to compute one can compute the other. k用来计算Sk 和Vk ,所以任何能计算一个的人也能计算另外一个。

digital-signature algorithm数字签名算法

  • the authenticators thus produced are called digital signatures 这种算法的验证器也被叫做数字签名。
  • Digital signatures are very useful in that they enable anyone to verify the authenticity of the message.数字签名使得任何人可以验证消息的真实性。
  • kv is the public key, and ks is the private key. kv 是公钥,ks 是私钥。
  • infeasible to derive ks from kv 不可从kv 推导出ks
  • Example: RSA digital-signature algorithm ,similar to the RSA encryption algorithm, but the key use is reversed. The digital signature of a message is derived by computing Sks (m) = H(m)ks mod N.The key ks again is a pair <d, N>, where N is the product of two large, randomly chosen prime numbers p and q. The verification algorithm is then
    Vkv = ? ( akv mod N = H(m)), where kv satisfies kv ks mod (p − 1)(q − 1) = 1.
  • 예 : 디지털 서명 알고리즘 RSA는 RSA 암호화 알고리즘, 등,하지만 키 사용은 반대이다 (역자 주 : 개인 키, 공개 키 인증의 검증을 계산 검증). 디지털 메시지 서명 S K S (m)은 S에 의해 산출되는 K S (m) = H (m) K S MOD N이 얻어진다. 키 K S는 또한 순서화 <D, N>의 수이고, N은, 두 개의 큰 부피와 무작위로 선택된 소수 p와 q이다. 검증 알고리즘 V K V = (A? K V MOD N = H (m)에), 동일한 K V는 K 만족 V K S MOD (P -. 1) (Q -. 1). = 1.

(첫째 아니라, 시간, SSL 뒤에 백업의 상부 제한, 여기에 썼습니다.)


메시지 :

원본 : 큰 상자의  암호화, 인증, SSL / TLS3.0의 기본 사항 [OS의 개념 시리즈 포터]


추천

출처www.cnblogs.com/chinatrump/p/11615178.html