Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/kl4v3/axiom-protocol
Authentication & AuthorizationEncryption/Decryption ToolsIdentity ManagementCryptographyPrivacySocial Engineering
GitHubkl4v3/axiom-protocol

Axiom-protocol

Axiom의 목표는 완전히 익명적이고, 탈중앙화되어 있으며, 검열에 저항하는 소셜 미디어 플랫폼을 제공하는 것입니다. 이를 가능하게 하기 위해 아키텍처는 프로토콜과 클라이언트로 엄격하게 분할됩니다. 이 저장소는 이더리움 레이어 2 네트워크 상에서 프로토콜, 스마트 계약, 그리고 표준화된 데이터 구조를 정의합니다.

저장소 보기
55개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Axiom: 분산화된 검열 저항 통신 프로토콜

🚀 라이브 배포 세부 정보

  • 네트워크: Arbitrum One (메인넷 L2)
  • 체인 ID: 42161
  • RPC 엔드포인트: https://arb1.arbitrum.io/rpc (또는 사용자 정의 Alchemy/Infura 엔드포인트)
  • Axiom 프록시 계약 주소: 0xc11CFf8111e8b1F055eba095Efb679a38Abe6b63

(참고: Axiom은 UUPS 업그레이드 가능한 프록시 아키텍처를 사용합니다. 모든 클라이언트 상호 작용은 항상 이 프록시 주소로 이루어져야 하며, 기본 구현 계약으로는 절대 안 됩니다).

📖 데이터 읽는 방법 (인덱서 / 클라이언트)

클라이언트는 절대 스마트 계약 상태 변수에서 직접 프로토콜 게시물을 읽으려 해서는 안 됩니다 (가스 절약이 우선이므로 콘텐츠는 상태에 저장되지 않습니다). 대신, 클라이언트는 블록체인 이벤트를 인덱싱해야 합니다.

✍️ 데이터 게시 방법 (클라이언트 트랜잭션 제출)

프로토콜에 데이터를 게시하려면 클라이언트는 프록시 계약에서 publishAxiom 함수를 호출하는 온체인 트랜잭션을 제출해야 합니다.


Axiom의 목표는 완전히 익명이고 분산화된 검열 저항 소셜 미디어 플랫폼을 제공하는 것입니다.

이를 가능하게 하기 위해 아키텍처는 엄격하게 나뉩니다: 기반(프로토콜)과 클라이언트(소프트웨어). 이 저장소는 그 기반, 즉 이더리움 레이어 2 네트워크 상의 스마트 계약과 표준화된 데이터 구조를 정의합니다.

프로젝트 범위

프로토콜은 플랫폼의 기반을 구축합니다:

  • 표준 명명 규칙: 페이로드가 스마트 계약으로 전송되고 클라이언트가 이를 읽는 방식을 정의하는 명확한 구조.
  • 불변성: 블록체인은 안전 장치이자 변조 방지 데이터베이스 역할을 합니다.
  • 마이크로블로깅 중심: 프로토콜은 대량의 온체인 데이터를 위해 설계되지 않았으며, 전통적인 마이크로블로깅 개념(짧은 게시물)을 따릅니다. 미디어 파일은 기본적으로 체인에 저장되지 않으며, 필요할 때 외부 링크를 통해 포함됩니다.
  • 스팸 방지: 트랜잭션 수수료와 지갑의 첫 게시물에 대한 일회성 낮은 진입 수수료는 봇넷에 의한 상태 팽창 공격을 방지합니다.
  • 보안 라우팅: 프로토콜은 특정 보안 요구 사항에 따라 메시지의 OPSEC 분리를 강제합니다.

프로토콜 보안 수준

