키 선택 해싱을 통한 향상된 확산

발행: (2026년 1월 7일 오후 10:56 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

개요

완전 확산을 메타클래스 암호화 아키텍처에서 달성하기 위해, 시스템은 키 기반 해시 알고리즘 선택을 구현할 수 있습니다.
키 자체가 파라미터 파생에 사용되는 해시 알고리즘을 결정하여 무한한 알고리즘 공간에 또 다른 계층을 추가합니다.

주요 해시 후보

AlgorithmTypical Use‑Case
BLAKE2s8‑~32비트 플랫폼에 최적화
BLAKE2b64비트 플랫폼에 최적화
SHA‑224컴팩트한 224비트 출력
SHA‑256256비트 출력, 널리 신뢰받음
SHA‑384384비트 출력, 높은 보안 마진
SHA‑512512비트 출력, 최대 표준 보안

모든 후보는 암호학적으로 안전하므로, 맞춤형 해시 구현이 필요하지 않습니다.

키 처리 흐름

  1. 추출: 키의 처음 몇 비트를 추출합니다.
  2. 결정: 해당 비트를 기반으로 사용할 해시 알고리즘을 결정합니다.
  3. 해시: 선택된 알고리즘으로 남은 키를 해시합니다.
  4. 생성: 해시 출력으로부터 모든 암호화 매개변수를 생성합니다.

예시

Key: "mySecretKey123xyz"
First 3 bits: 101 → selects SHA‑512
SHA‑512("mySecretKey123xyz") → generates modulus, exponent, maps …

단일 비트를 변경하면:

  • 해시 알고리즘 자체를 전환합니다.
  • 완전히 다른 해시 출력이 생성됩니다.
  • 파생된 매개변수의 최대 변동을 초래합니다 (애벌런치 효과).

알고리즘 다양성

  • 두 개의 유사한 키는 다른 해시 함수를 사용할 수 있다 (예: SHA‑256 vs. BLAKE2b).
  • 이는 이미 무한한 알고리즘 공간에 곱셈적 층을 추가한다.

암호학적 강도

  • 열거된 모든 해시 함수는 강력한 확산을 제공합니다.
  • 키 외에 추가 비밀이 필요하지 않습니다.

성능 유연성

PlatformFastest Choice
Resource‑constrained (32‑bit)BLAKE2s
High‑performance (64‑bit)BLAKE2b
Compatibility‑focusedSHA‑256 / SHA‑512

속도 (대략적인, 플랫폼 의존):

  • BLAKE2b: ~3.3 GB/s (64‑bit에서 가장 빠름)
  • BLAKE2s: ~2.5 GB/s (32‑bit에서 가장 빠름)
  • SHA‑256 / SHA‑224: ~500 MB/s
  • SHA‑512 / SHA‑384: ~650 MB/s (64‑bit에서 SHA‑256보다 빠름)

키는 성능이 중요한 경우 자연스럽게 더 빠른 알고리즘을 선택하고, 그렇지 않을 경우 더 느리지만 호환성이 높은 알고리즘을 선택할 수 있습니다.

기존 프레임워크와의 통합

이전:

Key → SHA‑256 → Parameters → Algorithm

해시 선택 포함:

Key → [Key selects hash] → Selected Hash → Parameters → Algorithm

키는 이제 다음을 제어합니다:

  • 어떤 해시 알고리즘이 이를 처리할지.
  • 어떤 맵 생성 방법을 사용할지.
  • 어떤 표현 전략을 적용할지.
  • 어떤 모듈러스 패턴을 따를지.
  • 어떤 변환 규칙을 구현할지.

각 레이어는 가능한 경우의 수를 곱합니다:

[ \infty_1 \times \infty_2 \times \infty_3 \times \infty_4 \times \infty_5 \dots ]

해시 선택 방법

방법 1 – 직접 비트 매핑

첫 3비트해시
000SHA‑224
001SHA‑256
010SHA‑384
011SHA‑512
100BLAKE2s
101BLAKE2b
110SHA‑256 (fallback)
111SHA‑512 (fallback)

방법 2 – 파생 선택

selector = (sum of first N bytes) mod 6
0SHA224
1SHA256
2SHA384
3SHA512
4 → BLAKE2s
5 → BLAKE2b

방법 3 – 키‑길이 기반

키 길이해시
128‑256 비트BLAKE2s
257‑512 비트SHA‑256
513‑1024 비트SHA‑384
1025+ 비트SHA‑512 or BLAKE2b

Threat Model

For Attackers

  1. Guess the key.
  2. Determine which hash algorithm was used.
  3. Reverse‑engineer the hash‑generated parameters.
  4. Identify the generated encryption algorithm.
  5. Decrypt the ciphertext.

Each step multiplies the search space (∞ × 6 × ∞ × ∞ × ∞ …).

For Legitimate Users

  • The key deterministically selects the same hash.
  • The hash deterministically generates the same parameters.
  • Decryption follows the identical path—no extra secrets required.

샘플 구현 (Python)

import hashlib

def derive_parameters(key: str):
    """
    키 기반 해시 선택을 사용하여 키로부터 암호화 매개변수를 도출합니다.
    """
    # 1️⃣ 해시 알고리즘 선택 (간단한 선택자: 첫 번째 바이트 % 6)
    selector = key.encode()[0] % 6
    hash_algorithms = [
        hashlib.sha224,
        hashlib.sha256,
        hashlib.sha384,
        hashlib.sha512,
        hashlib.blake2s,
        hashlib.blake2b,
    ]
    selected_hash = hash_algorithms[selector]

    # 2️⃣ 키 해시
    key_hash = selected_hash(key.encode()).digest()

    # 3️⃣ 해시 출력으로부터 매개변수 도출
    modulus   = int.from_bytes(key_hash[:8],  'big') % (10**12)
    exponent  = int.from_bytes(key_hash[8:10], 'big') % 7 + 3
    map_seed  = int.from_bytes(key_hash[10:], 'big')

    return modulus, exponent, map_seed, selected_hash.__name__

전통적인 접근 방식과 비교

항목전통적 (고정 해시)확장형 (키 선택 해시)
해시 함수고정 (보통 SHA‑256)키별 선택 (6가지 가능성)
공격자 노력키만 추측키와 해시 함수 모두 추측 (×6)
확산하나의 해시로 제한여러 해시 전체에 걸친 완전 확산
오버헤드최소약간 (해시 선택)

전체 영향

  • 전체 확산을 제공하면서 메타클래스 아키텍처에 곱셈 레이어를 추가합니다.
  • 확립되고 신뢰할 수 있는 암호 해시만 사용합니다.
  • 키 외에 추가 비밀이 필요하지 않습니다.
  • 최소한의 계산 오버헤드를 추가합니다.
  • 기존 프레임워크와 원활하게 통합됩니다.
  • 알고리즘 공간을 추가적인 요인만큼 확장합니다.

Series Information

Part of the Metaclass Encryption Architecture Series

Author: Muhammed Shafin P (@hejhdiss)
License: CC BY‑SA 4.0 – an open‑source concept.

Community contributions are welcome!

Back to Blog

관련 글

더 보기 »

PGP 문제 (2019)

번역할 텍스트를 제공해 주시겠어요? 해당 내용이 있어야 한국어 번역을 도와드릴 수 있습니다.

보안 Password Manager 구축

개요 이 프로젝트는 Python과 Tkinter를 사용하여 만든 보안 데스크톱 비밀번호 관리자입니다. 강력한 암호화를 사용하여 로컬에 자격 증명을 저장하고 관리합니다...