우리가 일반적으로 생각하는 대표적인 암호화의 대상은 크리덴셜(Credential)의 한 종류인 패스워드입니다. 패스워드는 암호화의 대상인 메시지를 조금 더 구체적으로 표현한 것이라고 볼 수 있을테구요.

이번 시간에는 암호화에 대한 아주 쉬운 이야기를 짧게 해보려고 합니다.

암호화란 무엇인지 암호화 유형에는 기본적으로 어떤것이 있는지 등을 아주 쉽게 이해할 수 있도록 짧게 정리해 보겠습니다.

 

암호화란?

  • 사용자의 민감한 정보를 보호하기 위한 기술

  • Crypto 또는 Cipher라는 비슷한 용어가 있음

  • Ciphertext: 암호화 된 텍스트

  • Cryptography
    • 암호학적 관점에서의 암호화 전체를 아우르는 말
  • Crypto Currency
    • 암호 화폐
  • Encryption / Decryption
    • 암호학 관점에서의 데이터 변환 과정
    • Encryption
      • 암호화
    • Decryption
      • 복호화
  • Encoding / Decoding
    • 암호학 관점은 아님
    • 데이터의 형식이나 패턴을 목적에 맞게 변환하는 과정
    • 예)
      • Encoding
        • encode(원본 데이터) → Base64 형식의 문자열로 인코딩
      • Decoding
        • decode(Base64 형식으로 인코딩된 문자열) → 원본 데이터


암호화 대상의 기준

웹 애플리케이션의 아이디/패스워드 로그인을 생각해보면 암호화의 대상 기준은 무엇이 되어야하는가를 잘 알 수 있습니다.

패스워드는 민감한(Sensitive) 정보이므로 타인에게 평문(Plain Text) 형태로 유출이 되면 안될테니까요.

따라서 애플리케이션 구현시 외부에 유출되면 문제가 발생할 수 있는 정보들은 암호화의 대상이 될 수 있으며, 아래에서 나열한 항목들은 암호화를 진지하게 고려해 보아야 하는 대상이라고 볼 수 있습니다.

  • 로그인 인증을 위한 패스워드
  • 구글, AWS 등의 외부 서비스를 이용하기 위한 계정 정보 또는 Secret 정보
  • JWT를 생성하고 검증하는데 필요한 Secret 정보
  • 데이터베이스 접속 정보
    • 데이터베이스 접속 정보에서 root 계정을 사용하는 분들이 많은데 root 계정이 아닌 별도의 사용자 계정을 만들어서 사용하길 권장합니다.
    • root는 말 그대로 최고 권한을 가진 계정이기 때문에 직접적으로 사용하지 않는 것이 좋습니다.

 

암/복호화 가능 여부에 따른 암호화 방식

  • 양방향 암호화
    • 암호화도 되고 복호화도 되는 암호화 방식
    • 암호화 된 메시지를 상대방이 볼 수 있어야 하는 암호화 방식이며, 복호화가 되어야 정상적인 메시지를 확인할 수 있습니다.

  • 단방향 암호화
    • 암호화는 되지만 복호화는 되지 않는 암호화 방식
    • 암호화된 메시지를 굳이 복호화 해서 확인할 필요가 없을 때 사용할 수 있는 암호화 방식입니다.
    • 단방향 암호화를 적용하는 대표적인 항목이 로그인 패스워드입니다. 로그인 패스워드의 경우 사용자가 입력한 패스워드를 암호화 한 데이터와 이미 암호화 되어 저장되어 있는 데이터가 일치한지 여부만 판단하면 되기 때문에 복호화가 필요없습니다.
    • 단방향 암호화는 일반적으로 해시 알고리즘을 사용하는데 엄밀하게 말하자면 해시 알고리즘 자체가 암호화라고 보기는 어렵지만 어쨌든 원본 메시지를 보호할 수 있다는 관점에서의 암호화라고 생각하면 좋을 것 같습니다.

 

 키 유형에 따른 암호화 방식

  • 대칭키 암호화 방식
    • 하나의 키를 서로 공유해서 해당 키로 암호화/복호화를 수행
    • 대칭키 암호화 방식은 하나의 키를 서로 공유해야 하기 때문에 공유된 키가 유출되면 심각한 문제가 발생할 수 있습니다.

  • 비대칭키 암호화 방식
    • 암호화를 수행하는 키와 복호화를 수행하는 키가 다릅니다.
    • Public Key와 Private Key
    • Public Key로 암호화 하는 것은 민감한 데이터 또는 메시지 보호를 위해서.
    • Private Key로 암호화 하는 것은 디지털 서명(Digital Signature)을 위해서.
      • 블록체인에서 이 방식을 사용합니다.

 

+ Recent posts

출처: http://large.tistory.com/23 [Large]