Axiom은 통신이 제한된 국가의 사용자에게 진정한 표현의 자유를 가능하게 하도록 설계되었습니다. 프로토콜은 세 가지 보안 수준을 구분합니다. 사용자가 자신의 특정 상황에 적합한 보안 수준을 알고 있다고 가정합니다.

  • 레벨 1: 공개 통신은 블록체인에 평문으로 공개적으로 발생합니다. 모든 클라이언트는 전체 트래픽을 읽고 처리할 수 있습니다. 이 수준에서는 링크 포함(예: 타사 제공업체를 통한 이미지)이 허용됩니다. 표준 소셜 미디어 통신이 여기에서 발생할 것으로 예상됩니다—재미있는 고양이 사진도 포함됩니다. 이는 네트워크 내에서 중요한 노이즈를 생성합니다. 순수 IP 추적에 관해서는 덜 안전하지만, 게시물은 완전히 검열 불가능합니다.
  • 레벨 2: 폐쇄 이 수준은 엄격한 보안을 위한 것입니다. 일반 텍스트 메시지만 지원합니다. 프로토콜은 클라이언트가 외부 콘텐츠를 로드할 때 IP 누출을 기술적으로 배제하기 위해 미디어 링크를 금지합니다. 사용자는 가스 수수료에 사용되는 암호화폐를 익명으로 획득해야 합니다.
  • 레벨 3: 암호화 최대 개인 정보 보호를 위해 설계되었습니다. 메시지 자체는 전송 전에 AES-256-GCM으로 암호화됩니다. 메타데이터, 초기화 벡터(IV), 암호문만 블록체인에 저장됩니다. 올바른 암호화 키를 가진 사용자의 클라이언트만 이러한 메시지를 복호화하고 읽을 수 있습니다.

네트워크 보안 및 IP 추적 (하드 규칙)

모든 수준에 대해, Onion 라우팅(예: Tor)은 엄격히 필수입니다. 상용 RPC 제공업체(예: Infura 또는 Alchemy)와 통신하면 발신자의 IP 주소가 평문으로 누출됩니다. 반체제 인사에게 생명을 위협할 수 있는 OPSEC 취약점을 막기 위해, 클라이언트는 트랜잭션을 Tor 네트워크를 통해서만 RPC 노드로 라우팅해야 합니다.


암호화 표준 (레벨 3용)

레벨 3 메시지의 경우, 모든 클라이언트는 상호 운용성을 보장하고 보안을 손상시키지 않기 위해 다음 암호화 표준을 엄격히 준수해야 합니다.

  1. 암호화 알고리즘: AES-256-GCM 모든 레벨 3 페이로드는 256비트 키 길이의 AES GCM 모드를 사용하여 대칭적으로 암호화되어야 합니다. 초기화 벡터(IV/Nonce)는 모든 단일 메시지에 대해 무작위로 재생성되어야 하며 평문 메타데이터로 블록체인에 기록됩니다. 이는 외부 관찰자에 의한 패턴 인식을 방지합니다.
  2. 키 유도: Argon2id 사용자는 클라이언트에 사람이 읽을 수 있는 비밀번호를 입력합니다. 이 비밀번호는 절대 AES 키로 직접 사용되어서는 안 됩니다. 클라이언트는 Argon2id 해싱 알고리즘을 사용해야 합니다. (참고: 개발자는 클라이언트 내에서 반복 및 메모리 사용에 대한 고정 매개변수를 정의하여 모든 클라이언트가 정확히 동일한 키를 생성하도록 해야 합니다).
  3. 키 교환: 대역 외 Axiom은 온체인 키 교환을 처리하지 않습니다. 프로토콜은 공개 키를 저장하지 않습니다. 특정 채널에 대한 비밀번호(공유 비밀) 교환은 사용자의 책임이며 네트워크 외부(예: 직접 대면)에서 이루어져야 합니다.
  4. 데이터 무결성 AES-GCM은 인증 태그를 생성합니다. 클라이언트는 이 태그를 검증해야 합니다. 검증에 실패하면 클라이언트는 조용히 메시지를 폐기해야 합니다(드롭).

데이터 구조, 페이로드 전달 및 인덱싱

Axiom은 하이브리드 페이로드 전달(ABI 분할)을 사용합니다. 스마트 계약이 비싼 데이터 형식을 풀어야 하는 것을 방지하기 위해 데이터는 전송 전에 분리됩니다:

  1. 로직 변수: 수준(uint8 _level) 및 초기화 벡터(bytes _iv)는 스마트 계약에 직접 매개변수로 전달되며, 계약이 보안 규칙을 적용하는 데 필요합니다.
  2. 불투명 데이터: 실제 메시지 콘텐츠는 클라이언트 내부에서 JSON으로 구성되고 **CBOR(간결한 이진 객체 표현)**으로 압축됩니다. 계약은 이 CBOR 패키지를 "맹목적으로" 처리하여 이벤트 로그로 직접 전달합니다.

