ECDSA の秘密鍵は1以上、群Gの位数未満です。
secp256k1 の群Gの位数は
L = 0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141
ですが、256bitの正の値skをランダムに取り(0以上)、値が0だった場合と、L以上だった場合、値を取り直せばよい事になります。
sk=0の場合は、公開鍵が0になってしまい、秘匿性がなさすぎます。
skがLとの間の値でも公開鍵は計算できますが、
同じ公開鍵 に対して、
が成り立ち、sk - L も秘密鍵となり、1つの公開鍵に対する秘密鍵が2つ出来てしまい、マズイです。
ビットコインのsecp256k1 ライブラリでは、
関数 secp256k1_ec_pubkey_create()にこの範囲外の値を渡すと、戻り値としてエラーを返すようになっています。
公開鍵は当然ながら1以上L未満の値となります。