ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [포스코x코딩온] 암호화
    [포스코x코딩온] 웹개발자 풀스택 부트캠프8기 2023. 8. 19. 00:47
    728x90

    비밀번호 암호화

    암호화

    • 암호문: 비밀을 유지하기 위해 당사자만 알 수 있도록 꾸민 약속 기호
    • 평문: 누구나 알 수 있게 쓴 일반적인 글


    단방향 암호화

    • 데이터 무결성을 검증하는 데 주로 사용되며, 패스워드 저장 등에서도 활용
    • 단방향이므로 원본 데이터를 복원할 수 없다.
    • 동일한 데이터에 대해서는 항상 동일한 해시 값이 생성됨
      • 서로 다른 데이터에 대해서도 같은 해시 값이 나올 수 있다.
    • 미세한 데이터 변화에도 해시 값은 완전히 다르다.
    • 주로 해시 함수(MD5, SHA-1, SHA-256 등)를 사용하여 구현한다.

    양방향 암호화

    • 데이터의 기밀성을 유지하거나 안전한 통신을 위해 사용
    • 공개키와 대칭키 암호화를 조합하여 데이터 보안을 유지하면서 처리 속도를 향상시킨다.
    • HTTPS와 같은 프로토콜로 클라이언트-서버 통신을 보호하여 안전한 웹 통신을 제공한다.

    해시(Hash)란,

    • 해시 함수에 의해 얻어지는 값
    • 해시의 특징
      • 정보를 숨기기 위한 암호와 달리 해시는 정보의 위조/변조를 확인하기 위한 것으로, 보안에서 해시를 사용하는 목적은 무결성 확보에 있다.
      • 평문의 길이가 달라도 해시 결과 값의 길이는 같다.
      • 평문의 내용이 조금만 달라도 해시 값이 완전히 달라진다.
    • 해시 함수(Hash Function)
      • 임의의 크기의 데이터를 고정된 크기의 데이터로 변환하는 함수
      • 키(key): 매핑 전 원래 데이터 값
      • 해시 값(hash value): 매핑 후 데이터 값
      • 해싱(hashing): 매핑하는 과정

    해시의 종류

    • MD5(Message Digest Algorithm 5): 로널드 리베스트가 공개 키 기반 구조를 만들기 위해 RSA와 함께 개발한 것으로 32비트 컴퓨터에 최적화되었다. 충돌 저항성이 약하다.
    • SHA: 160비트의 값을 생성하는 해시 함수로, MD4가 발전한 형태다. 
    알고리즘 메시지 문자 크기 블록 크기 해시 결과 값 길이 해시 강도
    SHA-1 <2의 64승 512비트 160비트 0.625
    SHA-256 <2의 64승 512비트 256비트 1
    SHA-384 <2의 128승 1024비트 384비트 1.5
    SHA-512 <2의 128승 1024비트 512비트 2
    • SHA-256(Secure Hash Algorithm 256-bit)
      • 충돌 저항성 및 보안성 높음
      • 많은 애플리케이션에서 데이터 무결성 검증이나 디지털 서명에 사용
    • SHA-512(Secure Hash Algorithm 512-bit)
      • 충돌 저항성 및 보안성 높음
      • 더 큰 해시 값을 생성하기 때문에 좀 더 안전한 알고리즘

    대칭키 암호화 알고리즘

    암호화 키와 복호화 키가 일치하는 방식

    • DES : 1977년 1월 NST가 암호화 표준으로 지정, 64비트의 블록 암호화 알고리즘이며 56비트 크기의 키로 암호화
    • 트리플 DES: DES 암호화 키 2개를 이용하여 두 번의 암호화와 한 번의 복호화 또는 두 번의 복호화와 한 번의 암호화를 수행, 보안성은 높아지지만, 처리 속도가 느려짐
    • AES: 128비트 암호화 블록(암호화할 데이터), 다양한 키(비밀 값)의 길이(128/192/256비트)를 갖춘 알고리즘
      • 빠른 처리 속도, 다양한 플랫폼에서 구현이 용이
      • ECB, CBC, CFB, OFB, CTR 등 다양한 운용 모드를 통해 데이터 블록을 처리
      • ECB(Electronic Codebook)
        • 각 데이터 블록을 독립적으로 암호화
        • 같은 입력 블록에 대해 항상 같은 암호문이 생성되기 때문에 패턴이 누출될 수 있음
        • 보안성이 낮아 주로 간단한 암호화 작업에서 사용되며, 중복되는 패턴이 없는 데이터에 적용될 때 더 안전하게 사용
      • CBC(Cipher Block Chaining)
        • 이전 블록의 암호문과 현재 블록의 평문을 XOR 연산하여 암호화
        • 초기 블록은 초기화 벡터(IV)로 암호화
        • 이전 블록의 암호문이 현재 블록에 영향을 주기 때문에 같은 평문에 대해 다른 암호문이 생성되어 패턴이 누출되지 않음
    • SEED: 한국인터넷 진흥원과 국내 암호 전문가들이 순수 국내 기술로 개발한 128비트 블록의 암호화 알고리즘
    • ARIA: 경량 환경 및 하드웨어의 효율성 향상을 위해 개발된 128비트 블록의 암호화 알고리즘
    • IDEA: 128비트의 키를 사용하여 64비트의 평문을 8라운드로 돌려 64비트 암호문을 만든다. 모든 연산이 16비트 단위로 이루어지도록 하여 16비트 프로세서에서 구현하기 용이하며 주로 키 교환에 쓰인다.
    • RC5 : 입출력, 키, 라운드 수가 가변인 블록 알고리즘. 32비트, 64비트, 128비트 키가 사용되며 속도는 DES의 약 10배이다.
    • Skipjack: 미국 국가안보국에서 개발한 클리퍼 칩에 내장된 블록 알고리즘
    • LEA: 고속 환경 및 모바일 기기 등의 경량 환경에서 기밀성을 제공하기 위해 국내에서 개발된 알고리즘. 128비트 데이터 블록으로 128비트, 192비트, 256비트 비밀 키를 사용할 수 있다.

    비대칭 암호화 알고리즘

    암호화 키와 복호화 키가 한 쌍을 이룬다.

    • RSA(Rivest-Shamir-Adleman) : 중요 정보를 소수 2개로 표현한 후 두 소수의 곱을 힌트와 함께 전송하여 암호로 사용. 충분히 큰 두 소수의 곱에서 두 소수를 찾기 어려운 점을 이용하였다. 오늘날 산업 표준으로 사용되고 있으며 여기에 사용되는 소수는 250자리이다.
    • ECC(Elliptic Curve Cryptography) : 타원 곡선을 기반

    특징 및 기능

    • 공개키는 다른 사람과 공유되며, 개인키는 오직 소유자만 알고 있어야 한다.
    • ECC는 작은 키 길이로도 강력한 보안성을 제공하며, RSA는 대칭키 암호화보다 복잡하지만 효율적으로 사용이 가능하다.
    • 기밀성 확보를 위한 암호화: 수신자의 공개 키로 암호화하여 송신한다.
    • 부인 방지 확보를 위한 암호화: 발신자의 개인 키로 암호화하여 송신한다.
    728x90
Designed by Tistory.