페이로드 키 (CBOR 구조)

Axiom은 바이트를 절약하기 위해 단일 문자를 키로 사용합니다. 작성자(msg.sender) 및 타임스탬프(block.timestamp)는 스마트 계약이 어쨌든 변조 방지 방식으로 이러한 값을 추출하므로 생략됩니다.

  • t (Type): 정수. 동작 유형.
  • c (Content): 문자열/바이트. 텍스트, 이름 또는 암호문.
  • h (Hashtags/Tags): 배열. 선택 사항. 분류(하위 채널)에 사용됨.
  • m (Message Hint): 바이트(길이 2). 레벨 3 전용. 퍼지 버케팅에 사용되는 2바이트 HMAC 해시.
  • r (Reply-To): 바이트. 선택 사항. 참조된 게시물의 트랜잭션 해시.

동작 유형 (t 필드)

  • 0 = 프로필 업데이트 (지갑 주소를 c 필드의 읽을 수 있는 이름에 연결)
  • 1 = 게시물 (표준 메시지)
  • 2 = 답글 (r에는 원본 게시물의 해시 필요)
  • 3 = 좋아요 (r에는 게시물의 해시 필요)
  • 4 = 좋아요 취소 (유형 3 되돌리기)
  • 5 = 리트윗 / 재게시 (r에는 게시물의 해시 필요)
  • 6 = 리트윗 취소 (유형 5 되돌리기)

하위 채널 및 다크 라우팅 (h 필드)

  • 레벨 1 및 2: 태그는 평문으로 전달됩니다.
  • 레벨 3 (암호화): 프로토콜 수준에서 태그를 평문으로 전달하는 것은 엄격히 금지되며, 이는 메타데이터를 유출합니다. 태그는 콘텐츠(c)와 정확히 동일하게 암호화되어야 합니다. 외부 관찰자에게는 태그가 완전히 보이지 않습니다(다크 라우팅).

레벨 3: 퍼지 버케팅 (m 필드)

레벨 3에서 태그가 암호화되므로, 클라이언트는 이론적으로 모든 단일 메시지를 복호화하려고 시도해야 합니다(시험 복호화). CPU 과부하를 방지하기 위해 Axiom은 메시지 힌트를 사용합니다:

  • 발신자는 HMAC-SHA256(AES_Key, IV)를 계산하고 첫 2바이트를 CBOR 페이로드의 m 필드로 배치합니다.
  • 수신자는 로컬에 저장된 비밀번호에 대해 이 힌트를 계산합니다. 일치하는 경우에만 비용이 많이 드는 복호화 프로세스가 실행됩니다. 이는 메타데이터 유출 없이 관련 없는 트래픽의 99.99%를 필터링합니다.

신원: 글로벌 프로필 대 개인 별칭

Axiom은 완전한 투명성으로 신원을 처리합니다: L2 지갑 주소(msg.sender)는 유일한 사회적 및 금융 신원입니다. 프로토콜은 금융 OPSEC에 대한 책임을 전적으로 사용자에게 이전합니다(예: 믹서 및 브리지를 사용하여 익명으로 가스 토큰 확보).

프로필 업데이트 동작(t: 0)은 선택한 보안 수준에 따라 다르게 동작합니다:

  1. 글로벌 신원 (레벨 1 및 2) 지갑이 암호화되지 않은 프로필 업데이트를 보내면 글로벌 선언 역할을 합니다. 지갑은 이 이름으로 네트워크 전체에 알려집니다. 모든 사람이 이 이름을 봅니다(예: @Dissident99로 공개 평판 구축).
  2. 개인 별칭 및 닉네임 (레벨 3) 지갑이 암호화된 레벨 3 페이로드 내에서 프로필 업데이트를 보내면 격리된 개인 별칭을 생성합니다. 이 별칭은 비밀번호를 아는 사용자에게만 복호화된 하위 채널 내에서 표시됩니다. 이를 통해 글로벌 신원을 변경하지 않고 폐쇄 그룹 내에서 가명 역할 분배가 가능합니다. 렌더링 우선 순위: 레벨 3의 경우 프런트엔드는 항상 로컬 별칭이 있는지 확인한 후 글로벌 이름으로 폴백해야 합니다.

스마트 계약 아키텍처 및 OPSEC 시행

