
CodeQL 기반 스캐너로, 리포지토리와 GitHub 조직 전반의 암호화 함수 호출을 목록화하여 SARIF 형식의 암호화 자재 명세서(CBOM)를 생성합니다.
양자 컴퓨터가 당신을 대신해 찾아내기 전에, 코드에 숨어 있는 암호학을 먼저 찾아내세요.
cryptoptic은 CodeQL과 GitHub Actions를 사용하여 저장소 또는 전체 GitHub 조직을 스캔하고, 사용 중인 모든 암호화 함수와 그 함수가 유래한 라이브러리, 그리고 호출 위치에 대한 인벤토리를 생성합니다.
암호학적으로 유의미한 양자 컴퓨팅의 도래가 예상됨에 따라, 오늘날 널리 사용되는 많은 알고리즘이 더 이상 데이터를 안전하게 보호하지 못하게 될 것입니다. "지금 수집하고, 나중에 복호화한다(Harvest now, decrypt later)"는 특성 때문에 이는 미래의 위험이 아니라 현재의 위험입니다.
조직이 포스트 양자 알고리즘으로 마이그레이션하기 위해서는 먼저 코드베이스 전반에서 암호학이 어디에 사용되는지 파악해야 합니다. cryptoptic은 이러한 암호화 자재 목록(CBOM, Cryptographic Bill of Materials)을 작성하는 데 도움을 주어, 취약한 알고리즘을 양자 안전 대안으로 교체하거나 투명하게 관리할 수 있도록 합니다.
cryptoptic은 Nationwide Building Society에서 개발되어 내부적으로 사용되고 있습니다. 더 넓은 커뮤니티를 위해 이곳에 공개합니다.
이 저장소를 클론하고 원하는 편집기에서 엽니다.
.github/workflows/org-codeql-sarif-run.yml을 편집하고 필요한 워크플로 값을 설정합니다.
| Setting | Description |
|---|---|
ORG | 스캔할 조직. 개인 저장소의 경우 GitHub 사용자 이름을 사용합니다. |
REPO | 스캔할 저장소. 조직 내 모든 저장소를 스캔하려면 빈 문자열로 둡니다. |
TARGET_LANG |
변경 사항을 커밋하고 푸시합니다.
GitHub에서 Actions 탭으로 이동하여 왼쪽 사이드바에서 CodeQL org run (crypto inventory) 를 선택합니다.
Run workflow를 클릭하고 실행할 브랜치를 선택한 후 초록색 Run workflow 버튼을 클릭합니다.
생성된 파일은 워크플로 실행의 아티팩트로 게시됩니다:
cryptoptic 자체를 개발하려면 다음이 필요합니다:
코드, 쿼리, 문서, 테스트, 버그 리포트를 포함한 기여를 환영합니다. 참여하기 전에 행동 강령을 읽어 주세요. 이는 모든 프로젝트 공간에 적용됩니다.
의사 결정 방식은 GOVERNANCE.md를, 연락할 대상은 MAINTAINERS.md를 참조하세요.
보안 취약점을 공개 GitHub 이슈를 통해 보고하지 마세요. 비공개로 보고하는 방법과 보고 후 예상되는 사항은 SECURITY.md를 참조하세요.
이 프로젝트는 Apache License, Version 2.0에 따라 라이선스가 부여됩니다. 라이선스 사본은 LICENCE 또는 LICENSE라는 이름의 파일로 저장소에 포함되어야 합니다. 사용자는 프로젝트를 사용, 수정 또는 배포하기 전에 라이선스 조건을 검토해야 합니다.
프로젝트가 재배포되는 경우, Apache License 2.0은 해당 저작권, 특허, 상표 및 저작자 표시 고지의 보존, 라이선스 사본의 포함, 해당되는 경우 수정된 파일에 대한 고지, 그리고 프로젝트에 포함된 NOTICE 파일의 적절한 처리를 요구합니다.
저장소에 NOTICE 파일이 포함된 경우, 사용자와 재배포자는 Apache License 2.0에 따라 해당 파일에 포함된 저작자 표시 고지를 보존해야 합니다. NOTICE 파일은 정확하게 유지되어야 하며 배포물의 내용에 적용되는 고지를 반영해야 합니다.
Apache License 2.0은 Nationwide의 이름, 로고, 상표 또는 브랜딩을 사용할 권한을 부여하지 않습니다. Nationwide 브랜딩 또는 프로젝트 특정 브랜딩의 사용은 프로젝트의 별도 상표 정책을 준수해야 합니다.
Apache License 2.0에 설명된 대로, 이 프로젝트는 어떠한 종류의 보증도 없이 "있는 그대로(AS IS)" 제공됩니다. 사용자는 프로젝트가 자신의 용도에 적합한지 판단하고, 결과에 의존하기 전에 출력을 검증할 책임이 있습니다.
| Language | Status | TARGET_LANG value |
|---|
| Python | Supported | python |
| JavaScript | Supported | javascript |
| .NET | Supported | csharp |
| Java | Planned |
| 스캔할 언어. 유효한 값은 지원 언어를 참조하세요. |