Cryptography

Key Stretching

https://en.wikipedia.org/wiki/Key_stretching

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로 키를 교환하는게 더 안전

https://ldevil63.tistory.com/17

X.509

https://en.wikipedia.org/wiki/X.509

PKCS

https://blog.naver.com/PostView.nhn?blogId=jjaiwook79&logNo=30097958614&redirect=Dlog&widgetTypeCall=true

  • 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 프로토콜로 폴백한다.

OCSP – 영문위키

OCSP Stapling in Firefox

https://blog.cloudflare.com/high-reliability-ocsp-stapling/

Does Apple really log every App you run?

Signal Protocol

메시져등의 E2E 암호화에 사용되는 프로토콜. Forward Secrecy 를 지키기 위해서 메시지 마다 키를 변경하는 ratchet 이라는 알고리즘을 사용한다.

Signal Protocol – 영문위키

What Is the Signal Encryption Protocol? – Wired

관련 글

네이버 애플리케이션의 전자 서명 원리