Axiom은 O(1) 복잡성의 온체인 검증에 의존합니다. 가스 비용을 최소로 유지하기 위해 스마트 계약은 기본 암호화 검사만 수행합니다. 모든 리소스 집약적인 콘텐츠 검증은 클라이언트(레이어 2)로 오프로드됩니다.

1. 온체인 검증 (스마트 계약)

계약은 부패하지 않는 경비원 역할을 합니다. 페이로드가 엄격한 규칙을 따르지 않으면 트랜잭션이 되돌려집니다.

root@kitploit:~
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";

contract Axiom is Initializable, UUPSUpgradeable, OwnableUpgradeable {
    uint256 public entryFee;
    mapping(address => uint8) public walletPath; // 0=New, 1=PathA(Level1), 2=PathB(Level2/3)

    event AxiomPost(address indexed sender, uint8 level, bytes iv, bytes cbor, uint256 timestamp);

    /// @custom:oz-upgrades-unsafe-allow constructor
    constructor() {
        _disableInitializers();
    }

    function initialize() initializer public {
        __Ownable_init(msg.sender);
        entryFee = 0.0001 ether;
    }

    function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}

    function publishAxiom(
        uint8 _level,
        bytes calldata _iv,
        bytes calldata _cbor
    ) external payable {
        require(_level >= 1 && _level <= 3, "Invalid level");

        uint8 requiredPath = (_level == 1) ? 1 : 2;
        uint8 currentPath = walletPath[msg.sender];

        if (currentPath == 0) {
            require(msg.value >= entryFee, "Anti-Sybil: Insufficient entry fee");
            walletPath[msg.sender] = requiredPath;
        } else {
            require(msg.value == 0, "Fee already paid");
            require(currentPath == requiredPath, "OPSEC Violation: Wallet is tainted");
        }

        if (_level == 3) {
            require(_iv.length == 12, "Level 3 strictly requires a 12-byte IV");
        } else {
            require(_iv.length == 0, "Level 1 and 2 require strictly empty IV");
        }

        emit AxiomPost(msg.sender, _level, _iv, _cbor, block.timestamp);
    }

    function withdraw() external onlyOwner {
        payable(owner()).transfer(address(this).balance);
    }
}
  • 양방향 지갑 오염 (강제 격리): 지갑이 레벨 1에 처음 게시하면 레벨 2/3에서 영구적으로 차단됩니다. 레벨 2 또는 3에 먼저 게시하면 레벨 1이 차단됩니다.
  • 필수 매개변수: 레벨 3의 경우 계약은 12바이트 IV를 엄격히 적용합니다.

2. 오프체인 검증 (클라이언트)

게시물이 프로토콜 규칙을 위반하면 클라이언트는 조용히 폐기해야 합니다(로컬 드롭).

  • 레벨 2 링크 차단기: 클라이언트는 레벨 2 메시지의 평문(c)을 스캔합니다. URL, IP 주소 또는 일반적인 미디어 태그가 감지되면 게시물이 완전히 차단됩니다.
  • 자체 정리: 공격자가 레벨 2에서 링크로 네트워크를 스팸하면 가스 수수료를 지불하지만, 유효한 Axiom 클라이언트는 해당 메시지를 절대 렌더링하지 않습니다.

인프라 및 권장 클라이언트 아키텍처

Axiom은 이더리움 레이어 2(L2) 네트워크(예: Arbitrum Nova)에 배포됩니다.

모바일 장치의 과부하(배터리 수명, 저장 공간 제한, Argon2id용 WebAssembly 제한)를 방지하기 위해 Axiom은 고성능 클라이언트 아키텍처를 강제합니다:

  • Axiom Core (자가 호스팅 노드): RPC를 통해 블록체인을 읽고, 이벤트를 인덱싱하며, 리소스 집약적인 암호화를 기본적으로 실행하는 서버/도커 컨테이너(예: NAS에서 실행).
  • Axiom UI (씬 클라이언트): API를 통해 사용자 자신의 Axiom Core와만 통신하는 모바일 앱 또는 웹 UI.

데이터 검색 및 EIP-4444

클라이언트는 전체 블록체인 상태를 다운로드하지 않습니다. 스마트 계약의 AxiomPost 이벤트를 필터링하며, 이 이벤트에는 모든 필요한 데이터(발신자, 수준, IV, CBOR, 타임스탬프)가 평문으로 포함되어 있습니다.

