Key Stretching
https://en.wikipedia.org/wiki/Key_stretching
암호키 위탁(Key Escrow)
키(주로 비밀키)를 공인된 기관(주로 정부)에 맡기는 행위. 전화기가 개통될 때 클리퍼 칩등을 사용해 키를 에스크로 업체에 맡기고 법원에서 허가가 있을 때 열어볼 수 있도록 하기 위함인데 PGP로 떠오른 정부기관의 감청 능력에 대한 우려를 잠재우기 위해 나온 개념인데 반발이 심해 key recovery로 대체되었다.
ECDSA
Why is elliptic curve cryptography not widely used, compared to RSA?
ECDSA: The digital signature algorithm of a better internet
Why is elliptic curve cryptography not widely used, compared to RSA?
What key exchange mechanism should be used in TLS?
PFS perfect forward secrecy
현재 비밀키를 탈취당하거나 해도 이전 데이터 교환 등에서 사용했던 세션 키는 위험에 빠지지 않도록 하는 키 교환 프로토콜의 특징 중 하나. 이 특징을 지원하기 위해서는 세션키의 수명을 짧게 만들어서 탈취당해도 공격 가능 시간을 줄이는 것인데 많은 계산 능력을 요구하게 된다.
TLS 1.3은 중간에 키가 탈취당하면 꼼짝없이 Forward secrecy를 잃어 버리게 되는 RSA대신ephemeral Diffie–Hellman을 유일한 키 교환 방법으로 사용한다. (중국이 도입을 거절하는 이유가 여기 있다)
https://en.wikipedia.org/wiki/Forward_secrecy
https://blog.cloudflare.com/rfc-8446-aka-tls-1-3/
Key derivation function
https://en.wikipedia.org/wiki/Key_derivation_function
Index of coincidence
https://en.wikipedia.org/wiki/Index_of_coincidence
Bcrypt
https://codahale.com/how-to-safely-store-a-password/
https://stackoverflow.com/questions/6832445/how-can-bcrypt-have-built-in-salts
RSA
Why RSA encryption can return different results with C# and Java?
Diffie-Hellman
디피헬먼을 쓰는 이유는 RSA등 asymmetric algorithm,은 Public Key Infrastructure(PKI)가 깔려있다는 전제하에 사용이 가능하기 때문(HTTPS).
Public Key를 얻지 않아도 되는 좀더 편리한 DH를 사용(SSH)
보안적인 측면에서는 RSA로 키를 교환하는게 더 안전
X.509
https://en.wikipedia.org/wiki/X.509
PKCS
- PKCS #1: RSA Cryptography Standard
RSA 알고리즘을 바탕으로 한 암호화, 서명 scheme의 구현에 대한 권고 표준이다. 이것은 키, scheme에 대한 ASN.1 표기도 포함한다. 현재 ver. 2.1이 draft(#3) 상태이다(6/14/2002). 2.0에서는 Optimal Asymmetric Encryption Padding(OAEP) 암호화가 포함되었고 2.1 draft(#2) 에는 Probabilistic Signature Scheme(PSS) 서명이 포함되었다. - PKCS #2 : PKCS#1과 통합
- PKCS #3: Diffie-Hellman Key Agreement Standard
Diffie-Hellman key agreement 구현 방법을 설명한다. (ver 1.4) - PKCS #4 : PKCS#1과 통합
- PKCS #5: Password-Based Cryptography Standard
패스워드를 기반으로 한 암호알고리즘을 다룬다. 여기에는 PBKDF1(Password-Based Key Derivation Function), PBKDF2, PBES1(Password-Based Encryption Scheme), PBES2, PBMAC1(Password-Based Message Authentication Code) 등이 포함되어 있다. (ver. 2.0) - PKCS #6: Extended-Certificate Syntax Standard
인증서에 관한 내용을 다룬다. (ver. 1.5) - PKCS #7: Cryptographic Message Syntax Standard
서명과 digital envelope과 같은 응용에서의 데이타에 대한 구문(syntax)을 정의하고 있다. (ver. 1.5, ver. 1.6 bulletin) - PKCS #8: Private-Key Information Syntax Standard
개인키 정보에 대한 구문을 정의하고 있다. (ver. 1.2) - PKCS #9: Selected Attribute Types
PKCS#6, #7, #8, #10에 사용한 attribute들을 정의하고 있다. (ver. 2.0, Amendment 1) - PKCS #10: Certification Request Syntax Standard
인증서 요청에 필요한 구문을 설명한다. (ver. 1.7) - PKCS #11: Cryptographic Token Interface Standard
CryptoKi API를 설명한다. (Draft 1 of v2.20) (ver. 2.11/draft, Amendment 1, Conformance Profile Specification) - PKCS #12: Personal Information Exchange Syntax Standard
사용자의 개인 정보(키, 인증서 등)를 전달하거나 교환하는 방법을 설명한다. (ver. 1.0, Technical Corrigendum) - PKCS #13: Elliptic Curve Cryptography Standard
타원곡선에 대한 내용(파라미터, 키 생성/검증, 서명, 암호화, 키교환 등)을 다룰 예정으로 되어 있다. 현재 진행중임. - PKCS #15: Cryptographic Token Information Format Standard
사용자가 자신을 상대방에게 식별할 수 있도록 하는 cryptographic token을 사용할수 있다는 것을 보증하도록 하는 표준이다. (ver. 1.1, Conformance Profile Specification, Technical Corrigendum 1)
ASCII armor
ASCII armor is a binary-to-textual encoding converter. ASCII armor is a feature of a type of encryption called pretty good privacy (PGP). ASCII armor involves encasing encrypted messaging in ASCII so that they can be sent in a standard messaging format such as email.
https://en.wikipedia.org/wiki/Binary-to-text_encoding#ASCII_armor
Public key fingerprint
https://en.wikipedia.org/wiki/Public_key_fingerprint
CRL
https://en.wikipedia.org/wiki/Certificate_revocation_list
https://security.stackexchange.com/questions/127988/who-is-responsible-for-revoking-a-certificate
Root Certificate
https://en.wikipedia.org/wiki/Root_certificate
https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.1.0/com.ibm.mq.sec.doc/q009880_.htm
OCSP(Online Certificate Status Protocol)
X.905인증서의 폐지 여부를 알아내기 위해 사용되는 인터넷 프로토콜. CRL보다 적은 데이터를 반환하기 때문에 네트워크나 클라이언트 부담이 적다. 다만 브라우저에서 HTTPS사이트에 접근 하기 전에 추가적인 요청이 필요하고 사용자가 어떤 사이트에 접근하는지 CA가 알게 된다는 단점이 있다. 그래서 나온 것이 OCSP Stapling인데 사용자와 HTTPS 핸드쉐이크 전에 미리 사이트가 CA로부터 사인된 OCSP 응답을 생성하도록 한다. 이렇게 생성한 응답은 제일 처음 클라이언트와 핸드쉐이크 시에 전송한다. 만약 사이트가 OCSP응답을 지원하지 않는다면? 일반 OCSP 프로토콜로 폴백한다.
https://blog.cloudflare.com/high-reliability-ocsp-stapling/
Does Apple really log every App you run?
Signal Protocol
메시져등의 E2E 암호화에 사용되는 프로토콜. Forward Secrecy 를 지키기 위해서 메시지 마다 키를 변경하는 ratchet 이라는 알고리즘을 사용한다.
에드워드 스노든이 지지하는 프로토콜. 이 프로토클을 자체 구현한 Open Whisper Systems 메신져도 있는데 최근이름을 Signal로 변경했다
What Is the Signal Encryption Protocol? – Wired