이더리움 노드가 결국 EIP-4444에 따라 과거 데이터(365일보다 오래된 이벤트)를 삭제할 것이므로, 프로토콜은 로컬 Axiom Core가 데이터베이스를 영구적으로 저장하는 분산 아카이브 역할을 할 것을 권장합니다.


예제 워크플로우: 레벨 3 게시물

아키텍처가 실제로 어떻게 작동하는지 설명하기 위해 전체 수명 주기 실행을 제공합니다.

시나리오: Alice가 하위 채널 "AxiomDev"에 "Meeting at 8 PM" 메시지를 게시하려고 합니다. 그룹은 이전에 오프라인에서 비밀번호 "Secret123"에 동의했습니다.

1단계: 로컬 준비 및 암호화 (Axiom Core)

Alice의 Axiom Core가 계산 집약적인 작업을 처리합니다:

  1. 키 유도: Argon2id를 사용하여 비밀번호를 256비트 AES 키로 변환합니다.
  2. IV 생성: 무작위 12바이트 초기화 벡터가 생성됩니다(예: 0x12ab34cd56ef789012ab34cd).
  3. 암호화: 콘텐츠와 태그("AxiomDev")가 AES-GCM을 사용하여 암호화됩니다.
  4. 힌트 생성: 퍼지 버케팅을 위한 2바이트 HMAC 해시가 계산됩니다(m: "0xa1b2").

2단계: 페이로드 구성 (CBOR 직렬화)

수준과 IV는 계약에 직접 전달되므로 CBOR 객체에서 제외됩니다.

내부 JSON 표현:

root@kitploit:~
{
  "t": 1,
  "c": "0x8a4f...",
  "h": ["0x9b5e..."],
  "m": "0xa1b2"
}

이 JSON은 가스를 절약하기 위해 원시 CBOR 바이트 배열(0xa3617401...)로 압축됩니다.

3단계: 스마트 계약 호출 (블록체인 상호 작용)

Alice가 계약 함수를 트리거합니다. 중요: 호출은 엄격히 Tor를 통해 라우팅됩니다!

(L3 및 L1 예제:)

root@kitploit:~
// 예제 1: 암호화된 레벨 3 게시물을 위한 스마트 계약 호출
await axiomContract.publishAxiom(
    3,                                      // _level: 3
    "0x12ab34cd56ef789012ab34cd",           // _iv: 12바이트 16진수 문자열 필요
    "0xa3617401616358208a4f..."             // _cbor: 압축된 CBOR 16진수 문자열
);

// 예제 2: 공개 레벨 1 게시물을 위한 스마트 계약 호출
await axiomContract.publishAxiom(
    1,                                      // _level: 1
    "0x",                                   // _iv: 엄격히 빈 바이트 배열
    "0xa361740161634c48656c6c6f204178..."   // _cbor: 압축된 CBOR 16진수 문자열
);

스마트 계약은 이벤트를 방출합니다:

Event: AxiomPost(Sender: 0xAlice..., Level: 3, IV: 0x12ab..., CBOR: 0xa361..., Timestamp: 1710425890)

4단계: 인덱싱 및 시험 복호화 (수신자)

Bob의 Axiom Core는 블록체인을 수신하고 이벤트를 받습니다.

  1. 로컬 저장 및 인식: 이벤트는 로컬 데이터베이스에 기록됩니다. Core는 Level 3을 감지하고 CBOR을 풀어 콘텐츠, 태그 및 힌트 m에 접근합니다.
  2. 시험 복호화: Core는 2바이트 힌트 m을 Bob의 저장된 비밀번호와 확인합니다.
  3. 일치 및 전달: 힌트가 "Secret123"과 일치합니다. GCM 태그는 페이로드가 변조되지 않았음을 확인합니다. 데이터는 RAM에서 복호화되어 로컬 API를 통해 Bob의 스마트폰으로 전송됩니다. "#AxiomDev" 피드에 "Meeting at 8 PM" 메시지가 나타납니다.
  4. 알 수 없는 백로그: 올바른 비밀번호가 없는 사용자의 경우 힌트 확인이 실패합니다. 이 읽을 수 없는 데이터 노이즈는 롤링 버퍼가 만료된 후(예: 30일) 자동으로 삭제됩니다.
도구 다운로드